<p>Close your eyes.</p>
<p>Now reach out, carefully, until you touch something. Feel it; examine its shape, its edges and contours.</p>
<p>Now tell me what it is.</p>
<p>That is how you play ________.</p>
<p>--<>--<br></p>
<p>Controls:
<br>- spam your keyboard to see
(or to let out your frustrations)<br>- type the name of what you see<br>
- keyboard or mouse for menus</p>
<p>Difficulty:<br>To complete this game will almost certainly take a team effort. We recommend playing it with friends, though it might be possible to complete it single handedly?!</p>
<p>There are 20 levels in this experimental, odd little thing. _________ was put together just for the fun of it by;</p>
<p> Rowan Crawford (<a href="https://twitter.com/Sumaleth" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/Sumaleth</a>)<br>Ben Weatherall (<a href="https://twitter.com/SunraHeadgear" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/SunraHeadgear</a>)<br>Rich McBride (<a href="https://twitter.com/Tanngnost" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/Tanngnost</a>)</p>
<p>We hope you enjoy _________. Thanks for playing.</p>
<p>Update:</p>
<p>v1.2 Fixes two levels that were broken on some computers and it again tweaks level flow to make the transition to secret levels more intuitive. Some improvements for readability on very high resolutions too. Finally, I added a 32bit Windows build.<br></p>
<p>v1.1 Improves the intuitive flow from the regular levels (1-17) through to the secret levels (18-20). Plus there are some small bug fixes.<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzk2NDI4LzE5NjM1MjcucG5n/original/GltWCs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk2NDI4LzE5NjM1MjkucG5n/original/6aEDMB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk2NDI4LzE5NjM1MjgucG5n/original/0UIZbw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk2NDI4LzE5NjM1MzAucG5n/original/VyTExQ.png]]
<p><strong>US <a href="https://floatingchair.club/products/dungeon" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Physical copies still available at FloatingChair.Club!</a></strong></p><p><strong>UK <a href="https://soulmuppet-store.co.uk/products/dotdungeon" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Physical copies still available at SoulMuppet Publishing!</a></strong></p><p>.dungeon is a book about traveling through a virtual, fantasy world. One person takes on the role of the World, filling in the nooks and crannies with dungeons and adventures that they think up or borrow from books they already own. Everyone else is a Player and creates a Character to explore those nooks, discover their treasure, and interact with NPCs and other flesh-and-blood folks in the virtual world.<br></p>
<p>The thing that sets .dungeon apart from other books is the inspiration it takes from social games like Werewolf and Munchkin. The real world can (and will) affect the game you create. Each class has different powers based on physical things you do, or different parts of your life. The witch uses their tattoos to cast spells while the wizard uses their favorite book. The knight makes vows while the leader can offer gifts to the other players to aid them. There are 10 classes total to choose from, including the bard, the troll, and the artist. </p>
<p>Beyond that, the game functions on a <em>simple</em> <strong>contest system</strong>.</p>
<ul><li>You assign dice (like the d4, and the d8) to your stats</li><li>Roll the appropriate die when facing an obstacle</li><li>If you roll higher than the obstacle, you succeed!</li><li>If you roll lower, you take damage equal to the difference</li></ul>
<p><img src="https://img.itch.zone/aW1nLzY3MzExOTcucG5n/original/MlWiea.png" loading="lazy"><br></p>
<p>Also included in the book:</p>
<ul><li>A simple oracle system</li><li>NPC charts for plotting in-depth characters</li><li>A quest generator</li><li>Advice/tools for porting adventures/monsters over to .dungeon with ease</li></ul>
<p><a href="https://www.polygon.com/22673506/dotdungeon-indie-rpg-john-battle-review" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzY5OTU5NDcucG5n/original/rc8Uzu.png" loading="lazy"></a></p>
<p>
</p>
<p><iframe frameborder="0" src="https://itch.io/embed/1157920" width="552" height="167" style="color: inherit; font-size: inherit"></iframe><br></p>
<iframe frameborder="0" src="https://itch.io/embed/1204266" width="552" height="167"><a href="<a href="https://johnbattle.itch.io/pregame-lobby-2">Pregame" class="redactor-linkify-object">https://johnbattle.itch.io/pregame-lobby-2">Pregame</a> Lobby Issue 2 by Batts</a></iframe>
<p><iframe frameborder="0" src="https://itch.io/embed/1229673" width="552" height="167"><a href="<a href="https://johnbattle.itch.io/pregame-lobby-3">Pregame" class="redactor-linkify-object">https://johnbattle.itch.io/pregame-lobby-3">Pregame</a> Lobby Issue 3 by Batts</a></iframe><br></p>
<p><iframe frameborder="0" src="https://itch.io/embed/1289672" width="552" height="167"><a href="<a href="https://johnbattle.itch.io/dungeon-extra-materials">.dungeon" class="redactor-linkify-object">https://johnbattle.itch.io/dungeon-extra-materials">.dungeon</a> extra materials by Batts</a></iframe><br></p>
<iframe style="border: 0; width: 350px; height: 470px" src="https://bandcamp.com/EmbeddedPlayer/album=1432294849/size=large/bgcol=ffffff/linkcol=0687f5/tracklist=false/transparent=true/"><a href="https://nervesproject.bandcamp.com/album/dungeon" rel="nofollow noopener" referrerpolicy="origin">.dungeon by Nerves</a></iframe>
<iframe width="720" height="450" src="https://www.youtube.com/embed/DGLR3i-fbnM" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTIyODc4LzUyMzg3NjUucG5n/original/Lv5tR4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyODc4LzUyMzg3NjQucG5n/original/p6%2BDBY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyODc4LzY3MzExNDIucG5n/original/FkmHVE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyODc4LzUyMzg3NjYucG5n/original/Xh%2F3Y0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyODc4LzUyMTg3MDQucG5n/original/NHrmCf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyODc4LzY3MzExNjcucG5n/original/%2B69ia%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyODc4LzUyMTg3MDUucG5n/original/EAWzj4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyODc4LzUyMzg3NjcucG5n/original/XTZFJr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyODc4LzY3MzExNjgucG5n/original/i96K%2BQ.png]]
<p>The definitive visual novel adaptation of the hit web comic "Gamer" is here!</p>
<p>This definitive version contains new narration not present in the original narrative, along with story changes such as a brand new Character. "Gamer"+ features brilliant writing from <a href="https://twitter.com/JayMonoto" target="_blank" rel="nofollow noopener" referrerpolicy="origin">JayMonoto</a>, stunning art from <a href="https://twitter.com/Pencil_Peach" target="_blank" rel="nofollow noopener" referrerpolicy="origin"></a><a href="https://twitter.com/Pencil_Peach" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Pencil Peach</a> , and an almost entirely original soundtrack composed by <a href="https://twitter.com/DunderhyphenP" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Dunder-P</a>. </p>
<p></p>
<p><a href="https://twitter.com/pencil_peach/status/1283449271967199235?s=21" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Check out the original "Gamer" here!</a></p>
<p><a href="https://twitter.com/Pencil_Peach/status/1351870484200226818?s=20" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Check out "Gamer" 2 here!</a></p>
<p><a href="https://open.spotify.com/album/1XK4n0HTPJBwiRAfWjD1KJ" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Check out "Gamer"+ Crossroad of Sympathy (Original Game Soundtrack) on Spotify!</a></p>
<p><a href="https://static.wikia.nocookie.net/mt6lore/images/6/68/1541527574217.jpg/revision/latest?cb=20190131225838" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Thad Thompson</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODkwMTQyLzUwMjE5MTQucG5n/original/gOhl04.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODkwMTQyLzUwMjE5MTUucG5n/original/RHhCYl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODkwMTQyLzUwMjE5MTMucG5n/original/KBTP4Q.png]]
<p>(current year) is a simple system (2d10 rolls, set damages, set DCs) for creating people and an area to play a game in, and then playing the game. The system also comes with a number of tables to roll on in order to generate people, most of which are system-agnostic and can be used to generate characters for other games in modern settings.<br></p>
<p>A surveillance and infrastructure system known as OPTICON has been established in cities and countries around the world, to the delight of governments and corporations, and the relative indifference of the populace. You play as normal people given the ability to access OPTICON and the devices connected to it by a mysterious figure known as [i].</p>
<p>The game also comes with a character sheet (in the form of a fillable pdf).<br><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODk0NzkzLzc4OTkwMzgucG5n/original/9DiYHn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk0NzkzLzYxMDI5MTEuanBn/original/ugE8ME.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODk0NzkzLzU5OTU1NjQuanBn/original/J0R8hY.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODk0NzkzLzU5OTU1NTkuanBn/original/DzoUmf.jpg]]
<p>[ENDLESS_OVERDRIVE] is an arcade game about movement. As you move and shoot your way across the grid playing field, the enemies you kill are transformed into stage hazards, constricting the space you have to maneuver through. Build up your combo multiplier to clear out space, all while avoiding the red enemy that tracks your every move!</p>
<p>The game's soundtrack comes from the Alpha Hydrae album Peace Love Respect Overdrive. Listen to the full album here: <a href="https://chezmonplaisir.bandcamp.com/album/alpha-hydrae-peace-love-respect-overdrive" rel="nofollow noopener" referrerpolicy="origin">https://chezmonplaisir.bandcamp.com/album/alpha-hydrae-peace-love-respect-overdr...</a></p>
<h4>KEYBOARD CONTROLS</h4>
<p>W,S,A,D or arrow keys - Movement</p>
<p>Space - Overdrive brake</p>
<p>Enter - Pause</p>
<p>Escape - Enter/exit fullscreen</p>
<h4>GAMEPAD CONTROLS</h4>
<p>(XInput only)</p>
<p>D-pad - Movement</p>
<p>A - Overdrive brake</p>
<p>Start - Pause</p>
<p><br></p>
<p><strong></strong></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODc3NDgwLzQ5MzgwOTIucG5n/original/NDb7rq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc3NDgwLzQ5MzgwOTUucG5n/original/nwxMHq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc3NDgwLzQ5MzgwOTMucG5n/original/Dz24Jz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc3NDgwLzQ5MzgwOTQucG5n/original/FSf80U.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc3NDgwLzQ5MzgwOTYucG5n/original/E9PrYd.png]]
<p>Three Red Hearts is a love letter from me to the Chiptune genre. Growing up surrounded by what is now considered "retro" video game music, Chiptune was incredibly formative to my development as a composer.<span></span></p>
<p>The original album can be previewed and downloaded here: <a href="http://abstractionmusic.bandcamp.com/album/three-red-hearts" rel="nofollow noopener" referrerpolicy="origin">http://abstractionmusic.bandcamp.com/album/three-red-hearts</a><a href="http://abstractionmusic.bandcamp.com/album/three-red-hearts" rel="nofollow noopener" referrerpolicy="origin"></a></p>
<p>The Prepare to Dev edition strips each song down to a raw WAV file, designed to loop perfectly within any media you import it into.<br></p>
<p>This pack contains 24 original Chiptune (or Chiptune-inspired) songs. Many of them were created in a program named Famitracker, which is a NES soundchip emulator. </p>
<p>While these songs are listed as pay-what-you-want, if you do plan on making money off your game (either through ads, microtransactions, or direct sales), please donate what you think is fair for this content. <3<br></p>
<p><em>"Three Red Hearts, Prepare to Dev Edition" by Abstraction (<a href="http://www.abstractionmusic.com" rel="nofollow noopener" referrerpolicy="origin">http://www.abstractionmusic.com</a>)</em><br></p>
<p><em>Licensed under Creative Commons: By Attribution 4.0 International.<br></em><em><a href="http://creativecommons.org/licenses/by/4.0/" rel="nofollow noopener" referrerpolicy="origin">http://creativecommons.org/licenses/by/4.0/</a></em></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjQ4NzkvOTk0NDgucG5n/original/Zxs3Iw.png]]
<p>/dia is a micro ttrpg that invites the player to create a character and then imagine a moment of impending doom. The player then decides what comes next. <br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODk5MzI4LzUxMjQ3NTMuanBn/original/0oZDPx.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MzI4LzUxMjQ3NTguanBn/original/a%2Fd1EQ.jpg]]
<p class="text-center"><em>In the future, being a Rat is a potentially lucrative career. But working on the less-than-legal side of things isn't easy - your employers can't be trusted, your jobs are difficult and dangerous, and nothing ever goes quite to plan...</em></p>
<p></p><p><br></p>
<p>/RUN is a short-form, GM-less, card-based TTRPG, loosely themed around a forum in a cyberpunk future. 2-5 players will take on the role of Rats, or semi-legal freelance 'operatives', collaborating to tell short stories of how they complete various randomly-drawn Jobs - while facing down various Complications.</p>
<p>There are few totally safe places for Rats, but chief among them is the anonymised, heavily-encrypted Forum. It's used to pass on tips, recruit crews, review gear - and, of course, boast about their achievements. These (sometimes exaggerated) stories are the ones you'll be telling. Players will quickly create their Rats, then draw and narrate Jobs from a deck. The other players, however, have hands of Complications - cards representing twists or unexpected obstacles that can be played at any time...</p>
<p>Above all - this is a storytelling tool. Use it in whatever way is most fun for your group.</p>
<p><br></p>
<p><strong>Features include:</strong></p>
<ol><li>16 Jobs for your Rats to undertake, from heists and dead drops to escapes and races.</li><li>16 Complications to face down, including explosions, breakages, blackouts and security patrols.</li><li>A table to generate your own Forum usernames (or Handles), with appropriate 80s action-movie flavour.</li></ol>
<p></p>
<p><br></p>
<p><strong>Before you Play - </strong>either print out and cut up the Job and Complication cards, or use an online random name-picker if printing isn't possible. (Or just pick your favourites from the sheet.)</p>
<p><br></p>
<p><strong>Note</strong> <strong>-</strong> this game is still in development, and this is the prototype version. The rules are complete and playable, but the visual design/layout/etc hasn't been implemented yet. Plus, the final version will include several more Jobs and Complications, extra rules for things like multi-Rat jobs and longer campaigns, and so on.
</p>
<p><br></p>
<p>As always, thank you so much for playing - and I hope you enjoy the game!</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzQ2MTM2LzQxNjE1MjEucG5n/original/THxBUZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ2MTM2LzQxNjE1MTIucG5n/original/X1Msh%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ2MTM2LzQxNjE1MTQucG5n/original/%2Fxc7N3.png]]
<p><img src="https://img.itch.zone/aW1nLzQwMTE2MjAucG5n/original/xqhnWb.png" loading="lazy"><br></p>
<p>The Global Games Industry Guide (<span class=""><a href="https://twitter.com/hashtag/GGIG20?src=hashtag_click" dir="ltr" class="" rel="nofollow noopener">#GGIG2020</a>)</span><span class=""> is a free resource & quarterly PDF I hand-curate for the </span><span class=""><a href="https://twitter.com/hashtag/VideoGames?src=hashtag_click" dir="ltr" class="" rel="nofollow noopener">#VideoGames</a></span><span class=""> Industry.</span></p>
<p><span class="">Featuring 800+ entities including Publishers, Funding, Awards, Industry Bodies, Networks and more... (<a href="https://forms.gle/eC2beqrCUv27uNXg7" target="_blank" rel="nofollow noopener">submissions to be considered for inclusion into the guide can be made using this form</a>)</span></p>
<hr>
<p>Download the file versions for free below <strong>OR</strong> check out the live guide on Trello at <a href="https://t.co/INvvxfjLEK?amp=1" title="https://trello.com/b/BRHxZpZ9/" target="_blank" dir="ltr" class="" rel="nofollow noopener"><span class="">https://</span>trello.com/b/BRHxZpZ9/</a></p>
<hr>
<p><strong>Categories include:</strong><br></p>
<ul><li>Useful Links / Other Resources</li><li>Accellerators</li><li>Accessibility in Games</li><li>Creative Incubators</li><li>Consultancy in Games</li><li>Crowd Funding</li><li>Current Affairs</li><li>Diversity & Inclusion in Games</li><li>Education in Games</li><li>Equity Investment</li><li>Game Engines</li><li>Game Charities</li><li>Grants</li><li>Indie Game Funds</li><li>Industry Awards</li><li>Industry Bodies</li><li>Industry Companies / Careers</li><li>Industry Networks</li><li>Industry News / Press</li><li>Industry Trade Unions</li><li>Legal / Finance in Games</li><li>Loans</li><li>Localisation / Translation</li><li>Mobile Funding</li><li>Platforms</li><li>Podcasts + Radio (+ archive)</li><li>Private Equity / Bank</li><li>Project Finance</li><li>Project Funding</li><li>Public Fund</li><li>Publishers (A-Z)</li><li>Rating Systems</li><li>Research in Games</li><li>Self-Funding</li><li>Venture Capital (A-Z)</li><li>Voice Over</li><li>SEED</li><li>SEIS / EIS</li><li>Strategic Finance</li><li>Video Game Tax Relief</li><li>VR / AR / XR Funding</li><li>Misc Funding</li></ul>
<p>Please consider buying the supporters edition; there is zero difference, but it will allow me to continue making the guide even better. Thank you!</p>
<hr>
<p>Curated by @<a href="https://www.twitter.com/liamtwose" style="font-size: inherit" rel="nofollow noopener">LiamTwose</a> (<a href="https://linktr.ee/liamTwose" rel="nofollow noopener">https://linktr.ee/liamTwose</a>)</p>
<blockquote><strong>Creator of <a href="https://twitter.com/search?q=%23pitchyagame&src=typed_query" target="_blank" rel="nofollow noopener">#PitchYaGame</a> and previously #30daydev.<br></strong>You can follow all my current games in development at <a href="https://liamtwose.itch.io/" target="_blank">https://liamtwose.itch.io</a> including <a href="https://liamtwose.itch.io/gamma-five-zero" target="_blank">Gamma 5: Zero</a> a <a href="https://liamtwose.itch.io/gamma-five-zero" target="_blank">classic RTS game</a> inspired by the originals, including Dune 2, Dune 2000, Command & Conquer, KKND, Total Annihilation, Warzone 2100 and more.</blockquote>
<h6>Follow me on Twitter <a href="https://www.twitter.com/liamtwose" target="_blank" rel="nofollow noopener">@liamtwose</a> :)</h6>
<p></p>
[img width=500 [https://img.itch.zone/aW1nLzQwMTE2MTYucG5n/original/TF7eIc.png]]
<p><img src="https://img.itch.zone/aW1nLzQwMTE2MjAucG5n/original/xqhnWb.png" loading="lazy"><br></p>
<p>The Global Games Industry Guide (<span class=""><a href="https://twitter.com/hashtag/GGIG22?src=hashtag_click" dir="ltr" class="" rel="nofollow noopener" referrerpolicy="origin">#GGIG2022</a>)</span><span class=""> is a free resource & quarterly PDF I hand-curate for the </span><span class=""><a href="https://twitter.com/hashtag/VideoGames?src=hashtag_click" dir="ltr" class="" rel="nofollow noopener" referrerpolicy="origin">#VideoGames</a></span><span class=""> Industry.</span></p>
<p><span class="">Featuring 1000+ entities including Publishers, Funding, Awards, Industry Bodies, Networks and more... (<a href="https://forms.gle/eC2beqrCUv27uNXg7" target="_blank" rel="nofollow noopener" referrerpolicy="origin">submissions to be considered for inclusion into the guide can be made using this form</a>)</span></p>
<hr>
<p>Download the file versions for free below <strong>OR</strong> check out the most up-to-date live guide on Trello at <a href="https://t.co/INvvxfjLEK?amp=1" title="https://trello.com/b/BRHxZpZ9/" target="_blank" dir="ltr" class="" rel="nofollow noopener" referrerpolicy="origin"><span class="">https://</span>trello.com/b/BRHxZpZ9/</a></p><p><em>Please consider donating as it allows me to continue making the guide even better. Thank you!</em><br></p>
<hr>
<p><strong>Categories include:</strong><br></p>
<ul><li>Useful Links / Other Resources</li><li>Accelerators</li><li>Accessibility in Games</li><li>Creative Incubators</li><li>Consultancy in Games</li><li>Crowd Funding</li><li>Current Affairs</li><li>Diversity & Inclusion in Games</li><li>Education in Games</li><li>Equity Investment</li><li>Game Engines</li><li>Game Charities</li><li>Grants</li><li>Indie Game Funds</li><li>Industry Awards</li><li>Industry Bodies</li><li>Industry Companies / Careers</li><li>Industry Networks</li><li>Industry News / Press</li><li>Industry Trade Unions</li><li>Legal / Finance in Games</li><li>Loans</li><li>Localization / Translation</li><li>Mobile Funding</li><li>Platforms</li><li>Podcasts + Radio (+ archive)</li><li>Private Equity / Bank</li><li>Project Finance</li><li>Project Funding</li><li>Public Fund</li><li>Publishers (A-Z)</li><li>Rating Systems</li><li>Research in Games</li><li>Self-Funding</li><li>Venture Capital (A-Z)</li><li>Voice Over</li><li>SEED</li><li>SEIS / EIS</li><li>Strategic Finance</li><li>Video Game Tax Relief</li><li>VR / AR / XR Funding</li><li>Misc Funding</li></ul>
<hr>
<p>Curated by @<a href="https://www.twitter.com/liamtwose" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">LiamTwose</a> (<a href="https://linktr.ee/liamTwose" rel="nofollow noopener" referrerpolicy="origin">https://linktr.ee/liamTwose</a>)</p>
<blockquote><strong>Creator of <a href="https://twitter.com/search?q=%23pitchyagame&src=typed_query" target="_blank" rel="nofollow noopener" referrerpolicy="origin">#PitchYaGame</a> and previously #30daydev.<br></strong>You can follow all my current games in development at <a href="https://liamtwose.itch.io/" target="_blank">https://liamtwose.itch.io</a> including <a href="https://liamtwose.itch.io/gamma-five-zero" target="_blank">Gamma 5: Zero</a> a <a href="https://liamtwose.itch.io/gamma-five-zero" target="_blank">classic RTS game</a> inspired by the originals, including Dune 2, Dune 2000, Command & Conquer, KKND, Total Annihilation, Warzone 2100 and more.</blockquote>
<h6>Follow me on Twitter <a href="https://www.twitter.com/liamtwose" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@liamtwose</a> :)</h6>
<p></p>
[img width=500 [https://img.itch.zone/aW1nLzQwMTE2MTYucG5n/original/TF7eIc.png]]
<p>In the grim darkness of the far future, society has been driven underground by the invasion of the Shakaijū, giant four-wheeled mechanical monsters that emerged from the void and covered the world in smoke and darkness. You are part of a force of selected teenage warriors that are the only ones that can defend the last surviving buried strongholds.</p>
<p>A LARP about emotional mechas and trains, by someone who’s never watched mecha anime, for ~8 players and a facilitator or a kitchen timer.</p>
<p>Light secrets, no powers, mechanical narrative.</p>
<p>Content Notes: death, suicidality, dysfunctional relationships & unhealthy emotional expression.</p>
<p>Written for #sadmechjam, but this version wasn't eligible because I'm bad at reading instructions. (This is an expanded version with character sheets.)</p>
[img width=500 [https://img.itch.zone/aW1nLzE4Mjc1NzAucG5n/original/g0JjC7.png]]
{
"tiddlers": {
"$:/Acknowledgements": {
"title": "$:/Acknowledgements",
"text": "TiddlyWiki incorporates code from these fine OpenSource projects:\n\n* [[The Stanford Javascript Crypto Library|http://bitwiseshiftleft.github.io/sjcl/]]\n* [[The Jasmine JavaScript Test Framework|http://pivotal.github.io/jasmine/]]\n* [[Normalize.css by Nicolas Gallagher|http://necolas.github.io/normalize.css/]]\n\nAnd media from these projects:\n\n* World flag icons from [[Wikipedia|http://commons.wikimedia.org/wiki/Category:SVG_flags_by_country]]\n"
},
"$:/core/copyright.txt": {
"title": "$:/core/copyright.txt",
"type": "text/plain",
"text": "TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\n\nCopyright (c) 2004-2007, Jeremy Ruston\nCopyright (c) 2007-2020, UnaMesa Association\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
},
"$:/core/icon": {
"title": "$:/core/icon",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path d=\"M64 0l54.56 32v64L64 128 9.44 96V32L64 0zm21.127 95.408c-3.578-.103-5.15-.094-6.974-3.152l-1.42.042c-1.653-.075-.964-.04-2.067-.097-1.844-.07-1.548-1.86-1.873-2.8-.52-3.202.687-6.43.65-9.632-.014-1.14-1.593-5.17-2.157-6.61-1.768.34-3.546.406-5.34.497-4.134-.01-8.24-.527-12.317-1.183-.8 3.35-3.16 8.036-1.21 11.44 2.37 3.52 4.03 4.495 6.61 4.707 2.572.212 3.16 3.18 2.53 4.242-.55.73-1.52.864-2.346 1.04l-1.65.08c-1.296-.046-2.455-.404-3.61-.955-1.93-1.097-3.925-3.383-5.406-5.024.345.658.55 1.938.24 2.53-.878 1.27-4.665 1.26-6.4.47-1.97-.89-6.73-7.162-7.468-11.86 1.96-3.78 4.812-7.07 6.255-11.186-3.146-2.05-4.83-5.384-4.61-9.16l.08-.44c-3.097.59-1.49.37-4.82.628-10.608-.032-19.935-7.37-14.68-18.774.34-.673.664-1.287 1.243-.994.466.237.4 1.18.166 2.227-3.005 13.627 11.67 13.732 20.69 11.21.89-.25 2.67-1.936 3.905-2.495 2.016-.91 4.205-1.282 6.376-1.55 5.4-.63 11.893 2.276 15.19 2.37 3.3.096 7.99-.805 10.87-.615 2.09.098 4.143.483 6.16 1.03 1.306-6.49 1.4-11.27 4.492-12.38 1.814.293 3.213 2.818 4.25 4.167 2.112-.086 4.12.46 6.115 1.066 3.61-.522 6.642-2.593 9.833-4.203-3.234 2.69-3.673 7.075-3.303 11.127.138 2.103-.444 4.386-1.164 6.54-1.348 3.507-3.95 7.204-6.97 7.014-1.14-.036-1.805-.695-2.653-1.4-.164 1.427-.81 2.7-1.434 3.96-1.44 2.797-5.203 4.03-8.687 7.016-3.484 2.985 1.114 13.65 2.23 15.594 1.114 1.94 4.226 2.652 3.02 4.406-.37.58-.936.785-1.54 1.01l-.82.11zm-40.097-8.85l.553.14c.694-.27 2.09.15 2.83.353-1.363-1.31-3.417-3.24-4.897-4.46-.485-1.47-.278-2.96-.174-4.46l.02-.123c-.582 1.205-1.322 2.376-1.72 3.645-.465 1.71 2.07 3.557 3.052 4.615l.336.3z\" fill-rule=\"evenodd\"/></svg>"
},
"$:/core/images/add-comment": {
"title": "$:/core/images/add-comment",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-add-comment tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 56H36a8 8 0 100 16h20v20a8 8 0 1016 0V72h20a8 8 0 100-16H72V36a8 8 0 10-16 0v20zm-12.595 58.362c-6.683 7.659-20.297 12.903-36.006 12.903-2.196 0-4.35-.102-6.451-.3 9.652-3.836 17.356-12.24 21.01-22.874C8.516 94.28 0 79.734 0 63.5 0 33.953 28.206 10 63 10s63 23.953 63 53.5S97.794 117 63 117c-6.841 0-13.428-.926-19.595-2.638z\"/></svg>"
},
"$:/core/images/advanced-search-button": {
"title": "$:/core/images/advanced-search-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-advanced-search-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M74.565 87.985A47.776 47.776 0 0148 96C21.49 96 0 74.51 0 48S21.49 0 48 0s48 21.49 48 48c0 9.854-2.97 19.015-8.062 26.636l34.347 34.347a9.443 9.443 0 010 13.36 9.446 9.446 0 01-13.36 0l-34.36-34.358zM48 80c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z\"/><circle cx=\"48\" cy=\"48\" r=\"8\"/><circle cx=\"28\" cy=\"48\" r=\"8\"/><circle cx=\"68\" cy=\"48\" r=\"8\"/></g></svg>"
},
"$:/core/images/auto-height": {
"title": "$:/core/images/auto-height",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-auto-height tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M67.987 114.356l-.029-14.477a4 4 0 00-2.067-3.494l-15.966-8.813-1.933 7.502H79.9c4.222 0 5.564-5.693 1.786-7.58L49.797 71.572 48.01 79.15h31.982c4.217 0 5.564-5.682 1.795-7.575L49.805 55.517l-1.795 7.575h31.982c4.212 0 5.563-5.67 1.805-7.57l-16.034-8.105 2.195 3.57V35.614l9.214 9.213a4 4 0 105.656-5.656l-16-16a4 4 0 00-5.656 0l-16 16a4 4 0 105.656 5.656l9.13-9.13v15.288a4 4 0 002.195 3.57l16.035 8.106 1.804-7.57H48.01c-4.217 0-5.564 5.682-1.795 7.574l31.982 16.059 1.795-7.575H48.01c-4.222 0-5.564 5.693-1.787 7.579l31.89 15.923 1.787-7.578H47.992c-4.133 0-5.552 5.504-1.933 7.501l15.966 8.813-2.067-3.494.029 14.436-9.159-9.158a4 4 0 00-5.656 5.656l16 16a4 4 0 005.656 0l16-16a4 4 0 10-5.656-5.656l-9.185 9.184zM16 20h96a4 4 0 100-8H16a4 4 0 100 8z\"/></svg>"
},
"$:/core/images/blank": {
"title": "$:/core/images/blank",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-blank tc-image-button\" viewBox=\"0 0 128 128\"/>"
},
"$:/core/images/bold": {
"title": "$:/core/images/bold",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-bold tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M41.146 51.81V21.87h26.353c2.51 0 4.93.21 7.26.628 2.33.418 4.392 1.165 6.185 2.24 1.793 1.076 3.227 2.57 4.302 4.482 1.076 1.913 1.614 4.363 1.614 7.35 0 5.379-1.613 9.263-4.84 11.653-3.227 2.39-7.35 3.586-12.37 3.586H41.146zM13 0v128h62.028a65.45 65.45 0 0016.762-2.151c5.438-1.434 10.278-3.645 14.52-6.633 4.244-2.988 7.62-6.842 10.13-11.563 2.51-4.721 3.764-10.308 3.764-16.762 0-8.008-1.942-14.85-5.826-20.527-3.884-5.677-9.77-9.65-17.658-11.921 5.737-2.75 10.069-6.275 12.997-10.577 2.928-4.303 4.392-9.681 4.392-16.135 0-5.976-.986-10.995-2.958-15.059-1.972-4.063-4.75-7.32-8.336-9.77-3.585-2.45-7.888-4.213-12.907-5.289C84.888.538 79.33 0 73.235 0H13zm28.146 106.129V70.992H71.8c6.095 0 10.995 1.404 14.7 4.212 3.705 2.81 5.558 7.5 5.558 14.073 0 3.347-.568 6.096-1.703 8.247-1.136 2.151-2.66 3.854-4.572 5.11-1.912 1.254-4.123 2.15-6.633 2.688-2.51.538-5.139.807-7.888.807H41.146z\"/></svg>"
},
"$:/core/images/cancel-button": {
"title": "$:/core/images/cancel-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-cancel-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 76.314l-16.97 16.97a7.999 7.999 0 01-11.314 0c-3.118-3.118-3.124-8.19 0-11.313L52.686 65l-16.97-16.97a7.999 7.999 0 010-11.314c3.118-3.118 8.19-3.124 11.313 0L64 53.686l16.97-16.97a7.999 7.999 0 0111.314 0c3.118 3.118 3.124 8.19 0 11.313L75.314 65l16.97 16.97a7.999 7.999 0 010 11.314c-3.118 3.118-8.19 3.124-11.313 0L64 76.314zM64 129c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 1 0 29.654 0 65c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 17 64 17 16 38.49 16 65s21.49 48 48 48z\"/></svg>"
},
"$:/core/images/chevron-down": {
"title": "$:/core/images/chevron-down",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-down tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64.053 85.456a7.889 7.889 0 01-5.6-2.316L2.473 27.16a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0L64.05 66.344l50.382-50.382a7.92 7.92 0 0111.195 0c3.085 3.086 3.092 8.105 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.317z\"/><path d=\"M64.053 124.069a7.889 7.889 0 01-5.6-2.316l-55.98-55.98a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0l50.382 50.382 50.382-50.382a7.92 7.92 0 0111.195 0c3.085 3.086 3.092 8.104 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.316z\"/></g></svg>"
},
"$:/core/images/chevron-left": {
"title": "$:/core/images/chevron-left",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-left tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M47.544 64.053c0-2.027.77-4.054 2.316-5.6l55.98-55.98a7.92 7.92 0 0111.196 0c3.085 3.086 3.092 8.105 0 11.196L66.656 64.05l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.085-8.105 3.092-11.196 0l-55.98-55.98a7.892 7.892 0 01-2.317-5.595z\"/><path d=\"M8.931 64.053c0-2.027.77-4.054 2.316-5.6l55.98-55.98a7.92 7.92 0 0111.196 0c3.085 3.086 3.092 8.105 0 11.196L28.041 64.05l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.085-8.104 3.092-11.196 0l-55.98-55.98a7.892 7.892 0 01-2.316-5.595z\"/></g></svg>"
},
"$:/core/images/chevron-right": {
"title": "$:/core/images/chevron-right",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-right tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M83.456 63.947c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196L64.344 63.95 13.963 13.567a7.92 7.92 0 010-11.195c3.086-3.085 8.105-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.317 5.595z\"/><path d=\"M122.069 63.947c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l50.382-50.382-50.382-50.382a7.92 7.92 0 010-11.195c3.086-3.085 8.104-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.316 5.595z\"/></g></svg>"
},
"$:/core/images/chevron-up": {
"title": "$:/core/images/chevron-up",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-up tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M63.947 44.544c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.105 3.092-11.196 0L63.95 63.656l-50.382 50.382a7.92 7.92 0 01-11.195 0c-3.085-3.086-3.092-8.105 0-11.196l55.98-55.98a7.892 7.892 0 015.595-2.317z\"/><path d=\"M63.947 5.931c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.105 3.092-11.196 0L63.95 25.041 13.567 75.423a7.92 7.92 0 01-11.195 0c-3.085-3.086-3.092-8.104 0-11.196l55.98-55.98a7.892 7.892 0 015.595-2.316z\"/></g></svg>"
},
"$:/core/images/clone-button": {
"title": "$:/core/images/clone-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-clone-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M32.265 96v24.002A7.996 7.996 0 0040.263 128h79.74a7.996 7.996 0 007.997-7.998v-79.74a7.996 7.996 0 00-7.998-7.997H96V48h12.859a2.99 2.99 0 012.994 2.994v57.865a2.99 2.99 0 01-2.994 2.994H50.994A2.99 2.99 0 0148 108.859V96H32.265z\"/><path d=\"M40 56h-7.993C27.588 56 24 52.418 24 48c0-4.41 3.585-8 8.007-8H40v-7.993C40 27.588 43.582 24 48 24c4.41 0 8 3.585 8 8.007V40h7.993C68.412 40 72 43.582 72 48c0 4.41-3.585 8-8.007 8H56v7.993C56 68.412 52.418 72 48 72c-4.41 0-8-3.585-8-8.007V56zM8 0C3.58 0 0 3.588 0 8v80c0 4.419 3.588 8 8 8h80c4.419 0 8-3.588 8-8V8c0-4.419-3.588-8-8-8H8zM19 16A2.997 2.997 0 0016 19.001v57.998A2.997 2.997 0 0019.001 80h57.998A2.997 2.997 0 0080 76.999V19.001A2.997 2.997 0 0076.999 16H19.001z\"/></g></svg>"
},
"$:/core/images/close-all-button": {
"title": "$:/core/images/close-all-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-close-all-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M28 111.314l-14.144 14.143a8 8 0 01-11.313-11.313L16.686 100 2.543 85.856a8 8 0 0111.313-11.313L28 88.686l14.144-14.143a8 8 0 0111.313 11.313L39.314 100l14.143 14.144a8 8 0 01-11.313 11.313L28 111.314zM28 39.314L13.856 53.457A8 8 0 012.543 42.144L16.686 28 2.543 13.856A8 8 0 0113.856 2.543L28 16.686 42.144 2.543a8 8 0 0111.313 11.313L39.314 28l14.143 14.144a8 8 0 01-11.313 11.313L28 39.314zM100 39.314L85.856 53.457a8 8 0 01-11.313-11.313L88.686 28 74.543 13.856A8 8 0 0185.856 2.543L100 16.686l14.144-14.143a8 8 0 0111.313 11.313L111.314 28l14.143 14.144a8 8 0 01-11.313 11.313L100 39.314zM100 111.314l-14.144 14.143a8 8 0 01-11.313-11.313L88.686 100 74.543 85.856a8 8 0 0111.313-11.313L100 88.686l14.144-14.143a8 8 0 0111.313 11.313L111.314 100l14.143 14.144a8 8 0 01-11.313 11.313L100 111.314z\"/></g></svg>"
},
"$:/core/images/close-button": {
"title": "$:/core/images/close-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-close-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M65.086 75.41l-50.113 50.113c-3.121 3.121-8.192 3.126-11.316.002-3.118-3.118-3.123-8.19.002-11.316l50.114-50.114L3.659 13.982C.538 10.86.533 5.79 3.657 2.666c3.118-3.118 8.19-3.123 11.316.002l50.113 50.114L115.2 2.668c3.121-3.121 8.192-3.126 11.316-.002 3.118 3.118 3.123 8.19-.002 11.316L76.4 64.095l50.114 50.114c3.121 3.121 3.126 8.192.002 11.316-3.118 3.118-8.19 3.123-11.316-.002L65.086 75.409z\"/></svg>"
},
"$:/core/images/close-others-button": {
"title": "$:/core/images/close-others-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-close-others-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48zm0-16c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32zm0-16c8.837 0 16-7.163 16-16s-7.163-16-16-16-16 7.163-16 16 7.163 16 16 16z\"/></svg>"
},
"$:/core/images/copy-clipboard": {
"title": "$:/core/images/copy-clipboard",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-copy-clipboard tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"33\" height=\"8\" x=\"40\" y=\"40\" rx=\"4\"/><rect width=\"17\" height=\"8\" x=\"40\" y=\"82\" rx=\"4\"/><rect width=\"17\" height=\"8\" x=\"40\" y=\"54\" rx=\"4\"/><rect width=\"33\" height=\"8\" x=\"40\" y=\"96\" rx=\"4\"/><rect width=\"12\" height=\"8\" x=\"40\" y=\"68\" rx=\"4\"/><path d=\"M40 16H24c-4.419 0-8 3.59-8 8a8.031 8.031 0 000 .01v95.98a8.03 8.03 0 000 .01c0 4.41 3.581 8 8 8h80a7.975 7.975 0 005.652-2.34 7.958 7.958 0 002.348-5.652v-16.016c0-4.414-3.582-7.992-8-7.992-4.41 0-8 3.578-8 7.992V112H32V32h64v8.008C96 44.422 99.582 48 104 48c4.41 0 8-3.578 8-7.992V23.992a7.963 7.963 0 00-2.343-5.651A7.995 7.995 0 00104.001 16H88c0-4.41-3.585-8-8.007-8H48.007C43.588 8 40 11.582 40 16zm4-1.004A4.001 4.001 0 0148 11h32c2.21 0 4 1.797 4 3.996v4.008A4.001 4.001 0 0180 23H48c-2.21 0-4-1.797-4-3.996v-4.008z\"/><rect width=\"66\" height=\"16\" x=\"62\" y=\"64\" rx=\"8\"/><path d=\"M84.657 82.343l-16-16v11.314l16-16a8 8 0 10-11.314-11.314l-16 16a8 8 0 000 11.314l16 16a8 8 0 1011.314-11.314z\"/></g></svg>"
},
"$:/core/images/delete-button": {
"title": "$:/core/images/delete-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-delete-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\" transform=\"translate(12)\"><rect width=\"105\" height=\"16\" y=\"11\" rx=\"8\"/><rect width=\"48\" height=\"16\" x=\"28\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"8\" y=\"16\" rx=\"8\"/><rect width=\"88\" height=\"16\" x=\"8\" y=\"112\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"80\" y=\"16\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"56\" y=\"16\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"32\" y=\"16\" rx=\"8\"/></g></svg>"
},
"$:/core/images/done-button": {
"title": "$:/core/images/done-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-done-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M42.26 111.032c-2.051.001-4.103-.78-5.668-2.345L2.662 74.758a8 8 0 01-.005-11.32c3.118-3.117 8.192-3.12 11.32.007l28.278 28.278 72.124-72.124a8.002 8.002 0 0111.314-.001c3.118 3.118 3.124 8.19 0 11.315l-77.78 77.78a7.978 7.978 0 01-5.658 2.343z\"/></svg>"
},
"$:/core/images/down-arrow": {
"title": "$:/core/images/down-arrow",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-down-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M64.177 100.069a7.889 7.889 0 01-5.6-2.316l-55.98-55.98a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0l50.382 50.382 50.382-50.382a7.92 7.92 0 0111.195 0c3.086 3.086 3.092 8.104 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.316z\"/></svg>"
},
"$:/core/images/download-button": {
"title": "$:/core/images/download-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-download-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48z\" class=\"tc-image-download-button-ring\"/><path d=\"M34.35 66.43l26.892 27.205a4.57 4.57 0 006.516 0L94.65 66.43a4.7 4.7 0 000-6.593 4.581 4.581 0 00-3.258-1.365h-8.46c-2.545 0-4.608-2.087-4.608-4.661v-15.15c0-2.575-2.063-4.662-4.608-4.662H55.284c-2.545 0-4.608 2.087-4.608 4.662v15.15c0 2.574-2.063 4.661-4.608 4.661h-8.46c-2.545 0-4.608 2.087-4.608 4.662a4.69 4.69 0 001.35 3.296z\"/></g></svg>"
},
"$:/core/images/edit-button": {
"title": "$:/core/images/edit-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-edit-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M95.627 10.059l-5.656 5.657 11.313 11.313 5.657-5.656-11.314-11.314zm5.657-5.657l1.966-1.966c3.123-3.122 8.194-3.129 11.319-.005 3.117 3.118 3.122 8.192-.005 11.32l-1.966 1.965-11.314-11.314zm-16.97 16.97l-60.25 60.25a8.12 8.12 0 00-.322.342c-.1.087-.198.179-.295.275-5.735 5.735-10.702 22.016-10.702 22.016s16.405-5.09 22.016-10.702c.095-.096.186-.193.272-.292a8.12 8.12 0 00.345-.325l60.25-60.25-11.314-11.313zM35.171 124.19c6.788-.577 13.898-2.272 23.689-5.348 1.825-.573 3.57-1.136 6.336-2.04 16-5.226 21.877-6.807 28.745-7.146 8.358-.413 13.854 2.13 17.58 8.699a4 4 0 006.959-3.946c-5.334-9.406-13.745-13.296-24.933-12.744-7.875.39-14.057 2.052-30.835 7.533-2.739.894-4.46 1.45-6.25 2.012-19.46 6.112-30.77 7.072-39.597 1.747a4 4 0 10-4.132 6.85c6.333 3.82 13.754 5.12 22.438 4.383z\"/></g></svg>"
},
"$:/core/images/erase": {
"title": "$:/core/images/erase",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-erase tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60.087 127.996l63.015-63.015c6.535-6.535 6.528-17.115-.003-23.646L99.466 17.702c-6.539-6.538-17.117-6.532-23.646-.003L4.898 88.62c-6.535 6.534-6.528 17.115.003 23.646l15.73 15.73h39.456zm-34.95-7.313l-14.324-14.325c-3.267-3.268-3.268-8.564-.008-11.824L46.269 59.07l35.462 35.462-26.15 26.15H25.137z\"/></svg>"
},
"$:/core/images/excise": {
"title": "$:/core/images/excise",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-excise tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 107.314l-2.343 2.343a8 8 0 11-11.314-11.314l16-16a8 8 0 0111.314 0l16 16a8 8 0 11-11.314 11.314L72 107.314v14.284c0 3.536-3.582 6.402-8 6.402s-8-2.866-8-6.402v-14.284zM0 40.007C0 35.585 3.59 32 8 32c4.418 0 8 3.588 8 8.007v31.986C16 76.415 12.41 80 8 80c-4.418 0-8-3.588-8-8.007V40.007zm32 0C32 35.585 35.59 32 40 32c4.418 0 8 3.588 8 8.007v31.986C48 76.415 44.41 80 40 80c-4.418 0-8-3.588-8-8.007V40.007zm48 0C80 35.585 83.59 32 88 32c4.418 0 8 3.588 8 8.007v31.986C96 76.415 92.41 80 88 80c-4.418 0-8-3.588-8-8.007V40.007zm-24-32C56 3.585 59.59 0 64 0c4.418 0 8 3.588 8 8.007v31.986C72 44.415 68.41 48 64 48c-4.418 0-8-3.588-8-8.007V8.007zm56 32c0-4.422 3.59-8.007 8-8.007 4.418 0 8 3.588 8 8.007v31.986c0 4.422-3.59 8.007-8 8.007-4.418 0-8-3.588-8-8.007V40.007z\"/></svg>"
},
"$:/core/images/export-button": {
"title": "$:/core/images/export-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-export-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.003 128H119.993a7.984 7.984 0 005.664-2.349v.007A7.975 7.975 0 00128 120V56c0-4.418-3.59-8-8-8-4.418 0-8 3.58-8 8v56H16V56c0-4.418-3.59-8-8-8-4.418 0-8 3.58-8 8v64c0 4.418 3.59 8 8 8h.003zm48.62-100.689l-8.965 8.966c-3.125 3.125-8.195 3.13-11.319.005-3.118-3.118-3.122-8.192.005-11.319L58.962 2.346A7.986 7.986 0 0164.625 0l-.006.002c2.05-.001 4.102.78 5.666 2.344l22.618 22.617c3.124 3.125 3.129 8.195.005 11.319-3.118 3.118-8.192 3.122-11.319-.005l-8.965-8.966v61.256c0 4.411-3.582 8-8 8-4.41 0-8-3.582-8-8V27.311z\"/></svg>"
},
"$:/core/images/file": {
"title": "$:/core/images/file",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-file tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M111.968 30.5H112V120a8 8 0 01-8 8H24a8 8 0 01-8-8V8a8 8 0 018-8h57v.02a7.978 7.978 0 015.998 2.337l22.627 22.627a7.975 7.975 0 012.343 5.516zM81 8H24v112h80V30.5H89c-4.418 0-8-3.578-8-8V8z\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"36\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"52\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"68\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"84\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"100\" rx=\"4\"/><rect width=\"40\" height=\"8\" x=\"32\" y=\"20\" rx=\"4\"/></svg>"
},
"$:/core/images/fixed-height": {
"title": "$:/core/images/fixed-height",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fixed-height tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60 35.657l-9.172 9.171a4 4 0 11-5.656-5.656l16-16a4 4 0 015.656 0l16 16a4 4 0 01-5.656 5.656L68 35.657v57.686l9.172-9.171a4 4 0 115.656 5.656l-16 16a4 4 0 01-5.656 0l-16-16a4 4 0 115.656-5.656L60 93.343V35.657zM16 116h96a4 4 0 100-8H16a4 4 0 100 8zm0-96h96a4 4 0 100-8H16a4 4 0 100 8z\"/></svg>"
},
"$:/core/images/fold-all-button": {
"title": "$:/core/images/fold-all-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold-all tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"64\" rx=\"8\"/><path d=\"M64.03 20.004c-2.05 0-4.102.78-5.667 2.344L35.746 44.966c-3.125 3.124-3.13 8.194-.005 11.318 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.965 16.966 16.965c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.191-.005-11.318L69.687 22.348a7.986 7.986 0 00-5.663-2.346zM64.03 85.002c-2.05-.001-4.102.78-5.667 2.344l-22.617 22.617c-3.125 3.125-3.13 8.195-.005 11.319 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.966 16.966 16.966c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.192-.005-11.319L69.687 87.346A7.986 7.986 0 0064.024 85z\"/></g></svg>"
},
"$:/core/images/fold-button": {
"title": "$:/core/images/fold-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><path d=\"M64.03 25.004c-2.05 0-4.102.78-5.667 2.344L35.746 49.966c-3.125 3.124-3.13 8.194-.005 11.318 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.965 16.966 16.965c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.191-.005-11.318L69.687 27.348a7.986 7.986 0 00-5.663-2.346zM64.005 67.379c-2.05 0-4.102.78-5.666 2.344L35.722 92.34c-3.125 3.125-3.13 8.195-.006 11.32 3.118 3.117 8.192 3.121 11.32-.006L64 86.69l16.965 16.965c3.125 3.125 8.195 3.13 11.319.005 3.118-3.118 3.122-8.192-.005-11.319L69.663 69.723A7.986 7.986 0 0064 67.377z\"/></g></svg>"
},
"$:/core/images/fold-others-button": {
"title": "$:/core/images/fold-others-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold-others tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" y=\"56.031\" rx=\"8\"/><path d=\"M86.632 79.976c-2.05 0-4.102.78-5.666 2.345L64 99.286 47.034 82.321a7.986 7.986 0 00-5.662-2.346l.005.001c-2.05 0-4.102.78-5.666 2.345l-22.618 22.617c-3.124 3.125-3.129 8.195-.005 11.319 3.118 3.118 8.192 3.122 11.319-.005l16.966-16.966 16.965 16.966a7.986 7.986 0 005.663 2.346l-.005-.002c2.05 0 4.102-.78 5.666-2.344l16.965-16.966 16.966 16.966c3.125 3.124 8.194 3.129 11.319.005 3.118-3.118 3.122-8.192-.005-11.319L92.289 82.321a7.986 7.986 0 00-5.663-2.346zM86.7 48.024c-2.05 0-4.102-.78-5.666-2.345L64.07 28.714 47.103 45.679a7.986 7.986 0 01-5.663 2.346l.005-.001c-2.05 0-4.101-.78-5.666-2.345L13.162 23.062c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L41.44 28.714l16.966-16.966a7.986 7.986 0 015.662-2.346l-.005.002c2.05 0 4.102.78 5.666 2.344l16.966 16.966 16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L92.358 45.679a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
},
"$:/core/images/folder": {
"title": "$:/core/images/folder",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-folder tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.694 128H8C3.58 128 0 124.414 0 119.996V48.004C0 43.584 3.584 40 7.999 40H16v-8c0-4.418 3.578-8 8-8h32a8 8 0 018 8v8h40.001c4.418 0 7.999 3.586 7.999 8.004V59.83l-8-.082v-7.749A4 4 0 0099.997 48H56V36c0-2.21-1.793-4-4.004-4H28.004A4 4 0 0024 36v12H12.003A4 4 0 008 52v64a4 4 0 004.003 4h46.76l-3.069 8z\"/><path d=\"M23.873 55.5h96.003c4.417 0 7.004 4.053 5.774 9.063l-13.344 54.374c-1.228 5.005-5.808 9.063-10.223 9.063H6.08c-4.417 0-7.003-4.053-5.774-9.063L13.65 64.563c1.228-5.005 5.808-9.063 10.223-9.063zm1.78 8.5h87.994c2.211 0 3.504 2.093 2.891 4.666l-11.12 46.668c-.614 2.577-2.902 4.666-5.115 4.666H12.31c-2.211 0-3.504-2.093-2.891-4.666l11.12-46.668C21.152 66.09 23.44 64 25.653 64z\"/></g></svg>"
},
"$:/core/images/full-screen-button": {
"title": "$:/core/images/full-screen-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-full-screen-button tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M0 8a8 8 0 018-8h32a8 8 0 110 16H16v24a8 8 0 11-16 0V8zM128 120a8 8 0 01-8 8H88a8 8 0 110-16h24V88a8 8 0 1116 0v32zM8 128a8 8 0 01-8-8V88a8 8 0 1116 0v24h24a8 8 0 110 16H8zM120 0a8 8 0 018 8v32a8 8 0 11-16 0V16H88a8 8 0 110-16h32z\"/></svg>"
},
"$:/core/images/github": {
"title": "$:/core/images/github",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-github tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M63.938 1.607c-35.336 0-63.994 28.69-63.994 64.084 0 28.312 18.336 52.329 43.768 60.802 3.202.59 4.37-1.388 4.37-3.088 0-1.518-.056-5.55-.087-10.897-17.802 3.871-21.558-8.591-21.558-8.591-2.911-7.404-7.108-9.375-7.108-9.375-5.81-3.973.44-3.895.44-3.895 6.424.453 9.803 6.606 9.803 6.606 5.709 9.791 14.981 6.963 18.627 5.322.582-4.138 2.236-6.963 4.063-8.564-14.211-1.617-29.153-7.117-29.153-31.672 0-6.995 2.495-12.718 6.589-17.195-.66-1.621-2.856-8.14.629-16.96 0 0 5.37-1.722 17.597 6.57 5.104-1.424 10.58-2.132 16.022-2.16 5.438.028 10.91.736 16.022 2.16 12.22-8.292 17.582-6.57 17.582-6.57 3.493 8.82 1.297 15.339.64 16.96 4.102 4.477 6.578 10.2 6.578 17.195 0 24.618-14.966 30.035-29.22 31.62 2.295 1.98 4.342 5.89 4.342 11.87 0 8.564-.079 15.476-.079 17.576 0 1.715 1.155 3.71 4.4 3.084 25.413-8.493 43.733-32.494 43.733-60.798 0-35.394-28.657-64.084-64.006-64.084\"/></svg>"
},
"$:/core/images/gitter": {
"title": "$:/core/images/gitter",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-gitter tc-image-button\" viewBox=\"0 0 18 25\"><path d=\"M15 5h2v10h-2zM10 5h2v20h-2zM5 5h2v20H5zM0 0h2v15H0z\"/></svg>"
},
"$:/core/images/globe": {
"title": "$:/core/images/globe",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-globe tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M72.811 37.128v2.554c0 2.196.978 6.881 0 8.832-1.466 2.928-4.65 3.54-6.394 5.867-1.182 1.577-4.618 10.601-3.69 12.92 3.969 9.922 11.534 3.187 17.962 9.293.864.821 2.887 2.273 3.296 3.296 3.29 8.223-7.576 15.009 3.757 26.3 1.245 1.24 3.813-3.817 4.079-4.614.852-2.563 6.725-5.45 9.088-7.053 2.02-1.37 4.873-2.667 6.328-4.745 2.27-3.244 1.48-7.514 3.098-10.745 2.139-4.274 3.828-9.635 5.998-13.966 3.898-7.781 4.721 2.093 5.067 2.439.358.357 1.011 0 1.517 0 .094 0 1.447.099 1.516 0 .65-.935-1.043-17.92-1.318-19.297-1.404-7.01-6.944-15.781-11.865-20.5-6.274-6.015-7.09-16.197-18.259-14.954-.204.022-5.084 10.148-7.777 13.512-3.728 4.657-2.47-4.153-6.526-4.153-.081 0-1.183-.103-1.253 0-.586.88-1.44 3.896-2.306 4.417-.265.16-1.722-.239-1.846 0-2.243 4.3 8.256 2.212 5.792 7.952-2.352 5.481-6.328-1.997-6.328 8.56M44.467 7.01c9.685 6.13.682 12.198 2.694 16.215 1.655 3.303 4.241 5.395 1.714 9.814-2.063 3.608-6.87 3.966-9.623 6.723-3.04 3.044-5.464 8.94-6.79 12.911-1.617 4.843 14.547 6.866 12.063 11.008-1.386 2.311-6.746 1.466-8.437.198-1.165-.873-3.593-.546-4.417-1.78-2.613-3.915-2.26-8.023-3.625-12.128-.938-2.822-6.313-2.12-7.844-.593-.523.522-.33 1.792-.33 2.505 0 5.285 7.12 3.316 7.12 6.46 0 14.636 3.927 6.534 11.14 11.336 10.036 6.683 7.844 7.303 14.946 14.404 3.673 3.673 7.741 3.686 9.425 9.294 1.602 5.331-9.327 5.339-11.716 7.448-1.123.991-2.813 4.146-4.219 4.615-1.792.598-3.234.496-4.944 1.78-2.427 1.82-3.9 4.932-4.02 4.81-2.148-2.147-3.52-15.479-3.89-18.257-.588-4.42-5.59-5.54-6.986-9.03-1.57-3.927 1.524-9.52-1.129-13.761-6.52-10.424-11.821-14.5-15.35-26.292-.942-3.148 3.342-6.529 4.877-8.833 1.877-2.816 2.662-5.854 4.746-8.635C22.147 24.19 40.855 9.461 43.857 8.635l.61-1.625z\"/><path d=\"M64 126c34.242 0 62-27.758 62-62 0-34.242-27.758-62-62-62C29.758 2 2 29.758 2 64c0 34.242 27.758 62 62 62zm0-6c30.928 0 56-25.072 56-56S94.928 8 64 8 8 33.072 8 64s25.072 56 56 56z\"/></g></svg>"
},
"$:/core/images/heading-1": {
"title": "$:/core/images/heading-1",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-1 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M14 30h13.25v30.104H61.7V30h13.25v75.684H61.7V71.552H27.25v34.132H14V30zm70.335 13.78c2.544 0 5.017-.212 7.42-.636 2.403-.424 4.576-1.13 6.52-2.12 1.942-.99 3.603-2.261 4.981-3.816 1.378-1.555 2.28-3.463 2.703-5.724h9.858v74.2h-13.25V53.32H84.335v-9.54z\"/></svg>"
},
"$:/core/images/heading-2": {
"title": "$:/core/images/heading-2",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-2 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm119.52 75.684H74.85c.07-6.148 1.555-11.519 4.452-16.112 2.897-4.593 6.855-8.586 11.872-11.978a133.725 133.725 0 017.526-5.141 59.6 59.6 0 007.208-5.353c2.19-1.908 3.993-3.975 5.406-6.201 1.413-2.226 2.155-4.788 2.226-7.685 0-1.343-.159-2.774-.477-4.293a11.357 11.357 0 00-1.855-4.24c-.919-1.307-2.19-2.403-3.816-3.286-1.625-.883-3.745-1.325-6.36-1.325-2.403 0-4.399.477-5.989 1.431-1.59.954-2.862 2.261-3.816 3.922-.954 1.66-1.66 3.622-2.12 5.883-.46 2.261-.724 4.7-.795 7.314H76.23c0-4.099.548-7.897 1.643-11.395 1.095-3.498 2.738-6.519 4.93-9.063 2.19-2.544 4.857-4.54 8.002-5.989C93.95 30.724 97.606 30 101.775 30c4.523 0 8.303.742 11.342 2.226 3.039 1.484 5.494 3.357 7.367 5.618 1.873 2.261 3.198 4.717 3.975 7.367.777 2.65 1.166 5.176 1.166 7.579 0 2.968-.46 5.653-1.378 8.056a25.942 25.942 0 01-3.71 6.625 37.5 37.5 0 01-5.3 5.565 79.468 79.468 0 01-6.148 4.77 165.627 165.627 0 01-6.36 4.24 94.28 94.28 0 00-5.883 4.028c-1.802 1.343-3.374 2.738-4.717 4.187-1.343 1.449-2.261 2.986-2.756 4.611h36.146v10.812z\"/></svg>"
},
"$:/core/images/heading-3": {
"title": "$:/core/images/heading-3",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-3 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm88.885 32.224c1.979.07 3.957-.07 5.936-.424 1.979-.353 3.745-.972 5.3-1.855a10.365 10.365 0 003.763-3.657c.954-1.555 1.431-3.463 1.431-5.724 0-3.18-1.078-5.724-3.233-7.632-2.155-1.908-4.929-2.862-8.32-2.862-2.12 0-3.958.424-5.513 1.272a11.318 11.318 0 00-3.869 3.445c-1.025 1.449-1.784 3.074-2.279 4.876a18.335 18.335 0 00-.636 5.565H75.381c.141-3.604.813-6.943 2.014-10.017 1.201-3.074 2.844-5.742 4.93-8.003 2.084-2.261 4.61-4.028 7.578-5.3C92.871 30.636 96.228 30 99.973 30a29.2 29.2 0 018.533 1.272c2.791.848 5.3 2.085 7.526 3.71s4.01 3.692 5.353 6.201c1.343 2.509 2.014 5.388 2.014 8.639 0 3.745-.848 7.014-2.544 9.805-1.696 2.791-4.346 4.823-7.95 6.095v.212c4.24.848 7.544 2.95 9.911 6.307s3.551 7.438 3.551 12.243c0 3.533-.707 6.696-2.12 9.487a21.538 21.538 0 01-5.724 7.102c-2.403 1.943-5.194 3.445-8.374 4.505-3.18 1.06-6.537 1.59-10.07 1.59-4.31 0-8.074-.618-11.289-1.855s-5.9-2.986-8.056-5.247c-2.155-2.261-3.798-4.982-4.929-8.162-1.13-3.18-1.731-6.713-1.802-10.6h12.084c-.141 4.523.972 8.286 3.34 11.289 2.366 3.003 5.917 4.505 10.652 4.505 4.028 0 7.402-1.148 10.123-3.445 2.72-2.297 4.081-5.565 4.081-9.805 0-2.897-.565-5.194-1.696-6.89a10.97 10.97 0 00-4.452-3.869c-1.837-.883-3.904-1.431-6.2-1.643a58.067 58.067 0 00-7.05-.212v-9.01z\"/></svg>"
},
"$:/core/images/heading-4": {
"title": "$:/core/images/heading-4",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-4 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8 30h13.25v30.104H55.7V30h13.25v75.684H55.7V71.552H21.25v34.132H8V30zm76.59 48.548h22.471V45.9h-.212L84.59 78.548zm43.46 9.54h-9.54v17.596H107.06V88.088h-31.8V76.11l31.8-44.626h11.448v47.064h9.54v9.54z\"/></svg>"
},
"$:/core/images/heading-5": {
"title": "$:/core/images/heading-5",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-5 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm77.755 1.484h38.372v10.812H92.765L88.95 61.164l.212.212c1.625-1.837 3.692-3.233 6.201-4.187 2.509-.954 5-1.431 7.473-1.431 3.675 0 6.96.618 9.858 1.855 2.897 1.237 5.335 2.968 7.314 5.194s3.48 4.858 4.505 7.897c1.025 3.039 1.537 6.325 1.537 9.858 0 2.968-.477 6.024-1.43 9.169a25.161 25.161 0 01-4.559 8.586c-2.085 2.58-4.752 4.7-8.003 6.36-3.25 1.66-7.137 2.491-11.66 2.491-3.604 0-6.943-.477-10.017-1.431-3.074-.954-5.777-2.385-8.109-4.293-2.332-1.908-4.187-4.258-5.565-7.049-1.378-2.791-2.138-6.06-2.279-9.805h12.084c.353 4.028 1.731 7.12 4.134 9.275 2.403 2.155 5.583 3.233 9.54 3.233 2.544 0 4.7-.424 6.466-1.272 1.767-.848 3.198-2.014 4.293-3.498 1.095-1.484 1.873-3.215 2.332-5.194.46-1.979.69-4.099.69-6.36 0-2.05-.284-4.01-.849-5.883-.565-1.873-1.413-3.516-2.544-4.929-1.13-1.413-2.597-2.544-4.399-3.392-1.802-.848-3.904-1.272-6.307-1.272-2.544 0-4.929.477-7.155 1.431-2.226.954-3.834 2.738-4.823 5.353H75.805l7.95-40.598z\"/></svg>"
},
"$:/core/images/heading-6": {
"title": "$:/core/images/heading-6",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-6 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm106.587 20.246c-.283-3.039-1.36-5.494-3.233-7.367-1.873-1.873-4.399-2.809-7.579-2.809-2.19 0-4.08.406-5.67 1.219a12.435 12.435 0 00-4.029 3.233c-1.095 1.343-1.979 2.88-2.65 4.611a37.696 37.696 0 00-1.643 5.459 46.08 46.08 0 00-.9 5.671 722.213 722.213 0 00-.478 5.247l.212.212c1.625-2.968 3.87-5.176 6.731-6.625 2.862-1.449 5.954-2.173 9.275-2.173 3.675 0 6.96.636 9.858 1.908 2.897 1.272 5.353 3.021 7.367 5.247 2.014 2.226 3.551 4.858 4.611 7.897 1.06 3.039 1.59 6.325 1.59 9.858 0 3.604-.583 6.943-1.749 10.017-1.166 3.074-2.844 5.76-5.035 8.056-2.19 2.297-4.805 4.081-7.844 5.353-3.039 1.272-6.395 1.908-10.07 1.908-5.441 0-9.91-1.007-13.409-3.021-3.498-2.014-6.254-4.77-8.268-8.268-2.014-3.498-3.41-7.597-4.187-12.296-.777-4.7-1.166-9.77-1.166-15.211 0-4.452.477-8.94 1.431-13.462.954-4.523 2.526-8.639 4.717-12.349 2.19-3.71 5.07-6.731 8.64-9.063C92.676 31.166 97.075 30 102.304 30c2.968 0 5.76.495 8.374 1.484 2.615.99 4.93 2.367 6.943 4.134 2.014 1.767 3.657 3.887 4.93 6.36 1.271 2.473 1.978 5.23 2.12 8.268h-12.085zm-11.66 46.852c2.19 0 4.099-.442 5.724-1.325a12.869 12.869 0 004.081-3.445c1.095-1.413 1.908-3.056 2.438-4.929.53-1.873.795-3.798.795-5.777s-.265-3.887-.795-5.724c-.53-1.837-1.343-3.445-2.438-4.823-1.095-1.378-2.456-2.491-4.08-3.339-1.626-.848-3.534-1.272-5.725-1.272-2.19 0-4.116.406-5.777 1.219-1.66.813-3.056 1.908-4.187 3.286-1.13 1.378-1.979 2.986-2.544 4.823-.565 1.837-.848 3.78-.848 5.83 0 2.05.283 3.993.848 5.83.565 1.837 1.413 3.48 2.544 4.929a12.39 12.39 0 004.187 3.445c1.66.848 3.586 1.272 5.777 1.272z\"/></svg>"
},
"$:/core/images/help": {
"title": "$:/core/images/help",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-help tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M36.055 111.441c-5.24 4.396-15.168 7.362-26.555 7.362-1.635 0-3.24-.06-4.806-.179 7.919-2.64 14.062-8.6 16.367-16.014C8.747 92.845 1.05 78.936 1.05 63.5c0-29.547 28.206-53.5 63-53.5s63 23.953 63 53.5-28.206 53.5-63 53.5c-10.055 0-19.56-2-27.994-5.559zm35.35-33.843a536.471 536.471 0 00.018-4.682 199.02 199.02 0 00-.023-3.042c.008-1.357.595-2.087 3.727-4.235.112-.077 1.085-.74 1.386-.948 3.093-2.133 5.022-3.786 6.762-6.187 2.34-3.228 3.558-7.077 3.558-11.649 0-13.292-9.86-21.952-21.455-21.952-11.103 0-22.499 9.609-24.066 22.295a6.023 6.023 0 1011.956 1.477c.806-6.527 6.972-11.726 12.11-11.726 5.265 0 9.408 3.64 9.408 9.906 0 3.634-1.1 5.153-5.111 7.919l-1.362.93c-2.682 1.84-4.227 3.1-5.7 4.931-2.109 2.62-3.242 5.717-3.258 9.314.013.892.02 1.86.022 2.981a470.766 470.766 0 01-.022 4.943 6.023 6.023 0 1012.046.12l.003-.395zm-6.027 24.499a7.529 7.529 0 100-15.058 7.529 7.529 0 000 15.058z\"/></svg>"
},
"$:/core/images/home-button": {
"title": "$:/core/images/home-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-home-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M112.985 119.502c.01-.165.015-.331.015-.499V67.568c3.137 2.948 8.076 2.884 11.134-.174a7.999 7.999 0 00-.002-11.316L70.396 2.343A7.978 7.978 0 0064.734 0a7.957 7.957 0 00-5.656 2.343L33 28.42V8.007C33 3.585 29.41 0 25 0c-4.418 0-8 3.59-8 8.007V44.42L5.342 56.078c-3.125 3.125-3.12 8.198-.002 11.316a7.999 7.999 0 0011.316-.003l.344-.343v52.945a8.11 8.11 0 000 .007c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8a8.11 8.11 0 00-.015-.498zM97 112V51.574L64.737 19.31 33 51.048V112h64z\"/></svg>"
},
"$:/core/images/import-button": {
"title": "$:/core/images/import-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-import-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M114.832 60.436s3.235-3.27 6.921.417c3.686 3.686.231 7.14.231 7.14l-42.153 42.92s-30.765 32.367-58.798 4.333C-7 87.213 24.59 55.623 24.59 55.623L67.363 12.85s22.725-24.6 43.587-3.738c20.862 20.862-3.96 43.09-3.96 43.09l-35.04 35.04S49.903 112.546 36.426 99.07c-13.476-13.477 11.83-35.523 11.83-35.523l35.04-35.04s3.902-3.902 7.78-.023c3.879 3.878.118 7.921.118 7.921l-35.04 35.04s-13.212 13.212-8.872 17.551c4.34 4.34 16.77-9.653 16.77-9.653l35.04-35.04s16.668-14.598 3.966-27.3c-13.893-13.892-27.565 3.702-27.565 3.702l-42.91 42.91s-23.698 23.698-3.658 43.738 43.012-4.385 43.012-4.385l42.895-42.533z\"/></svg>"
},
"$:/core/images/info-button": {
"title": "$:/core/images/info-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-info-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\" transform=\"translate(.05)\"><path d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48z\"/><circle cx=\"64\" cy=\"32\" r=\"8\"/><rect width=\"16\" height=\"56\" x=\"56\" y=\"48\" rx=\"8\"/></g></svg>"
},
"$:/core/images/italic": {
"title": "$:/core/images/italic",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-italic tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M66.711 0h22.41L62.408 128H40z\"/></svg>"
},
"$:/core/images/left-arrow": {
"title": "$:/core/images/left-arrow",
"created": "20150315234410875",
"modified": "20150315235324760",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-left-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M0 64.177c0-2.026.771-4.054 2.317-5.6l55.98-55.98a7.92 7.92 0 0111.195.001c3.086 3.085 3.092 8.104.001 11.195L19.111 64.175l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.086-8.105 3.092-11.196.001l-55.98-55.98A7.892 7.892 0 010 64.177z\"/></svg>"
},
"$:/core/images/line-width": {
"title": "$:/core/images/line-width",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-line-width tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M16 18h96a2 2 0 000-4H16a2 2 0 100 4zm0 17h96a4 4 0 100-8H16a4 4 0 100 8zm0 21h96a6 6 0 000-12H16a6 6 0 100 12zm0 29h96c5.523 0 10-4.477 10-10s-4.477-10-10-10H16c-5.523 0-10 4.477-10 10s4.477 10 10 10zm0 43h96c8.837 0 16-7.163 16-16s-7.163-16-16-16H16c-8.837 0-16 7.163-16 16s7.163 16 16 16z\"/></svg>"
},
"$:/core/images/link": {
"title": "$:/core/images/link",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-link tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M42.263 69.38a31.919 31.919 0 006.841 10.13c12.5 12.5 32.758 12.496 45.255 0l22.627-22.628c12.502-12.501 12.497-32.758 0-45.255-12.5-12.5-32.758-12.496-45.254 0L49.104 34.255a32.333 32.333 0 00-2.666 3.019 36.156 36.156 0 0121.94.334l14.663-14.663c6.25-6.25 16.382-6.254 22.632-.004 6.248 6.249 6.254 16.373-.004 22.631l-22.62 22.62c-6.25 6.25-16.381 6.254-22.631.004a15.93 15.93 0 01-4.428-8.433 11.948 11.948 0 00-7.59 3.48l-6.137 6.137z\"/><path d=\"M86.35 59.234a31.919 31.919 0 00-6.84-10.13c-12.5-12.5-32.758-12.497-45.255 0L11.627 71.732c-12.501 12.5-12.496 32.758 0 45.254 12.5 12.5 32.758 12.497 45.255 0L79.51 94.36a32.333 32.333 0 002.665-3.02 36.156 36.156 0 01-21.94-.333l-14.663 14.663c-6.25 6.25-16.381 6.253-22.63.004-6.25-6.249-6.255-16.374.003-22.632l22.62-22.62c6.25-6.25 16.381-6.253 22.631-.003a15.93 15.93 0 014.428 8.432 11.948 11.948 0 007.59-3.48l6.137-6.136z\"/></g></svg>"
},
"$:/core/images/linkify": {
"title": "$:/core/images/linkify",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-linkify-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M17.031 31.919H9.048V96.85h7.983v6.92H0V25h17.031v6.919zm24.66 0h-7.983V96.85h7.983v6.92H24.66V25h17.03v6.919zM67.77 56.422l11.975-3.903 2.306 7.096-12.063 3.903 7.628 10.379-6.12 4.435-7.63-10.467-7.45 10.2-5.943-4.523L58.1 63.518 45.95 59.35l2.306-7.096 12.064 4.17V43.825h7.45v12.596zM86.31 96.85h7.982V31.92H86.31V25h17.031v78.77H86.31v-6.92zm24.659 0h7.983V31.92h-7.983V25H128v78.77h-17.031v-6.92z\"/></svg>"
},
"$:/core/images/list-bullet": {
"title": "$:/core/images/list-bullet",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list-bullet tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M11.636 40.273c6.427 0 11.637-5.21 11.637-11.637C23.273 22.21 18.063 17 11.636 17 5.21 17 0 22.21 0 28.636c0 6.427 5.21 11.637 11.636 11.637zm0 34.909c6.427 0 11.637-5.21 11.637-11.637 0-6.426-5.21-11.636-11.637-11.636C5.21 51.91 0 57.12 0 63.545c0 6.427 5.21 11.637 11.636 11.637zm0 34.909c6.427 0 11.637-5.21 11.637-11.636 0-6.427-5.21-11.637-11.637-11.637C5.21 86.818 0 92.028 0 98.455c0 6.426 5.21 11.636 11.636 11.636zM34.91 22.818H128v11.637H34.91V22.818zm0 34.91H128v11.636H34.91V57.727zm0 34.908H128v11.637H34.91V92.636z\"/></svg>"
},
"$:/core/images/list-number": {
"title": "$:/core/images/list-number",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list-number tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M33.84 22.356H128v11.77H33.84v-11.77zm0 35.31H128v11.77H33.84v-11.77zm0 35.311H128v11.77H33.84v-11.77zM.38 42.631v-2.223h.998c.826 0 1.445-.14 1.858-.42.413-.28.619-.948.619-2.002V22.769c0-1.442-.193-2.336-.58-2.683-.385-.347-1.477-.52-3.275-.52v-2.143c3.502-.147 6.252-.955 8.25-2.423h2.117v22.865c0 .921.15 1.575.449 1.963.3.387.949.58 1.948.58h.998v2.223H.38zm-.3 35.356v-1.902c7.19-6.554 10.786-12.58 10.786-18.08 0-1.562-.326-2.81-.979-3.744-.652-.934-1.524-1.402-2.616-1.402-.893 0-1.655.317-2.287.952-.633.634-.95 1.364-.95 2.192 0 .974.247 1.829.74 2.563.106.16.16.28.16.36 0 .147-.16.28-.48.4-.213.08-.752.308-1.618.681-.839.374-1.358.561-1.558.561-.24 0-.512-.37-.819-1.111A6.2 6.2 0 010 57.064c0-1.949.849-3.544 2.547-4.785 1.698-1.242 3.798-1.862 6.302-1.862 2.463 0 4.53.67 6.202 2.012 1.67 1.341 2.506 3.093 2.506 5.256a8.644 8.644 0 01-.849 3.724c-.566 1.201-1.92 3.053-4.064 5.556a165.471 165.471 0 01-6.272 6.938h11.445l-1.019 5.726h-2.117c.08-.28.12-.534.12-.76 0-.388-.1-.631-.3-.731-.2-.1-.599-.15-1.198-.15H.08zm12.124 19.207c1.745.04 3.236.637 4.474 1.792 1.239 1.154 1.858 2.773 1.858 4.855 0 2.99-1.132 5.393-3.396 7.208-2.263 1.815-5 2.723-8.209 2.723-2.01 0-3.669-.384-4.974-1.151C.652 111.853 0 110.849 0 109.607c0-.774.27-1.398.809-1.872.54-.474 1.128-.71 1.768-.71.639 0 1.162.2 1.568.6.406.4.782 1.055 1.128 1.962.466 1.268 1.239 1.902 2.317 1.902 1.265 0 2.287-.477 3.066-1.431.78-.955 1.169-2.686 1.169-5.196 0-1.709-.12-3.023-.36-3.944-.24-.921-.792-1.382-1.658-1.382-.586 0-1.185.307-1.797.921-.493.494-.932.741-1.319.741-.333 0-.602-.147-.809-.44-.206-.294-.31-.574-.31-.841 0-.32.104-.594.31-.821.207-.227.69-.594 1.449-1.102 2.876-1.922 4.314-4.017 4.314-6.287 0-1.188-.306-2.092-.919-2.713a3.001 3.001 0 00-2.217-.93c-.799 0-1.525.263-2.177.79-.653.528-.979 1.158-.979 1.892 0 .641.253 1.235.76 1.782.172.2.259.367.259.5 0 .121-.57.428-1.708.922-1.139.494-1.854.74-2.147.74-.413 0-.75-.333-1.009-1-.26-.668-.39-1.282-.39-1.842 0-1.749.93-3.224 2.787-4.425 1.858-1.202 3.965-1.802 6.322-1.802 2.064 0 3.851.447 5.363 1.341 1.511.895 2.267 2.116 2.267 3.664 0 1.362-.57 2.623-1.708 3.784a13.387 13.387 0 01-3.945 2.784z\"/></svg>"
},
"$:/core/images/list": {
"title": "$:/core/images/list",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M87.748 128H23.999c-4.418 0-7.999-3.59-7.999-8.007V8.007C16 3.585 19.588 0 24 0h80c4.419 0 8 3.59 8 8.007V104H91.25c-.965 0-1.84.392-2.473 1.025a3.476 3.476 0 00-1.029 2.476V128zm8-.12l15.88-15.88h-15.88v15.88zM40 15.508A3.502 3.502 0 0143.5 12h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 20h-55a3.498 3.498 0 01-3.5-3.509v-.982zM32 22a6 6 0 100-12 6 6 0 000 12zm8 9.509A3.502 3.502 0 0143.5 28h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 36h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 44h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 52h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 60h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 68h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 76h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 84h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 92h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 100h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.505 3.505 0 0143.497 108h33.006A3.497 3.497 0 0180 111.509v.982A3.505 3.505 0 0176.503 116H43.497A3.497 3.497 0 0140 112.491v-.982zM32 38a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12z\"/></svg>"
},
"$:/core/images/locked-padlock": {
"title": "$:/core/images/locked-padlock",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-locked-padlock tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M96.472 64H105v32.01C105 113.674 90.674 128 73.001 128H56C38.318 128 24 113.677 24 96.01V64h8c.003-15.723.303-47.731 32.16-47.731 31.794 0 32.305 32.057 32.312 47.731zm-15.897 0H48.44c.002-16.287.142-32 15.719-32 15.684 0 16.977 16.136 16.415 32zM67.732 92.364A8.503 8.503 0 0064.5 76a8.5 8.5 0 00-3.498 16.25l-5.095 22.77H72.8l-5.07-22.656z\"/></svg>"
},
"$:/core/images/mail": {
"title": "$:/core/images/mail",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mail tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M122.827 104.894a7.986 7.986 0 01-2.834.516H8.007c-.812 0-1.597-.12-2.335-.345l34.163-34.163 20.842 20.842a3.998 3.998 0 003.418 1.134 4.003 4.003 0 003.395-1.134L88.594 70.64c.075.09.155.176.24.26l33.993 33.994zm5.076-6.237c.064-.406.097-.823.097-1.247v-64c0-.669-.082-1.318-.237-1.94L94.23 65.006c.09.075.177.154.261.239l33.413 33.413zm-127.698.56A8.023 8.023 0 010 97.41v-64c0-.716.094-1.41.271-2.071l33.907 33.906L.205 99.218zM5.93 25.684a8.012 8.012 0 012.078-.273h111.986c.766 0 1.507.108 2.209.308L64.083 83.837 5.93 25.683z\"/></svg>"
},
"$:/core/images/menu-button": {
"title": "$:/core/images/menu-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-menu-button tc-image-button\" viewBox=\"0 0 128 128\"><rect width=\"128\" height=\"16\" y=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"56\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"96\" rx=\"8\"/></svg>"
},
"$:/core/images/mono-block": {
"title": "$:/core/images/mono-block",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mono-block tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M23.965 32.967h.357c.755 0 1.328.192 1.72.577.39.384.586.947.586 1.688 0 .824-.206 1.418-.618 1.782-.413.363-1.094.545-2.045.545h-6.31c-.965 0-1.65-.178-2.056-.535-.405-.356-.608-.954-.608-1.792 0-.811.203-1.391.608-1.74.406-.35 1.09-.525 2.055-.525h.734l-.86-2.453H8.471l-.902 2.453h.734c.95 0 1.632.178 2.044.535.413.356.619.933.619 1.73 0 .824-.206 1.418-.619 1.782-.412.363-1.094.545-2.044.545h-5.41c-.964 0-1.649-.182-2.054-.545-.406-.364-.608-.958-.608-1.782 0-.741.195-1.304.587-1.688.391-.385.964-.577 1.719-.577h.356l5.62-15.641H6.835c-.95 0-1.632-.182-2.044-.546-.412-.363-.619-.95-.619-1.76 0-.825.207-1.42.619-1.783.412-.363 1.094-.545 2.044-.545h7.863c1.244 0 2.118.67 2.62 2.013v.063l6.647 18.2zM12.98 17.326l-3.04 8.848h6.08l-3.04-8.848zm22.402 9.372v6.395h3.145c2.223 0 3.788-.245 4.697-.734.908-.49 1.362-1.307 1.362-2.453 0-1.16-.433-1.985-1.3-2.474-.866-.49-2.383-.734-4.55-.734h-3.354zm10.693-2.327c1.524.559 2.642 1.324 3.355 2.295.713.972 1.07 2.212 1.07 3.722 0 1.272-.308 2.432-.923 3.48-.615 1.049-1.496 1.909-2.642 2.58a7.499 7.499 0 01-2.254.849c-.832.174-2.01.262-3.533.262H30.202c-.922 0-1.583-.182-1.981-.545-.399-.364-.598-.958-.598-1.782 0-.741.189-1.304.566-1.688.378-.385.93-.577 1.657-.577h.356V17.326h-.356c-.727 0-1.28-.196-1.657-.587-.377-.392-.566-.965-.566-1.72 0-.81.203-1.401.608-1.771.406-.37 1.062-.556 1.971-.556h9.645c2.95 0 5.19.573 6.72 1.72 1.53 1.145 2.296 2.823 2.296 5.031 0 1.09-.234 2.052-.703 2.883-.468.832-1.163 1.513-2.086 2.045zM35.381 17.2v5.284h2.83c1.72 0 2.932-.203 3.638-.609.706-.405 1.06-1.09 1.06-2.054 0-.909-.319-1.573-.955-1.992-.636-.42-1.667-.63-3.093-.63h-3.48zm35.863-3.816c.28-.503.566-.86.86-1.07.293-.21.664-.314 1.111-.314.685 0 1.17.182 1.457.545.287.364.43.986.43 1.866l.042 5.452c0 .964-.157 1.614-.472 1.95-.314.335-.884.503-1.709.503-.587 0-1.037-.14-1.352-.42-.314-.28-.584-.796-.807-1.551-.364-1.328-.944-2.282-1.74-2.862-.797-.58-1.901-.87-3.313-.87-2.153 0-3.802.727-4.948 2.18-1.147 1.454-1.72 3.558-1.72 6.311 0 2.74.58 4.844 1.74 6.311 1.16 1.468 2.817 2.202 4.97 2.202 1.467 0 3.085-.49 4.854-1.468 1.768-.978 2.883-1.467 3.344-1.467.545 0 1.003.23 1.373.692.37.46.556 1.034.556 1.719 0 1.23-1.084 2.39-3.25 3.48-2.167 1.09-4.606 1.636-7.318 1.636-3.662 0-6.625-1.21-8.89-3.627-2.264-2.419-3.396-5.578-3.396-9.478 0-3.76 1.146-6.884 3.438-9.372 2.293-2.488 5.2-3.732 8.723-3.732.992 0 1.97.112 2.935.335.964.224 1.992.574 3.082 1.049zm10.22 19.583V17.326h-.356c-.755 0-1.328-.196-1.72-.587-.39-.392-.586-.965-.586-1.72 0-.81.21-1.401.629-1.771.42-.37 1.097-.556 2.034-.556h5.178c2.922 0 5.06.126 6.416.377 1.356.252 2.51.671 3.46 1.258 1.691 1.007 2.988 2.443 3.89 4.31.9 1.865 1.352 4.021 1.352 6.467 0 2.586-.514 4.847-1.541 6.783-1.028 1.936-2.485 3.4-4.372 4.393-.853.447-1.852.772-2.998.975-1.147.203-2.852.304-5.116.304h-6.269c-.965 0-1.65-.178-2.055-.535-.406-.356-.608-.954-.608-1.792 0-.741.195-1.304.587-1.688.391-.385.964-.577 1.72-.577h.356zm5.41-15.725v15.725h1.195c2.642 0 4.592-.646 5.85-1.94 1.258-1.292 1.887-3.28 1.887-5.965 0-2.641-.64-4.612-1.918-5.912-1.28-1.3-3.205-1.95-5.777-1.95-.335 0-.59.003-.765.01a7.992 7.992 0 00-.472.032zm35.067-.126h-9.75v5.368h3.69v-.252c0-.797.175-1.39.524-1.782.35-.392.88-.587 1.594-.587.629 0 1.142.178 1.54.534.4.357.598.808.598 1.353 0 .028.007.118.021.272.014.154.021.308.021.462v4.34c0 .936-.167 1.607-.503 2.013-.335.405-.88.608-1.635.608-.713 0-1.251-.19-1.615-.567-.363-.377-.545-.936-.545-1.677v-.377h-3.69v6.269h9.75v-2.495c0-.937.178-1.608.534-2.013.357-.405.94-.608 1.75-.608.798 0 1.367.2 1.71.597.342.399.513 1.073.513 2.024v5.074c0 .755-.146 1.258-.44 1.51-.293.251-.873.377-1.74.377h-17.172c-.923 0-1.583-.182-1.982-.545-.398-.364-.597-.958-.597-1.782 0-.741.189-1.304.566-1.688.377-.385.93-.577 1.656-.577h.357V17.326h-.357c-.712 0-1.261-.2-1.646-.598-.384-.398-.576-.968-.576-1.709 0-.81.203-1.401.608-1.771.405-.37 1.062-.556 1.97-.556h17.173c.853 0 1.43.13 1.73.388.3.258.45.772.45 1.54v4.698c0 .95-.174 1.631-.524 2.044-.35.412-.915.618-1.698.618-.81 0-1.394-.21-1.75-.629-.357-.419-.535-1.097-.535-2.033v-2.202zM19.77 47.641c.267-.504.55-.86.85-1.07.3-.21.675-.314 1.122-.314.685 0 1.17.181 1.457.545.287.363.43.985.43 1.866l.042 5.451c0 .965-.157 1.615-.472 1.95-.314.336-.891.504-1.73.504-.587 0-1.045-.144-1.373-.43-.329-.287-.598-.8-.807-1.541-.378-1.342-.958-2.3-1.74-2.873-.783-.573-1.88-.86-3.292-.86-2.153 0-3.799.727-4.938 2.181-1.14 1.454-1.709 3.557-1.709 6.311s.598 4.882 1.793 6.385C10.599 67.248 12.294 68 14.488 68c.503 0 1.077-.06 1.72-.179a23.809 23.809 0 002.264-.555v-3.313h-2.37c-.95 0-1.624-.175-2.023-.524-.398-.35-.597-.93-.597-1.74 0-.84.199-1.437.597-1.793.399-.357 1.073-.535 2.024-.535h7.569c.978 0 1.667.175 2.065.524.398.35.598.937.598 1.762 0 .74-.2 1.31-.598 1.708-.398.399-.975.598-1.73.598h-.335v5.242c0 .447-.05.758-.147.933-.098.174-.293.353-.587.534-.797.476-2.062.895-3.795 1.258a25.576 25.576 0 01-5.263.546c-3.662 0-6.625-1.21-8.89-3.628-2.264-2.418-3.397-5.577-3.397-9.477 0-3.76 1.147-6.884 3.44-9.372 2.292-2.488 5.199-3.732 8.721-3.732.979 0 1.954.112 2.925.335.972.224 2.003.573 3.093 1.049zm15.84 3.941v4.823h6.857v-4.823h-.336c-.754 0-1.331-.195-1.73-.587-.398-.391-.597-.964-.597-1.719 0-.825.206-1.419.619-1.782.412-.364 1.093-.545 2.044-.545h5.41c.95 0 1.624.181 2.023.545.398.363.597.957.597 1.782 0 .755-.192 1.328-.576 1.72-.385.39-.947.586-1.688.586h-.357v15.642h.357c.755 0 1.328.192 1.719.576.391.385.587.947.587 1.688 0 .825-.203 1.419-.608 1.782-.405.364-1.09.546-2.055.546h-5.41c-.964 0-1.649-.179-2.054-.535-.405-.357-.608-.954-.608-1.793 0-.74.2-1.303.598-1.688.398-.384.975-.576 1.73-.576h.335v-6.186h-6.856v6.186h.335c.755 0 1.331.192 1.73.576.398.385.597.947.597 1.688 0 .825-.206 1.419-.618 1.782-.412.364-1.094.546-2.044.546h-5.41c-.964 0-1.65-.179-2.055-.535-.405-.357-.608-.954-.608-1.793 0-.74.196-1.303.587-1.688.392-.384.965-.576 1.72-.576h.356V51.582h-.356c-.741 0-1.304-.195-1.688-.587-.385-.391-.577-.964-.577-1.719 0-.825.2-1.419.598-1.782.398-.364 1.073-.545 2.023-.545h5.41c.936 0 1.614.181 2.033.545.42.363.63.957.63 1.782 0 .755-.2 1.328-.598 1.72-.399.39-.975.586-1.73.586h-.335zm31.754 0v15.642h3.523c.95 0 1.632.178 2.044.534.412.357.618.933.618 1.73 0 .811-.21 1.402-.629 1.772-.419.37-1.097.556-2.033.556H58.433c-.95 0-1.632-.182-2.044-.546-.412-.363-.619-.957-.619-1.782 0-.81.203-1.39.608-1.74.406-.35 1.09-.524 2.055-.524h3.523V51.582h-3.523c-.95 0-1.632-.181-2.044-.545-.412-.363-.619-.95-.619-1.761 0-.825.203-1.412.608-1.761.406-.35 1.09-.524 2.055-.524h12.455c.992 0 1.684.174 2.075.524.392.35.587.936.587 1.761 0 .81-.202 1.398-.608 1.761-.405.364-1.09.545-2.054.545h-3.523zm30.496 0v11.994c0 1.873-.122 3.228-.367 4.067a5.876 5.876 0 01-1.227 2.244c-.74.852-1.768 1.495-3.082 1.929-1.314.433-2.893.65-4.738.65-1.3 0-2.555-.126-3.764-.378a16.843 16.843 0 01-3.491-1.132c-.615-.28-1.017-.643-1.206-1.09-.188-.448-.283-1.175-.283-2.18v-4.32c0-1.202.175-2.04.525-2.516.349-.475.957-.713 1.824-.713 1.244 0 1.929.915 2.054 2.747.014.321.035.566.063.733.168 1.622.545 2.73 1.133 3.324.587.594 1.523.89 2.81.89 1.593 0 2.714-.422 3.364-1.268.65-.845.975-2.386.975-4.623V51.582H88.93c-.95 0-1.632-.181-2.044-.545-.413-.363-.619-.95-.619-1.761 0-.825.2-1.412.598-1.761.398-.35 1.086-.524 2.065-.524h10.693c.979 0 1.667.174 2.065.524.399.35.598.936.598 1.761 0 .81-.206 1.398-.619 1.761-.412.364-1.093.545-2.044.545h-1.761zm14.644 0v6.353l6.48-6.478c-.728-.084-1.238-.29-1.531-.619-.294-.328-.44-.85-.44-1.562 0-.825.198-1.419.597-1.782.398-.364 1.073-.545 2.023-.545h5.137c.95 0 1.625.181 2.023.545.399.363.598.957.598 1.782 0 .769-.2 1.345-.598 1.73-.398.384-.982.576-1.75.576h-.483l-6.101 6.06c1.132.839 2.167 1.94 3.103 3.302.937 1.363 2.034 3.456 3.292 6.28h.692c.825 0 1.44.188 1.845.566.405.377.608.943.608 1.698 0 .825-.206 1.419-.619 1.782-.412.364-1.093.546-2.044.546h-2.579c-1.132 0-2.048-.762-2.746-2.286-.126-.28-.224-.503-.294-.67-.923-1.958-1.768-3.467-2.537-4.53a16.616 16.616 0 00-2.705-2.914l-1.97 1.887v3.92h.335c.755 0 1.331.193 1.73.577.398.385.597.947.597 1.688 0 .825-.206 1.419-.618 1.782-.413.364-1.094.546-2.045.546h-5.41c-.964 0-1.649-.179-2.054-.535-.405-.357-.608-.954-.608-1.793 0-.74.196-1.303.587-1.688.391-.384.965-.576 1.72-.576h.356V51.582h-.357c-.74 0-1.303-.195-1.687-.587-.385-.391-.577-.964-.577-1.719 0-.825.2-1.419.598-1.782.398-.364 1.072-.545 2.023-.545h5.41c.936 0 1.614.181 2.033.545.42.363.63.957.63 1.782 0 .755-.2 1.328-.598 1.72-.399.39-.975.586-1.73.586h-.336zM13.44 96.326l4.005-11.889c.251-.782.6-1.352 1.048-1.709.447-.356 1.041-.534 1.782-.534h3.271c.95 0 1.632.182 2.044.545.413.363.619.957.619 1.782 0 .755-.2 1.328-.598 1.72-.398.39-.975.587-1.73.587h-.335l.587 15.641h.357c.754 0 1.32.192 1.698.577.377.384.566.947.566 1.687 0 .825-.2 1.42-.598 1.783-.398.363-1.072.545-2.023.545h-4.718c-.95 0-1.624-.178-2.023-.535-.398-.356-.597-.954-.597-1.793 0-.74.192-1.303.576-1.687.385-.385.954-.577 1.709-.577h.335l-.293-12.79-3.061 9.52c-.224.712-.542 1.226-.954 1.54-.413.315-.982.472-1.709.472-.727 0-1.303-.157-1.73-.472-.426-.314-.751-.828-.975-1.54l-3.04-9.52-.294 12.79h.336c.755 0 1.324.192 1.709.577.384.384.576.947.576 1.687 0 .825-.202 1.42-.608 1.783-.405.363-1.076.545-2.013.545H2.621c-.937 0-1.608-.182-2.013-.545-.405-.364-.608-.958-.608-1.783 0-.74.192-1.303.577-1.687.384-.385.954-.577 1.708-.577h.336l.608-15.641h-.336c-.754 0-1.331-.196-1.73-.588-.398-.39-.597-.964-.597-1.719 0-.825.206-1.419.619-1.782.412-.363 1.093-.545 2.044-.545h3.27c.728 0 1.311.175 1.752.524.44.35.8.923 1.08 1.72l4.109 11.888zm30.454 2.054V86.828H42.74c-.922 0-1.583-.182-1.981-.546-.398-.363-.598-.95-.598-1.76 0-.812.2-1.402.598-1.773.398-.37 1.059-.555 1.981-.555h5.955c.909 0 1.566.185 1.97.555.406.37.609.961.609 1.772 0 .741-.192 1.31-.577 1.709-.384.398-.933.598-1.646.598h-.356v19.038c0 .657-.07 1.069-.21 1.237-.14.167-.454.251-.943.251h-2.097c-.67 0-1.143-.07-1.415-.21-.273-.14-.507-.384-.703-.733l-8.722-15.327v11.385h1.216c.909 0 1.559.175 1.95.524.392.35.587.93.587 1.74 0 .825-.199 1.42-.597 1.783-.399.363-1.045.545-1.94.545h-6.017c-.909 0-1.566-.182-1.971-.545-.406-.364-.608-.958-.608-1.783 0-.74.188-1.303.566-1.687.377-.385.936-.577 1.677-.577h.336V86.828h-.336c-.713 0-1.265-.2-1.656-.598-.392-.398-.587-.968-.587-1.709 0-.81.206-1.401.618-1.772.413-.37 1.066-.555 1.96-.555h3.44c.824 0 1.383.108 1.677.325.293.216.622.653.985 1.31l7.989 14.551zM64.66 86.366c-1.803 0-3.218.727-4.245 2.18-1.028 1.455-1.541 3.474-1.541 6.06 0 2.586.517 4.613 1.551 6.08 1.034 1.468 2.446 2.202 4.235 2.202 1.804 0 3.222-.73 4.257-2.19 1.034-1.461 1.551-3.492 1.551-6.092 0-2.586-.513-4.605-1.54-6.06-1.028-1.453-2.45-2.18-4.268-2.18zm0-4.864c3.44 0 6.27 1.23 8.492 3.69 2.223 2.46 3.334 5.598 3.334 9.414 0 3.844-1.104 6.99-3.313 9.436-2.208 2.446-5.046 3.669-8.513 3.669-3.424 0-6.255-1.234-8.491-3.701-2.237-2.467-3.355-5.602-3.355-9.404 0-3.83 1.108-6.971 3.323-9.424 2.216-2.454 5.057-3.68 8.523-3.68zM87.461 98.17v4.298h2.16c.908 0 1.555.175 1.94.524.384.35.576.93.576 1.74 0 .825-.196 1.42-.587 1.783-.392.363-1.035.545-1.93.545h-7.254c-.922 0-1.583-.182-1.981-.545-.399-.364-.598-.958-.598-1.783 0-.74.189-1.303.566-1.687.378-.385.93-.577 1.657-.577h.356V86.828h-.356c-.713 0-1.262-.2-1.646-.598-.385-.398-.577-.968-.577-1.709 0-.81.203-1.401.608-1.772.406-.37 1.063-.555 1.971-.555h8.66c3.424 0 6.014.657 7.768 1.97 1.754 1.315 2.631 3.25 2.631 5.809 0 2.697-.873 4.738-2.62 6.122-1.748 1.384-4.34 2.076-7.78 2.076h-3.564zm0-11.343v6.625h2.977c1.65 0 2.89-.28 3.722-.839.832-.559 1.248-1.397 1.248-2.516 0-1.048-.43-1.855-1.29-2.421-.86-.566-2.086-.85-3.68-.85h-2.977zm27.267 20.568l-1.636 1.636a12.37 12.37 0 011.772-.44c.58-.098 1.15-.147 1.709-.147 1.104 0 2.268.164 3.491.492 1.223.329 1.967.493 2.233.493.447 0 1.03-.15 1.75-.45.72-.301 1.206-.452 1.458-.452.517 0 .947.2 1.29.598.342.398.513.898.513 1.5 0 .796-.472 1.474-1.415 2.033-.944.56-2.1.839-3.47.839-.937 0-2.139-.22-3.607-.66-1.467-.441-2.53-.661-3.187-.661-.992 0-2.11.272-3.354.817-1.244.546-2.013.818-2.307.818a2.14 2.14 0 01-1.53-.597c-.42-.399-.63-.878-.63-1.437 0-.391.134-.807.4-1.247.265-.44.733-1.01 1.404-1.709l2.118-2.139c-2.335-.852-4.194-2.386-5.578-4.602-1.384-2.215-2.075-4.763-2.075-7.642 0-3.802 1.104-6.909 3.312-9.32 2.209-2.411 5.053-3.617 8.534-3.617 3.467 0 6.304 1.209 8.513 3.627 2.208 2.418 3.312 5.522 3.312 9.31 0 3.774-1.097 6.884-3.291 9.33-2.195 2.446-4.977 3.67-8.345 3.67a22.5 22.5 0 01-1.384-.043zm1.195-21.03c-1.803 0-3.218.727-4.246 2.18-1.027 1.455-1.54 3.474-1.54 6.06 0 2.586.516 4.613 1.55 6.08 1.035 1.468 2.447 2.202 4.236 2.202 1.803 0 3.222-.73 4.256-2.19 1.035-1.461 1.552-3.492 1.552-6.092 0-2.586-.514-4.605-1.541-6.06-1.028-1.453-2.45-2.18-4.267-2.18z\"/></svg>"
},
"$:/core/images/mono-line": {
"title": "$:/core/images/mono-line",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mono-line tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60.437 84.523h.908c1.922 0 3.381.489 4.378 1.468.997.979 1.495 2.411 1.495 4.298 0 2.1-.525 3.612-1.575 4.538-1.05.925-2.785 1.388-5.206 1.388h-16.07c-2.456 0-4.2-.454-5.232-1.361-1.032-.908-1.548-2.43-1.548-4.565 0-2.065.516-3.542 1.548-4.432 1.032-.89 2.776-1.334 5.232-1.334h1.869l-2.19-6.247H20.983l-2.296 6.247h1.87c2.42 0 4.155.453 5.205 1.361 1.05.908 1.575 2.376 1.575 4.405 0 2.1-.525 3.612-1.575 4.538-1.05.925-2.785 1.388-5.206 1.388H6.781c-2.456 0-4.2-.463-5.233-1.388C.516 93.9 0 92.389 0 90.289c0-1.887.498-3.32 1.495-4.298.997-.979 2.456-1.468 4.378-1.468h.908l14.308-39.83h-4.271c-2.42 0-4.156-.462-5.206-1.387-1.05-.926-1.575-2.42-1.575-4.485 0-2.1.525-3.613 1.575-4.538 1.05-.926 2.785-1.388 5.206-1.388h20.021c3.168 0 5.392 1.708 6.674 5.125v.16l16.924 46.343zm-27.976-39.83L24.72 67.225h15.483l-7.742-22.53zM89.506 68.56v16.284h8.008c5.66 0 9.646-.623 11.96-1.869 2.313-1.245 3.47-3.328 3.47-6.246 0-2.955-1.103-5.055-3.31-6.3-2.207-1.246-6.069-1.869-11.586-1.869h-8.542zm27.229-5.926c3.88 1.423 6.727 3.372 8.542 5.846 1.815 2.474 2.723 5.633 2.723 9.477 0 3.239-.783 6.193-2.35 8.862-1.565 2.67-3.808 4.859-6.726 6.567-1.709.997-3.622 1.718-5.74 2.163-2.118.445-5.116.667-8.996.667h-27.87c-2.349 0-4.03-.463-5.045-1.388-1.014-.926-1.521-2.438-1.521-4.538 0-1.887.48-3.32 1.441-4.298.961-.979 2.367-1.468 4.218-1.468h.907v-39.83h-.907c-1.851 0-3.257-.498-4.218-1.494-.961-.997-1.441-2.456-1.441-4.378 0-2.065.516-3.568 1.548-4.512 1.032-.943 2.705-1.414 5.018-1.414h24.56c7.51 0 13.214 1.459 17.111 4.377 3.898 2.92 5.847 7.19 5.847 12.814 0 2.776-.597 5.223-1.789 7.341-1.192 2.118-2.963 3.853-5.312 5.206zm-27.23-18.26v13.455h7.208c4.378 0 7.466-.516 9.264-1.549 1.797-1.032 2.696-2.776 2.696-5.232 0-2.313-.81-4.004-2.43-5.072-1.619-1.068-4.244-1.602-7.874-1.602h-8.863z\"/></svg>"
},
"$:/core/images/new-button": {
"title": "$:/core/images/new-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 72H8.007C3.591 72 0 68.418 0 64c0-4.41 3.585-8 8.007-8H56V8.007C56 3.591 59.582 0 64 0c4.41 0 8 3.585 8 8.007V56h47.993c4.416 0 8.007 3.582 8.007 8 0 4.41-3.585 8-8.007 8H72v47.993c0 4.416-3.582 8.007-8 8.007-4.41 0-8-3.585-8-8.007V72z\"/></svg>"
},
"$:/core/images/new-here-button": {
"title": "$:/core/images/new-here-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-here-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.838 20.935l-3.572.938c-3.688.968-8.23 4.43-10.136 7.731L3.37 96.738c-1.905 3.3-.771 7.524 2.534 9.432l33.717 19.466c3.297 1.904 7.53.78 9.435-2.521l38.76-67.134c1.905-3.3 2.632-8.963 1.623-12.646L83.285 20.88c-1.009-3.68-4.821-5.884-8.513-4.915l-7.603 1.995.043.287c.524 3.394 2.053 7.498 4.18 11.55.418.163.829.36 1.23.59a8.864 8.864 0 014.438 8.169c.104.132.21.264.316.395l-.386.318a8.663 8.663 0 01-1.082 3.137c-2.42 4.192-7.816 5.608-12.051 3.163-4.12-2.379-5.624-7.534-3.476-11.671-2.177-4.394-3.788-8.874-4.543-12.964z\"/><path d=\"M69.554 44.76c-5.944-7.476-10.74-17.196-11.955-25.059-1.68-10.875 3.503-18.216 15.082-18.04 10.407.158 19.975 5.851 24.728 13.785 5.208 8.695 2.95 17.868-6.855 20.496l-2.037-7.601c4.232-1.134 4.999-4.248 2.24-8.853-3.37-5.626-10.465-9.848-18.146-9.965-6.392-.097-8.31 2.62-7.323 9.01.999 6.465 5.318 15.138 10.582 21.65l-.072.06c.559 1.553-4.17 6.44-5.938 4.888l-.005.004-.028-.034a1.323 1.323 0 01-.124-.135 2.618 2.618 0 01-.149-.205z\"/><rect width=\"16\" height=\"48\" x=\"96\" y=\"80\" rx=\"8\"/><rect width=\"48\" height=\"16\" x=\"80\" y=\"96\" rx=\"8\"/></g></svg>"
},
"$:/core/images/new-image-button": {
"title": "$:/core/images/new-image-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-image-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M81.362 73.627l15.826-27.41a2.626 2.626 0 00-.962-3.59l-50.01-28.872a2.626 2.626 0 00-3.588.961L30.058 36.49l10.04-5.261c3.042-1.595 6.771.114 7.55 3.46l3.607 17.702 9.88.85a5.25 5.25 0 014.571 3.77c.034.115.1.344.199.671.165.553.353 1.172.562 1.843.595 1.914 1.23 3.85 1.872 5.678.207.588.412 1.156.614 1.701.625 1.685 1.209 3.114 1.725 4.207.255.54.485.977.726 1.427.214.212.547.425 1.011.622 1.141.482 2.784.74 4.657.758.864.008 1.71-.034 2.492-.11.448-.043.753-.085.871-.104.315-.053.625-.077.927-.076zM37.47 2.649A5.257 5.257 0 0144.649.725l63.645 36.746a5.257 5.257 0 011.923 7.178L73.47 108.294a5.257 5.257 0 01-7.177 1.923L2.649 73.47a5.257 5.257 0 01-1.924-7.177L37.471 2.649zm42.837 50.49a5.25 5.25 0 105.25-9.092 5.25 5.25 0 00-5.25 9.093zM96 112h-7.993c-4.419 0-8.007-3.582-8.007-8 0-4.41 3.585-8 8.007-8H96v-7.993C96 83.588 99.582 80 104 80c4.41 0 8 3.585 8 8.007V96h7.993c4.419 0 8.007 3.582 8.007 8 0 4.41-3.585 8-8.007 8H112v7.993c0 4.419-3.582 8.007-8 8.007-4.41 0-8-3.585-8-8.007V112zM33.347 51.791c7.428 7.948 9.01 10.69 7.449 13.394-1.56 2.703-13.838-2.328-16.094 1.58-2.256 3.908-.907 3.258-2.437 5.908l19.73 11.39s-5.605-8.255-4.235-10.628c2.515-4.356 8.77-1.256 10.365-4.019 2.414-4.181-5.103-9.639-14.778-17.625z\"/></svg>"
},
"$:/core/images/new-journal-button": {
"title": "$:/core/images/new-journal-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-journal-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M102.545 112.818v11.818c0 1.306 1.086 2.364 2.425 2.364h6.06c1.34 0 2.425-1.058 2.425-2.364v-11.818h12.12c1.34 0 2.425-1.058 2.425-2.363v-5.91c0-1.305-1.085-2.363-2.424-2.363h-12.121V90.364c0-1.306-1.086-2.364-2.425-2.364h-6.06c-1.34 0-2.425 1.058-2.425 2.364v11.818h-12.12c-1.34 0-2.425 1.058-2.425 2.363v5.91c0 1.305 1.085 2.363 2.424 2.363h12.121zM60.016 4.965c-4.781-2.76-10.897-1.118-13.656 3.66L5.553 79.305A9.993 9.993 0 009.21 92.963l51.04 29.468c4.78 2.76 10.897 1.118 13.655-3.66l40.808-70.681a9.993 9.993 0 00-3.658-13.656L60.016 4.965zm-3.567 27.963a6 6 0 106-10.393 6 6 0 00-6 10.393zm31.697 17.928a6 6 0 106-10.392 6 6 0 00-6 10.392z\"/><text class=\"tc-fill-background\" font-family=\"Helvetica\" font-size=\"47.172\" font-weight=\"bold\" transform=\"rotate(30 25.742 95.82)\"><tspan x=\"42\" y=\"77.485\" text-anchor=\"middle\"><<now \"DD\">></tspan></text></g></svg>"
},
"$:/core/images/opacity": {
"title": "$:/core/images/opacity",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-opacity tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M102.362 65a51.595 51.595 0 01-1.942 6H82.584a35.867 35.867 0 002.997-6h16.78zm.472-2c.423-1.961.734-3.963.929-6H87.656a35.78 35.78 0 01-1.368 6h16.546zm-3.249 10a51.847 51.847 0 01-3.135 6H75.812a36.205 36.205 0 005.432-6h18.341zm-4.416 8c-1.424 2.116-3 4.12-4.71 6H60.46a35.843 35.843 0 0012.874-6h21.834zm-7.513-34h16.107C101.247 20.627 79.033 0 52 0 23.281 0 0 23.281 0 52c0 25.228 17.965 46.26 41.8 51h20.4a51.66 51.66 0 0015.875-6H39v-2h42.25a52.257 52.257 0 007.288-6H39v-2h4.539C27.739 83.194 16 68.968 16 52c0-19.882 16.118-36 36-36 18.186 0 33.222 13.484 35.656 31zm.22 2h16.039a52.823 52.823 0 010 6H87.877a36.483 36.483 0 000-6z\"/><path d=\"M76 128c28.719 0 52-23.281 52-52s-23.281-52-52-52-52 23.281-52 52 23.281 52 52 52zm0-16c19.882 0 36-16.118 36-36S95.882 40 76 40 40 56.118 40 76s16.118 36 36 36z\"/><path d=\"M37 58h53v4H37v-4zm3-8h53v4H40v-4zm0-8h53v4H40v-4zm-8 24h53v4H32v-4zm-2 8h53v4H30v-4zm-3 8h53v4H27v-4z\"/></g></svg>"
},
"$:/core/images/open-window": {
"title": "$:/core/images/open-window",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-open-window tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M16 112h88.994c3.87 0 7.006 3.59 7.006 8 0 4.418-3.142 8-7.006 8H7.006C3.136 128 0 124.41 0 120a9.321 9.321 0 010-.01V24.01C0 19.586 3.59 16 8 16c4.418 0 8 3.584 8 8.01V112z\"/><path d=\"M96 43.196V56a8 8 0 1016 0V24c0-4.41-3.585-8-8.007-8H72.007C67.588 16 64 19.582 64 24c0 4.41 3.585 8 8.007 8H84.57l-36.3 36.299a8 8 0 00-.001 11.316c3.117 3.117 8.19 3.123 11.316-.003L96 43.196zM32 7.999C32 3.581 35.588 0 40 0h80c4.419 0 8 3.588 8 8v80c0 4.419-3.588 8-8 8H40c-4.419 0-8-3.588-8-8V8z\"/></g></svg>"
},
"$:/core/images/options-button": {
"title": "$:/core/images/options-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-options-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M110.488 76a47.712 47.712 0 01-5.134 12.384l6.724 6.724c3.123 3.123 3.132 8.192.011 11.313l-5.668 5.668c-3.12 3.12-8.186 3.117-11.313-.01l-6.724-6.725c-3.82 2.258-7.98 4-12.384 5.134v9.505c0 4.417-3.578 8.007-7.992 8.007h-8.016C55.58 128 52 124.415 52 119.993v-9.505a47.712 47.712 0 01-12.384-5.134l-6.724 6.725c-3.123 3.122-8.192 3.131-11.313.01l-5.668-5.668c-3.12-3.12-3.116-8.186.01-11.313l6.725-6.724c-2.257-3.82-4-7.98-5.134-12.384H8.007C3.591 76 0 72.422 0 68.01v-8.017C0 55.58 3.585 52 8.007 52h9.505a47.712 47.712 0 015.134-12.383l-6.724-6.725c-3.123-3.122-3.132-8.191-.011-11.312l5.668-5.669c3.12-3.12 8.186-3.116 11.313.01l6.724 6.725c3.82-2.257 7.98-4 12.384-5.134V8.007C52 3.591 55.578 0 59.992 0h8.016C72.42 0 76 3.585 76 8.007v9.505a47.712 47.712 0 0112.384 5.134l6.724-6.724c3.123-3.123 8.192-3.132 11.313-.01l5.668 5.668c3.12 3.12 3.116 8.186-.01 11.312l-6.725 6.725c2.257 3.82 4 7.979 5.134 12.383h9.505c4.416 0 8.007 3.578 8.007 7.992v8.017c0 4.411-3.585 7.991-8.007 7.991h-9.505zM64 96c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z\"/></svg>"
},
"$:/core/images/paint": {
"title": "$:/core/images/paint",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-paint tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M83.527 76.19C90.43 69.287 91.892 59 87.91 50.665l37.903-37.902c2.919-2.92 2.913-7.659 0-10.572a7.474 7.474 0 00-10.572 0L77.338 40.093c-8.335-3.982-18.622-2.521-25.526 4.383l31.715 31.715zm-2.643 2.644L49.169 47.119S8.506 81.243 0 80.282c0 0 3.782 5.592 6.827 8.039 14.024-5.69 37.326-24.6 37.326-24.6l.661.66S19.45 90.222 9.18 92.047c1.222 1.44 4.354 4.053 6.247 5.776 5.417-1.488 34.733-28.57 34.733-28.57l.661.66-32.407 31.022 5.285 5.286L56.106 75.2l.662.66s-27.864 30.536-28.684 32.432c0 0 6.032 6.853 7.569 7.824.702-2.836 27.884-33.485 27.884-33.485l.661.66s-20.597 23.755-24.964 36.732c3.21 3.549 7.5 5.137 10.926 6.298-2.19-11.817 30.724-47.487 30.724-47.487z\"/></svg>"
},
"$:/core/images/palette": {
"title": "$:/core/images/palette",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-palette tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M80.247 39.182a93.52 93.52 0 00-16.228-1.4C28.662 37.781 0 57.131 0 81.002c0 9.642 4.676 18.546 12.58 25.735C23.504 91.19 26.34 72.395 36.89 63.562c15.183-12.713 26.538-7.828 26.538-7.828l16.82-16.552zm26.535 9.655c13.049 7.913 21.257 19.392 21.257 32.166 0 9.35.519 17.411-11.874 25.08-10.797 6.681-3.824-6.536-11.844-10.898s-19.946 1.308-18.213 7.906c3.2 12.181 19.422 11.455 6.314 16.658-13.107 5.202-18.202 4.476-28.403 4.476-7.821 0-15.315-.947-22.243-2.68 9.844-4.197 27.88-12.539 33.354-19.456C82.788 92.409 87.37 80 83.324 72.484c-.194-.359 11.215-11.668 23.458-23.647zM1.134 123.867l-.66.002c33.479-14.94 22.161-64.226 58.818-64.226.317 1.418.644 2.944 1.062 4.494-25.907-4.166-23.567 48.031-59.22 59.73zm.713-.007c38.872-.506 78.152-22.347 78.152-44.813-9.27 0-14.073-3.48-16.816-7.942-16.597-7.003-30.365 45.715-61.336 52.755zm65.351-64.008c-4.45 4.115 4.886 16.433 11.318 11.318l45.27-45.27c11.317-11.318 0-22.635-11.318-11.318-11.317 11.318-33.518 34.405-45.27 45.27z\"/></svg>"
},
"$:/core/images/permalink-button": {
"title": "$:/core/images/permalink-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-permalink-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M80.483 48l-7.387 32h-25.58l7.388-32h25.58zm3.694-16l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L100.598 32h3.403c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8h-7.096l-7.387 32H104c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H85.824l-5.624 24.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L69.402 96h-25.58L38.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L27.402 96h-3.403C19.59 96 16 92.418 16 88c0-4.41 3.581-8 8-8h7.096l7.387-32H24C19.59 48 16 44.418 16 40c0-4.41 3.581-8 8-8h18.177l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L58.598 32h25.58z\"/></svg>"
},
"$:/core/images/permaview-button": {
"title": "$:/core/images/permaview-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-permaview-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M81.483 48l-1.846 8h-5.58l1.847-8h5.58zm3.694-16l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L101.598 32h2.403c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8h-6.096l-1.847 8h7.944c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H92.364l-1.846 8H104c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H86.824l-5.624 24.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L70.402 96h-5.58L59.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L48.402 96h-5.58L37.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L26.402 96h-2.403C19.59 96 16 92.418 16 88c0-4.41 3.581-8 8-8h6.096l1.847-8h-7.944C19.59 72 16 68.418 16 64c0-4.41 3.581-8 8-8h11.637l1.846-8H24C19.59 48 16 44.418 16 40c0-4.41 3.581-8 8-8h17.177l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L57.598 32h5.58L68.8 7.642c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L79.598 32h5.58zM53.904 48l-1.847 8h5.58l1.846-8h-5.579zm22.039 24l-1.847 8h-5.58l1.847-8h5.58zm-27.58 0l-1.846 8h5.579l1.847-8h-5.58z\"/></svg>"
},
"$:/core/images/picture": {
"title": "$:/core/images/picture",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-picture tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M112 68.233v-48.23A4.001 4.001 0 00107.997 16H20.003A4.001 4.001 0 0016 20.003v38.31l9.241-14.593c2.8-4.422 9.023-5.008 12.6-1.186l18.247 20.613 13.687-6.407a8 8 0 018.903 1.492 264.97 264.97 0 002.92 2.739 249.44 249.44 0 006.798 6.066 166.5 166.5 0 002.106 1.778c2.108 1.747 3.967 3.188 5.482 4.237.748.518 1.383.92 2.044 1.33.444.117 1.046.144 1.809.05 1.873-.233 4.238-1.144 6.723-2.547a36.016 36.016 0 003.205-2.044c.558-.4.93-.686 1.07-.802.376-.31.765-.577 1.165-.806zM0 8.007A8.01 8.01 0 018.007 0h111.986A8.01 8.01 0 01128 8.007v111.986a8.01 8.01 0 01-8.007 8.007H8.007A8.01 8.01 0 010 119.993V8.007zM95 42a8 8 0 100-16 8 8 0 000 16zM32 76c15.859 4.83 20.035 7.244 20.035 12S32 95.471 32 102.347c0 6.876 1.285 4.99 1.285 9.653H68s-13.685-6.625-13.685-10.8c0-7.665 10.615-8.34 10.615-13.2 0-7.357-14.078-8.833-32.93-12z\"/></svg>"
},
"$:/core/images/plugin-generic-language": {
"title": "$:/core/images/plugin-generic-language",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M61.207 68.137c-4.324 2.795-6.999 6.656-6.999 10.921 0 7.906 9.19 14.424 21.042 15.336 2.162 3.902 8.598 6.785 16.318 7.01-5.126-1.125-9.117-3.742-10.62-7.01C92.805 93.487 102 86.967 102 79.059c0-8.53-10.699-15.445-23.896-15.445-6.599 0-12.572 1.729-16.897 4.524zm12.794-14.158c-4.324 2.795-10.298 4.524-16.897 4.524-2.619 0-5.14-.272-7.497-.775-3.312 2.25-8.383 3.69-14.067 3.69l-.255-.002c4.119-.892 7.511-2.747 9.478-5.13-6.925-2.704-11.555-7.617-11.555-13.228 0-8.53 10.699-15.445 23.896-15.445C70.301 27.613 81 34.528 81 43.058c0 4.265-2.675 8.126-6.999 10.921zM64 0l54.56 32v64L64 128 9.44 96V32L64 0z\"/></svg>"
},
"$:/core/images/plugin-generic-plugin": {
"title": "$:/core/images/plugin-generic-plugin",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M40.397 76.446V95.34h14.12l-.001-.005a6.912 6.912 0 005.364-11.593l.046-.023a6.912 6.912 0 119.979.526l.086.055a6.914 6.914 0 004.408 10.948l-.023.092h21.32V75.568l-.15.038a6.912 6.912 0 00-11.593-5.364l-.022-.046a6.912 6.912 0 11.526-9.979l.055-.086a6.914 6.914 0 0010.948-4.408c.079.018.158.038.236.059v-15.74h-21.32l.023-.094a6.914 6.914 0 01-4.408-10.947 10.23 10.23 0 00-.086-.055 6.912 6.912 0 10-9.979-.526l-.046.023a6.912 6.912 0 01-5.364 11.593l.001.005h-14.12v12.847A6.912 6.912 0 0129.5 59.843l-.054.086a6.912 6.912 0 10-.526 9.979l.023.046a6.912 6.912 0 0111.455 6.492zM64 0l54.56 32v64L64 128 9.44 96V32L64 0z\"/></svg>"
},
"$:/core/images/plugin-generic-theme": {
"title": "$:/core/images/plugin-generic-theme",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M29.408 91.472L51.469 69.41l-.004-.005a2.22 2.22 0 01.004-3.146c.87-.87 2.281-.872 3.147-.005l9.465 9.464a2.22 2.22 0 01-.005 3.147c-.87.87-2.28.871-3.147.005l-.005-.005-22.061 22.062a6.686 6.686 0 11-9.455-9.455zM60.802 66.38c-2.436-2.704-4.465-5.091-5.817-6.869-6.855-9.014-10.313-4.268-14.226 0-3.913 4.268 1.03 7.726-2.683 10.741-3.713 3.015-3.484 4.06-9.752-1.455-6.267-5.516-6.7-7.034-3.823-10.181 2.877-3.147 5.281 1.808 11.159-3.785 5.877-5.593.94-10.55.94-10.55s12.237-25.014 28.588-23.167c16.351 1.848-6.186-2.392-11.792 17.226-2.4 8.4.447 6.42 4.998 9.968 1.394 1.086 6.03 4.401 11.794 8.685l20.677-20.676 1.615-4.766 7.84-4.689 3.151 3.152-4.688 7.84-4.766 1.615-20.224 20.223c12.663 9.547 28.312 22.146 28.312 26.709 0 7.217-3.071 11.526-9.535 9.164-4.693-1.715-18.768-15.192-28.753-25.897l-2.893 2.893-3.151-3.152 3.029-3.029zM63.953 0l54.56 32v64l-54.56 32-54.56-32V32l54.56-32z\"/></svg>"
},
"$:/core/images/preview-closed": {
"title": "$:/core/images/preview-closed",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-preview-closed tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M.088 64a7.144 7.144 0 001.378 5.458C16.246 88.818 39.17 100.414 64 100.414c24.83 0 47.753-11.596 62.534-30.956A7.144 7.144 0 00127.912 64C110.582 78.416 88.304 87.086 64 87.086 39.696 87.086 17.418 78.416.088 64z\"/><rect width=\"4\" height=\"16\" x=\"62\" y=\"96\" rx=\"4\"/><rect width=\"4\" height=\"16\" x=\"78\" y=\"93\" rx=\"4\" transform=\"rotate(-5 80 101)\"/><rect width=\"4\" height=\"16\" x=\"46\" y=\"93\" rx=\"4\" transform=\"rotate(5 48 101)\"/><rect width=\"4\" height=\"16\" x=\"30\" y=\"88\" rx=\"4\" transform=\"rotate(10 32 96)\"/><rect width=\"4\" height=\"16\" x=\"94\" y=\"88\" rx=\"4\" transform=\"rotate(-10 96 96)\"/><rect width=\"4\" height=\"16\" x=\"110\" y=\"80\" rx=\"4\" transform=\"rotate(-20 112 88)\"/><rect width=\"4\" height=\"16\" x=\"14\" y=\"80\" rx=\"4\" transform=\"rotate(20 16 88)\"/></g></svg>"
},
"$:/core/images/preview-open": {
"title": "$:/core/images/preview-open",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-preview-open tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64.11 99.588c-24.83 0-47.754-11.596-62.534-30.957a7.148 7.148 0 010-8.675C16.356 40.596 39.28 29 64.11 29c24.83 0 47.753 11.596 62.534 30.956a7.148 7.148 0 010 8.675c-14.78 19.36-37.703 30.957-62.534 30.957zm46.104-32.007c1.44-1.524 1.44-3.638 0-5.162C99.326 50.9 82.439 44 64.147 44S28.968 50.9 18.08 62.42c-1.44 1.523-1.44 3.637 0 5.16C28.968 79.1 45.855 86 64.147 86s35.179-6.9 46.067-18.42z\"/><path d=\"M63.5 88C76.479 88 87 77.479 87 64.5S76.479 41 63.5 41 40 51.521 40 64.5 50.521 88 63.5 88z\"/></g></svg>"
},
"$:/core/images/print-button": {
"title": "$:/core/images/print-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-print-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M112 71V30.5h-.032c-.035-2-.816-3.99-2.343-5.516L86.998 2.357A7.978 7.978 0 0081 .02V0H24a8 8 0 00-8 8v63h8V8h57v14.5c0 4.422 3.582 8 8 8h15V71h8z\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"36\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"52\" rx=\"4\"/><rect width=\"40\" height=\"8\" x=\"32\" y=\"20\" rx=\"4\"/><path d=\"M0 80.005C0 71.165 7.156 64 16 64h96c8.836 0 16 7.155 16 16.005v31.99c0 8.84-7.156 16.005-16 16.005H16c-8.836 0-16-7.155-16-16.005v-31.99zM104 96a8 8 0 100-16 8 8 0 000 16z\"/></g></svg>"
},
"$:/core/images/quote": {
"title": "$:/core/images/quote",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-quote tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M51.219 117.713V62.199H27.427c0-8.891 1.683-16.401 5.047-22.53 3.365-6.127 9.613-10.754 18.745-13.878V2c-7.45.961-14.36 3.184-20.728 6.669-6.368 3.484-11.835 7.87-16.401 13.157C9.524 27.113 5.98 33.241 3.456 40.21.933 47.18-.21 54.63.03 62.56v55.153H51.22zm76.781 0V62.199h-23.791c0-8.891 1.682-16.401 5.046-22.53 3.365-6.127 9.613-10.754 18.745-13.878V2c-7.45.961-14.359 3.184-20.727 6.669-6.369 3.484-11.836 7.87-16.402 13.157-4.566 5.287-8.11 11.415-10.634 18.384-2.523 6.97-3.665 14.42-3.424 22.35v55.153H128z\"/></svg>"
},
"$:/core/images/refresh-button": {
"title": "$:/core/images/refresh-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-refresh-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M106.369 39.433c10.16 20.879 6.57 46.764-10.771 64.106-21.87 21.87-57.327 21.87-79.196 0-21.87-21.87-21.87-57.326 0-79.196a8 8 0 1111.314 11.314c-15.621 15.62-15.621 40.947 0 56.568 15.62 15.621 40.947 15.621 56.568 0C97.72 78.79 99.6 58.175 89.924 42.73l-6.44 12.264a8 8 0 11-14.166-7.437L84.435 18.76a8 8 0 0110.838-3.345l28.873 15.345a8 8 0 11-7.51 14.129l-10.267-5.457zm-8.222-12.368c-.167-.19-.336-.38-.506-.57l.96-.296-.454.866z\"/></svg>"
},
"$:/core/images/right-arrow": {
"title": "$:/core/images/right-arrow",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-right-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M99.069 64.173c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l50.382-50.382-50.382-50.382a7.92 7.92 0 010-11.195c3.086-3.085 8.104-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.316 5.595z\"/></svg>"
},
"$:/core/images/rotate-left": {
"title": "$:/core/images/rotate-left",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-rotate-left tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"32\" height=\"80\" rx=\"8\"/><rect width=\"80\" height=\"32\" x=\"48\" y=\"96\" rx=\"8\"/><path d=\"M61.32 36.65c19.743 2.45 35.023 19.287 35.023 39.693a4 4 0 01-8 0c0-15.663-11.254-28.698-26.117-31.46l3.916 3.916a4 4 0 11-5.657 5.657L49.172 43.142a4 4 0 010-5.657l11.313-11.313a4 4 0 115.657 5.656l-4.821 4.822z\"/></g></svg>"
},
"$:/core/images/save-button": {
"title": "$:/core/images/save-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-save-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M120.783 34.33c4.641 8.862 7.266 18.948 7.266 29.646 0 35.347-28.653 64-64 64-35.346 0-64-28.653-64-64 0-35.346 28.654-64 64-64 18.808 0 35.72 8.113 47.43 21.03l2.68-2.68c3.13-3.13 8.197-3.132 11.321-.008 3.118 3.118 3.121 8.193-.007 11.32l-4.69 4.691zm-12.058 12.058a47.876 47.876 0 013.324 17.588c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48c14.39 0 27.3 6.332 36.098 16.362L58.941 73.544 41.976 56.578c-3.127-3.127-8.201-3.123-11.32-.005-3.123 3.124-3.119 8.194.006 11.319l22.617 22.617a7.992 7.992 0 005.659 2.347c2.05 0 4.101-.783 5.667-2.349l44.12-44.12z\"/></svg>"
},
"$:/core/images/size": {
"title": "$:/core/images/size",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-size tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M92.343 26l-9.171 9.172a4 4 0 105.656 5.656l16-16a4 4 0 000-5.656l-16-16a4 4 0 10-5.656 5.656L92.343 18H22a4 4 0 00-4 4v70.343l-9.172-9.171a4 4 0 10-5.656 5.656l16 16a4 4 0 005.656 0l16-16a4 4 0 10-5.656-5.656L26 92.343V22l-4 4h70.343zM112 52v64l4-4H52a4 4 0 100 8h64a4 4 0 004-4V52a4 4 0 10-8 0z\"/></svg>"
},
"$:/core/images/spiral": {
"title": "$:/core/images/spiral",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-spiral tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M64.534 68.348c3.39 0 6.097-2.62 6.476-5.968l-4.755-.538 4.75.583c.377-3.07-1.194-6.054-3.89-7.78-2.757-1.773-6.34-2.01-9.566-.7-3.46 1.403-6.14 4.392-7.35 8.148l-.01.026c-1.3 4.08-.72 8.64 1.58 12.52 2.5 4.2 6.77 7.2 11.76 8.27 5.37 1.15 11.11-.05 15.83-3.31 5.04-3.51 8.46-9.02 9.45-15.3 1.05-6.7-.72-13.63-4.92-19.19l.02.02c-4.42-5.93-11.2-9.82-18.78-10.78-7.96-1.01-16.13 1.31-22.59 6.43-6.81 5.39-11.18 13.41-12.11 22.26-.98 9.27 1.87 18.65 7.93 26.02 6.32 7.69 15.6 12.56 25.74 13.48 10.54.96 21.15-2.42 29.45-9.4l.01-.01c8.58-7.25 13.94-17.78 14.86-29.21.94-11.84-2.96-23.69-10.86-32.9-8.19-9.5-19.95-15.36-32.69-16.27-13.16-.94-26.24 3.49-36.34 12.34l.01-.01c-10.41 9.08-16.78 22.1-17.68 36.15-.93 14.44 4.03 28.77 13.79 39.78 10.03 11.32 24.28 18.2 39.6 19.09 15.73.92 31.31-4.56 43.24-15.234 12.23-10.954 19.61-26.44 20.5-43.074a4.785 4.785 0 00-4.52-5.03 4.778 4.778 0 00-5.03 4.52c-.75 14.1-7 27.2-17.33 36.45-10.03 8.98-23.11 13.58-36.3 12.81-12.79-.75-24.67-6.48-33-15.89-8.07-9.11-12.17-20.94-11.41-32.827.74-11.52 5.942-22.15 14.43-29.54l.01-.01c8.18-7.17 18.74-10.75 29.35-9.998 10.21.726 19.6 5.41 26.11 12.96 6.24 7.273 9.32 16.61 8.573 25.894-.718 8.9-4.88 17.064-11.504 22.66l.01-.007c-6.36 5.342-14.44 7.92-22.425 7.19-7.604-.68-14.52-4.314-19.21-10.027-4.44-5.4-6.517-12.23-5.806-18.94.67-6.3 3.76-11.977 8.54-15.766 4.46-3.54 10.05-5.128 15.44-4.44 5.03.63 9.46 3.18 12.32 7.01l.02.024c2.65 3.5 3.75 7.814 3.1 11.92-.59 3.71-2.58 6.925-5.45 8.924-2.56 1.767-5.61 2.403-8.38 1.81-2.42-.516-4.42-1.92-5.53-3.79-.93-1.56-1.15-3.3-.69-4.75l-4.56-1.446L59.325 65c.36-1.12 1.068-1.905 1.84-2.22.25-.103.48-.14.668-.13.06.006.11.015.14.025.01 0 .01 0-.01-.01a1.047 1.047 0 01-.264-.332c-.15-.29-.23-.678-.18-1.11l-.005.04c.15-1.332 1.38-2.523 3.035-2.523-2.65 0-4.79 2.144-4.79 4.787s2.14 4.785 4.78 4.785z\"/></svg>"
},
"$:/core/images/stamp": {
"title": "$:/core/images/stamp",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-stamp tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M49.733 64H16.01C11.584 64 8 67.583 8 72.003V97h112V72.003A8 8 0 00111.99 64H78.267A22.813 22.813 0 0175.5 53.077c0-6.475 2.687-12.324 7.009-16.497A22.818 22.818 0 0087 22.952C87 10.276 76.703 0 64 0S41 10.276 41 22.952c0 5.103 1.669 9.817 4.491 13.628 4.322 4.173 7.009 10.022 7.009 16.497 0 3.954-1.002 7.675-2.767 10.923zM8 104h112v8H8v-8z\"/></svg>"
},
"$:/core/images/star-filled": {
"title": "$:/core/images/star-filled",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-star-filled tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M61.836 96.823l37.327 27.287c2.72 1.99 6.379-.69 5.343-3.912L90.29 75.988l-1.26 3.91 37.285-27.345c2.718-1.993 1.32-6.327-2.041-6.33l-46.113-.036 3.3 2.416L67.176 4.416c-1.04-3.221-5.563-3.221-6.604 0L46.29 48.603l3.3-2.416-46.113.036c-3.362.003-4.759 4.337-2.04 6.33L38.72 79.898l-1.26-3.91-14.216 44.21c-1.036 3.223 2.622 5.901 5.343 3.912l37.326-27.287h-4.078z\"/></svg>"
},
"$:/core/images/storyview-classic": {
"title": "$:/core/images/storyview-classic",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-classic tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16C19.581 16 16 19.578 16 23.992v16.016C16 44.422 19.588 48 24 48h80c4.419 0 8-3.578 8-7.992V23.992c0-4.414-3.588-7.992-8-7.992H24zm0 48C19.581 64 16 67.59 16 72c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24zm0 32C19.581 96 16 99.59 16 104c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24z\"/></svg>"
},
"$:/core/images/storyview-pop": {
"title": "$:/core/images/storyview-pop",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-pop tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16C19.581 16 16 19.578 16 23.992v16.016C16 44.422 19.588 48 24 48h80c4.419 0 8-3.578 8-7.992V23.992c0-4.414-3.588-7.992-8-7.992H24zm-7.99 40C11.587 56 8 59.578 8 63.992v16.016C8 84.422 11.584 88 16.01 88h95.98c4.424 0 8.01-3.578 8.01-7.992V63.992c0-4.414-3.584-7.992-8.01-7.992H16.01zM24 96C19.581 96 16 99.59 16 104c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24zm0-32C19.581 64 16 67.59 16 72c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24z\"/></svg>"
},
"$:/core/images/storyview-zoomin": {
"title": "$:/core/images/storyview-zoomin",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-zoomin tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16A8 8 0 0016 24.009V71.99C16 76.414 19.588 80 24 80h80a8 8 0 008-8.009V24.01c0-4.423-3.588-8.009-8-8.009H24z\"/></svg>"
},
"$:/core/images/strikethrough": {
"title": "$:/core/images/strikethrough",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-strikethrough tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M92.794 38.726h15.422c-.229-6.74-1.514-12.538-3.856-17.393-2.342-4.855-5.54-8.881-9.596-12.08-4.055-3.199-8.767-5.54-14.136-7.025C75.258.743 69.433 0 63.15 0a62.76 62.76 0 00-16.364 2.142C41.474 3.57 36.733 5.74 32.564 8.653c-4.17 2.913-7.511 6.626-10.025 11.138-2.513 4.512-3.77 9.853-3.77 16.022 0 5.597 1.115 10.252 3.342 13.965 2.228 3.712 5.198 6.74 8.91 9.081 3.713 2.342 7.911 4.227 12.595 5.655a194.641 194.641 0 0014.308 3.77c4.855 1.085 9.624 2.142 14.308 3.17 4.683 1.028 8.881 2.37 12.594 4.027 3.713 1.656 6.683 3.798 8.91 6.425 2.228 2.628 3.342 6.055 3.342 10.281 0 4.456-.914 8.111-2.742 10.967a19.953 19.953 0 01-7.197 6.768c-2.97 1.657-6.311 2.828-10.024 3.513a60.771 60.771 0 01-11.052 1.028c-4.57 0-9.025-.571-13.366-1.713-4.34-1.143-8.139-2.913-11.394-5.312-3.256-2.4-5.884-5.455-7.883-9.168-1.999-3.712-2.998-8.139-2.998-13.28H15c0 7.426 1.342 13.852 4.027 19.278 2.684 5.426 6.34 9.881 10.966 13.365 4.627 3.484 9.996 6.083 16.107 7.797 6.112 1.713 12.595 2.57 19.449 2.57 5.597 0 11.223-.657 16.878-1.97 5.655-1.314 10.767-3.428 15.336-6.34 4.57-2.914 8.31-6.683 11.224-11.31 2.913-4.626 4.37-10.195 4.37-16.707 0-6.054-1.115-11.08-3.342-15.079-2.228-3.998-5.198-7.31-8.91-9.938-3.713-2.627-7.911-4.712-12.595-6.254a170.83 170.83 0 00-14.308-4.027 549.669 549.669 0 00-14.308-3.17c-4.683-.971-8.881-2.2-12.594-3.684-3.713-1.485-6.683-3.399-8.91-5.74-2.228-2.342-3.342-5.398-3.342-9.168 0-3.998.771-7.34 2.313-10.024 1.543-2.685 3.599-4.826 6.17-6.426 2.57-1.599 5.51-2.741 8.824-3.427a49.767 49.767 0 0110.11-1.028c8.453 0 15.393 1.97 20.819 5.912 5.426 3.94 8.596 10.31 9.51 19.106z\"/><path d=\"M5 54h118v16H5z\"/></g></svg>"
},
"$:/core/images/subscript": {
"title": "$:/core/images/subscript",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-subscript tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M2.272 16h19.91l21.649 33.675L66.414 16h18.708L53.585 61.969l33.809 49.443H67.082L43.296 74.93l-24.187 36.48H0L33.808 61.97 2.272 16zM127.91 128.412H85.328c.059-5.168 1.306-9.681 3.741-13.542 2.435-3.86 5.761-7.216 9.978-10.066a112.388 112.388 0 016.325-4.321 50.09 50.09 0 006.058-4.499c1.841-1.603 3.356-3.34 4.543-5.211 1.188-1.871 1.812-4.024 1.871-6.46 0-1.128-.133-2.33-.4-3.607a9.545 9.545 0 00-1.56-3.564c-.772-1.098-1.84-2.019-3.207-2.761-1.366-.743-3.148-1.114-5.345-1.114-2.02 0-3.697.4-5.033 1.203-1.337.801-2.406 1.9-3.208 3.296-.801 1.396-1.395 3.044-1.781 4.944-.386 1.9-.609 3.95-.668 6.147H86.486c0-3.445.46-6.637 1.38-9.577.921-2.94 2.302-5.478 4.143-7.617 1.841-2.138 4.083-3.815 6.726-5.033 2.643-1.217 5.716-1.826 9.22-1.826 3.802 0 6.979.623 9.533 1.87 2.554 1.248 4.617 2.822 6.191 4.722 1.574 1.9 2.688 3.965 3.341 6.192.653 2.227.98 4.35.98 6.37 0 2.494-.386 4.75-1.158 6.77a21.803 21.803 0 01-3.118 5.568 31.516 31.516 0 01-4.454 4.677 66.788 66.788 0 01-5.167 4.009 139.198 139.198 0 01-5.346 3.563 79.237 79.237 0 00-4.944 3.386c-1.514 1.128-2.836 2.3-3.964 3.518-1.129 1.218-1.9 2.51-2.317 3.876h30.379v9.087z\"/></svg>"
},
"$:/core/images/superscript": {
"title": "$:/core/images/superscript",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-superscript tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M2.272 16h19.91l21.649 33.675L66.414 16h18.708L53.585 61.969l33.809 49.443H67.082L43.296 74.93l-24.187 36.48H0L33.808 61.97 2.272 16zM127.91 63.412H85.328c.059-5.168 1.306-9.681 3.741-13.542 2.435-3.86 5.761-7.216 9.978-10.066a112.388 112.388 0 016.325-4.321 50.09 50.09 0 006.058-4.499c1.841-1.603 3.356-3.34 4.543-5.211 1.188-1.871 1.812-4.024 1.871-6.46 0-1.128-.133-2.33-.4-3.607a9.545 9.545 0 00-1.56-3.564c-.772-1.098-1.84-2.019-3.207-2.761-1.366-.743-3.148-1.114-5.345-1.114-2.02 0-3.697.4-5.033 1.203-1.337.801-2.406 1.9-3.208 3.296-.801 1.396-1.395 3.044-1.781 4.944-.386 1.9-.609 3.95-.668 6.147H86.486c0-3.445.46-6.637 1.38-9.577.921-2.94 2.302-5.478 4.143-7.617 1.841-2.138 4.083-3.815 6.726-5.033 2.643-1.217 5.716-1.826 9.22-1.826 3.802 0 6.979.623 9.533 1.87 2.554 1.248 4.617 2.822 6.191 4.722 1.574 1.9 2.688 3.965 3.341 6.192.653 2.227.98 4.35.98 6.37 0 2.494-.386 4.75-1.158 6.77a21.803 21.803 0 01-3.118 5.568 31.516 31.516 0 01-4.454 4.677 66.788 66.788 0 01-5.167 4.009 139.198 139.198 0 01-5.346 3.563 79.237 79.237 0 00-4.944 3.386c-1.514 1.128-2.836 2.3-3.964 3.518-1.129 1.218-1.9 2.51-2.317 3.876h30.379v9.087z\"/></svg>"
},
"$:/core/images/tag-button": {
"title": "$:/core/images/tag-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-tag-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M18.164 47.66l.004 4.105c.003 3.823 2.19 9.097 4.885 11.792l61.85 61.85c2.697 2.697 7.068 2.69 9.769-.01L125.767 94.3a6.903 6.903 0 00.01-9.77L63.928 22.683c-2.697-2.697-7.976-4.88-11.796-4.881l-27.076-.007a6.902 6.902 0 00-6.91 6.91l.008 9.96.287.033c3.73.411 8.489-.044 13.365-1.153a9.702 9.702 0 0111.14-3.662l.291-.13.128.285a9.7 9.7 0 013.3 2.17c3.796 3.796 3.801 9.945.012 13.734-3.618 3.618-9.386 3.777-13.204.482-5.365 1.122-10.674 1.596-15.309 1.237z\"/><path d=\"M47.633 39.532l.023.051c-9.689 4.356-21.584 6.799-30.396 5.828C5.273 44.089-1.028 36.43 2.443 24.078 5.562 12.976 14.3 4.361 24.047 1.548c10.68-3.083 19.749 1.968 19.749 13.225h-8.623c0-4.859-3.078-6.573-8.735-4.94-6.91 1.995-13.392 8.383-15.694 16.577-1.915 6.818.417 9.653 7.46 10.43 7.126.785 17.531-1.352 25.917-5.121l.027.06.036-.017c1.76-.758 6.266 6.549 3.524 7.74a2.8 2.8 0 01-.075.03z\"/></g></svg>"
},
"$:/core/images/theme-button": {
"title": "$:/core/images/theme-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-theme-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.854 66.945a122.626 122.626 0 01-3.9-4.819c-11.064-14.548-16.645-6.888-22.96 0-6.315 6.888 1.664 12.47-4.33 17.335-5.993 4.866-5.623 6.552-15.737-2.35-10.115-8.9-10.815-11.351-6.172-16.43 4.644-5.08 8.524 2.918 18.01-6.108 9.485-9.026 1.517-17.026 1.517-17.026S42.03-2.824 68.42.157c26.39 2.982-9.984-3.86-19.031 27.801-3.874 13.556.72 10.362 8.066 16.087 1.707 1.33 6.428 4.732 12.671 9.318-6.129 5.879-11.157 10.669-14.273 13.582zm11.641 12.947c16.013 17.036 37.742 37.726 45.117 40.42 10.432 3.813 15.388-3.141 15.388-14.79 0-7.151-23.83-26.542-43.924-41.769-7.408 7.156-13.376 12.953-16.58 16.139z\"/><path d=\"M11.069 109.828L46.31 74.587a3.56 3.56 0 115.037-5.032l15.098 15.098a3.56 3.56 0 11-5.032 5.037l-35.24 35.241c-4.171 4.17-10.933 4.17-15.104 0-4.17-4.17-4.17-10.933 0-15.103zM124.344 6.622l5.034 5.034-7.49 12.524-7.613 2.58L61.413 79.62l-5.034-5.034 52.861-52.862 2.58-7.614 12.524-7.49z\"/></g></svg>"
},
"$:/core/images/timestamp-off": {
"title": "$:/core/images/timestamp-off",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-timestamp-off tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10a5 5 0 010-10H66.69a5 5 0 015 5c.006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M58.25 35.88c-18.777 0-33.998 15.224-33.998 33.998 0 18.773 15.22 34.002 33.998 34.002 18.784 0 34.002-15.23 34.002-34.002 0-18.774-15.218-33.998-34.002-33.998zm-3.03 50.123H44.196v-34H55.22v34zm16.976 0H61.17v-34h11.025v34z\"/></g></svg>"
},
"$:/core/images/timestamp-on": {
"title": "$:/core/images/timestamp-on",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-timestamp-on tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10a5 5 0 010-10H66.69a5 5 0 015 5c.006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M13.41 27.178a5.005 5.005 0 01-7.045-.613 5.008 5.008 0 01.616-7.047l9.95-8.348a5 5 0 016.429 7.661l-9.95 8.348zm89.573 0a5.005 5.005 0 007.045-.613 5.008 5.008 0 00-.616-7.047l-9.95-8.348a5 5 0 00-6.428 7.661l9.95 8.348zM65.097 71.072c0 3.826-3.09 6.928-6.897 6.928-3.804.006-6.9-3.102-6.903-6.928 0 0 4.76-39.072 6.903-39.072s6.897 39.072 6.897 39.072z\"/></g></svg>"
},
"$:/core/images/tip": {
"title": "$:/core/images/tip",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-tip tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 128.242c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64 0 35.346 28.654 64 64 64zm11.936-36.789c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349C54.33 94.05 58.824 95.82 64 95.82c5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.456c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zM64.3 24.242c11.618 0 23.699 7.82 23.699 24.2S75.92 71.754 75.92 83.576c0 5.873-5.868 9.26-11.92 9.26s-12.027-3.006-12.027-9.26C51.973 71.147 40 65.47 40 48.442s12.683-24.2 24.301-24.2z\"/></svg>"
},
"$:/core/images/transcludify": {
"title": "$:/core/images/transcludify",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-transcludify-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M0 59.482c.591 0 1.36-.089 2.306-.266a10.417 10.417 0 002.75-.932 6.762 6.762 0 002.306-1.907c.651-.828.976-1.863.976-3.104V35.709c0-2.01.414-3.74 1.242-5.19.828-1.448 1.833-2.66 3.016-3.636s2.425-1.7 3.726-2.173c1.3-.473 2.424-.71 3.37-.71h8.073v7.451h-4.88c-1.241 0-2.232.207-2.97.621-.74.414-1.302.932-1.686 1.552a4.909 4.909 0 00-.71 1.996c-.089.71-.133 1.39-.133 2.04v16.677c0 1.715-.325 3.134-.976 4.258-.65 1.123-1.434 2.025-2.35 2.705-.917.68-1.863 1.168-2.839 1.464-.976.296-1.818.473-2.528.532v.178c.71.059 1.552.207 2.528.443.976.237 1.922.68 2.839 1.33.916.651 1.7 1.583 2.35 2.795.65 1.212.976 2.853.976 4.923v16.144c0 .65.044 1.33.133 2.04.089.71.325 1.375.71 1.996.384.621.946 1.139 1.685 1.553.74.414 1.73.62 2.972.62h4.879v7.452h-8.073c-.946 0-2.07-.237-3.37-.71-1.301-.473-2.543-1.197-3.726-2.173-1.183-.976-2.188-2.188-3.016-3.637-.828-1.449-1.242-3.179-1.242-5.19V74.119c0-1.42-.325-2.572-.976-3.46-.65-.886-1.419-1.581-2.306-2.084a8.868 8.868 0 00-2.75-1.02C1.36 67.377.591 67.288 0 67.288v-7.806zm24.66 0c.591 0 1.36-.089 2.306-.266a10.417 10.417 0 002.75-.932 6.762 6.762 0 002.306-1.907c.65-.828.976-1.863.976-3.104V35.709c0-2.01.414-3.74 1.242-5.19.828-1.448 1.833-2.66 3.016-3.636s2.425-1.7 3.726-2.173c1.3-.473 2.424-.71 3.37-.71h8.073v7.451h-4.88c-1.241 0-2.232.207-2.97.621-.74.414-1.302.932-1.686 1.552a4.909 4.909 0 00-.71 1.996c-.089.71-.133 1.39-.133 2.04v16.677c0 1.715-.325 3.134-.976 4.258-.65 1.123-1.434 2.025-2.35 2.705-.917.68-1.863 1.168-2.839 1.464-.976.296-1.818.473-2.528.532v.178c.71.059 1.552.207 2.528.443.976.237 1.922.68 2.839 1.33.916.651 1.7 1.583 2.35 2.795.65 1.212.976 2.853.976 4.923v16.144c0 .65.044 1.33.133 2.04.089.71.325 1.375.71 1.996.384.621.946 1.139 1.685 1.553.74.414 1.73.62 2.972.62h4.879v7.452h-8.073c-.946 0-2.07-.237-3.37-.71-1.301-.473-2.543-1.197-3.726-2.173-1.183-.976-2.188-2.188-3.016-3.637-.828-1.449-1.242-3.179-1.242-5.19V74.119c0-1.42-.325-2.572-.976-3.46-.65-.886-1.419-1.581-2.306-2.084a8.868 8.868 0 00-2.75-1.02c-.946-.177-1.715-.266-2.306-.266v-7.806zm43.965-3.538L80.6 52.041l2.306 7.097-12.063 3.903 7.628 10.378-6.12 4.435-7.63-10.467-7.45 10.201-5.943-4.524 7.628-10.023-12.152-4.17 2.306-7.096 12.064 4.17V43.347h7.451v12.596zm34.425 11.344c-.65 0-1.449.089-2.395.266-.946.177-1.863.488-2.75.931a6.356 6.356 0 00-2.262 1.908c-.62.828-.931 1.862-.931 3.104v17.564c0 2.01-.414 3.74-1.242 5.189-.828 1.449-1.833 2.661-3.016 3.637s-2.425 1.7-3.726 2.173c-1.3.473-2.424.71-3.37.71h-8.073v-7.451h4.88c1.241 0 2.232-.207 2.97-.621.74-.414 1.302-.932 1.686-1.553a4.9 4.9 0 00.71-1.995c.089-.71.133-1.39.133-2.04V72.432c0-1.715.325-3.134.976-4.258.65-1.124 1.434-2.01 2.35-2.661.917-.65 1.863-1.124 2.839-1.42.976-.295 1.818-.502 2.528-.62v-.178c-.71-.059-1.552-.207-2.528-.443-.976-.237-1.922-.68-2.839-1.33-.916-.651-1.7-1.583-2.35-2.795-.65-1.212-.976-2.853-.976-4.923V37.66c0-.651-.044-1.331-.133-2.04a4.909 4.909 0 00-.71-1.997c-.384-.62-.946-1.138-1.685-1.552-.74-.414-1.73-.62-2.972-.62h-4.879V24h8.073c.946 0 2.07.237 3.37.71 1.301.473 2.543 1.197 3.726 2.173 1.183.976 2.188 2.188 3.016 3.637.828 1.449 1.242 3.178 1.242 5.189v16.943c0 1.419.31 2.572.931 3.46a6.897 6.897 0 002.262 2.084 8.868 8.868 0 002.75 1.02c.946.177 1.745.266 2.395.266v7.806zm24.66 0c-.65 0-1.449.089-2.395.266-.946.177-1.863.488-2.75.931a6.356 6.356 0 00-2.262 1.908c-.62.828-.931 1.862-.931 3.104v17.564c0 2.01-.414 3.74-1.242 5.189-.828 1.449-1.833 2.661-3.016 3.637s-2.425 1.7-3.726 2.173c-1.3.473-2.424.71-3.37.71h-8.073v-7.451h4.88c1.241 0 2.232-.207 2.97-.621.74-.414 1.302-.932 1.686-1.553a4.9 4.9 0 00.71-1.995c.089-.71.133-1.39.133-2.04V72.432c0-1.715.325-3.134.976-4.258.65-1.124 1.434-2.01 2.35-2.661.917-.65 1.863-1.124 2.839-1.42.976-.295 1.818-.502 2.528-.62v-.178c-.71-.059-1.552-.207-2.528-.443-.976-.237-1.922-.68-2.839-1.33-.916-.651-1.7-1.583-2.35-2.795-.65-1.212-.976-2.853-.976-4.923V37.66c0-.651-.044-1.331-.133-2.04a4.909 4.909 0 00-.71-1.997c-.384-.62-.946-1.138-1.685-1.552-.74-.414-1.73-.62-2.972-.62h-4.879V24h8.073c.946 0 2.07.237 3.37.71 1.301.473 2.543 1.197 3.726 2.173 1.183.976 2.188 2.188 3.016 3.637.828 1.449 1.242 3.178 1.242 5.189v16.943c0 1.419.31 2.572.931 3.46a6.897 6.897 0 002.262 2.084 8.868 8.868 0 002.75 1.02c.946.177 1.745.266 2.395.266v7.806z\"/></svg>"
},
"$:/core/images/twitter": {
"title": "$:/core/images/twitter",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-twitter tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M41.626 115.803A73.376 73.376 0 012 104.235c2.022.238 4.08.36 6.166.36 12.111 0 23.258-4.117 32.105-11.023-11.312-.208-20.859-7.653-24.148-17.883a25.98 25.98 0 0011.674-.441C15.971 72.881 7.061 62.474 7.061 49.997c0-.108 0-.216.002-.323a25.824 25.824 0 0011.709 3.22c-6.936-4.617-11.5-12.5-11.5-21.433 0-4.719 1.274-9.142 3.5-12.945 12.75 15.579 31.797 25.83 53.281 26.904-.44-1.884-.67-3.85-.67-5.868 0-14.22 11.575-25.75 25.852-25.75a25.865 25.865 0 0118.869 8.132 51.892 51.892 0 0016.415-6.248c-1.93 6.012-6.029 11.059-11.366 14.246A51.844 51.844 0 00128 25.878a52.428 52.428 0 01-12.9 13.33c.05 1.104.075 2.214.075 3.33 0 34.028-26 73.265-73.549 73.265\"/></svg>"
},
"$:/core/images/underline": {
"title": "$:/core/images/underline",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-underline tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M7 117.421h114.248V128H7v-10.579zm97.871-18.525V0h-16.26v55.856c0 4.463-.605 8.576-1.816 12.338-1.212 3.762-3.03 7.046-5.452 9.851-2.423 2.806-5.452 4.974-9.086 6.504-3.635 1.53-7.939 2.296-12.912 2.296-6.25 0-11.159-1.786-14.73-5.356-3.57-3.571-5.356-8.417-5.356-14.538V0H23v65.038c0 5.356.542 10.234 1.626 14.633 1.084 4.4 2.965 8.194 5.643 11.382 2.678 3.188 6.185 5.643 10.52 7.365 4.337 1.721 9.756 2.582 16.26 2.582 7.27 0 13.582-1.435 18.938-4.304 5.356-2.87 9.755-7.365 13.199-13.486h.382v15.686h15.303z\"/></svg>"
},
"$:/core/images/unfold-all-button": {
"title": "$:/core/images/unfold-all-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unfold-all tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"64\" rx=\"8\"/><path d=\"M63.945 60.624c-2.05 0-4.101-.78-5.666-2.345L35.662 35.662c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L63.94 41.314l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.603 58.279a7.986 7.986 0 01-5.663 2.346zM64.004 124.565c-2.05 0-4.102-.78-5.666-2.345L35.721 99.603c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.191-3.122 11.318.005L64 105.255l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.662 122.22a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
},
"$:/core/images/unfold-button": {
"title": "$:/core/images/unfold-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unfold tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><path d=\"M63.945 63.624c-2.05 0-4.101-.78-5.666-2.345L35.662 38.662c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L63.94 44.314l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.603 61.279a7.986 7.986 0 01-5.663 2.346zM64.004 105.682c-2.05.001-4.102-.78-5.666-2.344L35.721 80.721c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.191-3.122 11.318.005L64 86.373l16.966-16.966c3.124-3.125 8.194-3.13 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319l-22.617 22.617a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
},
"$:/core/images/unlocked-padlock": {
"title": "$:/core/images/unlocked-padlock",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unlocked-padlock tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M48.627 64H105v32.01C105 113.674 90.674 128 73.001 128H56C38.318 128 24 113.677 24 96.01V64h6.136c-10.455-12.651-27.364-35.788-4.3-55.142 24.636-20.672 45.835 4.353 55.777 16.201 9.943 11.85-2.676 22.437-12.457 9.892-9.78-12.545-21.167-24.146-33.207-14.043-12.041 10.104-1.757 22.36 8.813 34.958 2.467 2.94 3.641 5.732 3.865 8.134zm19.105 28.364A8.503 8.503 0 0064.5 76a8.5 8.5 0 00-3.498 16.25l-5.095 22.77H72.8l-5.07-22.656z\"/></svg>"
},
"$:/core/images/up-arrow": {
"title": "$:/core/images/up-arrow",
"created": "20150316000544368",
"modified": "20150316000831867",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-up-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M63.892.281c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.104 3.092-11.196 0L63.894 19.393 13.513 69.774a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l55.98-55.98A7.892 7.892 0 0163.893.28z\"/></svg>"
},
"$:/core/images/video": {
"title": "$:/core/images/video",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-video tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 12c-34.91 0-55.273 2.917-58.182 5.833C2.91 20.75 0 41.167 0 64.5c0 23.333 2.91 43.75 5.818 46.667C8.728 114.083 29.091 117 64 117c34.91 0 55.273-2.917 58.182-5.833C125.09 108.25 128 87.833 128 64.5c0-23.333-2.91-43.75-5.818-46.667C119.272 14.917 98.909 12 64 12zm-9.084 32.618c-3.813-2.542-6.905-.879-6.905 3.698v31.368c0 4.585 3.099 6.235 6.905 3.698l22.168-14.779c3.813-2.542 3.806-6.669 0-9.206L54.916 44.618z\"/></svg>"
},
"$:/core/images/warning": {
"title": "$:/core/images/warning",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-warning tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M57.072 11c3.079-5.333 10.777-5.333 13.856 0l55.426 96c3.079 5.333-.77 12-6.928 12H8.574c-6.158 0-10.007-6.667-6.928-12l55.426-96zM64 37c-4.418 0-8 3.582-8 7.994v28.012C56 77.421 59.59 81 64 81c4.418 0 8-3.582 8-7.994V44.994C72 40.579 68.41 37 64 37zm0 67a8 8 0 100-16 8 8 0 000 16z\"/></svg>"
},
"$:/language/Buttons/AdvancedSearch/Caption": {
"title": "$:/language/Buttons/AdvancedSearch/Caption",
"text": "advanced search"
},
"$:/language/Buttons/AdvancedSearch/Hint": {
"title": "$:/language/Buttons/AdvancedSearch/Hint",
"text": "Advanced search"
},
"$:/language/Buttons/Cancel/Caption": {
"title": "$:/language/Buttons/Cancel/Caption",
"text": "cancel"
},
"$:/language/Buttons/Cancel/Hint": {
"title": "$:/language/Buttons/Cancel/Hint",
"text": "Discard changes to this tiddler"
},
"$:/language/Buttons/Clone/Caption": {
"title": "$:/language/Buttons/Clone/Caption",
"text": "clone"
},
"$:/language/Buttons/Clone/Hint": {
"title": "$:/language/Buttons/Clone/Hint",
"text": "Clone this tiddler"
},
"$:/language/Buttons/Close/Caption": {
"title": "$:/language/Buttons/Close/Caption",
"text": "close"
},
"$:/language/Buttons/Close/Hint": {
"title": "$:/language/Buttons/Close/Hint",
"text": "Close this tiddler"
},
"$:/language/Buttons/CloseAll/Caption": {
"title": "$:/language/Buttons/CloseAll/Caption",
"text": "close all"
},
"$:/language/Buttons/CloseAll/Hint": {
"title": "$:/language/Buttons/CloseAll/Hint",
"text": "Close all tiddlers"
},
"$:/language/Buttons/CloseOthers/Caption": {
"title": "$:/language/Buttons/CloseOthers/Caption",
"text": "close others"
},
"$:/language/Buttons/CloseOthers/Hint": {
"title": "$:/language/Buttons/CloseOthers/Hint",
"text": "Close other tiddlers"
},
"$:/language/Buttons/ControlPanel/Caption": {
"title": "$:/language/Buttons/ControlPanel/Caption",
"text": "control panel"
},
"$:/language/Buttons/ControlPanel/Hint": {
"title": "$:/language/Buttons/ControlPanel/Hint",
"text": "Open control panel"
},
"$:/language/Buttons/CopyToClipboard/Caption": {
"title": "$:/language/Buttons/CopyToClipboard/Caption",
"text": "copy to clipboard"
},
"$:/language/Buttons/CopyToClipboard/Hint": {
"title": "$:/language/Buttons/CopyToClipboard/Hint",
"text": "Copy this text to the clipboard"
},
"$:/language/Buttons/Delete/Caption": {
"title": "$:/language/Buttons/Delete/Caption",
"text": "delete"
},
"$:/language/Buttons/Delete/Hint": {
"title": "$:/language/Buttons/Delete/Hint",
"text": "Delete this tiddler"
},
"$:/language/Buttons/Edit/Caption": {
"title": "$:/language/Buttons/Edit/Caption",
"text": "edit"
},
"$:/language/Buttons/Edit/Hint": {
"title": "$:/language/Buttons/Edit/Hint",
"text": "Edit this tiddler"
},
"$:/language/Buttons/Encryption/Caption": {
"title": "$:/language/Buttons/Encryption/Caption",
"text": "encryption"
},
"$:/language/Buttons/Encryption/Hint": {
"title": "$:/language/Buttons/Encryption/Hint",
"text": "Set or clear a password for saving this wiki"
},
"$:/language/Buttons/Encryption/ClearPassword/Caption": {
"title": "$:/language/Buttons/Encryption/ClearPassword/Caption",
"text": "clear password"
},
"$:/language/Buttons/Encryption/ClearPassword/Hint": {
"title": "$:/language/Buttons/Encryption/ClearPassword/Hint",
"text": "Clear the password and save this wiki without encryption"
},
"$:/language/Buttons/Encryption/SetPassword/Caption": {
"title": "$:/language/Buttons/Encryption/SetPassword/Caption",
"text": "set password"
},
"$:/language/Buttons/Encryption/SetPassword/Hint": {
"title": "$:/language/Buttons/Encryption/SetPassword/Hint",
"text": "Set a password for saving this wiki with encryption"
},
"$:/language/Buttons/ExportPage/Caption": {
"title": "$:/language/Buttons/ExportPage/Caption",
"text": "export all"
},
"$:/language/Buttons/ExportPage/Hint": {
"title": "$:/language/Buttons/ExportPage/Hint",
"text": "Export all tiddlers"
},
"$:/language/Buttons/ExportTiddler/Caption": {
"title": "$:/language/Buttons/ExportTiddler/Caption",
"text": "export tiddler"
},
"$:/language/Buttons/ExportTiddler/Hint": {
"title": "$:/language/Buttons/ExportTiddler/Hint",
"text": "Export tiddler"
},
"$:/language/Buttons/ExportTiddlers/Caption": {
"title": "$:/language/Buttons/ExportTiddlers/Caption",
"text": "export tiddlers"
},
"$:/language/Buttons/ExportTiddlers/Hint": {
"title": "$:/language/Buttons/ExportTiddlers/Hint",
"text": "Export tiddlers"
},
"$:/language/Buttons/SidebarSearch/Hint": {
"title": "$:/language/Buttons/SidebarSearch/Hint",
"text": "Select the sidebar search field"
},
"$:/language/Buttons/Fold/Caption": {
"title": "$:/language/Buttons/Fold/Caption",
"text": "fold tiddler"
},
"$:/language/Buttons/Fold/Hint": {
"title": "$:/language/Buttons/Fold/Hint",
"text": "Fold the body of this tiddler"
},
"$:/language/Buttons/Fold/FoldBar/Caption": {
"title": "$:/language/Buttons/Fold/FoldBar/Caption",
"text": "fold-bar"
},
"$:/language/Buttons/Fold/FoldBar/Hint": {
"title": "$:/language/Buttons/Fold/FoldBar/Hint",
"text": "Optional bars to fold and unfold tiddlers"
},
"$:/language/Buttons/Unfold/Caption": {
"title": "$:/language/Buttons/Unfold/Caption",
"text": "unfold tiddler"
},
"$:/language/Buttons/Unfold/Hint": {
"title": "$:/language/Buttons/Unfold/Hint",
"text": "Unfold the body of this tiddler"
},
"$:/language/Buttons/FoldOthers/Caption": {
"title": "$:/language/Buttons/FoldOthers/Caption",
"text": "fold other tiddlers"
},
"$:/language/Buttons/FoldOthers/Hint": {
"title": "$:/language/Buttons/FoldOthers/Hint",
"text": "Fold the bodies of other opened tiddlers"
},
"$:/language/Buttons/FoldAll/Caption": {
"title": "$:/language/Buttons/FoldAll/Caption",
"text": "fold all tiddlers"
},
"$:/language/Buttons/FoldAll/Hint": {
"title": "$:/language/Buttons/FoldAll/Hint",
"text": "Fold the bodies of all opened tiddlers"
},
"$:/language/Buttons/UnfoldAll/Caption": {
"title": "$:/language/Buttons/UnfoldAll/Caption",
"text": "unfold all tiddlers"
},
"$:/language/Buttons/UnfoldAll/Hint": {
"title": "$:/language/Buttons/UnfoldAll/Hint",
"text": "Unfold the bodies of all opened tiddlers"
},
"$:/language/Buttons/FullScreen/Caption": {
"title": "$:/language/Buttons/FullScreen/Caption",
"text": "full-screen"
},
"$:/language/Buttons/FullScreen/Hint": {
"title": "$:/language/Buttons/FullScreen/Hint",
"text": "Enter or leave full-screen mode"
},
"$:/language/Buttons/Help/Caption": {
"title": "$:/language/Buttons/Help/Caption",
"text": "help"
},
"$:/language/Buttons/Help/Hint": {
"title": "$:/language/Buttons/Help/Hint",
"text": "Show help panel"
},
"$:/language/Buttons/Import/Caption": {
"title": "$:/language/Buttons/Import/Caption",
"text": "import"
},
"$:/language/Buttons/Import/Hint": {
"title": "$:/language/Buttons/Import/Hint",
"text": "Import many types of file including text, image, TiddlyWiki or JSON"
},
"$:/language/Buttons/Info/Caption": {
"title": "$:/language/Buttons/Info/Caption",
"text": "info"
},
"$:/language/Buttons/Info/Hint": {
"title": "$:/language/Buttons/Info/Hint",
"text": "Show information for this tiddler"
},
"$:/language/Buttons/Home/Caption": {
"title": "$:/language/Buttons/Home/Caption",
"text": "home"
},
"$:/language/Buttons/Home/Hint": {
"title": "$:/language/Buttons/Home/Hint",
"text": "Open the default tiddlers"
},
"$:/language/Buttons/Language/Caption": {
"title": "$:/language/Buttons/Language/Caption",
"text": "language"
},
"$:/language/Buttons/Language/Hint": {
"title": "$:/language/Buttons/Language/Hint",
"text": "Choose the user interface language"
},
"$:/language/Buttons/Manager/Caption": {
"title": "$:/language/Buttons/Manager/Caption",
"text": "tiddler manager"
},
"$:/language/Buttons/Manager/Hint": {
"title": "$:/language/Buttons/Manager/Hint",
"text": "Open tiddler manager"
},
"$:/language/Buttons/More/Caption": {
"title": "$:/language/Buttons/More/Caption",
"text": "more"
},
"$:/language/Buttons/More/Hint": {
"title": "$:/language/Buttons/More/Hint",
"text": "More actions"
},
"$:/language/Buttons/NewHere/Caption": {
"title": "$:/language/Buttons/NewHere/Caption",
"text": "new here"
},
"$:/language/Buttons/NewHere/Hint": {
"title": "$:/language/Buttons/NewHere/Hint",
"text": "Create a new tiddler tagged with this one"
},
"$:/language/Buttons/NewJournal/Caption": {
"title": "$:/language/Buttons/NewJournal/Caption",
"text": "new journal"
},
"$:/language/Buttons/NewJournal/Hint": {
"title": "$:/language/Buttons/NewJournal/Hint",
"text": "Create a new journal tiddler"
},
"$:/language/Buttons/NewJournalHere/Caption": {
"title": "$:/language/Buttons/NewJournalHere/Caption",
"text": "new journal here"
},
"$:/language/Buttons/NewJournalHere/Hint": {
"title": "$:/language/Buttons/NewJournalHere/Hint",
"text": "Create a new journal tiddler tagged with this one"
},
"$:/language/Buttons/NewImage/Caption": {
"title": "$:/language/Buttons/NewImage/Caption",
"text": "new image"
},
"$:/language/Buttons/NewImage/Hint": {
"title": "$:/language/Buttons/NewImage/Hint",
"text": "Create a new image tiddler"
},
"$:/language/Buttons/NewMarkdown/Caption": {
"title": "$:/language/Buttons/NewMarkdown/Caption",
"text": "new Markdown tiddler"
},
"$:/language/Buttons/NewMarkdown/Hint": {
"title": "$:/language/Buttons/NewMarkdown/Hint",
"text": "Create a new Markdown tiddler"
},
"$:/language/Buttons/NewTiddler/Caption": {
"title": "$:/language/Buttons/NewTiddler/Caption",
"text": "new tiddler"
},
"$:/language/Buttons/NewTiddler/Hint": {
"title": "$:/language/Buttons/NewTiddler/Hint",
"text": "Create a new tiddler"
},
"$:/language/Buttons/OpenWindow/Caption": {
"title": "$:/language/Buttons/OpenWindow/Caption",
"text": "open in new window"
},
"$:/language/Buttons/OpenWindow/Hint": {
"title": "$:/language/Buttons/OpenWindow/Hint",
"text": "Open tiddler in new window"
},
"$:/language/Buttons/Palette/Caption": {
"title": "$:/language/Buttons/Palette/Caption",
"text": "palette"
},
"$:/language/Buttons/Palette/Hint": {
"title": "$:/language/Buttons/Palette/Hint",
"text": "Choose the colour palette"
},
"$:/language/Buttons/Permalink/Caption": {
"title": "$:/language/Buttons/Permalink/Caption",
"text": "permalink"
},
"$:/language/Buttons/Permalink/Hint": {
"title": "$:/language/Buttons/Permalink/Hint",
"text": "Set browser address bar to a direct link to this tiddler"
},
"$:/language/Buttons/Permaview/Caption": {
"title": "$:/language/Buttons/Permaview/Caption",
"text": "permaview"
},
"$:/language/Buttons/Permaview/Hint": {
"title": "$:/language/Buttons/Permaview/Hint",
"text": "Set browser address bar to a direct link to all the tiddlers in this story"
},
"$:/language/Buttons/Print/Caption": {
"title": "$:/language/Buttons/Print/Caption",
"text": "print page"
},
"$:/language/Buttons/Print/Hint": {
"title": "$:/language/Buttons/Print/Hint",
"text": "Print the current page"
},
"$:/language/Buttons/Refresh/Caption": {
"title": "$:/language/Buttons/Refresh/Caption",
"text": "refresh"
},
"$:/language/Buttons/Refresh/Hint": {
"title": "$:/language/Buttons/Refresh/Hint",
"text": "Perform a full refresh of the wiki"
},
"$:/language/Buttons/Save/Caption": {
"title": "$:/language/Buttons/Save/Caption",
"text": "ok"
},
"$:/language/Buttons/Save/Hint": {
"title": "$:/language/Buttons/Save/Hint",
"text": "Confirm changes to this tiddler"
},
"$:/language/Buttons/SaveWiki/Caption": {
"title": "$:/language/Buttons/SaveWiki/Caption",
"text": "save changes"
},
"$:/language/Buttons/SaveWiki/Hint": {
"title": "$:/language/Buttons/SaveWiki/Hint",
"text": "Save changes"
},
"$:/language/Buttons/StoryView/Caption": {
"title": "$:/language/Buttons/StoryView/Caption",
"text": "storyview"
},
"$:/language/Buttons/StoryView/Hint": {
"title": "$:/language/Buttons/StoryView/Hint",
"text": "Choose the story visualisation"
},
"$:/language/Buttons/HideSideBar/Caption": {
"title": "$:/language/Buttons/HideSideBar/Caption",
"text": "hide sidebar"
},
"$:/language/Buttons/HideSideBar/Hint": {
"title": "$:/language/Buttons/HideSideBar/Hint",
"text": "Hide sidebar"
},
"$:/language/Buttons/ShowSideBar/Caption": {
"title": "$:/language/Buttons/ShowSideBar/Caption",
"text": "show sidebar"
},
"$:/language/Buttons/ShowSideBar/Hint": {
"title": "$:/language/Buttons/ShowSideBar/Hint",
"text": "Show sidebar"
},
"$:/language/Buttons/TagManager/Caption": {
"title": "$:/language/Buttons/TagManager/Caption",
"text": "tag manager"
},
"$:/language/Buttons/TagManager/Hint": {
"title": "$:/language/Buttons/TagManager/Hint",
"text": "Open tag manager"
},
"$:/language/Buttons/Timestamp/Caption": {
"title": "$:/language/Buttons/Timestamp/Caption",
"text": "timestamps"
},
"$:/language/Buttons/Timestamp/Hint": {
"title": "$:/language/Buttons/Timestamp/Hint",
"text": "Choose whether modifications update timestamps"
},
"$:/language/Buttons/Timestamp/On/Caption": {
"title": "$:/language/Buttons/Timestamp/On/Caption",
"text": "timestamps are on"
},
"$:/language/Buttons/Timestamp/On/Hint": {
"title": "$:/language/Buttons/Timestamp/On/Hint",
"text": "Update timestamps when tiddlers are modified"
},
"$:/language/Buttons/Timestamp/Off/Caption": {
"title": "$:/language/Buttons/Timestamp/Off/Caption",
"text": "timestamps are off"
},
"$:/language/Buttons/Timestamp/Off/Hint": {
"title": "$:/language/Buttons/Timestamp/Off/Hint",
"text": "Don't update timestamps when tiddlers are modified"
},
"$:/language/Buttons/Theme/Caption": {
"title": "$:/language/Buttons/Theme/Caption",
"text": "theme"
},
"$:/language/Buttons/Theme/Hint": {
"title": "$:/language/Buttons/Theme/Hint",
"text": "Choose the display theme"
},
"$:/language/Buttons/Bold/Caption": {
"title": "$:/language/Buttons/Bold/Caption",
"text": "bold"
},
"$:/language/Buttons/Bold/Hint": {
"title": "$:/language/Buttons/Bold/Hint",
"text": "Apply bold formatting to selection"
},
"$:/language/Buttons/Clear/Caption": {
"title": "$:/language/Buttons/Clear/Caption",
"text": "clear"
},
"$:/language/Buttons/Clear/Hint": {
"title": "$:/language/Buttons/Clear/Hint",
"text": "Clear image to solid colour"
},
"$:/language/Buttons/EditorHeight/Caption": {
"title": "$:/language/Buttons/EditorHeight/Caption",
"text": "editor height"
},
"$:/language/Buttons/EditorHeight/Caption/Auto": {
"title": "$:/language/Buttons/EditorHeight/Caption/Auto",
"text": "Automatically adjust height to fit content"
},
"$:/language/Buttons/EditorHeight/Caption/Fixed": {
"title": "$:/language/Buttons/EditorHeight/Caption/Fixed",
"text": "Fixed height:"
},
"$:/language/Buttons/EditorHeight/Hint": {
"title": "$:/language/Buttons/EditorHeight/Hint",
"text": "Choose the height of the text editor"
},
"$:/language/Buttons/Excise/Caption": {
"title": "$:/language/Buttons/Excise/Caption",
"text": "excise"
},
"$:/language/Buttons/Excise/Caption/Excise": {
"title": "$:/language/Buttons/Excise/Caption/Excise",
"text": "Perform excision"
},
"$:/language/Buttons/Excise/Caption/MacroName": {
"title": "$:/language/Buttons/Excise/Caption/MacroName",
"text": "Macro name:"
},
"$:/language/Buttons/Excise/Caption/NewTitle": {
"title": "$:/language/Buttons/Excise/Caption/NewTitle",
"text": "Title of new tiddler:"
},
"$:/language/Buttons/Excise/Caption/Replace": {
"title": "$:/language/Buttons/Excise/Caption/Replace",
"text": "Replace excised text with:"
},
"$:/language/Buttons/Excise/Caption/Replace/Macro": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Macro",
"text": "macro"
},
"$:/language/Buttons/Excise/Caption/Replace/Link": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Link",
"text": "link"
},
"$:/language/Buttons/Excise/Caption/Replace/Transclusion": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Transclusion",
"text": "transclusion"
},
"$:/language/Buttons/Excise/Caption/Tag": {
"title": "$:/language/Buttons/Excise/Caption/Tag",
"text": "Tag new tiddler with the title of this tiddler"
},
"$:/language/Buttons/Excise/Caption/TiddlerExists": {
"title": "$:/language/Buttons/Excise/Caption/TiddlerExists",
"text": "Warning: tiddler already exists"
},
"$:/language/Buttons/Excise/Hint": {
"title": "$:/language/Buttons/Excise/Hint",
"text": "Excise the selected text into a new tiddler"
},
"$:/language/Buttons/Heading1/Caption": {
"title": "$:/language/Buttons/Heading1/Caption",
"text": "heading 1"
},
"$:/language/Buttons/Heading1/Hint": {
"title": "$:/language/Buttons/Heading1/Hint",
"text": "Apply heading level 1 formatting to lines containing selection"
},
"$:/language/Buttons/Heading2/Caption": {
"title": "$:/language/Buttons/Heading2/Caption",
"text": "heading 2"
},
"$:/language/Buttons/Heading2/Hint": {
"title": "$:/language/Buttons/Heading2/Hint",
"text": "Apply heading level 2 formatting to lines containing selection"
},
"$:/language/Buttons/Heading3/Caption": {
"title": "$:/language/Buttons/Heading3/Caption",
"text": "heading 3"
},
"$:/language/Buttons/Heading3/Hint": {
"title": "$:/language/Buttons/Heading3/Hint",
"text": "Apply heading level 3 formatting to lines containing selection"
},
"$:/language/Buttons/Heading4/Caption": {
"title": "$:/language/Buttons/Heading4/Caption",
"text": "heading 4"
},
"$:/language/Buttons/Heading4/Hint": {
"title": "$:/language/Buttons/Heading4/Hint",
"text": "Apply heading level 4 formatting to lines containing selection"
},
"$:/language/Buttons/Heading5/Caption": {
"title": "$:/language/Buttons/Heading5/Caption",
"text": "heading 5"
},
"$:/language/Buttons/Heading5/Hint": {
"title": "$:/language/Buttons/Heading5/Hint",
"text": "Apply heading level 5 formatting to lines containing selection"
},
"$:/language/Buttons/Heading6/Caption": {
"title": "$:/language/Buttons/Heading6/Caption",
"text": "heading 6"
},
"$:/language/Buttons/Heading6/Hint": {
"title": "$:/language/Buttons/Heading6/Hint",
"text": "Apply heading level 6 formatting to lines containing selection"
},
"$:/language/Buttons/Italic/Caption": {
"title": "$:/language/Buttons/Italic/Caption",
"text": "italic"
},
"$:/language/Buttons/Italic/Hint": {
"title": "$:/language/Buttons/Italic/Hint",
"text": "Apply italic formatting to selection"
},
"$:/language/Buttons/LineWidth/Caption": {
"title": "$:/language/Buttons/LineWidth/Caption",
"text": "line width"
},
"$:/language/Buttons/LineWidth/Hint": {
"title": "$:/language/Buttons/LineWidth/Hint",
"text": "Set line width for painting"
},
"$:/language/Buttons/Link/Caption": {
"title": "$:/language/Buttons/Link/Caption",
"text": "link"
},
"$:/language/Buttons/Link/Hint": {
"title": "$:/language/Buttons/Link/Hint",
"text": "Create wikitext link"
},
"$:/language/Buttons/Linkify/Caption": {
"title": "$:/language/Buttons/Linkify/Caption",
"text": "wikilink"
},
"$:/language/Buttons/Linkify/Hint": {
"title": "$:/language/Buttons/Linkify/Hint",
"text": "Wrap selection in square brackets"
},
"$:/language/Buttons/ListBullet/Caption": {
"title": "$:/language/Buttons/ListBullet/Caption",
"text": "bulleted list"
},
"$:/language/Buttons/ListBullet/Hint": {
"title": "$:/language/Buttons/ListBullet/Hint",
"text": "Apply bulleted list formatting to lines containing selection"
},
"$:/language/Buttons/ListNumber/Caption": {
"title": "$:/language/Buttons/ListNumber/Caption",
"text": "numbered list"
},
"$:/language/Buttons/ListNumber/Hint": {
"title": "$:/language/Buttons/ListNumber/Hint",
"text": "Apply numbered list formatting to lines containing selection"
},
"$:/language/Buttons/MonoBlock/Caption": {
"title": "$:/language/Buttons/MonoBlock/Caption",
"text": "monospaced block"
},
"$:/language/Buttons/MonoBlock/Hint": {
"title": "$:/language/Buttons/MonoBlock/Hint",
"text": "Apply monospaced block formatting to lines containing selection"
},
"$:/language/Buttons/MonoLine/Caption": {
"title": "$:/language/Buttons/MonoLine/Caption",
"text": "monospaced"
},
"$:/language/Buttons/MonoLine/Hint": {
"title": "$:/language/Buttons/MonoLine/Hint",
"text": "Apply monospaced character formatting to selection"
},
"$:/language/Buttons/Opacity/Caption": {
"title": "$:/language/Buttons/Opacity/Caption",
"text": "opacity"
},
"$:/language/Buttons/Opacity/Hint": {
"title": "$:/language/Buttons/Opacity/Hint",
"text": "Set painting opacity"
},
"$:/language/Buttons/Paint/Caption": {
"title": "$:/language/Buttons/Paint/Caption",
"text": "paint colour"
},
"$:/language/Buttons/Paint/Hint": {
"title": "$:/language/Buttons/Paint/Hint",
"text": "Set painting colour"
},
"$:/language/Buttons/Picture/Caption": {
"title": "$:/language/Buttons/Picture/Caption",
"text": "picture"
},
"$:/language/Buttons/Picture/Hint": {
"title": "$:/language/Buttons/Picture/Hint",
"text": "Insert picture"
},
"$:/language/Buttons/Preview/Caption": {
"title": "$:/language/Buttons/Preview/Caption",
"text": "preview"
},
"$:/language/Buttons/Preview/Hint": {
"title": "$:/language/Buttons/Preview/Hint",
"text": "Show preview pane"
},
"$:/language/Buttons/PreviewType/Caption": {
"title": "$:/language/Buttons/PreviewType/Caption",
"text": "preview type"
},
"$:/language/Buttons/PreviewType/Hint": {
"title": "$:/language/Buttons/PreviewType/Hint",
"text": "Choose preview type"
},
"$:/language/Buttons/Quote/Caption": {
"title": "$:/language/Buttons/Quote/Caption",
"text": "quote"
},
"$:/language/Buttons/Quote/Hint": {
"title": "$:/language/Buttons/Quote/Hint",
"text": "Apply quoted text formatting to lines containing selection"
},
"$:/language/Buttons/RotateLeft/Caption": {
"title": "$:/language/Buttons/RotateLeft/Caption",
"text": "rotate left"
},
"$:/language/Buttons/RotateLeft/Hint": {
"title": "$:/language/Buttons/RotateLeft/Hint",
"text": "Rotate image left by 90 degrees"
},
"$:/language/Buttons/Size/Caption": {
"title": "$:/language/Buttons/Size/Caption",
"text": "image size"
},
"$:/language/Buttons/Size/Caption/Height": {
"title": "$:/language/Buttons/Size/Caption/Height",
"text": "Height:"
},
"$:/language/Buttons/Size/Caption/Resize": {
"title": "$:/language/Buttons/Size/Caption/Resize",
"text": "Resize image"
},
"$:/language/Buttons/Size/Caption/Width": {
"title": "$:/language/Buttons/Size/Caption/Width",
"text": "Width:"
},
"$:/language/Buttons/Size/Hint": {
"title": "$:/language/Buttons/Size/Hint",
"text": "Set image size"
},
"$:/language/Buttons/Stamp/Caption": {
"title": "$:/language/Buttons/Stamp/Caption",
"text": "stamp"
},
"$:/language/Buttons/Stamp/Caption/New": {
"title": "$:/language/Buttons/Stamp/Caption/New",
"text": "Add your own"
},
"$:/language/Buttons/Stamp/Hint": {
"title": "$:/language/Buttons/Stamp/Hint",
"text": "Insert a preconfigured snippet of text"
},
"$:/language/Buttons/Stamp/New/Title": {
"title": "$:/language/Buttons/Stamp/New/Title",
"text": "Name as shown in menu"
},
"$:/language/Buttons/Stamp/New/Text": {
"title": "$:/language/Buttons/Stamp/New/Text",
"text": "Text of snippet. (Remember to add a descriptive title in the caption field)."
},
"$:/language/Buttons/Strikethrough/Caption": {
"title": "$:/language/Buttons/Strikethrough/Caption",
"text": "strikethrough"
},
"$:/language/Buttons/Strikethrough/Hint": {
"title": "$:/language/Buttons/Strikethrough/Hint",
"text": "Apply strikethrough formatting to selection"
},
"$:/language/Buttons/Subscript/Caption": {
"title": "$:/language/Buttons/Subscript/Caption",
"text": "subscript"
},
"$:/language/Buttons/Subscript/Hint": {
"title": "$:/language/Buttons/Subscript/Hint",
"text": "Apply subscript formatting to selection"
},
"$:/language/Buttons/Superscript/Caption": {
"title": "$:/language/Buttons/Superscript/Caption",
"text": "superscript"
},
"$:/language/Buttons/Superscript/Hint": {
"title": "$:/language/Buttons/Superscript/Hint",
"text": "Apply superscript formatting to selection"
},
"$:/language/Buttons/ToggleSidebar/Hint": {
"title": "$:/language/Buttons/ToggleSidebar/Hint",
"text": "Toggle the sidebar visibility"
},
"$:/language/Buttons/Transcludify/Caption": {
"title": "$:/language/Buttons/Transcludify/Caption",
"text": "transclusion"
},
"$:/language/Buttons/Transcludify/Hint": {
"title": "$:/language/Buttons/Transcludify/Hint",
"text": "Wrap selection in curly brackets"
},
"$:/language/Buttons/Underline/Caption": {
"title": "$:/language/Buttons/Underline/Caption",
"text": "underline"
},
"$:/language/Buttons/Underline/Hint": {
"title": "$:/language/Buttons/Underline/Hint",
"text": "Apply underline formatting to selection"
},
"$:/language/ControlPanel/Advanced/Caption": {
"title": "$:/language/ControlPanel/Advanced/Caption",
"text": "Advanced"
},
"$:/language/ControlPanel/Advanced/Hint": {
"title": "$:/language/ControlPanel/Advanced/Hint",
"text": "Internal information about this TiddlyWiki"
},
"$:/language/ControlPanel/Appearance/Caption": {
"title": "$:/language/ControlPanel/Appearance/Caption",
"text": "Appearance"
},
"$:/language/ControlPanel/Appearance/Hint": {
"title": "$:/language/ControlPanel/Appearance/Hint",
"text": "Ways to customise the appearance of your TiddlyWiki."
},
"$:/language/ControlPanel/Basics/AnimDuration/Prompt": {
"title": "$:/language/ControlPanel/Basics/AnimDuration/Prompt",
"text": "Animation duration"
},
"$:/language/ControlPanel/Basics/AutoFocus/Prompt": {
"title": "$:/language/ControlPanel/Basics/AutoFocus/Prompt",
"text": "Default focus field for new tiddlers"
},
"$:/language/ControlPanel/Basics/Caption": {
"title": "$:/language/ControlPanel/Basics/Caption",
"text": "Basics"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint",
"text": "Use [[double square brackets]] for titles with spaces. Or you can choose to <$button set=\"$:/DefaultTiddlers\" setTo=\"[list[$:/StoryList]]\">retain story ordering</$button>"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt",
"text": "Default tiddlers"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint",
"text": "Choose which tiddlers are displayed at startup"
},
"$:/language/ControlPanel/Basics/Language/Prompt": {
"title": "$:/language/ControlPanel/Basics/Language/Prompt",
"text": "Hello! Current language:"
},
"$:/language/ControlPanel/Basics/NewJournal/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt",
"text": "Title of new journal tiddlers"
},
"$:/language/ControlPanel/Basics/NewJournal/Text/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt",
"text": "Text for new journal tiddlers"
},
"$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt",
"text": "Tags for new journal tiddlers"
},
"$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt",
"text": "Title of new tiddlers"
},
"$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt",
"text": "Tags for new tiddlers"
},
"$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt",
"text": "Number of overridden shadow tiddlers"
},
"$:/language/ControlPanel/Basics/RemoveTags": {
"title": "$:/language/ControlPanel/Basics/RemoveTags",
"text": "Update to current format"
},
"$:/language/ControlPanel/Basics/RemoveTags/Hint": {
"title": "$:/language/ControlPanel/Basics/RemoveTags/Hint",
"text": "Update the tags configuration to the latest format"
},
"$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt",
"text": "Number of shadow tiddlers"
},
"$:/language/ControlPanel/Basics/Subtitle/Prompt": {
"title": "$:/language/ControlPanel/Basics/Subtitle/Prompt",
"text": "Subtitle"
},
"$:/language/ControlPanel/Basics/SystemTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt",
"text": "Number of system tiddlers"
},
"$:/language/ControlPanel/Basics/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/Tags/Prompt",
"text": "Number of tags"
},
"$:/language/ControlPanel/Basics/Tiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/Tiddlers/Prompt",
"text": "Number of tiddlers"
},
"$:/language/ControlPanel/Basics/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/Title/Prompt",
"text": "Title of this ~TiddlyWiki"
},
"$:/language/ControlPanel/Basics/Username/Prompt": {
"title": "$:/language/ControlPanel/Basics/Username/Prompt",
"text": "Username for signing edits"
},
"$:/language/ControlPanel/Basics/Version/Prompt": {
"title": "$:/language/ControlPanel/Basics/Version/Prompt",
"text": "~TiddlyWiki version"
},
"$:/language/ControlPanel/EditorTypes/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Caption",
"text": "Editor Types"
},
"$:/language/ControlPanel/EditorTypes/Editor/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Editor/Caption",
"text": "Editor"
},
"$:/language/ControlPanel/EditorTypes/Hint": {
"title": "$:/language/ControlPanel/EditorTypes/Hint",
"text": "These tiddlers determine which editor is used to edit specific tiddler types."
},
"$:/language/ControlPanel/EditorTypes/Type/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Type/Caption",
"text": "Type"
},
"$:/language/ControlPanel/Info/Caption": {
"title": "$:/language/ControlPanel/Info/Caption",
"text": "Info"
},
"$:/language/ControlPanel/Info/Hint": {
"title": "$:/language/ControlPanel/Info/Hint",
"text": "Information about this TiddlyWiki"
},
"$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt",
"text": "Type shortcut here"
},
"$:/language/ControlPanel/KeyboardShortcuts/Add/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption",
"text": "add shortcut"
},
"$:/language/ControlPanel/KeyboardShortcuts/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Caption",
"text": "Keyboard Shortcuts"
},
"$:/language/ControlPanel/KeyboardShortcuts/Hint": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Hint",
"text": "Manage keyboard shortcut assignments"
},
"$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption",
"text": "No keyboard shortcuts assigned"
},
"$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint",
"text": "remove keyboard shortcut"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/All": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/All",
"text": "All platforms"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac",
"text": "Macintosh platform only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac",
"text": "Non-Macintosh platforms only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux",
"text": "Linux platform only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux",
"text": "Non-Linux platforms only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows",
"text": "Windows platform only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows",
"text": "Non-Windows platforms only"
},
"$:/language/ControlPanel/LayoutSwitcher/Caption": {
"title": "$:/language/ControlPanel/LayoutSwitcher/Caption",
"text": "Layout"
},
"$:/language/ControlPanel/LoadedModules/Caption": {
"title": "$:/language/ControlPanel/LoadedModules/Caption",
"text": "Loaded Modules"
},
"$:/language/ControlPanel/LoadedModules/Hint": {
"title": "$:/language/ControlPanel/LoadedModules/Hint",
"text": "These are the currently loaded tiddler modules linked to their source tiddlers. Any italicised modules lack a source tiddler, typically because they were setup during the boot process."
},
"$:/language/ControlPanel/Palette/Caption": {
"title": "$:/language/ControlPanel/Palette/Caption",
"text": "Palette"
},
"$:/language/ControlPanel/Palette/Editor/Clone/Caption": {
"title": "$:/language/ControlPanel/Palette/Editor/Clone/Caption",
"text": "clone"
},
"$:/language/ControlPanel/Palette/Editor/Clone/Prompt": {
"title": "$:/language/ControlPanel/Palette/Editor/Clone/Prompt",
"text": "It is recommended that you clone this shadow palette before editing it"
},
"$:/language/ControlPanel/Palette/Editor/Delete/Hint": {
"title": "$:/language/ControlPanel/Palette/Editor/Delete/Hint",
"text": "delete this entry from the current palette"
},
"$:/language/ControlPanel/Palette/Editor/Names/External/Show": {
"title": "$:/language/ControlPanel/Palette/Editor/Names/External/Show",
"text": "Show color names that are not part of the current palette"
},
"$:/language/ControlPanel/Palette/Editor/Prompt/Modified": {
"title": "$:/language/ControlPanel/Palette/Editor/Prompt/Modified",
"text": "This shadow palette has been modified"
},
"$:/language/ControlPanel/Palette/Editor/Prompt": {
"title": "$:/language/ControlPanel/Palette/Editor/Prompt",
"text": "Editing"
},
"$:/language/ControlPanel/Palette/Editor/Reset/Caption": {
"title": "$:/language/ControlPanel/Palette/Editor/Reset/Caption",
"text": "reset"
},
"$:/language/ControlPanel/Palette/HideEditor/Caption": {
"title": "$:/language/ControlPanel/Palette/HideEditor/Caption",
"text": "hide editor"
},
"$:/language/ControlPanel/Palette/Prompt": {
"title": "$:/language/ControlPanel/Palette/Prompt",
"text": "Current palette:"
},
"$:/language/ControlPanel/Palette/ShowEditor/Caption": {
"title": "$:/language/ControlPanel/Palette/ShowEditor/Caption",
"text": "show editor"
},
"$:/language/ControlPanel/Parsing/Caption": {
"title": "$:/language/ControlPanel/Parsing/Caption",
"text": "Parsing"
},
"$:/language/ControlPanel/Parsing/Hint": {
"title": "$:/language/ControlPanel/Parsing/Hint",
"text": "Here you can globally disable/enable wiki parser rules. For changes to take effect, save and reload your wiki. Disabling certain parser rules can prevent <$text text=\"TiddlyWiki\"/> from functioning correctly. Use [[safe mode|https://tiddlywiki.com/#SafeMode]] to restore normal operation."
},
"$:/language/ControlPanel/Parsing/Block/Caption": {
"title": "$:/language/ControlPanel/Parsing/Block/Caption",
"text": "Block Parse Rules"
},
"$:/language/ControlPanel/Parsing/Inline/Caption": {
"title": "$:/language/ControlPanel/Parsing/Inline/Caption",
"text": "Inline Parse Rules"
},
"$:/language/ControlPanel/Parsing/Pragma/Caption": {
"title": "$:/language/ControlPanel/Parsing/Pragma/Caption",
"text": "Pragma Parse Rules"
},
"$:/language/ControlPanel/Plugins/Add/Caption": {
"title": "$:/language/ControlPanel/Plugins/Add/Caption",
"text": "Get more plugins"
},
"$:/language/ControlPanel/Plugins/Add/Hint": {
"title": "$:/language/ControlPanel/Plugins/Add/Hint",
"text": "Install plugins from the official library"
},
"$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint": {
"title": "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint",
"text": "This plugin is already installed at version <$text text=<<installedVersion>>/>"
},
"$:/language/ControlPanel/Plugins/AlsoRequires": {
"title": "$:/language/ControlPanel/Plugins/AlsoRequires",
"text": "Also requires:"
},
"$:/language/ControlPanel/Plugins/Caption": {
"title": "$:/language/ControlPanel/Plugins/Caption",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Disable/Caption": {
"title": "$:/language/ControlPanel/Plugins/Disable/Caption",
"text": "disable"
},
"$:/language/ControlPanel/Plugins/Disable/Hint": {
"title": "$:/language/ControlPanel/Plugins/Disable/Hint",
"text": "Disable this plugin when reloading page"
},
"$:/language/ControlPanel/Plugins/Disabled/Status": {
"title": "$:/language/ControlPanel/Plugins/Disabled/Status",
"text": "(disabled)"
},
"$:/language/ControlPanel/Plugins/Downgrade/Caption": {
"title": "$:/language/ControlPanel/Plugins/Downgrade/Caption",
"text": "downgrade"
},
"$:/language/ControlPanel/Plugins/Empty/Hint": {
"title": "$:/language/ControlPanel/Plugins/Empty/Hint",
"text": "None"
},
"$:/language/ControlPanel/Plugins/Enable/Caption": {
"title": "$:/language/ControlPanel/Plugins/Enable/Caption",
"text": "enable"
},
"$:/language/ControlPanel/Plugins/Enable/Hint": {
"title": "$:/language/ControlPanel/Plugins/Enable/Hint",
"text": "Enable this plugin when reloading page"
},
"$:/language/ControlPanel/Plugins/Install/Caption": {
"title": "$:/language/ControlPanel/Plugins/Install/Caption",
"text": "install"
},
"$:/language/ControlPanel/Plugins/Installed/Hint": {
"title": "$:/language/ControlPanel/Plugins/Installed/Hint",
"text": "Currently installed plugins:"
},
"$:/language/ControlPanel/Plugins/Languages/Caption": {
"title": "$:/language/ControlPanel/Plugins/Languages/Caption",
"text": "Languages"
},
"$:/language/ControlPanel/Plugins/Languages/Hint": {
"title": "$:/language/ControlPanel/Plugins/Languages/Hint",
"text": "Language pack plugins"
},
"$:/language/ControlPanel/Plugins/NoInfoFound/Hint": {
"title": "$:/language/ControlPanel/Plugins/NoInfoFound/Hint",
"text": "No ''\"<$text text=<<currentTab>>/>\"'' found"
},
"$:/language/ControlPanel/Plugins/NotInstalled/Hint": {
"title": "$:/language/ControlPanel/Plugins/NotInstalled/Hint",
"text": "This plugin is not currently installed"
},
"$:/language/ControlPanel/Plugins/OpenPluginLibrary": {
"title": "$:/language/ControlPanel/Plugins/OpenPluginLibrary",
"text": "open plugin library"
},
"$:/language/ControlPanel/Plugins/ClosePluginLibrary": {
"title": "$:/language/ControlPanel/Plugins/ClosePluginLibrary",
"text": "close plugin library"
},
"$:/language/ControlPanel/Plugins/PluginWillRequireReload": {
"title": "$:/language/ControlPanel/Plugins/PluginWillRequireReload",
"text": "(requires reload)"
},
"$:/language/ControlPanel/Plugins/Plugins/Caption": {
"title": "$:/language/ControlPanel/Plugins/Plugins/Caption",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Plugins/Hint": {
"title": "$:/language/ControlPanel/Plugins/Plugins/Hint",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Reinstall/Caption": {
"title": "$:/language/ControlPanel/Plugins/Reinstall/Caption",
"text": "reinstall"
},
"$:/language/ControlPanel/Plugins/Themes/Caption": {
"title": "$:/language/ControlPanel/Plugins/Themes/Caption",
"text": "Themes"
},
"$:/language/ControlPanel/Plugins/Themes/Hint": {
"title": "$:/language/ControlPanel/Plugins/Themes/Hint",
"text": "Theme plugins"
},
"$:/language/ControlPanel/Plugins/Update/Caption": {
"title": "$:/language/ControlPanel/Plugins/Update/Caption",
"text": "update"
},
"$:/language/ControlPanel/Plugins/Updates/Caption": {
"title": "$:/language/ControlPanel/Plugins/Updates/Caption",
"text": "Updates"
},
"$:/language/ControlPanel/Plugins/Updates/Hint": {
"title": "$:/language/ControlPanel/Plugins/Updates/Hint",
"text": "Available updates to installed plugins"
},
"$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption": {
"title": "$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption",
"text": "Update <<update-count>> plugins"
},
"$:/language/ControlPanel/Plugins/SubPluginPrompt": {
"title": "$:/language/ControlPanel/Plugins/SubPluginPrompt",
"text": "With <<count>> sub-plugins available"
},
"$:/language/ControlPanel/Saving/Caption": {
"title": "$:/language/ControlPanel/Saving/Caption",
"text": "Saving"
},
"$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description",
"text": "Permit automatic saving for the download saver"
},
"$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint",
"text": "Enable Autosave for Download Saver"
},
"$:/language/ControlPanel/Saving/DownloadSaver/Caption": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/Caption",
"text": "Download Saver"
},
"$:/language/ControlPanel/Saving/DownloadSaver/Hint": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/Hint",
"text": "These settings apply to the HTML5-compatible download saver"
},
"$:/language/ControlPanel/Saving/General/Caption": {
"title": "$:/language/ControlPanel/Saving/General/Caption",
"text": "General"
},
"$:/language/ControlPanel/Saving/General/Hint": {
"title": "$:/language/ControlPanel/Saving/General/Hint",
"text": "These settings apply to all the loaded savers"
},
"$:/language/ControlPanel/Saving/Hint": {
"title": "$:/language/ControlPanel/Saving/Hint",
"text": "Settings used for saving the entire TiddlyWiki as a single file via a saver module"
},
"$:/language/ControlPanel/Saving/GitService/Branch": {
"title": "$:/language/ControlPanel/Saving/GitService/Branch",
"text": "Target branch for saving"
},
"$:/language/ControlPanel/Saving/GitService/CommitMessage": {
"title": "$:/language/ControlPanel/Saving/GitService/CommitMessage",
"text": "Saved by TiddlyWiki"
},
"$:/language/ControlPanel/Saving/GitService/Description": {
"title": "$:/language/ControlPanel/Saving/GitService/Description",
"text": "These settings are only used when saving to <<service-name>>"
},
"$:/language/ControlPanel/Saving/GitService/Filename": {
"title": "$:/language/ControlPanel/Saving/GitService/Filename",
"text": "Filename of target file (e.g. `index.html`)"
},
"$:/language/ControlPanel/Saving/GitService/Path": {
"title": "$:/language/ControlPanel/Saving/GitService/Path",
"text": "Path to target file (e.g. `/wiki/`)"
},
"$:/language/ControlPanel/Saving/GitService/Repo": {
"title": "$:/language/ControlPanel/Saving/GitService/Repo",
"text": "Target repository (e.g. `Jermolene/TiddlyWiki5`)"
},
"$:/language/ControlPanel/Saving/GitService/ServerURL": {
"title": "$:/language/ControlPanel/Saving/GitService/ServerURL",
"text": "Server API URL"
},
"$:/language/ControlPanel/Saving/GitService/UserName": {
"title": "$:/language/ControlPanel/Saving/GitService/UserName",
"text": "Username"
},
"$:/language/ControlPanel/Saving/GitService/GitHub/Caption": {
"title": "$:/language/ControlPanel/Saving/GitService/GitHub/Caption",
"text": "~GitHub Saver"
},
"$:/language/ControlPanel/Saving/GitService/GitHub/Password": {
"title": "$:/language/ControlPanel/Saving/GitService/GitHub/Password",
"text": "Password, OAUTH token, or personal access token (see [[GitHub help page|https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line]] for details)"
},
"$:/language/ControlPanel/Saving/GitService/GitLab/Caption": {
"title": "$:/language/ControlPanel/Saving/GitService/GitLab/Caption",
"text": "~GitLab Saver"
},
"$:/language/ControlPanel/Saving/GitService/GitLab/Password": {
"title": "$:/language/ControlPanel/Saving/GitService/GitLab/Password",
"text": "Personal access token for API (see [[GitLab help page|https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html]] for details)"
},
"$:/language/ControlPanel/Saving/GitService/Gitea/Caption": {
"title": "$:/language/ControlPanel/Saving/GitService/Gitea/Caption",
"text": "Gitea Saver"
},
"$:/language/ControlPanel/Saving/GitService/Gitea/Password": {
"title": "$:/language/ControlPanel/Saving/GitService/Gitea/Password",
"text": "Personal access token for API (via Gitea’s web interface: `Settings | Applications | Generate New Token`)"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading",
"text": "Advanced Settings"
},
"$:/language/ControlPanel/Saving/TiddlySpot/BackupDir": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir",
"text": "Backup Directory"
},
"$:/language/ControlPanel/Saving/TiddlySpot/ControlPanel": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/ControlPanel",
"text": "~TiddlySpot Control Panel"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Backups": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Backups",
"text": "Backups"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Caption": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Caption",
"text": "~TiddlySpot Saver"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Description": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Description",
"text": "These settings are only used when saving to http://tiddlyspot.com or a compatible remote server"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Filename": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Filename",
"text": "Upload Filename"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Heading": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Heading",
"text": "~TiddlySpot"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Hint": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Hint",
"text": "//The server URL defaults to `http://<wikiname>.tiddlyspot.com/store.cgi` and can be changed to use a custom server address, e.g. `http://example.com/store.php`.//"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Password": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Password",
"text": "Password"
},
"$:/language/ControlPanel/Saving/TiddlySpot/ReadOnly": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/ReadOnly",
"text": "The ~TiddlySpot service is currently only available in read-only form. Please see http://tiddlyspot.com/ for the latest details. The ~TiddlySpot saver can still be used to save to compatible servers."
},
"$:/language/ControlPanel/Saving/TiddlySpot/ServerURL": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL",
"text": "Server URL"
},
"$:/language/ControlPanel/Saving/TiddlySpot/UploadDir": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir",
"text": "Upload Directory"
},
"$:/language/ControlPanel/Saving/TiddlySpot/UserName": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/UserName",
"text": "Wiki Name"
},
"$:/language/ControlPanel/Settings/AutoSave/Caption": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Caption",
"text": "Autosave"
},
"$:/language/ControlPanel/Settings/AutoSave/Disabled/Description": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description",
"text": "Do not save changes automatically"
},
"$:/language/ControlPanel/Settings/AutoSave/Enabled/Description": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description",
"text": "Save changes automatically"
},
"$:/language/ControlPanel/Settings/AutoSave/Hint": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Hint",
"text": "Attempt to automatically save changes during editing when using a supporting saver"
},
"$:/language/ControlPanel/Settings/CamelCase/Caption": {
"title": "$:/language/ControlPanel/Settings/CamelCase/Caption",
"text": "Camel Case Wiki Links"
},
"$:/language/ControlPanel/Settings/CamelCase/Hint": {
"title": "$:/language/ControlPanel/Settings/CamelCase/Hint",
"text": "You can globally disable automatic linking of ~CamelCase phrases. Requires reload to take effect"
},
"$:/language/ControlPanel/Settings/CamelCase/Description": {
"title": "$:/language/ControlPanel/Settings/CamelCase/Description",
"text": "Enable automatic ~CamelCase linking"
},
"$:/language/ControlPanel/Settings/Caption": {
"title": "$:/language/ControlPanel/Settings/Caption",
"text": "Settings"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Caption": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Caption",
"text": "Editor Toolbar"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Hint": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Hint",
"text": "Enable or disable the editor toolbar:"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Description": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Description",
"text": "Show editor toolbar"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Caption": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Caption",
"text": "Tiddler Info Panel Mode"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Hint": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Hint",
"text": "Control when the tiddler info panel closes:"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description",
"text": "Tiddler info panel closes automatically"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description",
"text": "Tiddler info panel stays open until explicitly closed"
},
"$:/language/ControlPanel/Settings/Hint": {
"title": "$:/language/ControlPanel/Settings/Hint",
"text": "These settings let you customise the behaviour of TiddlyWiki."
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption",
"text": "Navigation Address Bar"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint",
"text": "Behaviour of the browser address bar when navigating to a tiddler:"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description",
"text": "Do not update the address bar"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description",
"text": "Include the target tiddler"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description",
"text": "Include the target tiddler and the current story sequence"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Caption",
"text": "Navigation History"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Hint",
"text": "Update browser history when navigating to a tiddler:"
},
"$:/language/ControlPanel/Settings/NavigationHistory/No/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/No/Description",
"text": "Do not update history"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description",
"text": "Update history"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption",
"text": "Permalink/permaview Mode"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint",
"text": "Choose how permalink/permaview is handled:"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description",
"text": "Copy permalink/permaview URL to clipboard"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description",
"text": "Update address bar with permalink/permaview URL"
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption",
"text": "Performance Instrumentation"
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint",
"text": "Displays performance statistics in the browser developer console. Requires reload to take effect"
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description",
"text": "Enable performance instrumentation"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption",
"text": "Toolbar Button Style"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint",
"text": "Choose the style for toolbar buttons:"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless",
"text": "Borderless"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed",
"text": "Boxed"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded",
"text": "Rounded"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Caption": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Caption",
"text": "Toolbar Buttons"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Hint": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Hint",
"text": "Default toolbar button appearance:"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description",
"text": "Include icon"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description",
"text": "Include text"
},
"$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption": {
"title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption",
"text": "Default Sidebar Tab"
},
"$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint": {
"title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint",
"text": "Specify which sidebar tab is displayed by default"
},
"$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption": {
"title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption",
"text": "Default More Sidebar Tab"
},
"$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint": {
"title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint",
"text": "Specify which More sidebar tab is displayed by default"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/Caption": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption",
"text": "Tiddler Opening Behaviour"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint",
"text": "Navigation from //within// the story river"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint",
"text": "Navigation from //outside// the story river"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove",
"text": "Open above the current tiddler"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow",
"text": "Open below the current tiddler"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop",
"text": "Open at the top of the story river"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom",
"text": "Open at the bottom of the story river"
},
"$:/language/ControlPanel/Settings/TitleLinks/Caption": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Caption",
"text": "Tiddler Titles"
},
"$:/language/ControlPanel/Settings/TitleLinks/Hint": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Hint",
"text": "Optionally display tiddler titles as links"
},
"$:/language/ControlPanel/Settings/TitleLinks/No/Description": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/No/Description",
"text": "Do not display tiddler titles as links"
},
"$:/language/ControlPanel/Settings/TitleLinks/Yes/Description": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description",
"text": "Display tiddler titles as links"
},
"$:/language/ControlPanel/Settings/MissingLinks/Caption": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Caption",
"text": "Wiki Links"
},
"$:/language/ControlPanel/Settings/MissingLinks/Hint": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Hint",
"text": "Choose whether to link to tiddlers that do not exist yet"
},
"$:/language/ControlPanel/Settings/MissingLinks/Description": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Description",
"text": "Enable links to missing tiddlers"
},
"$:/language/ControlPanel/StoryView/Caption": {
"title": "$:/language/ControlPanel/StoryView/Caption",
"text": "Story View"
},
"$:/language/ControlPanel/StoryView/Prompt": {
"title": "$:/language/ControlPanel/StoryView/Prompt",
"text": "Current view:"
},
"$:/language/ControlPanel/Stylesheets/Caption": {
"title": "$:/language/ControlPanel/Stylesheets/Caption",
"text": "Stylesheets"
},
"$:/language/ControlPanel/Stylesheets/Expand/Caption": {
"title": "$:/language/ControlPanel/Stylesheets/Expand/Caption",
"text": "Expand All"
},
"$:/language/ControlPanel/Stylesheets/Hint": {
"title": "$:/language/ControlPanel/Stylesheets/Hint",
"text": "This is the rendered CSS of the current stylesheet tiddlers tagged with <<tag \"$:/tags/Stylesheet\">>"
},
"$:/language/ControlPanel/Stylesheets/Restore/Caption": {
"title": "$:/language/ControlPanel/Stylesheets/Restore/Caption",
"text": "Restore"
},
"$:/language/ControlPanel/Theme/Caption": {
"title": "$:/language/ControlPanel/Theme/Caption",
"text": "Theme"
},
"$:/language/ControlPanel/Theme/Prompt": {
"title": "$:/language/ControlPanel/Theme/Prompt",
"text": "Current theme:"
},
"$:/language/ControlPanel/TiddlerFields/Caption": {
"title": "$:/language/ControlPanel/TiddlerFields/Caption",
"text": "Tiddler Fields"
},
"$:/language/ControlPanel/TiddlerFields/Hint": {
"title": "$:/language/ControlPanel/TiddlerFields/Hint",
"text": "This is the full set of TiddlerFields in use in this wiki (including system tiddlers but excluding shadow tiddlers)."
},
"$:/language/ControlPanel/Toolbars/Caption": {
"title": "$:/language/ControlPanel/Toolbars/Caption",
"text": "Toolbars"
},
"$:/language/ControlPanel/Toolbars/EditToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/EditToolbar/Caption",
"text": "Edit Toolbar"
},
"$:/language/ControlPanel/Toolbars/EditToolbar/Hint": {
"title": "$:/language/ControlPanel/Toolbars/EditToolbar/Hint",
"text": "Choose which buttons are displayed for tiddlers in edit mode. Drag and drop to change the ordering"
},
"$:/language/ControlPanel/Toolbars/Hint": {
"title": "$:/language/ControlPanel/Toolbars/Hint",
"text": "Select which toolbar buttons are displayed"
},
"$:/language/ControlPanel/Toolbars/PageControls/Caption": {
"title": "$:/language/ControlPanel/Toolbars/PageControls/Caption",
"text": "Page Toolbar"
},
"$:/language/ControlPanel/Toolbars/PageControls/Hint": {
"title": "$:/language/ControlPanel/Toolbars/PageControls/Hint",
"text": "Choose which buttons are displayed on the main page toolbar. Drag and drop to change the ordering"
},
"$:/language/ControlPanel/Toolbars/EditorToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption",
"text": "Editor Toolbar"
},
"$:/language/ControlPanel/Toolbars/EditorToolbar/Hint": {
"title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint",
"text": "Choose which buttons are displayed in the editor toolbar. Note that some buttons will only appear when editing tiddlers of a certain type. Drag and drop to change the ordering"
},
"$:/language/ControlPanel/Toolbars/ViewToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption",
"text": "View Toolbar"
},
"$:/language/ControlPanel/Toolbars/ViewToolbar/Hint": {
"title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint",
"text": "Choose which buttons are displayed for tiddlers in view mode. Drag and drop to change the ordering"
},
"$:/language/ControlPanel/Tools/Download/Full/Caption": {
"title": "$:/language/ControlPanel/Tools/Download/Full/Caption",
"text": "Download full wiki"
},
"$:/language/Date/DaySuffix/1": {
"title": "$:/language/Date/DaySuffix/1",
"text": "st"
},
"$:/language/Date/DaySuffix/2": {
"title": "$:/language/Date/DaySuffix/2",
"text": "nd"
},
"$:/language/Date/DaySuffix/3": {
"title": "$:/language/Date/DaySuffix/3",
"text": "rd"
},
"$:/language/Date/DaySuffix/4": {
"title": "$:/language/Date/DaySuffix/4",
"text": "th"
},
"$:/language/Date/DaySuffix/5": {
"title": "$:/language/Date/DaySuffix/5",
"text": "th"
},
"$:/language/Date/DaySuffix/6": {
"title": "$:/language/Date/DaySuffix/6",
"text": "th"
},
"$:/language/Date/DaySuffix/7": {
"title": "$:/language/Date/DaySuffix/7",
"text": "th"
},
"$:/language/Date/DaySuffix/8": {
"title": "$:/language/Date/DaySuffix/8",
"text": "th"
},
"$:/language/Date/DaySuffix/9": {
"title": "$:/language/Date/DaySuffix/9",
"text": "th"
},
"$:/language/Date/DaySuffix/10": {
"title": "$:/language/Date/DaySuffix/10",
"text": "th"
},
"$:/language/Date/DaySuffix/11": {
"title": "$:/language/Date/DaySuffix/11",
"text": "th"
},
"$:/language/Date/DaySuffix/12": {
"title": "$:/language/Date/DaySuffix/12",
"text": "th"
},
"$:/language/Date/DaySuffix/13": {
"title": "$:/language/Date/DaySuffix/13",
"text": "th"
},
"$:/language/Date/DaySuffix/14": {
"title": "$:/language/Date/DaySuffix/14",
"text": "th"
},
"$:/language/Date/DaySuffix/15": {
"title": "$:/language/Date/DaySuffix/15",
"text": "th"
},
"$:/language/Date/DaySuffix/16": {
"title": "$:/language/Date/DaySuffix/16",
"text": "th"
},
"$:/language/Date/DaySuffix/17": {
"title": "$:/language/Date/DaySuffix/17",
"text": "th"
},
"$:/language/Date/DaySuffix/18": {
"title": "$:/language/Date/DaySuffix/18",
"text": "th"
},
"$:/language/Date/DaySuffix/19": {
"title": "$:/language/Date/DaySuffix/19",
"text": "th"
},
"$:/language/Date/DaySuffix/20": {
"title": "$:/language/Date/DaySuffix/20",
"text": "th"
},
"$:/language/Date/DaySuffix/21": {
"title": "$:/language/Date/DaySuffix/21",
"text": "st"
},
"$:/language/Date/DaySuffix/22": {
"title": "$:/language/Date/DaySuffix/22",
"text": "nd"
},
"$:/language/Date/DaySuffix/23": {
"title": "$:/language/Date/DaySuffix/23",
"text": "rd"
},
"$:/language/Date/DaySuffix/24": {
"title": "$:/language/Date/DaySuffix/24",
"text": "th"
},
"$:/language/Date/DaySuffix/25": {
"title": "$:/language/Date/DaySuffix/25",
"text": "th"
},
"$:/language/Date/DaySuffix/26": {
"title": "$:/language/Date/DaySuffix/26",
"text": "th"
},
"$:/language/Date/DaySuffix/27": {
"title": "$:/language/Date/DaySuffix/27",
"text": "th"
},
"$:/language/Date/DaySuffix/28": {
"title": "$:/language/Date/DaySuffix/28",
"text": "th"
},
"$:/language/Date/DaySuffix/29": {
"title": "$:/language/Date/DaySuffix/29",
"text": "th"
},
"$:/language/Date/DaySuffix/30": {
"title": "$:/language/Date/DaySuffix/30",
"text": "th"
},
"$:/language/Date/DaySuffix/31": {
"title": "$:/language/Date/DaySuffix/31",
"text": "st"
},
"$:/language/Date/Long/Day/0": {
"title": "$:/language/Date/Long/Day/0",
"text": "Sunday"
},
"$:/language/Date/Long/Day/1": {
"title": "$:/language/Date/Long/Day/1",
"text": "Monday"
},
"$:/language/Date/Long/Day/2": {
"title": "$:/language/Date/Long/Day/2",
"text": "Tuesday"
},
"$:/language/Date/Long/Day/3": {
"title": "$:/language/Date/Long/Day/3",
"text": "Wednesday"
},
"$:/language/Date/Long/Day/4": {
"title": "$:/language/Date/Long/Day/4",
"text": "Thursday"
},
"$:/language/Date/Long/Day/5": {
"title": "$:/language/Date/Long/Day/5",
"text": "Friday"
},
"$:/language/Date/Long/Day/6": {
"title": "$:/language/Date/Long/Day/6",
"text": "Saturday"
},
"$:/language/Date/Long/Month/1": {
"title": "$:/language/Date/Long/Month/1",
"text": "January"
},
"$:/language/Date/Long/Month/2": {
"title": "$:/language/Date/Long/Month/2",
"text": "February"
},
"$:/language/Date/Long/Month/3": {
"title": "$:/language/Date/Long/Month/3",
"text": "March"
},
"$:/language/Date/Long/Month/4": {
"title": "$:/language/Date/Long/Month/4",
"text": "April"
},
"$:/language/Date/Long/Month/5": {
"title": "$:/language/Date/Long/Month/5",
"text": "May"
},
"$:/language/Date/Long/Month/6": {
"title": "$:/language/Date/Long/Month/6",
"text": "June"
},
"$:/language/Date/Long/Month/7": {
"title": "$:/language/Date/Long/Month/7",
"text": "July"
},
"$:/language/Date/Long/Month/8": {
"title": "$:/language/Date/Long/Month/8",
"text": "August"
},
"$:/language/Date/Long/Month/9": {
"title": "$:/language/Date/Long/Month/9",
"text": "September"
},
"$:/language/Date/Long/Month/10": {
"title": "$:/language/Date/Long/Month/10",
"text": "October"
},
"$:/language/Date/Long/Month/11": {
"title": "$:/language/Date/Long/Month/11",
"text": "November"
},
"$:/language/Date/Long/Month/12": {
"title": "$:/language/Date/Long/Month/12",
"text": "December"
},
"$:/language/Date/Period/am": {
"title": "$:/language/Date/Period/am",
"text": "am"
},
"$:/language/Date/Period/pm": {
"title": "$:/language/Date/Period/pm",
"text": "pm"
},
"$:/language/Date/Short/Day/0": {
"title": "$:/language/Date/Short/Day/0",
"text": "Sun"
},
"$:/language/Date/Short/Day/1": {
"title": "$:/language/Date/Short/Day/1",
"text": "Mon"
},
"$:/language/Date/Short/Day/2": {
"title": "$:/language/Date/Short/Day/2",
"text": "Tue"
},
"$:/language/Date/Short/Day/3": {
"title": "$:/language/Date/Short/Day/3",
"text": "Wed"
},
"$:/language/Date/Short/Day/4": {
"title": "$:/language/Date/Short/Day/4",
"text": "Thu"
},
"$:/language/Date/Short/Day/5": {
"title": "$:/language/Date/Short/Day/5",
"text": "Fri"
},
"$:/language/Date/Short/Day/6": {
"title": "$:/language/Date/Short/Day/6",
"text": "Sat"
},
"$:/language/Date/Short/Month/1": {
"title": "$:/language/Date/Short/Month/1",
"text": "Jan"
},
"$:/language/Date/Short/Month/2": {
"title": "$:/language/Date/Short/Month/2",
"text": "Feb"
},
"$:/language/Date/Short/Month/3": {
"title": "$:/language/Date/Short/Month/3",
"text": "Mar"
},
"$:/language/Date/Short/Month/4": {
"title": "$:/language/Date/Short/Month/4",
"text": "Apr"
},
"$:/language/Date/Short/Month/5": {
"title": "$:/language/Date/Short/Month/5",
"text": "May"
},
"$:/language/Date/Short/Month/6": {
"title": "$:/language/Date/Short/Month/6",
"text": "Jun"
},
"$:/language/Date/Short/Month/7": {
"title": "$:/language/Date/Short/Month/7",
"text": "Jul"
},
"$:/language/Date/Short/Month/8": {
"title": "$:/language/Date/Short/Month/8",
"text": "Aug"
},
"$:/language/Date/Short/Month/9": {
"title": "$:/language/Date/Short/Month/9",
"text": "Sep"
},
"$:/language/Date/Short/Month/10": {
"title": "$:/language/Date/Short/Month/10",
"text": "Oct"
},
"$:/language/Date/Short/Month/11": {
"title": "$:/language/Date/Short/Month/11",
"text": "Nov"
},
"$:/language/Date/Short/Month/12": {
"title": "$:/language/Date/Short/Month/12",
"text": "Dec"
},
"$:/language/RelativeDate/Future/Days": {
"title": "$:/language/RelativeDate/Future/Days",
"text": "<<period>> days from now"
},
"$:/language/RelativeDate/Future/Hours": {
"title": "$:/language/RelativeDate/Future/Hours",
"text": "<<period>> hours from now"
},
"$:/language/RelativeDate/Future/Minutes": {
"title": "$:/language/RelativeDate/Future/Minutes",
"text": "<<period>> minutes from now"
},
"$:/language/RelativeDate/Future/Months": {
"title": "$:/language/RelativeDate/Future/Months",
"text": "<<period>> months from now"
},
"$:/language/RelativeDate/Future/Second": {
"title": "$:/language/RelativeDate/Future/Second",
"text": "1 second from now"
},
"$:/language/RelativeDate/Future/Seconds": {
"title": "$:/language/RelativeDate/Future/Seconds",
"text": "<<period>> seconds from now"
},
"$:/language/RelativeDate/Future/Years": {
"title": "$:/language/RelativeDate/Future/Years",
"text": "<<period>> years from now"
},
"$:/language/RelativeDate/Past/Days": {
"title": "$:/language/RelativeDate/Past/Days",
"text": "<<period>> days ago"
},
"$:/language/RelativeDate/Past/Hours": {
"title": "$:/language/RelativeDate/Past/Hours",
"text": "<<period>> hours ago"
},
"$:/language/RelativeDate/Past/Minutes": {
"title": "$:/language/RelativeDate/Past/Minutes",
"text": "<<period>> minutes ago"
},
"$:/language/RelativeDate/Past/Months": {
"title": "$:/language/RelativeDate/Past/Months",
"text": "<<period>> months ago"
},
"$:/language/RelativeDate/Past/Second": {
"title": "$:/language/RelativeDate/Past/Second",
"text": "1 second ago"
},
"$:/language/RelativeDate/Past/Seconds": {
"title": "$:/language/RelativeDate/Past/Seconds",
"text": "<<period>> seconds ago"
},
"$:/language/RelativeDate/Past/Years": {
"title": "$:/language/RelativeDate/Past/Years",
"text": "<<period>> years ago"
},
"$:/language/Docs/ModuleTypes/allfilteroperator": {
"title": "$:/language/Docs/ModuleTypes/allfilteroperator",
"text": "A sub-operator for the ''all'' filter operator."
},
"$:/language/Docs/ModuleTypes/animation": {
"title": "$:/language/Docs/ModuleTypes/animation",
"text": "Animations that may be used with the RevealWidget."
},
"$:/language/Docs/ModuleTypes/authenticator": {
"title": "$:/language/Docs/ModuleTypes/authenticator",
"text": "Defines how requests are authenticated by the built-in HTTP server."
},
"$:/language/Docs/ModuleTypes/bitmapeditoroperation": {
"title": "$:/language/Docs/ModuleTypes/bitmapeditoroperation",
"text": "A bitmap editor toolbar operation."
},
"$:/language/Docs/ModuleTypes/command": {
"title": "$:/language/Docs/ModuleTypes/command",
"text": "Commands that can be executed under Node.js."
},
"$:/language/Docs/ModuleTypes/config": {
"title": "$:/language/Docs/ModuleTypes/config",
"text": "Data to be inserted into `$tw.config`."
},
"$:/language/Docs/ModuleTypes/filteroperator": {
"title": "$:/language/Docs/ModuleTypes/filteroperator",
"text": "Individual filter operator methods."
},
"$:/language/Docs/ModuleTypes/global": {
"title": "$:/language/Docs/ModuleTypes/global",
"text": "Global data to be inserted into `$tw`."
},
"$:/language/Docs/ModuleTypes/info": {
"title": "$:/language/Docs/ModuleTypes/info",
"text": "Publishes system information via the [[$:/temp/info-plugin]] pseudo-plugin."
},
"$:/language/Docs/ModuleTypes/isfilteroperator": {
"title": "$:/language/Docs/ModuleTypes/isfilteroperator",
"text": "Operands for the ''is'' filter operator."
},
"$:/language/Docs/ModuleTypes/library": {
"title": "$:/language/Docs/ModuleTypes/library",
"text": "Generic module type for general purpose JavaScript modules."
},
"$:/language/Docs/ModuleTypes/macro": {
"title": "$:/language/Docs/ModuleTypes/macro",
"text": "JavaScript macro definitions."
},
"$:/language/Docs/ModuleTypes/parser": {
"title": "$:/language/Docs/ModuleTypes/parser",
"text": "Parsers for different content types."
},
"$:/language/Docs/ModuleTypes/route": {
"title": "$:/language/Docs/ModuleTypes/route",
"text": "Defines how individual URL patterns are handled by the built-in HTTP server."
},
"$:/language/Docs/ModuleTypes/saver": {
"title": "$:/language/Docs/ModuleTypes/saver",
"text": "Savers handle different methods for saving files from the browser."
},
"$:/language/Docs/ModuleTypes/startup": {
"title": "$:/language/Docs/ModuleTypes/startup",
"text": "Startup functions."
},
"$:/language/Docs/ModuleTypes/storyview": {
"title": "$:/language/Docs/ModuleTypes/storyview",
"text": "Story views customise the animation and behaviour of list widgets."
},
"$:/language/Docs/ModuleTypes/texteditoroperation": {
"title": "$:/language/Docs/ModuleTypes/texteditoroperation",
"text": "A text editor toolbar operation."
},
"$:/language/Docs/ModuleTypes/tiddlerdeserializer": {
"title": "$:/language/Docs/ModuleTypes/tiddlerdeserializer",
"text": "Converts different content types into tiddlers."
},
"$:/language/Docs/ModuleTypes/tiddlerfield": {
"title": "$:/language/Docs/ModuleTypes/tiddlerfield",
"text": "Defines the behaviour of an individual tiddler field."
},
"$:/language/Docs/ModuleTypes/tiddlermethod": {
"title": "$:/language/Docs/ModuleTypes/tiddlermethod",
"text": "Adds methods to the `$tw.Tiddler` prototype."
},
"$:/language/Docs/ModuleTypes/upgrader": {
"title": "$:/language/Docs/ModuleTypes/upgrader",
"text": "Applies upgrade processing to tiddlers during an upgrade/import."
},
"$:/language/Docs/ModuleTypes/utils": {
"title": "$:/language/Docs/ModuleTypes/utils",
"text": "Adds methods to `$tw.utils`."
},
"$:/language/Docs/ModuleTypes/utils-node": {
"title": "$:/language/Docs/ModuleTypes/utils-node",
"text": "Adds Node.js-specific methods to `$tw.utils`."
},
"$:/language/Docs/ModuleTypes/widget": {
"title": "$:/language/Docs/ModuleTypes/widget",
"text": "Widgets encapsulate DOM rendering and refreshing."
},
"$:/language/Docs/ModuleTypes/wikimethod": {
"title": "$:/language/Docs/ModuleTypes/wikimethod",
"text": "Adds methods to `$tw.Wiki`."
},
"$:/language/Docs/ModuleTypes/wikirule": {
"title": "$:/language/Docs/ModuleTypes/wikirule",
"text": "Individual parser rules for the main WikiText parser."
},
"$:/language/Docs/PaletteColours/alert-background": {
"title": "$:/language/Docs/PaletteColours/alert-background",
"text": "Alert background"
},
"$:/language/Docs/PaletteColours/alert-border": {
"title": "$:/language/Docs/PaletteColours/alert-border",
"text": "Alert border"
},
"$:/language/Docs/PaletteColours/alert-highlight": {
"title": "$:/language/Docs/PaletteColours/alert-highlight",
"text": "Alert highlight"
},
"$:/language/Docs/PaletteColours/alert-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/alert-muted-foreground",
"text": "Alert muted foreground"
},
"$:/language/Docs/PaletteColours/background": {
"title": "$:/language/Docs/PaletteColours/background",
"text": "General background"
},
"$:/language/Docs/PaletteColours/blockquote-bar": {
"title": "$:/language/Docs/PaletteColours/blockquote-bar",
"text": "Blockquote bar"
},
"$:/language/Docs/PaletteColours/button-background": {
"title": "$:/language/Docs/PaletteColours/button-background",
"text": "Default button background"
},
"$:/language/Docs/PaletteColours/button-border": {
"title": "$:/language/Docs/PaletteColours/button-border",
"text": "Default button border"
},
"$:/language/Docs/PaletteColours/button-foreground": {
"title": "$:/language/Docs/PaletteColours/button-foreground",
"text": "Default button foreground"
},
"$:/language/Docs/PaletteColours/dirty-indicator": {
"title": "$:/language/Docs/PaletteColours/dirty-indicator",
"text": "Unsaved changes indicator"
},
"$:/language/Docs/PaletteColours/code-background": {
"title": "$:/language/Docs/PaletteColours/code-background",
"text": "Code background"
},
"$:/language/Docs/PaletteColours/code-border": {
"title": "$:/language/Docs/PaletteColours/code-border",
"text": "Code border"
},
"$:/language/Docs/PaletteColours/code-foreground": {
"title": "$:/language/Docs/PaletteColours/code-foreground",
"text": "Code foreground"
},
"$:/language/Docs/PaletteColours/download-background": {
"title": "$:/language/Docs/PaletteColours/download-background",
"text": "Download button background"
},
"$:/language/Docs/PaletteColours/download-foreground": {
"title": "$:/language/Docs/PaletteColours/download-foreground",
"text": "Download button foreground"
},
"$:/language/Docs/PaletteColours/dragger-background": {
"title": "$:/language/Docs/PaletteColours/dragger-background",
"text": "Dragger background"
},
"$:/language/Docs/PaletteColours/dragger-foreground": {
"title": "$:/language/Docs/PaletteColours/dragger-foreground",
"text": "Dragger foreground"
},
"$:/language/Docs/PaletteColours/dropdown-background": {
"title": "$:/language/Docs/PaletteColours/dropdown-background",
"text": "Dropdown background"
},
"$:/language/Docs/PaletteColours/dropdown-border": {
"title": "$:/language/Docs/PaletteColours/dropdown-border",
"text": "Dropdown border"
},
"$:/language/Docs/PaletteColours/dropdown-tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/dropdown-tab-background-selected",
"text": "Dropdown tab background for selected tabs"
},
"$:/language/Docs/PaletteColours/dropdown-tab-background": {
"title": "$:/language/Docs/PaletteColours/dropdown-tab-background",
"text": "Dropdown tab background"
},
"$:/language/Docs/PaletteColours/dropzone-background": {
"title": "$:/language/Docs/PaletteColours/dropzone-background",
"text": "Dropzone background"
},
"$:/language/Docs/PaletteColours/external-link-background-hover": {
"title": "$:/language/Docs/PaletteColours/external-link-background-hover",
"text": "External link background hover"
},
"$:/language/Docs/PaletteColours/external-link-background-visited": {
"title": "$:/language/Docs/PaletteColours/external-link-background-visited",
"text": "External link background visited"
},
"$:/language/Docs/PaletteColours/external-link-background": {
"title": "$:/language/Docs/PaletteColours/external-link-background",
"text": "External link background"
},
"$:/language/Docs/PaletteColours/external-link-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground-hover",
"text": "External link foreground hover"
},
"$:/language/Docs/PaletteColours/external-link-foreground-visited": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground-visited",
"text": "External link foreground visited"
},
"$:/language/Docs/PaletteColours/external-link-foreground": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground",
"text": "External link foreground"
},
"$:/language/Docs/PaletteColours/foreground": {
"title": "$:/language/Docs/PaletteColours/foreground",
"text": "General foreground"
},
"$:/language/Docs/PaletteColours/menubar-background": {
"title": "$:/language/Docs/PaletteColours/menubar-background",
"text": "Menu bar background"
},
"$:/language/Docs/PaletteColours/menubar-foreground": {
"title": "$:/language/Docs/PaletteColours/menubar-foreground",
"text": "Menu bar foreground"
},
"$:/language/Docs/PaletteColours/message-background": {
"title": "$:/language/Docs/PaletteColours/message-background",
"text": "Message box background"
},
"$:/language/Docs/PaletteColours/message-border": {
"title": "$:/language/Docs/PaletteColours/message-border",
"text": "Message box border"
},
"$:/language/Docs/PaletteColours/message-foreground": {
"title": "$:/language/Docs/PaletteColours/message-foreground",
"text": "Message box foreground"
},
"$:/language/Docs/PaletteColours/modal-backdrop": {
"title": "$:/language/Docs/PaletteColours/modal-backdrop",
"text": "Modal backdrop"
},
"$:/language/Docs/PaletteColours/modal-background": {
"title": "$:/language/Docs/PaletteColours/modal-background",
"text": "Modal background"
},
"$:/language/Docs/PaletteColours/modal-border": {
"title": "$:/language/Docs/PaletteColours/modal-border",
"text": "Modal border"
},
"$:/language/Docs/PaletteColours/modal-footer-background": {
"title": "$:/language/Docs/PaletteColours/modal-footer-background",
"text": "Modal footer background"
},
"$:/language/Docs/PaletteColours/modal-footer-border": {
"title": "$:/language/Docs/PaletteColours/modal-footer-border",
"text": "Modal footer border"
},
"$:/language/Docs/PaletteColours/modal-header-border": {
"title": "$:/language/Docs/PaletteColours/modal-header-border",
"text": "Modal header border"
},
"$:/language/Docs/PaletteColours/muted-foreground": {
"title": "$:/language/Docs/PaletteColours/muted-foreground",
"text": "General muted foreground"
},
"$:/language/Docs/PaletteColours/notification-background": {
"title": "$:/language/Docs/PaletteColours/notification-background",
"text": "Notification background"
},
"$:/language/Docs/PaletteColours/notification-border": {
"title": "$:/language/Docs/PaletteColours/notification-border",
"text": "Notification border"
},
"$:/language/Docs/PaletteColours/page-background": {
"title": "$:/language/Docs/PaletteColours/page-background",
"text": "Page background"
},
"$:/language/Docs/PaletteColours/pre-background": {
"title": "$:/language/Docs/PaletteColours/pre-background",
"text": "Preformatted code background"
},
"$:/language/Docs/PaletteColours/pre-border": {
"title": "$:/language/Docs/PaletteColours/pre-border",
"text": "Preformatted code border"
},
"$:/language/Docs/PaletteColours/primary": {
"title": "$:/language/Docs/PaletteColours/primary",
"text": "General primary"
},
"$:/language/Docs/PaletteColours/select-tag-background": {
"title": "$:/language/Docs/PaletteColours/select-tag-background",
"text": "`<select>` element background"
},
"$:/language/Docs/PaletteColours/select-tag-foreground": {
"title": "$:/language/Docs/PaletteColours/select-tag-foreground",
"text": "`<select>` element text"
},
"$:/language/Docs/PaletteColours/sidebar-button-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-button-foreground",
"text": "Sidebar button foreground"
},
"$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover",
"text": "Sidebar controls foreground hover"
},
"$:/language/Docs/PaletteColours/sidebar-controls-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground",
"text": "Sidebar controls foreground"
},
"$:/language/Docs/PaletteColours/sidebar-foreground-shadow": {
"title": "$:/language/Docs/PaletteColours/sidebar-foreground-shadow",
"text": "Sidebar foreground shadow"
},
"$:/language/Docs/PaletteColours/sidebar-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-foreground",
"text": "Sidebar foreground"
},
"$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover",
"text": "Sidebar muted foreground hover"
},
"$:/language/Docs/PaletteColours/sidebar-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground",
"text": "Sidebar muted foreground"
},
"$:/language/Docs/PaletteColours/sidebar-tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-background-selected",
"text": "Sidebar tab background for selected tabs"
},
"$:/language/Docs/PaletteColours/sidebar-tab-background": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-background",
"text": "Sidebar tab background"
},
"$:/language/Docs/PaletteColours/sidebar-tab-border-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-border-selected",
"text": "Sidebar tab border for selected tabs"
},
"$:/language/Docs/PaletteColours/sidebar-tab-border": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-border",
"text": "Sidebar tab border"
},
"$:/language/Docs/PaletteColours/sidebar-tab-divider": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-divider",
"text": "Sidebar tab divider"
},
"$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected",
"text": "Sidebar tab foreground for selected tabs"
},
"$:/language/Docs/PaletteColours/sidebar-tab-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground",
"text": "Sidebar tab foreground"
},
"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover",
"text": "Sidebar tiddler link foreground hover"
},
"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground",
"text": "Sidebar tiddler link foreground"
},
"$:/language/Docs/PaletteColours/site-title-foreground": {
"title": "$:/language/Docs/PaletteColours/site-title-foreground",
"text": "Site title foreground"
},
"$:/language/Docs/PaletteColours/static-alert-foreground": {
"title": "$:/language/Docs/PaletteColours/static-alert-foreground",
"text": "Static alert foreground"
},
"$:/language/Docs/PaletteColours/tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/tab-background-selected",
"text": "Tab background for selected tabs"
},
"$:/language/Docs/PaletteColours/tab-background": {
"title": "$:/language/Docs/PaletteColours/tab-background",
"text": "Tab background"
},
"$:/language/Docs/PaletteColours/tab-border-selected": {
"title": "$:/language/Docs/PaletteColours/tab-border-selected",
"text": "Tab border for selected tabs"
},
"$:/language/Docs/PaletteColours/tab-border": {
"title": "$:/language/Docs/PaletteColours/tab-border",
"text": "Tab border"
},
"$:/language/Docs/PaletteColours/tab-divider": {
"title": "$:/language/Docs/PaletteColours/tab-divider",
"text": "Tab divider"
},
"$:/language/Docs/PaletteColours/tab-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/tab-foreground-selected",
"text": "Tab foreground for selected tabs"
},
"$:/language/Docs/PaletteColours/tab-foreground": {
"title": "$:/language/Docs/PaletteColours/tab-foreground",
"text": "Tab foreground"
},
"$:/language/Docs/PaletteColours/table-border": {
"title": "$:/language/Docs/PaletteColours/table-border",
"text": "Table border"
},
"$:/language/Docs/PaletteColours/table-footer-background": {
"title": "$:/language/Docs/PaletteColours/table-footer-background",
"text": "Table footer background"
},
"$:/language/Docs/PaletteColours/table-header-background": {
"title": "$:/language/Docs/PaletteColours/table-header-background",
"text": "Table header background"
},
"$:/language/Docs/PaletteColours/tag-background": {
"title": "$:/language/Docs/PaletteColours/tag-background",
"text": "Tag background"
},
"$:/language/Docs/PaletteColours/tag-foreground": {
"title": "$:/language/Docs/PaletteColours/tag-foreground",
"text": "Tag foreground"
},
"$:/language/Docs/PaletteColours/tiddler-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-background",
"text": "Tiddler background"
},
"$:/language/Docs/PaletteColours/tiddler-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-border",
"text": "Tiddler border"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover",
"text": "Tiddler controls foreground hover"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected",
"text": "Tiddler controls foreground for selected controls"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground",
"text": "Tiddler controls foreground"
},
"$:/language/Docs/PaletteColours/tiddler-editor-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-background",
"text": "Tiddler editor background"
},
"$:/language/Docs/PaletteColours/tiddler-editor-border-image": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-border-image",
"text": "Tiddler editor border image"
},
"$:/language/Docs/PaletteColours/tiddler-editor-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-border",
"text": "Tiddler editor border"
},
"$:/language/Docs/PaletteColours/tiddler-editor-fields-even": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-even",
"text": "Tiddler editor background for even fields"
},
"$:/language/Docs/PaletteColours/tiddler-editor-fields-odd": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd",
"text": "Tiddler editor background for odd fields"
},
"$:/language/Docs/PaletteColours/tiddler-info-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-background",
"text": "Tiddler info panel background"
},
"$:/language/Docs/PaletteColours/tiddler-info-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-border",
"text": "Tiddler info panel border"
},
"$:/language/Docs/PaletteColours/tiddler-info-tab-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-tab-background",
"text": "Tiddler info panel tab background"
},
"$:/language/Docs/PaletteColours/tiddler-link-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-link-background",
"text": "Tiddler link background"
},
"$:/language/Docs/PaletteColours/tiddler-link-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-link-foreground",
"text": "Tiddler link foreground"
},
"$:/language/Docs/PaletteColours/tiddler-subtitle-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground",
"text": "Tiddler subtitle foreground"
},
"$:/language/Docs/PaletteColours/tiddler-title-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-title-foreground",
"text": "Tiddler title foreground"
},
"$:/language/Docs/PaletteColours/toolbar-new-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-new-button",
"text": "Toolbar 'new tiddler' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-options-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-options-button",
"text": "Toolbar 'options' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-save-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-save-button",
"text": "Toolbar 'save' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-info-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-info-button",
"text": "Toolbar 'info' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-edit-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-edit-button",
"text": "Toolbar 'edit' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-close-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-close-button",
"text": "Toolbar 'close' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-delete-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-delete-button",
"text": "Toolbar 'delete' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-cancel-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-cancel-button",
"text": "Toolbar 'cancel' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-done-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-done-button",
"text": "Toolbar 'done' button foreground"
},
"$:/language/Docs/PaletteColours/untagged-background": {
"title": "$:/language/Docs/PaletteColours/untagged-background",
"text": "Untagged pill background"
},
"$:/language/Docs/PaletteColours/very-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/very-muted-foreground",
"text": "Very muted foreground"
},
"$:/language/EditTemplate/Body/External/Hint": {
"title": "$:/language/EditTemplate/Body/External/Hint",
"text": "This tiddler shows content stored outside of the main TiddlyWiki file. You can edit the tags and fields but cannot directly edit the content itself"
},
"$:/language/EditTemplate/Body/Placeholder": {
"title": "$:/language/EditTemplate/Body/Placeholder",
"text": "Type the text for this tiddler"
},
"$:/language/EditTemplate/Body/Preview/Type/Output": {
"title": "$:/language/EditTemplate/Body/Preview/Type/Output",
"text": "output"
},
"$:/language/EditTemplate/Field/Remove/Caption": {
"title": "$:/language/EditTemplate/Field/Remove/Caption",
"text": "remove field"
},
"$:/language/EditTemplate/Field/Remove/Hint": {
"title": "$:/language/EditTemplate/Field/Remove/Hint",
"text": "Remove field"
},
"$:/language/EditTemplate/Field/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Field/Dropdown/Caption",
"text": "field list"
},
"$:/language/EditTemplate/Field/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Field/Dropdown/Hint",
"text": "Show field list"
},
"$:/language/EditTemplate/Fields/Add/Button": {
"title": "$:/language/EditTemplate/Fields/Add/Button",
"text": "add"
},
"$:/language/EditTemplate/Fields/Add/Button/Hint": {
"title": "$:/language/EditTemplate/Fields/Add/Button/Hint",
"text": "Add the new field to the tiddler"
},
"$:/language/EditTemplate/Fields/Add/Name/Placeholder": {
"title": "$:/language/EditTemplate/Fields/Add/Name/Placeholder",
"text": "field name"
},
"$:/language/EditTemplate/Fields/Add/Prompt": {
"title": "$:/language/EditTemplate/Fields/Add/Prompt",
"text": "Add a new field:"
},
"$:/language/EditTemplate/Fields/Add/Value/Placeholder": {
"title": "$:/language/EditTemplate/Fields/Add/Value/Placeholder",
"text": "field value"
},
"$:/language/EditTemplate/Fields/Add/Dropdown/System": {
"title": "$:/language/EditTemplate/Fields/Add/Dropdown/System",
"text": "System fields"
},
"$:/language/EditTemplate/Fields/Add/Dropdown/User": {
"title": "$:/language/EditTemplate/Fields/Add/Dropdown/User",
"text": "User fields"
},
"$:/language/EditTemplate/Shadow/Warning": {
"title": "$:/language/EditTemplate/Shadow/Warning",
"text": "This is a shadow tiddler. Any changes you make will override the default version from the plugin <<pluginLink>>"
},
"$:/language/EditTemplate/Shadow/OverriddenWarning": {
"title": "$:/language/EditTemplate/Shadow/OverriddenWarning",
"text": "This is a modified shadow tiddler. You can revert to the default version in the plugin <<pluginLink>> by deleting this tiddler"
},
"$:/language/EditTemplate/Tags/Add/Button": {
"title": "$:/language/EditTemplate/Tags/Add/Button",
"text": "add"
},
"$:/language/EditTemplate/Tags/Add/Button/Hint": {
"title": "$:/language/EditTemplate/Tags/Add/Button/Hint",
"text": "add tag"
},
"$:/language/EditTemplate/Tags/Add/Placeholder": {
"title": "$:/language/EditTemplate/Tags/Add/Placeholder",
"text": "tag name"
},
"$:/language/EditTemplate/Tags/ClearInput/Caption": {
"title": "$:/language/EditTemplate/Tags/ClearInput/Caption",
"text": "clear input"
},
"$:/language/EditTemplate/Tags/ClearInput/Hint": {
"title": "$:/language/EditTemplate/Tags/ClearInput/Hint",
"text": "Clear tag input"
},
"$:/language/EditTemplate/Tags/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Tags/Dropdown/Caption",
"text": "tag list"
},
"$:/language/EditTemplate/Tags/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Tags/Dropdown/Hint",
"text": "Show tag list"
},
"$:/language/EditTemplate/Title/BadCharacterWarning": {
"title": "$:/language/EditTemplate/Title/BadCharacterWarning",
"text": "Warning: avoid using any of the characters <<bad-chars>> in tiddler titles"
},
"$:/language/EditTemplate/Title/Exists/Prompt": {
"title": "$:/language/EditTemplate/Title/Exists/Prompt",
"text": "Target tiddler already exists"
},
"$:/language/EditTemplate/Title/Relink/Prompt": {
"title": "$:/language/EditTemplate/Title/Relink/Prompt",
"text": "Update ''<$text text=<<fromTitle>>/>'' to ''<$text text=<<toTitle>>/>'' in the //tags// and //list// fields of other tiddlers"
},
"$:/language/EditTemplate/Title/References/Prompt": {
"title": "$:/language/EditTemplate/Title/References/Prompt",
"text": "The following references to this tiddler will not be automatically updated:"
},
"$:/language/EditTemplate/Type/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Type/Dropdown/Caption",
"text": "content type list"
},
"$:/language/EditTemplate/Type/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Type/Dropdown/Hint",
"text": "Show content type list"
},
"$:/language/EditTemplate/Type/Delete/Caption": {
"title": "$:/language/EditTemplate/Type/Delete/Caption",
"text": "delete content type"
},
"$:/language/EditTemplate/Type/Delete/Hint": {
"title": "$:/language/EditTemplate/Type/Delete/Hint",
"text": "Delete content type"
},
"$:/language/EditTemplate/Type/Placeholder": {
"title": "$:/language/EditTemplate/Type/Placeholder",
"text": "content type"
},
"$:/language/EditTemplate/Type/Prompt": {
"title": "$:/language/EditTemplate/Type/Prompt",
"text": "Type:"
},
"$:/language/Exporters/StaticRiver": {
"title": "$:/language/Exporters/StaticRiver",
"text": "Static HTML"
},
"$:/language/Exporters/JsonFile": {
"title": "$:/language/Exporters/JsonFile",
"text": "JSON file"
},
"$:/language/Exporters/CsvFile": {
"title": "$:/language/Exporters/CsvFile",
"text": "CSV file"
},
"$:/language/Exporters/TidFile": {
"title": "$:/language/Exporters/TidFile",
"text": "\".tid\" file"
},
"$:/language/Docs/Fields/_canonical_uri": {
"title": "$:/language/Docs/Fields/_canonical_uri",
"text": "The full URI of an external image tiddler"
},
"$:/language/Docs/Fields/bag": {
"title": "$:/language/Docs/Fields/bag",
"text": "The name of the bag from which a tiddler came"
},
"$:/language/Docs/Fields/caption": {
"title": "$:/language/Docs/Fields/caption",
"text": "The text to be displayed on a tab or button"
},
"$:/language/Docs/Fields/color": {
"title": "$:/language/Docs/Fields/color",
"text": "The CSS color value associated with a tiddler"
},
"$:/language/Docs/Fields/component": {
"title": "$:/language/Docs/Fields/component",
"text": "The name of the component responsible for an [[alert tiddler|AlertMechanism]]"
},
"$:/language/Docs/Fields/current-tiddler": {
"title": "$:/language/Docs/Fields/current-tiddler",
"text": "Used to cache the top tiddler in a [[history list|HistoryMechanism]]"
},
"$:/language/Docs/Fields/created": {
"title": "$:/language/Docs/Fields/created",
"text": "The date a tiddler was created"
},
"$:/language/Docs/Fields/creator": {
"title": "$:/language/Docs/Fields/creator",
"text": "The name of the person who created a tiddler"
},
"$:/language/Docs/Fields/dependents": {
"title": "$:/language/Docs/Fields/dependents",
"text": "For a plugin, lists the dependent plugin titles"
},
"$:/language/Docs/Fields/description": {
"title": "$:/language/Docs/Fields/description",
"text": "The descriptive text for a plugin, or a modal dialogue"
},
"$:/language/Docs/Fields/draft.of": {
"title": "$:/language/Docs/Fields/draft.of",
"text": "For draft tiddlers, contains the title of the tiddler of which this is a draft"
},
"$:/language/Docs/Fields/draft.title": {
"title": "$:/language/Docs/Fields/draft.title",
"text": "For draft tiddlers, contains the proposed new title of the tiddler"
},
"$:/language/Docs/Fields/footer": {
"title": "$:/language/Docs/Fields/footer",
"text": "The footer text for a wizard"
},
"$:/language/Docs/Fields/hide-body": {
"title": "$:/language/Docs/Fields/hide-body",
"text": "The view template will hide bodies of tiddlers if set to: ''yes''"
},
"$:/language/Docs/Fields/icon": {
"title": "$:/language/Docs/Fields/icon",
"text": "The title of the tiddler containing the icon associated with a tiddler"
},
"$:/language/Docs/Fields/library": {
"title": "$:/language/Docs/Fields/library",
"text": "Indicates that a tiddler should be saved as a JavaScript library if set to: ''yes''"
},
"$:/language/Docs/Fields/list": {
"title": "$:/language/Docs/Fields/list",
"text": "An ordered list of tiddler titles associated with a tiddler"
},
"$:/language/Docs/Fields/list-before": {
"title": "$:/language/Docs/Fields/list-before",
"text": "If set, the title of a tiddler before which this tiddler should be added to the ordered list of tiddler titles, or at the start of the list if this field is present but empty"
},
"$:/language/Docs/Fields/list-after": {
"title": "$:/language/Docs/Fields/list-after",
"text": "If set, the title of the tiddler after which this tiddler should be added to the ordered list of tiddler titles, or at the end of the list if this field is present but empty"
},
"$:/language/Docs/Fields/modified": {
"title": "$:/language/Docs/Fields/modified",
"text": "The date and time at which a tiddler was last modified"
},
"$:/language/Docs/Fields/modifier": {
"title": "$:/language/Docs/Fields/modifier",
"text": "The tiddler title associated with the person who last modified a tiddler"
},
"$:/language/Docs/Fields/name": {
"title": "$:/language/Docs/Fields/name",
"text": "The human readable name associated with a plugin tiddler"
},
"$:/language/Docs/Fields/plugin-priority": {
"title": "$:/language/Docs/Fields/plugin-priority",
"text": "A numerical value indicating the priority of a plugin tiddler"
},
"$:/language/Docs/Fields/plugin-type": {
"title": "$:/language/Docs/Fields/plugin-type",
"text": "The type of plugin in a plugin tiddler"
},
"$:/language/Docs/Fields/revision": {
"title": "$:/language/Docs/Fields/revision",
"text": "The revision of the tiddler held at the server"
},
"$:/language/Docs/Fields/released": {
"title": "$:/language/Docs/Fields/released",
"text": "Date of a TiddlyWiki release"
},
"$:/language/Docs/Fields/source": {
"title": "$:/language/Docs/Fields/source",
"text": "The source URL associated with a tiddler"
},
"$:/language/Docs/Fields/subtitle": {
"title": "$:/language/Docs/Fields/subtitle",
"text": "The subtitle text for a wizard"
},
"$:/language/Docs/Fields/tags": {
"title": "$:/language/Docs/Fields/tags",
"text": "A list of tags associated with a tiddler"
},
"$:/language/Docs/Fields/text": {
"title": "$:/language/Docs/Fields/text",
"text": "The body text of a tiddler"
},
"$:/language/Docs/Fields/throttle.refresh": {
"title": "$:/language/Docs/Fields/throttle.refresh",
"text": "If present, throttles refreshes of this tiddler"
},
"$:/language/Docs/Fields/title": {
"title": "$:/language/Docs/Fields/title",
"text": "The unique name of a tiddler"
},
"$:/language/Docs/Fields/toc-link": {
"title": "$:/language/Docs/Fields/toc-link",
"text": "Suppresses the tiddler's link in a Table of Contents tree if set to: ''no''"
},
"$:/language/Docs/Fields/type": {
"title": "$:/language/Docs/Fields/type",
"text": "The content type of a tiddler"
},
"$:/language/Docs/Fields/version": {
"title": "$:/language/Docs/Fields/version",
"text": "Version information for a plugin"
},
"$:/language/Docs/Fields/_is_skinny": {
"title": "$:/language/Docs/Fields/_is_skinny",
"text": "If present, indicates that the tiddler text field must be loaded from the server"
},
"$:/language/Filters/AllTiddlers": {
"title": "$:/language/Filters/AllTiddlers",
"text": "All tiddlers except system tiddlers"
},
"$:/language/Filters/RecentSystemTiddlers": {
"title": "$:/language/Filters/RecentSystemTiddlers",
"text": "Recently modified tiddlers, including system tiddlers"
},
"$:/language/Filters/RecentTiddlers": {
"title": "$:/language/Filters/RecentTiddlers",
"text": "Recently modified tiddlers"
},
"$:/language/Filters/AllTags": {
"title": "$:/language/Filters/AllTags",
"text": "All tags except system tags"
},
"$:/language/Filters/Missing": {
"title": "$:/language/Filters/Missing",
"text": "Missing tiddlers"
},
"$:/language/Filters/Drafts": {
"title": "$:/language/Filters/Drafts",
"text": "Draft tiddlers"
},
"$:/language/Filters/Orphans": {
"title": "$:/language/Filters/Orphans",
"text": "Orphan tiddlers"
},
"$:/language/Filters/SystemTiddlers": {
"title": "$:/language/Filters/SystemTiddlers",
"text": "System tiddlers"
},
"$:/language/Filters/ShadowTiddlers": {
"title": "$:/language/Filters/ShadowTiddlers",
"text": "Shadow tiddlers"
},
"$:/language/Filters/OverriddenShadowTiddlers": {
"title": "$:/language/Filters/OverriddenShadowTiddlers",
"text": "Overridden shadow tiddlers"
},
"$:/language/Filters/SessionTiddlers": {
"title": "$:/language/Filters/SessionTiddlers",
"text": "Tiddlers modified since the wiki was loaded"
},
"$:/language/Filters/SystemTags": {
"title": "$:/language/Filters/SystemTags",
"text": "System tags"
},
"$:/language/Filters/StoryList": {
"title": "$:/language/Filters/StoryList",
"text": "Tiddlers in the story river, excluding <$text text=\"$:/AdvancedSearch\"/>"
},
"$:/language/Filters/TypedTiddlers": {
"title": "$:/language/Filters/TypedTiddlers",
"text": "Non wiki-text tiddlers"
},
"GettingStarted": {
"title": "GettingStarted",
"text": "\\define lingo-base() $:/language/ControlPanel/Basics/\nWelcome to ~TiddlyWiki and the ~TiddlyWiki community\n\nBefore you start storing important information in ~TiddlyWiki it is vital to make sure that you can reliably save changes. See https://tiddlywiki.com/#GettingStarted for details\n\n!! Set up this ~TiddlyWiki\n\n<div class=\"tc-control-panel\">\n\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n</div>\n\nSee the [[control panel|$:/ControlPanel]] for more options.\n"
},
"$:/language/Help/build": {
"title": "$:/language/Help/build",
"description": "Automatically run configured commands",
"text": "Build the specified build targets for the current wiki. If no build targets are specified then all available targets will be built.\n\n```\n--build <target> [<target> ...]\n```\n\nBuild targets are defined in the `tiddlywiki.info` file of a wiki folder.\n\n"
},
"$:/language/Help/clearpassword": {
"title": "$:/language/Help/clearpassword",
"description": "Clear a password for subsequent crypto operations",
"text": "Clear the password for subsequent crypto operations\n\n```\n--clearpassword\n```\n"
},
"$:/language/Help/default": {
"title": "$:/language/Help/default",
"text": "\\define commandTitle()\n$:/language/Help/$(command)$\n\\end\n```\nusage: tiddlywiki [<wikifolder>] [--<command> [<args>...]...]\n```\n\nAvailable commands:\n\n<ul>\n<$list filter=\"[commands[]sort[title]]\" variable=\"command\">\n<li><$link to=<<commandTitle>>><$macrocall $name=\"command\" $type=\"text/plain\" $output=\"text/plain\"/></$link>: <$transclude tiddler=<<commandTitle>> field=\"description\"/></li>\n</$list>\n</ul>\n\nTo get detailed help on a command:\n\n```\ntiddlywiki --help <command>\n```\n"
},
"$:/language/Help/deletetiddlers": {
"title": "$:/language/Help/deletetiddlers",
"description": "Deletes a group of tiddlers",
"text": "<<.from-version \"5.1.20\">> Deletes a group of tiddlers identified by a filter.\n\n```\n--deletetiddlers <filter>\n```\n"
},
"$:/language/Help/editions": {
"title": "$:/language/Help/editions",
"description": "Lists the available editions of TiddlyWiki",
"text": "Lists the names and descriptions of the available editions. You can create a new wiki of a specified edition with the `--init` command.\n\n```\n--editions\n```\n"
},
"$:/language/Help/fetch": {
"title": "$:/language/Help/fetch",
"description": "Fetch tiddlers from wiki by URL",
"text": "Fetch one or more files over HTTP/HTTPS, and import the tiddlers matching a filter, optionally transforming the incoming titles.\n\n```\n--fetch file <url> <import-filter> <transform-filter>\n--fetch files <url-filter> <import-filter> <transform-filter>\n--fetch raw-file <url> <transform-filter>\n--fetch raw-files <url-filter> <transform-filter>\n```\n\nThe \"file\" and \"files\" variants fetch the specified files and attempt to import the tiddlers within them (the same processing as if the files were dragged into the browser window). The \"raw-file\" and \"raw-files\" variants fetch the specified files and then store the raw file data in tiddlers, without applying the import logic.\n\nWith the \"file\" and \"raw-file\" variants only a single file is fetched and the first parameter is the URL of the file to read.\n\nWith the \"files\" and \"raw-files\" variants, multiple files are fetched and the first parameter is a filter yielding a list of URLs of the files to read. For example, given a set of tiddlers tagged \"remote-server\" that have a field \"url\" the filter `[tag[remote-server]get[url]]` will retrieve all the available URLs.\n\nFor the \"file\" and \"files\" variants, the `<import-filter>` parameter specifies a filter determining which tiddlers are imported. It defaults to `[all[tiddlers]]` if not provided.\n\nFor all variants, the `<transform-filter>` parameter specifies an optional filter that transforms the titles of the imported tiddlers. For example, `[addprefix[$:/myimports/]]` would add the prefix `$:/myimports/` to each title.\n\nPreceding the `--fetch` command with `--verbose` will output progress information during the import.\n\nNote that TiddlyWiki will not fetch an older version of an already loaded plugin.\n\nThe following example retrieves all the non-system tiddlers from https://tiddlywiki.com and saves them to a JSON file:\n\n```\ntiddlywiki --verbose --fetch file \"https://tiddlywiki.com/\" \"[!is[system]]\" \"\" --rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[!is[system]]\"\n```\n\nThe following example retrieves the \"favicon\" file from tiddlywiki.com and saves it in a file called \"output.ico\". Note that the intermediate tiddler \"Icon Tiddler\" is quoted in the \"--fetch\" command because it is being used as a transformation filter to replace the default title, while there are no quotes for the \"--savetiddler\" command because it is being used directly as a title.\n\n```\ntiddlywiki --verbose --fetch raw-file \"https://tiddlywiki.com/favicon.ico\" \"[[Icon Tiddler]]\" --savetiddler \"Icon Tiddler\" output.ico\n```\n\n"
},
"$:/language/Help/help": {
"title": "$:/language/Help/help",
"description": "Display help for TiddlyWiki commands",
"text": "Displays help text for a command:\n\n```\n--help [<command>]\n```\n\nIf the command name is omitted then a list of available commands is displayed.\n"
},
"$:/language/Help/import": {
"title": "$:/language/Help/import",
"description": "Import tiddlers from a file",
"text": "Import tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The deserializer must be explicitly specified, unlike the `load` command which infers the deserializer from the file extension.\n\n```\n--import <filepath> <deserializer> [<title>] [<encoding>]\n```\n\nThe deserializers in the core include:\n\n* application/javascript\n* application/json\n* application/x-tiddler\n* application/x-tiddler-html-div\n* application/x-tiddlers\n* text/html\n* text/plain\n\nThe title of the imported tiddler defaults to the filename.\n\nThe encoding defaults to \"utf8\", but can be \"base64\" for importing binary files.\n\nNote that TiddlyWiki will not import an older version of an already loaded plugin.\n"
},
"$:/language/Help/init": {
"title": "$:/language/Help/init",
"description": "Initialise a new wiki folder",
"text": "Initialise an empty [[WikiFolder|WikiFolders]] with a copy of the specified edition.\n\n```\n--init <edition> [<edition> ...]\n```\n\nFor example:\n\n```\ntiddlywiki ./MyWikiFolder --init empty\n```\n\nNote:\n\n* The wiki folder directory will be created if necessary\n* The \"edition\" defaults to ''empty''\n* The init command will fail if the wiki folder is not empty\n* The init command removes any `includeWikis` definitions in the edition's `tiddlywiki.info` file\n* When multiple editions are specified, editions initialised later will overwrite any files shared with earlier editions (so, the final `tiddlywiki.info` file will be copied from the last edition)\n* `--editions` returns a list of available editions\n"
},
"$:/language/Help/listen": {
"title": "$:/language/Help/listen",
"description": "Provides an HTTP server interface to TiddlyWiki",
"text": "Serves a wiki over HTTP.\n\nThe listen command uses NamedCommandParameters:\n\n```\n--listen [<name>=<value>]...\n```\n\nAll parameters are optional with safe defaults, and can be specified in any order. The recognised parameters are:\n\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''path-prefix'' - optional prefix for paths\n* ''port'' - port number on which to listen; non-numeric values are interpreted as a system environment variable from which the port number is extracted (defaults to \"8080\")\n* ''credentials'' - pathname of credentials CSV file (relative to wiki folder)\n* ''anon-username'' - the username for signing edits for anonymous users\n* ''username'' - optional username for basic authentication\n* ''password'' - optional password for basic authentication\n* ''authenticated-user-header'' - optional name of header to be used for trusted authentication\n* ''readers'' - comma separated list of principals allowed to read from this wiki\n* ''writers'' - comma separated list of principals allowed to write to this wiki\n* ''csrf-disable'' - set to \"yes\" to disable CSRF checks (defaults to \"no\")\n* ''root-tiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''root-render-type'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''root-serve-type'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''tls-cert'' - pathname of TLS certificate file (relative to wiki folder)\n* ''tls-key'' - pathname of TLS key file (relative to wiki folder)\n* ''debug-level'' - optional debug level; set to \"debug\" to view request details (defaults to \"none\")\n* ''gzip'' - set to \"yes\" to enable gzip compression for some http endpoints (defaults to \"no\")\n\nFor information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.\n\n"
},
"$:/language/Help/load": {
"title": "$:/language/Help/load",
"description": "Load tiddlers from a file",
"text": "Load tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The processing applied to incoming files is determined by the file extension. Use the alternative `import` command if you need to specify the deserializer and encoding explicitly.\n\n```\n--load <filepath> [noerror]\n--load <dirpath> [noerror]\n```\n\nBy default, the load command raises an error if no tiddlers are found. The error can be suppressed by providing the optional \"noerror\" parameter.\n\nTo load tiddlers from an encrypted TiddlyWiki file you should first specify the password with the PasswordCommand. For example:\n\n```\ntiddlywiki ./MyWiki --password pa55w0rd --load my_encrypted_wiki.html\n```\n\nNote that TiddlyWiki will not load an older version of an already loaded plugin.\n"
},
"$:/language/Help/makelibrary": {
"title": "$:/language/Help/makelibrary",
"description": "Construct library plugin required by upgrade process",
"text": "Constructs the `$:/UpgradeLibrary` tiddler for the upgrade process.\n\nThe upgrade library is formatted as an ordinary plugin tiddler with the plugin type `library`. It contains a copy of each of the plugins, themes and language packs available within the TiddlyWiki5 repository.\n\nThis command is intended for internal use; it is only relevant to users constructing a custom upgrade procedure.\n\n```\n--makelibrary <title>\n```\n\nThe title argument defaults to `$:/UpgradeLibrary`.\n"
},
"$:/language/Help/notfound": {
"title": "$:/language/Help/notfound",
"text": "No such help item"
},
"$:/language/Help/output": {
"title": "$:/language/Help/output",
"description": "Set the base output directory for subsequent commands",
"text": "Sets the base output directory for subsequent commands. The default output directory is the `output` subdirectory of the edition directory.\n\n```\n--output <pathname>\n```\n\nIf the specified pathname is relative then it is resolved relative to the current working directory. For example `--output .` sets the output directory to the current working directory.\n\n"
},
"$:/language/Help/password": {
"title": "$:/language/Help/password",
"description": "Set a password for subsequent crypto operations",
"text": "Set a password for subsequent crypto operations\n\n```\n--password <password>\n```\n\n''Note'': This should not be used for serving TiddlyWiki with password protection. Instead, see the password option under the [[ServerCommand]].\n"
},
"$:/language/Help/render": {
"title": "$:/language/Help/render",
"description": "Renders individual tiddlers to files",
"text": "Render individual tiddlers identified by a filter and save the results to the specified files.\n\nOptionally, the title of a template tiddler can be specified. In this case, instead of directly rendering each tiddler, the template tiddler is rendered with the \"currentTiddler\" variable set to the title of the tiddler that is being rendered.\n\nA name and value for an additional variable may optionally also be specified.\n\n```\n--render <tiddler-filter> [<filename-filter>] [<render-type>] [<template>] [<name>] [<value>]\n```\n\n* ''tiddler-filter'': A filter identifying the tiddler(s) to be rendered\n* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]addsuffix[.html]]`, which uses the unchanged tiddler title as the filename\n* ''render-type'': Optional render type: `text/html` (the default) returns the full HTML text and `text/plain` just returns the text content (ie it ignores HTML tags and other unprintable material)\n* ''template'': Optional template through which each tiddler is rendered\n* ''name'': Name of optional variable\n* ''value'': Value of optional variable\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nNotes:\n\n* The output directory is not cleared of any existing files\n* Any missing directories in the path to the filename are automatically created.\n* When referring to a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets : `--render \"[[Motovun Jack.jpg]]\"`\n* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being rendered, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`\n* The `--render` command is a more flexible replacement for both the `--rendertiddler` and `--rendertiddlers` commands, which are deprecated\n\nExamples:\n\n* `--render \"[!is[system]]\" \"[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]\"` -- renders all non-system tiddlers as files in the subdirectory \"tiddlers\" with URL-encoded titles and the extension HTML\n\n"
},
"$:/language/Help/rendertiddler": {
"title": "$:/language/Help/rendertiddler",
"description": "Render an individual tiddler as a specified ContentType",
"text": "(Note: The `--rendertiddler` command is deprecated in favour of the new, more flexible `--render` command)\n\nRender an individual tiddler as a specified ContentType, defaulting to `text/html` and save it to the specified filename.\n\nOptionally the title of a template tiddler can be specified, in which case the template tiddler is rendered with the \"currentTiddler\" variable set to the tiddler that is being rendered (the first parameter value).\n\nA name and value for an additional variable may optionally also be specified.\n\n```\n--rendertiddler <title> <filename> [<type>] [<template>] [<name>] [<value>]\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n\nFor example, the following command saves all tiddlers matching the filter `[tag[done]]` to a JSON file titled `output.json` by employing the core template `$:/core/templates/exporters/JsonFile`.\n\n```\n--rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[tag[done]]\"\n```\n"
},
"$:/language/Help/rendertiddlers": {
"title": "$:/language/Help/rendertiddlers",
"description": "Render tiddlers matching a filter to a specified ContentType",
"text": "(Note: The `--rendertiddlers` command is deprecated in favour of the new, more flexible `--render` command)\n\nRender a set of tiddlers matching a filter to separate files of a specified ContentType (defaults to `text/html`) and extension (defaults to `.html`).\n\n```\n--rendertiddlers '<filter>' <template> <pathname> [<type>] [<extension>] [\"noclean\"]\n```\n\nFor example:\n\n```\n--rendertiddlers '[!is[system]]' $:/core/templates/static.tiddler.html ./static text/plain\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny files in the target directory are deleted unless the ''noclean'' flag is specified. The target directory is recursively created if it is missing.\n"
},
"$:/language/Help/save": {
"title": "$:/language/Help/save",
"description": "Saves individual raw tiddlers to files",
"text": "Saves individual tiddlers identified by a filter in their raw text or binary format to the specified files.\n\n```\n--save <tiddler-filter> <filename-filter>\n```\n\n* ''tiddler-filter'': A filter identifying the tiddler(s) to be saved\n* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]]`, which uses the unchanged tiddler title as the filename\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nNotes:\n\n* The output directory is not cleared of any existing files\n* Any missing directories in the path to the filename are automatically created.\n* When saving a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets : `--save \"[[Motovun Jack.jpg]]\"`\n* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being saved, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`\n* The `--save` command is a more flexible replacement for both the `--savetiddler` and `--savetiddlers` commands, which are deprecated\n\nExamples:\n\n* `--save \"[!is[system]is[image]]\" \"[encodeuricomponent[]addprefix[tiddlers/]]\"` -- saves all non-system image tiddlers as files in the subdirectory \"tiddlers\" with URL-encoded titles\n"
},
"$:/language/Help/savetiddler": {
"title": "$:/language/Help/savetiddler",
"description": "Saves a raw tiddler to a file",
"text": "(Note: The `--savetiddler` command is deprecated in favour of the new, more flexible `--save` command)\n\nSaves an individual tiddler in its raw text or binary format to the specified filename.\n\n```\n--savetiddler <title> <filename>\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n"
},
"$:/language/Help/savetiddlers": {
"title": "$:/language/Help/savetiddlers",
"description": "Saves a group of raw tiddlers to a directory",
"text": "(Note: The `--savetiddlers` command is deprecated in favour of the new, more flexible `--save` command)\n\nSaves a group of tiddlers in their raw text or binary format to the specified directory.\n\n```\n--savetiddlers <filter> <pathname> [\"noclean\"]\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nThe output directory is cleared of existing files before saving the specified files. The deletion can be disabled by specifying the ''noclean'' flag.\n\nAny missing directories in the pathname are automatically created.\n"
},
"$:/language/Help/savewikifolder": {
"title": "$:/language/Help/savewikifolder",
"description": "Saves a wiki to a new wiki folder",
"text": "<<.from-version \"5.1.20\">> Saves the current wiki as a wiki folder, including tiddlers, plugins and configuration:\n\n```\n--savewikifolder <wikifolderpath> [<filter>]\n```\n\n* The target wiki folder must be empty or non-existent\n* The filter specifies which tiddlers should be included. It is optional, defaulting to `[all[tiddlers]]`\n* Plugins from the official plugin library are replaced with references to those plugins in the `tiddlywiki.info` file\n* Custom plugins are unpacked into their own folder\n\nA common usage is to convert a TiddlyWiki HTML file into a wiki folder:\n\n```\ntiddlywiki --load ./mywiki.html --savewikifolder ./mywikifolder\n```\n"
},
"$:/language/Help/server": {
"title": "$:/language/Help/server",
"description": "Provides an HTTP server interface to TiddlyWiki (deprecated in favour of the new listen command)",
"text": "Legacy command to serve a wiki over HTTP.\n\n```\n--server <port> <root-tiddler> <root-render-type> <root-serve-type> <username> <password> <host> <path-prefix> <debug-level>\n```\n\nThe parameters are:\n\n* ''port'' - port number on which to listen; non-numeric values are interpreted as a system environment variable from which the port number is extracted (defaults to \"8080\")\n* ''root-tiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''root-render-type'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''root-serve-type'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''username'' - the default username for signing edits\n* ''password'' - optional password for basic authentication\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''path-prefix'' - optional prefix for paths\n* ''debug-level'' - optional debug level; set to \"debug\" to view request details (defaults to \"none\")\n\nIf the password parameter is specified then the browser will prompt the user for the username and password. Note that the password is transmitted in plain text so this implementation should only be used on a trusted network or over HTTPS.\n\nFor example:\n\n```\n--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n\nThe username and password can be specified as empty strings if you need to set the hostname or pathprefix and don't want to require a password.\n\n\n```\n--server 8080 $:/core/save/all text/plain text/html \"\" \"\" 192.168.0.245\n```\n\nUsing an address like this exposes your system to the local network. For information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.\n\nTo run multiple TiddlyWiki servers at the same time you'll need to put each one on a different port. It can be useful to use an environment variable to pass the port number to the Node.js process. This example references an environment variable called \"MY_PORT_NUMBER\":\n\n```\n--server MY_PORT_NUMBER $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n"
},
"$:/language/Help/setfield": {
"title": "$:/language/Help/setfield",
"description": "Prepares external tiddlers for use",
"text": "//Note that this command is experimental and may change or be replaced before being finalised//\n\nSets the specified field of a group of tiddlers to the result of wikifying a template tiddler with the `currentTiddler` variable set to the tiddler.\n\n```\n--setfield <filter> <fieldname> <templatetitle> <rendertype>\n```\n\nThe parameters are:\n\n* ''filter'' - filter identifying the tiddlers to be affected\n* ''fieldname'' - the field to modify (defaults to \"text\")\n* ''templatetitle'' - the tiddler to wikify into the specified field. If blank or missing then the specified field is deleted\n* ''rendertype'' - the text type to render (defaults to \"text/plain\"; \"text/html\" can be used to include HTML tags)\n"
},
"$:/language/Help/unpackplugin": {
"title": "$:/language/Help/unpackplugin",
"description": "Unpack the payload tiddlers from a plugin",
"text": "Extract the payload tiddlers from a plugin, creating them as ordinary tiddlers:\n\n```\n--unpackplugin <title>\n```\n"
},
"$:/language/Help/verbose": {
"title": "$:/language/Help/verbose",
"description": "Triggers verbose output mode",
"text": "Triggers verbose output, useful for debugging\n\n```\n--verbose\n```\n"
},
"$:/language/Help/version": {
"title": "$:/language/Help/version",
"description": "Displays the version number of TiddlyWiki",
"text": "Displays the version number of TiddlyWiki.\n\n```\n--version\n```\n"
},
"$:/language/Import/Imported/Hint": {
"title": "$:/language/Import/Imported/Hint",
"text": "The following tiddlers were imported:"
},
"$:/language/Import/Listing/Cancel/Caption": {
"title": "$:/language/Import/Listing/Cancel/Caption",
"text": "Cancel"
},
"$:/language/Import/Listing/Hint": {
"title": "$:/language/Import/Listing/Hint",
"text": "These tiddlers are ready to import:"
},
"$:/language/Import/Listing/Import/Caption": {
"title": "$:/language/Import/Listing/Import/Caption",
"text": "Import"
},
"$:/language/Import/Listing/Select/Caption": {
"title": "$:/language/Import/Listing/Select/Caption",
"text": "Select"
},
"$:/language/Import/Listing/Status/Caption": {
"title": "$:/language/Import/Listing/Status/Caption",
"text": "Status"
},
"$:/language/Import/Listing/Title/Caption": {
"title": "$:/language/Import/Listing/Title/Caption",
"text": "Title"
},
"$:/language/Import/Listing/Preview": {
"title": "$:/language/Import/Listing/Preview",
"text": "Preview:"
},
"$:/language/Import/Listing/Preview/Text": {
"title": "$:/language/Import/Listing/Preview/Text",
"text": "Text"
},
"$:/language/Import/Listing/Preview/TextRaw": {
"title": "$:/language/Import/Listing/Preview/TextRaw",
"text": "Text (Raw)"
},
"$:/language/Import/Listing/Preview/Fields": {
"title": "$:/language/Import/Listing/Preview/Fields",
"text": "Fields"
},
"$:/language/Import/Listing/Preview/Diff": {
"title": "$:/language/Import/Listing/Preview/Diff",
"text": "Diff"
},
"$:/language/Import/Listing/Preview/DiffFields": {
"title": "$:/language/Import/Listing/Preview/DiffFields",
"text": "Diff (Fields)"
},
"$:/language/Import/Listing/Rename/Tooltip": {
"title": "$:/language/Import/Listing/Rename/Tooltip",
"text": "Rename tiddler before importing"
},
"$:/language/Import/Listing/Rename/Prompt": {
"title": "$:/language/Import/Listing/Rename/Prompt",
"text": "Rename to:"
},
"$:/language/Import/Listing/Rename/ConfirmRename": {
"title": "$:/language/Import/Listing/Rename/ConfirmRename",
"text": "Rename tiddler"
},
"$:/language/Import/Listing/Rename/CancelRename": {
"title": "$:/language/Import/Listing/Rename/CancelRename",
"text": "Cancel"
},
"$:/language/Import/Listing/Rename/OverwriteWarning": {
"title": "$:/language/Import/Listing/Rename/OverwriteWarning",
"text": "A tiddler with this title already exists."
},
"$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible": {
"title": "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible",
"text": "Blocked incompatible or obsolete plugin."
},
"$:/language/Import/Upgrader/Plugins/Suppressed/Version": {
"title": "$:/language/Import/Upgrader/Plugins/Suppressed/Version",
"text": "Blocked plugin (due to incoming <<incoming>> not being newer than existing <<existing>>)."
},
"$:/language/Import/Upgrader/Plugins/Upgraded": {
"title": "$:/language/Import/Upgrader/Plugins/Upgraded",
"text": "Upgraded plugin from <<incoming>> to <<upgraded>>."
},
"$:/language/Import/Upgrader/State/Suppressed": {
"title": "$:/language/Import/Upgrader/State/Suppressed",
"text": "Blocked temporary state tiddler."
},
"$:/language/Import/Upgrader/System/Suppressed": {
"title": "$:/language/Import/Upgrader/System/Suppressed",
"text": "Blocked system tiddler."
},
"$:/language/Import/Upgrader/System/Warning": {
"title": "$:/language/Import/Upgrader/System/Warning",
"text": "Core module tiddler."
},
"$:/language/Import/Upgrader/System/Alert": {
"title": "$:/language/Import/Upgrader/System/Alert",
"text": "You are about to import a tiddler that will overwrite a core module tiddler. This is not recommended as it may make the system unstable."
},
"$:/language/Import/Upgrader/ThemeTweaks/Created": {
"title": "$:/language/Import/Upgrader/ThemeTweaks/Created",
"text": "Migrated theme tweak from <$text text=<<from>>/>."
},
"$:/language/AboveStory/ClassicPlugin/Warning": {
"title": "$:/language/AboveStory/ClassicPlugin/Warning",
"text": "It looks like you are trying to load a plugin designed for ~TiddlyWiki Classic. Please note that [[these plugins do not work with TiddlyWiki version 5.x.x|https://tiddlywiki.com/#TiddlyWikiClassic]]. ~TiddlyWiki Classic plugins detected:"
},
"$:/language/BinaryWarning/Prompt": {
"title": "$:/language/BinaryWarning/Prompt",
"text": "This tiddler contains binary data"
},
"$:/language/ClassicWarning/Hint": {
"title": "$:/language/ClassicWarning/Hint",
"text": "This tiddler is written in TiddlyWiki Classic wiki text format, which is not fully compatible with TiddlyWiki version 5. See https://tiddlywiki.com/static/Upgrading.html for more details."
},
"$:/language/ClassicWarning/Upgrade/Caption": {
"title": "$:/language/ClassicWarning/Upgrade/Caption",
"text": "upgrade"
},
"$:/language/CloseAll/Button": {
"title": "$:/language/CloseAll/Button",
"text": "close all"
},
"$:/language/ColourPicker/Recent": {
"title": "$:/language/ColourPicker/Recent",
"text": "Recent:"
},
"$:/language/ConfirmCancelTiddler": {
"title": "$:/language/ConfirmCancelTiddler",
"text": "Do you wish to discard changes to the tiddler \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmDeleteTiddler": {
"title": "$:/language/ConfirmDeleteTiddler",
"text": "Do you wish to delete the tiddler \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmOverwriteTiddler": {
"title": "$:/language/ConfirmOverwriteTiddler",
"text": "Do you wish to overwrite the tiddler \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmEditShadowTiddler": {
"title": "$:/language/ConfirmEditShadowTiddler",
"text": "You are about to edit a ShadowTiddler. Any changes will override the default system making future upgrades non-trivial. Are you sure you want to edit \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmAction": {
"title": "$:/language/ConfirmAction",
"text": "Do you wish to proceed?"
},
"$:/language/Count": {
"title": "$:/language/Count",
"text": "count"
},
"$:/language/DefaultNewTiddlerTitle": {
"title": "$:/language/DefaultNewTiddlerTitle",
"text": "New Tiddler"
},
"$:/language/Diffs/CountMessage": {
"title": "$:/language/Diffs/CountMessage",
"text": "<<diff-count>> differences"
},
"$:/language/DropMessage": {
"title": "$:/language/DropMessage",
"text": "Drop here (or use the 'Escape' key to cancel)"
},
"$:/language/Encryption/Cancel": {
"title": "$:/language/Encryption/Cancel",
"text": "Cancel"
},
"$:/language/Encryption/ConfirmClearPassword": {
"title": "$:/language/Encryption/ConfirmClearPassword",
"text": "Do you wish to clear the password? This will remove the encryption applied when saving this wiki"
},
"$:/language/Encryption/PromptSetPassword": {
"title": "$:/language/Encryption/PromptSetPassword",
"text": "Set a new password for this TiddlyWiki"
},
"$:/language/Encryption/Username": {
"title": "$:/language/Encryption/Username",
"text": "Username"
},
"$:/language/Encryption/Password": {
"title": "$:/language/Encryption/Password",
"text": "Password"
},
"$:/language/Encryption/RepeatPassword": {
"title": "$:/language/Encryption/RepeatPassword",
"text": "Repeat password"
},
"$:/language/Encryption/PasswordNoMatch": {
"title": "$:/language/Encryption/PasswordNoMatch",
"text": "Passwords do not match"
},
"$:/language/Encryption/SetPassword": {
"title": "$:/language/Encryption/SetPassword",
"text": "Set password"
},
"$:/language/Error/Caption": {
"title": "$:/language/Error/Caption",
"text": "Error"
},
"$:/language/Error/EditConflict": {
"title": "$:/language/Error/EditConflict",
"text": "File changed on server"
},
"$:/language/Error/Filter": {
"title": "$:/language/Error/Filter",
"text": "Filter error"
},
"$:/language/Error/FilterSyntax": {
"title": "$:/language/Error/FilterSyntax",
"text": "Syntax error in filter expression"
},
"$:/language/Error/FilterRunPrefix": {
"title": "$:/language/Error/FilterRunPrefix",
"text": "Filter Error: Unknown prefix for filter run"
},
"$:/language/Error/IsFilterOperator": {
"title": "$:/language/Error/IsFilterOperator",
"text": "Filter Error: Unknown operand for the 'is' filter operator"
},
"$:/language/Error/FormatFilterOperator": {
"title": "$:/language/Error/FormatFilterOperator",
"text": "Filter Error: Unknown suffix for the 'format' filter operator"
},
"$:/language/Error/LoadingPluginLibrary": {
"title": "$:/language/Error/LoadingPluginLibrary",
"text": "Error loading plugin library"
},
"$:/language/Error/NetworkErrorAlert": {
"title": "$:/language/Error/NetworkErrorAlert",
"text": "`<h2>''Network Error''</h2>It looks like the connection to the server has been lost. This may indicate a problem with your network connection. Please attempt to restore network connectivity before continuing.<br><br>''Any unsaved changes will be automatically synchronised when connectivity is restored''.`"
},
"$:/language/Error/RecursiveTransclusion": {
"title": "$:/language/Error/RecursiveTransclusion",
"text": "Recursive transclusion error in transclude widget"
},
"$:/language/Error/RetrievingSkinny": {
"title": "$:/language/Error/RetrievingSkinny",
"text": "Error retrieving skinny tiddler list"
},
"$:/language/Error/SavingToTWEdit": {
"title": "$:/language/Error/SavingToTWEdit",
"text": "Error saving to TWEdit"
},
"$:/language/Error/WhileSaving": {
"title": "$:/language/Error/WhileSaving",
"text": "Error while saving"
},
"$:/language/Error/XMLHttpRequest": {
"title": "$:/language/Error/XMLHttpRequest",
"text": "XMLHttpRequest error code"
},
"$:/language/InternalJavaScriptError/Title": {
"title": "$:/language/InternalJavaScriptError/Title",
"text": "Internal JavaScript Error"
},
"$:/language/InternalJavaScriptError/Hint": {
"title": "$:/language/InternalJavaScriptError/Hint",
"text": "Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser"
},
"$:/language/InvalidFieldName": {
"title": "$:/language/InvalidFieldName",
"text": "Illegal characters in field name \"<$text text=<<fieldName>>/>\". Fields can only contain lowercase letters, digits and the characters underscore (`_`), hyphen (`-`) and period (`.`)"
},
"$:/language/LayoutSwitcher/Description": {
"title": "$:/language/LayoutSwitcher/Description",
"text": "Open the layout switcher"
},
"$:/language/LazyLoadingWarning": {
"title": "$:/language/LazyLoadingWarning",
"text": "<p>Trying to load external content from ''<$text text={{!!_canonical_uri}}/>''</p><p>If this message doesn't disappear, either the tiddler content type doesn't match the type of the external content, or you may be using a browser that doesn't support external content for wikis loaded as standalone files. See https://tiddlywiki.com/#ExternalText</p>"
},
"$:/language/LoginToTiddlySpace": {
"title": "$:/language/LoginToTiddlySpace",
"text": "Login to TiddlySpace"
},
"$:/language/Manager/Controls/FilterByTag/None": {
"title": "$:/language/Manager/Controls/FilterByTag/None",
"text": "(none)"
},
"$:/language/Manager/Controls/FilterByTag/Prompt": {
"title": "$:/language/Manager/Controls/FilterByTag/Prompt",
"text": "Filter by tag:"
},
"$:/language/Manager/Controls/Order/Prompt": {
"title": "$:/language/Manager/Controls/Order/Prompt",
"text": "Reverse order"
},
"$:/language/Manager/Controls/Search/Placeholder": {
"title": "$:/language/Manager/Controls/Search/Placeholder",
"text": "Search"
},
"$:/language/Manager/Controls/Search/Prompt": {
"title": "$:/language/Manager/Controls/Search/Prompt",
"text": "Search:"
},
"$:/language/Manager/Controls/Show/Option/Tags": {
"title": "$:/language/Manager/Controls/Show/Option/Tags",
"text": "tags"
},
"$:/language/Manager/Controls/Show/Option/Tiddlers": {
"title": "$:/language/Manager/Controls/Show/Option/Tiddlers",
"text": "tiddlers"
},
"$:/language/Manager/Controls/Show/Prompt": {
"title": "$:/language/Manager/Controls/Show/Prompt",
"text": "Show:"
},
"$:/language/Manager/Controls/Sort/Prompt": {
"title": "$:/language/Manager/Controls/Sort/Prompt",
"text": "Sort by:"
},
"$:/language/Manager/Item/Colour": {
"title": "$:/language/Manager/Item/Colour",
"text": "Colour"
},
"$:/language/Manager/Item/Fields": {
"title": "$:/language/Manager/Item/Fields",
"text": "Fields"
},
"$:/language/Manager/Item/Icon/None": {
"title": "$:/language/Manager/Item/Icon/None",
"text": "(none)"
},
"$:/language/Manager/Item/Icon": {
"title": "$:/language/Manager/Item/Icon",
"text": "Icon"
},
"$:/language/Manager/Item/RawText": {
"title": "$:/language/Manager/Item/RawText",
"text": "Raw text"
},
"$:/language/Manager/Item/Tags": {
"title": "$:/language/Manager/Item/Tags",
"text": "Tags"
},
"$:/language/Manager/Item/Tools": {
"title": "$:/language/Manager/Item/Tools",
"text": "Tools"
},
"$:/language/Manager/Item/WikifiedText": {
"title": "$:/language/Manager/Item/WikifiedText",
"text": "Wikified text"
},
"$:/language/MissingTiddler/Hint": {
"title": "$:/language/MissingTiddler/Hint",
"text": "Missing tiddler \"<$text text=<<currentTiddler>>/>\" -- click {{||$:/core/ui/Buttons/edit}} to create"
},
"$:/language/No": {
"title": "$:/language/No",
"text": "No"
},
"$:/language/OfficialPluginLibrary": {
"title": "$:/language/OfficialPluginLibrary",
"text": "Official ~TiddlyWiki Plugin Library"
},
"$:/language/OfficialPluginLibrary/Hint": {
"title": "$:/language/OfficialPluginLibrary/Hint",
"text": "The official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team."
},
"$:/language/PageTemplate/Description": {
"title": "$:/language/PageTemplate/Description",
"text": "the default ~TiddlyWiki layout"
},
"$:/language/PageTemplate/Name": {
"title": "$:/language/PageTemplate/Name",
"text": "Default ~PageTemplate"
},
"$:/language/PluginReloadWarning": {
"title": "$:/language/PluginReloadWarning",
"text": "Please save {{$:/core/ui/Buttons/save-wiki}} and reload {{$:/core/ui/Buttons/refresh}} to allow changes to ~JavaScript plugins to take effect"
},
"$:/language/RecentChanges/DateFormat": {
"title": "$:/language/RecentChanges/DateFormat",
"text": "DDth MMM YYYY"
},
"$:/language/Shortcuts/Input/AdvancedSearch/Hint": {
"title": "$:/language/Shortcuts/Input/AdvancedSearch/Hint",
"text": "Open the ~AdvancedSearch panel from within the sidebar search field"
},
"$:/language/Shortcuts/Input/Accept/Hint": {
"title": "$:/language/Shortcuts/Input/Accept/Hint",
"text": "Accept the selected item"
},
"$:/language/Shortcuts/Input/AcceptVariant/Hint": {
"title": "$:/language/Shortcuts/Input/AcceptVariant/Hint",
"text": "Accept the selected item (variant)"
},
"$:/language/Shortcuts/Input/Cancel/Hint": {
"title": "$:/language/Shortcuts/Input/Cancel/Hint",
"text": "Clear the input field"
},
"$:/language/Shortcuts/Input/Down/Hint": {
"title": "$:/language/Shortcuts/Input/Down/Hint",
"text": "Select the next item"
},
"$:/language/Shortcuts/Input/Tab-Left/Hint": {
"title": "$:/language/Shortcuts/Input/Tab-Left/Hint",
"text": "Select the previous Tab"
},
"$:/language/Shortcuts/Input/Tab-Right/Hint": {
"title": "$:/language/Shortcuts/Input/Tab-Right/Hint",
"text": "Select the next Tab"
},
"$:/language/Shortcuts/Input/Up/Hint": {
"title": "$:/language/Shortcuts/Input/Up/Hint",
"text": "Select the previous item"
},
"$:/language/Shortcuts/SidebarLayout/Hint": {
"title": "$:/language/Shortcuts/SidebarLayout/Hint",
"text": "Change the sidebar layout"
},
"$:/language/Switcher/Subtitle/theme": {
"title": "$:/language/Switcher/Subtitle/theme",
"text": "Switch Theme"
},
"$:/language/Switcher/Subtitle/layout": {
"title": "$:/language/Switcher/Subtitle/layout",
"text": "Switch Layout"
},
"$:/language/Switcher/Subtitle/language": {
"title": "$:/language/Switcher/Subtitle/language",
"text": "Switch Language"
},
"$:/language/Switcher/Subtitle/palette": {
"title": "$:/language/Switcher/Subtitle/palette",
"text": "Switch Palette"
},
"$:/language/SystemTiddler/Tooltip": {
"title": "$:/language/SystemTiddler/Tooltip",
"text": "This is a system tiddler"
},
"$:/language/SystemTiddlers/Include/Prompt": {
"title": "$:/language/SystemTiddlers/Include/Prompt",
"text": "Include system tiddlers"
},
"$:/language/TagManager/Colour/Heading": {
"title": "$:/language/TagManager/Colour/Heading",
"text": "Colour"
},
"$:/language/TagManager/Count/Heading": {
"title": "$:/language/TagManager/Count/Heading",
"text": "Count"
},
"$:/language/TagManager/Icon/Heading": {
"title": "$:/language/TagManager/Icon/Heading",
"text": "Icon"
},
"$:/language/TagManager/Icons/None": {
"title": "$:/language/TagManager/Icons/None",
"text": "None"
},
"$:/language/TagManager/Info/Heading": {
"title": "$:/language/TagManager/Info/Heading",
"text": "Info"
},
"$:/language/TagManager/Tag/Heading": {
"title": "$:/language/TagManager/Tag/Heading",
"text": "Tag"
},
"$:/language/Tiddler/DateFormat": {
"title": "$:/language/Tiddler/DateFormat",
"text": "DDth MMM YYYY at hh12:0mmam"
},
"$:/language/UnsavedChangesWarning": {
"title": "$:/language/UnsavedChangesWarning",
"text": "You have unsaved changes in TiddlyWiki"
},
"$:/language/Yes": {
"title": "$:/language/Yes",
"text": "Yes"
},
"$:/language/Modals/Download": {
"title": "$:/language/Modals/Download",
"subtitle": "Download changes",
"footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
"help": "https://tiddlywiki.com/static/DownloadingChanges.html",
"text": "Your browser only supports manual saving.\n\nTo save your modified wiki, right click on the download link below and select \"Download file\" or \"Save file\", and then choose the folder and filename.\n\n//You can marginally speed things up by clicking the link with the control key (Windows) or the options/alt key (Mac OS X). You will not be prompted for the folder or filename, but your browser is likely to give it an unrecognisable name -- you may need to rename the file to include an `.html` extension before you can do anything useful with it.//\n\nOn smartphones that do not allow files to be downloaded you can instead bookmark the link, and then sync your bookmarks to a desktop computer from where the wiki can be saved normally.\n"
},
"$:/language/Modals/SaveInstructions": {
"title": "$:/language/Modals/SaveInstructions",
"subtitle": "Save your work",
"footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
"help": "https://tiddlywiki.com/static/SavingChanges.html",
"text": "Your changes to this wiki need to be saved as a ~TiddlyWiki HTML file.\n\n!!! Desktop browsers\n\n# Select ''Save As'' from the ''File'' menu\n# Choose a filename and location\n#* Some browsers also require you to explicitly specify the file saving format as ''Webpage, HTML only'' or similar\n# Close this tab\n\n!!! Smartphone browsers\n\n# Create a bookmark to this page\n#* If you've got iCloud or Google Sync set up then the bookmark will automatically sync to your desktop where you can open it and save it as above\n# Close this tab\n\n//If you open the bookmark again in Mobile Safari you will see this message again. If you want to go ahead and use the file, just click the ''close'' button below//\n"
},
"$:/config/NewJournal/Title": {
"title": "$:/config/NewJournal/Title",
"text": "DDth MMM YYYY"
},
"$:/config/NewJournal/Text": {
"title": "$:/config/NewJournal/Text",
"text": ""
},
"$:/config/NewJournal/Tags": {
"title": "$:/config/NewJournal/Tags",
"text": "Journal\n"
},
"$:/language/Notifications/Save/Done": {
"title": "$:/language/Notifications/Save/Done",
"text": "Saved wiki"
},
"$:/language/Notifications/Save/Starting": {
"title": "$:/language/Notifications/Save/Starting",
"text": "Starting to save wiki"
},
"$:/language/Notifications/CopiedToClipboard/Succeeded": {
"title": "$:/language/Notifications/CopiedToClipboard/Succeeded",
"text": "Copied to clipboard!"
},
"$:/language/Notifications/CopiedToClipboard/Failed": {
"title": "$:/language/Notifications/CopiedToClipboard/Failed",
"text": "Failed to copy to clipboard!"
},
"$:/language/Search/DefaultResults/Caption": {
"title": "$:/language/Search/DefaultResults/Caption",
"text": "List"
},
"$:/language/Search/Filter/Caption": {
"title": "$:/language/Search/Filter/Caption",
"text": "Filter"
},
"$:/language/Search/Filter/Hint": {
"title": "$:/language/Search/Filter/Hint",
"text": "Search via a [[filter expression|https://tiddlywiki.com/static/Filters.html]]"
},
"$:/language/Search/Filter/Matches": {
"title": "$:/language/Search/Filter/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/Matches": {
"title": "$:/language/Search/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/Matches/All": {
"title": "$:/language/Search/Matches/All",
"text": "All matches:"
},
"$:/language/Search/Matches/Title": {
"title": "$:/language/Search/Matches/Title",
"text": "Title matches:"
},
"$:/language/Search/Search": {
"title": "$:/language/Search/Search",
"text": "Search"
},
"$:/language/Search/Search/TooShort": {
"title": "$:/language/Search/Search/TooShort",
"text": "Search text too short"
},
"$:/language/Search/Shadows/Caption": {
"title": "$:/language/Search/Shadows/Caption",
"text": "Shadows"
},
"$:/language/Search/Shadows/Hint": {
"title": "$:/language/Search/Shadows/Hint",
"text": "Search for shadow tiddlers"
},
"$:/language/Search/Shadows/Matches": {
"title": "$:/language/Search/Shadows/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/Standard/Caption": {
"title": "$:/language/Search/Standard/Caption",
"text": "Standard"
},
"$:/language/Search/Standard/Hint": {
"title": "$:/language/Search/Standard/Hint",
"text": "Search for standard tiddlers"
},
"$:/language/Search/Standard/Matches": {
"title": "$:/language/Search/Standard/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/System/Caption": {
"title": "$:/language/Search/System/Caption",
"text": "System"
},
"$:/language/Search/System/Hint": {
"title": "$:/language/Search/System/Hint",
"text": "Search for system tiddlers"
},
"$:/language/Search/System/Matches": {
"title": "$:/language/Search/System/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/SideBar/All/Caption": {
"title": "$:/language/SideBar/All/Caption",
"text": "All"
},
"$:/language/SideBar/Contents/Caption": {
"title": "$:/language/SideBar/Contents/Caption",
"text": "Contents"
},
"$:/language/SideBar/Drafts/Caption": {
"title": "$:/language/SideBar/Drafts/Caption",
"text": "Drafts"
},
"$:/language/SideBar/Explorer/Caption": {
"title": "$:/language/SideBar/Explorer/Caption",
"text": "Explorer"
},
"$:/language/SideBar/Missing/Caption": {
"title": "$:/language/SideBar/Missing/Caption",
"text": "Missing"
},
"$:/language/SideBar/More/Caption": {
"title": "$:/language/SideBar/More/Caption",
"text": "More"
},
"$:/language/SideBar/Open/Caption": {
"title": "$:/language/SideBar/Open/Caption",
"text": "Open"
},
"$:/language/SideBar/Orphans/Caption": {
"title": "$:/language/SideBar/Orphans/Caption",
"text": "Orphans"
},
"$:/language/SideBar/Recent/Caption": {
"title": "$:/language/SideBar/Recent/Caption",
"text": "Recent"
},
"$:/language/SideBar/Shadows/Caption": {
"title": "$:/language/SideBar/Shadows/Caption",
"text": "Shadows"
},
"$:/language/SideBar/System/Caption": {
"title": "$:/language/SideBar/System/Caption",
"text": "System"
},
"$:/language/SideBar/Tags/Caption": {
"title": "$:/language/SideBar/Tags/Caption",
"text": "Tags"
},
"$:/language/SideBar/Tags/Untagged/Caption": {
"title": "$:/language/SideBar/Tags/Untagged/Caption",
"text": "untagged"
},
"$:/language/SideBar/Tools/Caption": {
"title": "$:/language/SideBar/Tools/Caption",
"text": "Tools"
},
"$:/language/SideBar/Types/Caption": {
"title": "$:/language/SideBar/Types/Caption",
"text": "Types"
},
"$:/SiteSubtitle": {
"title": "$:/SiteSubtitle",
"text": "a non-linear personal web notebook"
},
"$:/SiteTitle": {
"title": "$:/SiteTitle",
"text": "My ~TiddlyWiki"
},
"$:/language/Snippets/ListByTag": {
"title": "$:/language/Snippets/ListByTag",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "List of tiddlers by tag",
"text": "<<list-links \"[tag[task]sort[title]]\">>\n"
},
"$:/language/Snippets/MacroDefinition": {
"title": "$:/language/Snippets/MacroDefinition",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Macro definition",
"text": "\\define macroName(param1:\"default value\",param2)\nText of the macro\n\\end\n"
},
"$:/language/Snippets/Table4x3": {
"title": "$:/language/Snippets/Table4x3",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Table with 4 columns by 3 rows",
"text": "|! |!Alpha |!Beta |!Gamma |!Delta |\n|!One | | | | |\n|!Two | | | | |\n|!Three | | | | |\n"
},
"$:/language/Snippets/TableOfContents": {
"title": "$:/language/Snippets/TableOfContents",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Table of Contents",
"text": "<div class=\"tc-table-of-contents\">\n\n<<toc-selective-expandable 'TableOfContents'>>\n\n</div>"
},
"$:/language/ThemeTweaks/ThemeTweaks": {
"title": "$:/language/ThemeTweaks/ThemeTweaks",
"text": "Theme Tweaks"
},
"$:/language/ThemeTweaks/ThemeTweaks/Hint": {
"title": "$:/language/ThemeTweaks/ThemeTweaks/Hint",
"text": "You can tweak certain aspects of the ''Vanilla'' theme."
},
"$:/language/ThemeTweaks/Options": {
"title": "$:/language/ThemeTweaks/Options",
"text": "Options"
},
"$:/language/ThemeTweaks/Options/SidebarLayout": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout",
"text": "Sidebar layout"
},
"$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid",
"text": "Fixed story, fluid sidebar"
},
"$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed",
"text": "Fluid story, fixed sidebar"
},
"$:/language/ThemeTweaks/Options/StickyTitles": {
"title": "$:/language/ThemeTweaks/Options/StickyTitles",
"text": "Sticky titles"
},
"$:/language/ThemeTweaks/Options/StickyTitles/Hint": {
"title": "$:/language/ThemeTweaks/Options/StickyTitles/Hint",
"text": "Causes tiddler titles to \"stick\" to the top of the browser window"
},
"$:/language/ThemeTweaks/Options/CodeWrapping": {
"title": "$:/language/ThemeTweaks/Options/CodeWrapping",
"text": "Wrap long lines in code blocks"
},
"$:/language/ThemeTweaks/Settings": {
"title": "$:/language/ThemeTweaks/Settings",
"text": "Settings"
},
"$:/language/ThemeTweaks/Settings/FontFamily": {
"title": "$:/language/ThemeTweaks/Settings/FontFamily",
"text": "Font family"
},
"$:/language/ThemeTweaks/Settings/CodeFontFamily": {
"title": "$:/language/ThemeTweaks/Settings/CodeFontFamily",
"text": "Code font family"
},
"$:/language/ThemeTweaks/Settings/EditorFontFamily": {
"title": "$:/language/ThemeTweaks/Settings/EditorFontFamily",
"text": "Editor font family"
},
"$:/language/ThemeTweaks/Settings/BackgroundImage": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImage",
"text": "Page background image"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment",
"text": "Page background image attachment"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll",
"text": "Scroll with tiddlers"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed",
"text": "Fixed to window"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize",
"text": "Page background image size"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto",
"text": "Auto"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover",
"text": "Cover"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain",
"text": "Contain"
},
"$:/language/ThemeTweaks/Metrics": {
"title": "$:/language/ThemeTweaks/Metrics",
"text": "Sizes"
},
"$:/language/ThemeTweaks/Metrics/FontSize": {
"title": "$:/language/ThemeTweaks/Metrics/FontSize",
"text": "Font size"
},
"$:/language/ThemeTweaks/Metrics/LineHeight": {
"title": "$:/language/ThemeTweaks/Metrics/LineHeight",
"text": "Line height"
},
"$:/language/ThemeTweaks/Metrics/BodyFontSize": {
"title": "$:/language/ThemeTweaks/Metrics/BodyFontSize",
"text": "Font size for tiddler body"
},
"$:/language/ThemeTweaks/Metrics/BodyLineHeight": {
"title": "$:/language/ThemeTweaks/Metrics/BodyLineHeight",
"text": "Line height for tiddler body"
},
"$:/language/ThemeTweaks/Metrics/StoryLeft": {
"title": "$:/language/ThemeTweaks/Metrics/StoryLeft",
"text": "Story left position"
},
"$:/language/ThemeTweaks/Metrics/StoryLeft/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint",
"text": "how far the left margin of the story river<br>(tiddler area) is from the left of the page"
},
"$:/language/ThemeTweaks/Metrics/StoryTop": {
"title": "$:/language/ThemeTweaks/Metrics/StoryTop",
"text": "Story top position"
},
"$:/language/ThemeTweaks/Metrics/StoryTop/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryTop/Hint",
"text": "how far the top margin of the story river<br>is from the top of the page"
},
"$:/language/ThemeTweaks/Metrics/StoryRight": {
"title": "$:/language/ThemeTweaks/Metrics/StoryRight",
"text": "Story right"
},
"$:/language/ThemeTweaks/Metrics/StoryRight/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryRight/Hint",
"text": "how far the left margin of the sidebar <br>is from the left of the page"
},
"$:/language/ThemeTweaks/Metrics/StoryWidth": {
"title": "$:/language/ThemeTweaks/Metrics/StoryWidth",
"text": "Story width"
},
"$:/language/ThemeTweaks/Metrics/StoryWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint",
"text": "the overall width of the story river"
},
"$:/language/ThemeTweaks/Metrics/TiddlerWidth": {
"title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth",
"text": "Tiddler width"
},
"$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint",
"text": "within the story river"
},
"$:/language/ThemeTweaks/Metrics/SidebarBreakpoint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint",
"text": "Sidebar breakpoint"
},
"$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint",
"text": "the minimum page width at which the story<br>river and sidebar will appear side by side"
},
"$:/language/ThemeTweaks/Metrics/SidebarWidth": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarWidth",
"text": "Sidebar width"
},
"$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint",
"text": "the width of the sidebar in fluid-fixed layout"
},
"$:/language/TiddlerInfo/Advanced/Caption": {
"title": "$:/language/TiddlerInfo/Advanced/Caption",
"text": "Advanced"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint",
"text": "none"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Heading": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading",
"text": "Plugin Details"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint",
"text": "This plugin contains the following shadow tiddlers:"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading",
"text": "Shadow Status"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint",
"text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is not a shadow tiddler"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint",
"text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is a shadow tiddler"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source",
"text": "It is defined in the plugin <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link>"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint",
"text": "It is overridden by an ordinary tiddler"
},
"$:/language/TiddlerInfo/Fields/Caption": {
"title": "$:/language/TiddlerInfo/Fields/Caption",
"text": "Fields"
},
"$:/language/TiddlerInfo/List/Caption": {
"title": "$:/language/TiddlerInfo/List/Caption",
"text": "List"
},
"$:/language/TiddlerInfo/List/Empty": {
"title": "$:/language/TiddlerInfo/List/Empty",
"text": "This tiddler does not have a list"
},
"$:/language/TiddlerInfo/Listed/Caption": {
"title": "$:/language/TiddlerInfo/Listed/Caption",
"text": "Listed"
},
"$:/language/TiddlerInfo/Listed/Empty": {
"title": "$:/language/TiddlerInfo/Listed/Empty",
"text": "This tiddler is not listed by any others"
},
"$:/language/TiddlerInfo/References/Caption": {
"title": "$:/language/TiddlerInfo/References/Caption",
"text": "Backlinks"
},
"$:/language/TiddlerInfo/References/Empty": {
"title": "$:/language/TiddlerInfo/References/Empty",
"text": "No tiddlers link to this one"
},
"$:/language/TiddlerInfo/Tagging/Caption": {
"title": "$:/language/TiddlerInfo/Tagging/Caption",
"text": "Tagging"
},
"$:/language/TiddlerInfo/Tagging/Empty": {
"title": "$:/language/TiddlerInfo/Tagging/Empty",
"text": "No tiddlers are tagged with this one"
},
"$:/language/TiddlerInfo/Tools/Caption": {
"title": "$:/language/TiddlerInfo/Tools/Caption",
"text": "Tools"
},
"$:/language/Docs/Types/application/javascript": {
"title": "$:/language/Docs/Types/application/javascript",
"description": "JavaScript code",
"name": "application/javascript",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/application/json": {
"title": "$:/language/Docs/Types/application/json",
"description": "JSON data",
"name": "application/json",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/application/x-tiddler-dictionary": {
"title": "$:/language/Docs/Types/application/x-tiddler-dictionary",
"description": "Data dictionary",
"name": "application/x-tiddler-dictionary",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/image/gif": {
"title": "$:/language/Docs/Types/image/gif",
"description": "GIF image",
"name": "image/gif",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/jpeg": {
"title": "$:/language/Docs/Types/image/jpeg",
"description": "JPEG image",
"name": "image/jpeg",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/png": {
"title": "$:/language/Docs/Types/image/png",
"description": "PNG image",
"name": "image/png",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/svg+xml": {
"title": "$:/language/Docs/Types/image/svg+xml",
"description": "Structured Vector Graphics image",
"name": "image/svg+xml",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/x-icon": {
"title": "$:/language/Docs/Types/image/x-icon",
"description": "ICO format icon file",
"name": "image/x-icon",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/text/css": {
"title": "$:/language/Docs/Types/text/css",
"description": "Static stylesheet",
"name": "text/css",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/text/html": {
"title": "$:/language/Docs/Types/text/html",
"description": "HTML markup",
"name": "text/html",
"group": "Text",
"group-sort": "0"
},
"$:/language/Docs/Types/text/plain": {
"title": "$:/language/Docs/Types/text/plain",
"description": "Plain text",
"name": "text/plain",
"group": "Text",
"group-sort": "0"
},
"$:/language/Docs/Types/text/vnd.tiddlywiki": {
"title": "$:/language/Docs/Types/text/vnd.tiddlywiki",
"description": "TiddlyWiki 5",
"name": "text/vnd.tiddlywiki",
"group": "Text",
"group-sort": "0"
},
"$:/language/Docs/Types/text/x-tiddlywiki": {
"title": "$:/language/Docs/Types/text/x-tiddlywiki",
"description": "TiddlyWiki Classic",
"name": "text/x-tiddlywiki",
"group": "Text",
"group-sort": "0"
},
"$:/languages/en-GB/icon": {
"title": "$:/languages/en-GB/icon",
"type": "image/svg+xml",
"text": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 60 30\" width=\"1200\" height=\"600\">\n<clipPath id=\"t\">\n\t<path d=\"M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z\"/>\n</clipPath>\n<path d=\"M0,0 v30 h60 v-30 z\" fill=\"#00247d\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" stroke=\"#fff\" stroke-width=\"6\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" clip-path=\"url(#t)\" stroke=\"#cf142b\" stroke-width=\"4\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#fff\" stroke-width=\"10\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#cf142b\" stroke-width=\"6\"/>\n</svg>\n"
},
"$:/languages/en-GB": {
"title": "$:/languages/en-GB",
"name": "en-GB",
"description": "English (British)",
"author": "JeremyRuston",
"core-version": ">=5.0.0\"",
"text": "Stub pseudo-plugin for the default language"
},
"$:/core/modules/commander.js": {
"title": "$:/core/modules/commander.js",
"text": "/*\\\ntitle: $:/core/modules/commander.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Commander class is a command interpreter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse a sequence of commands\n\tcommandTokens: an array of command string tokens\n\twiki: reference to the wiki store object\n\tstreams: {output:, error:}, each of which has a write(string) method\n\tcallback: a callback invoked as callback(err) where err is null if there was no error\n*/\nvar Commander = function(commandTokens,callback,wiki,streams) {\n\tvar path = require(\"path\");\n\tthis.commandTokens = commandTokens;\n\tthis.nextToken = 0;\n\tthis.callback = callback;\n\tthis.wiki = wiki;\n\tthis.streams = streams;\n\tthis.outputPath = path.resolve($tw.boot.wikiPath,$tw.config.wikiOutputSubDir);\n};\n\n/*\nLog a string if verbose flag is set\n*/\nCommander.prototype.log = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str + \"\\n\");\n\t}\n};\n\n/*\nWrite a string if verbose flag is set\n*/\nCommander.prototype.write = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str);\n\t}\n};\n\n/*\nAdd a string of tokens to the command queue\n*/\nCommander.prototype.addCommandTokens = function(commandTokens) {\n\tvar params = commandTokens.slice(0);\n\tparams.unshift(0);\n\tparams.unshift(this.nextToken);\n\tArray.prototype.splice.apply(this.commandTokens,params);\n};\n\n/*\nExecute the sequence of commands and invoke a callback on completion\n*/\nCommander.prototype.execute = function() {\n\tthis.executeNextCommand();\n};\n\n/*\nExecute the next command in the sequence\n*/\nCommander.prototype.executeNextCommand = function() {\n\tvar self = this;\n\t// Invoke the callback if there are no more commands\n\tif(this.nextToken >= this.commandTokens.length) {\n\t\tthis.callback(null);\n\t} else {\n\t\t// Get and check the command token\n\t\tvar commandName = this.commandTokens[this.nextToken++];\n\t\tif(commandName.substr(0,2) !== \"--\") {\n\t\t\tthis.callback(\"Missing command: \" + commandName);\n\t\t} else {\n\t\t\tcommandName = commandName.substr(2); // Trim off the --\n\t\t\t// Accumulate the parameters to the command\n\t\t\tvar params = [];\n\t\t\twhile(this.nextToken < this.commandTokens.length && \n\t\t\t\tthis.commandTokens[this.nextToken].substr(0,2) !== \"--\") {\n\t\t\t\tparams.push(this.commandTokens[this.nextToken++]);\n\t\t\t}\n\t\t\t// Get the command info\n\t\t\tvar command = $tw.commands[commandName],\n\t\t\t\tc,err;\n\t\t\tif(!command) {\n\t\t\t\tthis.callback(\"Unknown command: \" + commandName);\n\t\t\t} else {\n\t\t\t\tif(this.verbose) {\n\t\t\t\t\tthis.streams.output.write(\"Executing command: \" + commandName + \" \" + params.join(\" \") + \"\\n\");\n\t\t\t\t}\n\t\t\t\t// Parse named parameters if required\n\t\t\t\tif(command.info.namedParameterMode) {\n\t\t\t\t\tparams = this.extractNamedParameters(params,command.info.mandatoryParameters);\n\t\t\t\t\tif(typeof params === \"string\") {\n\t\t\t\t\t\treturn this.callback(params);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(command.info.synchronous) {\n\t\t\t\t\t// Synchronous command\n\t\t\t\t\tc = new command.Command(params,this);\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.executeNextCommand();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Asynchronous command\n\t\t\t\t\tc = new command.Command(params,this,function(err) {\n\t\t\t\t\t\tif(err) {\n\t\t\t\t\t\t\tself.callback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.executeNextCommand();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nGiven an array of parameter strings `params` in name:value format, and an array of mandatory parameter names in `mandatoryParameters`, returns a hashmap of values or a string if error\n*/\nCommander.prototype.extractNamedParameters = function(params,mandatoryParameters) {\n\tmandatoryParameters = mandatoryParameters || [];\n\tvar errors = [],\n\t\tparamsByName = Object.create(null);\n\t// Extract the parameters\n\t$tw.utils.each(params,function(param) {\n\t\tvar index = param.indexOf(\"=\");\n\t\tif(index < 1) {\n\t\t\terrors.push(\"malformed named parameter: '\" + param + \"'\");\n\t\t}\n\t\tparamsByName[param.slice(0,index)] = $tw.utils.trim(param.slice(index+1));\n\t});\n\t// Check the mandatory parameters are present\n\t$tw.utils.each(mandatoryParameters,function(mandatoryParameter) {\n\t\tif(!$tw.utils.hop(paramsByName,mandatoryParameter)) {\n\t\t\terrors.push(\"missing mandatory parameter: '\" + mandatoryParameter + \"'\");\n\t\t}\n\t});\n\t// Return any errors\n\tif(errors.length > 0) {\n\t\treturn errors.join(\" and\\n\");\n\t} else {\n\t\treturn paramsByName;\t\t\n\t}\n};\n\nCommander.initCommands = function(moduleType) {\n\tmoduleType = moduleType || \"command\";\n\t$tw.commands = {};\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tvar c = $tw.commands[module.info.name] = {};\n\t\t// Add the methods defined by the module\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\tc[f] = module[f];\n\t\t\t}\n\t\t}\n\t});\n};\n\nexports.Commander = Commander;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/commands/build.js": {
"title": "$:/core/modules/commands/build.js",
"text": "/*\\\ntitle: $:/core/modules/commands/build.js\ntype: application/javascript\nmodule-type: command\n\nCommand to build a build target\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"build\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\t// Get the build targets defined in the wiki\n\tvar buildTargets = $tw.boot.wikiInfo.build;\n\tif(!buildTargets) {\n\t\treturn \"No build targets defined\";\n\t}\n\t// Loop through each of the specified targets\n\tvar targets;\n\tif(this.params.length > 0) {\n\t\ttargets = this.params;\n\t} else {\n\t\ttargets = Object.keys(buildTargets);\n\t}\n\tfor(var targetIndex=0; targetIndex<targets.length; targetIndex++) {\n\t\tvar target = targets[targetIndex],\n\t\t\tcommands = buildTargets[target];\n\t\tif(!commands) {\n\t\t\treturn \"Build target '\" + target + \"' not found\";\n\t\t}\n\t\t// Add the commands to the queue\n\t\tthis.commander.addCommandTokens(commands);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/clearpassword.js": {
"title": "$:/core/modules/commands/clearpassword.js",
"text": "/*\\\ntitle: $:/core/modules/commands/clearpassword.js\ntype: application/javascript\nmodule-type: command\n\nClear password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"clearpassword\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\t$tw.crypto.setPassword(null);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/deletetiddlers.js": {
"title": "$:/core/modules/commands/deletetiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/commands/deletetiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to delete tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"deletetiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filter\";\n\t}\n\tvar self = this,\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\twiki.deleteTiddler(title);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/editions.js": {
"title": "$:/core/modules/commands/editions.js",
"text": "/*\\\ntitle: $:/core/modules/commands/editions.js\ntype: application/javascript\nmodule-type: command\n\nCommand to list the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"editions\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\n\t// Output the list\n\tthis.commander.streams.output.write(\"Available editions:\\n\\n\");\n\tvar editionInfo = $tw.utils.getEditionInfo();\n\t$tw.utils.each(editionInfo,function(info,name) {\n\t\tself.commander.streams.output.write(\" \" + name + \": \" + info.description + \"\\n\");\n\t});\n\tthis.commander.streams.output.write(\"\\n\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/fetch.js": {
"title": "$:/core/modules/commands/fetch.js",
"text": "/*\\\ntitle: $:/core/modules/commands/fetch.js\ntype: application/javascript\nmodule-type: command\n\nCommands to fetch external tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"fetch\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing subcommand and url\";\n\t}\n\tswitch(this.params[0]) {\n\t\tcase \"raw-file\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\traw: true,\n\t\t\t\turl: this.params[1],\n\t\t\t\ttransformFilter: this.params[2] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"file\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turl: this.params[1],\n\t\t\t\timportFilter: this.params[2],\n\t\t\t\ttransformFilter: this.params[3] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"raw-files\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\traw: true,\n\t\t\t\turlFilter: this.params[1],\n\t\t\t\ttransformFilter: this.params[2] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"files\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turlFilter: this.params[1],\n\t\t\t\timportFilter: this.params[2],\n\t\t\t\ttransformFilter: this.params[3] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t}\n\treturn null;\n};\n\nCommand.prototype.fetchFiles = function(options) {\n\tvar self = this;\n\t// Get the list of URLs\n\tvar urls;\n\tif(options.url) {\n\t\turls = [options.url]\n\t} else if(options.urlFilter) {\n\t\turls = this.commander.wiki.filterTiddlers(options.urlFilter);\n\t} else {\n\t\treturn \"Missing URL\";\n\t}\n\t// Process each URL in turn\n\tvar next = 0;\n\tvar getNextFile = function(err) {\n\t\tif(err) {\n\t\t\treturn options.callback(err);\n\t\t}\n\t\tif(next < urls.length) {\n\t\t\tself.fetchFile(urls[next++],options,getNextFile);\n\t\t} else {\n\t\t\toptions.callback(null);\n\t\t}\n\t};\n\tgetNextFile(null);\n\t// Success\n\treturn null;\n};\n\nCommand.prototype.fetchFile = function(url,options,callback,redirectCount) {\n\tif(redirectCount > 10) {\n\t\treturn callback(\"Error too many redirects retrieving \" + url);\n\t}\n\tvar self = this,\n\t\tlib = url.substr(0,8) === \"https://\" ? require(\"https\") : require(\"http\");\n\tlib.get(url).on(\"response\",function(response) {\n\t var type = (response.headers[\"content-type\"] || \"\").split(\";\")[0],\n\t \tdata = [];\n\t self.commander.write(\"Reading \" + url + \": \");\n\t response.on(\"data\",function(chunk) {\n\t data.push(chunk);\n\t self.commander.write(\".\");\n\t });\n\t response.on(\"end\",function() {\n\t self.commander.write(\"\\n\");\n\t if(response.statusCode === 200) {\n\t\t self.processBody(Buffer.concat(data),type,options,url);\n\t\t callback(null);\n\t } else {\n\t \tif(response.statusCode === 302 || response.statusCode === 303 || response.statusCode === 307) {\n\t \t\treturn self.fetchFile(response.headers.location,options,callback,redirectCount + 1);\n\t \t} else {\n\t\t \treturn callback(\"Error \" + response.statusCode + \" retrieving \" + url)\t \t\t\n\t \t}\n\t }\n\t \t});\n\t \tresponse.on(\"error\",function(e) {\n\t\t\tconsole.log(\"Error on GET request: \" + e);\n\t\t\tcallback(e);\n\t \t});\n\t});\n\treturn null;\n};\n\nCommand.prototype.processBody = function(body,type,options,url) {\n\tvar self = this;\n\t// Collect the tiddlers in a wiki\n\tvar incomingWiki = new $tw.Wiki();\n\tif(options.raw) {\n\t\tvar typeInfo = type ? $tw.config.contentTypeInfo[type] : null,\n\t\t\tencoding = typeInfo ? typeInfo.encoding : \"utf8\";\n\t\tincomingWiki.addTiddler(new $tw.Tiddler({\n\t\t\ttitle: url,\n\t\t\ttype: type,\n\t\t\ttext: body.toString(encoding)\n\t\t}));\n\t} else {\n\t\t// Deserialise the file to extract the tiddlers\n\t\tvar tiddlers = this.commander.wiki.deserializeTiddlers(type || \"text/html\",body.toString(\"utf8\"),{});\n\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\tincomingWiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t});\n\t}\n\t// Filter the tiddlers to select the ones we want\n\tvar filteredTitles = incomingWiki.filterTiddlers(options.importFilter || \"[all[tiddlers]]\");\n\t// Import the selected tiddlers\n\tvar count = 0;\n\tincomingWiki.each(function(tiddler,title) {\n\t\tif(filteredTitles.indexOf(title) !== -1) {\n\t\t\tvar newTiddler;\n\t\t\tif(options.transformFilter) {\n\t\t\t\tvar transformedTitle = (incomingWiki.filterTiddlers(options.transformFilter,null,self.commander.wiki.makeTiddlerIterator([title])) || [\"\"])[0];\n\t\t\t\tif(transformedTitle) {\n\t\t\t\t\tself.commander.log(\"Importing \" + title + \" as \" + transformedTitle)\n\t\t\t\t\tnewTiddler = new $tw.Tiddler(tiddler,{title: transformedTitle});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.commander.log(\"Importing \" + title)\n\t\t\t\tnewTiddler = tiddler;\n\t\t\t}\n\t\t\tself.commander.wiki.importTiddler(newTiddler);\n\t\t\tcount++;\n\t\t}\n\t});\n\tself.commander.log(\"Imported \" + count + \" tiddlers\")\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/help.js": {
"title": "$:/core/modules/commands/help.js",
"text": "/*\\\ntitle: $:/core/modules/commands/help.js\ntype: application/javascript\nmodule-type: command\n\nHelp command\n\n\\*/\n(function(){\n\n/*jshint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"help\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar subhelp = this.params[0] || \"default\",\n\t\thelpBase = \"$:/language/Help/\",\n\t\ttext;\n\tif(!this.commander.wiki.getTiddler(helpBase + subhelp)) {\n\t\tsubhelp = \"notfound\";\n\t}\n\t// Wikify the help as formatted text (ie block elements generate newlines)\n\ttext = this.commander.wiki.renderTiddler(\"text/plain-formatted\",helpBase + subhelp);\n\t// Remove any leading linebreaks\n\ttext = text.replace(/^(\\r?\\n)*/g,\"\");\n\tthis.commander.streams.output.write(text);\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/import.js": {
"title": "$:/core/modules/commands/import.js",
"text": "/*\\\ntitle: $:/core/modules/commands/import.js\ntype: application/javascript\nmodule-type: command\n\nCommand to import tiddlers from a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"import\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 2) {\n\t\treturn \"Missing parameters\";\n\t}\n\tvar filename = self.params[0],\n\t\tdeserializer = self.params[1],\n\t\ttitle = self.params[2] || filename,\n\t\tencoding = self.params[3] || \"utf8\",\n\t\ttext = fs.readFileSync(filename,encoding),\n\t\ttiddlers = this.commander.wiki.deserializeTiddlers(null,text,{title: title},{deserializer: deserializer});\n\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));\n\t});\n\tthis.commander.log(tiddlers.length + \" tiddler(s) imported\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/init.js": {
"title": "$:/core/modules/commands/init.js",
"text": "/*\\\ntitle: $:/core/modules/commands/init.js\ntype: application/javascript\nmodule-type: command\n\nCommand to initialise an empty wiki folder\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"init\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\t// Check that we don't already have a valid wiki folder\n\tif($tw.boot.wikiTiddlersPath || ($tw.utils.isDirectory($tw.boot.wikiPath) && !$tw.utils.isDirectoryEmpty($tw.boot.wikiPath))) {\n\t\treturn \"Wiki folder is not empty\";\n\t}\n\t// Loop through each of the specified editions\n\tvar editions = this.params.length > 0 ? this.params : [\"empty\"];\n\tfor(var editionIndex=0; editionIndex<editions.length; editionIndex++) {\n\t\tvar editionName = editions[editionIndex];\n\t\t// Check the edition exists\n\t\tvar editionPath = $tw.findLibraryItem(editionName,$tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar));\n\t\tif(!$tw.utils.isDirectory(editionPath)) {\n\t\t\treturn \"Edition '\" + editionName + \"' not found\";\n\t\t}\n\t\t// Copy the edition content\n\t\tvar err = $tw.utils.copyDirectory(editionPath,$tw.boot.wikiPath);\n\t\tif(!err) {\n\t\t\tthis.commander.streams.output.write(\"Copied edition '\" + editionName + \"' to \" + $tw.boot.wikiPath + \"\\n\");\n\t\t} else {\n\t\t\treturn err;\n\t\t}\n\t}\n\t// Tweak the tiddlywiki.info to remove any included wikis\n\tvar packagePath = $tw.boot.wikiPath + \"/tiddlywiki.info\",\n\t\tpackageJson = JSON.parse(fs.readFileSync(packagePath));\n\tdelete packageJson.includeWikis;\n\tfs.writeFileSync(packagePath,JSON.stringify(packageJson,null,$tw.config.preferences.jsonSpaces));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/listen.js": {
"title": "$:/core/modules/commands/listen.js",
"text": "/*\\\ntitle: $:/core/modules/commands/listen.js\ntype: application/javascript\nmodule-type: command\n\nListen for HTTP requests and serve tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Server = require(\"$:/core/modules/server/server.js\").Server;\n\nexports.info = {\n\tname: \"listen\",\n\tsynchronous: true,\n\tnamedParameterMode: true,\n\tmandatoryParameters: [],\n};\n\nvar Command = function(params,commander,callback) {\n\tvar self = this;\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\"Warning: Wiki folder '\" + $tw.boot.wikiPath + \"' does not exist or is missing a tiddlywiki.info file\");\n\t}\n\t// Set up server\n\tthis.server = new Server({\n\t\twiki: this.commander.wiki,\n\t\tvariables: self.params\n\t});\n\tvar nodeServer = this.server.listen();\n\t$tw.hooks.invokeHook(\"th-server-command-post-start\",this.server,nodeServer,\"tiddlywiki\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/load.js": {
"title": "$:/core/modules/commands/load.js",
"text": "/*\\\ntitle: $:/core/modules/commands/load.js\ntype: application/javascript\nmodule-type: command\n\nCommand to load tiddlers from a file or directory\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"load\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar tiddlers = $tw.loadTiddlersFromPath(self.params[0]),\n\t\tcount = 0;\n\t$tw.utils.each(tiddlers,function(tiddlerInfo) {\n\t\t$tw.utils.each(tiddlerInfo.tiddlers,function(tiddler) {\n\t\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));\n\t\t\tcount++;\n\t\t});\n\t});\n\tif(!count && self.params[1] !== \"noerror\") {\n\t\tself.callback(\"No tiddlers found in file \\\"\" + self.params[0] + \"\\\"\");\n\t} else {\n\t\tself.callback(null);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/makelibrary.js": {
"title": "$:/core/modules/commands/makelibrary.js",
"text": "/*\\\ntitle: $:/core/modules/commands/makelibrary.js\ntype: application/javascript\nmodule-type: command\n\nCommand to pack all of the plugins in the library into a plugin tiddler of type \"library\"\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"makelibrary\",\n\tsynchronous: true\n};\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar wiki = this.commander.wiki,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tupgradeLibraryTitle = this.params[0] || UPGRADE_LIBRARY_TITLE,\n\t\ttiddlers = {};\n\t// Collect up the library plugins\n\tvar collectPlugins = function(folder) {\n\t\t\tvar pluginFolders = $tw.utils.getSubdirectories(folder) || [];\n\t\t\tfor(var p=0; p<pluginFolders.length; p++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(pluginFolders[p])) {\n\t\t\t\t\tpluginFields = $tw.loadPluginFolder(path.resolve(folder,\"./\" + pluginFolders[p]));\n\t\t\t\t\tif(pluginFields && pluginFields.title) {\n\t\t\t\t\t\ttiddlers[pluginFields.title] = pluginFields;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcollectPublisherPlugins = function(folder) {\n\t\t\tvar publisherFolders = $tw.utils.getSubdirectories(folder) || [];\n\t\t\tfor(var t=0; t<publisherFolders.length; t++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(publisherFolders[t])) {\n\t\t\t\t\tcollectPlugins(path.resolve(folder,\"./\" + publisherFolders[t]));\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.pluginsPath,$tw.config.pluginsEnvVar),collectPublisherPlugins);\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.themesPath,$tw.config.themesEnvVar),collectPublisherPlugins);\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.languagesPath,$tw.config.languagesEnvVar),collectPlugins);\n\t// Save the upgrade library tiddler\n\tvar pluginFields = {\n\t\ttitle: upgradeLibraryTitle,\n\t\ttype: \"application/json\",\n\t\t\"plugin-type\": \"library\",\n\t\t\"text\": JSON.stringify({tiddlers: tiddlers})\n\t};\n\twiki.addTiddler(new $tw.Tiddler(pluginFields));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/output.js": {
"title": "$:/core/modules/commands/output.js",
"text": "/*\\\ntitle: $:/core/modules/commands/output.js\ntype: application/javascript\nmodule-type: command\n\nCommand to set the default output location (defaults to current working directory)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"output\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing output path\";\n\t}\n\tthis.commander.outputPath = path.resolve(process.cwd(),this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/password.js": {
"title": "$:/core/modules/commands/password.js",
"text": "/*\\\ntitle: $:/core/modules/commands/password.js\ntype: application/javascript\nmodule-type: command\n\nSave password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"password\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing password\";\n\t}\n\t$tw.crypto.setPassword(this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/render.js": {
"title": "$:/core/modules/commands/render.js",
"text": "/*\\\ntitle: $:/core/modules/commands/render.js\ntype: application/javascript\nmodule-type: command\n\nRender individual tiddlers and save the results to the specified files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"render\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing tiddler filter\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\ttiddlerFilter = this.params[0],\n\t\tfilenameFilter = this.params[1] || \"[is[tiddler]addsuffix[.html]]\",\n\t\ttype = this.params[2] || \"text/html\",\n\t\ttemplate = this.params[3],\n\t\tvarName = this.params[4],\n\t\tvarValue = this.params[5],\n\t\ttiddlers = wiki.filterTiddlers(tiddlerFilter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template || title),\n\t\t\tvariables = {currentTiddler: title};\n\t\tif(varName) {\n\t\t\tvariables[varName] = varValue || \"\";\n\t\t}\n\t\tvar widgetNode = wiki.makeWidget(parser,{variables: variables}),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\tvar text = type === \"text/html\" ? container.innerHTML : container.textContent,\n\t\t\tfilepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]);\n\t\tif(self.commander.verbose) {\n\t\t\tconsole.log(\"Rendering \\\"\" + title + \"\\\" to \\\"\" + filepath + \"\\\"\");\n\t\t}\n\t\t$tw.utils.createFileDirectories(filepath);\n\t\tfs.writeFileSync(filepath,text,\"utf8\");\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/rendertiddler.js": {
"title": "$:/core/modules/commands/rendertiddler.js",
"text": "/*\\\ntitle: $:/core/modules/commands/rendertiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render a tiddler and save it to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"rendertiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttype = this.params[2] || \"text/html\",\n\t\ttemplate = this.params[3],\n\t\tname = this.params[4],\n\t\tvalue = this.params[5],\n\t\tvariables = {};\n\t$tw.utils.createFileDirectories(filename);\n\tif(template) {\n\t\tvariables.currentTiddler = title;\n\t\ttitle = template;\n\t}\n\tif(name && value) {\n\t\tvariables[name] = value;\n\t}\n\tfs.writeFile(filename,this.commander.wiki.renderTiddler(type,title,{variables: variables}),\"utf8\",function(err) {\n\t\tself.callback(err);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/rendertiddlers.js": {
"title": "$:/core/modules/commands/rendertiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/commands/rendertiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"rendertiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\ttemplate = this.params[1],\n\t\toutputPath = this.commander.outputPath,\n\t\tpathname = path.resolve(outputPath,this.params[2]),\t\t\n\t\ttype = this.params[3] || \"text/html\",\n\t\textension = this.params[4] || \".html\",\n\t\tdeleteDirectory = (this.params[5] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template),\n\t\t\twidgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}}),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\tvar text = type === \"text/html\" ? container.innerHTML : container.textContent,\n\t\t\texportPath = null;\n\t\tif($tw.utils.hop($tw.macros,\"tv-get-export-path\")) {\n\t\t\tvar macroPath = $tw.macros[\"tv-get-export-path\"].run.apply(self,[title]);\n\t\t\tif(macroPath) {\n\t\t\t\texportPath = path.resolve(outputPath,macroPath + extension);\n\t\t\t}\n\t\t}\n\t\tvar finalPath = exportPath || path.resolve(pathname,encodeURIComponent(title) + extension);\n\t\t$tw.utils.createFileDirectories(finalPath);\n\t\tfs.writeFileSync(finalPath,text,\"utf8\");\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/save.js": {
"title": "$:/core/modules/commands/save.js",
"text": "/*\\\ntitle: $:/core/modules/commands/save.js\ntype: application/javascript\nmodule-type: command\n\nSaves individual tiddlers in their raw text or binary format to the specified files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"save\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename filter\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\ttiddlerFilter = this.params[0],\n\t\tfilenameFilter = this.params[1] || \"[is[tiddler]]\",\n\t\ttiddlers = wiki.filterTiddlers(tiddlerFilter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.commander.wiki.getTiddler(title),\n\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"},\n\t\t\tfilepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]);\n\t\tif(self.commander.verbose) {\n\t\t\tconsole.log(\"Saving \\\"\" + title + \"\\\" to \\\"\" + filepath + \"\\\"\");\n\t\t}\n\t\t$tw.utils.createFileDirectories(filepath);\n\t\tfs.writeFileSync(filepath,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savelibrarytiddlers.js": {
"title": "$:/core/modules/commands/savelibrarytiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/commands/savelibrarytiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the subtiddlers of a bundle tiddler as a series of JSON files\n\n--savelibrarytiddlers <tiddler> <tiddler-filter> <pathname> <skinnylisting>\n\nThe tiddler identifies the bundle tiddler that contains the subtiddlers.\n\nThe tiddler filter specifies the plugins to be included.\n\nThe pathname specifies the pathname to the folder in which the JSON files should be saved. The filename is the URL encoded title of the subtiddler.\n\nThe skinnylisting specifies the title of the tiddler to which a JSON catalogue of the subtiddlers will be saved. The JSON file contains the same data as the bundle tiddler but with the `text` field removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savelibrarytiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tcontainerTitle = this.params[0],\n\t\tfilter = this.params[1],\n\t\tbasepath = this.params[2],\n\t\tskinnyListTitle = this.params[3];\n\t// Get the container tiddler as data\n\tvar containerData = self.commander.wiki.getTiddlerDataCached(containerTitle,undefined);\n\tif(!containerData) {\n\t\treturn \"'\" + containerTitle + \"' is not a tiddler bundle\";\n\t}\n\t// Filter the list of plugins\n\tvar pluginList = [];\n\t$tw.utils.each(containerData.tiddlers,function(tiddler,title) {\n\t\tpluginList.push(title);\n\t});\n\tvar filteredPluginList;\n\tif(filter) {\n\t\tfilteredPluginList = self.commander.wiki.filterTiddlers(filter,null,self.commander.wiki.makeTiddlerIterator(pluginList));\n\t} else {\n\t\tfilteredPluginList = pluginList;\n\t}\n\t// Iterate through the plugins\n\tvar skinnyList = [];\n\t$tw.utils.each(filteredPluginList,function(title) {\n\t\tvar tiddler = containerData.tiddlers[title];\n\t\t// Save each JSON file and collect the skinny data\n\t\tvar pathname = path.resolve(self.commander.outputPath,basepath + encodeURIComponent(title) + \".json\");\n\t\t$tw.utils.createFileDirectories(pathname);\n\t\tfs.writeFileSync(pathname,JSON.stringify(tiddler),\"utf8\");\n\t\t// Collect the skinny list data\n\t\tvar pluginTiddlers = JSON.parse(tiddler.text),\n\t\t\treadmeContent = (pluginTiddlers.tiddlers[title + \"/readme\"] || {}).text,\n\t\t\tdoesRequireReload = !!self.commander.wiki.doesPluginInfoRequireReload(pluginTiddlers),\n\t\t\ticonTiddler = pluginTiddlers.tiddlers[title + \"/icon\"] || {},\n\t\t\ticonType = iconTiddler.type,\n\t\t\ticonText = iconTiddler.text,\n\t\t\ticonContent;\n\t\tif(iconType && iconText) {\n\t\t\ticonContent = $tw.utils.makeDataUri(iconText,iconType);\n\t\t}\n\t\tskinnyList.push($tw.utils.extend({},tiddler,{\n\t\t\ttext: undefined,\n\t\t\treadme: readmeContent,\n\t\t\t\"requires-reload\": doesRequireReload ? \"yes\" : \"no\",\n\t\t\ticon: iconContent\n\t\t}));\n\t});\n\t// Save the catalogue tiddler\n\tif(skinnyListTitle) {\n\t\tself.commander.wiki.setTiddlerData(skinnyListTitle,skinnyList);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savetiddler.js": {
"title": "$:/core/modules/commands/savetiddler.js",
"text": "/*\\\ntitle: $:/core/modules/commands/savetiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the content of a tiddler to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savetiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttiddler = this.commander.wiki.getTiddler(title);\n\tif(tiddler) {\n\t\tvar type = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"};\n\t\t$tw.utils.createFileDirectories(filename);\n\t\tfs.writeFile(filename,tiddler.fields.text,contentTypeInfo.encoding,function(err) {\n\t\t\tself.callback(err);\n\t\t});\n\t} else {\n\t\treturn \"Missing tiddler: \" + title;\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savetiddlers.js": {
"title": "$:/core/modules/commands/savetiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/commands/savetiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"savetiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tpathname = path.resolve(this.commander.outputPath,this.params[1]),\n\t\tdeleteDirectory = (this.params[2] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.createDirectory(pathname);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.commander.wiki.getTiddler(title),\n\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"},\n\t\t\tfilename = path.resolve(pathname,encodeURIComponent(title));\n\t\tfs.writeFileSync(filename,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savewikifolder.js": {
"title": "$:/core/modules/commands/savewikifolder.js",
"text": "/*\\\ntitle: $:/core/modules/commands/savewikifolder.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the current wiki as a wiki folder\n\n--savewikifolder <wikifolderpath> [<filter>]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savewikifolder\",\n\tsynchronous: true\n};\n\nvar fs,path;\nif($tw.node) {\n\tfs = require(\"fs\");\n\tpath = require(\"path\");\n}\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing wiki folder path\";\n\t}\n\tvar wikifoldermaker = new WikiFolderMaker(this.params[0],this.params[1],this.commander);\n\treturn wikifoldermaker.save();\n};\n\nfunction WikiFolderMaker(wikiFolderPath,wikiFilter,commander) {\n\tthis.wikiFolderPath = wikiFolderPath;\n\tthis.wikiFilter = wikiFilter || \"[all[tiddlers]]\";\n\tthis.commander = commander;\n\tthis.wiki = commander.wiki;\n\tthis.savedPaths = []; // So that we can detect filename clashes\n}\n\nWikiFolderMaker.prototype.log = function(str) {\n\tif(this.commander.verbose) {\n\t\tconsole.log(str);\n\t}\n};\n\nWikiFolderMaker.prototype.tiddlersToIgnore = [\n\t\"$:/boot/boot.css\",\n\t\"$:/boot/boot.js\",\n\t\"$:/boot/bootprefix.js\",\n\t\"$:/core\",\n\t\"$:/library/sjcl.js\",\n\t\"$:/temp/info-plugin\"\n];\n\n/*\nReturns null if successful, or an error string if there was an error\n*/\nWikiFolderMaker.prototype.save = function() {\n\tvar self = this;\n\t// Check that the output directory doesn't exist\n\tif(fs.existsSync(this.wikiFolderPath) && !$tw.utils.isDirectoryEmpty(this.wikiFolderPath)) {\n\t\treturn \"The unpackwiki command requires that the output wiki folder be empty\";\n\t}\n\t// Get the tiddlers from the source wiki\n\tvar tiddlerTitles = this.wiki.filterTiddlers(this.wikiFilter);\n\t// Initialise a new tiddlwiki.info file\n\tvar newWikiInfo = {};\n\t// Process each incoming tiddler in turn\n\t$tw.utils.each(tiddlerTitles,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tif(self.tiddlersToIgnore.indexOf(title) !== -1) {\n\t\t\t\t// Ignore the core plugin and the ephemeral info plugin\n\t\t\t\tself.log(\"Ignoring tiddler: \" + title);\n\t\t\t} else {\n\t\t\t\tvar type = tiddler.fields.type,\n\t\t\t\t\tpluginType = tiddler.fields[\"plugin-type\"];\n\t\t\t\tif(type === \"application/json\" && pluginType) {\n\t\t\t\t\t// Plugin tiddler\n\t\t\t\t\tvar libraryDetails = self.findPluginInLibrary(title);\n\t\t\t\t\tif(libraryDetails) {\n\t\t\t\t\t\t// A plugin from the core library\n\t\t\t\t\t\tself.log(\"Adding built-in plugin: \" + libraryDetails.name);\n\t\t\t\t\t\tnewWikiInfo[libraryDetails.type] = newWikiInfo[libraryDetails.type] || [];\n\t\t\t\t\t\t$tw.utils.pushTop(newWikiInfo[libraryDetails.type],libraryDetails.name);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// A custom plugin\n\t\t\t\t\t\tself.log(\"Processing custom plugin: \" + title);\n\t\t\t\t\t\tself.saveCustomPlugin(tiddler);\n\t\t\t\t\t}\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\t// Ordinary tiddler\n\t\t\t\t\tself.saveTiddler(\"tiddlers\",tiddler);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t// Save the tiddlywiki.info file\n\tthis.saveJSONFile(\"tiddlywiki.info\",newWikiInfo);\n\tself.log(\"Writing tiddlywiki.info: \" + JSON.stringify(newWikiInfo,null,$tw.config.preferences.jsonSpaces));\n\treturn null;\n};\n\n/*\nTest whether the specified tiddler is a plugin in the plugin library\n*/\nWikiFolderMaker.prototype.findPluginInLibrary = function(title) {\n\tvar parts = title.split(\"/\"),\n\t\tpluginPath, type, name;\n\tif(parts[0] === \"$:\") {\n\t\tif(parts[1] === \"languages\" && parts.length === 3) {\n\t\t\tpluginPath = \"languages\" + path.sep + parts[2];\n\t\t\ttype = parts[1];\n\t\t\tname = parts[2];\n\t\t} else if(parts[1] === \"plugins\" || parts[1] === \"themes\" && parts.length === 4) {\n\t\t\tpluginPath = parts[1] + path.sep + parts[2] + path.sep + parts[3];\n\t\t\ttype = parts[1];\n\t\t\tname = parts[2] + \"/\" + parts[3];\n\t\t}\n\t}\n\tif(pluginPath && type && name) {\n\t\tpluginPath = path.resolve($tw.boot.bootPath,\"..\",pluginPath);\n\t\tif(fs.existsSync(pluginPath)) {\n\t\t\treturn {\n\t\t\t\tpluginPath: pluginPath,\n\t\t\t\ttype: type,\n\t\t\t\tname: name\n\t\t\t};\n\t\t}\n\t}\n\treturn false;\n};\n\nWikiFolderMaker.prototype.saveCustomPlugin = function(pluginTiddler) {\n\tvar self = this,\n\t\tpluginTitle = pluginTiddler.fields.title,\n\t\ttitleParts = pluginTitle.split(\"/\"),\n\t\tdirectory = $tw.utils.generateTiddlerFilepath(titleParts[titleParts.length - 1],{\n\t\t\tdirectory: path.resolve(this.wikiFolderPath,pluginTiddler.fields[\"plugin-type\"] + \"s\")\n\t\t}),\n\t\tpluginInfo = pluginTiddler.getFieldStrings({exclude: [\"text\",\"type\"]});\n\tthis.saveJSONFile(directory + path.sep + \"plugin.info\",pluginInfo);\n\tself.log(\"Writing \" + directory + path.sep + \"plugin.info: \" + JSON.stringify(pluginInfo,null,$tw.config.preferences.jsonSpaces));\n\tvar pluginTiddlers = JSON.parse(pluginTiddler.fields.text).tiddlers; // A hashmap of tiddlers in the plugin\n\t$tw.utils.each(pluginTiddlers,function(tiddler) {\n\t\tself.saveTiddler(directory,new $tw.Tiddler(tiddler));\n\t});\n};\n\nWikiFolderMaker.prototype.saveTiddler = function(directory,tiddler) {\n\tvar fileInfo = $tw.utils.generateTiddlerFileInfo(tiddler,{\n\t\tdirectory: path.resolve(this.wikiFolderPath,directory),\n\t\twiki: this.wiki\n\t});\n\t$tw.utils.saveTiddlerToFileSync(tiddler,fileInfo);\n};\n\nWikiFolderMaker.prototype.saveJSONFile = function(filename,json) {\n\tthis.saveTextFile(filename,JSON.stringify(json,null,$tw.config.preferences.jsonSpaces));\n};\n\nWikiFolderMaker.prototype.saveTextFile = function(filename,data) {\n\tthis.saveFile(filename,\"utf8\",data);\n};\n\nWikiFolderMaker.prototype.saveFile = function(filename,encoding,data) {\n\tvar filepath = path.resolve(this.wikiFolderPath,filename);\n\t$tw.utils.createFileDirectories(filepath);\n\tfs.writeFileSync(filepath,data,encoding);\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/server.js": {
"title": "$:/core/modules/commands/server.js",
"text": "/*\\\ntitle: $:/core/modules/commands/server.js\ntype: application/javascript\nmodule-type: command\n\nDeprecated legacy command for serving tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Server = require(\"$:/core/modules/server/server.js\").Server;\n\nexports.info = {\n\tname: \"server\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tvar self = this;\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\"Warning: Wiki folder '\" + $tw.boot.wikiPath + \"' does not exist or is missing a tiddlywiki.info file\");\n\t}\n\t// Set up server\n\tthis.server = new Server({\n\t\twiki: this.commander.wiki,\n\t\tvariables: {\n\t\t\tport: this.params[0],\n\t\t\thost: this.params[6],\n\t\t\t\"root-tiddler\": this.params[1],\n\t\t\t\"root-render-type\": this.params[2],\n\t\t\t\"root-serve-type\": this.params[3],\n\t\t\tusername: this.params[4],\n\t\t\tpassword: this.params[5],\n\t\t\t\"path-prefix\": this.params[7],\n\t\t\t\"debug-level\": this.params[8]\n\t\t}\n\t});\n\tvar nodeServer = this.server.listen();\n\t$tw.hooks.invokeHook(\"th-server-command-post-start\",this.server,nodeServer,\"tiddlywiki\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/setfield.js": {
"title": "$:/core/modules/commands/setfield.js",
"text": "/*\\\ntitle: $:/core/modules/commands/setfield.js\ntype: application/javascript\nmodule-type: command\n\nCommand to modify selected tiddlers to set a field to the text of a template tiddler that has been wikified with the selected tiddler as the current tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"setfield\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 4) {\n\t\treturn \"Missing parameters\";\n\t}\n\tvar self = this,\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tfieldname = this.params[1] || \"text\",\n\t\ttemplatetitle = this.params[2],\n\t\trendertype = this.params[3] || \"text/plain\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(templatetitle),\n\t\t\tnewFields = {},\n\t\t\ttiddler = wiki.getTiddler(title);\n\t\tif(parser) {\n\t\t\tvar widgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}});\n\t\t\tvar container = $tw.fakeDocument.createElement(\"div\");\n\t\t\twidgetNode.render(container,null);\n\t\t\tnewFields[fieldname] = rendertype === \"text/html\" ? container.innerHTML : container.textContent;\n\t\t} else {\n\t\t\tnewFields[fieldname] = undefined;\n\t\t}\n\t\twiki.addTiddler(new $tw.Tiddler(tiddler,newFields));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/unpackplugin.js": {
"title": "$:/core/modules/commands/unpackplugin.js",
"text": "/*\\\ntitle: $:/core/modules/commands/unpackplugin.js\ntype: application/javascript\nmodule-type: command\n\nCommand to extract the shadow tiddlers from within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"unpackplugin\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing plugin name\";\n\t}\n\tvar self = this,\n\t\ttitle = this.params[0],\n\t\tpluginData = this.commander.wiki.getTiddlerDataCached(title);\n\tif(!pluginData) {\n\t\treturn \"Plugin '\" + title + \"' not found\";\n\t}\n\t$tw.utils.each(pluginData.tiddlers,function(tiddler) {\n\t\tself.commander.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/verbose.js": {
"title": "$:/core/modules/commands/verbose.js",
"text": "/*\\\ntitle: $:/core/modules/commands/verbose.js\ntype: application/javascript\nmodule-type: command\n\nVerbose command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"verbose\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.verbose = true;\n\t// Output the boot message log\n\tthis.commander.streams.output.write(\"Boot log:\\n \" + $tw.boot.logMessages.join(\"\\n \") + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/version.js": {
"title": "$:/core/modules/commands/version.js",
"text": "/*\\\ntitle: $:/core/modules/commands/version.js\ntype: application/javascript\nmodule-type: command\n\nVersion command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"version\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.streams.output.write($tw.version + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/config.js": {
"title": "$:/core/modules/config.js",
"text": "/*\\\ntitle: $:/core/modules/config.js\ntype: application/javascript\nmodule-type: config\n\nCore configuration constants\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.preferences = {};\n\nexports.preferences.notificationDuration = 3 * 1000;\nexports.preferences.jsonSpaces = 4;\n\nexports.textPrimitives = {\n\tupperLetter: \"[A-Z\\u00c0-\\u00d6\\u00d8-\\u00de\\u0150\\u0170]\",\n\tlowerLetter: \"[a-z\\u00df-\\u00f6\\u00f8-\\u00ff\\u0151\\u0171]\",\n\tanyLetter: \"[A-Za-z0-9\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\",\n\tblockPrefixLetters:\t\"[A-Za-z0-9-_\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\"\n};\n\nexports.textPrimitives.unWikiLink = \"~\";\nexports.textPrimitives.wikiLink = exports.textPrimitives.upperLetter + \"+\" +\n\texports.textPrimitives.lowerLetter + \"+\" +\n\texports.textPrimitives.upperLetter +\n\texports.textPrimitives.anyLetter + \"*\";\n\nexports.htmlEntities = {quot:34, amp:38, apos:39, lt:60, gt:62, nbsp:160, iexcl:161, cent:162, pound:163, curren:164, yen:165, brvbar:166, sect:167, uml:168, copy:169, ordf:170, laquo:171, not:172, shy:173, reg:174, macr:175, deg:176, plusmn:177, sup2:178, sup3:179, acute:180, micro:181, para:182, middot:183, cedil:184, sup1:185, ordm:186, raquo:187, frac14:188, frac12:189, frac34:190, iquest:191, Agrave:192, Aacute:193, Acirc:194, Atilde:195, Auml:196, Aring:197, AElig:198, Ccedil:199, Egrave:200, Eacute:201, Ecirc:202, Euml:203, Igrave:204, Iacute:205, Icirc:206, Iuml:207, ETH:208, Ntilde:209, Ograve:210, Oacute:211, Ocirc:212, Otilde:213, Ouml:214, times:215, Oslash:216, Ugrave:217, Uacute:218, Ucirc:219, Uuml:220, Yacute:221, THORN:222, szlig:223, agrave:224, aacute:225, acirc:226, atilde:227, auml:228, aring:229, aelig:230, ccedil:231, egrave:232, eacute:233, ecirc:234, euml:235, igrave:236, iacute:237, icirc:238, iuml:239, eth:240, ntilde:241, ograve:242, oacute:243, ocirc:244, otilde:245, ouml:246, divide:247, oslash:248, ugrave:249, uacute:250, ucirc:251, uuml:252, yacute:253, thorn:254, yuml:255, OElig:338, oelig:339, Scaron:352, scaron:353, Yuml:376, fnof:402, circ:710, tilde:732, Alpha:913, Beta:914, Gamma:915, Delta:916, Epsilon:917, Zeta:918, Eta:919, Theta:920, Iota:921, Kappa:922, Lambda:923, Mu:924, Nu:925, Xi:926, Omicron:927, Pi:928, Rho:929, Sigma:931, Tau:932, Upsilon:933, Phi:934, Chi:935, Psi:936, Omega:937, alpha:945, beta:946, gamma:947, delta:948, epsilon:949, zeta:950, eta:951, theta:952, iota:953, kappa:954, lambda:955, mu:956, nu:957, xi:958, omicron:959, pi:960, rho:961, sigmaf:962, sigma:963, tau:964, upsilon:965, phi:966, chi:967, psi:968, omega:969, thetasym:977, upsih:978, piv:982, ensp:8194, emsp:8195, thinsp:8201, zwnj:8204, zwj:8205, lrm:8206, rlm:8207, ndash:8211, mdash:8212, lsquo:8216, rsquo:8217, sbquo:8218, ldquo:8220, rdquo:8221, bdquo:8222, dagger:8224, Dagger:8225, bull:8226, hellip:8230, permil:8240, prime:8242, Prime:8243, lsaquo:8249, rsaquo:8250, oline:8254, frasl:8260, euro:8364, image:8465, weierp:8472, real:8476, trade:8482, alefsym:8501, larr:8592, uarr:8593, rarr:8594, darr:8595, harr:8596, crarr:8629, lArr:8656, uArr:8657, rArr:8658, dArr:8659, hArr:8660, forall:8704, part:8706, exist:8707, empty:8709, nabla:8711, isin:8712, notin:8713, ni:8715, prod:8719, sum:8721, minus:8722, lowast:8727, radic:8730, prop:8733, infin:8734, ang:8736, and:8743, or:8744, cap:8745, cup:8746, int:8747, there4:8756, sim:8764, cong:8773, asymp:8776, ne:8800, equiv:8801, le:8804, ge:8805, sub:8834, sup:8835, nsub:8836, sube:8838, supe:8839, oplus:8853, otimes:8855, perp:8869, sdot:8901, lceil:8968, rceil:8969, lfloor:8970, rfloor:8971, lang:9001, rang:9002, loz:9674, spades:9824, clubs:9827, hearts:9829, diams:9830 };\n\nexports.htmlVoidElements = \"area,base,br,col,command,embed,hr,img,input,keygen,link,meta,param,source,track,wbr\".split(\",\");\n\nexports.htmlBlockElements = \"address,article,aside,audio,blockquote,canvas,dd,div,dl,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,hr,li,noscript,ol,output,p,pre,section,table,tfoot,ul,video\".split(\",\");\n\nexports.htmlUnsafeElements = \"script\".split(\",\");\n\n})();\n",
"type": "application/javascript",
"module-type": "config"
},
"$:/core/modules/deserializers.js": {
"title": "$:/core/modules/deserializers.js",
"text": "/*\\\ntitle: $:/core/modules/deserializers.js\ntype: application/javascript\nmodule-type: tiddlerdeserializer\n\nFunctions to deserialise tiddlers from a block of text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nUtility function to parse an old-style tiddler DIV in a *.tid file. It looks like this:\n\n<div title=\"Title\" creator=\"JoeBloggs\" modifier=\"JoeBloggs\" created=\"201102111106\" modified=\"201102111310\" tags=\"myTag [[my long tag]]\">\n<pre>The text of the tiddler (without the expected HTML encoding).\n</pre>\n</div>\n\nNote that the field attributes are HTML encoded, but that the body of the <PRE> tag is not encoded.\n\nWhen these tiddler DIVs are encountered within a TiddlyWiki HTML file then the body is encoded in the usual way.\n*/\nvar parseTiddlerDiv = function(text /* [,fields] */) {\n\t// Slot together the default results\n\tvar result = {};\n\tif(arguments.length > 1) {\n\t\tfor(var f=1; f<arguments.length; f++) {\n\t\t\tvar fields = arguments[f];\n\t\t\tfor(var t in fields) {\n\t\t\t\tresult[t] = fields[t];\t\t\n\t\t\t}\n\t\t}\n\t}\n\t// Parse the DIV body\n\tvar startRegExp = /^\\s*<div\\s+([^>]*)>(\\s*<pre>)?/gi,\n\t\tendRegExp,\n\t\tmatch = startRegExp.exec(text);\n\tif(match) {\n\t\t// Old-style DIVs don't have the <pre> tag\n\t\tif(match[2]) {\n\t\t\tendRegExp = /<\\/pre>\\s*<\\/div>\\s*$/gi;\n\t\t} else {\n\t\t\tendRegExp = /<\\/div>\\s*$/gi;\n\t\t}\n\t\tvar endMatch = endRegExp.exec(text);\n\t\tif(endMatch) {\n\t\t\t// Extract the text\n\t\t\tresult.text = text.substring(match.index + match[0].length,endMatch.index);\n\t\t\t// Process the attributes\n\t\t\tvar attrRegExp = /\\s*([^=\\s]+)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)')/gi,\n\t\t\t\tattrMatch;\n\t\t\tdo {\n\t\t\t\tattrMatch = attrRegExp.exec(match[1]);\n\t\t\t\tif(attrMatch) {\n\t\t\t\t\tvar name = attrMatch[1];\n\t\t\t\t\tvar value = attrMatch[2] !== undefined ? attrMatch[2] : attrMatch[3];\n\t\t\t\t\tresult[name] = value;\n\t\t\t\t}\n\t\t\t} while(attrMatch);\n\t\t\treturn result;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports[\"application/x-tiddler-html-div\"] = function(text,fields) {\n\treturn [parseTiddlerDiv(text,fields)];\n};\n\nexports[\"application/json\"] = function(text,fields) {\n\tvar incoming,\n\t\tresults = [];\n\ttry {\n\t\tincoming = JSON.parse(text);\n\t} catch(e) {\n\t\tincoming = [{\n\t\t\ttitle: \"JSON error: \" + e,\n\t\t\ttext: \"\"\n\t\t}]\n\t}\n\tif(!$tw.utils.isArray(incoming)) {\n\t\tincoming = [incoming];\n\t}\n\tfor(var t=0; t<incoming.length; t++) {\n\t\tvar incomingFields = incoming[t],\n\t\t\tfields = {};\n\t\tfor(var f in incomingFields) {\n\t\t\tif(typeof incomingFields[f] === \"string\") {\n\t\t\t\tfields[f] = incomingFields[f];\n\t\t\t}\n\t\t}\n\t\tresults.push(fields);\n\t}\n\treturn results;\n};\n\n/*\nParse an HTML file into tiddlers. There are three possibilities:\n# A TiddlyWiki classic HTML file containing `text/x-tiddlywiki` tiddlers\n# A TiddlyWiki5 HTML file containing `text/vnd.tiddlywiki` tiddlers\n# An ordinary HTML file\n*/\nexports[\"text/html\"] = function(text,fields) {\n\t// Check if we've got a store area\n\tvar storeAreaMarkerRegExp = /<div id=[\"']?storeArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\tmatch = storeAreaMarkerRegExp.exec(text);\n\tif(match) {\n\t\t// If so, it's either a classic TiddlyWiki file or an unencrypted TW5 file\n\t\t// First read the normal tiddlers\n\t\tvar results = deserializeTiddlyWikiFile(text,storeAreaMarkerRegExp.lastIndex,!!match[1],fields);\n\t\t// Then any system tiddlers\n\t\tvar systemAreaMarkerRegExp = /<div id=[\"']?systemArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\t\tsysMatch = systemAreaMarkerRegExp.exec(text);\n\t\tif(sysMatch) {\n\t\t\tresults.push.apply(results,deserializeTiddlyWikiFile(text,systemAreaMarkerRegExp.lastIndex,!!sysMatch[1],fields));\n\t\t}\n\t\treturn results;\n\t} else {\n\t\t// Check whether we've got an encrypted file\n\t\tvar encryptedStoreArea = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedStoreArea) {\n\t\t\t// If so, attempt to decrypt it using the current password\n\t\t\treturn $tw.utils.decryptStoreArea(encryptedStoreArea);\n\t\t} else {\n\t\t\t// It's not a TiddlyWiki so we'll return the entire HTML file as a tiddler\n\t\t\treturn deserializeHtmlFile(text,fields);\n\t\t}\n\t}\n};\n\nfunction deserializeHtmlFile(text,fields) {\n\tvar result = {};\n\t$tw.utils.each(fields,function(value,name) {\n\t\tresult[name] = value;\n\t});\n\tresult.text = text;\n\tresult.type = \"text/html\";\n\treturn [result];\n}\n\nfunction deserializeTiddlyWikiFile(text,storeAreaEnd,isTiddlyWiki5,fields) {\n\tvar results = [],\n\t\tendOfDivRegExp = /(<\\/div>\\s*)/gi,\n\t\tstartPos = storeAreaEnd,\n\t\tdefaultType = isTiddlyWiki5 ? undefined : \"text/x-tiddlywiki\";\n\tendOfDivRegExp.lastIndex = startPos;\n\tvar match = endOfDivRegExp.exec(text);\n\twhile(match) {\n\t\tvar endPos = endOfDivRegExp.lastIndex,\n\t\t\ttiddlerFields = parseTiddlerDiv(text.substring(startPos,endPos),fields,{type: defaultType});\n\t\tif(!tiddlerFields) {\n\t\t\tbreak;\n\t\t}\n\t\t$tw.utils.each(tiddlerFields,function(value,name) {\n\t\t\tif(typeof value === \"string\") {\n\t\t\t\ttiddlerFields[name] = $tw.utils.htmlDecode(value);\n\t\t\t}\n\t\t});\n\t\tif(tiddlerFields.text !== null) {\n\t\t\tresults.push(tiddlerFields);\n\t\t}\n\t\tstartPos = endPos;\n\t\tmatch = endOfDivRegExp.exec(text);\n\t}\n\treturn results;\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "tiddlerdeserializer"
},
"$:/core/modules/editor/engines/framed.js": {
"title": "$:/core/modules/editor/engines/framed.js",
"text": "/*\\\ntitle: $:/core/modules/editor/engines/framed.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea within an iframe. This is done so that the selection is preserved even when clicking away from the textarea\n\n\\*/\n(function(){\n\n/*jslint node: true,browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction FramedEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Create our hidden dummy text area for reading styles\n\tthis.dummyTextArea = this.widget.document.createElement(\"textarea\");\n\tif(this.widget.editClass) {\n\t\tthis.dummyTextArea.className = this.widget.editClass;\n\t}\n\tthis.dummyTextArea.setAttribute(\"hidden\",\"true\");\n\tthis.parentNode.insertBefore(this.dummyTextArea,this.nextSibling);\n\tthis.widget.domNodes.push(this.dummyTextArea);\n\t// Create the iframe\n\tthis.iframeNode = this.widget.document.createElement(\"iframe\");\n\tthis.parentNode.insertBefore(this.iframeNode,this.nextSibling);\n\tthis.iframeDoc = this.iframeNode.contentWindow.document;\n\t// (Firefox requires us to put some empty content in the iframe)\n\tthis.iframeDoc.open();\n\tthis.iframeDoc.write(\"\");\n\tthis.iframeDoc.close();\n\t// Style the iframe\n\tthis.iframeNode.className = this.dummyTextArea.className;\n\tthis.iframeNode.style.border = \"none\";\n\tthis.iframeNode.style.padding = \"0\";\n\tthis.iframeNode.style.resize = \"none\";\n\tthis.iframeDoc.body.style.margin = \"0\";\n\tthis.iframeDoc.body.style.padding = \"0\";\n\tthis.widget.domNodes.push(this.iframeNode);\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.iframeDoc.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.iframeDoc.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\tif(this.widget.editTabIndex) {\n\t\tthis.iframeNode.setAttribute(\"tabindex\",this.widget.editTabIndex);\n\t}\n\tif(this.widget.editAutoComplete) {\n\t\tthis.domNode.setAttribute(\"autocomplete\",this.widget.editAutoComplete);\n\t}\n\tif(this.widget.isDisabled === \"yes\") {\n\t\tthis.domNode.setAttribute(\"disabled\",true);\n\t}\t\n\t// Copy the styles from the dummy textarea\n\tthis.copyStyles();\n\t// Add event listeners\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"click\",handlerObject: this,handlerMethod: \"handleClickEvent\"},\n\t\t{name: \"input\",handlerObject: this,handlerMethod: \"handleInputEvent\"},\n\t\t{name: \"keydown\",handlerObject: this.widget,handlerMethod: \"handleKeydownEvent\"},\n\t\t{name: \"focus\",handlerObject: this,handlerMethod: \"handleFocusEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.iframeDoc.body.appendChild(this.domNode);\n}\n\n/*\nCopy styles from the dummy text area to the textarea in the iframe\n*/\nFramedEngine.prototype.copyStyles = function() {\n\t// Copy all styles\n\t$tw.utils.copyStyles(this.dummyTextArea,this.domNode);\n\t// Override the ones that should not be set the same as the dummy textarea\n\tthis.domNode.style.display = \"block\";\n\tthis.domNode.style.width = \"100%\";\n\tthis.domNode.style.margin = \"0\";\n\t// In Chrome setting -webkit-text-fill-color overrides the placeholder text colour\n\tthis.domNode.style[\"-webkit-text-fill-color\"] = \"currentcolor\";\n};\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nFramedEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode) {\n\t\t\tthis.updateDomNodeText(text);\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nUpdate the DomNode with the new text\n*/\nFramedEngine.prototype.updateDomNodeText = function(text) {\n\tthis.domNode.value = text;\n};\n\n/*\nGet the text of the engine\n*/\nFramedEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nFramedEngine.prototype.fixHeight = function() {\n\t// Make sure styles are updated\n\tthis.copyStyles();\n\t// Adjust height\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\tvar newHeight = $tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t\tthis.iframeNode.style.height = (newHeight + 14) + \"px\"; // +14 for the border on the textarea\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t\tthis.iframeNode.style.height = (fixedHeight + 14) + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nFramedEngine.prototype.focus = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a focus event\n*/\nFramedEngine.prototype.handleFocusEvent = function(event) {\n\tif(this.widget.editCancelPopups) {\n\t\t$tw.popup.cancel(0);\t\n\t}\n};\n\n/*\nHandle a click\n*/\nFramedEngine.prototype.handleClickEvent = function(event) {\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nFramedEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\tif(this.widget.editInputActions) {\n\t\tthis.widget.invokeActionString(this.widget.editInputActions);\n\t}\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nFramedEngine.prototype.createTextOperation = function() {\n\tvar operation = {\n\t\ttext: this.domNode.value,\n\t\tselStart: this.domNode.selectionStart,\n\t\tselEnd: this.domNode.selectionEnd,\n\t\tcutStart: null,\n\t\tcutEnd: null,\n\t\treplacement: null,\n\t\tnewSelStart: null,\n\t\tnewSelEnd: null\n\t};\n\toperation.selection = operation.text.substring(operation.selStart,operation.selEnd);\n\treturn operation;\n};\n\n/*\nExecute a text operation\n*/\nFramedEngine.prototype.executeTextOperation = function(operation) {\n\t// Perform the required changes to the text area and the underlying tiddler\n\tvar newText = operation.text;\n\tif(operation.replacement !== null) {\n\t\tnewText = operation.text.substring(0,operation.cutStart) + operation.replacement + operation.text.substring(operation.cutEnd);\n\t\t// Attempt to use a execCommand to modify the value of the control\n\t\tif(this.iframeDoc.queryCommandSupported(\"insertText\") && this.iframeDoc.queryCommandSupported(\"delete\") && !$tw.browser.isFirefox) {\n\t\t\tthis.domNode.focus();\n\t\t\tthis.domNode.setSelectionRange(operation.cutStart,operation.cutEnd);\n\t\t\tif(operation.replacement === \"\") {\n\t\t\t\tthis.iframeDoc.execCommand(\"delete\",false,\"\");\n\t\t\t} else {\n\t\t\t\tthis.iframeDoc.execCommand(\"insertText\",false,operation.replacement);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.domNode.value = newText;\n\t\t}\n\t\tthis.domNode.focus();\n\t\tthis.domNode.setSelectionRange(operation.newSelStart,operation.newSelEnd);\n\t}\n\tthis.domNode.focus();\n\treturn newText;\n};\n\nexports.FramedEngine = FramedEngine;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/editor/engines/simple.js": {
"title": "$:/core/modules/editor/engines/simple.js",
"text": "/*\\\ntitle: $:/core/modules/editor/engines/simple.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction SimpleEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.widget.document.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.widget.document.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\tif(this.widget.editClass) {\n\t\tthis.domNode.className = this.widget.editClass;\n\t}\n\tif(this.widget.editTabIndex) {\n\t\tthis.domNode.setAttribute(\"tabindex\",this.widget.editTabIndex);\n\t}\n\tif(this.widget.editAutoComplete) {\n\t\tthis.domNode.setAttribute(\"autocomplete\",this.widget.editAutoComplete);\n\t}\n\tif(this.widget.isDisabled === \"yes\") {\n\t\tthis.domNode.setAttribute(\"disabled\",true);\n\t}\n\t// Add an input event handler\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"focus\", handlerObject: this, handlerMethod: \"handleFocusEvent\"},\n\t\t{name: \"input\", handlerObject: this, handlerMethod: \"handleInputEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.parentNode.insertBefore(this.domNode,this.nextSibling);\n\tthis.widget.domNodes.push(this.domNode);\n}\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nSimpleEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode || text === \"\") {\n\t\t\tthis.updateDomNodeText(text);\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nUpdate the DomNode with the new text\n*/\nSimpleEngine.prototype.updateDomNodeText = function(text) {\n\tthis.domNode.value = text;\n};\n\n/*\nGet the text of the engine\n*/\nSimpleEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nSimpleEngine.prototype.fixHeight = function() {\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\t$tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nSimpleEngine.prototype.focus = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nSimpleEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\tif(this.widget.editInputActions) {\n\t\tthis.widget.invokeActionString(this.widget.editInputActions);\n\t}\n\treturn true;\n};\n\n/*\nHandle a dom \"focus\" event\n*/\nSimpleEngine.prototype.handleFocusEvent = function(event) {\n\tif(this.widget.editCancelPopups) {\n\t\t$tw.popup.cancel(0);\n\t}\n\tif(this.widget.editFocusPopup) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNode,\n\t\t\ttitle: this.widget.editFocusPopup,\n\t\t\twiki: this.widget.wiki,\n\t\t\tforce: true\n\t\t});\n\t}\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nSimpleEngine.prototype.createTextOperation = function() {\n\treturn null;\n};\n\n/*\nExecute a text operation\n*/\nSimpleEngine.prototype.executeTextOperation = function(operation) {\n};\n\nexports.SimpleEngine = SimpleEngine;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/editor/factory.js": {
"title": "$:/core/modules/editor/factory.js",
"text": "/*\\\ntitle: $:/core/modules/editor/factory.js\ntype: application/javascript\nmodule-type: library\n\nFactory for constructing text editor widgets with specified engines for the toolbar and non-toolbar cases\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DEFAULT_MIN_TEXT_AREA_HEIGHT = \"100px\"; // Minimum height of textareas in pixels\n\n// Configuration tiddlers\nvar HEIGHT_MODE_TITLE = \"$:/config/TextEditor/EditorHeight/Mode\";\nvar ENABLE_TOOLBAR_TITLE = \"$:/config/TextEditor/EnableToolbar\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nfunction editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {\n\n\tvar EditTextWidget = function(parseTreeNode,options) {\n\t\t// Initialise the editor operations if they've not been done already\n\t\tif(!this.editorOperations) {\n\t\t\tEditTextWidget.prototype.editorOperations = {};\n\t\t\t$tw.modules.applyMethods(\"texteditoroperation\",this.editorOperations);\n\t\t}\n\t\tthis.initialise(parseTreeNode,options);\n\t};\n\n\t/*\n\tInherit from the base widget class\n\t*/\n\tEditTextWidget.prototype = new Widget();\n\n\t/*\n\tRender this widget into the DOM\n\t*/\n\tEditTextWidget.prototype.render = function(parent,nextSibling) {\n\t\t// Save the parent dom node\n\t\tthis.parentDomNode = parent;\n\t\t// Compute our attributes\n\t\tthis.computeAttributes();\n\t\t// Execute our logic\n\t\tthis.execute();\n\t\t// Create the wrapper for the toolbar and render its content\n\t\tif(this.editShowToolbar) {\n\t\t\tthis.toolbarNode = this.document.createElement(\"div\");\n\t\t\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\t\t\tparent.insertBefore(this.toolbarNode,nextSibling);\n\t\t\tthis.renderChildren(this.toolbarNode,null);\n\t\t\tthis.domNodes.push(this.toolbarNode);\n\t\t}\n\t\t// Create our element\n\t\tvar editInfo = this.getEditInfo(),\n\t\t\tEngine = this.editShowToolbar ? toolbarEngine : nonToolbarEngine;\n\t\tthis.engine = new Engine({\n\t\t\t\twidget: this,\n\t\t\t\tvalue: editInfo.value,\n\t\t\t\ttype: editInfo.type,\n\t\t\t\tparentNode: parent,\n\t\t\t\tnextSibling: nextSibling\n\t\t\t});\n\t\t// Call the postRender hook\n\t\tif(this.postRender) {\n\t\t\tthis.postRender();\n\t\t}\n\t\t// Fix height\n\t\tthis.engine.fixHeight();\n\t\t// Focus if required\n\t\tif(this.editFocus === \"true\" || this.editFocus === \"yes\") {\n\t\t\tthis.engine.focus();\n\t\t}\n\t\t// Add widget message listeners\n\t\tthis.addEventListeners([\n\t\t\t{type: \"tm-edit-text-operation\", handler: \"handleEditTextOperationMessage\"}\n\t\t]);\n\t};\n\n\t/*\n\tGet the tiddler being edited and current value\n\t*/\n\tEditTextWidget.prototype.getEditInfo = function() {\n\t\t// Get the edit value\n\t\tvar self = this,\n\t\t\tvalue,\n\t\t\ttype = \"text/plain\",\n\t\t\tupdate;\n\t\tif(this.editIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.editTitle,this.editIndex,this.editDefault);\n\t\t\tupdate = function(value) {\n\t\t\t\tvar data = self.wiki.getTiddlerData(self.editTitle,{});\n\t\t\t\tif(data[self.editIndex] !== value) {\n\t\t\t\t\tdata[self.editIndex] = value;\n\t\t\t\t\tself.wiki.setTiddlerData(self.editTitle,data);\n\t\t\t\t}\n\t\t\t};\n\t\t} else {\n\t\t\t// Get the current tiddler and the field name\n\t\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\t\tif(tiddler) {\n\t\t\t\t// If we've got a tiddler, the value to display is the field string value\n\t\t\t\tvalue = tiddler.getFieldString(this.editField);\n\t\t\t\tif(this.editField === \"text\") {\n\t\t\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\";\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise, we need to construct a default value for the editor\n\t\t\t\tswitch(this.editField) {\n\t\t\t\t\tcase \"text\":\n\t\t\t\t\t\tvalue = \"Type the text for the tiddler '\" + this.editTitle + \"'\";\n\t\t\t\t\t\ttype = \"text/vnd.tiddlywiki\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"title\":\n\t\t\t\t\t\tvalue = this.editTitle;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(this.editDefault !== undefined) {\n\t\t\t\t\tvalue = this.editDefault;\n\t\t\t\t}\n\t\t\t}\n\t\t\tupdate = function(value) {\n\t\t\t\tvar tiddler = self.wiki.getTiddler(self.editTitle),\n\t\t\t\t\tupdateFields = {\n\t\t\t\t\t\ttitle: self.editTitle\n\t\t\t\t\t};\n\t\t\t\tupdateFields[self.editField] = value;\n\t\t\t\tself.wiki.addTiddler(new $tw.Tiddler(self.wiki.getCreationFields(),tiddler,updateFields,self.wiki.getModificationFields()));\n\t\t\t};\n\t\t}\n\t\tif(this.editType) {\n\t\t\ttype = this.editType;\n\t\t}\n\t\treturn {value: value || \"\", type: type, update: update};\n\t};\n\n\t/*\n\tHandle an edit text operation message from the toolbar\n\t*/\n\tEditTextWidget.prototype.handleEditTextOperationMessage = function(event) {\n\t\t// Prepare information about the operation\n\t\tvar operation = this.engine.createTextOperation();\n\t\t// Invoke the handler for the selected operation\n\t\tvar handler = this.editorOperations[event.param];\n\t\tif(handler) {\n\t\t\thandler.call(this,event,operation);\n\t\t}\n\t\t// Execute the operation via the engine\n\t\tvar newText = this.engine.executeTextOperation(operation);\n\t\t// Fix the tiddler height and save changes\n\t\tthis.engine.fixHeight();\n\t\tthis.saveChanges(newText);\n\t};\n\n\t/*\n\tCompute the internal state of the widget\n\t*/\n\tEditTextWidget.prototype.execute = function() {\n\t\t// Get our parameters\n\t\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t\tthis.editField = this.getAttribute(\"field\",\"text\");\n\t\tthis.editIndex = this.getAttribute(\"index\");\n\t\tthis.editDefault = this.getAttribute(\"default\");\n\t\tthis.editClass = this.getAttribute(\"class\");\n\t\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\t\tthis.editSize = this.getAttribute(\"size\");\n\t\tthis.editRows = this.getAttribute(\"rows\");\n\t\tthis.editAutoHeight = this.wiki.getTiddlerText(HEIGHT_MODE_TITLE,\"auto\");\n\t\tthis.editAutoHeight = this.getAttribute(\"autoHeight\",this.editAutoHeight === \"auto\" ? \"yes\" : \"no\") === \"yes\";\n\t\tthis.editMinHeight = this.getAttribute(\"minHeight\",DEFAULT_MIN_TEXT_AREA_HEIGHT);\n\t\tthis.editFocusPopup = this.getAttribute(\"focusPopup\");\n\t\tthis.editFocus = this.getAttribute(\"focus\");\n\t\tthis.editTabIndex = this.getAttribute(\"tabindex\");\n\t\tthis.editCancelPopups = this.getAttribute(\"cancelPopups\",\"\") === \"yes\";\n\t\tthis.editInputActions = this.getAttribute(\"inputActions\");\n\t\tthis.editRefreshTitle = this.getAttribute(\"refreshTitle\");\n\t\tthis.editAutoComplete = this.getAttribute(\"autocomplete\");\n\t\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\t\t// Get the default editor element tag and type\n\t\tvar tag,type;\n\t\tif(this.editField === \"text\") {\n\t\t\ttag = \"textarea\";\n\t\t} else {\n\t\t\ttag = \"input\";\n\t\t\tvar fieldModule = $tw.Tiddler.fieldModules[this.editField];\n\t\t\tif(fieldModule && fieldModule.editTag) {\n\t\t\t\ttag = fieldModule.editTag;\n\t\t\t}\n\t\t\tif(fieldModule && fieldModule.editType) {\n\t\t\t\ttype = fieldModule.editType;\n\t\t\t}\n\t\t\ttype = type || \"text\";\n\t\t}\n\t\t// Get the rest of our parameters\n\t\tthis.editTag = this.getAttribute(\"tag\",tag) || \"input\";\n\t\tthis.editType = this.getAttribute(\"type\",type);\n\t\t// Make the child widgets\n\t\tthis.makeChildWidgets();\n\t\t// Determine whether to show the toolbar\n\t\tthis.editShowToolbar = this.wiki.getTiddlerText(ENABLE_TOOLBAR_TITLE,\"yes\");\n\t\tthis.editShowToolbar = (this.editShowToolbar === \"yes\") && !!(this.children && this.children.length > 0) && (!this.document.isTiddlyWikiFakeDom);\n\t};\n\n\t/*\n\tSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n\t*/\n\tEditTextWidget.prototype.refresh = function(changedTiddlers) {\n\t\tvar changedAttributes = this.computeAttributes();\n\t\t// Completely rerender if any of our attributes have changed\n\t\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.placeholder || changedAttributes.size || changedAttributes.autoHeight || changedAttributes.minHeight || changedAttributes.focusPopup || changedAttributes.rows || changedAttributes.tabindex || changedAttributes.cancelPopups || changedAttributes.inputActions || changedAttributes.refreshTitle || changedAttributes.autocomplete || changedTiddlers[HEIGHT_MODE_TITLE] || changedTiddlers[ENABLE_TOOLBAR_TITLE] || changedAttributes.disabled) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\n\t\t} else if (changedTiddlers[this.editRefreshTitle]) {\n\t\t\tthis.engine.updateDomNodeText(this.getEditInfo().value);\n\t\t} else if(changedTiddlers[this.editTitle]) {\n\t\t\tvar editInfo = this.getEditInfo();\n\t\t\tthis.updateEditor(editInfo.value,editInfo.type);\n\t\t}\n\t\tthis.engine.fixHeight();\n\t\tif(this.editShowToolbar) {\n\t\t\treturn this.refreshChildren(changedTiddlers);\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t/*\n\tUpdate the editor with new text. This method is separate from updateEditorDomNode()\n\tso that subclasses can override updateEditor() and still use updateEditorDomNode()\n\t*/\n\tEditTextWidget.prototype.updateEditor = function(text,type) {\n\t\tthis.updateEditorDomNode(text,type);\n\t};\n\n\t/*\n\tUpdate the editor dom node with new text\n\t*/\n\tEditTextWidget.prototype.updateEditorDomNode = function(text,type) {\n\t\tthis.engine.setText(text,type);\n\t};\n\n\t/*\n\tSave changes back to the tiddler store\n\t*/\n\tEditTextWidget.prototype.saveChanges = function(text) {\n\t\tvar editInfo = this.getEditInfo();\n\t\tif(text !== editInfo.value) {\n\t\t\teditInfo.update(text);\n\t\t}\n\t};\n\n\t/*\n\tHandle a dom \"keydown\" event, which we'll bubble up to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.handleKeydownEvent = function(event) {\n\t\t// Check for a keyboard shortcut\n\t\tif(this.toolbarNode) {\n\t\t\tvar shortcutElements = this.toolbarNode.querySelectorAll(\"[data-tw-keyboard-shortcut]\");\n\t\t\tfor(var index=0; index<shortcutElements.length; index++) {\n\t\t\t\tvar el = shortcutElements[index],\n\t\t\t\t\tshortcutData = el.getAttribute(\"data-tw-keyboard-shortcut\"),\n\t\t\t\t\tkeyInfoArray = $tw.keyboardManager.parseKeyDescriptors(shortcutData,{\n\t\t\t\t\t\twiki: this.wiki\n\t\t\t\t\t});\n\t\t\t\tif($tw.keyboardManager.checkKeyDescriptors(event,keyInfoArray)) {\n\t\t\t\t\tvar clickEvent = this.document.createEvent(\"Events\");\n\t\t\t\t clickEvent.initEvent(\"click\",true,false);\n\t\t\t\t el.dispatchEvent(clickEvent);\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Propogate the event to the container\n\t\tif(this.propogateKeydownEvent(event)) {\n\t\t\t// Ignore the keydown if it was already handled\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn true;\n\t\t}\n\t\t// Otherwise, process the keydown normally\n\t\treturn false;\n\t};\n\n\t/*\n\tPropogate keydown events to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.propogateKeydownEvent = function(event) {\n\t\tvar newEvent = this.document.createEventObject ? this.document.createEventObject() : this.document.createEvent(\"Events\");\n\t\tif(newEvent.initEvent) {\n\t\t\tnewEvent.initEvent(\"keydown\", true, true);\n\t\t}\n\t\tnewEvent.keyCode = event.keyCode;\n\t\tnewEvent.which = event.which;\n\t\tnewEvent.metaKey = event.metaKey;\n\t\tnewEvent.ctrlKey = event.ctrlKey;\n\t\tnewEvent.altKey = event.altKey;\n\t\tnewEvent.shiftKey = event.shiftKey;\n\t\treturn !this.parentDomNode.dispatchEvent(newEvent);\n\t};\n\n\treturn EditTextWidget;\n\n}\n\nexports.editTextWidgetFactory = editTextWidgetFactory;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/editor/operations/bitmap/clear.js": {
"title": "$:/core/modules/editor/operations/bitmap/clear.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/clear.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to clear the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"clear\"] = function(event) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.globalAlpha = 1;\n\tctx.fillStyle = event.paramObject.colour || \"white\";\n\tctx.fillRect(0,0,this.canvasDomNode.width,this.canvasDomNode.height);\n\t// Save changes\n\tthis.strokeEnd();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "bitmapeditoroperation"
},
"$:/core/modules/editor/operations/bitmap/resize.js": {
"title": "$:/core/modules/editor/operations/bitmap/resize.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/resize.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to resize the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"resize\"] = function(event) {\n\t// Get the new width\n\tvar newWidth = parseInt(event.paramObject.width || this.canvasDomNode.width,10),\n\t\tnewHeight = parseInt(event.paramObject.height || this.canvasDomNode.height,10);\n\t// Update if necessary\n\tif(newWidth > 0 && newHeight > 0 && !(newWidth === this.currCanvas.width && newHeight === this.currCanvas.height)) {\n\t\tthis.changeCanvasSize(newWidth,newHeight);\n\t}\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "bitmapeditoroperation"
},
"$:/core/modules/editor/operations/bitmap/rotate-left.js": {
"title": "$:/core/modules/editor/operations/bitmap/rotate-left.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/rotate-left.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to rotate the image left by 90 degrees\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"rotate-left\"] = function(event) {\n\t// Rotate the canvas left by 90 degrees\n\tthis.rotateCanvasLeft();\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "bitmapeditoroperation"
},
"$:/core/modules/editor/operations/text/excise.js": {
"title": "$:/core/modules/editor/operations/text/excise.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/excise.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to excise the selection to a new tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"excise\"] = function(event,operation) {\n\tvar editTiddler = this.wiki.getTiddler(this.editTitle),\n\t\teditTiddlerTitle = this.editTitle;\n\tif(editTiddler && editTiddler.fields[\"draft.of\"]) {\n\t\teditTiddlerTitle = editTiddler.fields[\"draft.of\"];\n\t}\n\tvar excisionTitle = event.paramObject.title || this.wiki.generateNewTitle(\"New Excision\");\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\tthis.wiki.getModificationFields(),\n\t\t{\n\t\t\ttitle: excisionTitle,\n\t\t\ttext: operation.selection,\n\t\t\ttags: event.paramObject.tagnew === \"yes\" ? [editTiddlerTitle] : []\n\t\t}\n\t));\n\toperation.replacement = excisionTitle;\n\tswitch(event.paramObject.type || \"transclude\") {\n\t\tcase \"transclude\":\n\t\t\toperation.replacement = \"{{\" + operation.replacement+ \"}}\";\n\t\t\tbreak;\n\t\tcase \"link\":\n\t\t\toperation.replacement = \"[[\" + operation.replacement+ \"]]\";\n\t\t\tbreak;\n\t\tcase \"macro\":\n\t\t\toperation.replacement = \"<<\" + (event.paramObject.macro || \"translink\") + \" \\\"\\\"\\\"\" + operation.replacement + \"\\\"\\\"\\\">>\";\n\t\t\tbreak;\n\t}\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/make-link.js": {
"title": "$:/core/modules/editor/operations/text/make-link.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/make-link.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to make a link\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"make-link\"] = function(event,operation) {\n\tif(operation.selection) {\n\t\toperation.replacement = \"[[\" + operation.selection + \"|\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t} else {\n\t\toperation.replacement = \"[[\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t}\n\toperation.newSelStart = operation.selStart + operation.replacement.length;\n\toperation.newSelEnd = operation.newSelStart;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/prefix-lines.js": {
"title": "$:/core/modules/editor/operations/text/prefix-lines.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/prefix-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to add a prefix to the selected lines\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"prefix-lines\"] = function(event,operation) {\n\tvar targetCount = parseInt(event.paramObject.count + \"\",10);\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Compose the required prefix\n\tvar prefix = $tw.utils.repeat(event.paramObject.character,targetCount);\n\t// Process each line\n\tvar lines = operation.text.substring(operation.cutStart,operation.cutEnd).split(/\\r?\\n/mg);\n\t$tw.utils.each(lines,function(line,index) {\n\t\t// Remove and count any existing prefix characters\n\t\tvar count = 0;\n\t\twhile(line.charAt(0) === event.paramObject.character) {\n\t\t\tline = line.substring(1);\n\t\t\tcount++;\n\t\t}\n\t\t// Remove any whitespace\n\t\twhile(line.charAt(0) === \" \") {\n\t\t\tline = line.substring(1);\n\t\t}\n\t\t// We're done if we removed the exact required prefix, otherwise add it\n\t\tif(count !== targetCount) {\n\t\t\t// Apply the prefix\n\t\t\tline = prefix + \" \" + line;\n\t\t}\n\t\t// Save the modified line\n\t\tlines[index] = line;\n\t});\n\t// Stitch the replacement text together and set the selection\n\toperation.replacement = lines.join(\"\\n\");\n\tif(lines.length === 1) {\n\t\toperation.newSelStart = operation.cutStart + operation.replacement.length;\n\t\toperation.newSelEnd = operation.newSelStart;\n\t} else {\n\t\toperation.newSelStart = operation.cutStart;\n\t\toperation.newSelEnd = operation.newSelStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/replace-all.js": {
"title": "$:/core/modules/editor/operations/text/replace-all.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-all.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the entire text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-all\"] = function(event,operation) {\n\toperation.cutStart = 0;\n\toperation.cutEnd = operation.text.length;\n\toperation.replacement = event.paramObject.text;\n\toperation.newSelStart = 0;\n\toperation.newSelEnd = operation.replacement.length;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/replace-selection.js": {
"title": "$:/core/modules/editor/operations/text/replace-selection.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the selection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-selection\"] = function(event,operation) {\n\toperation.replacement = event.paramObject.text;\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/save-selection.js": {
"title": "$:/core/modules/editor/operations/text/save-selection.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/save-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to save the current selection in a specified tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"save-selection\"] = function(event,operation) {\n\tvar tiddler = event.paramObject.tiddler,\n\t\tfield = event.paramObject.field || \"text\";\n\tif(tiddler && field) {\n\t\tthis.wiki.setText(tiddler,field,null,operation.text.substring(operation.selStart,operation.selEnd));\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/wrap-lines.js": {
"title": "$:/core/modules/editor/operations/text/wrap-lines.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selected lines with a prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-lines\"] = function(event,operation) {\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Add the prefix and suffix\n\toperation.replacement = event.paramObject.prefix + \"\\n\" +\n\t\t\t\toperation.text.substring(operation.cutStart,operation.cutEnd) + \"\\n\" +\n\t\t\t\tevent.paramObject.suffix + \"\\n\";\n\toperation.newSelStart = operation.cutStart + event.paramObject.prefix.length + 1;\n\toperation.newSelEnd = operation.newSelStart + (operation.cutEnd - operation.cutStart);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/wrap-selection.js": {
"title": "$:/core/modules/editor/operations/text/wrap-selection.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selection with the specified prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-selection\"] = function(event,operation) {\n\tif(operation.selStart === operation.selEnd) {\n\t\t// No selection; check if we're within the prefix/suffix\n\t\tif(operation.text.substring(operation.selStart - event.paramObject.prefix.length,operation.selStart + event.paramObject.suffix.length) === event.paramObject.prefix + event.paramObject.suffix) {\n\t\t\t// Remove the prefix and suffix\n\t\t\toperation.cutStart = operation.selStart - event.paramObject.prefix.length;\n\t\t\toperation.cutEnd = operation.selEnd + event.paramObject.suffix.length;\n\t\t\toperation.replacement = \"\";\n\t\t\toperation.newSelStart = operation.cutStart;\n\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t} else {\n\t\t\t// Wrap the cursor instead\n\t\t\toperation.cutStart = operation.selStart;\n\t\t\toperation.cutEnd = operation.selEnd;\n\t\t\toperation.replacement = event.paramObject.prefix + event.paramObject.suffix;\n\t\t\toperation.newSelStart = operation.selStart + event.paramObject.prefix.length;\n\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t}\n\t} else if(operation.text.substring(operation.selStart,operation.selStart + event.paramObject.prefix.length) === event.paramObject.prefix && operation.text.substring(operation.selEnd - event.paramObject.suffix.length,operation.selEnd) === event.paramObject.suffix) {\n\t\t// Prefix and suffix are already present, so remove them\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = operation.selection.substring(event.paramObject.prefix.length,operation.selection.length - event.paramObject.suffix.length);\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t} else {\n\t\t// Add the prefix and suffix\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = event.paramObject.prefix + operation.selection + event.paramObject.suffix;\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/filterrunprefixes/all.js": {
"title": "$:/core/modules/filterrunprefixes/all.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/all.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nUnion of sets without de-duplication.\nEquivalent to = filter run prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.all = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tresults.push.apply(results, operationSubFunction(source,widget));\n\t};\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filterrunprefixes/and.js": {
"title": "$:/core/modules/filterrunprefixes/and.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/and.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nIntersection of sets.\nEquivalent to + filter run prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.and = function(operationSubFunction,options) {\n\treturn function(results,source,widget) {\n\t\t// This replaces all the elements of the array, but keeps the actual array so that references to it are preserved\n\t\tsource = options.wiki.makeTiddlerIterator(results.toArray());\n\t\tresults.clear();\n\t\tresults.pushTop(operationSubFunction(source,widget));\n\t};\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filterrunprefixes/else.js": {
"title": "$:/core/modules/filterrunprefixes/else.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/else.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nEquivalent to ~ filter run prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.else = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tif(results.length === 0) {\n\t\t\t// Main result so far is empty\n\t\t\tresults.pushTop(operationSubFunction(source,widget));\n\t\t}\n\t};\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filterrunprefixes/except.js": {
"title": "$:/core/modules/filterrunprefixes/except.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/except.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nDifference of sets.\nEquivalent to - filter run prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.except = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tresults.remove(operationSubFunction(source,widget));\n\t};\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filterrunprefixes/filter.js": {
"title": "$:/core/modules/filterrunprefixes/filter.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/filter.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.filter = function(operationSubFunction,options) {\n\treturn function(results,source,widget) {\n\t\tif(results.length > 0) {\n\t\t\tvar resultsToRemove = [];\n\t\t\tresults.each(function(result) {\n\t\t\t\tvar filtered = operationSubFunction(options.wiki.makeTiddlerIterator([result]),widget);\n\t\t\t\tif(filtered.length === 0) {\n\t\t\t\t\tresultsToRemove.push(result);\n\t\t\t\t}\n\t\t\t});\n\t\t\tresults.remove(resultsToRemove);\n\t\t}\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filterrunprefixes/intersection.js": {
"title": "$:/core/modules/filterrunprefixes/intersection.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/intersection.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.intersection = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tif(results.length !== 0) {\n\t\t\tvar secondRunResults = operationSubFunction(source,widget);\n\t\t\tvar firstRunResults = results.toArray();\n\t\t\tresults.clear();\n\t\t\t$tw.utils.each(firstRunResults,function(title) {\n\t\t\t\tif(secondRunResults.indexOf(title) !== -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filterrunprefixes/or.js": {
"title": "$:/core/modules/filterrunprefixes/or.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/or.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nEquivalent to a filter run with no prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.or = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tresults.pushTop(operationSubFunction(source,widget));\n\t};\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filterrunprefixes/reduce.js": {
"title": "$:/core/modules/filterrunprefixes/reduce.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/reduce.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.reduce = function(operationSubFunction,options) {\n\treturn function(results,source,widget) {\n\t\tif(results.length > 0) {\n\t\t\tvar accumulator = \"\";\n\t\t\tvar index = 0;\n\t\t\tresults.each(function(title) {\n\t\t\t\tvar list = operationSubFunction(options.wiki.makeTiddlerIterator([title]),{\n\t\t\t\t\t\tgetVariable: function(name) {\n\t\t\t\t\t\t\tswitch(name) {\n\t\t\t\t\t\t\t\tcase \"currentTiddler\":\n\t\t\t\t\t\t\t\t\treturn \"\" + title;\n\t\t\t\t\t\t\t\tcase \"accumulator\":\n\t\t\t\t\t\t\t\t\treturn \"\" + accumulator;\n\t\t\t\t\t\t\t\tcase \"index\":\n\t\t\t\t\t\t\t\t\treturn \"\" + index;\n\t\t\t\t\t\t\t\tcase \"revIndex\":\n\t\t\t\t\t\t\t\t\treturn \"\" + (results.length - 1 - index);\n\t\t\t\t\t\t\t\tcase \"length\":\n\t\t\t\t\t\t\t\t\treturn \"\" + results.length;\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn widget.getVariable(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\tif(list.length > 0) {\n\t\t\t\t\taccumulator = \"\" + list[0];\n\t\t\t\t}\n\t\t\t\t++index;\n\t\t\t});\n\t\t\tresults.clear();\n\t\t\tresults.push(accumulator);\t\n\t\t}\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filters/addprefix.js": {
"title": "$:/core/modules/filters/addprefix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/addprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a prefix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(operator.operand + title);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/addsuffix.js": {
"title": "$:/core/modules/filters/addsuffix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/addsuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a suffix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addsuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title + operator.operand);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/after.js": {
"title": "$:/core/modules/filters/after.js",
"text": "/*\\\ntitle: $:/core/modules/filters/after.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is after the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.after = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index === -1 || index > (results.length - 2)) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index + 1]];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/all/current.js": {
"title": "$:/core/modules/filters/all/current.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/current.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar currTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(currTiddlerTitle) {\n\t\treturn [currTiddlerTitle];\n\t} else {\n\t\treturn [];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/missing.js": {
"title": "$:/core/modules/filters/all/missing.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/missing.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\treturn options.wiki.getMissingTitles();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/orphans.js": {
"title": "$:/core/modules/filters/all/orphans.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/orphans.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[orphans]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphans = function(source,prefix,options) {\n\treturn options.wiki.getOrphanTitles();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/shadows.js": {
"title": "$:/core/modules/filters/all/shadows.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/shadows.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[shadows]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadows = function(source,prefix,options) {\n\treturn options.wiki.allShadowTitles();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/tags.js": {
"title": "$:/core/modules/filters/all/tags.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/tags.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tags]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tags = function(source,prefix,options) {\n\treturn Object.keys(options.wiki.getTagMap());\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/tiddlers.js": {
"title": "$:/core/modules/filters/all/tiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/tiddlers.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddlers = function(source,prefix,options) {\n\treturn options.wiki.allTitles();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all.js": {
"title": "$:/core/modules/filters/all.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for selecting tiddlers\n\n[all[shadows+tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar allFilterOperators;\n\nfunction getAllFilterOperators() {\n\tif(!allFilterOperators) {\n\t\tallFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"allfilteroperator\",allFilterOperators);\n\t}\n\treturn allFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.all = function(source,operator,options) {\n\t// Get our suboperators\n\tvar allFilterOperators = getAllFilterOperators();\n\t// Cycle through the suboperators accumulating their results\n\tvar results = [],\n\t\tsubops = operator.operand.split(\"+\");\n\t// Check for common optimisations\n\tif(subops.length === 1 && subops[0] === \"\") {\n\t\treturn source;\n\t} else if(subops.length === 1 && subops[0] === \"tiddlers\") {\n\t\treturn options.wiki.each;\n\t} else if(subops.length === 1 && subops[0] === \"shadows\") {\n\t\treturn options.wiki.eachShadow;\n\t} else if(subops.length === 2 && subops[0] === \"tiddlers\" && subops[1] === \"shadows\") {\n\t\treturn options.wiki.eachTiddlerPlusShadows;\n\t} else if(subops.length === 2 && subops[0] === \"shadows\" && subops[1] === \"tiddlers\") {\n\t\treturn options.wiki.eachShadowPlusTiddlers;\n\t}\n\t// Do it the hard way\n\tfor(var t=0; t<subops.length; t++) {\n\t\tvar subop = allFilterOperators[subops[t]];\n\t\tif(subop) {\n\t\t\t$tw.utils.pushTop(results,subop(source,operator.prefix,options));\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/backlinks.js": {
"title": "$:/core/modules/filters/backlinks.js",
"text": "/*\\\ntitle: $:/core/modules/filters/backlinks.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the backlinks from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.backlinks = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerBacklinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/before.js": {
"title": "$:/core/modules/filters/before.js",
"text": "/*\\\ntitle: $:/core/modules/filters/before.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is before the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.before = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index <= 0) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index - 1]];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/commands.js": {
"title": "$:/core/modules/filters/commands.js",
"text": "/*\\\ntitle: $:/core/modules/filters/commands.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the commands available in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.commands = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.commands,function(commandInfo,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/compare.js": {
"title": "$:/core/modules/filters/compare.js",
"text": "/*\\\ntitle: $:/core/modules/filters/compare.js\ntype: application/javascript\nmodule-type: filteroperator\n\nGeneral purpose comparison operator\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.compare = function(source,operator,options) {\n\tvar suffixes = operator.suffixes || [],\n\t\ttype = (suffixes[0] || [])[0],\n\t\tmode = (suffixes[1] || [])[0],\n\t\ttypeFn = $tw.utils.makeCompareFunction(type,{defaultType: \"number\"}),\n\t\tmodeFn = modes[mode] || modes.eq,\n\t\tinvert = operator.prefix === \"!\",\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tif(modeFn(typeFn(title,operator.operand)) !== invert) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\nvar modes = {\n\t\"eq\": function(value) {return value === 0;},\n\t\"ne\": function(value) {return value !== 0;},\n\t\"gteq\": function(value) {return value >= 0;},\n\t\"gt\": function(value) {return value > 0;},\n\t\"lteq\": function(value) {return value <= 0;},\n\t\"lt\": function(value) {return value < 0;}\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/contains.js": {
"title": "$:/core/modules/filters/contains.js",
"text": "/*\\\ntitle: $:/core/modules/filters/contains.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for finding values in array fields\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.contains = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"list\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar list = tiddler.getFieldList(fieldname);\n\t\t\t\tif(list.indexOf(operator.operand) === -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar list = tiddler.getFieldList(fieldname);\n\t\t\t\tif(list.indexOf(operator.operand) !== -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/count.js": {
"title": "$:/core/modules/filters/count.js",
"text": "/*\\\ntitle: $:/core/modules/filters/count.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the number of entries in the current list.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.count = function(source,operator,options) {\n\tvar count = 0;\n\tsource(function(tiddler,title) {\n\t\tcount++;\n\t});\n\treturn [count + \"\"];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/days.js": {
"title": "$:/core/modules/filters/days.js",
"text": "/*\\\ntitle: $:/core/modules/filters/days.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a specified date field within a specified date interval.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.days = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\tdayInterval = (parseInt(operator.operand,10)||0),\n\t\tdayIntervalSign = $tw.utils.sign(dayInterval),\n\t\ttargetTimeStamp = (new Date()).setHours(0,0,0,0) + 1000*60*60*24*dayInterval,\n\t\tisWithinDays = function(dateField) {\n\t\t\tvar sign = $tw.utils.sign(targetTimeStamp - (new Date(dateField)).setHours(0,0,0,0));\n\t\t\treturn sign === 0 || sign === dayIntervalSign;\n\t\t};\n\n\tif(operator.prefix === \"!\") {\n\t\ttargetTimeStamp = targetTimeStamp - 1000*60*60*24*dayIntervalSign;\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(!isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/duplicateslugs.js": {
"title": "$:/core/modules/filters/duplicateslugs.js",
"text": "/*\\\ntitle: $:/core/modules/filters/duplicateslugs.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter function for [duplicateslugs[]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.duplicateslugs = function(source,operator,options) {\n\tvar slugs = Object.create(null), // Hashmap by slug of title, replaced with \"true\" if the duplicate title has already been output\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tvar slug = options.wiki.slugify(title);\n\t\tif(slug in slugs) {\n\t\t\tif(slugs[slug] !== true) {\n\t\t\t\tresults.push(slugs[slug]);\n\t\t\t\tslugs[slug] = true;\n\t\t\t}\n\t\t\tresults.push(title);\n\t\t} else {\n\t\t\tslugs[slug] = title;\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/each.js": {
"title": "$:/core/modules/filters/each.js",
"text": "/*\\\ntitle: $:/core/modules/filters/each.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique value of the specified field.\nWith suffix \"list\", selects all tiddlers that are values in a specified list field.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.each = function(source,operator,options) {\n\tvar results =[] ,\n\tvalue,values = {},\n\tfield = operator.operand || \"title\";\n\tif(operator.suffix === \"value\" && field === \"title\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(values,title)) {\n\t\t\t\tvalues[title] = true;\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else if(operator.suffix !== \"list-item\") {\n\t\tif(field === \"title\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && !$tw.utils.hop(values,title)) {\n\t\t\t\t\tvalues[title] = true;\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvalue = tiddler.getFieldString(field);\n\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\t$tw.utils.each(\n\t\t\t\t\toptions.wiki.getTiddlerList(title,field),\n\t\t\t\t\tfunction(value) {\n\t\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\t\t\tresults.push(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/eachday.js": {
"title": "$:/core/modules/filters/eachday.js",
"text": "/*\\\ntitle: $:/core/modules/filters/eachday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique day covered by the specified date field\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.eachday = function(source,operator,options) {\n\tvar results = [],\n\t\tvalues = [],\n\t\tfieldName = operator.operand || \"modified\";\n\t// Function to convert a date/time to a date integer\n\tvar toDate = function(value) {\n\t\tvalue = (new Date(value)).setHours(0,0,0,0);\n\t\treturn value+0;\n\t};\n\tsource(function(tiddler,title) {\n\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\tvar value = toDate($tw.utils.parseDate(tiddler.fields[fieldName]));\n\t\t\tif(values.indexOf(value) === -1) {\n\t\t\t\tvalues.push(value);\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/editiondescription.js": {
"title": "$:/core/modules/filters/editiondescription.js",
"text": "/*\\\ntitle: $:/core/modules/filters/editiondescription.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the descriptions of the specified edition names\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editiondescription = function(source,operator,options) {\n\tvar results = [];\n\tif($tw.node) {\n\t\tvar editionInfo = $tw.utils.getEditionInfo();\n\t\tif(editionInfo) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif($tw.utils.hop(editionInfo,title)) {\n\t\t\t\t\tresults.push(editionInfo[title].description || \"\");\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/editions.js": {
"title": "$:/core/modules/filters/editions.js",
"text": "/*\\\ntitle: $:/core/modules/filters/editions.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the available editions in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editions = function(source,operator,options) {\n\tvar results = [];\n\tif($tw.node) {\n\t\tvar editionInfo = $tw.utils.getEditionInfo();\n\t\tif(editionInfo) {\n\t\t\t$tw.utils.each(editionInfo,function(info,name) {\n\t\t\t\tresults.push(name);\n\t\t\t});\n\t\t}\n\t\tresults.sort();\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/else.js": {
"title": "$:/core/modules/filters/else.js",
"text": "/*\\\ntitle: $:/core/modules/filters/else.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing an empty input list with a constant, passing a non-empty input list straight through\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.else = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tif(results.length === 0) {\n\t\treturn [operator.operand];\n\t} else {\n\t\treturn results;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/decodeuricomponent.js": {
"title": "$:/core/modules/filters/decodeuricomponent.js",
"text": "/*\\\ntitle: $:/core/modules/filters/decodeuricomponent.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for applying decodeURIComponent() to each item.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter functions\n*/\n\nexports.decodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar value = title;\n\t\ttry {\n\t\t\tvalue = decodeURIComponent(title);\n\t\t} catch(e) {\n\t\t}\n\t\tresults.push(value);\n\t});\n\treturn results;\n};\n\nexports.encodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURIComponent(title));\n\t});\n\treturn results;\n};\n\nexports.decodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar value = title;\n\t\ttry {\n\t\t\tvalue = decodeURI(title);\n\t\t} catch(e) {\n\t\t}\n\t\tresults.push(value);\n\t});\n\treturn results;\n};\n\nexports.encodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURI(title));\n\t});\n\treturn results;\n};\n\nexports.decodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlDecode(title));\n\t});\n\treturn results;\n};\n\nexports.encodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlEncode(title));\n\t});\n\treturn results;\n};\n\nexports.stringify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.stringify(title,(operator.suffix === \"rawunicode\")));\n\t});\n\treturn results;\n};\n\nexports.jsonstringify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.jsonStringify(title,(operator.suffix === \"rawunicode\")));\n\t});\n\treturn results;\n};\n\nexports.escaperegexp = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.escapeRegExp(title));\n\t});\n\treturn results;\n};\n\nexports.escapecss = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t// escape any character with a special meaning in CSS using CSS.escape()\n\t\tresults.push(CSS.escape(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/enlist.js": {
"title": "$:/core/modules/filters/enlist.js",
"text": "/*\\\ntitle: $:/core/modules/filters/enlist.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning its operand parsed as a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.enlist = function(source,operator,options) {\n\tvar allowDuplicates = false;\n\tswitch(operator.suffix) {\n\t\tcase \"raw\":\n\t\t\tallowDuplicates = true;\n\t\t\tbreak;\n\t\tcase \"dedupe\":\n\t\t\tallowDuplicates = false;\n\t\t\tbreak;\n\t}\n\tvar list = $tw.utils.parseStringArray(operator.operand,allowDuplicates);\n\tif(operator.prefix === \"!\") {\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t\treturn results;\n\t} else {\n\t\treturn list;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/field.js": {
"title": "$:/core/modules/filters/field.js",
"text": "/*\\\ntitle: $:/core/modules/filters/field.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.field = function(source,operator,options) {\n\tvar results = [],indexedResults,\n\t\tfieldname = (operator.suffix || operator.operator || \"title\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text !== operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !!operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tif(source.byField && operator.operand) {\n\t\t\t\tindexedResults = source.byField(fieldname,operator.operand);\n\t\t\t\tif(indexedResults) {\n\t\t\t\t\treturn indexedResults\n\t\t\t\t}\n\t\t\t}\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text === operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/fields.js": {
"title": "$:/core/modules/filters/fields.js",
"text": "/*\\\ntitle: $:/core/modules/filters/fields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.fields = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName,\n\t\tsuffixes = (operator.suffixes || [])[0] || [],\n\t\toperand = $tw.utils.parseStringArray(operator.operand);\n\t\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tif(suffixes.indexOf(\"include\") !== -1) {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t(operand.indexOf(fieldName) !== -1) ? $tw.utils.pushTop(results,fieldName) : \"\";\n\t\t\t\t}\n\t\t\t} else if (suffixes.indexOf(\"exclude\") !== -1) {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t(operand.indexOf(fieldName) !== -1) ? \"\" : $tw.utils.pushTop(results,fieldName);\n\t\t\t\t}\n\t\t\t} // else if\n\t\t\telse {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t\t}\n\t\t\t} // else\n\t\t} // if (tiddler)\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/filter.js": {
"title": "$:/core/modules/filters/filter.js",
"text": "/*\\\ntitle: $:/core/modules/filters/filter.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning those input titles that pass a subfilter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.filter = function(source,operator,options) {\n\tvar filterFn = options.wiki.compileFilter(operator.operand),\n\t\tresults = [],\n\t\ttarget = operator.prefix !== \"!\";\n\tsource(function(tiddler,title) {\n\t\tvar list = filterFn.call(options.wiki,options.wiki.makeTiddlerIterator([title]));\n\t\tif((list.length > 0) === target) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/format/date.js": {
"title": "$:/core/modules/filters/format/date.js",
"text": "/*\\\ntitle: $:/core/modules/filters/format/date.js\ntype: application/javascript\nmodule-type: formatfilteroperator\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.date = function(source,operand,options) {\n\tvar results = [];\t\n\tsource(function(tiddler,title) {\n\t\tvar value = $tw.utils.parseDate(title);\n\t\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\t\tresults.push($tw.utils.formatDateString(value,operand || \"YYYY MM DD 0hh:0mm\"));\n\t\t}\n\t});\t\n\treturn results;\n};\n\n})();",
"type": "application/javascript",
"module-type": "formatfilteroperator"
},
"$:/core/modules/filters/format/relativedate.js": {
"title": "$:/core/modules/filters/format/relativedate.js",
"text": "/*\\\ntitle: $:/core/modules/filters/format/relativedate.js\ntype: application/javascript\nmodule-type: formatfilteroperator\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.relativedate = function(source,operand,options) {\n\tvar results = [];\t\n\tsource(function(tiddler,title) {\n\t\tvar value = $tw.utils.parseDate(title);\n\t\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\t\tresults.push($tw.utils.getRelativeDate((new Date()) - (new Date(value))).description);\n\t\t}\n\t});\t\n\treturn results;\n};\n\n})();",
"type": "application/javascript",
"module-type": "formatfilteroperator"
},
"$:/core/modules/filters/format.js": {
"title": "$:/core/modules/filters/format.js",
"text": "/*\\\ntitle: $:/core/modules/filters/format.js\ntype: application/javascript\nmodule-type: filteroperator\nFilter operator for formatting strings\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar formatFilterOperators;\n\nfunction getFormatFilterOperators() {\n\tif(!formatFilterOperators) {\n\t\tformatFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"formatfilteroperator\",formatFilterOperators);\n\t}\n\treturn formatFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.format = function(source,operator,options) {\n\t// Dispatch to the correct formatfilteroperator\n\tvar formatFilterOperators = getFormatFilterOperators();\n\tif(operator.suffix) {\n\t\tvar formatFilterOperator = formatFilterOperators[operator.suffix];\n\t\tif(formatFilterOperator) {\n\t\t\treturn formatFilterOperator(source,operator.operand,options);\n\t\t} else {\n\t\t\treturn [$tw.language.getString(\"Error/FormatFilterOperator\")];\n\t\t}\n\t} else {\n\t\t// Return all unchanged if the suffix is missing\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t}\n};\n\n})();",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/get.js": {
"title": "$:/core/modules/filters/get.js",
"text": "/*\\\ntitle: $:/core/modules/filters/get.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing tiddler titles by the value of the field specified in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.get = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tvar value = tiddler.getFieldString(operator.operand);\n\t\t\tif(value) {\n\t\t\t\tresults.push(value);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/getindex.js": {
"title": "$:/core/modules/filters/getindex.js",
"text": "/*\\\ntitle: $:/core/modules/filters/getindex.js\ntype: application/javascript\nmodule-type: filteroperator\n\nreturns the value at a given index of datatiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.getindex = function(source,operator,options) {\n\tvar data,title,results = [];\n\tif(operator.operand){\n\t\tsource(function(tiddler,title) {\n\t\t\ttitle = tiddler ? tiddler.fields.title : title;\n\t\t\tdata = options.wiki.extractTiddlerDataItem(tiddler,operator.operand);\n\t\t\tif(data) {\n\t\t\t\tresults.push(data);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/getvariable.js": {
"title": "$:/core/modules/filters/getvariable.js",
"text": "/*\\\ntitle: $:/core/modules/filters/getvariable.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing input values by the value of the variable with the same name, or blank if the variable is missing\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.getvariable = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.widget.getVariable(title) || \"\");\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/has.js": {
"title": "$:/core/modules/filters/has.js",
"text": "/*\\\ntitle: $:/core/modules/filters/has.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a tiddler has the specified field or index\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.has = function(source,operator,options) {\n\tvar results = [],\n\t\tinvert = operator.prefix === \"!\";\n\n\tif(operator.suffix === \"field\") {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || (tiddler && (!$tw.utils.hop(tiddler.fields,operator.operand)))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\telse if(operator.suffix === \"index\") {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || (tiddler && (!$tw.utils.hop(options.wiki.getTiddlerDataCached(tiddler,Object.create(null)),operator.operand)))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(options.wiki.getTiddlerDataCached(tiddler,Object.create(null)),operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\telse {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || !$tw.utils.hop(tiddler.fields,operator.operand) || (tiddler.fields[operator.operand].length === 0)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand) && (tiddler.fields[operator.operand].length !== 0)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\t\t\t\t\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/haschanged.js": {
"title": "$:/core/modules/filters/haschanged.js",
"text": "/*\\\ntitle: $:/core/modules/filters/haschanged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returns tiddlers from the list that have a non-zero changecount.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.haschanged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) === 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) > 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/indexes.js": {
"title": "$:/core/modules/filters/indexes.js",
"text": "/*\\\ntitle: $:/core/modules/filters/indexes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the indexes of a data tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.indexes = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar data = options.wiki.getTiddlerDataCached(title);\n\t\tif(data) {\n\t\t\t$tw.utils.pushTop(results,Object.keys(data));\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/insertbefore.js": {
"title": "$:/core/modules/filters/insertbefore.js",
"text": "/*\\\ntitle: $:/core/modules/filters/insertbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nInsert an item before another item in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.insertbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar target = options.widget && options.widget.getVariable(operator.suffix || \"currentTiddler\");\n\tif(target !== operator.operand) {\n\t\t// Remove the entry from the list if it is present\n\t\tvar pos = results.indexOf(operator.operand);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,1);\n\t\t}\n\t\t// Insert the entry before the target marker\n\t\tpos = results.indexOf(target);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,0,operator.operand);\n\t\t} else {\n\t\t\tresults.push(operator.operand);\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/is/binary.js": {
"title": "$:/core/modules/filters/is/binary.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/binary.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[binary]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.binary = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isBinaryTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isBinaryTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/blank.js": {
"title": "$:/core/modules/filters/is/blank.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/blank.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[blank]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.blank = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!title) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/current.js": {
"title": "$:/core/modules/filters/is/current.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/current.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar results = [],\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title !== currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title === currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/draft.js": {
"title": "$:/core/modules/filters/is/draft.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/draft.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[draft]] analagous to [has[draft.of]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.draft = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!tiddler || !$tw.utils.hop(tiddler.fields,\"draft.of\")) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,\"draft.of\") && (tiddler.fields[\"draft.of\"].length !== 0)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\t\t\t\t\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/image.js": {
"title": "$:/core/modules/filters/is/image.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/image.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[image]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.image = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/missing.js": {
"title": "$:/core/modules/filters/is/missing.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/missing.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/orphan.js": {
"title": "$:/core/modules/filters/is/orphan.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/orphan.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[orphan]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphan = function(source,prefix,options) {\n\tvar results = [],\n\t\torphanTitles = options.wiki.getOrphanTitles();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) !== -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/shadow.js": {
"title": "$:/core/modules/filters/is/shadow.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/shadow.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[shadow]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadow = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/system.js": {
"title": "$:/core/modules/filters/is/system.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/system.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[system]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.system = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/tag.js": {
"title": "$:/core/modules/filters/is/tag.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/tag.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tag]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,prefix,options) {\n\tvar results = [],\n\t\ttagMap = options.wiki.getTagMap();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/tiddler.js": {
"title": "$:/core/modules/filters/is/tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/tiddler.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tiddler]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddler = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/variable.js": {
"title": "$:/core/modules/filters/is/variable.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/variable.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[variable]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.variable = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!(title in options.widget.variables)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title in options.widget.variables) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is.js": {
"title": "$:/core/modules/filters/is.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking tiddler properties\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar isFilterOperators;\n\nfunction getIsFilterOperators() {\n\tif(!isFilterOperators) {\n\t\tisFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"isfilteroperator\",isFilterOperators);\n\t}\n\treturn isFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.is = function(source,operator,options) {\n\t// Dispatch to the correct isfilteroperator\n\tvar isFilterOperators = getIsFilterOperators();\n\tif(operator.operand) {\n\t\tvar isFilterOperator = isFilterOperators[operator.operand];\n\t\tif(isFilterOperator) {\n\t\t\treturn isFilterOperator(source,operator.prefix,options);\n\t\t} else {\n\t\t\treturn [$tw.language.getString(\"Error/IsFilterOperator\")];\n\t\t}\n\t} else {\n\t\t// Return all tiddlers if the operand is missing\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t}\n};\n\n})();",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/limit.js": {
"title": "$:/core/modules/filters/limit.js",
"text": "/*\\\ntitle: $:/core/modules/filters/limit.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for chopping the results to a specified maximum number of entries\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.limit = function(source,operator,options) {\n\tvar results = [];\n\t// Convert to an array\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\t// Slice the array if necessary\n\tvar limit = Math.min(results.length,parseInt(operator.operand,10));\n\tif(operator.prefix === \"!\") {\n\t\tresults = results.slice(-limit);\n\t} else {\n\t\tresults = results.slice(0,limit);\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/links.js": {
"title": "$:/core/modules/filters/links.js",
"text": "/*\\\ntitle: $:/core/modules/filters/links.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the links from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.links = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerLinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/list.js": {
"title": "$:/core/modules/filters/list.js",
"text": "/*\\\ntitle: $:/core/modules/filters/list.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddlers whose title is listed in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.list = function(source,operator,options) {\n\tvar results = [],\n\t\ttr = $tw.utils.parseTextReference(operator.operand),\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\"),\n\t\tlist = options.wiki.getTiddlerList(tr.title || currTiddlerTitle,tr.field,tr.index);\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults = list;\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/listed.js": {
"title": "$:/core/modules/filters/listed.js",
"text": "/*\\\ntitle: $:/core/modules/filters/listed.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that have the selected tiddlers in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.listed = function(source,operator,options) {\n\tvar field = operator.operand || \"list\",\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.findListingsOfTiddler(title,field));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/listops.js": {
"title": "$:/core/modules/filters/listops.js",
"text": "/*\\\ntitle: $:/core/modules/filters/listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for manipulating the current selection list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.order = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.operand.toLowerCase() === \"reverse\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.unshift(title);\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t}\n\treturn results;\n};\n\n/*\nReverse list\n*/\nexports.reverse = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.unshift(title);\n\t});\n\treturn results;\n};\n\n/*\nFirst entry/entries in list\n*/\nexports.first = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,count);\n};\n\n/*\nLast entry/entries in list\n*/\nexports.last = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(-count);\n};\n\n/*\nAll but the first entry/entries of the list\n*/\nexports.rest = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count);\n};\nexports.butfirst = exports.rest;\nexports.bf = exports.rest;\n\n/*\nAll but the last entry/entries of the list\n*/\nexports.butlast = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,-count);\n};\nexports.bl = exports.butlast;\n\n/*\nThe nth member of the list\n*/\nexports.nth = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count - 1,count);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/lookup.js": {
"title": "$:/core/modules/filters/lookup.js",
"text": "/*\\\ntitle: $:/core/modules/filters/lookup.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that looks up values via a title prefix\n\n[lookup:<field>[<prefix>]]\n\nPrepends the prefix to the selected items and returns the specified field value\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.lookup = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.wiki.getTiddlerText(operator.operand + title) || operator.suffix);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/match.js": {
"title": "$:/core/modules/filters/match.js",
"text": "/*\\\ntitle: $:/core/modules/filters/match.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title matches a string\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.match = function(source,operator,options) {\n\tvar results = [],\n\t\tsuffixes = (operator.suffixes || [])[0] || [];\n\tif(suffixes.indexOf(\"caseinsensitive\") !== -1) {\n\t\tif(operator.prefix === \"!\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title.toLowerCase() !== (operator.operand || \"\").toLowerCase()) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title.toLowerCase() === (operator.operand || \"\").toLowerCase()) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(operator.prefix === \"!\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title !== operator.operand) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title === operator.operand) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/math.js": {
"title": "$:/core/modules/filters/math.js",
"text": "/*\\\ntitle: $:/core/modules/filters/math.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for math. Unary/binary operators work on each item in turn, and return a new item list.\n\nSum/product/maxall/minall operate on the entire list, returning a single item.\n\nNote that strings are converted to numbers automatically. Trailing non-digits are ignored.\n\n* \"\" converts to 0\n* \"12kk\" converts to 12\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.negate = makeNumericBinaryOperator(\n\tfunction(a) {return -a}\n);\n\nexports.abs = makeNumericBinaryOperator(\n\tfunction(a) {return Math.abs(a)}\n);\n\nexports.ceil = makeNumericBinaryOperator(\n\tfunction(a) {return Math.ceil(a)}\n);\n\nexports.floor = makeNumericBinaryOperator(\n\tfunction(a) {return Math.floor(a)}\n);\n\nexports.round = makeNumericBinaryOperator(\n\tfunction(a) {return Math.round(a)}\n);\n\nexports.trunc = makeNumericBinaryOperator(\n\tfunction(a) {return Math.trunc(a)}\n);\n\nexports.untrunc = makeNumericBinaryOperator(\n\tfunction(a) {return Math.ceil(Math.abs(a)) * Math.sign(a)}\n);\n\nexports.sign = makeNumericBinaryOperator(\n\tfunction(a) {return Math.sign(a)}\n);\n\nexports.add = makeNumericBinaryOperator(\n\tfunction(a,b) {return a + b;}\n);\n\nexports.subtract = makeNumericBinaryOperator(\n\tfunction(a,b) {return a - b;}\n);\n\nexports.multiply = makeNumericBinaryOperator(\n\tfunction(a,b) {return a * b;}\n);\n\nexports.divide = makeNumericBinaryOperator(\n\tfunction(a,b) {return a / b;}\n);\n\nexports.remainder = makeNumericBinaryOperator(\n\tfunction(a,b) {return a % b;}\n);\n\nexports.max = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.max(a,b);}\n);\n\nexports.min = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.min(a,b);}\n);\n\nexports.fixed = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toFixed.call(a,Math.min(Math.max(b,0),100));}\n);\n\nexports.precision = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toPrecision.call(a,Math.min(Math.max(b,1),100));}\n);\n\nexports.exponential = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toExponential.call(a,Math.min(Math.max(b,0),100));}\n);\n\nexports.power = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.pow(a,b);}\n);\n\nexports.log = makeNumericBinaryOperator(\n\tfunction(a,b) {\n\t\tif(b) {\n\t\t\treturn Math.log(a)/Math.log(b);\n\t\t} else {\n\t\t\treturn Math.log(a);\n\t\t}\n\t}\n);\n\nexports.sum = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return accumulator + value},\n\t0 // Initial value\n);\n\nexports.product = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return accumulator * value},\n\t1 // Initial value\n);\n\nexports.maxall = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return Math.max(accumulator,value)},\n\t-Infinity // Initial value\n);\n\nexports.minall = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return Math.min(accumulator,value)},\n\tInfinity // Initial value\n);\n\nfunction makeNumericBinaryOperator(fnCalc) {\n\treturn function(source,operator,options) {\n\t\tvar result = [],\n\t\t\tnumOperand = $tw.utils.parseNumber(operator.operand);\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push($tw.utils.stringifyNumber(fnCalc($tw.utils.parseNumber(title),numOperand)));\n\t\t});\n\t\treturn result;\n\t};\n}\n\nfunction makeNumericReducingOperator(fnCalc,initialValue) {\n\tinitialValue = initialValue || 0;\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push(title);\n\t\t});\n\t\treturn [$tw.utils.stringifyNumber(result.reduce(function(accumulator,currentValue) {\n\t\t\treturn fnCalc(accumulator,$tw.utils.parseNumber(currentValue));\n\t\t},initialValue))];\n\t};\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/minlength.js": {
"title": "$:/core/modules/filters/minlength.js",
"text": "/*\\\ntitle: $:/core/modules/filters/minlength.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for filtering out titles that don't meet the minimum length in the operand\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.minlength = function(source,operator,options) {\n\tvar results = [],\n\t\tminLength = parseInt(operator.operand || \"\",10) || 0;\n\tsource(function(tiddler,title) {\n\t\tif(title.length >= minLength) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/modules.js": {
"title": "$:/core/modules/filters/modules.js",
"text": "/*\\\ntitle: $:/core/modules/filters/modules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the modules of a given type in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.modules = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.each($tw.modules.types[title],function(moduleInfo,moduleName) {\n\t\t\tresults.push(moduleName);\n\t\t});\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/moduletypes.js": {
"title": "$:/core/modules/filters/moduletypes.js",
"text": "/*\\\ntitle: $:/core/modules/filters/moduletypes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the module types in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.moduletypes = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.modules.types,function(moduleInfo,type) {\n\t\tresults.push(type);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/next.js": {
"title": "$:/core/modules/filters/next.js",
"text": "/*\\\ntitle: $:/core/modules/filters/next.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs next in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.next = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch++;\n\t\tif(match > 0 && match < list.length) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/plugintiddlers.js": {
"title": "$:/core/modules/filters/plugintiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/filters/plugintiddlers.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the shadow tiddlers within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.plugintiddlers = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar pluginInfo = options.wiki.getPluginInfo(title) || options.wiki.getTiddlerDataCached(title,{tiddlers:[]});\n\t\tif(pluginInfo && pluginInfo.tiddlers) {\n\t\t\t$tw.utils.each(pluginInfo.tiddlers,function(fields,title) {\n\t\t\t\tresults.push(title);\n\t\t\t});\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/prefix.js": {
"title": "$:/core/modules/filters/prefix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/prefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title starts with a prefix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.prefix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/previous.js": {
"title": "$:/core/modules/filters/previous.js",
"text": "/*\\\ntitle: $:/core/modules/filters/previous.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs immediately prior in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.previous = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch--;\n\t\tif(match >= 0) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/range.js": {
"title": "$:/core/modules/filters/range.js",
"text": "/*\\\ntitle: $:/core/modules/filters/range.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for generating a numeric range.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.range = function(source,operator,options) {\n\tvar results = [];\n\t// Split the operand into numbers delimited by these symbols\n\tvar parts = operator.operand.split(/[,:;]/g),\n\t\tbeg, end, inc, i, fixed = 0;\n\tfor (i=0; i<parts.length; i++) {\n\t\t// Validate real number\n\t\tif(!/^\\s*[+-]?((\\d+(\\.\\d*)?)|(\\.\\d+))\\s*$/.test(parts[i])) {\n\t\t\treturn [\"range: bad number \\\"\" + parts[i] + \"\\\"\"];\n\t\t}\n\t\t// Count digits; the most precise number determines decimal places in output.\n\t\tvar frac = /\\.\\d+/.exec(parts[i]);\n\t\tif(frac) {\n\t\t\tfixed = Math.max(fixed,frac[0].length-1);\n\t\t}\n\t\tparts[i] = parseFloat(parts[i]);\n\t}\n\tswitch(parts.length) {\n\t\tcase 1:\n\t\t\tend = parts[0];\n\t\t\tif (end >= 1) {\n\t\t\t\tbeg = 1;\n\t\t\t}\n\t\t\telse if (end <= -1) {\n\t\t\t\tbeg = -1;\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tinc = 1;\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tbeg = parts[0];\n\t\t\tend = parts[1];\n\t\t\tinc = 1;\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tbeg = parts[0];\n\t\t\tend = parts[1];\n\t\t\tinc = Math.abs(parts[2]);\n\t\t\tbreak;\n\t}\n\tif(inc === 0) {\n\t\treturn [\"range: increment 0 causes infinite loop\"];\n\t}\n\t// May need to count backwards\n\tvar direction = ((end < beg) ? -1 : 1);\n\tinc *= direction;\n\t// Estimate number of resulting elements\n\tif((end - beg) / inc > 10000) {\n\t\treturn [\"range: too many steps (over 10K)\"];\n\t}\n\t// Avoid rounding error on last step\n\tend += direction * 0.5 * Math.pow(0.1,fixed);\n\tvar safety = 10010;\n\t// Enumerate the range\n\tif (end<beg) {\n\t\tfor(i=beg; i>end; i+=inc) {\n\t\t\tresults.push(i.toFixed(fixed));\n\t\t\tif(--safety<0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor(i=beg; i<end; i+=inc) {\n\t\t\tresults.push(i.toFixed(fixed));\n\t\t\tif(--safety<0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif(safety<0) {\n\t\treturn [\"range: unexpectedly large output\"];\n\t}\n\t// Reverse?\n\tif(operator.prefix === \"!\") {\n\t\tresults.reverse();\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/reduce.js": {
"title": "$:/core/modules/filters/reduce.js",
"text": "/*\\\ntitle: $:/core/modules/filters/reduce.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator evaluates a subfilter for each item, making the running total available in the variable `accumulator`, and the current index available in the variable `index`\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.reduce = function(source,operator,options) {\n\t// Accumulate the list\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\t// Run the filter over each item\n\tvar filterFn = options.wiki.compileFilter(operator.operand),\n\t\taccumulator = operator.operands[1] || \"\";\n\tfor(var index=0; index<results.length; index++) {\n\t\tvar title = results[index],\n\t\t\tlist = filterFn.call(options.wiki,options.wiki.makeTiddlerIterator([title]),{\n\t\t\t\tgetVariable: function(name) {\n\t\t\t\t\tswitch(name) {\n\t\t\t\t\t\tcase \"currentTiddler\":\n\t\t\t\t\t\t\treturn \"\" + title;\n\t\t\t\t\t\tcase \"accumulator\":\n\t\t\t\t\t\t\treturn \"\" + accumulator;\n\t\t\t\t\t\tcase \"index\":\n\t\t\t\t\t\t\treturn \"\" + index;\n\t\t\t\t\t\tcase \"revIndex\":\n\t\t\t\t\t\t\treturn \"\" + (results.length - 1 - index);\n\t\t\t\t\t\tcase \"length\":\n\t\t\t\t\t\t\treturn \"\" + results.length;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn options.widget.getVariable(name);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\tif(list.length > 0) {\n\t\t\taccumulator = \"\" + list[0];\n\t\t}\n\t}\n\tif(results.length > 0) {\n\t\treturn [accumulator];\n\t} else {\n\t\treturn [];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/regexp.js": {
"title": "$:/core/modules/filters/regexp.js",
"text": "/*\\\ntitle: $:/core/modules/filters/regexp.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for regexp matching\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.regexp = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"title\").toLowerCase(),\n\t\tregexpString, regexp, flags = \"\", match,\n\t\tgetFieldString = function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\treturn tiddler.getFieldString(fieldname);\n\t\t\t} else if(fieldname === \"title\") {\n\t\t\t\treturn title;\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\t// Process flags and construct regexp\n\tregexpString = operator.operand;\n\tmatch = /^\\(\\?([gim]+)\\)/.exec(regexpString);\n\tif(match) {\n\t\tflags = match[1];\n\t\tregexpString = regexpString.substr(match[0].length);\n\t} else {\n\t\tmatch = /\\(\\?([gim]+)\\)$/.exec(regexpString);\n\t\tif(match) {\n\t\t\tflags = match[1];\n\t\t\tregexpString = regexpString.substr(0,regexpString.length - match[0].length);\n\t\t}\n\t}\n\ttry {\n\t\tregexp = new RegExp(regexpString,flags);\n\t} catch(e) {\n\t\treturn [\"\" + e];\n\t}\n\t// Process the incoming tiddlers\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/removeprefix.js": {
"title": "$:/core/modules/filters/removeprefix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/removeprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a prefix from each title in the list. Titles that do not start with the prefix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removeprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/removesuffix.js": {
"title": "$:/core/modules/filters/removesuffix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/removesuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a suffix from each title in the list. Titles that do not end with the suffix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removesuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title && title.substr(-operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(0,title.length - operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/sameday.js": {
"title": "$:/core/modules/filters/sameday.js",
"text": "/*\\\ntitle: $:/core/modules/filters/sameday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a modified date field on the same day as the provided value.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sameday = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\ttargetDate = (new Date($tw.utils.parseDate(operator.operand))).setHours(0,0,0,0);\n\t// Function to convert a date/time to a date integer\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tif(tiddler.getFieldDay(fieldName) === targetDate) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/search.js": {
"title": "$:/core/modules/filters/search.js",
"text": "/*\\\ntitle: $:/core/modules/filters/search.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for searching for the text in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.search = function(source,operator,options) {\n\tvar invert = operator.prefix === \"!\";\n\tif(operator.suffixes) {\n\t\tvar hasFlag = function(flag) {\n\t\t\t\treturn (operator.suffixes[1] || []).indexOf(flag) !== -1;\n\t\t\t},\n\t\t\texcludeFields = false,\n\t\t\tfieldList = operator.suffixes[0] || [],\n\t\t\tfirstField = fieldList[0] || \"\", \n\t\t\tfirstChar = firstField.charAt(0),\n\t\t\tfields;\n\t\tif(firstChar === \"-\") {\n\t\t\tfields = [firstField.slice(1)].concat(fieldList.slice(1));\n\t\t\texcludeFields = true;\n\t\t} else if(fieldList[0] === \"*\"){\n\t\t\tfields = [];\n\t\t\texcludeFields = true;\n\t\t} else {\n\t\t\tfields = fieldList.slice(0);\n\t\t}\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert,\n\t\t\tfield: fields,\n\t\t\texcludeField: excludeFields,\n\t\t\tcaseSensitive: hasFlag(\"casesensitive\"),\n\t\t\tliteral: hasFlag(\"literal\"),\n\t\t\twhitespace: hasFlag(\"whitespace\"),\n\t\t\tanchored: hasFlag(\"anchored\"),\n\t\t\tregexp: hasFlag(\"regexp\"),\n\t\t\twords: hasFlag(\"words\")\n\t\t});\n\t} else {\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert\n\t\t});\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/shadowsource.js": {
"title": "$:/core/modules/filters/shadowsource.js",
"text": "/*\\\ntitle: $:/core/modules/filters/shadowsource.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the source plugins for shadow tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadowsource = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar source = options.wiki.getShadowSource(title);\n\t\tif(source) {\n\t\t\t$tw.utils.pushTop(results,source);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/slugify.js": {
"title": "$:/core/modules/filters/slugify.js",
"text": "/*\\\ntitle: $:/core/modules/filters/slugify.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for slugifying a tiddler title\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.slugify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.wiki.slugify(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/sort.js": {
"title": "$:/core/modules/filters/sort.js",
"text": "/*\\\ntitle: $:/core/modules/filters/sort.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for sorting\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,false);\n\treturn results;\n};\n\nexports.nsort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,true);\n\treturn results;\n};\n\nexports.sortan = function(source, operator, options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results, operator.operand || \"title\", operator.prefix === \"!\",false,false,true);\n\treturn results;\n};\n\nexports.sortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,false);\n\treturn results;\n};\n\nexports.nsortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,true);\n\treturn results;\n};\n\nvar prepare_results = function (source) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/sortsub.js": {
"title": "$:/core/modules/filters/sortsub.js",
"text": "/*\\\ntitle: $:/core/modules/filters/sortsub.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for sorting by a subfilter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sortsub = function(source,operator,options) {\n\t// Compile the subfilter\n\tvar filterFn = options.wiki.compileFilter(operator.operand);\n\t// Collect the input titles and the corresponding sort keys\n\tvar inputTitles = [],\n\t\tsortKeys = [];\n\tsource(function(tiddler,title) {\n\t\tinputTitles.push(title);\n\t\tvar r = filterFn.call(options.wiki,function(iterator) {\n\t\t\titerator(options.wiki.getTiddler(title),title);\n\t\t},{\n\t\t\tgetVariable: function(name) {\n\t\t\t\tif(name === \"currentTiddler\") {\n\t\t\t\t\treturn title;\n\t\t\t\t} else {\n\t\t\t\t\treturn options.widget.getVariable(name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tsortKeys.push(r[0] || \"\");\n\t});\n\t// Rather than sorting the titles array, we'll sort the indexes so that we can consult both arrays\n\tvar indexes = new Array(inputTitles.length);\n\tfor(var t=0; t<inputTitles.length; t++) {\n\t\tindexes[t] = t;\n\t}\n\t// Sort the indexes\n\tvar compareFn = $tw.utils.makeCompareFunction(operator.suffix,{defaultType: \"string\",invert: operator.prefix === \"!\"});\n\tindexes = indexes.sort(function(a,b) {\n\t\treturn compareFn(sortKeys[a],sortKeys[b]);\n\t});\n\t// Make the results array in order\n\tvar results = [];\n\t$tw.utils.each(indexes,function(index) {\n\t\tresults.push(inputTitles[index]);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/splitbefore.js": {
"title": "$:/core/modules/filters/splitbefore.js",
"text": "/*\\\ntitle: $:/core/modules/filters/splitbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that splits each result on the first occurance of the specified separator and returns the unique values.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.splitbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar parts = title.split(operator.operand);\n\t\tif(parts.length === 1) {\n\t\t\t$tw.utils.pushTop(results,parts[0]);\n\t\t} else {\n\t\t\t$tw.utils.pushTop(results,parts[0] + operator.operand);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/storyviews.js": {
"title": "$:/core/modules/filters/storyviews.js",
"text": "/*\\\ntitle: $:/core/modules/filters/storyviews.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the story views in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.storyviews = function(source,operator,options) {\n\tvar results = [],\n\t\tstoryviews = {};\n\t$tw.modules.applyMethods(\"storyview\",storyviews);\n\t$tw.utils.each(storyviews,function(info,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/strings.js": {
"title": "$:/core/modules/filters/strings.js",
"text": "/*\\\ntitle: $:/core/modules/filters/strings.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for strings. Unary/binary operators work on each item in turn, and return a new item list.\n\nSum/product/maxall/minall operate on the entire list, returning a single item.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.length = makeStringBinaryOperator(\n\tfunction(a) {return [\"\" + (\"\" + a).length];}\n);\n\nexports.uppercase = makeStringBinaryOperator(\n\tfunction(a) {return [(\"\" + a).toUpperCase()];}\n);\n\nexports.lowercase = makeStringBinaryOperator(\n\tfunction(a) {return [(\"\" + a).toLowerCase()];}\n);\n\nexports.sentencecase = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.toSentenceCase(a)];}\n);\n\nexports.titlecase = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.toTitleCase(a)];}\n);\n\nexports.trim = function(source,operator,options) {\n\tvar result = [],\n\t\tsuffix = operator.suffix || \"\",\n\t\toperand = (operator.operand || \"\"),\n\t\tfnCalc;\n\tif(suffix === \"prefix\") {\n\t\tfnCalc = function(a,b) {return [$tw.utils.trimPrefix(a,b)];}\n\t} else if(suffix === \"suffix\") {\n\t\tfnCalc = function(a,b) {return [$tw.utils.trimSuffix(a,b)];}\n\t} else {\n\t\tif(operand === \"\") {\n\t\t\tfnCalc = function(a) {return [$tw.utils.trim(a)];}\n\t\t} else {\n\t\t\tfnCalc = function(a,b) {return [$tw.utils.trimSuffix($tw.utils.trimPrefix(a,b),b)];}\n\t\t}\n\t}\n\tsource(function(tiddler,title) {\n\t\tArray.prototype.push.apply(result,fnCalc(title,operand));\n\t});\n\treturn result;\n};\n\nexports.split = makeStringBinaryOperator(\n\tfunction(a,b) {return (\"\" + a).split(b);}\n);\n\nexports[\"enlist-input\"] = makeStringBinaryOperator(\n\tfunction(a,o,s) {return $tw.utils.parseStringArray(\"\" + a,(s === \"raw\"));}\n);\n\nexports.join = makeStringReducingOperator(\n\tfunction(accumulator,value,operand) {\n\t\tif(accumulator === null) {\n\t\t\treturn value;\n\t\t} else {\n\t\t\treturn accumulator + operand + value;\n\t\t}\n\t},null\n);\n\nfunction makeStringBinaryOperator(fnCalc) {\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tArray.prototype.push.apply(result,fnCalc(title,operator.operand || \"\",operator.suffix || \"\"));\n\t\t});\n\t\treturn result;\n\t};\n}\n\nfunction makeStringReducingOperator(fnCalc,initialValue) {\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push(title);\n\t\t});\n\t\tif(result.length === 0) {\n\t\t\treturn [];\n\t\t}\n\t\treturn [result.reduce(function(accumulator,currentValue) {\n\t\t\treturn fnCalc(accumulator,currentValue,operator.operand || \"\");\n\t\t},initialValue) || \"\"];\n\t};\n}\n\nexports.splitregexp = function(source,operator,options) {\n\tvar result = [],\n\t\tsuffix = operator.suffix || \"\",\n\t\tflags = (suffix.indexOf(\"m\") !== -1 ? \"m\" : \"\") + (suffix.indexOf(\"i\") !== -1 ? \"i\" : \"\"),\n\t\tregExp;\n\ttry {\n\t\tregExp = new RegExp(operator.operand || \"\",flags);\t\t\n\t} catch(ex) {\n\t\treturn [\"RegExp error: \" + ex];\n\t}\n\tsource(function(tiddler,title) {\n\t\tArray.prototype.push.apply(result,title.split(regExp));\n\t});\t\t\n\treturn result;\n};\n\nexports[\"search-replace\"] = function(source,operator,options) {\n\tvar results = [],\n\t\tsuffixes = operator.suffixes || [],\n\t\tflagSuffix = (suffixes[0] ? (suffixes[0][0] || \"\") : \"\"),\n\t\tflags = (flagSuffix.indexOf(\"g\") !== -1 ? \"g\" : \"\") + (flagSuffix.indexOf(\"i\") !== -1 ? \"i\" : \"\"),\n\t\tisRegExp = (suffixes[1] && suffixes[1][0] === \"regexp\") ? true : false,\n\t\tsearchTerm,\n\t\tregExp;\n\t\n\tsource(function(tiddler,title) {\n\t\tif(title && (operator.operands.length > 1)) {\n\t\t\t//Escape regexp characters if the operand is not a regular expression\n\t\t\tsearchTerm = isRegExp ? operator.operand : $tw.utils.escapeRegExp(operator.operand);\n\t\t\ttry {\n\t\t\t\tregExp = new RegExp(searchTerm,flags);\n\t\t\t} catch(ex) {\n\t\t\t\treturn [\"RegExp error: \" + ex];\n\t\t\t}\n\t\t\tresults.push(\n\t\t\t\ttitle.replace(regExp,operator.operands[1])\n\t\t\t);\n\t\t} else {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\nexports.pad = function(source,operator,options) {\n\tvar results = [],\n\t\ttargetLength = operator.operand ? parseInt(operator.operand) : 0,\n\t\tfill = operator.operands[1] || \"0\";\n\n\tsource(function(tiddler,title) {\n\t\tif(title && title.length) {\n\t\t\tif(title.length >= targetLength) {\n\t\t\t\tresults.push(title);\n\t\t\t} else {\n\t\t\t\tvar padString = \"\",\n\t\t\t\t\tpadStringLength = targetLength - title.length;\n\t\t\t\twhile (padStringLength > padString.length) {\n\t\t\t\t\tpadString += fill;\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t//make sure we do not exceed the specified length\n\t\t\t\tpadString = padString.slice(0,padStringLength);\n\t\t\t\tif(operator.suffix && (operator.suffix === \"suffix\")) {\n\t\t\t\t\ttitle = title + padString;\n\t\t\t\t} else {\n\t\t\t\t\ttitle = padString + title;\n\t\t\t\t}\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/subfilter.js": {
"title": "$:/core/modules/filters/subfilter.js",
"text": "/*\\\ntitle: $:/core/modules/filters/subfilter.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning its operand evaluated as a filter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.subfilter = function(source,operator,options) {\n\tvar list = options.wiki.filterTiddlers(operator.operand,options.widget,source);\n\tif(operator.prefix === \"!\") {\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t\treturn results;\n\t} else {\n\t\treturn list;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/subtiddlerfields.js": {
"title": "$:/core/modules/filters/subtiddlerfields.js",
"text": "/*\\\ntitle: $:/core/modules/filters/subtiddlerfields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected subtiddlers of the plugin named in the operand\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.subtiddlerfields = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar subtiddler = options.wiki.getSubTiddler(operator.operand,title);\n\t\tif(subtiddler) {\n\t\t\tfor(var fieldName in subtiddler.fields) {\n\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/suffix.js": {
"title": "$:/core/modules/filters/suffix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/suffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title ends with a suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.suffix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tag.js": {
"title": "$:/core/modules/filters/tag.js",
"text": "/*\\\ntitle: $:/core/modules/filters/tag.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking for the presence of a tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,operator,options) {\n\tvar results = [],indexedResults;\n\tif((operator.suffix || \"\").toLowerCase() === \"strict\" && !operator.operand) {\n\t\t// New semantics:\n\t\t// Always return copy of input if operator.operand is missing\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t} else {\n\t\t// Old semantics:\n\t\tvar tiddlers;\n\t\tif(operator.prefix === \"!\") {\n\t\t\t// Returns a copy of the input if operator.operand is missing\n\t\t\ttiddlers = options.wiki.getTiddlersWithTag(operator.operand);\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddlers.indexOf(title) === -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// Returns empty results if operator.operand is missing\n\t\t\tif(source.byTag) {\n\t\t\t\tindexedResults = source.byTag(operator.operand);\n\t\t\t\tif(indexedResults) {\n\t\t\t\t\treturn indexedResults;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttiddlers = options.wiki.getTiddlersWithTag(operator.operand);\n\t\t\t\tsource(function(tiddler,title) {\n\t\t\t\t\tif(tiddlers.indexOf(title) !== -1) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tresults = options.wiki.sortByList(results,operator.operand);\n\t\t\t}\n\t\t}\t\t\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tagging.js": {
"title": "$:/core/modules/filters/tagging.js",
"text": "/*\\\ntitle: $:/core/modules/filters/tagging.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that are tagged with the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tagging = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlersWithTag(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tags.js": {
"title": "$:/core/modules/filters/tags.js",
"text": "/*\\\ntitle: $:/core/modules/filters/tags.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the tags of the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tags = function(source,operator,options) {\n\tvar tags = {};\n\tsource(function(tiddler,title) {\n\t\tvar t, length;\n\t\tif(tiddler && tiddler.fields.tags) {\n\t\t\tfor(t=0, length=tiddler.fields.tags.length; t<length; t++) {\n\t\t\t\ttags[tiddler.fields.tags[t]] = true;\n\t\t\t}\n\t\t}\n\t});\n\treturn Object.keys(tags);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/then.js": {
"title": "$:/core/modules/filters/then.js",
"text": "/*\\\ntitle: $:/core/modules/filters/then.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing any titles with a constant\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.then = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(operator.operand);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/title.js": {
"title": "$:/core/modules/filters/title.js",
"text": "/*\\\ntitle: $:/core/modules/filters/title.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing title fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.title = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields.title !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults.push(operator.operand);\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/untagged.js": {
"title": "$:/core/modules/filters/untagged.js",
"text": "/*\\\ntitle: $:/core/modules/filters/untagged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the selected tiddlers that are untagged\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.untagged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && $tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length > 0) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!tiddler || !tiddler.hasField(\"tags\") || ($tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length === 0)) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/variables.js": {
"title": "$:/core/modules/filters/variables.js",
"text": "/*\\\ntitle: $:/core/modules/filters/variables.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the active variables\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.variables = function(source,operator,options) {\n\tvar names = [];\n\tfor(var variable in options.widget.variables) {\n\t\tnames.push(variable);\n\t}\n\treturn names.sort();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/wikiparserrules.js": {
"title": "$:/core/modules/filters/wikiparserrules.js",
"text": "/*\\\ntitle: $:/core/modules/filters/wikiparserrules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the wiki parser rules in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.wikiparserrules = function(source,operator,options) {\n\tvar results = [],\n\t\toperand = operator.operand;\n\t$tw.utils.each($tw.modules.types.wikirule,function(mod) {\n\t\tvar exp = mod.exports;\n\t\tif(!operand || exp.types[operand]) {\n\t\t\tresults.push(exp.name);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/x-listops.js": {
"title": "$:/core/modules/filters/x-listops.js",
"text": "/*\\\ntitle: $:/core/modules/filters/x-listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nExtended filter operators to manipulate the current list.\n\n\\*/\n(function () {\n\n\t/*jslint node: true, browser: true */\n\t/*global $tw: false */\n\t\"use strict\";\n\n\t/*\n\tFetch titles from the current list\n\t*/\n\tvar prepare_results = function (source) {\n\tvar results = [];\n\t\tsource(function (tiddler, title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t};\n\n\t/*\n\tMoves a number of items from the tail of the current list before the item named in the operand\n\t*/\n\texports.putbefore = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn (index === -1) ?\n\t\t\tresults.slice(0, -1) :\n\t\t\tresults.slice(0, index).concat(results.slice(-count)).concat(results.slice(index, -count));\n\t};\n\n\t/*\n\tMoves a number of items from the tail of the current list after the item named in the operand\n\t*/\n\texports.putafter = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn (index === -1) ?\n\t\t\tresults.slice(0, -1) :\n\t\t\tresults.slice(0, index + 1).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n\t};\n\n\t/*\n\tReplaces the item named in the operand with a number of items from the tail of the current list\n\t*/\n\texports.replace = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn (index === -1) ?\n\t\t\tresults.slice(0, -count) :\n\t\t\tresults.slice(0, index).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n\t};\n\n\t/*\n\tMoves a number of items from the tail of the current list to the head of the list\n\t*/\n\texports.putfirst = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn results.slice(-count).concat(results.slice(0, -count));\n\t};\n\n\t/*\n\tMoves a number of items from the head of the current list to the tail of the list\n\t*/\n\texports.putlast = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn results.slice(count).concat(results.slice(0, count));\n\t};\n\n\t/*\n\tMoves the item named in the operand a number of places forward or backward in the list\n\t*/\n\texports.move = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1),\n\t\t\tmarker = results.splice(index, 1),\n\t\t\toffset = (index + count) > 0 ? index + count : 0;\n\t\treturn results.slice(0, offset).concat(marker).concat(results.slice(offset));\n\t};\n\n\t/*\n\tReturns the items from the current list that are after the item named in the operand\n\t*/\n\texports.allafter = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand);\n\t\treturn (index === -1) ? [] :\n\t\t\t(operator.suffix) ? results.slice(index) :\n\t\t\tresults.slice(index + 1);\n\t};\n\n\t/*\n\tReturns the items from the current list that are before the item named in the operand\n\t*/\n\texports.allbefore = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand);\n\t\treturn (index === -1) ? [] :\n\t\t\t(operator.suffix) ? results.slice(0, index + 1) :\n\t\t\tresults.slice(0, index);\n\t};\n\n\t/*\n\tAppends the items listed in the operand array to the tail of the current list\n\t*/\n\texports.append = function (source, operator) {\n\t\tvar append = $tw.utils.parseStringArray(operator.operand, \"true\"),\n\t\t\tresults = prepare_results(source),\n\t\t\tcount = parseInt(operator.suffix) || append.length;\n\t\treturn (append.length === 0) ? results :\n\t\t\t(operator.prefix) ? results.concat(append.slice(-count)) :\n\t\t\tresults.concat(append.slice(0, count));\n\t};\n\n\t/*\n\tPrepends the items listed in the operand array to the head of the current list\n\t*/\n\texports.prepend = function (source, operator) {\n\t\tvar prepend = $tw.utils.parseStringArray(operator.operand, \"true\"),\n\t\t\tresults = prepare_results(source),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,prepend.length);\n\t\treturn (prepend.length === 0) ? results :\n\t\t\t(operator.prefix) ? prepend.slice(-count).concat(results) :\n\t\t\tprepend.slice(0, count).concat(results);\n\t};\n\n\t/*\n\tReturns all items from the current list except the items listed in the operand array\n\t*/\n\texports.remove = function (source, operator) {\n\t\tvar array = $tw.utils.parseStringArray(operator.operand, \"true\"),\n\t\t\tresults = prepare_results(source),\n\t\t\tcount = parseInt(operator.suffix) || array.length,\n\t\t\tp,\n\t\t\tlen,\n\t\t\tindex;\n\t\tlen = array.length - 1;\n\t\tfor (p = 0; p < count; ++p) {\n\t\t\tif (operator.prefix) {\n\t\t\t\tindex = results.indexOf(array[len - p]);\n\t\t\t} else {\n\t\t\t\tindex = results.indexOf(array[p]);\n\t\t\t}\n\t\t\tif (index !== -1) {\n\t\t\t\tresults.splice(index, 1);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t};\n\n\t/*\n\tReturns all items from the current list sorted in the order of the items in the operand array\n\t*/\n\texports.sortby = function (source, operator) {\n\t\tvar results = prepare_results(source);\n\t\tif (!results || results.length < 2) {\n\t\t\treturn results;\n\t\t}\n\t\tvar lookup = $tw.utils.parseStringArray(operator.operand, \"true\");\n\t\tresults.sort(function (a, b) {\n\t\t\treturn lookup.indexOf(a) - lookup.indexOf(b);\n\t\t});\n\t\treturn results;\n\t};\n\n\t/*\n\tRemoves all duplicate items from the current list\n\t*/\n\texports.unique = function (source, operator) {\n\t\tvar results = prepare_results(source);\n\t\tvar set = results.reduce(function (a, b) {\n\t\t\tif (a.indexOf(b) < 0) {\n\t\t\t\ta.push(b);\n\t\t\t}\n\t\t\treturn a;\n\t\t}, []);\n\t\treturn set;\n\t};\n\n\tvar cycleValueInArray = function(results,operands,stepSize) {\n\t\tvar resultsIndex,\n\t\t\tstep = stepSize || 1,\n\t\t\ti = 0,\n\t\t\topLength = operands.length,\n\t\t\tnextOperandIndex;\t\t\n\t\tfor(i; i < opLength; i++) {\n\t\t\tresultsIndex = results.indexOf(operands[i]);\n\t\t\tif(resultsIndex !== -1) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif(resultsIndex !== -1) {\n\t\t\ti = i + step;\n\t\t\tnextOperandIndex = (i < opLength ? i : i - opLength);\n\t\t\tif(operands.length > 1) {\n\t\t\t\tresults.splice(resultsIndex,1,operands[nextOperandIndex]);\n\t\t\t} else {\n\t\t\t\tresults.splice(resultsIndex,1);\n\t\t\t}\n\t\t} else {\n\t\t\tresults.push(operands[0]);\n\t\t}\n\t\treturn results;\t\t\n\t}\n\n\t/*\n\tToggles an item in the current list.\n\t*/\t\n\texports.toggle = function(source,operator) {\n\t\treturn cycleValueInArray(prepare_results(source),operator.operands);\n\t}\n\n\texports.cycle = function(source,operator) {\n\t\tvar results = prepare_results(source),\n\t\t\toperands = (operator.operand.length ? $tw.utils.parseStringArray(operator.operand, \"true\") : [\"\"]),\n\t\t\tstep = $tw.utils.getInt(operator.operands[1]||\"\",1);\n\t\tif(step < 0) {\n\t\t\toperands.reverse();\n\t\t\tstep = Math.abs(step);\n\t\t}\t\n\t\treturn cycleValueInArray(results,operands,step);\n\t}\n\t\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters.js": {
"title": "$:/core/modules/filters.js",
"text": "/*\\\ntitle: $:/core/modules/filters.js\ntype: application/javascript\nmodule-type: wikimethod\n\nAdds tiddler filtering methods to the $tw.Wiki object.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParses an operation (i.e. a run) within a filter string\n\toperators: Array of array of operator nodes into which results should be inserted\n\tfilterString: filter string\n\tp: start position within the string\nReturns the new start position, after the parsed operation\n*/\nfunction parseFilterOperation(operators,filterString,p) {\n\tvar nextBracketPos, operator;\n\t// Skip the starting square bracket\n\tif(filterString.charAt(p++) !== \"[\") {\n\t\tthrow \"Missing [ in filter expression\";\n\t}\n\t// Process each operator in turn\n\tdo {\n\t\toperator = {};\n\t\t// Check for an operator prefix\n\t\tif(filterString.charAt(p) === \"!\") {\n\t\t\toperator.prefix = filterString.charAt(p++);\n\t\t}\n\t\t// Get the operator name\n\t\tnextBracketPos = filterString.substring(p).search(/[\\[\\{<\\/]/);\n\t\tif(nextBracketPos === -1) {\n\t\t\tthrow \"Missing [ in filter expression\";\n\t\t}\n\t\tnextBracketPos += p;\n\t\tvar bracket = filterString.charAt(nextBracketPos);\n\t\toperator.operator = filterString.substring(p,nextBracketPos);\n\t\t// Any suffix?\n\t\tvar colon = operator.operator.indexOf(':');\n\t\tif(colon > -1) {\n\t\t\t// The raw suffix for older filters\n\t\t\toperator.suffix = operator.operator.substring(colon + 1);\n\t\t\toperator.operator = operator.operator.substring(0,colon) || \"field\";\n\t\t\t// The processed suffix for newer filters\n\t\t\toperator.suffixes = [];\n\t\t\t$tw.utils.each(operator.suffix.split(\":\"),function(subsuffix) {\n\t\t\t\toperator.suffixes.push([]);\n\t\t\t\t$tw.utils.each(subsuffix.split(\",\"),function(entry) {\n\t\t\t\t\tentry = $tw.utils.trim(entry);\n\t\t\t\t\tif(entry) {\n\t\t\t\t\t\toperator.suffixes[operator.suffixes.length - 1].push(entry); \n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\t// Empty operator means: title\n\t\telse if(operator.operator === \"\") {\n\t\t\toperator.operator = \"title\";\n\t\t}\n\t\toperator.operands = [];\n\t\tfunction parseOperand(bracketType) {\n\t\t\tvar operand = {};\n\t\t\tswitch (bracketType) {\n\t\t\t\tcase \"{\": // Curly brackets\n\t\t\t\t\toperand.indirect = true;\n\t\t\t\t\tnextBracketPos = filterString.indexOf(\"}\",p);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"[\": // Square brackets\n\t\t\t\t\tnextBracketPos = filterString.indexOf(\"]\",p);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"<\": // Angle brackets\n\t\t\t\t\toperand.variable = true;\n\t\t\t\t\tnextBracketPos = filterString.indexOf(\">\",p);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"/\": // regexp brackets\n\t\t\t\t\tvar rex = /^((?:[^\\\\\\/]*|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g,\n\t\t\t\t\t\trexMatch = rex.exec(filterString.substring(p));\n\t\t\t\t\tif(rexMatch) {\n\t\t\t\t\t\toperator.regexp = new RegExp(rexMatch[1], rexMatch[2]);\n\t// DEPRECATION WARNING\n\tconsole.log(\"WARNING: Filter\",operator.operator,\"has a deprecated regexp operand\",operator.regexp);\n\t\t\t\t\t\tnextBracketPos = p + rex.lastIndex - 1;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthrow \"Unterminated regular expression in filter expression\";\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif(nextBracketPos === -1) {\n\t\t\t\tthrow \"Missing closing bracket in filter expression\";\n\t\t\t}\n\t\t\tif(!operator.regexp) {\n\t\t\t\toperand.text = filterString.substring(p,nextBracketPos);\n\t\t\t\toperator.operands.push(operand);\n\t\t\t}\n\t\t\tp = nextBracketPos + 1;\n\t\t}\n\t\t\n\t\tp = nextBracketPos + 1;\n\t\tparseOperand(bracket);\n\t\t\n\t\t// Check for multiple operands\n\t\twhile(filterString.charAt(p) === \",\") {\n\t\t\tp++;\n\t\t\tif(/^[\\[\\{<\\/]/.test(filterString.substring(p))) {\n\t\t\t\tnextBracketPos = p;\n\t\t\t\tp++;\n\t\t\t\tparseOperand(filterString.charAt(nextBracketPos));\n\t\t\t} else {\n\t\t\t\tthrow \"Missing [ in filter expression\";\n\t\t\t}\n\t\t}\n\t\t\n\t\t// Push this operator\n\t\toperators.push(operator);\n\t} while(filterString.charAt(p) !== \"]\");\n\t// Skip the ending square bracket\n\tif(filterString.charAt(p++) !== \"]\") {\n\t\tthrow \"Missing ] in filter expression\";\n\t}\n\t// Return the parsing position\n\treturn p;\n}\n\n/*\nParse a filter string\n*/\nexports.parseFilter = function(filterString) {\n\tfilterString = filterString || \"\";\n\tvar results = [], // Array of arrays of operator nodes {operator:,operand:}\n\t\tp = 0, // Current position in the filter string\n\t\tmatch;\n\tvar whitespaceRegExp = /(\\s+)/mg,\n\t\toperandRegExp = /((?:\\+|\\-|~|=|\\:(\\w+))?)(?:(\\[)|(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s\\[\\]]+))/mg;\n\twhile(p < filterString.length) {\n\t\t// Skip any whitespace\n\t\twhitespaceRegExp.lastIndex = p;\n\t\tmatch = whitespaceRegExp.exec(filterString);\n\t\tif(match && match.index === p) {\n\t\t\tp = p + match[0].length;\n\t\t}\n\t\t// Match the start of the operation\n\t\tif(p < filterString.length) {\n\t\t\toperandRegExp.lastIndex = p;\n\t\t\tmatch = operandRegExp.exec(filterString);\n\t\t\tif(!match || match.index !== p) {\n\t\t\t\tthrow $tw.language.getString(\"Error/FilterSyntax\");\n\t\t\t}\n\t\t\tvar operation = {\n\t\t\t\tprefix: \"\",\n\t\t\t\toperators: []\n\t\t\t};\n\t\t\tif(match[1]) {\n\t\t\t\toperation.prefix = match[1];\n\t\t\t\tp = p + operation.prefix.length;\n\t\t\t\tif(match[2]) {\n\t\t\t\t\toperation.namedPrefix = match[2];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(match[3]) { // Opening square bracket\n\t\t\t\tp = parseFilterOperation(operation.operators,filterString,p);\n\t\t\t} else {\n\t\t\t\tp = match.index + match[0].length;\n\t\t\t}\n\t\t\tif(match[4] || match[5] || match[6]) { // Double quoted string, single quoted string or unquoted title\n\t\t\t\toperation.operators.push(\n\t\t\t\t\t{operator: \"title\", operands: [{text: match[4] || match[5] || match[6]}]}\n\t\t\t\t);\n\t\t\t}\n\t\t\tresults.push(operation);\n\t\t}\n\t}\n\treturn results;\n};\n\nexports.getFilterOperators = function() {\n\tif(!this.filterOperators) {\n\t\t$tw.Wiki.prototype.filterOperators = {};\n\t\t$tw.modules.applyMethods(\"filteroperator\",this.filterOperators);\n\t}\n\treturn this.filterOperators;\n};\n\nexports.getFilterRunPrefixes = function() {\n\tif(!this.filterRunPrefixes) {\n\t\t$tw.Wiki.prototype.filterRunPrefixes = {};\n\t\t$tw.modules.applyMethods(\"filterrunprefix\",this.filterRunPrefixes);\n\t}\n\treturn this.filterRunPrefixes;\n}\n\nexports.filterTiddlers = function(filterString,widget,source) {\n\tvar fn = this.compileFilter(filterString);\n\treturn fn.call(this,source,widget);\n};\n\n/*\nCompile a filter into a function with the signature fn(source,widget) where:\nsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\nwidget: an optional widget node for retrieving the current tiddler etc.\n*/\nexports.compileFilter = function(filterString) {\n\tvar filterParseTree;\n\ttry {\n\t\tfilterParseTree = this.parseFilter(filterString);\n\t} catch(e) {\n\t\treturn function(source,widget) {\n\t\t\treturn [$tw.language.getString(\"Error/Filter\") + \": \" + e];\n\t\t};\n\t}\n\t// Get the hashmap of filter operator functions\n\tvar filterOperators = this.getFilterOperators();\n\t// Assemble array of functions, one for each operation\n\tvar operationFunctions = [];\n\t// Step through the operations\n\tvar self = this;\n\t$tw.utils.each(filterParseTree,function(operation) {\n\t\t// Create a function for the chain of operators in the operation\n\t\tvar operationSubFunction = function(source,widget) {\n\t\t\tvar accumulator = source,\n\t\t\t\tresults = [],\n\t\t\t\tcurrTiddlerTitle = widget && widget.getVariable(\"currentTiddler\");\n\t\t\t$tw.utils.each(operation.operators,function(operator) {\n\t\t\t\tvar operands = [],\n\t\t\t\t\toperatorFunction;\n\t\t\t\tif(!operator.operator) {\n\t\t\t\t\toperatorFunction = filterOperators.title;\n\t\t\t\t} else if(!filterOperators[operator.operator]) {\n\t\t\t\t\toperatorFunction = filterOperators.field;\n\t\t\t\t} else {\n\t\t\t\t\toperatorFunction = filterOperators[operator.operator];\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t$tw.utils.each(operator.operands,function(operand) {\n\t\t\t\t\tif(operand.indirect) {\n\t\t\t\t\t\toperand.value = self.getTextReference(operand.text,\"\",currTiddlerTitle);\n\t\t\t\t\t} else if(operand.variable) {\n\t\t\t\t\t\toperand.value = widget.getVariable(operand.text,{defaultValue: \"\"});\n\t\t\t\t\t} else {\n\t\t\t\t\t\toperand.value = operand.text;\n\t\t\t\t\t}\n\t\t\t\t\toperands.push(operand.value);\n\t\t\t\t});\n\n\t\t\t\t// Invoke the appropriate filteroperator module\n\t\t\t\tresults = operatorFunction(accumulator,{\n\t\t\t\t\t\t\toperator: operator.operator,\n\t\t\t\t\t\t\toperand: operands.length > 0 ? operands[0] : undefined,\n\t\t\t\t\t\t\toperands: operands,\n\t\t\t\t\t\t\tprefix: operator.prefix,\n\t\t\t\t\t\t\tsuffix: operator.suffix,\n\t\t\t\t\t\t\tsuffixes: operator.suffixes,\n\t\t\t\t\t\t\tregexp: operator.regexp\n\t\t\t\t\t\t},{\n\t\t\t\t\t\t\twiki: self,\n\t\t\t\t\t\t\twidget: widget\n\t\t\t\t\t\t});\n\t\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\t\taccumulator = self.makeTiddlerIterator(results);\n\t\t\t\t} else {\n\t\t\t\t\taccumulator = results;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\treturn results;\n\t\t\t} else {\n\t\t\t\tvar resultArray = [];\n\t\t\t\tresults(function(tiddler,title) {\n\t\t\t\t\tresultArray.push(title);\n\t\t\t\t});\n\t\t\t\treturn resultArray;\n\t\t\t}\n\t\t};\n\t\tvar filterRunPrefixes = self.getFilterRunPrefixes();\n\t\t// Wrap the operator functions in a wrapper function that depends on the prefix\n\t\toperationFunctions.push((function() {\n\t\t\tvar options = {wiki: self};\n\t\t\tswitch(operation.prefix || \"\") {\n\t\t\t\tcase \"\": // No prefix means that the operation is unioned into the result\n\t\t\t\t\treturn filterRunPrefixes[\"or\"](operationSubFunction, options);\n\t\t\t\tcase \"=\": // The results of the operation are pushed into the result without deduplication\n\t\t\t\t\treturn filterRunPrefixes[\"all\"](operationSubFunction, options);\n\t\t\t\tcase \"-\": // The results of this operation are removed from the main result\n\t\t\t\t\treturn filterRunPrefixes[\"except\"](operationSubFunction, options);\n\t\t\t\tcase \"+\": // This operation is applied to the main results so far\n\t\t\t\t\treturn filterRunPrefixes[\"and\"](operationSubFunction, options);\n\t\t\t\tcase \"~\": // This operation is unioned into the result only if the main result so far is empty\n\t\t\t\t\treturn filterRunPrefixes[\"else\"](operationSubFunction, options);\n\t\t\t\tdefault: \n\t\t\t\t\tif(operation.namedPrefix && filterRunPrefixes[operation.namedPrefix]) {\n\t\t\t\t\t\treturn filterRunPrefixes[operation.namedPrefix](operationSubFunction, options);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t\tresults.clear();\n\t\t\t\t\t\t\tresults.push($tw.language.getString(\"Error/FilterRunPrefix\"));\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t}\n\t\t})());\n\t});\n\t// Return a function that applies the operations to a source iterator of tiddler titles\n\treturn $tw.perf.measure(\"filter: \" + filterString,function filterFunction(source,widget) {\n\t\tif(!source) {\n\t\t\tsource = self.each;\n\t\t} else if(typeof source === \"object\") { // Array or hashmap\n\t\t\tsource = self.makeTiddlerIterator(source);\n\t\t}\n\t\tvar results = new $tw.utils.LinkedList();\n\t\t$tw.utils.each(operationFunctions,function(operationFunction) {\n\t\t\toperationFunction(results,source,widget);\n\t\t});\n\t\treturn results.toArray();\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikimethod"
},
"$:/core/modules/indexers/backlinks-indexer.js": {
"title": "$:/core/modules/indexers/backlinks-indexer.js",
"text": "/*\\\ntitle: $:/core/modules/indexers/backlinks-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers' backlinks\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\n\nfunction BacklinksIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nBacklinksIndexer.prototype.init = function() {\n\tthis.index = null;\n}\n\nBacklinksIndexer.prototype.rebuild = function() {\n\tthis.index = null;\n}\n\nBacklinksIndexer.prototype._getLinks = function(tiddler) {\n\tvar parser = this.wiki.parseText(tiddler.fields.type, tiddler.fields.text, {});\n\tif(parser) {\n\t\treturn this.wiki.extractLinks(parser.tree);\n\t}\n\treturn [];\n}\n\nBacklinksIndexer.prototype.update = function(updateDescriptor) {\n\tif(!this.index) {\n\t\treturn;\n\t}\n\tvar newLinks = [],\n\t oldLinks = [],\n\t self = this;\n\tif(updateDescriptor.old.exists) {\n\t\toldLinks = this._getLinks(updateDescriptor.old.tiddler);\n\t}\n\tif(updateDescriptor.new.exists) {\n\t\tnewLinks = this._getLinks(updateDescriptor.new.tiddler);\n\t}\n\n\t$tw.utils.each(oldLinks,function(link) {\n\t\tif(self.index[link]) {\n\t\t\tdelete self.index[link][updateDescriptor.old.tiddler.fields.title];\n\t\t}\n\t});\n\t$tw.utils.each(newLinks,function(link) {\n\t\tif(!self.index[link]) {\n\t\t\tself.index[link] = Object.create(null);\n\t\t}\n\t\tself.index[link][updateDescriptor.new.tiddler.fields.title] = true;\n\t});\n}\n\nBacklinksIndexer.prototype.lookup = function(title) {\n\tif(!this.index) {\n\t\tthis.index = Object.create(null);\n\t\tvar self = this;\n\t\tthis.wiki.forEachTiddler(function(title,tiddler) {\n\t\t\tvar links = self._getLinks(tiddler);\n\t\t\t$tw.utils.each(links, function(link) {\n\t\t\t\tif(!self.index[link]) {\n\t\t\t\t\tself.index[link] = Object.create(null);\n\t\t\t\t}\n\t\t\t\tself.index[link][title] = true;\n\t\t\t});\n\t\t});\n\t}\n\tif(this.index[title]) {\n\t\treturn Object.keys(this.index[title]);\n\t} else {\n\t\treturn [];\n\t}\n}\n\nexports.BacklinksIndexer = BacklinksIndexer;\n\n})();\n",
"type": "application/javascript",
"module-type": "indexer"
},
"$:/core/modules/indexers/field-indexer.js": {
"title": "$:/core/modules/indexers/field-indexer.js",
"text": "/*\\\ntitle: $:/core/modules/indexers/field-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers with each field value\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\nvar DEFAULT_MAXIMUM_INDEXED_VALUE_LENGTH = 128;\n\nfunction FieldIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nFieldIndexer.prototype.init = function() {\n\tthis.index = null;\n\tthis.maxIndexedValueLength = DEFAULT_MAXIMUM_INDEXED_VALUE_LENGTH;\n\tthis.addIndexMethods();\n}\n\n// Provided for testing\nFieldIndexer.prototype.setMaxIndexedValueLength = function(length) {\n\tthis.index = null;\n\tthis.maxIndexedValueLength = length;\n};\n\nFieldIndexer.prototype.addIndexMethods = function() {\n\tvar self = this;\n\tthis.wiki.each.byField = function(name,value) {\n\t\tvar titles = self.wiki.allTitles(),\n\t\t\tlookup = self.lookup(name,value);\n\t\treturn lookup && lookup.filter(function(title) {\n\t\t\treturn titles.indexOf(title) !== -1;\n\t\t});\n\t};\n\tthis.wiki.eachShadow.byField = function(name,value) {\n\t\tvar titles = self.wiki.allShadowTitles(),\n\t\t\tlookup = self.lookup(name,value);\n\t\treturn lookup && lookup.filter(function(title) {\n\t\t\treturn titles.indexOf(title) !== -1;\n\t\t});\n\t};\n\tthis.wiki.eachTiddlerPlusShadows.byField = function(name,value) {\n\t\tvar lookup = self.lookup(name,value);\n\t\treturn lookup ? lookup.slice(0) : null;\n\t};\n\tthis.wiki.eachShadowPlusTiddlers.byField = function(name,value) {\n\t\tvar lookup = self.lookup(name,value);\n\t\treturn lookup ? lookup.slice(0) : null;\n\t};\n};\n\n/*\nTear down and then rebuild the index as if all tiddlers have changed\n*/\nFieldIndexer.prototype.rebuild = function() {\n\t// Invalidate the index so that it will be rebuilt when it is next used\n\tthis.index = null;\n};\n\n/*\nBuild the index for a particular field\n*/\nFieldIndexer.prototype.buildIndexForField = function(name) {\n\tvar self = this;\n\t// Hashmap by field name of hashmap by field value of array of tiddler titles\n\tthis.index = this.index || Object.create(null);\n\tthis.index[name] = Object.create(null);\n\tvar baseIndex = this.index[name];\n\t// Update the index for each tiddler\n\tthis.wiki.eachTiddlerPlusShadows(function(tiddler,title) {\n\t\tif(name in tiddler.fields) {\n\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\t// Skip any values above the maximum length\n\t\t\tif(value.length < self.maxIndexedValueLength) {\n\t\t\t\tbaseIndex[value] = baseIndex[value] || [];\n\t\t\t\tbaseIndex[value].push(title);\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nUpdate the index in the light of a tiddler value changing; note that the title must be identical. (Renames are handled as a separate delete and create)\nupdateDescriptor: {old: {tiddler: <tiddler>, shadow: <boolean>, exists: <boolean>},new: {tiddler: <tiddler>, shadow: <boolean>, exists: <boolean>}}\n*/\nFieldIndexer.prototype.update = function(updateDescriptor) {\n\tvar self = this;\n\t// Don't do anything if the index hasn't been built yet\n\tif(this.index === null) {\n\t\treturn;\n\t}\n\t// Remove the old tiddler from the index\n\tif(updateDescriptor.old.tiddler) {\n\t\t$tw.utils.each(this.index,function(indexEntry,name) {\n\t\t\tif(name in updateDescriptor.old.tiddler.fields) {\n\t\t\t\tvar value = updateDescriptor.old.tiddler.getFieldString(name),\n\t\t\t\t\ttiddlerList = indexEntry[value];\n\t\t\t\tif(tiddlerList) {\n\t\t\t\t\tvar index = tiddlerList.indexOf(updateDescriptor.old.tiddler.fields.title);\n\t\t\t\t\tif(index !== -1) {\n\t\t\t\t\t\ttiddlerList.splice(index,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t// Add the new tiddler to the index\n\tif(updateDescriptor[\"new\"].tiddler) {\n\t\t$tw.utils.each(this.index,function(indexEntry,name) {\n\t\t\tif(name in updateDescriptor[\"new\"].tiddler.fields) {\n\t\t\t\tvar value = updateDescriptor[\"new\"].tiddler.getFieldString(name);\n\t\t\t\tif(value.length < self.maxIndexedValueLength) {\n\t\t\t\t\tindexEntry[value] = indexEntry[value] || [];\n\t\t\t\t\tindexEntry[value].push(updateDescriptor[\"new\"].tiddler.fields.title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\t\t\n\t}\n};\n\n// Lookup the given field returning a list of tiddler titles\nFieldIndexer.prototype.lookup = function(name,value) {\n\t// Fail the lookup if the value is too long\n\tif(value.length >= this.maxIndexedValueLength) {\n\t\treturn null;\n\t}\n\t// Update the index if it has yet to be built\n\tif(this.index === null || !this.index[name]) {\n\t\tthis.buildIndexForField(name);\n\t}\n\treturn this.index[name][value] || [];\n};\n\nexports.FieldIndexer = FieldIndexer;\n\n})();\n",
"type": "application/javascript",
"module-type": "indexer"
},
"$:/core/modules/indexers/tag-indexer.js": {
"title": "$:/core/modules/indexers/tag-indexer.js",
"text": "/*\\\ntitle: $:/core/modules/indexers/tag-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers with each tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\nfunction TagIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nTagIndexer.prototype.init = function() {\n\tthis.subIndexers = [\n\t\tnew TagSubIndexer(this,\"each\"),\n\t\tnew TagSubIndexer(this,\"eachShadow\"),\n\t\tnew TagSubIndexer(this,\"eachTiddlerPlusShadows\"),\n\t\tnew TagSubIndexer(this,\"eachShadowPlusTiddlers\")\n\t];\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.addIndexMethod();\n\t});\n};\n\nTagIndexer.prototype.rebuild = function() {\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.rebuild();\n\t});\n};\n\nTagIndexer.prototype.update = function(updateDescriptor) {\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.update(updateDescriptor);\n\t});\n};\n\nfunction TagSubIndexer(indexer,iteratorMethod) {\n\tthis.indexer = indexer;\n\tthis.iteratorMethod = iteratorMethod;\n\tthis.index = null; // Hashmap of tag title to {isSorted: bool, titles: [array]} or null if not yet initialised\n}\n\nTagSubIndexer.prototype.addIndexMethod = function() {\n\tvar self = this;\n\tthis.indexer.wiki[this.iteratorMethod].byTag = function(tag) {\n\t\treturn self.lookup(tag).slice(0);\n\t};\n};\n\nTagSubIndexer.prototype.rebuild = function() {\n\tvar self = this;\n\t// Hashmap by tag of array of {isSorted:, titles:[]}\n\tthis.index = Object.create(null);\n\t// Add all the tags\n\tthis.indexer.wiki[this.iteratorMethod](function(tiddler,title) {\n\t\t$tw.utils.each(tiddler.fields.tags,function(tag) {\n\t\t\tif(!self.index[tag]) {\n\t\t\t\tself.index[tag] = {isSorted: false, titles: [title]};\n\t\t\t} else {\n\t\t\t\tself.index[tag].titles.push(title);\n\t\t\t}\n\t\t});\t\t\n\t});\n};\n\nTagSubIndexer.prototype.update = function(updateDescriptor) {\n\tthis.index = null;\n};\n\nTagSubIndexer.prototype.lookup = function(tag) {\n\t// Update the index if it has yet to be built\n\tif(this.index === null) {\n\t\tthis.rebuild();\n\t}\n\tvar indexRecord = this.index[tag];\n\tif(indexRecord) {\n\t\tif(!indexRecord.isSorted) {\n\t\t\tif(this.indexer.wiki.sortByList) {\n\t\t\t\tindexRecord.titles = this.indexer.wiki.sortByList(indexRecord.titles,tag);\n\t\t\t}\t\t\t\n\t\t\tindexRecord.isSorted = true;\n\t\t}\n\t\treturn indexRecord.titles;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n\nexports.TagIndexer = TagIndexer;\n\n})();\n",
"type": "application/javascript",
"module-type": "indexer"
},
"$:/core/modules/info/platform.js": {
"title": "$:/core/modules/info/platform.js",
"text": "/*\\\ntitle: $:/core/modules/info/platform.js\ntype: application/javascript\nmodule-type: info\n\nInitialise basic platform $:/info/ tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.getInfoTiddlerFields = function(updateInfoTiddlersCallback) {\n\tvar mapBoolean = function(value) {return value ? \"yes\" : \"no\";},\n\t\tinfoTiddlerFields = [];\n\t// Basics\n\tinfoTiddlerFields.push({title: \"$:/info/browser\", text: mapBoolean(!!$tw.browser)});\n\tinfoTiddlerFields.push({title: \"$:/info/node\", text: mapBoolean(!!$tw.node)});\n\tinfoTiddlerFields.push({title: \"$:/info/startup-timestamp\", text: $tw.utils.stringifyDate(new Date())});\n\tif($tw.browser) {\n\t\t// Document location\n\t\tvar setLocationProperty = function(name,value) {\n\t\t\t\tinfoTiddlerFields.push({title: \"$:/info/url/\" + name, text: value});\t\t\t\n\t\t\t},\n\t\t\tlocation = document.location;\n\t\tsetLocationProperty(\"full\", (location.toString()).split(\"#\")[0]);\n\t\tsetLocationProperty(\"host\", location.host);\n\t\tsetLocationProperty(\"hostname\", location.hostname);\n\t\tsetLocationProperty(\"protocol\", location.protocol);\n\t\tsetLocationProperty(\"port\", location.port);\n\t\tsetLocationProperty(\"pathname\", location.pathname);\n\t\tsetLocationProperty(\"search\", location.search);\n\t\tsetLocationProperty(\"origin\", location.origin);\n\t\t// Screen size\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/screen/width\", text: window.screen.width.toString()});\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/screen/height\", text: window.screen.height.toString()});\n \t\t// Dark mode through event listener on MediaQueryList\n \t\tvar mqList = window.matchMedia(\"(prefers-color-scheme: dark)\"),\n \t\t\tgetDarkModeTiddler = function() {return {title: \"$:/info/darkmode\", text: mqList.matches ? \"yes\" : \"no\"};};\n \t\tinfoTiddlerFields.push(getDarkModeTiddler());\n \t\tmqList.addListener(function(event) {\n \t\t\tupdateInfoTiddlersCallback([getDarkModeTiddler()]);\n \t\t});\n\t\t// Language\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/language\", text: navigator.language || \"\"});\n\t}\n\treturn infoTiddlerFields;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "info"
},
"$:/core/modules/keyboard.js": {
"title": "$:/core/modules/keyboard.js",
"text": "/*\\\ntitle: $:/core/modules/keyboard.js\ntype: application/javascript\nmodule-type: global\n\nKeyboard handling utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar namedKeys = {\n\t\"cancel\": 3,\n\t\"help\": 6,\n\t\"backspace\": 8,\n\t\"tab\": 9,\n\t\"clear\": 12,\n\t\"return\": 13,\n\t\"enter\": 13,\n\t\"pause\": 19,\n\t\"escape\": 27,\n\t\"space\": 32,\n\t\"page_up\": 33,\n\t\"page_down\": 34,\n\t\"end\": 35,\n\t\"home\": 36,\n\t\"left\": 37,\n\t\"up\": 38,\n\t\"right\": 39,\n\t\"down\": 40,\n\t\"printscreen\": 44,\n\t\"insert\": 45,\n\t\"delete\": 46,\n\t\"0\": 48,\n\t\"1\": 49,\n\t\"2\": 50,\n\t\"3\": 51,\n\t\"4\": 52,\n\t\"5\": 53,\n\t\"6\": 54,\n\t\"7\": 55,\n\t\"8\": 56,\n\t\"9\": 57,\n\t\"firefoxsemicolon\": 59,\n\t\"firefoxequals\": 61,\n\t\"a\": 65,\n\t\"b\": 66,\n\t\"c\": 67,\n\t\"d\": 68,\n\t\"e\": 69,\n\t\"f\": 70,\n\t\"g\": 71,\n\t\"h\": 72,\n\t\"i\": 73,\n\t\"j\": 74,\n\t\"k\": 75,\n\t\"l\": 76,\n\t\"m\": 77,\n\t\"n\": 78,\n\t\"o\": 79,\n\t\"p\": 80,\n\t\"q\": 81,\n\t\"r\": 82,\n\t\"s\": 83,\n\t\"t\": 84,\n\t\"u\": 85,\n\t\"v\": 86,\n\t\"w\": 87,\n\t\"x\": 88,\n\t\"y\": 89,\n\t\"z\": 90,\n\t\"numpad0\": 96,\n\t\"numpad1\": 97,\n\t\"numpad2\": 98,\n\t\"numpad3\": 99,\n\t\"numpad4\": 100,\n\t\"numpad5\": 101,\n\t\"numpad6\": 102,\n\t\"numpad7\": 103,\n\t\"numpad8\": 104,\n\t\"numpad9\": 105,\n\t\"multiply\": 106,\n\t\"add\": 107,\n\t\"separator\": 108,\n\t\"subtract\": 109,\n\t\"decimal\": 110,\n\t\"divide\": 111,\n\t\"f1\": 112,\n\t\"f2\": 113,\n\t\"f3\": 114,\n\t\"f4\": 115,\n\t\"f5\": 116,\n\t\"f6\": 117,\n\t\"f7\": 118,\n\t\"f8\": 119,\n\t\"f9\": 120,\n\t\"f10\": 121,\n\t\"f11\": 122,\n\t\"f12\": 123,\n\t\"f13\": 124,\n\t\"f14\": 125,\n\t\"f15\": 126,\n\t\"f16\": 127,\n\t\"f17\": 128,\n\t\"f18\": 129,\n\t\"f19\": 130,\n\t\"f20\": 131,\n\t\"f21\": 132,\n\t\"f22\": 133,\n\t\"f23\": 134,\n\t\"f24\": 135,\n\t\"firefoxminus\": 173,\n\t\"semicolon\": 186,\n\t\"equals\": 187,\n\t\"comma\": 188,\n\t\"dash\": 189,\n\t\"period\": 190,\n\t\"slash\": 191,\n\t\"backquote\": 192,\n\t\"openbracket\": 219,\n\t\"backslash\": 220,\n\t\"closebracket\": 221,\n\t\"quote\": 222\n};\n\nfunction KeyboardManager(options) {\n\tvar self = this;\n\toptions = options || \"\";\n\t// Save the named key hashmap\n\tthis.namedKeys = namedKeys;\n\t// Create a reverse mapping of code to keyname\n\tthis.keyNames = [];\n\t$tw.utils.each(namedKeys,function(keyCode,name) {\n\t\tself.keyNames[keyCode] = name.substr(0,1).toUpperCase() + name.substr(1);\n\t});\n\t// Save the platform-specific name of the \"meta\" key\n\tthis.metaKeyName = $tw.platform.isMac ? \"cmd-\" : \"win-\";\n\tthis.shortcutKeysList = [], // Stores the shortcut-key descriptors\n\tthis.shortcutActionList = [], // Stores the corresponding action strings\n\tthis.shortcutParsedList = []; // Stores the parsed key descriptors\n\tthis.lookupNames = [\"shortcuts\"];\n\tthis.lookupNames.push($tw.platform.isMac ? \"shortcuts-mac\" : \"shortcuts-not-mac\")\n\tthis.lookupNames.push($tw.platform.isWindows ? \"shortcuts-windows\" : \"shortcuts-not-windows\");\n\tthis.lookupNames.push($tw.platform.isLinux ? \"shortcuts-linux\" : \"shortcuts-not-linux\");\n\tthis.updateShortcutLists(this.getShortcutTiddlerList());\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tself.handleShortcutChanges(changes);\n\t});\n}\n\n/*\nReturn an array of keycodes for the modifier keys ctrl, shift, alt, meta\n*/\nKeyboardManager.prototype.getModifierKeys = function() {\n\treturn [\n\t\t16, // Shift\n\t\t17, // Ctrl\n\t\t18, // Alt\n\t\t20, // CAPS LOCK\n\t\t91, // Meta (left)\n\t\t93, // Meta (right)\n\t\t224 // Meta (Firefox)\n\t]\n};\n\n/*\nParses a key descriptor into the structure:\n{\n\tkeyCode: numeric keycode\n\tshiftKey: boolean\n\taltKey: boolean\n\tctrlKey: boolean\n\tmetaKey: boolean\n}\nKey descriptors have the following format:\n\tctrl+enter\n\tctrl+shift+alt+A\n*/\nKeyboardManager.prototype.parseKeyDescriptor = function(keyDescriptor) {\n\tvar components = keyDescriptor.split(/\\+|\\-/),\n\t\tinfo = {\n\t\t\tkeyCode: 0,\n\t\t\tshiftKey: false,\n\t\t\taltKey: false,\n\t\t\tctrlKey: false,\n\t\t\tmetaKey: false\n\t\t};\n\tfor(var t=0; t<components.length; t++) {\n\t\tvar s = components[t].toLowerCase(),\n\t\t\tc = s.charCodeAt(0);\n\t\t// Look for modifier keys\n\t\tif(s === \"ctrl\") {\n\t\t\tinfo.ctrlKey = true;\n\t\t} else if(s === \"shift\") {\n\t\t\tinfo.shiftKey = true;\n\t\t} else if(s === \"alt\") {\n\t\t\tinfo.altKey = true;\n\t\t} else if(s === \"meta\" || s === \"cmd\" || s === \"win\") {\n\t\t\tinfo.metaKey = true;\n\t\t}\n\t\t// Replace named keys with their code\n\t\tif(this.namedKeys[s]) {\n\t\t\tinfo.keyCode = this.namedKeys[s];\n\t\t}\n\t}\n\tif(info.keyCode) {\n\t\treturn info;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nParse a list of key descriptors into an array of keyInfo objects. The key descriptors can be passed as an array of strings or a space separated string\n*/\nKeyboardManager.prototype.parseKeyDescriptors = function(keyDescriptors,options) {\n\tvar self = this;\n\toptions = options || {};\n\toptions.stack = options.stack || [];\n\tvar wiki = options.wiki || $tw.wiki;\n\tif(typeof keyDescriptors === \"string\" && keyDescriptors === \"\") {\n\t\treturn [];\n\t}\n\tif(!$tw.utils.isArray(keyDescriptors)) {\n\t\tkeyDescriptors = keyDescriptors.split(\" \");\n\t}\n\tvar result = [];\n\t$tw.utils.each(keyDescriptors,function(keyDescriptor) {\n\t\t// Look for a named shortcut\n\t\tif(keyDescriptor.substr(0,2) === \"((\" && keyDescriptor.substr(-2,2) === \"))\") {\n\t\t\tif(options.stack.indexOf(keyDescriptor) === -1) {\n\t\t\t\toptions.stack.push(keyDescriptor);\n\t\t\t\tvar name = keyDescriptor.substring(2,keyDescriptor.length - 2),\n\t\t\t\t\tlookupName = function(configName) {\n\t\t\t\t\t\tvar keyDescriptors = wiki.getTiddlerText(\"$:/config/\" + configName + \"/\" + name);\n\t\t\t\t\t\tif(keyDescriptors) {\n\t\t\t\t\t\t\tresult.push.apply(result,self.parseKeyDescriptors(keyDescriptors,options));\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t$tw.utils.each(self.lookupNames,function(platformDescriptor) {\n\t\t\t\t\tlookupName(platformDescriptor);\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tresult.push(self.parseKeyDescriptor(keyDescriptor));\n\t\t}\n\t});\n\treturn result;\n};\n\nKeyboardManager.prototype.getPrintableShortcuts = function(keyInfoArray) {\n\tvar self = this,\n\t\tresult = [];\n\t$tw.utils.each(keyInfoArray,function(keyInfo) {\n\t\tif(keyInfo) {\n\t\t\tresult.push((keyInfo.ctrlKey ? \"ctrl-\" : \"\") + \n\t\t\t\t (keyInfo.shiftKey ? \"shift-\" : \"\") + \n\t\t\t\t (keyInfo.altKey ? \"alt-\" : \"\") + \n\t\t\t\t (keyInfo.metaKey ? self.metaKeyName : \"\") + \n\t\t\t\t (self.keyNames[keyInfo.keyCode]));\n\t\t}\n\t});\n\treturn result;\n}\n\nKeyboardManager.prototype.checkKeyDescriptor = function(event,keyInfo) {\n\treturn keyInfo &&\n\t\t\tevent.keyCode === keyInfo.keyCode && \n\t\t\tevent.shiftKey === keyInfo.shiftKey && \n\t\t\tevent.altKey === keyInfo.altKey && \n\t\t\tevent.ctrlKey === keyInfo.ctrlKey && \n\t\t\tevent.metaKey === keyInfo.metaKey;\n};\n\nKeyboardManager.prototype.checkKeyDescriptors = function(event,keyInfoArray) {\n\tfor(var t=0; t<keyInfoArray.length; t++) {\n\t\tif(this.checkKeyDescriptor(event,keyInfoArray[t])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\nKeyboardManager.prototype.getEventModifierKeyDescriptor = function(event) {\n\treturn event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey ? \"ctrl\" : \n\t\tevent.shiftKey && !event.ctrlKey && !event.altKey && !event.metaKey ? \"shift\" : \n\t\tevent.ctrlKey && event.shiftKey && !event.altKey && !event.metaKey ? \"ctrl-shift\" : \n\t\tevent.altKey && !event.shiftKey && !event.ctrlKey && !event.metaKey ? \"alt\" : \n\t\tevent.altKey && event.shiftKey && !event.ctrlKey && !event.metaKey ? \"alt-shift\" : \n\t\tevent.altKey && event.ctrlKey && !event.shiftKey && !event.metaKey ? \"ctrl-alt\" : \n\t\tevent.altKey && event.shiftKey && event.ctrlKey && !event.metaKey ? \"ctrl-alt-shift\" : \n\t\tevent.metaKey && !event.ctrlKey && !event.shiftKey && !event.altKey ? \"meta\" : \n\t\tevent.metaKey && event.ctrlKey && !event.shiftKey && !event.altKey ? \"meta-ctrl\" :\n\t\tevent.metaKey && event.ctrlKey && event.shiftKey && !event.altKey ? \"meta-ctrl-shift\" :\n\t\tevent.metaKey && event.ctrlKey & event.shiftKey && event.altKey ? \"meta-ctrl-alt-shift\" : \"normal\";\n};\n\nKeyboardManager.prototype.getShortcutTiddlerList = function() {\n\treturn $tw.wiki.getTiddlersWithTag(\"$:/tags/KeyboardShortcut\");\n};\n\nKeyboardManager.prototype.updateShortcutLists = function(tiddlerList) {\n\tthis.shortcutTiddlers = tiddlerList;\n\tfor(var i=0; i<tiddlerList.length; i++) {\n\t\tvar title = tiddlerList[i],\n\t\t\ttiddlerFields = $tw.wiki.getTiddler(title).fields;\n\t\tthis.shortcutKeysList[i] = tiddlerFields.key !== undefined ? tiddlerFields.key : undefined;\n\t\tthis.shortcutActionList[i] = tiddlerFields.text;\n\t\tthis.shortcutParsedList[i] = this.shortcutKeysList[i] !== undefined ? this.parseKeyDescriptors(this.shortcutKeysList[i]) : undefined;\n\t}\n};\n\nKeyboardManager.prototype.handleKeydownEvent = function(event) {\n\tvar key, action;\n\tfor(var i=0; i<this.shortcutTiddlers.length; i++) {\n\t\tif(this.shortcutParsedList[i] !== undefined && this.checkKeyDescriptors(event,this.shortcutParsedList[i])) {\n\t\t\tkey = this.shortcutParsedList[i];\n\t\t\taction = this.shortcutActionList[i];\n\t\t}\n\t}\n\tif(key !== undefined) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\t$tw.rootWidget.invokeActionString(action,$tw.rootWidget);\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nKeyboardManager.prototype.detectNewShortcuts = function(changedTiddlers) {\n\tvar shortcutConfigTiddlers = [],\n\t\thandled = false;\n\t$tw.utils.each(this.lookupNames,function(platformDescriptor) {\n\t\tvar descriptorString = \"$:/config/\" + platformDescriptor + \"/\";\n\t\tObject.keys(changedTiddlers).forEach(function(configTiddler) {\n\t\t\tvar configString = configTiddler.substr(0, configTiddler.lastIndexOf(\"/\") + 1);\n\t\t\tif(configString === descriptorString) {\n\t\t\t\tshortcutConfigTiddlers.push(configTiddler);\n\t\t\t\thandled = true;\n\t\t\t}\n\t\t});\n\t});\n\tif(handled) {\n\t\treturn $tw.utils.hopArray(changedTiddlers,shortcutConfigTiddlers);\n\t} else {\n\t\treturn false;\n\t}\n};\n\nKeyboardManager.prototype.handleShortcutChanges = function(changedTiddlers) {\n\tvar newList = this.getShortcutTiddlerList();\n\tvar hasChanged = $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers) ? true :\n\t\t($tw.utils.hopArray(changedTiddlers,newList) ? true :\n\t\t(this.detectNewShortcuts(changedTiddlers))\n\t);\n\t// Re-cache shortcuts if something changed\n\tif(hasChanged) {\n\t\tthis.updateShortcutLists(newList);\n\t}\n};\n\nexports.KeyboardManager = KeyboardManager;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/language.js": {
"title": "$:/core/modules/language.js",
"text": "/*\\\ntitle: $:/core/modules/language.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Language() manages translateable strings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate an instance of the language manager. Options include:\nwiki: wiki from which to retrieve translation tiddlers\n*/\nfunction Language(options) {\n\toptions = options || \"\";\n\tthis.wiki = options.wiki || $tw.wiki;\n}\n\n/*\nReturn a wikified translateable string. The title is automatically prefixed with \"$:/language/\"\nOptions include:\nvariables: optional hashmap of variables to supply to the language wikification\n*/\nLanguage.prototype.getString = function(title,options) {\n\toptions = options || {};\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.renderTiddler(\"text/plain\",title,{variables: options.variables});\n};\n\n/*\nReturn a raw, unwikified translateable string. The title is automatically prefixed with \"$:/language/\"\n*/\nLanguage.prototype.getRawString = function(title) {\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.getTiddlerText(title);\n};\n\nexports.Language = Language;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/macros/changecount.js": {
"title": "$:/core/modules/macros/changecount.js",
"text": "/*\\\ntitle: $:/core/modules/macros/changecount.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the changecount for the current tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"changecount\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn this.wiki.getChangeCount(this.getVariable(\"currentTiddler\")) + \"\";\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/contrastcolour.js": {
"title": "$:/core/modules/macros/contrastcolour.js",
"text": "/*\\\ntitle: $:/core/modules/macros/contrastcolour.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to choose which of two colours has the highest contrast with a base colour\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"contrastcolour\";\n\nexports.params = [\n\t{name: \"target\"},\n\t{name: \"fallbackTarget\"},\n\t{name: \"colourA\"},\n\t{name: \"colourB\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(target,fallbackTarget,colourA,colourB) {\n\tvar rgbTarget = $tw.utils.parseCSSColor(target) || $tw.utils.parseCSSColor(fallbackTarget);\n\tif(!rgbTarget) {\n\t\treturn colourA;\n\t}\n\tvar rgbColourA = $tw.utils.parseCSSColor(colourA),\n\t\trgbColourB = $tw.utils.parseCSSColor(colourB);\n\tif(rgbColourA && !rgbColourB) {\n\t\treturn rgbColourA;\n\t}\n\tif(rgbColourB && !rgbColourA) {\n\t\treturn rgbColourB;\n\t}\n\tif(!rgbColourA && !rgbColourB) {\n\t\t// If neither colour is readable, return a crude inverse of the target\n\t\treturn [255 - rgbTarget[0],255 - rgbTarget[1],255 - rgbTarget[2],rgbTarget[3]];\n\t}\n\t// Colour brightness formula derived from http://www.w3.org/WAI/ER/WD-AERT/#color-contrast\n\tvar brightnessTarget = rgbTarget[0] * 0.299 + rgbTarget[1] * 0.587 + rgbTarget[2] * 0.114,\n\t\tbrightnessA = rgbColourA[0] * 0.299 + rgbColourA[1] * 0.587 + rgbColourA[2] * 0.114,\n\t\tbrightnessB = rgbColourB[0] * 0.299 + rgbColourB[1] * 0.587 + rgbColourB[2] * 0.114;\n\treturn Math.abs(brightnessTarget - brightnessA) > Math.abs(brightnessTarget - brightnessB) ? colourA : colourB;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/csvtiddlers.js": {
"title": "$:/core/modules/macros/csvtiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/macros/csvtiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to CSV\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"csvtiddlers\";\n\nexports.params = [\n\t{name: \"filter\"},\n\t{name: \"format\"},\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter,format) {\n\tvar self = this,\n\t\ttiddlers = this.wiki.filterTiddlers(filter),\n\t\ttiddler,\n\t\tfields = [],\n\t\tt,f;\n\t// Collect all the fields\n\tfor(t=0;t<tiddlers.length; t++) {\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\tfor(f in tiddler.fields) {\n\t\t\tif(fields.indexOf(f) === -1) {\n\t\t\t\tfields.push(f);\n\t\t\t}\n\t\t}\n\t}\n\t// Sort the fields and bring the standard ones to the front\n\tfields.sort();\n\t\"title text modified modifier created creator\".split(\" \").reverse().forEach(function(value,index) {\n\t\tvar p = fields.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tfields.splice(p,1);\n\t\t\tfields.unshift(value)\n\t\t}\n\t});\n\t// Output the column headings\n\tvar output = [], row = [];\n\tfields.forEach(function(value) {\n\t\trow.push(quoteAndEscape(value))\n\t});\n\toutput.push(row.join(\",\"));\n\t// Output each tiddler\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\trow = [];\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\t\tfor(f=0; f<fields.length; f++) {\n\t\t\t\trow.push(quoteAndEscape(tiddler ? tiddler.getFieldString(fields[f]) || \"\" : \"\"));\n\t\t\t}\n\t\toutput.push(row.join(\",\"));\n\t}\n\treturn output.join(\"\\n\");\n};\n\nfunction quoteAndEscape(value) {\n\treturn \"\\\"\" + value.replace(/\"/mg,\"\\\"\\\"\") + \"\\\"\";\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/displayshortcuts.js": {
"title": "$:/core/modules/macros/displayshortcuts.js",
"text": "/*\\\ntitle: $:/core/modules/macros/displayshortcuts.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to display a list of keyboard shortcuts in human readable form. Notably, it resolves named shortcuts like `((bold))` to the underlying keystrokes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"displayshortcuts\";\n\nexports.params = [\n\t{name: \"shortcuts\"},\n\t{name: \"prefix\"},\n\t{name: \"separator\"},\n\t{name: \"suffix\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(shortcuts,prefix,separator,suffix) {\n\tvar shortcutArray = $tw.keyboardManager.getPrintableShortcuts($tw.keyboardManager.parseKeyDescriptors(shortcuts,{\n\t\twiki: this.wiki\n\t}));\n\tif(shortcutArray.length > 0) {\n\t\tshortcutArray.sort(function(a,b) {\n\t\t return a.toLowerCase().localeCompare(b.toLowerCase());\n\t\t})\n\t\treturn prefix + shortcutArray.join(separator) + suffix;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/jsontiddler.js": {
"title": "$:/core/modules/macros/jsontiddler.js",
"text": "/*\\\ntitle: $:/core/modules/macros/jsontiddler.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output a single tiddler to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddler\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\ttitle = title || this.getVariable(\"currentTiddler\");\n\tvar tiddler = !!title && this.wiki.getTiddler(title),\n\t\tfields = new Object();\n\tif(tiddler) {\n\t\tfor(var field in tiddler.fields) {\n\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t}\n\t}\n\treturn JSON.stringify(fields,null,$tw.config.preferences.jsonSpaces);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/jsontiddlers.js": {
"title": "$:/core/modules/macros/jsontiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/macros/jsontiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddlers\";\n\nexports.params = [\n\t{name: \"filter\"},\n\t{name: \"spaces\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter,spaces) {\n\treturn this.wiki.getTiddlersAsJson(filter,$tw.utils.parseInt(spaces));\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/makedatauri.js": {
"title": "$:/core/modules/macros/makedatauri.js",
"text": "/*\\\ntitle: $:/core/modules/macros/makedatauri.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to convert a string of text to a data URI\n\n<<makedatauri text:\"Text to be converted\" type:\"text/vnd.tiddlywiki\">>\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"makedatauri\";\n\nexports.params = [\n\t{name: \"text\"},\n\t{name: \"type\"},\n\t{name: \"_canonical_uri\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(text,type,_canonical_uri) {\n\treturn $tw.utils.makeDataUri(text,type,_canonical_uri);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/now.js": {
"title": "$:/core/modules/macros/now.js",
"text": "/*\\\ntitle: $:/core/modules/macros/now.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return a formatted version of the current time\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"now\";\n\nexports.params = [\n\t{name: \"format\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(format) {\n\treturn $tw.utils.formatDateString(new Date(),format || \"0hh:0mm, DDth MMM YYYY\");\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/qualify.js": {
"title": "$:/core/modules/macros/qualify.js",
"text": "/*\\\ntitle: $:/core/modules/macros/qualify.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to qualify a state tiddler title according\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"qualify\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\treturn title + \"-\" + this.getStateQualifier();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/resolvepath.js": {
"title": "$:/core/modules/macros/resolvepath.js",
"text": "/*\\\ntitle: $:/core/modules/macros/resolvepath.js\ntype: application/javascript\nmodule-type: macro\n\nResolves a relative path for an absolute rootpath.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"resolvepath\";\n\nexports.params = [\n\t{name: \"source\"},\n\t{name: \"root\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(source, root) {\n\treturn $tw.utils.resolvePath(source, root);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/unusedtitle.js": {
"title": "$:/core/modules/macros/unusedtitle.js",
"text": "/*\\\ntitle: $:/core/modules/macros/unusedtitle.js\ntype: application/javascript\nmodule-type: macro\nMacro to return a new title that is unused in the wiki. It can be given a name as a base.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"unusedtitle\";\n\nexports.params = [\n\t{name: \"baseName\"},\n\t{name: \"options\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(baseName, options) {\n\tif(!baseName) {\n\t\tbaseName = $tw.language.getString(\"DefaultNewTiddlerTitle\");\n\t}\n\treturn this.wiki.generateNewTitle(baseName, options);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/version.js": {
"title": "$:/core/modules/macros/version.js",
"text": "/*\\\ntitle: $:/core/modules/macros/version.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the TiddlyWiki core version number\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"version\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn $tw.version;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/parsers/audioparser.js": {
"title": "$:/core/modules/parsers/audioparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/audioparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe audio parser parses an audio tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar AudioParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"audio\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"},\n\t\t\t\tstyle: {type: \"string\", value: \"width: 100%; object-fit: contain\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"audio/ogg\"] = AudioParser;\nexports[\"audio/mpeg\"] = AudioParser;\nexports[\"audio/mp3\"] = AudioParser;\nexports[\"audio/mp4\"] = AudioParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/binaryparser.js": {
"title": "$:/core/modules/parsers/binaryparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/binaryparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe binary parser parses a binary tiddler into a warning message and download link\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar BINARY_WARNING_MESSAGE = \"$:/core/ui/BinaryWarning\";\nvar EXPORT_BUTTON_IMAGE = \"$:/core/images/export-button\";\n\nvar BinaryParser = function(type,text,options) {\n\t// Transclude the binary data tiddler warning message\n\tvar warn = {\n\t\ttype: \"element\",\n\t\ttag: \"p\",\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Create download link based on binary tiddler title\n\tvar link = {\n\t\ttype: \"element\",\n\t\ttag: \"a\",\n\t\tattributes: {\n\t\t\ttitle: {type: \"indirect\", textReference: \"!!title\"},\n\t\t\tdownload: {type: \"indirect\", textReference: \"!!title\"}\n\t\t},\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: EXPORT_BUTTON_IMAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Set the link href to external or internal data URI\n\tif(options._canonical_uri) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: options._canonical_uri\n\t\t};\n\t} else if(text) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: \"data:\" + type + \";base64,\" + text\n\t\t};\n\t}\n\t// Combine warning message and download link in a div\n\tvar element = {\n\t\ttype: \"element\",\n\t\ttag: \"div\",\n\t\tattributes: {\n\t\t\tclass: {type: \"string\", value: \"tc-binary-warning\"}\n\t\t},\n\t\tchildren: [warn, link]\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"application/octet-stream\"] = BinaryParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/csvparser.js": {
"title": "$:/core/modules/parsers/csvparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/csvparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe CSV text parser processes CSV files into a table wrapped in a scrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar CsvParser = function(type,text,options) {\n\t// Table framework\n\tthis.tree = [{\n\t\t\"type\": \"scrollable\", \"children\": [{\n\t\t\t\"type\": \"element\", \"tag\": \"table\", \"children\": [{\n\t\t\t\t\"type\": \"element\", \"tag\": \"tbody\", \"children\": []\n\t\t\t}], \"attributes\": {\n\t\t\t\t\"class\": {\"type\": \"string\", \"value\": \"tc-csv-table\"}\n\t\t\t}\n\t\t}]\n\t}];\n\t// Split the text into lines\n\tvar lines = text.split(/\\r?\\n/mg),\n\t\ttag = \"th\";\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar lineText = lines[line];\n\t\tif(lineText) {\n\t\t\tvar row = {\n\t\t\t\t\t\"type\": \"element\", \"tag\": \"tr\", \"children\": []\n\t\t\t\t};\n\t\t\tvar columns = lineText.split(\",\");\n\t\t\tfor(var column=0; column<columns.length; column++) {\n\t\t\t\trow.children.push({\n\t\t\t\t\t\t\"type\": \"element\", \"tag\": tag, \"children\": [{\n\t\t\t\t\t\t\t\"type\": \"text\",\n\t\t\t\t\t\t\t\"text\": columns[column]\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t}\n\t\t\ttag = \"td\";\n\t\t\tthis.tree[0].children[0].children[0].children.push(row);\n\t\t}\n\t}\n};\n\nexports[\"text/csv\"] = CsvParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/htmlparser.js": {
"title": "$:/core/modules/parsers/htmlparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/htmlparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe HTML parser displays text as raw HTML\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HtmlParser = function(type,text,options) {\n\tvar src;\n\tif(options._canonical_uri) {\n\t\tsrc = options._canonical_uri;\n\t} else if(text) {\n\t\tsrc = \"data:text/html;charset=utf-8,\" + encodeURIComponent(text);\n\t}\n\tthis.tree = [{\n\t\ttype: \"element\",\n\t\ttag: \"iframe\",\n\t\tattributes: {\n\t\t\tsrc: {type: \"string\", value: src},\n\t\t\tsandbox: {type: \"string\", value: \"\"}\n\t\t}\n\t}];\n};\n\nexports[\"text/html\"] = HtmlParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/imageparser.js": {
"title": "$:/core/modules/parsers/imageparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/imageparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe image parser parses an image into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"img\",\n\t\t\tattributes: {}\n\t\t};\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\tif(type === \"image/svg+xml\" || type === \".svg\") {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:image/svg+xml,\" + encodeURIComponent(text)};\n\t\t} else {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t\t}\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"image/svg+xml\"] = ImageParser;\nexports[\"image/jpg\"] = ImageParser;\nexports[\"image/jpeg\"] = ImageParser;\nexports[\"image/png\"] = ImageParser;\nexports[\"image/gif\"] = ImageParser;\nexports[\"image/webp\"] = ImageParser;\nexports[\"image/heic\"] = ImageParser;\nexports[\"image/heif\"] = ImageParser;\nexports[\"image/x-icon\"] = ImageParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/utils/parseutils.js": {
"title": "$:/core/modules/utils/parseutils.js",
"text": "/*\\\ntitle: $:/core/modules/utils/parseutils.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions concerned with parsing text into tokens.\n\nMost functions have the following pattern:\n\n* The parameters are:\n** `source`: the source string being parsed\n** `pos`: the current parse position within the string\n** Any further parameters are used to identify the token that is being parsed\n* The return value is:\n** null if the token was not found at the specified position\n** an object representing the token with the following standard fields:\n*** `type`: string indicating the type of the token\n*** `start`: start position of the token in the source string\n*** `end`: end position of the token in the source string\n*** Any further fields required to describe the token\n\nThe exception is `skipWhiteSpace`, which just returns the position after the whitespace.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for a whitespace token. Returns null if not found, otherwise returns {type: \"whitespace\", start:, end:,}\n*/\nexports.parseWhiteSpace = function(source,pos) {\n\tvar p = pos,c;\n\twhile(true) {\n\t\tc = source.charAt(p);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tp++;\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\tif(p === pos) {\n\t\treturn null;\n\t} else {\n\t\treturn {\n\t\t\ttype: \"whitespace\",\n\t\t\tstart: pos,\n\t\t\tend: p\n\t\t}\n\t}\n};\n\n/*\nConvenience wrapper for parseWhiteSpace. Returns the position after the whitespace\n*/\nexports.skipWhiteSpace = function(source,pos) {\n\tvar c;\n\twhile(true) {\n\t\tc = source.charAt(pos);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tpos++;\n\t\t} else {\n\t\t\treturn pos;\n\t\t}\n\t}\n};\n\n/*\nLook for a given string token. Returns null if not found, otherwise returns {type: \"token\", value:, start:, end:,}\n*/\nexports.parseTokenString = function(source,pos,token) {\n\tvar match = source.indexOf(token,pos) === pos;\n\tif(match) {\n\t\treturn {\n\t\t\ttype: \"token\",\n\t\t\tvalue: token,\n\t\t\tstart: pos,\n\t\t\tend: pos + token.length\n\t\t};\n\t}\n\treturn null;\n};\n\n/*\nLook for a token matching a regex. Returns null if not found, otherwise returns {type: \"regexp\", match:, start:, end:,}\n*/\nexports.parseTokenRegExp = function(source,pos,reToken) {\n\tvar node = {\n\t\ttype: \"regexp\",\n\t\tstart: pos\n\t};\n\treToken.lastIndex = pos;\n\tnode.match = reToken.exec(source);\n\tif(node.match && node.match.index === pos) {\n\t\tnode.end = pos + node.match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a string literal. Returns null if not found, otherwise returns {type: \"string\", value:, start:, end:,}\n*/\nexports.parseStringLiteral = function(source,pos) {\n\tvar node = {\n\t\ttype: \"string\",\n\t\tstart: pos\n\t};\n\tvar reString = /(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\")|(?:'([^']*)')/g;\n\treString.lastIndex = pos;\n\tvar match = reString.exec(source);\n\tif(match && match.index === pos) {\n\t\tnode.value = match[1] !== undefined ? match[1] :(\n\t\t\tmatch[2] !== undefined ? match[2] : match[3] \n\t\t\t\t\t);\n\t\tnode.end = pos + match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a macro invocation parameter. Returns null if not found, or {type: \"macro-parameter\", name:, value:, start:, end:}\n*/\nexports.parseMacroParameter = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macro-parameter\",\n\t\tstart: pos\n\t};\n\t// Define our regexp\n\tvar reMacroParameter = /(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\\s>\"'=]+)))/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the parameter\n\tvar token = $tw.utils.parseTokenRegExp(source,pos,reMacroParameter);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the parameter details\n\tnode.value = token.match[2] !== undefined ? token.match[2] : (\n\t\t\t\t\ttoken.match[3] !== undefined ? token.match[3] : (\n\t\t\t\t\t\ttoken.match[4] !== undefined ? token.match[4] : (\n\t\t\t\t\t\t\ttoken.match[5] !== undefined ? token.match[5] : (\n\t\t\t\t\t\t\t\ttoken.match[6] !== undefined ? token.match[6] : (\n\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t);\n\tif(token.match[1]) {\n\t\tnode.name = token.match[1];\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for a macro invocation. Returns null if not found, or {type: \"macrocall\", name:, parameters:, start:, end:}\n*/\nexports.parseMacroInvocation = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macrocall\",\n\t\tstart: pos,\n\t\tparams: []\n\t};\n\t// Define our regexps\n\tvar reMacroName = /([^\\s>\"'=]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double less than sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"<<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the macro name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reMacroName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Process parameters\n\tvar parameter = $tw.utils.parseMacroParameter(source,pos);\n\twhile(parameter) {\n\t\tnode.params.push(parameter);\n\t\tpos = parameter.end;\n\t\t// Get the next parameter\n\t\tparameter = $tw.utils.parseMacroParameter(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">>\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for an HTML attribute definition. Returns null if not found, otherwise returns {type: \"attribute\", name:, valueType: \"string|indirect|macro\", value:, start:, end:,}\n*/\nexports.parseAttribute = function(source,pos) {\n\tvar node = {\n\t\tstart: pos\n\t};\n\t// Define our regexps\n\tvar reAttributeName = /([^\\/\\s>\"'=]+)/g,\n\t\treUnquotedAttribute = /([^\\/\\s<>\"'=]+)/g,\n\t\treFilteredValue = /\\{\\{\\{(.+?)\\}\\}\\}/g,\n\t\treIndirectValue = /\\{\\{([^\\}]+)\\}\\}/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the attribute name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reAttributeName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for an equals sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"=\");\n\tif(token) {\n\t\tpos = token.end;\n\t\t// Skip whitespace\n\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t// Look for a string literal\n\t\tvar stringLiteral = $tw.utils.parseStringLiteral(source,pos);\n\t\tif(stringLiteral) {\n\t\t\tpos = stringLiteral.end;\n\t\t\tnode.type = \"string\";\n\t\t\tnode.value = stringLiteral.value;\n\t\t} else {\n\t\t\t// Look for a filtered value\n\t\t\tvar filteredValue = $tw.utils.parseTokenRegExp(source,pos,reFilteredValue);\n\t\t\tif(filteredValue) {\n\t\t\t\tpos = filteredValue.end;\n\t\t\t\tnode.type = \"filtered\";\n\t\t\t\tnode.filter = filteredValue.match[1];\n\t\t\t} else {\n\t\t\t\t// Look for an indirect value\n\t\t\t\tvar indirectValue = $tw.utils.parseTokenRegExp(source,pos,reIndirectValue);\n\t\t\t\tif(indirectValue) {\n\t\t\t\t\tpos = indirectValue.end;\n\t\t\t\t\tnode.type = \"indirect\";\n\t\t\t\t\tnode.textReference = indirectValue.match[1];\n\t\t\t\t} else {\n\t\t\t\t\t// Look for a unquoted value\n\t\t\t\t\tvar unquotedValue = $tw.utils.parseTokenRegExp(source,pos,reUnquotedAttribute);\n\t\t\t\t\tif(unquotedValue) {\n\t\t\t\t\t\tpos = unquotedValue.end;\n\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\tnode.value = unquotedValue.match[1];\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Look for a macro invocation value\n\t\t\t\t\t\tvar macroInvocation = $tw.utils.parseMacroInvocation(source,pos);\n\t\t\t\t\t\tif(macroInvocation) {\n\t\t\t\t\t\t\tpos = macroInvocation.end;\n\t\t\t\t\t\t\tnode.type = \"macro\";\n\t\t\t\t\t\t\tnode.value = macroInvocation;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\t\tnode.value = \"true\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tnode.type = \"string\";\n\t\tnode.value = \"true\";\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/parsers/pdfparser.js": {
"title": "$:/core/modules/parsers/pdfparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/pdfparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe PDF parser embeds a PDF viewer\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"embed\",\n\t\t\tattributes: {}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:application/pdf;base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"application/pdf\"] = ImageParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/textparser.js": {
"title": "$:/core/modules/parsers/textparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/textparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe plain text parser processes blocks of source text into a degenerate parse tree consisting of a single text node\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar TextParser = function(type,text,options) {\n\tthis.tree = [{\n\t\ttype: \"codeblock\",\n\t\tattributes: {\n\t\t\tcode: {type: \"string\", value: text},\n\t\t\tlanguage: {type: \"string\", value: type}\n\t\t}\n\t}];\n};\n\nexports[\"text/plain\"] = TextParser;\nexports[\"text/x-tiddlywiki\"] = TextParser;\nexports[\"application/javascript\"] = TextParser;\nexports[\"application/json\"] = TextParser;\nexports[\"text/css\"] = TextParser;\nexports[\"application/x-tiddler-dictionary\"] = TextParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/videoparser.js": {
"title": "$:/core/modules/parsers/videoparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/videoparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe video parser parses a video tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar VideoParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"video\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"},\n\t\t\t\tstyle: {type: \"string\", value: \"width: 100%; object-fit: contain\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"video/ogg\"] = VideoParser;\nexports[\"video/webm\"] = VideoParser;\nexports[\"video/mp4\"] = VideoParser;\nexports[\"video/quicktime\"] = VideoParser;\n\n})();\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/wikiparser/rules/codeblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/codeblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for code blocks. For example:\n\n```\n\t```\n\tThis text will not be //wikified//\n\t```\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match and get language if defined\n\tthis.matchRegExp = /```([\\w-]*)\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\\r?\\n```$)/mg;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Return the $codeblock widget\n\treturn [{\n\t\t\ttype: \"codeblock\",\n\t\t\tattributes: {\n\t\t\t\t\tcode: {type: \"string\", value: text},\n\t\t\t\t\tlanguage: {type: \"string\", value: this.match[1]}\n\t\t\t}\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/codeinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/codeinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for code runs. For example:\n\n```\n\tThis is a `code run`.\n\tThis is another ``code run``\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(``?)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar reEnd = new RegExp(this.match[1], \"mg\");\n\t// Look for the end marker\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the text\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"code\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: text\n\t\t}]\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/commentblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/commentblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/commentinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/commentinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/dash.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/dash.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/dash.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for dashes. For example:\n\n```\nThis is an en-dash: --\n\nThis is an em-dash: ---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"dash\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{2,3}(?!-)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar dash = this.match[0].length === 2 ? \"–\" : \"—\";\n\treturn [{\n\t\ttype: \"entity\",\n\t\tentity: dash\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/bold.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - bold. For example:\n\n```\n\tThis is ''bold'' text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except bold \n\\rules only bold \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"bold\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /''/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/''/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strong\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/italic.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - italic. For example:\n\n```\n\tThis is //italic// text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except italic\n\\rules only italic\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"italic\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\/\\//mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\/\\//mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"em\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - strikethrough. For example:\n\n```\n\tThis is ~~strikethrough~~ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except strikethrough \n\\rules only strikethrough \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"strikethrough\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~~/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/~~/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strike\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - subscript. For example:\n\n```\n\tThis is ,,subscript,, text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except subscript \n\\rules only subscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"subscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /,,/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/,,/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sub\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - superscript. For example:\n\n```\n\tThis is ^^superscript^^ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except superscript \n\\rules only superscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"superscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\^\\^/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\^\\^/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sup\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - underscore. For example:\n\n```\n\tThis is __underscore__ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except underscore \n\\rules only underscore\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"underscore\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /__/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/__/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"u\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/entity.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/entity.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/entity.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML entities. For example:\n\n```\n\tThis is a copyright symbol: ©\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"entity\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(&#?[a-zA-Z0-9]{2,8};)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar entityString = this.match[1];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Return the entity\n\treturn [{type: \"entity\", entity: this.match[0]}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/extlink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/extlink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/extlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\nAn external link: https://www.tiddlywiki.com/\n\nA suppressed external link: ~http://www.tiddlyspace.com/\n```\n\nExternal links can be suppressed by preceding them with `~`.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"extlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~?(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(this.match[0].substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: this.match[0].substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: this.match[0]},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: this.match[0]\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t},\n\t\tisBlock: true\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t}\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for marking areas with hard line breaks. For example:\n\n```\n\"\"\"\nThis is some text\nThat is set like\nIt is a Poem\nWhen it is\nClearly\nNot\n\"\"\"\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"hardlinebreaks\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\"\"\"(?:\\r?\\n)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\"\"\")|(\\r?\\n)/mg,\n\t\ttree = [],\n\t\tmatch;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tdo {\n\t\t// Parse the run up to the terminator\n\t\ttree.push.apply(tree,this.parser.parseInlineRun(reEnd,{eatTerminator: false}));\n\t\t// Redo the terminator match\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tmatch = reEnd.exec(this.parser.source);\n\t\tif(match) {\n\t\t\tthis.parser.pos = reEnd.lastIndex;\n\t\t\t// Add a line break if the terminator was a line break\n\t\t\tif(match[2]) {\n\t\t\t\ttree.push({type: \"element\", tag: \"br\"});\n\t\t\t}\n\t\t}\n\t} while(match && !match[1]);\n\t// Return the nodes\n\treturn tree;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/heading.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/heading.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/heading.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for headings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"heading\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(!{1,6})/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar headingLevel = this.match[1].length;\n\t// Move past the !s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse any classes, whitespace and then the heading itself\n\tvar classes = this.parser.parseClasses();\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// Return the heading\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"h\" + headingLevel, \n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: classes.join(\" \")}\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/horizrule.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/horizrule.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/horizrule.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for rules. For example:\n\n```\n---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"horizrule\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{3,}\\r?(?:\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\treturn [{type: \"element\", tag: \"hr\"}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/html.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/html.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/html.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for HTML elements and widgets. For example:\n\n{{{\n<aside>\nThis is an HTML5 aside element\n</aside>\n\n<$slider target=\"MyTiddler\">\nThis is a widget invocation\n</$slider>\n\n}}}\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"html\";\nexports.types = {inline: true, block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextTag = this.findNextTag(this.parser.source,startPos,{\n\t\trequireLineBreak: this.is.block\n\t});\n\treturn this.nextTag ? this.nextTag.start : undefined;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Retrieve the most recent match so that recursive calls don't overwrite it\n\tvar tag = this.nextTag;\n\tthis.nextTag = null;\n\t// Advance the parser position to past the tag\n\tthis.parser.pos = tag.end;\n\t// Check for an immediately following double linebreak\n\tvar hasLineBreak = !tag.isSelfClosing && !!$tw.utils.parseTokenRegExp(this.parser.source,this.parser.pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t// Set whether we're in block mode\n\ttag.isBlock = this.is.block || hasLineBreak;\n\t// Parse the body if we need to\n\tif(!tag.isSelfClosing && $tw.config.htmlVoidElements.indexOf(tag.tag) === -1) {\n\t\t\tvar reEndString = \"</\" + $tw.utils.escapeRegExp(tag.tag) + \">\",\n\t\t\t\treEnd = new RegExp(\"(\" + reEndString + \")\",\"mg\");\n\t\tif(hasLineBreak) {\n\t\t\ttag.children = this.parser.parseBlocks(reEndString);\n\t\t} else {\n\t\t\ttag.children = this.parser.parseInlineRun(reEnd);\n\t\t}\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tvar endMatch = reEnd.exec(this.parser.source);\n\t\tif(endMatch && endMatch.index === this.parser.pos) {\n\t\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t\t}\n\t}\n\t// Return the tag\n\treturn [tag];\n};\n\n/*\nLook for an HTML tag. Returns null if not found, otherwise returns {type: \"element\", name:, attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseTag = function(source,pos,options) {\n\toptions = options || {};\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Define our regexps\n\tvar reTagName = /([a-zA-Z0-9\\-\\$]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a less than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\"<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the tag name\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,reTagName);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tnode.tag = token.match[1];\n\tif(node.tag.slice(1).indexOf(\"$\") !== -1) {\n\t\treturn null;\n\t}\n\tif(node.tag.charAt(0) === \"$\") {\n\t\tnode.type = node.tag.substr(1);\n\t}\n\tpos = token.end;\n\t// Check that the tag is terminated by a space, / or >\n\tif(!$tw.utils.parseWhiteSpace(source,pos) && !(source.charAt(pos) === \"/\") && !(source.charAt(pos) === \">\") ) {\n\t\treturn null;\n\t}\n\t// Process attributes\n\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\twhile(attribute) {\n\t\tnode.attributes[attribute.name] = attribute;\n\t\tpos = attribute.end;\n\t\t// Get the next attribute\n\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a closing slash\n\ttoken = $tw.utils.parseTokenString(source,pos,\"/\");\n\tif(token) {\n\t\tpos = token.end;\n\t\tnode.isSelfClosing = true;\n\t}\n\t// Look for a greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Check for a required line break\n\tif(options.requireLineBreak) {\n\t\ttoken = $tw.utils.parseTokenRegExp(source,pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t\tif(!token) {\n\t\t\treturn null;\n\t\t}\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\nexports.findNextTag = function(source,pos,options) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /<([a-zA-Z\\-\\$]+)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseTag(source,match.index,options);\n\t\t// Return success\n\t\tif(tag && this.isLegalTag(tag)) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\nexports.isLegalTag = function(tag) {\n\t// Widgets are always OK\n\tif(tag.type !== \"element\") {\n\t\treturn true;\n\t// If it's an HTML tag that starts with a dash then it's not legal\n\t} else if(tag.tag.charAt(0) === \"-\") {\n\t\treturn false;\n\t} else {\n\t\t// Otherwise it's OK\n\t\treturn true;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/image.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/image.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/image.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for embedding images. For example:\n\n```\n[img[https://tiddlywiki.com/fractalveg.jpg]]\n[img width=23 height=24 [https://tiddlywiki.com/fractalveg.jpg]]\n[img width={{!!width}} height={{!!height}} [https://tiddlywiki.com/fractalveg.jpg]]\n[img[Description of image|https://tiddlywiki.com/fractalveg.jpg]]\n[img[TiddlerTitle]]\n[img[Description of image|TiddlerTitle]]\n```\n\nGenerates the `<$image>` widget.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"image\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextImage = this.findNextImage(this.parser.source,startPos);\n\treturn this.nextImage ? this.nextImage.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextImage.end;\n\tvar node = {\n\t\ttype: \"image\",\n\t\tattributes: this.nextImage.attributes\n\t};\n\treturn [node];\n};\n\n/*\nFind the next image from the current position\n*/\nexports.findNextImage = function(source,pos) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /(\\[img)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseImage(source,match.index);\n\t\t// Return success\n\t\tif(tag) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an image at the specified position. Returns null if not found, otherwise returns {type: \"image\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseImage = function(source,pos) {\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"image\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[img`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[img\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Process attributes\n\tif(source.charAt(pos) !== \"[\") {\n\t\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\t\twhile(attribute) {\n\t\t\tnode.attributes[attribute.name] = attribute;\n\t\t\tpos = attribute.end;\n\t\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t\tif(source.charAt(pos) !== \"[\") {\n\t\t\t\t// Get the next attribute\n\t\t\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t\t\t} else {\n\t\t\t\tattribute = null;\n\t\t\t}\n\t\t}\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[` after the attributes\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the source up to the terminating `]]`\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,/(?:([^|\\]]*?)\\|)?([^\\]]+?)\\]\\]/g);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\tif(token.match[1]) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: token.match[1].trim()};\n\t}\n\tnode.attributes.source = {type: \"string\", value: (token.match[2] || \"\").trim()};\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/import.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/import.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/import.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for importing variable definitions\n\n```\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"import\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\import[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\tvar self = this;\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the filter terminated by a line break\n\tvar reMatch = /(.*)(\\r?\\n)|$/mg;\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\tthis.parser.pos = reMatch.lastIndex;\n\t// Parse tree nodes to return\n\treturn [{\n\t\ttype: \"importvariables\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: match[1]}\n\t\t},\n\t\tchildren: []\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/list.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/list.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/list.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for lists. For example:\n\n```\n* This is an unordered list\n* It has two items\n\n# This is a numbered list\n## With a subitem\n# And a third item\n\n; This is a term that is being defined\n: This is the definition of that term\n```\n\nNote that lists can be nested arbitrarily:\n\n```\n#** One\n#* Two\n#** Three\n#**** Four\n#**# Five\n#**## Six\n## Seven\n### Eight\n## Nine\n```\n\nA CSS class can be applied to a list item as follows:\n\n```\n* List item one\n*.active List item two has the class `active`\n* List item three\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"list\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /([\\*#;:>]+)/mg;\n};\n\nvar listTypes = {\n\t\"*\": {listTag: \"ul\", itemTag: \"li\"},\n\t\"#\": {listTag: \"ol\", itemTag: \"li\"},\n\t\";\": {listTag: \"dl\", itemTag: \"dt\"},\n\t\":\": {listTag: \"dl\", itemTag: \"dd\"},\n\t\">\": {listTag: \"blockquote\", itemTag: \"div\"}\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Array of parse tree nodes for the previous row of the list\n\tvar listStack = [];\n\t// Cycle through the items in the list\n\twhile(true) {\n\t\t// Match the list marker\n\t\tvar reMatch = /([\\*#;:>]+)/mg;\n\t\treMatch.lastIndex = this.parser.pos;\n\t\tvar match = reMatch.exec(this.parser.source);\n\t\tif(!match || match.index !== this.parser.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check whether the list type of the top level matches\n\t\tvar listInfo = listTypes[match[0].charAt(0)];\n\t\tif(listStack.length > 0 && listStack[0].tag !== listInfo.listTag) {\n\t\t\tbreak;\n\t\t}\n\t\t// Move past the list marker\n\t\tthis.parser.pos = match.index + match[0].length;\n\t\t// Walk through the list markers for the current row\n\t\tfor(var t=0; t<match[0].length; t++) {\n\t\t\tlistInfo = listTypes[match[0].charAt(t)];\n\t\t\t// Remove any stacked up element if we can't re-use it because the list type doesn't match\n\t\t\tif(listStack.length > t && listStack[t].tag !== listInfo.listTag) {\n\t\t\t\tlistStack.splice(t,listStack.length - t);\n\t\t\t}\n\t\t\t// Construct the list element or reuse the previous one at this level\n\t\t\tif(listStack.length <= t) {\n\t\t\t\tvar listElement = {type: \"element\", tag: listInfo.listTag, children: [\n\t\t\t\t\t{type: \"element\", tag: listInfo.itemTag, children: []}\n\t\t\t\t]};\n\t\t\t\t// Link this list element into the last child item of the parent list item\n\t\t\t\tif(t) {\n\t\t\t\t\tvar prevListItem = listStack[t-1].children[listStack[t-1].children.length-1];\n\t\t\t\t\tprevListItem.children.push(listElement);\n\t\t\t\t}\n\t\t\t\t// Save this element in the stack\n\t\t\t\tlistStack[t] = listElement;\n\t\t\t} else if(t === (match[0].length - 1)) {\n\t\t\t\tlistStack[t].children.push({type: \"element\", tag: listInfo.itemTag, children: []});\n\t\t\t}\n\t\t}\n\t\tif(listStack.length > match[0].length) {\n\t\t\tlistStack.splice(match[0].length,listStack.length - match[0].length);\n\t\t}\n\t\t// Process the body of the list item into the last list item\n\t\tvar lastListChildren = listStack[listStack.length-1].children,\n\t\t\tlastListItem = lastListChildren[lastListChildren.length-1],\n\t\t\tclasses = this.parser.parseClasses();\n\t\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\t\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t\tlastListItem.children.push.apply(lastListItem.children,tree);\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(lastListItem,classes.join(\" \"));\n\t\t}\n\t\t// Consume any whitespace following the list item\n\t\tthis.parser.skipWhitespace();\n\t}\n\t// Return the root element of the list\n\treturn [listStack[0]];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrocallblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/macrocallblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for block macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^>\\s]+)(?:\\s*)((?:[^>]|(?:>(?!>)))*?)>>(?:\\r?\\n|$)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params,\n\t\tisBlock: true\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrocallinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/macrocallinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^\\s>]+)\\s*([\\s\\S]*?)>>/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5]|| paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrodef.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/macrodef.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrodef.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for macro definitions\n\n```\n\\define name(param:defaultvalue,param2:defaultvalue)\ndefinition text, including $param$ markers\n\\end\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrodef\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\define\\s+([^(\\s]+)\\(\\s*([^)]*)\\)(\\s*\\r?\\n)?/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the macro name and parameters\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the parameters\n\tvar paramString = this.match[2],\n\t\tparams = [];\n\tif(paramString !== \"\") {\n\t\tvar reParam = /\\s*([A-Za-z0-9\\-_]+)(?:\\s*:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))?/mg,\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\twhile(paramMatch) {\n\t\t\t// Save the parameter details\n\t\t\tvar paramInfo = {name: paramMatch[1]},\n\t\t\t\tdefaultValue = paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6];\n\t\t\tif(defaultValue) {\n\t\t\t\tparamInfo[\"default\"] = defaultValue;\n\t\t\t}\n\t\t\tparams.push(paramInfo);\n\t\t\t// Look for the next parameter\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\t}\n\t}\n\t// Is this a multiline definition?\n\tvar reEnd;\n\tif(this.match[3]) {\n\t\t// If so, the end of the body is marked with \\end\n\t\treEnd = /(\\r?\\n\\\\end[^\\S\\n\\r]*(?:$|\\r?\\n))/mg;\n\t} else {\n\t\t// Otherwise, the end of the definition is marked by the end of the line\n\t\treEnd = /($|\\r?\\n)/mg;\n\t\t// Move past any whitespace\n\t\tthis.parser.pos = $tw.utils.skipWhiteSpace(this.parser.source,this.parser.pos);\n\t}\n\t// Find the end of the definition\n\treEnd.lastIndex = this.parser.pos;\n\tvar text,\n\t\tendMatch = reEnd.exec(this.parser.source);\n\tif(endMatch) {\n\t\ttext = this.parser.source.substring(this.parser.pos,endMatch.index);\n\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t} else {\n\t\t// We didn't find the end of the definition, so we'll make it blank\n\t\ttext = \"\";\n\t}\n\t// Save the macro definition\n\treturn [{\n\t\ttype: \"set\",\n\t\tattributes: {\n\t\t\tname: {type: \"string\", value: this.match[1]},\n\t\t\tvalue: {type: \"string\", value: text}\n\t\t},\n\t\tchildren: [],\n\t\tparams: params,\n\t\tisMacroDefinition: true\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/prettyextlink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/prettyextlink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettyextlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\n[ext[https://tiddlywiki.com/fractalveg.jpg]]\n[ext[Tooltip|https://tiddlywiki.com/fractalveg.jpg]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettyextlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextLink = this.findNextLink(this.parser.source,startPos);\n\treturn this.nextLink ? this.nextLink.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextLink.end;\n\treturn [this.nextLink];\n};\n\n/*\nFind the next link from the current position\n*/\nexports.findNextLink = function(source,pos) {\n\t// A regexp for finding candidate links\n\tvar reLookahead = /(\\[ext\\[)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a link\n\t\tvar link = this.parseLink(source,match.index);\n\t\t// Return success\n\t\tif(link) {\n\t\t\treturn link;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an link at the specified position. Returns null if not found, otherwise returns {type: \"element\", tag: \"a\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseLink = function(source,pos) {\n\tvar token,\n\t\ttextNode = {\n\t\t\ttype: \"text\"\n\t\t},\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tstart: pos,\n\t\t\tattributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t},\n\t\t\tchildren: [textNode]\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[ext[`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[ext[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Look ahead for the terminating `]]`\n\tvar closePos = source.indexOf(\"]]\",pos);\n\tif(closePos === -1) {\n\t\treturn null;\n\t}\n\t// Look for a `|` separating the tooltip\n\tvar splitPos = source.indexOf(\"|\",pos);\n\tif(splitPos === -1 || splitPos > closePos) {\n\t\tsplitPos = null;\n\t}\n\t// Pull out the tooltip and URL\n\tvar tooltip, URL;\n\tif(splitPos) {\n\t\tURL = source.substring(splitPos + 1,closePos).trim();\n\t\ttextNode.text = source.substring(pos,splitPos).trim();\n\t} else {\n\t\tURL = source.substring(pos,closePos).trim();\n\t\ttextNode.text = URL;\n\t}\n\tnode.attributes.href = {type: \"string\", value: URL};\n\tnode.attributes.target = {type: \"string\", value: \"_blank\"};\n\tnode.attributes.rel = {type: \"string\", value: \"noopener noreferrer\"};\n\t// Update the end position\n\tnode.end = closePos + 2;\n\treturn node;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/prettylink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/prettylink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettylink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for pretty links. For example:\n\n```\n[[Introduction]]\n\n[[Link description|TiddlerTitle]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettylink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\[\\[(.*?)(?:\\|(.*?))?\\]\\]/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Process the link\n\tvar text = this.match[1],\n\t\tlink = this.match[2] || text;\n\tif($tw.utils.isLinkExternal(link)) {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: link},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: link}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/quoteblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/quoteblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/quoteblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for quote blocks. For example:\n\n```\n\t<<<.optionalClass(es) optional cited from\n\ta quote\n\t<<<\n\t\n\t<<<.optionalClass(es)\n\ta quote\n\t<<< optional cited from\n```\n\nQuotes can be quoted by putting more <s\n\n```\n\t<<<\n\tQuote Level 1\n\t\n\t<<<<\n\tQuoteLevel 2\n\t<<<<\n\t\n\t<<<\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"quoteblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(<<<+)/mg;\n};\n\nexports.parse = function() {\n\tvar classes = [\"tc-quote\"];\n\t// Get all the details of the match\n\tvar reEndString = \"^\" + this.match[1] + \"(?!<)\";\n\t// Move past the <s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\n\t// Parse any classes, whitespace and then the optional cite itself\n\tclasses.push.apply(classes, this.parser.parseClasses());\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar cite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// before handling the cite, parse the body of the quote\n\tvar tree= this.parser.parseBlocks(reEndString);\n\t// If we got a cite, put it before the text\n\tif(cite.length > 0) {\n\t\ttree.unshift({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Parse any optional cite\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tcite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// If we got a cite, push it\n\tif(cite.length > 0) {\n\t\ttree.push({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Return the blockquote element\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"blockquote\",\n\t\tattributes: {\n\t\t\tclass: { type: \"string\", value: classes.join(\" \") },\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/rules.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/rules.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/rules.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for rules specifications\n\n```\n\\rules except ruleone ruletwo rulethree\n\\rules only ruleone ruletwo rulethree\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"rules\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\rules[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse whitespace delimited tokens terminated by a line break\n\tvar reMatch = /[^\\S\\n]*(\\S+)|(\\r?\\n)/mg,\n\t\ttokens = [];\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\twhile(match && match.index === this.parser.pos) {\n\t\tthis.parser.pos = reMatch.lastIndex;\n\t\t// Exit if we've got the line break\n\t\tif(match[2]) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the token\n\t\tif(match[1]) {\n\t\t\ttokens.push(match[1]);\n\t\t}\n\t\t// Match the next token\n\t\tmatch = reMatch.exec(this.parser.source);\n\t}\n\t// Process the tokens\n\tif(tokens.length > 0) {\n\t\tthis.parser.amendRules(tokens[0],tokens.slice(1));\n\t}\n\t// No parse tree nodes to return\n\treturn [];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/styleblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/styleblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for assigning styles and classes to paragraphs and other blocks. For example:\n\n```\n@@.myClass\n@@background-color:red;\nThis paragraph will have the CSS class `myClass`.\n\n* The `<ul>` around this list will also have the class `myClass`\n* List item 2\n\n@@\n```\n\nNote that classes and styles can be mixed subject to the rule that styles must precede classes. For example\n\n```\n@@.myFirstClass.mySecondClass\n@@width:100px;.myThirdClass\nThis is a paragraph\n@@\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(?:\\.([^\\r\\n\\s]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEndString = \"^@@(?:\\\\r?\\\\n)?\";\n\tvar classes = [], styles = [];\n\tdo {\n\t\t// Get the class and style\n\t\tif(this.match[1]) {\n\t\t\tstyles.push(this.match[1]);\n\t\t}\n\t\tif(this.match[2]) {\n\t\t\tclasses.push(this.match[2].split(\".\").join(\" \"));\n\t\t}\n\t\t// Move past the match\n\t\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\t// Look for another line of classes and styles\n\t\tthis.match = this.matchRegExp.exec(this.parser.source);\n\t} while(this.match && this.match.index === this.parser.pos);\n\t// Parse the body\n\tvar tree = this.parser.parseBlocks(reEndString);\n\tfor(var t=0; t<tree.length; t++) {\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(tree[t],classes.join(\" \"));\n\t\t}\n\t\tif(styles.length > 0) {\n\t\t\t$tw.utils.addAttributeToParseTreeNode(tree[t],\"style\",styles.join(\"\"));\n\t\t}\n\t}\n\treturn tree;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/styleinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/styleinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for assigning styles and classes to inline runs. For example:\n\n```\n@@.myClass This is some text with a class@@\n@@background-color:red;This is some text with a background colour@@\n@@width:100px;.myClass This is some text with a class and a width@@\n```\n\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(\\.(?:[^\\r\\n\\s]+)\\s+)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /@@/g;\n\t// Get the styles and class\n\tvar stylesString = this.match[1],\n\t\tclassString = this.match[2] ? this.match[2].split(\".\").join(\" \") : undefined;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the run up to the terminator\n\tvar tree = this.parser.parseInlineRun(reEnd,{eatTerminator: true});\n\t// Return the classed span\n\tvar node = {\n\t\ttype: \"element\",\n\t\ttag: \"span\",\n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: \"tc-inline-style\"}\n\t\t},\n\t\tchildren: tree\n\t};\n\tif(classString) {\n\t\t$tw.utils.addClassToParseTreeNode(node,classString);\n\t}\n\tif(stylesString) {\n\t\t$tw.utils.addAttributeToParseTreeNode(node,\"style\",stylesString);\n\t}\n\treturn [node];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/syslink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/syslink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/syslink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for system tiddler links.\nCan be suppressed preceding them with `~`.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"syslink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp(\n\t\t\"~?\\\\$:\\\\/[\" +\n\t\t$tw.config.textPrimitives.anyLetter.substr(1,$tw.config.textPrimitives.anyLetter.length - 2) +\n\t\t\"\\/._-]+\",\n\t\t\"mg\"\n\t);\n};\n\nexports.parse = function() {\n\tvar match = this.match[0];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(match.substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: match.substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: match}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: match\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/table.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/table.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/table.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for tables.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"table\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\|(?:[^\\n]*)\\|(?:[fhck]?)\\r?(?:\\n|$)/mg;\n};\n\nvar processRow = function(prevColumns) {\n\tvar cellRegExp = /(?:\\|([^\\n\\|]*)\\|)|(\\|[fhck]?\\r?(?:\\n|$))/mg,\n\t\tcellTermRegExp = /((?:\\x20*)\\|)/mg,\n\t\ttree = [],\n\t\tcol = 0,\n\t\tcolSpanCount = 1,\n\t\tprevCell,\n\t\tvAlign;\n\t// Match a single cell\n\tcellRegExp.lastIndex = this.parser.pos;\n\tvar cellMatch = cellRegExp.exec(this.parser.source);\n\twhile(cellMatch && cellMatch.index === this.parser.pos) {\n\t\tif(cellMatch[1] === \"~\") {\n\t\t\t// Rowspan\n\t\t\tvar last = prevColumns[col];\n\t\t\tif(last) {\n\t\t\t\tlast.rowSpanCount++;\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"rowspan\",last.rowSpanCount);\n\t\t\t\tvAlign = $tw.utils.getAttributeValueFromParseTreeNode(last.element,\"valign\",\"center\");\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"valign\",vAlign);\n\t\t\t\tif(colSpanCount > 1) {\n\t\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"colspan\",colSpanCount);\n\t\t\t\t\tcolSpanCount = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \">\") {\n\t\t\t// Colspan\n\t\t\tcolSpanCount++;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \"<\" && prevCell) {\n\t\t\tcolSpanCount = 1 + $tw.utils.getAttributeValueFromParseTreeNode(prevCell,\"colspan\",1);\n\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\tcolSpanCount = 1;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[2]) {\n\t\t\t// End of row\n\t\t\tif(prevCell && colSpanCount > 1) {\n\t\t\t\tif(prevCell.attributes && prevCell.attributes && prevCell.attributes.colspan) {\n\t\t\t\t\t\tcolSpanCount += prevCell.attributes.colspan.value;\n\t\t\t\t} else {\n\t\t\t\t\tcolSpanCount -= 1;\n\t\t\t\t}\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\t}\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t\tbreak;\n\t\t} else {\n\t\t\t// For ordinary cells, step beyond the opening `|`\n\t\t\tthis.parser.pos++;\n\t\t\t// Look for a space at the start of the cell\n\t\t\tvar spaceLeft = false;\n\t\t\tvAlign = null;\n\t\t\tif(this.parser.source.substr(this.parser.pos).search(/^\\^([^\\^]|\\^\\^)/) === 0) {\n\t\t\t\tvAlign = \"top\";\n\t\t\t} else if(this.parser.source.substr(this.parser.pos).search(/^,([^,]|,,)/) === 0) {\n\t\t\t\tvAlign = \"bottom\";\n\t\t\t}\n\t\t\tif(vAlign) {\n\t\t\t\tthis.parser.pos++;\n\t\t\t}\n\t\t\tvar chr = this.parser.source.substr(this.parser.pos,1);\n\t\t\twhile(chr === \" \") {\n\t\t\t\tspaceLeft = true;\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tchr = this.parser.source.substr(this.parser.pos,1);\n\t\t\t}\n\t\t\t// Check whether this is a heading cell\n\t\t\tvar cell;\n\t\t\tif(chr === \"!\") {\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tcell = {type: \"element\", tag: \"th\", children: []};\n\t\t\t} else {\n\t\t\t\tcell = {type: \"element\", tag: \"td\", children: []};\n\t\t\t}\n\t\t\ttree.push(cell);\n\t\t\t// Record information about this cell\n\t\t\tprevCell = cell;\n\t\t\tprevColumns[col] = {rowSpanCount:1,element:cell};\n\t\t\t// Check for a colspan\n\t\t\tif(colSpanCount > 1) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"colspan\",colSpanCount);\n\t\t\t\tcolSpanCount = 1;\n\t\t\t}\n\t\t\t// Parse the cell\n\t\t\tcell.children = this.parser.parseInlineRun(cellTermRegExp,{eatTerminator: true});\n\t\t\t// Set the alignment for the cell\n\t\t\tif(vAlign) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"valign\",vAlign);\n\t\t\t}\n\t\t\tif(this.parser.source.substr(this.parser.pos - 2,1) === \" \") { // spaceRight\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",spaceLeft ? \"center\" : \"left\");\n\t\t\t} else if(spaceLeft) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",\"right\");\n\t\t\t}\n\t\t\t// Move back to the closing `|`\n\t\t\tthis.parser.pos--;\n\t\t}\n\t\tcol++;\n\t\tcellRegExp.lastIndex = this.parser.pos;\n\t\tcellMatch = cellRegExp.exec(this.parser.source);\n\t}\n\treturn tree;\n};\n\nexports.parse = function() {\n\tvar rowContainerTypes = {\"c\":\"caption\", \"h\":\"thead\", \"\":\"tbody\", \"f\":\"tfoot\"},\n\t\ttable = {type: \"element\", tag: \"table\", children: []},\n\t\trowRegExp = /^\\|([^\\n]*)\\|([fhck]?)\\r?(?:\\n|$)/mg,\n\t\trowTermRegExp = /(\\|(?:[fhck]?)\\r?(?:\\n|$))/mg,\n\t\tprevColumns = [],\n\t\tcurrRowType,\n\t\trowContainer,\n\t\trowCount = 0;\n\t// Match the row\n\trowRegExp.lastIndex = this.parser.pos;\n\tvar rowMatch = rowRegExp.exec(this.parser.source);\n\twhile(rowMatch && rowMatch.index === this.parser.pos) {\n\t\tvar rowType = rowMatch[2];\n\t\t// Check if it is a class assignment\n\t\tif(rowType === \"k\") {\n\t\t\t$tw.utils.addClassToParseTreeNode(table,rowMatch[1]);\n\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t} else {\n\t\t\t// Otherwise, create a new row if this one is of a different type\n\t\t\tif(rowType !== currRowType) {\n\t\t\t\trowContainer = {type: \"element\", tag: rowContainerTypes[rowType], children: []};\n\t\t\t\ttable.children.push(rowContainer);\n\t\t\t\tcurrRowType = rowType;\n\t\t\t}\n\t\t\t// Is this a caption row?\n\t\t\tif(currRowType === \"c\") {\n\t\t\t\t// If so, move past the opening `|` of the row\n\t\t\t\tthis.parser.pos++;\n\t\t\t\t// Move the caption to the first row if it isn't already\n\t\t\t\tif(table.children.length !== 1) {\n\t\t\t\t\ttable.children.pop(); // Take rowContainer out of the children array\n\t\t\t\t\ttable.children.splice(0,0,rowContainer); // Insert it at the bottom\t\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t// Set the alignment - TODO: figure out why TW did this\n//\t\t\t\trowContainer.attributes.align = rowCount === 0 ? \"top\" : \"bottom\";\n\t\t\t\t// Parse the caption\n\t\t\t\trowContainer.children = this.parser.parseInlineRun(rowTermRegExp,{eatTerminator: true});\n\t\t\t} else {\n\t\t\t\t// Create the row\n\t\t\t\tvar theRow = {type: \"element\", tag: \"tr\", children: []};\n\t\t\t\t$tw.utils.addClassToParseTreeNode(theRow,rowCount%2 ? \"oddRow\" : \"evenRow\");\n\t\t\t\trowContainer.children.push(theRow);\n\t\t\t\t// Process the row\n\t\t\t\ttheRow.children = processRow.call(this,prevColumns);\n\t\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t\t\t// Increment the row count\n\t\t\t\trowCount++;\n\t\t\t}\n\t\t}\n\t\trowMatch = rowRegExp.exec(this.parser.source);\n\t}\n\treturn [table];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/transcludeblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/transcludeblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {},\n\t\t\tisBlock: true\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tisBlock: true,\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/transcludeinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/transcludeinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {}\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/typedblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/typedblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/typedblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for typed blocks. For example:\n\n```\n$$$.js\nThis will be rendered as JavaScript\n$$$\n\n$$$.svg\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"150\" height=\"100\">\n <circle cx=\"100\" cy=\"50\" r=\"40\" stroke=\"black\" stroke-width=\"2\" fill=\"red\" />\n</svg>\n$$$\n\n$$$text/vnd.tiddlywiki>text/html\nThis will be rendered as an //HTML representation// of WikiText\n$$$\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.name = \"typedblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\$\\$\\$([^ >\\r\\n]*)(?: *> *([^ \\r\\n]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /\\r?\\n\\$\\$\\$\\r?(?:\\n|$)/mg;\n\t// Save the type\n\tvar parseType = this.match[1],\n\t\trenderType = this.match[2];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Parse the block according to the specified type\n\tvar parser = this.parser.wiki.parseText(parseType,text,{defaultType: \"text/plain\"});\n\t// If there's no render type, just return the parse tree\n\tif(!renderType) {\n\t\treturn parser.tree;\n\t} else {\n\t\t// Otherwise, render to the rendertype and return in a <PRE> tag\n\t\tvar widgetNode = this.parser.wiki.makeWidget(parser),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\ttext = renderType === \"text/html\" ? container.innerHTML : container.textContent;\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"pre\",\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/whitespace.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/whitespace.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/whitespace.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for whitespace specifications\n\n```\n\\whitespace trim\n\\whitespace notrim\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"whitespace\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\whitespace[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\tvar self = this;\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse whitespace delimited tokens terminated by a line break\n\tvar reMatch = /[^\\S\\n]*(\\S+)|(\\r?\\n)/mg,\n\t\ttokens = [];\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\twhile(match && match.index === this.parser.pos) {\n\t\tthis.parser.pos = reMatch.lastIndex;\n\t\t// Exit if we've got the line break\n\t\tif(match[2]) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the token\n\t\tif(match[1]) {\n\t\t\ttokens.push(match[1]);\n\t\t}\n\t\t// Match the next token\n\t\tmatch = reMatch.exec(this.parser.source);\n\t}\n\t// Process the tokens\n\t$tw.utils.each(tokens,function(token) {\n\t\tswitch(token) {\n\t\t\tcase \"trim\":\n\t\t\t\tself.parser.configTrimWhiteSpace = true;\n\t\t\t\tbreak;\n\t\t\tcase \"notrim\":\n\t\t\t\tself.parser.configTrimWhiteSpace = false;\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t// No parse tree nodes to return\n\treturn [];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/wikilink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/wikilink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikilink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for wiki links. For example:\n\n```\nAWikiLink\nAnotherLink\n~SuppressedLink\n```\n\nPrecede a camel case word with `~` to prevent it from being recognised as a link.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"wikilink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp($tw.config.textPrimitives.unWikiLink + \"?\" + $tw.config.textPrimitives.wikiLink,\"mg\");\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get the details of the match\n\tvar linkText = this.match[0];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// If the link starts with the unwikilink character then just output it as plain text\n\tif(linkText.substr(0,1) === $tw.config.textPrimitives.unWikiLink) {\n\t\treturn [{type: \"text\", text: linkText.substr(1)}];\n\t}\n\t// If the link has been preceded with a blocked letter then don't treat it as a link\n\tif(this.match.index > 0) {\n\t\tvar preRegExp = new RegExp($tw.config.textPrimitives.blockPrefixLetters,\"mg\");\n\t\tpreRegExp.lastIndex = this.match.index-1;\n\t\tvar preMatch = preRegExp.exec(this.parser.source);\n\t\tif(preMatch && preMatch.index === this.match.index-1) {\n\t\t\treturn [{type: \"text\", text: linkText}];\n\t\t}\n\t}\n\treturn [{\n\t\ttype: \"link\",\n\t\tattributes: {\n\t\t\tto: {type: \"string\", value: linkText}\n\t\t},\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: linkText\n\t\t}]\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/wikiparser.js": {
"title": "$:/core/modules/parsers/wikiparser/wikiparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/wikiparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe wiki text parser processes blocks of source text into a parse tree.\n\nThe parse tree is made up of nested arrays of these JavaScript objects:\n\n\t{type: \"element\", tag: <string>, attributes: {}, children: []} - an HTML element\n\t{type: \"text\", text: <string>} - a text node\n\t{type: \"entity\", value: <string>} - an entity\n\t{type: \"raw\", html: <string>} - raw HTML\n\nAttributes are stored as hashmaps of the following objects:\n\n\t{type: \"string\", value: <string>} - literal string\n\t{type: \"indirect\", textReference: <textReference>} - indirect through a text reference\n\t{type: \"macro\", macro: <TBD>} - indirect through a macro invocation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar WikiParser = function(type,text,options) {\n\tthis.wiki = options.wiki;\n\tvar self = this;\n\t// Check for an externally linked tiddler\n\tif($tw.browser && (text || \"\") === \"\" && options._canonical_uri) {\n\t\tthis.loadRemoteTiddler(options._canonical_uri);\n\t\ttext = $tw.language.getRawString(\"LazyLoadingWarning\");\n\t}\n\t// Initialise the classes if we don't have them already\n\tif(!this.pragmaRuleClasses) {\n\t\tWikiParser.prototype.pragmaRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"pragma\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.pragmaRuleClasses,\"$:/config/WikiParserRules/Pragmas/\");\n\t}\n\tif(!this.blockRuleClasses) {\n\t\tWikiParser.prototype.blockRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"block\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.blockRuleClasses,\"$:/config/WikiParserRules/Block/\");\n\t}\n\tif(!this.inlineRuleClasses) {\n\t\tWikiParser.prototype.inlineRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"inline\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.inlineRuleClasses,\"$:/config/WikiParserRules/Inline/\");\n\t}\n\t// Save the parse text\n\tthis.type = type || \"text/vnd.tiddlywiki\";\n\tthis.source = text || \"\";\n\tthis.sourceLength = this.source.length;\n\t// Flag for ignoring whitespace\n\tthis.configTrimWhiteSpace = false;\n\t// Set current parse position\n\tthis.pos = 0;\n\t// Instantiate the pragma parse rules\n\tthis.pragmaRules = this.instantiateRules(this.pragmaRuleClasses,\"pragma\",0);\n\t// Instantiate the parser block and inline rules\n\tthis.blockRules = this.instantiateRules(this.blockRuleClasses,\"block\",0);\n\tthis.inlineRules = this.instantiateRules(this.inlineRuleClasses,\"inline\",0);\n\t// Parse any pragmas\n\tthis.tree = [];\n\tvar topBranch = this.parsePragmas();\n\t// Parse the text into inline runs or blocks\n\tif(options.parseAsInline) {\n\t\ttopBranch.push.apply(topBranch,this.parseInlineRun());\n\t} else {\n\t\ttopBranch.push.apply(topBranch,this.parseBlocks());\n\t}\n\t// Return the parse tree\n};\n\n/*\n*/\nWikiParser.prototype.loadRemoteTiddler = function(url) {\n\tvar self = this;\n\t$tw.utils.httpRequest({\n\t\turl: url,\n\t\ttype: \"GET\",\n\t\tcallback: function(err,data) {\n\t\t\tif(!err) {\n\t\t\t\tvar tiddlers = self.wiki.deserializeTiddlers(\".tid\",data,self.wiki.getCreationFields());\n\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\ttiddler[\"_canonical_uri\"] = url;\n\t\t\t\t});\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tself.wiki.addTiddlers(tiddlers);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\n*/\nWikiParser.prototype.setupRules = function(proto,configPrefix) {\n\tvar self = this;\n\tif(!$tw.safemode) {\n\t\t$tw.utils.each(proto,function(object,name) {\n\t\t\tif(self.wiki.getTiddlerText(configPrefix + name,\"enable\") !== \"enable\") {\n\t\t\t\tdelete proto[name];\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nInstantiate an array of parse rules\n*/\nWikiParser.prototype.instantiateRules = function(classes,type,startPos) {\n\tvar rulesInfo = [],\n\t\tself = this;\n\t$tw.utils.each(classes,function(RuleClass) {\n\t\t// Instantiate the rule\n\t\tvar rule = new RuleClass(self);\n\t\trule.is = {};\n\t\trule.is[type] = true;\n\t\trule.init(self);\n\t\tvar matchIndex = rule.findNextMatch(startPos);\n\t\tif(matchIndex !== undefined) {\n\t\t\trulesInfo.push({\n\t\t\t\trule: rule,\n\t\t\t\tmatchIndex: matchIndex\n\t\t\t});\n\t\t}\n\t});\n\treturn rulesInfo;\n};\n\n/*\nSkip any whitespace at the current position. Options are:\n\ttreatNewlinesAsNonWhitespace: true if newlines are NOT to be treated as whitespace\n*/\nWikiParser.prototype.skipWhitespace = function(options) {\n\toptions = options || {};\n\tvar whitespaceRegExp = options.treatNewlinesAsNonWhitespace ? /([^\\S\\n]+)/mg : /(\\s+)/mg;\n\twhitespaceRegExp.lastIndex = this.pos;\n\tvar whitespaceMatch = whitespaceRegExp.exec(this.source);\n\tif(whitespaceMatch && whitespaceMatch.index === this.pos) {\n\t\tthis.pos = whitespaceRegExp.lastIndex;\n\t}\n};\n\n/*\nGet the next match out of an array of parse rule instances\n*/\nWikiParser.prototype.findNextMatch = function(rules,startPos) {\n\t// Find the best matching rule by finding the closest match position\n\tvar matchingRule,\n\t\tmatchingRulePos = this.sourceLength;\n\t// Step through each rule\n\tfor(var t=0; t<rules.length; t++) {\n\t\tvar ruleInfo = rules[t];\n\t\t// Ask the rule to get the next match if we've moved past the current one\n\t\tif(ruleInfo.matchIndex !== undefined && ruleInfo.matchIndex < startPos) {\n\t\t\truleInfo.matchIndex = ruleInfo.rule.findNextMatch(startPos);\n\t\t}\n\t\t// Adopt this match if it's closer than the current best match\n\t\tif(ruleInfo.matchIndex !== undefined && ruleInfo.matchIndex <= matchingRulePos) {\n\t\t\tmatchingRule = ruleInfo;\n\t\t\tmatchingRulePos = ruleInfo.matchIndex;\n\t\t}\n\t}\n\treturn matchingRule;\n};\n\n/*\nParse any pragmas at the beginning of a block of parse text\n*/\nWikiParser.prototype.parsePragmas = function() {\n\tvar currentTreeBranch = this.tree;\n\twhile(true) {\n\t\t// Skip whitespace\n\t\tthis.skipWhitespace();\n\t\t// Check for the end of the text\n\t\tif(this.pos >= this.sourceLength) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check if we've arrived at a pragma rule match\n\t\tvar nextMatch = this.findNextMatch(this.pragmaRules,this.pos);\n\t\t// If not, just exit\n\t\tif(!nextMatch || nextMatch.matchIndex !== this.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the pragma rule\n\t\tvar subTree = nextMatch.rule.parse();\n\t\tif(subTree.length > 0) {\n\t\t\t// Quick hack; we only cope with a single parse tree node being returned, which is true at the moment\n\t\t\tcurrentTreeBranch.push.apply(currentTreeBranch,subTree);\n\t\t\tsubTree[0].children = [];\n\t\t\tcurrentTreeBranch = subTree[0].children;\n\t\t}\n\t}\n\treturn currentTreeBranch;\n};\n\n/*\nParse a block from the current position\n\tterminatorRegExpString: optional regular expression string that identifies the end of plain paragraphs. Must not include capturing parenthesis\n*/\nWikiParser.prototype.parseBlock = function(terminatorRegExpString) {\n\tvar terminatorRegExp = terminatorRegExpString ? new RegExp(\"(\" + terminatorRegExpString + \"|\\\\r?\\\\n\\\\r?\\\\n)\",\"mg\") : /(\\r?\\n\\r?\\n)/mg;\n\tthis.skipWhitespace();\n\tif(this.pos >= this.sourceLength) {\n\t\treturn [];\n\t}\n\t// Look for a block rule that applies at the current position\n\tvar nextMatch = this.findNextMatch(this.blockRules,this.pos);\n\tif(nextMatch && nextMatch.matchIndex === this.pos) {\n\t\treturn nextMatch.rule.parse();\n\t}\n\t// Treat it as a paragraph if we didn't find a block rule\n\treturn [{type: \"element\", tag: \"p\", children: this.parseInlineRun(terminatorRegExp)}];\n};\n\n/*\nParse a series of blocks of text until a terminating regexp is encountered or the end of the text\n\tterminatorRegExpString: terminating regular expression\n*/\nWikiParser.prototype.parseBlocks = function(terminatorRegExpString) {\n\tif(terminatorRegExpString) {\n\t\treturn this.parseBlocksTerminated(terminatorRegExpString);\n\t} else {\n\t\treturn this.parseBlocksUnterminated();\n\t}\n};\n\n/*\nParse a block from the current position to the end of the text\n*/\nWikiParser.prototype.parseBlocksUnterminated = function() {\n\tvar tree = [];\n\twhile(this.pos < this.sourceLength) {\n\t\ttree.push.apply(tree,this.parseBlock());\n\t}\n\treturn tree;\n};\n\n/*\nParse blocks of text until a terminating regexp is encountered\n*/\nWikiParser.prototype.parseBlocksTerminated = function(terminatorRegExpString) {\n\tvar terminatorRegExp = new RegExp(\"(\" + terminatorRegExpString + \")\",\"mg\"),\n\t\ttree = [];\n\t// Skip any whitespace\n\tthis.skipWhitespace();\n\t// Check if we've got the end marker\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar match = terminatorRegExp.exec(this.source);\n\t// Parse the text into blocks\n\twhile(this.pos < this.sourceLength && !(match && match.index === this.pos)) {\n\t\tvar blocks = this.parseBlock(terminatorRegExpString);\n\t\ttree.push.apply(tree,blocks);\n\t\t// Skip any whitespace\n\t\tthis.skipWhitespace();\n\t\t// Check if we've got the end marker\n\t\tterminatorRegExp.lastIndex = this.pos;\n\t\tmatch = terminatorRegExp.exec(this.source);\n\t}\n\tif(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t}\n\treturn tree;\n};\n\n/*\nParse a run of text at the current position\n\tterminatorRegExp: a regexp at which to stop the run\n\toptions: see below\nOptions available:\n\teatTerminator: move the parse position past any encountered terminator (default false)\n*/\nWikiParser.prototype.parseInlineRun = function(terminatorRegExp,options) {\n\tif(terminatorRegExp) {\n\t\treturn this.parseInlineRunTerminated(terminatorRegExp,options);\n\t} else {\n\t\treturn this.parseInlineRunUnterminated(options);\n\t}\n};\n\nWikiParser.prototype.parseInlineRunUnterminated = function(options) {\n\tvar tree = [];\n\t// Find the next occurrence of an inline rule\n\tvar nextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around the matches until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && nextMatch) {\n\t\t// Process the text preceding the run rule\n\t\tif(nextMatch.matchIndex > this.pos) {\n\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,nextMatch.matchIndex));\n\t\t\tthis.pos = nextMatch.matchIndex;\n\t\t}\n\t\t// Process the run rule\n\t\ttree.push.apply(tree,nextMatch.rule.parse());\n\t\t// Look for the next run rule\n\t\tnextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\tthis.pushTextWidget(tree,this.source.substr(this.pos));\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\nWikiParser.prototype.parseInlineRunTerminated = function(terminatorRegExp,options) {\n\toptions = options || {};\n\tvar tree = [];\n\t// Find the next occurrence of the terminator\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar terminatorMatch = terminatorRegExp.exec(this.source);\n\t// Find the next occurrence of a inlinerule\n\tvar inlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && (terminatorMatch || inlineRuleMatch)) {\n\t\t// Return if we've found the terminator, and it precedes any inline rule match\n\t\tif(terminatorMatch) {\n\t\t\tif(!inlineRuleMatch || inlineRuleMatch.matchIndex >= terminatorMatch.index) {\n\t\t\t\tif(terminatorMatch.index > this.pos) {\n\t\t\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,terminatorMatch.index));\n\t\t\t\t}\n\t\t\t\tthis.pos = terminatorMatch.index;\n\t\t\t\tif(options.eatTerminator) {\n\t\t\t\t\tthis.pos += terminatorMatch[0].length;\n\t\t\t\t}\n\t\t\t\treturn tree;\n\t\t\t}\n\t\t}\n\t\t// Process any inline rule, along with the text preceding it\n\t\tif(inlineRuleMatch) {\n\t\t\t// Preceding text\n\t\t\tif(inlineRuleMatch.matchIndex > this.pos) {\n\t\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,inlineRuleMatch.matchIndex));\n\t\t\t\tthis.pos = inlineRuleMatch.matchIndex;\n\t\t\t}\n\t\t\t// Process the inline rule\n\t\t\ttree.push.apply(tree,inlineRuleMatch.rule.parse());\n\t\t\t// Look for the next inline rule\n\t\t\tinlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t\t\t// Look for the next terminator match\n\t\t\tterminatorRegExp.lastIndex = this.pos;\n\t\t\tterminatorMatch = terminatorRegExp.exec(this.source);\n\t\t}\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\tthis.pushTextWidget(tree,this.source.substr(this.pos));\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\n/*\nPush a text widget onto an array, respecting the configTrimWhiteSpace setting\n*/\nWikiParser.prototype.pushTextWidget = function(array,text) {\n\tif(this.configTrimWhiteSpace) {\n\t\ttext = $tw.utils.trim(text);\n\t}\n\tif(text) {\n\t\tarray.push({type: \"text\", text: text});\t\t\n\t}\n};\n\n/*\nParse zero or more class specifiers `.classname`\n*/\nWikiParser.prototype.parseClasses = function() {\n\tvar classRegExp = /\\.([^\\s\\.]+)/mg,\n\t\tclassNames = [];\n\tclassRegExp.lastIndex = this.pos;\n\tvar match = classRegExp.exec(this.source);\n\twhile(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t\tclassNames.push(match[1]);\n\t\tmatch = classRegExp.exec(this.source);\n\t}\n\treturn classNames;\n};\n\n/*\nAmend the rules used by this instance of the parser\n\ttype: `only` keeps just the named rules, `except` keeps all but the named rules\n\tnames: array of rule names\n*/\nWikiParser.prototype.amendRules = function(type,names) {\n\tnames = names || [];\n\t// Define the filter function\n\tvar target;\n\tif(type === \"only\") {\n\t\ttarget = true;\n\t} else if(type === \"except\") {\n\t\ttarget = false;\n\t} else {\n\t\treturn;\n\t}\n\t// Define a function to process each of our rule arrays\n\tvar processRuleArray = function(ruleArray) {\n\t\tfor(var t=ruleArray.length-1; t>=0; t--) {\n\t\t\tif((names.indexOf(ruleArray[t].rule.name) === -1) === target) {\n\t\t\t\truleArray.splice(t,1);\n\t\t\t}\n\t\t}\n\t};\n\t// Process each rule array\n\tprocessRuleArray(this.pragmaRules);\n\tprocessRuleArray(this.blockRules);\n\tprocessRuleArray(this.inlineRules);\n};\n\nexports[\"text/vnd.tiddlywiki\"] = WikiParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/wikiparser/rules/wikirulebase.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/wikirulebase.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikirulebase.js\ntype: application/javascript\nmodule-type: global\n\nBase class for wiki parser rules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nThis constructor is always overridden with a blank constructor, and so shouldn't be used\n*/\nvar WikiRuleBase = function() {\n};\n\n/*\nTo be overridden by individual rules\n*/\nWikiRuleBase.prototype.init = function(parser) {\n\tthis.parser = parser;\n};\n\n/*\nDefault implementation of findNextMatch uses RegExp matching\n*/\nWikiRuleBase.prototype.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\treturn this.match ? this.match.index : undefined;\n};\n\nexports.WikiRuleBase = WikiRuleBase;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/pluginswitcher.js": {
"title": "$:/core/modules/pluginswitcher.js",
"text": "/*\\\ntitle: $:/core/modules/pluginswitcher.js\ntype: application/javascript\nmodule-type: global\n\nManages switching plugins for themes and languages.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\noptions:\nwiki: wiki store to be used\npluginType: type of plugin to be switched\ncontrollerTitle: title of tiddler used to control switching of this resource\ndefaultPlugins: array of default plugins to be used if nominated plugin isn't found\nonSwitch: callback when plugin is switched (single parameter is array of plugin titles)\n*/\nfunction PluginSwitcher(options) {\n\tthis.wiki = options.wiki;\n\tthis.pluginType = options.pluginType;\n\tthis.controllerTitle = options.controllerTitle;\n\tthis.defaultPlugins = options.defaultPlugins || [];\n\tthis.onSwitch = options.onSwitch;\n\t// Switch to the current plugin\n\tthis.switchPlugins();\n\t// Listen for changes to the selected plugin\n\tvar self = this;\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,self.controllerTitle)) {\n\t\t\tself.switchPlugins();\n\t\t}\n\t});\n}\n\nPluginSwitcher.prototype.switchPlugins = function() {\n\t// Get the name of the current theme\n\tvar selectedPluginTitle = this.wiki.getTiddlerText(this.controllerTitle);\n\t// If it doesn't exist, then fallback to one of the default themes\n\tvar index = 0;\n\twhile(!this.wiki.getTiddler(selectedPluginTitle) && index < this.defaultPlugins.length) {\n\t\tselectedPluginTitle = this.defaultPlugins[index++];\n\t}\n\t// Accumulate the titles of the plugins that we need to load\n\tvar plugins = [],\n\t\tself = this,\n\t\taccumulatePlugin = function(title) {\n\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\tif(tiddler && tiddler.isPlugin() && plugins.indexOf(title) === -1) {\n\t\t\t\tplugins.push(title);\n\t\t\t\tvar pluginInfo = JSON.parse(self.wiki.getTiddlerText(title)),\n\t\t\t\t\tdependents = $tw.utils.parseStringArray(tiddler.fields.dependents || \"\");\n\t\t\t\t$tw.utils.each(dependents,function(title) {\n\t\t\t\t\taccumulatePlugin(title);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\taccumulatePlugin(selectedPluginTitle);\n\t// Read the plugin info for the incoming plugins\n\tvar changes = $tw.wiki.readPluginInfo(plugins);\n\t// Unregister any existing theme tiddlers\n\tvar unregisteredTiddlers = $tw.wiki.unregisterPluginTiddlers(this.pluginType);\n\t// Register any new theme tiddlers\n\tvar registeredTiddlers = $tw.wiki.registerPluginTiddlers(this.pluginType,plugins);\n\t// Unpack the current theme tiddlers\n\t$tw.wiki.unpackPluginTiddlers();\n\t// Call the switch handler\n\tif(this.onSwitch) {\n\t\tthis.onSwitch(plugins);\n\t}\n};\n\nexports.PluginSwitcher = PluginSwitcher;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/saver-handler.js": {
"title": "$:/core/modules/saver-handler.js",
"text": "/*\\\ntitle: $:/core/modules/saver-handler.js\ntype: application/javascript\nmodule-type: global\n\nThe saver handler tracks changes to the store and handles saving the entire wiki via saver modules.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInstantiate the saver handler with the following options:\nwiki: wiki to be synced\ndirtyTracking: true if dirty tracking should be performed\n*/\nfunction SaverHandler(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\tthis.dirtyTracking = options.dirtyTracking;\n\tthis.preloadDirty = options.preloadDirty || [];\n\tthis.pendingAutoSave = false;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"saver-handler\");\n\t// Initialise our savers\n\tif($tw.browser) {\n\t\tthis.initSavers();\n\t}\n\t// Only do dirty tracking if required\n\tif($tw.browser && this.dirtyTracking) {\n\t\t// Compile the dirty tiddler filter\n\t\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t\t// Count of changes that have not yet been saved\n\t\tvar filteredChanges = self.filterFn.call(self.wiki,function(iterator) {\n\t\t\t\t$tw.utils.each(self.preloadDirty,function(title) {\n\t\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\t\titerator(tiddler,title);\n\t\t\t\t});\n\t\t});\n\t\tthis.numChanges = filteredChanges.length;\n\t\t// Listen out for changes to tiddlers\n\t\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\t\t// Filter the changes so that we only count changes to tiddlers that we care about\n\t\t\tvar filteredChanges = self.filterFn.call(self.wiki,function(iterator) {\n\t\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\t\titerator(tiddler,title);\n\t\t\t\t});\n\t\t\t});\n\t\t\t// Adjust the number of changes\n\t\t\tself.numChanges += filteredChanges.length;\n\t\t\tself.updateDirtyStatus();\n\t\t\t// Do any autosave if one is pending and there's no more change events\n\t\t\tif(self.pendingAutoSave && self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tself.pendingAutoSave = false;\n\t\t\t}\n\t\t});\n\t\t// Listen for the autosave event\n\t\t$tw.rootWidget.addEventListener(\"tm-auto-save-wiki\",function(event) {\n\t\t\t// Do the autosave unless there are outstanding tiddler change events\n\t\t\tif(self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise put ourselves in the \"pending autosave\" state and wait for the change event before we do the autosave\n\t\t\t\tself.pendingAutoSave = true;\n\t\t\t}\n\t\t});\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t}\n\t// Install the save action handlers\n\tif($tw.browser) {\n\t\t$tw.rootWidget.addEventListener(\"tm-save-wiki\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-download-file\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\tmethod: \"download\",\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t}\n}\n\nSaverHandler.prototype.titleSyncFilter = \"$:/config/SaverFilter\";\nSaverHandler.prototype.titleAutoSave = \"$:/config/AutoSave\";\nSaverHandler.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\n\n/*\nSelect the appropriate saver modules and set them up\n*/\nSaverHandler.prototype.initSavers = function(moduleType) {\n\tmoduleType = moduleType || \"saver\";\n\t// Instantiate the available savers\n\tthis.savers = [];\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tif(module.canSave(self)) {\n\t\t\tself.savers.push(module.create(self.wiki));\n\t\t}\n\t});\n\t// Sort the savers into priority order\n\tthis.savers.sort(function(a,b) {\n\t\tif(a.info.priority < b.info.priority) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(a.info.priority > b.info.priority) {\n\t\t\t\treturn +1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nSave the wiki contents. Options are:\n\tmethod: \"save\", \"autosave\" or \"download\"\n\ttemplate: the tiddler containing the template to save\n\tdownloadType: the content type for the saved file\n*/\nSaverHandler.prototype.saveWiki = function(options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tmethod = options.method || \"save\";\n\t// Ignore autosave if disabled\n\tif(method === \"autosave\" && ($tw.config.disableAutoSave || this.wiki.getTiddlerText(this.titleAutoSave,\"yes\") !== \"yes\")) {\n\t\treturn false;\n\t}\n\tvar\tvariables = options.variables || {},\n\t\ttemplate = options.template || \"$:/core/save/all\",\n\t\tdownloadType = options.downloadType || \"text/plain\",\n\t\ttext = this.wiki.renderTiddler(downloadType,template,options),\n\t\tcallback = function(err) {\n\t\t\tif(err) {\n\t\t\t\talert($tw.language.getString(\"Error/WhileSaving\") + \":\\n\\n\" + err);\n\t\t\t} else {\n\t\t\t\t// Clear the task queue if we're saving (rather than downloading)\n\t\t\t\tif(method !== \"download\") {\n\t\t\t\t\tself.numChanges = 0;\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t}\n\t\t\t\t$tw.notifier.display(self.titleSavedNotification);\n\t\t\t\tif(options.callback) {\n\t\t\t\t\toptions.callback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t// Call the highest priority saver that supports this method\n\tfor(var t=this.savers.length-1; t>=0; t--) {\n\t\tvar saver = this.savers[t];\n\t\tif(saver.info.capabilities.indexOf(method) !== -1 && saver.save(text,method,callback,{variables: {filename: variables.filename}})) {\n\t\t\tthis.logger.log(\"Saving wiki with method\",method,\"through saver\",saver.info.name);\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSaverHandler.prototype.isDirty = function() {\n\treturn this.numChanges > 0;\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSaverHandler.prototype.updateDirtyStatus = function() {\n\tvar self = this;\n\tif($tw.browser) {\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",this.isDirty());\n\t\t$tw.utils.each($tw.windows,function(win) {\n\t\t\t$tw.utils.toggleClass(win.document.body,\"tc-dirty\",self.isDirty());\n\t\t});\n\t}\n};\n\nexports.SaverHandler = SaverHandler;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/savers/andtidwiki.js": {
"title": "$:/core/modules/savers/andtidwiki.js",
"text": "/*\\\ntitle: $:/core/modules/savers/andtidwiki.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the AndTidWiki Android app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar AndTidWiki = function(wiki) {\n};\n\nAndTidWiki.prototype.save = function(text,method,callback,options) {\n\tvar filename = options && options.variables ? options.variables.filename : null;\n\tif (method === \"download\") {\n\t\t// Support download\n\t\tif (window.twi.saveDownload) {\n\t\t\ttry {\n\t\t\t\twindow.twi.saveDownload(text,filename);\n\t\t\t} catch(err) {\n\t\t\t\tif (err.message === \"Method not found\") {\n\t\t\t\t\twindow.twi.saveDownload(text);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tvar link = document.createElement(\"a\");\n\t\t\tlink.setAttribute(\"href\",\"data:text/plain,\" + encodeURIComponent(text));\n\t\t\tif (filename) {\n\t\t\t link.setAttribute(\"download\",filename);\n\t\t\t}\n\t\t\tdocument.body.appendChild(link);\n\t\t\tlink.click();\n\t\t\tdocument.body.removeChild(link);\n\t\t}\n\t} else if (window.twi.saveWiki) {\n\t\t// Direct save in Tiddloid\n\t\twindow.twi.saveWiki(text);\n\t} else {\n\t\t// Get the pathname of this document\n\t\tvar pathname = decodeURIComponent(document.location.toString().split(\"#\")[0]);\n\t\t// Strip the file://\n\t\tif(pathname.indexOf(\"file://\") === 0) {\n\t\t\tpathname = pathname.substr(7);\n\t\t}\n\t\t// Strip any query or location part\n\t\tvar p = pathname.indexOf(\"?\");\n\t\tif(p !== -1) {\n\t\t\tpathname = pathname.substr(0,p);\n\t\t}\n\t\tp = pathname.indexOf(\"#\");\n\t\tif(p !== -1) {\n\t\t\tpathname = pathname.substr(0,p);\n\t\t}\n\t\t// Save the file\n\t\twindow.twi.saveFile(pathname,text);\n\t}\n\t// Call the callback\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nAndTidWiki.prototype.info = {\n\tname: \"andtidwiki\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.twi && !!window.twi.saveFile;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new AndTidWiki(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/beaker.js": {
"title": "$:/core/modules/savers/beaker.js",
"text": "/*\\\ntitle: $:/core/modules/savers/beaker.js\ntype: application/javascript\nmodule-type: saver\n\nSaves files using the Beaker browser's (https://beakerbrowser.com) Dat protocol (https://datproject.org/)\nCompatible with beaker >= V0.7.2\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet up the saver\n*/\nvar BeakerSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nBeakerSaver.prototype.save = function(text,method,callback) {\n\tvar dat = new DatArchive(\"\" + window.location),\n\t\tpathname = (\"\" + window.location.pathname).split(\"#\")[0];\n\tdat.stat(pathname).then(function(value) {\n\t\tif(value.isDirectory()) {\n\t\t\tpathname = pathname + \"/index.html\";\n\t\t}\n\t\tdat.writeFile(pathname,text,\"utf8\").then(function(value) {\n\t\t\tcallback(null);\n\t\t},function(reason) {\n\t\t\tcallback(\"Beaker Saver Write Error: \" + reason);\n\t\t});\n\t},function(reason) {\n\t\tcallback(\"Beaker Saver Stat Error: \" + reason);\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nBeakerSaver.prototype.info = {\n\tname: \"beaker\",\n\tpriority: 3000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.DatArchive && location.protocol===\"dat:\";\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new BeakerSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/custom.js": {
"title": "$:/core/modules/savers/custom.js",
"text": "/*\\\ntitle: $:/core/modules/savers/custom.js\ntype: application/javascript\nmodule-type: saver\n\nLooks for `window.$tw.customSaver` first on the current window, then\non the parent window (of an iframe). If present, the saver must define\n\tsave: function(text,method,callback) { ... }\nand the saver may define\n\tpriority: number\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar findSaver = function(window) {\n\ttry {\n\t\treturn window && window.$tw && window.$tw.customSaver;\n\t} catch (err) {\n\t\t// Catching the exception is the most reliable way to detect cross-origin iframe errors.\n\t\t// For example, instead of saying that `window.parent.$tw` is undefined, Firefox will throw\n\t\t// Uncaught DOMException: Permission denied to access property \"$tw\" on cross-origin object\n\t\tconsole.log({ msg: \"custom saver is disabled\", reason: err });\n\t\treturn null;\n\t}\n}\nvar saver = findSaver(window) || findSaver(window.parent) || {};\n\nvar CustomSaver = function(wiki) {\n};\n\nCustomSaver.prototype.save = function(text,method,callback) {\n\treturn saver.save(text, method, callback);\n};\n\n/*\nInformation about this saver\n*/\nCustomSaver.prototype.info = {\n\tname: \"custom\",\n\tpriority: saver.priority || 4000,\n\tcapabilities: [\"save\",\"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!(saver.save);\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new CustomSaver(wiki);\n};\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/download.js": {
"title": "$:/core/modules/savers/download.js",
"text": "/*\\\ntitle: $:/core/modules/savers/download.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar DownloadSaver = function(wiki) {\n};\n\nDownloadSaver.prototype.save = function(text,method,callback,options) {\n\toptions = options || {};\n\t// Get the current filename\n\tvar filename = options.variables.filename;\n\tif(!filename) {\n\t\tvar p = document.location.pathname.lastIndexOf(\"/\");\n\t\tif(p !== -1) {\n\t\t\t// We decode the pathname because document.location is URL encoded by the browser\n\t\t\tfilename = decodeURIComponent(document.location.pathname.substr(p+1));\n\t\t}\n\t}\n\tif(!filename) {\n\t\tfilename = \"tiddlywiki.html\";\n\t}\n\t// Set up the link\n\tvar link = document.createElement(\"a\");\n\tif(Blob !== undefined) {\n\t\tvar blob = new Blob([text], {type: \"text/html\"});\n\t\tlink.setAttribute(\"href\", URL.createObjectURL(blob));\n\t} else {\n\t\tlink.setAttribute(\"href\",\"data:text/html,\" + encodeURIComponent(text));\n\t}\n\tlink.setAttribute(\"download\",filename);\n\tdocument.body.appendChild(link);\n\tlink.click();\n\tdocument.body.removeChild(link);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nDownloadSaver.prototype.info = {\n\tname: \"download\",\n\tpriority: 100\n};\n\nObject.defineProperty(DownloadSaver.prototype.info, \"capabilities\", {\n\tget: function() {\n\t\tvar capabilities = [\"save\", \"download\"];\n\t\tif(($tw.wiki.getTextReference(\"$:/config/DownloadSaver/AutoSave\") || \"\").toLowerCase() === \"yes\") {\n\t\t\tcapabilities.push(\"autosave\");\n\t\t}\n\t\treturn capabilities;\n\t}\n});\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn document.createElement(\"a\").download !== undefined;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new DownloadSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/fsosaver.js": {
"title": "$:/core/modules/savers/fsosaver.js",
"text": "/*\\\ntitle: $:/core/modules/savers/fsosaver.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via MS FileSystemObject ActiveXObject\n\nNote: Since TiddlyWiki's markup contains the MOTW, the FileSystemObject normally won't be available. \nHowever, if the wiki is loaded as an .HTA file (Windows HTML Applications) then the FSO can be used.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar FSOSaver = function(wiki) {\n};\n\nFSOSaver.prototype.save = function(text,method,callback) {\n\t// Get the pathname of this document\n\tvar pathname = unescape(document.location.pathname);\n\t// Test for a Windows path of the form /x:\\blah...\n\tif(/^\\/[A-Z]\\:\\\\[^\\\\]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t} else if(document.location.hostname !== \"\" && /^\\/\\\\[^\\\\]+\\\\[^\\\\]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t\t// reconstruct UNC path\n\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t} else {\n\t\treturn false;\n\t}\n\t// Save the file (as UTF-16)\n\tvar fso = new ActiveXObject(\"Scripting.FileSystemObject\");\n\tvar file = fso.OpenTextFile(pathname,2,-1,-1);\n\tfile.Write(text);\n\tfile.Close();\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nFSOSaver.prototype.info = {\n\tname: \"FSOSaver\",\n\tpriority: 120,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\ttry {\n\t\treturn (window.location.protocol === \"file:\") && !!(new ActiveXObject(\"Scripting.FileSystemObject\"));\n\t} catch(e) { return false; }\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new FSOSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/gitea.js": {
"title": "$:/core/modules/savers/gitea.js",
"text": "/*\\\ntitle: $:/core/modules/savers/gitea.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the gitea\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GiteaSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGiteaSaver.prototype.save = function(text,method,callback) {\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/Gitea/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"Gitea\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/Gitea/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/Gitea/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/Gitea/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/Gitea/Branch\") || \"master\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/Gitea/ServerURL\") || \"https://gitea\",\n\t\theaders = {\n\t\t\t\"Accept\": \"application/json\",\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Authorization\": \"token \" + password\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/repos/\" + repo + \"/contents\" + path;\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tdata: {\n\t\t\tref: branch\n\t\t},\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar use_put = true;\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(sha === \"\"){\n\t\t\t\t\tuse_put = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tmessage: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: $tw.utils.base64Encode(text),\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: endpoint + \"/repos/\" + repo + \"/branches/\" + branch,\n\t\t\t\ttype: \"GET\",\n\t\t\t\theaders: headers,\n\t\t\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\t\t\tif(xhr.status === 404) {\n\t\t\t\t\t\tcallback(\"Please ensure the branch in the Gitea repo exists\");\n\t\t\t\t\t}else{\n\t\t\t\t\t\tdata[\"branch\"] = branch;\n\t\t\t\t\t\tself.upload(uri + filename, use_put?\"PUT\":\"POST\", headers, data, callback);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\nGiteaSaver.prototype.upload = function(uri,method,headers,data,callback) {\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: method,\n\t\theaders: headers,\n\t\tdata: JSON.stringify(data),\n\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\tcallback(null);\n\t\t}\n\t});\n};\n\n/*\nInformation about this saver\n*/\nGiteaSaver.prototype.info = {\n\tname: \"Gitea\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GiteaSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/github.js": {
"title": "$:/core/modules/savers/github.js",
"text": "/*\\\ntitle: $:/core/modules/savers/github.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the GitHub v3 REST API\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GitHubSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGitHubSaver.prototype.save = function(text,method,callback) {\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/GitHub/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"github\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/GitHub/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/GitHub/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/GitHub/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/GitHub/Branch\") || \"main\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/GitHub/ServerURL\") || \"https://api.github.com\",\n\t\theaders = {\n\t\t\t\"Accept\": \"application/vnd.github.v3+json\",\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Authorization\": \"Basic \" + window.btoa(username + \":\" + password),\n\t\t\t\"If-None-Match\": \"\"\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/repos/\" + repo + \"/contents\" + path;\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tdata: {\n\t\t\tref: branch\n\t\t},\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tmessage: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: $tw.utils.base64Encode(text),\n\t\t\t\tbranch: branch,\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t// Perform a PUT request to save the file\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: uri + filename,\n\t\t\t\ttype: \"PUT\",\n\t\t\t\theaders: headers,\n\t\t\t\tdata: JSON.stringify(data),\n\t\t\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\treturn callback(err);\n\t\t\t\t\t}\n\t\t\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nGitHubSaver.prototype.info = {\n\tname: \"github\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GitHubSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/gitlab.js": {
"title": "$:/core/modules/savers/gitlab.js",
"text": "/*\\\ntitle: $:/core/modules/savers/gitlab.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the GitLab REST API\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: true */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GitLabSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGitLabSaver.prototype.save = function(text,method,callback) {\n\t/* See https://docs.gitlab.com/ee/api/repository_files.html */\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/GitLab/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"gitlab\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/GitLab/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/GitLab/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/GitLab/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/GitLab/Branch\") || \"master\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/GitLab/ServerURL\") || \"https://gitlab.com/api/v4\",\n\t\theaders = {\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Private-Token\": password\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/projects/\" + encodeURIComponent(repo) + \"/repository/\";\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri + \"tree/?path=\" + encodeURIComponent(path.replace(/^\\/+|\\/$/g, '')) + \"&branch=\" + encodeURIComponent(branch.replace(/^\\/+|\\/$/g, '')),\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar requestType = \"POST\";\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\trequestType = \"PUT\";\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tcommit_message: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: text,\n\t\t\t\tbranch: branch,\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t// Perform a request to save the file\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: uri + \"files/\" + encodeURIComponent(path.replace(/^\\/+/, '') + filename),\n\t\t\t\ttype: requestType,\n\t\t\t\theaders: headers,\n\t\t\t\tdata: JSON.stringify(data),\n\t\t\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\treturn callback(err);\n\t\t\t\t\t}\n\t\t\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nGitLabSaver.prototype.info = {\n\tname: \"gitlab\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GitLabSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/hyperdrive.js": {
"title": "$:/core/modules/savers/hyperdrive.js",
"text": "/*\\\ntitle: $:/core/modules/savers/hyperdrive.js\ntype: application/javascript\nmodule-type: saver\n\nSaves files using the Hyperdrive Protocol (https://hypercore-protocol.org/#hyperdrive) Beaker browser beta-1.0 and later (https://beakerbrowser.com)\nCompatible with beaker >= V1.0.0\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet up the saver\n*/\nvar HyperdriveSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nHyperdriveSaver.prototype.save = function(text,method,callback) {\n\tvar dat = beaker.hyperdrive.drive(\"\" + window.location),\n\t\tpathname = (\"\" + window.location.pathname).split(\"#\")[0];\n\tdat.stat(pathname).then(function(value) {\n\t\tif(value.isDirectory()) {\n\t\t\tpathname = pathname + \"/index.html\";\n\t\t}\n\t\tdat.writeFile(pathname,text,\"utf8\").then(function(value) {\n\t\t\tcallback(null);\n\t\t},function(reason) {\n\t\t\tcallback(\"Hyperdrive Saver Write Error: \" + reason);\n\t\t});\n\t},function(reason) {\n\t\tcallback(\"Hyperdrive Saver Stat Error: \" + reason);\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nHyperdriveSaver.prototype.info = {\n\tname: \"beaker-1.x\",\n\tpriority: 3000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.beaker && !!beaker.hyperdrive && location.protocol===\"hyper:\";\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new HyperdriveSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/manualdownload.js": {
"title": "$:/core/modules/savers/manualdownload.js",
"text": "/*\\\ntitle: $:/core/modules/savers/manualdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Title of the tiddler containing the download message\nvar downloadInstructionsTitle = \"$:/language/Modals/Download\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar ManualDownloadSaver = function(wiki) {\n};\n\nManualDownloadSaver.prototype.save = function(text,method,callback) {\n\t$tw.modal.display(downloadInstructionsTitle,{\n\t\tdownloadLink: \"data:text/html,\" + encodeURIComponent(text)\n\t});\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nManualDownloadSaver.prototype.info = {\n\tname: \"manualdownload\",\n\tpriority: 0,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new ManualDownloadSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/msdownload.js": {
"title": "$:/core/modules/savers/msdownload.js",
"text": "/*\\\ntitle: $:/core/modules/savers/msdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via window.navigator.msSaveBlob()\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar MsDownloadSaver = function(wiki) {\n};\n\nMsDownloadSaver.prototype.save = function(text,method,callback) {\n\t// Get the current filename\n\tvar filename = \"tiddlywiki.html\",\n\t\tp = document.location.pathname.lastIndexOf(\"/\");\n\tif(p !== -1) {\n\t\tfilename = document.location.pathname.substr(p+1);\n\t}\n\t// Set up the link\n\tvar blob = new Blob([text], {type: \"text/html\"});\n\twindow.navigator.msSaveBlob(blob,filename);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nMsDownloadSaver.prototype.info = {\n\tname: \"msdownload\",\n\tpriority: 110,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.navigator.msSaveBlob;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new MsDownloadSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/put.js": {
"title": "$:/core/modules/savers/put.js",
"text": "/*\\\ntitle: $:/core/modules/savers/put.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by performing a PUT request to the server\n\nWorks with any server which accepts a PUT request\nto the current URL, such as a WebDAV server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRetrieve ETag if available\n*/\nvar retrieveETag = function(self) {\n\tvar headers = {\n\t\tAccept: \"*/*;charset=UTF-8\"\n\t};\n\t$tw.utils.httpRequest({\n\t\turl: self.uri(),\n\t\ttype: \"HEAD\",\n\t\theaders: headers,\n\t\tcallback: function(err,data,xhr) {\n\t\t\tif(err) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar etag = xhr.getResponseHeader(\"ETag\");\n\t\t\tif(!etag) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tself.etag = etag.replace(/^W\\//,\"\");\n\t\t}\n\t});\n};\n\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar PutSaver = function(wiki) {\n\tthis.wiki = wiki;\n\tvar self = this;\n\tvar uri = this.uri();\n\t// Async server probe. Until probe finishes, save will fail fast\n\t// See also https://github.com/Jermolene/TiddlyWiki5/issues/2276\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"OPTIONS\",\n\t\tcallback: function(err,data,xhr) {\n\t\t\t// Check DAV header http://www.webdav.org/specs/rfc2518.html#rfc.section.9.1\n\t\t\tif(!err) {\n\t\t\t\tself.serverAcceptsPuts = xhr.status === 200 && !!xhr.getResponseHeader(\"dav\");\n\t\t\t}\n\t\t}\n\t});\n\tretrieveETag(this);\n};\n\nPutSaver.prototype.uri = function() {\n\treturn document.location.toString().split(\"#\")[0];\n};\n\n// TODO: in case of edit conflict\n// Prompt: Do you want to save over this? Y/N\n// Merging would be ideal, and may be possible using future generic merge flow\nPutSaver.prototype.save = function(text,method,callback) {\n\tif(!this.serverAcceptsPuts) {\n\t\treturn false;\n\t}\n\tvar self = this;\n\tvar headers = {\n\t\t\"Content-Type\": \"text/html;charset=UTF-8\"\n\t};\n\tif(this.etag) {\n\t\theaders[\"If-Match\"] = this.etag;\n\t}\n\t$tw.utils.httpRequest({\n\t\turl: this.uri(),\n\t\ttype: \"PUT\",\n\t\theaders: headers,\n\t\tdata: text,\n\t\tcallback: function(err,data,xhr) {\n\t\t\tif(err) {\n\t\t\t\t// response is textual: \"XMLHttpRequest error code: 412\"\n\t\t\t\tvar status = Number(err.substring(err.indexOf(':') + 2, err.length))\n\t\t\t\tif(status === 412) { // edit conflict\n\t\t\t\t\tvar message = $tw.language.getString(\"Error/EditConflict\");\n\t\t\t\t\tcallback(message);\n\t\t\t\t} else {\n\t\t\t\t\tcallback(err); // fail\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.etag = xhr.getResponseHeader(\"ETag\");\n\t\t\t\tif(self.etag == null) {\n\t\t\t\t\tretrieveETag(self);\n\t\t\t\t}\n\t\t\t\tcallback(null); // success\n\t\t\t}\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nPutSaver.prototype.info = {\n\tname: \"put\",\n\tpriority: 2000,\n\tcapabilities: [\"save\",\"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn /^https?:/.test(location.protocol);\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new PutSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/tiddlyfox.js": {
"title": "$:/core/modules/savers/tiddlyfox.js",
"text": "/*\\\ntitle: $:/core/modules/savers/tiddlyfox.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TiddlyFox file extension\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TiddlyFoxSaver = function(wiki) {\n};\n\nTiddlyFoxSaver.prototype.save = function(text,method,callback) {\n\tvar messageBox = document.getElementById(\"tiddlyfox-message-box\");\n\tif(messageBox) {\n\t\t// Get the pathname of this document\n\t\tvar pathname = document.location.toString().split(\"#\")[0];\n\t\t// Replace file://localhost/ with file:///\n\t\tif(pathname.indexOf(\"file://localhost/\") === 0) {\n\t\t\tpathname = \"file://\" + pathname.substr(16);\n\t\t}\n\t\t// Windows path file:///x:/blah/blah --> x:\\blah\\blah\n\t\tif(/^file\\:\\/\\/\\/[A-Z]\\:\\//i.test(pathname)) {\n\t\t\t// Remove the leading slash and convert slashes to backslashes\n\t\t\tpathname = pathname.substr(8).replace(/\\//g,\"\\\\\");\n\t\t// Firefox Windows network path file://///server/share/blah/blah --> //server/share/blah/blah\n\t\t} else if(pathname.indexOf(\"file://///\") === 0) {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(10)).replace(/\\//g,\"\\\\\");\n\t\t// Mac/Unix local path file:///path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:///\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(7));\n\t\t// Mac/Unix local path file:/path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:/\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(5));\n\t\t// Otherwise Windows networth path file://server/share/path/path --> \\\\server\\share\\path\\path\n\t\t} else {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(7)).replace(new RegExp(\"/\",\"g\"),\"\\\\\");\n\t\t}\n\t\t// Create the message element and put it in the message box\n\t\tvar message = document.createElement(\"div\");\n\t\tmessage.setAttribute(\"data-tiddlyfox-path\",decodeURIComponent(pathname));\n\t\tmessage.setAttribute(\"data-tiddlyfox-content\",text);\n\t\tmessageBox.appendChild(message);\n\t\t// Add an event handler for when the file has been saved\n\t\tmessage.addEventListener(\"tiddlyfox-have-saved-file\",function(event) {\n\t\t\tcallback(null);\n\t\t}, false);\n\t\t// Create and dispatch the custom event to the extension\n\t\tvar event = document.createEvent(\"Events\");\n\t\tevent.initEvent(\"tiddlyfox-save-file\",true,false);\n\t\tmessage.dispatchEvent(event);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyFoxSaver.prototype.info = {\n\tname: \"tiddlyfox\",\n\tpriority: 1500,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyFoxSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/tiddlyie.js": {
"title": "$:/core/modules/savers/tiddlyie.js",
"text": "/*\\\ntitle: $:/core/modules/savers/tiddlyie.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via Internet Explorer BHO extenion (TiddlyIE)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar TiddlyIESaver = function(wiki) {\n};\n\nTiddlyIESaver.prototype.save = function(text,method,callback) {\n\t// Check existence of TiddlyIE BHO extension (note: only works after document is complete)\n\tif(typeof(window.TiddlyIE) != \"undefined\") {\n\t\t// Get the pathname of this document\n\t\tvar pathname = unescape(document.location.pathname);\n\t\t// Test for a Windows path of the form /x:/blah...\n\t\tif(/^\\/[A-Z]\\:\\/[^\\/]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+ (is this better?: ^/[a-z]:/[^/]+(/[^/]+)*\\.[^/]+ )\n\t\t\t// Remove the leading slash\n\t\t\tpathname = pathname.substr(1);\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t} else if(document.hostname !== \"\" && /^\\/[^\\/]+\\/[^\\/]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t\t// reconstruct UNC path\n\t\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t\t} else return false;\n\t\t// Prompt the user to save the file\n\t\twindow.TiddlyIE.save(pathname, text);\n\t\t// Callback that we succeeded\n\t\tcallback(null);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyIESaver.prototype.info = {\n\tname: \"tiddlyiesaver\",\n\tpriority: 1500,\n\tcapabilities: [\"save\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn (window.location.protocol === \"file:\");\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyIESaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/twedit.js": {
"title": "$:/core/modules/savers/twedit.js",
"text": "/*\\\ntitle: $:/core/modules/savers/twedit.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TWEdit iOS app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TWEditSaver = function(wiki) {\n};\n\nTWEditSaver.prototype.save = function(text,method,callback) {\n\t// Bail if we're not running under TWEdit\n\tif(typeof DeviceInfo !== \"object\") {\n\t\treturn false;\n\t}\n\t// Get the pathname of this document\n\tvar pathname = decodeURIComponent(document.location.pathname);\n\t// Strip any query or location part\n\tvar p = pathname.indexOf(\"?\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\tp = pathname.indexOf(\"#\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\t// Remove the leading \"/Documents\" from path\n\tvar prefix = \"/Documents\";\n\tif(pathname.indexOf(prefix) === 0) {\n\t\tpathname = pathname.substr(prefix.length);\n\t}\n\t// Error handler\n\tvar errorHandler = function(event) {\n\t\t// Error\n\t\tcallback($tw.language.getString(\"Error/SavingToTWEdit\") + \": \" + event.target.error.code);\n\t};\n\t// Get the file system\n\twindow.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem) {\n\t\t// Now we've got the filesystem, get the fileEntry\n\t\tfileSystem.root.getFile(pathname, {create: true}, function(fileEntry) {\n\t\t\t// Now we've got the fileEntry, create the writer\n\t\t\tfileEntry.createWriter(function(writer) {\n\t\t\t\twriter.onerror = errorHandler;\n\t\t\t\twriter.onwrite = function() {\n\t\t\t\t\tcallback(null);\n\t\t\t\t};\n\t\t\t\twriter.position = 0;\n\t\t\t\twriter.write(text);\n\t\t\t},errorHandler);\n\t\t}, errorHandler);\n\t}, errorHandler);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nTWEditSaver.prototype.info = {\n\tname: \"twedit\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TWEditSaver(wiki);\n};\n\n/////////////////////////// Hack\n// HACK: This ensures that TWEdit recognises us as a TiddlyWiki document\nif($tw.browser) {\n\twindow.version = {title: \"TiddlyWiki\"};\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/upload.js": {
"title": "$:/core/modules/savers/upload.js",
"text": "/*\\\ntitle: $:/core/modules/savers/upload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via upload to a server.\n\nDesigned to be compatible with BidiX's UploadPlugin at http://tiddlywiki.bidix.info/#UploadPlugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar UploadSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nUploadSaver.prototype.save = function(text,method,callback) {\n\t// Get the various parameters we need\n\tvar backupDir = this.wiki.getTextReference(\"$:/UploadBackupDir\") || \".\",\n\t\tusername = this.wiki.getTextReference(\"$:/UploadName\"),\n\t\tpassword = $tw.utils.getPassword(\"upload\"),\n\t\tuploadDir = this.wiki.getTextReference(\"$:/UploadDir\") || \".\",\n\t\tuploadFilename = this.wiki.getTextReference(\"$:/UploadFilename\") || \"index.html\",\n\t\turl = this.wiki.getTextReference(\"$:/UploadURL\");\n\t// Bail out if we don't have the bits we need\n\tif(!username || username.toString().trim() === \"\" || !password || password.toString().trim() === \"\") {\n\t\treturn false;\n\t}\n\t// Construct the url if not provided\n\tif(!url) {\n\t\turl = \"http://\" + username + \".tiddlyspot.com/store.cgi\";\n\t}\n\t// Assemble the header\n\tvar boundary = \"---------------------------\" + \"AaB03x\";\t\n\tvar uploadFormName = \"UploadPlugin\";\n\tvar head = [];\n\thead.push(\"--\" + boundary + \"\\r\\nContent-disposition: form-data; name=\\\"UploadPlugin\\\"\\r\\n\");\n\thead.push(\"backupDir=\" + backupDir + \";user=\" + username + \";password=\" + password + \";uploaddir=\" + uploadDir + \";;\"); \n\thead.push(\"\\r\\n\" + \"--\" + boundary);\n\thead.push(\"Content-disposition: form-data; name=\\\"userfile\\\"; filename=\\\"\" + uploadFilename + \"\\\"\");\n\thead.push(\"Content-Type: text/html;charset=UTF-8\");\n\thead.push(\"Content-Length: \" + text.length + \"\\r\\n\");\n\thead.push(\"\");\n\t// Assemble the tail and the data itself\n\tvar tail = \"\\r\\n--\" + boundary + \"--\\r\\n\",\n\t\tdata = head.join(\"\\r\\n\") + text + tail;\n\t// Do the HTTP post\n\tvar http = new XMLHttpRequest();\n\thttp.open(\"POST\",url,true,username,password);\n\thttp.setRequestHeader(\"Content-Type\",\"multipart/form-data; charset=UTF-8; boundary=\" + boundary);\n\thttp.onreadystatechange = function() {\n\t\tif(http.readyState == 4 && http.status == 200) {\n\t\t\tif(http.responseText.substr(0,4) === \"0 - \") {\n\t\t\t\tcallback(null);\n\t\t\t} else {\n\t\t\t\tcallback(http.responseText);\n\t\t\t}\n\t\t}\n\t};\n\ttry {\n\t\thttp.send(data);\n\t} catch(ex) {\n\t\treturn callback($tw.language.getString(\"Error/Caption\") + \":\" + ex);\n\t}\n\t$tw.notifier.display(\"$:/language/Notifications/Save/Starting\");\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nUploadSaver.prototype.info = {\n\tname: \"upload\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new UploadSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/server/authenticators/basic.js": {
"title": "$:/core/modules/server/authenticators/basic.js",
"text": "/*\\\ntitle: $:/core/modules/server/authenticators/basic.js\ntype: application/javascript\nmodule-type: authenticator\n\nAuthenticator for WWW basic authentication\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif($tw.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\");\n}\n\nfunction BasicAuthenticator(server) {\n\tthis.server = server;\n\tthis.credentialsData = [];\n}\n\n/*\nReturns true if the authenticator is active, false if it is inactive, or a string if there is an error\n*/\nBasicAuthenticator.prototype.init = function() {\n\t// Read the credentials data\n\tthis.credentialsFilepath = this.server.get(\"credentials\");\n\tif(this.credentialsFilepath) {\n\t\tvar resolveCredentialsFilepath = path.resolve(this.server.boot.wikiPath,this.credentialsFilepath);\n\t\tif(fs.existsSync(resolveCredentialsFilepath) && !fs.statSync(resolveCredentialsFilepath).isDirectory()) {\n\t\t\tvar credentialsText = fs.readFileSync(resolveCredentialsFilepath,\"utf8\"),\n\t\t\t\tcredentialsData = $tw.utils.parseCsvStringWithHeader(credentialsText);\n\t\t\tif(typeof credentialsData === \"string\") {\n\t\t\t\treturn \"Error: \" + credentialsData + \" reading credentials from '\" + resolveCredentialsFilepath + \"'\";\n\t\t\t} else {\n\t\t\t\tthis.credentialsData = credentialsData;\n\t\t\t}\n\t\t} else {\n\t\t\treturn \"Error: Unable to load user credentials from '\" + resolveCredentialsFilepath + \"'\";\n\t\t}\n\t}\n\t// Add the hardcoded username and password if specified\n\tif(this.server.get(\"username\") && this.server.get(\"password\")) {\n\t\tthis.credentialsData = this.credentialsData || [];\n\t\tthis.credentialsData.push({\n\t\t\tusername: this.server.get(\"username\"),\n\t\t\tpassword: this.server.get(\"password\")\n\t\t});\n\t}\n\treturn this.credentialsData.length > 0;\n};\n\n/*\nReturns true if the request is authenticated and assigns the \"authenticatedUsername\" state variable.\nReturns false if the request couldn't be authenticated having sent an appropriate response to the browser\n*/\nBasicAuthenticator.prototype.authenticateRequest = function(request,response,state) {\n\t// Extract the incoming username and password from the request\n\tvar header = request.headers.authorization || \"\";\n\tif(!header && state.allowAnon) {\n\t\t// If there's no header and anonymous access is allowed then we don't set authenticatedUsername\n\t\treturn true;\n\t}\n\tvar token = header.split(/\\s+/).pop() || \"\",\n\t\tauth = $tw.utils.base64Decode(token),\n\t\tparts = auth.split(/:/),\n\t\tincomingUsername = parts[0],\n\t\tincomingPassword = parts[1];\n\t// Check that at least one of the credentials matches\n\tvar matchingCredentials = this.credentialsData.find(function(credential) {\n\t\treturn credential.username === incomingUsername && credential.password === incomingPassword;\n\t});\n\tif(matchingCredentials) {\n\t\t// If so, add the authenticated username to the request state\n\t\tstate.authenticatedUsername = incomingUsername;\n\t\treturn true;\n\t} else {\n\t\t// If not, return an authentication challenge\n\t\tresponse.writeHead(401,\"Authentication required\",{\n\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + state.server.servername + '\"'\n\t\t});\n\t\tresponse.end();\n\t\treturn false;\n\t}\n};\n\nexports.AuthenticatorClass = BasicAuthenticator;\n\n})();\n",
"type": "application/javascript",
"module-type": "authenticator"
},
"$:/core/modules/server/authenticators/header.js": {
"title": "$:/core/modules/server/authenticators/header.js",
"text": "/*\\\ntitle: $:/core/modules/server/authenticators/header.js\ntype: application/javascript\nmodule-type: authenticator\n\nAuthenticator for trusted header authentication\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction HeaderAuthenticator(server) {\n\tthis.server = server;\n\tthis.header = server.get(\"authenticated-user-header\") ? server.get(\"authenticated-user-header\").toLowerCase() : undefined;\n}\n\n/*\nReturns true if the authenticator is active, false if it is inactive, or a string if there is an error\n*/\nHeaderAuthenticator.prototype.init = function() {\n\treturn !!this.header;\n};\n\n/*\nReturns true if the request is authenticated and assigns the \"authenticatedUsername\" state variable.\nReturns false if the request couldn't be authenticated having sent an appropriate response to the browser\n*/\nHeaderAuthenticator.prototype.authenticateRequest = function(request,response,state) {\n\t// Otherwise, authenticate as the username in the specified header\n\tvar username = request.headers[this.header];\n\tif(!username && !state.allowAnon) {\n\t\tresponse.writeHead(401,\"Authorization header required to login to '\" + state.server.servername + \"'\");\n\t\tresponse.end();\n\t\treturn false;\n\t} else {\n\t\t// authenticatedUsername will be undefined for anonymous users\n\t\tstate.authenticatedUsername = username;\n\t\treturn true;\n\t}\n};\n\nexports.AuthenticatorClass = HeaderAuthenticator;\n\n})();\n",
"type": "application/javascript",
"module-type": "authenticator"
},
"$:/core/modules/server/routes/delete-tiddler.js": {
"title": "$:/core/modules/server/routes/delete-tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/delete-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nDELETE /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"DELETE\";\n\nexports.path = /^\\/bags\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]);\n\tstate.wiki.deleteTiddler(title);\n\tresponse.writeHead(204, \"OK\", {\n\t\t\"Content-Type\": \"text/plain\"\n\t});\n\tresponse.end();\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-favicon.js": {
"title": "$:/core/modules/server/routes/get-favicon.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-favicon.js\ntype: application/javascript\nmodule-type: route\n\nGET /favicon.ico\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/favicon.ico$/;\n\nexports.handler = function(request,response,state) {\n\tresponse.writeHead(200, {\"Content-Type\": \"image/x-icon\"});\n\tvar buffer = state.wiki.getTiddlerText(\"$:/favicon.ico\",\"\");\n\tresponse.end(buffer,\"base64\");\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-file.js": {
"title": "$:/core/modules/server/routes/get-file.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-file.js\ntype: application/javascript\nmodule-type: route\n\nGET /files/:filepath\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/files\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar path = require(\"path\"),\n\t\tfs = require(\"fs\"),\n\t\tutil = require(\"util\"),\n\t\tsuppliedFilename = decodeURIComponent(state.params[0]),\n\t\tfilename = path.resolve(state.boot.wikiPath,\"files\",suppliedFilename),\n\t\textension = path.extname(filename);\n\tfs.readFile(filename,function(err,content) {\n\t\tvar status,content,type = \"text/plain\";\n\t\tif(err) {\n\t\t\tconsole.log(\"Error accessing file \" + filename + \": \" + err.toString());\n\t\t\tstatus = 404;\n\t\t\tcontent = \"File '\" + suppliedFilename + \"' not found\";\n\t\t} else {\n\t\t\tstatus = 200;\n\t\t\tcontent = content;\n\t\t\ttype = ($tw.config.fileExtensionInfo[extension] ? $tw.config.fileExtensionInfo[extension].type : \"application/octet-stream\");\n\t\t}\n\t\tresponse.writeHead(status,{\n\t\t\t\"Content-Type\": type\n\t\t});\n\t\tresponse.end(content);\n\t});\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-index.js": {
"title": "$:/core/modules/server/routes/get-index.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-index.js\ntype: application/javascript\nmodule-type: route\n\nGET /\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar zlib = require(\"zlib\");\n\nexports.method = \"GET\";\n\nexports.path = /^\\/$/;\n\nexports.handler = function(request,response,state) {\n\tvar acceptEncoding = request.headers[\"accept-encoding\"];\n\tif(!acceptEncoding) {\n\t\tacceptEncoding = \"\";\n\t}\n\tvar text = state.wiki.renderTiddler(state.server.get(\"root-render-type\"),state.server.get(\"root-tiddler\")),\n\t\tresponseHeaders = {\n\t\t\"Content-Type\": state.server.get(\"root-serve-type\")\n\t};\n\t/*\n\tIf the gzip=yes flag for `listen` is set, check if the user agent permits\n\tcompression. If so, compress our response. Note that we use the synchronous\n\tfunctions from zlib to stay in the imperative style. The current `Server`\n\tdoesn't depend on this, and we may just as well use the async versions.\n\t*/\n\tif(state.server.enableGzip) {\n\t\tif (/\\bdeflate\\b/.test(acceptEncoding)) {\n\t\t\tresponseHeaders[\"Content-Encoding\"] = \"deflate\";\n\t\t\ttext = zlib.deflateSync(text);\n\t\t} else if (/\\bgzip\\b/.test(acceptEncoding)) {\n\t\t\tresponseHeaders[\"Content-Encoding\"] = \"gzip\";\n\t\t\ttext = zlib.gzipSync(text);\n\t\t}\n\t}\n\tresponse.writeHead(200,responseHeaders);\n\tresponse.end(text);\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-login-basic.js": {
"title": "$:/core/modules/server/routes/get-login-basic.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-login-basic.js\ntype: application/javascript\nmodule-type: route\n\nGET /login-basic -- force a Basic Authentication challenge\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/login-basic$/;\n\nexports.handler = function(request,response,state) {\n\tif(!state.authenticatedUsername) {\n\t\t// Challenge if there's no username\n\t\tresponse.writeHead(401,{\n\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + state.server.servername + '\"'\n\t\t});\n\t\tresponse.end();\t\t\n\t} else {\n\t\t// Redirect to the root wiki if login worked\n\t\tresponse.writeHead(302,{\n\t\t\tLocation: \"/\"\n\t\t});\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-status.js": {
"title": "$:/core/modules/server/routes/get-status.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-status.js\ntype: application/javascript\nmodule-type: route\n\nGET /status\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/status$/;\n\nexports.handler = function(request,response,state) {\n\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\tvar text = JSON.stringify({\n\t\tusername: state.authenticatedUsername || state.server.get(\"anon-username\") || \"\",\n\t\tanonymous: !state.authenticatedUsername,\n\t\tread_only: !state.server.isAuthorized(\"writers\",state.authenticatedUsername),\n\t\tspace: {\n\t\t\trecipe: \"default\"\n\t\t},\n\t\ttiddlywiki_version: $tw.version\n\t});\n\tresponse.end(text,\"utf8\");\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-tiddler-html.js": {
"title": "$:/core/modules/server/routes/get-tiddler-html.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddler-html.js\ntype: application/javascript\nmodule-type: route\n\nGET /:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/([^\\/]+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\t\ttiddler = state.wiki.getTiddler(title);\n\tif(tiddler) {\n\t\tvar renderType = tiddler.getFieldString(\"_render_type\"),\n\t\t\trenderTemplate = tiddler.getFieldString(\"_render_template\");\n\t\t// Tiddler fields '_render_type' and '_render_template' overwrite\n\t\t// system wide settings for render type and template\n\t\tif(state.wiki.isSystemTiddler(title)) {\n\t\t\trenderType = renderType || state.server.get(\"system-tiddler-render-type\");\n\t\t\trenderTemplate = renderTemplate || state.server.get(\"system-tiddler-render-template\");\n\t\t} else {\n\t\t\trenderType = renderType || state.server.get(\"tiddler-render-type\");\n\t\t\trenderTemplate = renderTemplate || state.server.get(\"tiddler-render-template\");\n\t\t}\n\t\tvar text = state.wiki.renderTiddler(renderType,renderTemplate,{parseAsInline: true, variables: {currentTiddler: title}});\n\t\t// Naughty not to set a content-type, but it's the easiest way to ensure the browser will see HTML pages as HTML, and accept plain text tiddlers as CSS or JS\n\t\tresponse.writeHead(200);\n\t\tresponse.end(text,\"utf8\");\n\t} else {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-tiddler.js": {
"title": "$:/core/modules/server/routes/get-tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nGET /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\t\ttiddler = state.wiki.getTiddler(title),\n\t\ttiddlerFields = {},\n\t\tknownFields = [\n\t\t\t\"bag\", \"created\", \"creator\", \"modified\", \"modifier\", \"permissions\", \"recipe\", \"revision\", \"tags\", \"text\", \"title\", \"type\", \"uri\"\n\t\t];\n\tif(tiddler) {\n\t\t$tw.utils.each(tiddler.fields,function(field,name) {\n\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\tif(knownFields.indexOf(name) !== -1) {\n\t\t\t\ttiddlerFields[name] = value;\n\t\t\t} else {\n\t\t\t\ttiddlerFields.fields = tiddlerFields.fields || {};\n\t\t\t\ttiddlerFields.fields[name] = value;\n\t\t\t}\n\t\t});\n\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\ttiddlerFields.bag = \"default\";\n\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\t\tresponse.end(JSON.stringify(tiddlerFields),\"utf8\");\n\t} else {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-tiddlers-json.js": {
"title": "$:/core/modules/server/routes/get-tiddlers-json.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddlers-json.js\ntype: application/javascript\nmodule-type: route\n\nGET /recipes/default/tiddlers.json?filter=<filter>\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DEFAULT_FILTER = \"[all[tiddlers]!is[system]sort[title]]\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers.json$/;\n\nexports.handler = function(request,response,state) {\n\tvar filter = state.queryParameters.filter || DEFAULT_FILTER;\n\tif(state.wiki.getTiddlerText(\"$:/config/Server/AllowAllExternalFilters\") !== \"yes\") {\n\t\tif(state.wiki.getTiddlerText(\"$:/config/Server/ExternalFilters/\" + filter) !== \"yes\") {\n\t\t\tconsole.log(\"Blocked attempt to GET /recipes/default/tiddlers.json with filter: \" + filter);\n\t\t\tresponse.writeHead(403);\n\t\t\tresponse.end();\n\t\t\treturn;\n\t\t}\n\t}\n\tif(state.wiki.getTiddlerText(\"$:/config/SyncSystemTiddlersFromServer\") === \"no\") {\n\t\tfilter += \"+[!is[system]]\";\n\t}\n\tvar excludeFields = (state.queryParameters.exclude || \"text\").split(\",\"),\n\t\ttitles = state.wiki.filterTiddlers(filter);\n\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\tvar tiddlers = [];\n\t$tw.utils.each(titles,function(title) {\n\t\tvar tiddler = state.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tvar tiddlerFields = tiddler.getFieldStrings({exclude: excludeFields});\n\t\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\t\ttiddlers.push(tiddlerFields);\n\t\t}\n\t});\n\tvar text = JSON.stringify(tiddlers);\n\tresponse.end(text,\"utf8\");\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/put-tiddler.js": {
"title": "$:/core/modules/server/routes/put-tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/put-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nPUT /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"PUT\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\tfields = JSON.parse(state.data);\n\t// Pull up any subfields in the `fields` object\n\tif(fields.fields) {\n\t\t$tw.utils.each(fields.fields,function(field,name) {\n\t\t\tfields[name] = field;\n\t\t});\n\t\tdelete fields.fields;\n\t}\n\t// Remove any revision field\n\tif(fields.revision) {\n\t\tdelete fields.revision;\n\t}\n\tstate.wiki.addTiddler(new $tw.Tiddler(state.wiki.getCreationFields(),fields,{title: title},state.wiki.getModificationFields()));\n\tvar changeCount = state.wiki.getChangeCount(title).toString();\n\tresponse.writeHead(204, \"OK\",{\n\t\tEtag: \"\\\"default/\" + encodeURIComponent(title) + \"/\" + changeCount + \":\\\"\",\n\t\t\"Content-Type\": \"text/plain\"\n\t});\n\tresponse.end();\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/server.js": {
"title": "$:/core/modules/server/server.js",
"text": "/*\\\ntitle: $:/core/modules/server/server.js\ntype: application/javascript\nmodule-type: library\n\nServe tiddlers over http\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif($tw.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\"),\n\t\tquerystring = require(\"querystring\");\n}\n\n/*\nA simple HTTP server with regexp-based routes\noptions: variables - optional hashmap of variables to set (a misnomer - they are really constant parameters)\n\t\t routes - optional array of routes to use\n\t\t wiki - reference to wiki object\n*/\nfunction Server(options) {\n\tvar self = this;\n\tthis.routes = options.routes || [];\n\tthis.authenticators = options.authenticators || [];\n\tthis.wiki = options.wiki;\n\tthis.boot = options.boot || $tw.boot;\n\tthis.servername = $tw.utils.transliterateToSafeASCII(this.wiki.getTiddlerText(\"$:/SiteTitle\") || \"TiddlyWiki5\");\n\t// Initialise the variables\n\tthis.variables = $tw.utils.extend({},this.defaultVariables);\n\tif(options.variables) {\n\t\tfor(var variable in options.variables) {\n\t\t\tif(options.variables[variable]) {\n\t\t\t\tthis.variables[variable] = options.variables[variable];\n\t\t\t}\n\t\t}\t\t\n\t}\n\t$tw.utils.extend({},this.defaultVariables,options.variables);\n\t// Initialise CSRF\n\tthis.csrfDisable = this.get(\"csrf-disable\") === \"yes\";\n\t// Initialize Gzip compression\n\tthis.enableGzip = this.get(\"gzip\") === \"yes\";\n\t// Initialise authorization\n\tvar authorizedUserName = (this.get(\"username\") && this.get(\"password\")) ? this.get(\"username\") : \"(anon)\";\n\tthis.authorizationPrincipals = {\n\t\treaders: (this.get(\"readers\") || authorizedUserName).split(\",\").map($tw.utils.trim),\n\t\twriters: (this.get(\"writers\") || authorizedUserName).split(\",\").map($tw.utils.trim)\n\t}\n\t// Load and initialise authenticators\n\t$tw.modules.forEachModuleOfType(\"authenticator\", function(title,authenticatorDefinition) {\n\t\t// console.log(\"Loading server route \" + title);\n\t\tself.addAuthenticator(authenticatorDefinition.AuthenticatorClass);\n\t});\n\t// Load route handlers\n\t$tw.modules.forEachModuleOfType(\"route\", function(title,routeDefinition) {\n\t\t// console.log(\"Loading server route \" + title);\n\t\tself.addRoute(routeDefinition);\n\t});\n\t// Initialise the http vs https\n\tthis.listenOptions = null;\n\tthis.protocol = \"http\";\n\tvar tlsKeyFilepath = this.get(\"tls-key\"),\n\t\ttlsCertFilepath = this.get(\"tls-cert\");\n\tif(tlsCertFilepath && tlsKeyFilepath) {\n\t\tthis.listenOptions = {\n\t\t\tkey: fs.readFileSync(path.resolve(this.boot.wikiPath,tlsKeyFilepath),\"utf8\"),\n\t\t\tcert: fs.readFileSync(path.resolve(this.boot.wikiPath,tlsCertFilepath),\"utf8\")\n\t\t};\n\t\tthis.protocol = \"https\";\n\t}\n\tthis.transport = require(this.protocol);\n}\n\nServer.prototype.defaultVariables = {\n\tport: \"8080\",\n\thost: \"127.0.0.1\",\n\t\"root-tiddler\": \"$:/core/save/all\",\n\t\"root-render-type\": \"text/plain\",\n\t\"root-serve-type\": \"text/html\",\n\t\"tiddler-render-type\": \"text/html\",\n\t\"tiddler-render-template\": \"$:/core/templates/server/static.tiddler.html\",\n\t\"system-tiddler-render-type\": \"text/plain\",\n\t\"system-tiddler-render-template\": \"$:/core/templates/wikified-tiddler\",\n\t\"debug-level\": \"none\",\n\t\"gzip\": \"no\"\n};\n\nServer.prototype.get = function(name) {\n\treturn this.variables[name];\n};\n\nServer.prototype.addRoute = function(route) {\n\tthis.routes.push(route);\n};\n\nServer.prototype.addAuthenticator = function(AuthenticatorClass) {\n\t// Instantiate and initialise the authenticator\n\tvar authenticator = new AuthenticatorClass(this),\n\t\tresult = authenticator.init();\n\tif(typeof result === \"string\") {\n\t\t$tw.utils.error(\"Error: \" + result);\n\t} else if(result) {\n\t\t// Only use the authenticator if it initialised successfully\n\t\tthis.authenticators.push(authenticator);\n\t}\n};\n\nServer.prototype.findMatchingRoute = function(request,state) {\n\tfor(var t=0; t<this.routes.length; t++) {\n\t\tvar potentialRoute = this.routes[t],\n\t\t\tpathRegExp = potentialRoute.path,\n\t\t\tpathname = state.urlInfo.pathname,\n\t\t\tmatch;\n\t\tif(state.pathPrefix) {\n\t\t\tif(pathname.substr(0,state.pathPrefix.length) === state.pathPrefix) {\n\t\t\t\tpathname = pathname.substr(state.pathPrefix.length) || \"/\";\n\t\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t\t} else {\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t} else {\n\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t}\n\t\tif(match && request.method === potentialRoute.method) {\n\t\t\tstate.params = [];\n\t\t\tfor(var p=1; p<match.length; p++) {\n\t\t\t\tstate.params.push(match[p]);\n\t\t\t}\n\t\t\treturn potentialRoute;\n\t\t}\n\t}\n\treturn null;\n};\n\nServer.prototype.methodMappings = {\n\t\"GET\": \"readers\",\n\t\"OPTIONS\": \"readers\",\n\t\"HEAD\": \"readers\",\n\t\"PUT\": \"writers\",\n\t\"POST\": \"writers\",\n\t\"DELETE\": \"writers\"\n};\n\n/*\nCheck whether a given user is authorized for the specified authorizationType (\"readers\" or \"writers\"). Pass null or undefined as the username to check for anonymous access\n*/\nServer.prototype.isAuthorized = function(authorizationType,username) {\n\tvar principals = this.authorizationPrincipals[authorizationType] || [];\n\treturn principals.indexOf(\"(anon)\") !== -1 || (username && (principals.indexOf(\"(authenticated)\") !== -1 || principals.indexOf(username) !== -1));\n}\n\nServer.prototype.requestHandler = function(request,response,options) {\n\toptions = options || {};\n\t// Compose the state object\n\tvar self = this;\n\tvar state = {};\n\tstate.wiki = options.wiki || self.wiki;\n\tstate.boot = options.boot || self.boot;\n\tstate.server = self;\n\tstate.urlInfo = url.parse(request.url);\n\tstate.queryParameters = querystring.parse(state.urlInfo.query);\n\tstate.pathPrefix = options.pathPrefix || this.get(\"path-prefix\") || \"\";\n\t// Get the principals authorized to access this resource\n\tvar authorizationType = this.methodMappings[request.method] || \"readers\";\n\t// Check for the CSRF header if this is a write\n\tif(!this.csrfDisable && authorizationType === \"writers\" && request.headers[\"x-requested-with\"] !== \"TiddlyWiki\") {\n\t\tresponse.writeHead(403,\"'X-Requested-With' header required to login to '\" + this.servername + \"'\");\n\t\tresponse.end();\n\t\treturn;\t\t\n\t}\n\t// Check whether anonymous access is granted\n\tstate.allowAnon = this.isAuthorized(authorizationType,null);\n\t// Authenticate with the first active authenticator\n\tif(this.authenticators.length > 0) {\n\t\tif(!this.authenticators[0].authenticateRequest(request,response,state)) {\n\t\t\t// Bail if we failed (the authenticator will have sent the response)\n\t\t\treturn;\n\t\t}\t\t\n\t}\n\t// Authorize with the authenticated username\n\tif(!this.isAuthorized(authorizationType,state.authenticatedUsername)) {\n\t\tresponse.writeHead(401,\"'\" + state.authenticatedUsername + \"' is not authorized to access '\" + this.servername + \"'\");\n\t\tresponse.end();\n\t\treturn;\n\t}\n\t// Find the route that matches this path\n\tvar route = self.findMatchingRoute(request,state);\n\t// Optionally output debug info\n\tif(self.get(\"debug-level\") !== \"none\") {\n\t\tconsole.log(\"Request path:\",JSON.stringify(state.urlInfo));\n\t\tconsole.log(\"Request headers:\",JSON.stringify(request.headers));\n\t\tconsole.log(\"authenticatedUsername:\",state.authenticatedUsername);\n\t}\n\t// Return a 404 if we didn't find a route\n\tif(!route) {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t\treturn;\n\t}\n\t// Receive the request body if necessary and hand off to the route handler\n\tif(route.bodyFormat === \"stream\" || request.method === \"GET\" || request.method === \"HEAD\") {\n\t\t// Let the route handle the request stream itself\n\t\troute.handler(request,response,state);\n\t} else if(route.bodyFormat === \"string\" || !route.bodyFormat) {\n\t\t// Set the encoding for the incoming request\n\t\trequest.setEncoding(\"utf8\");\n\t\tvar data = \"\";\n\t\trequest.on(\"data\",function(chunk) {\n\t\t\tdata += chunk.toString();\n\t\t});\n\t\trequest.on(\"end\",function() {\n\t\t\tstate.data = data;\n\t\t\troute.handler(request,response,state);\n\t\t});\n\t} else if(route.bodyFormat === \"buffer\") {\n\t\tvar data = [];\n\t\trequest.on(\"data\",function(chunk) {\n\t\t\tdata.push(chunk);\n\t\t});\n\t\trequest.on(\"end\",function() {\n\t\t\tstate.data = Buffer.concat(data);\n\t\t\troute.handler(request,response,state);\n\t\t})\n\t} else {\n\t\tresponse.writeHead(400,\"Invalid bodyFormat \" + route.bodyFormat + \" in route \" + route.method + \" \" + route.path.source);\n\t\tresponse.end();\n\t}\n};\n\n/*\nListen for requests\nport: optional port number (falls back to value of \"port\" variable)\nhost: optional host address (falls back to value of \"host\" variable)\nprefix: optional prefix (falls back to value of \"path-prefix\" variable)\n*/\nServer.prototype.listen = function(port,host,prefix) {\n\tvar self = this;\n\t// Handle defaults for port and host\n\tport = port || this.get(\"port\");\n\thost = host || this.get(\"host\");\n\tprefix = prefix || this.get(\"path-prefix\") || \"\";\n\t// Check for the port being a string and look it up as an environment variable\n\tif(parseInt(port,10).toString() !== port) {\n\t\tport = process.env[port] || 8080;\n\t}\n\t// Warn if required plugins are missing\n\tif(!this.wiki.getTiddler(\"$:/plugins/tiddlywiki/tiddlyweb\") || !this.wiki.getTiddler(\"$:/plugins/tiddlywiki/filesystem\")) {\n\t\t$tw.utils.warning(\"Warning: Plugins required for client-server operation (\\\"tiddlywiki/filesystem\\\" and \\\"tiddlywiki/tiddlyweb\\\") are missing from tiddlywiki.info file\");\n\t}\n\t// Create the server\n\tvar server;\n\tif(this.listenOptions) {\n\t\tserver = this.transport.createServer(this.listenOptions,this.requestHandler.bind(this));\n\t} else {\n\t\tserver = this.transport.createServer(this.requestHandler.bind(this));\n\t}\n\t// Display the port number after we've started listening (the port number might have been specified as zero, in which case we will get an assigned port)\n\tserver.on(\"listening\",function() {\n\t\tvar address = server.address();\n\t\t$tw.utils.log(\"Serving on \" + self.protocol + \"://\" + address.address + \":\" + address.port + prefix,\"brown/orange\");\n\t\t$tw.utils.log(\"(press ctrl-C to exit)\",\"red\");\n\t});\n\t// Listen\n\treturn server.listen(port,host);\n};\n\nexports.Server = Server;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/browser-messaging.js": {
"title": "$:/core/modules/browser-messaging.js",
"text": "/*\\\ntitle: $:/core/modules/browser-messaging.js\ntype: application/javascript\nmodule-type: startup\n\nBrowser message handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"browser-messaging\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n/*\nLoad a specified url as an iframe and call the callback when it is loaded. If the url is already loaded then the existing iframe instance is used\n*/\nfunction loadIFrame(url,callback) {\n\t// Check if iframe already exists\n\tvar iframeInfo = $tw.browserMessaging.iframeInfoMap[url];\n\tif(iframeInfo) {\n\t\t// We've already got the iframe\n\t\tcallback(null,iframeInfo);\n\t} else {\n\t\t// Create the iframe and save it in the list\n\t\tvar iframe = document.createElement(\"iframe\");\n\t\tiframeInfo = {\n\t\t\turl: url,\n\t\t\tstatus: \"loading\",\n\t\t\tdomNode: iframe\n\t\t};\n\t\t$tw.browserMessaging.iframeInfoMap[url] = iframeInfo;\n\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t// Add the iframe to the DOM and hide it\n\t\tiframe.style.display = \"none\";\n\t\tiframe.setAttribute(\"library\",\"true\");\n\t\tdocument.body.appendChild(iframe);\n\t\t// Set up onload\n\t\tiframe.onload = function() {\n\t\t\tiframeInfo.status = \"loaded\";\n\t\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t\tcallback(null,iframeInfo);\n\t\t};\n\t\tiframe.onerror = function() {\n\t\t\tcallback(\"Cannot load iframe\");\n\t\t};\n\t\ttry {\n\t\t\tiframe.src = url;\n\t\t} catch(ex) {\n\t\t\tcallback(ex);\n\t\t}\n\t}\n}\n\n/*\nUnload library iframe for given url\n*/\nfunction unloadIFrame(url){\n\t$tw.utils.each(document.getElementsByTagName('iframe'), function(iframe) {\n\t\tif(iframe.getAttribute(\"library\") === \"true\" &&\n\t\t iframe.getAttribute(\"src\") === url) {\n\t\t\tiframe.parentNode.removeChild(iframe);\n\t\t}\n\t});\n}\n\nfunction saveIFrameInfoTiddler(iframeInfo) {\n\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),{\n\t\ttitle: \"$:/temp/ServerConnection/\" + iframeInfo.url,\n\t\ttext: iframeInfo.status,\n\t\ttags: [\"$:/tags/ServerConnection\"],\n\t\turl: iframeInfo.url\n\t},$tw.wiki.getModificationFields()));\n}\n\nexports.startup = function() {\n\t// Initialise the store of iframes we've created\n\t$tw.browserMessaging = {\n\t\tiframeInfoMap: {} // Hashmap by URL of {url:,status:\"loading/loaded\",domNode:}\n\t};\n\t// Listen for widget messages to control loading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\tif(url) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers.json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-info\",\n\t\t\t\t\t\t\tinfoTitlePrefix: paramObject.infoTitlePrefix || \"$:/temp/RemoteAssetInfo/\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Listen for widget messages to control unloading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-unload-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\t$tw.browserMessaging.iframeInfoMap[url] = undefined;\n\t\tif(url) {\n\t\t\tunloadIFrame(url);\n\t\t\t$tw.utils.each(\n\t\t\t\t$tw.wiki.filterTiddlers(\"[[$:/temp/ServerConnection/\" + url + \"]] [prefix[$:/temp/RemoteAssetInfo/\" + url + \"/]]\"),\n\t\t\t\tfunction(title) {\n\t\t\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-from-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url,\n\t\t\ttitle = paramObject.title;\n\t\tif(url && title) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers/\" + encodeURIComponent(title) + \".json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-tiddler\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Listen for window messages from other windows\n\twindow.addEventListener(\"message\",function listener(event){\n\t\t// console.log(\"browser-messaging: \",document.location.toString())\n\t\t// console.log(\"browser-messaging: Received message from\",event.origin);\n\t\t// console.log(\"browser-messaging: Message content\",event.data);\n\t\tswitch(event.data.verb) {\n\t\t\tcase \"GET-RESPONSE\":\n\t\t\t\tif(event.data.status.charAt(0) === \"2\") {\n\t\t\t\t\tif(event.data.cookies) {\n\t\t\t\t\t\tif(event.data.cookies.type === \"save-info\") {\n\t\t\t\t\t\t\tvar tiddlers = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\t\t\t\t\ttitle: event.data.cookies.infoTitlePrefix + event.data.cookies.url + \"/\" + tiddler.title,\n\t\t\t\t\t\t\t\t\t\"original-title\": tiddler.title,\n\t\t\t\t\t\t\t\t\ttext: \"\",\n\t\t\t\t\t\t\t\t\ttype: \"text/vnd.tiddlywiki\",\n\t\t\t\t\t\t\t\t\t\"original-type\": tiddler.type,\n\t\t\t\t\t\t\t\t\t\"plugin-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-plugin-type\": tiddler[\"plugin-type\"],\n\t\t\t\t\t\t\t\t\t\"module-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-module-type\": tiddler[\"module-type\"],\n\t\t\t\t\t\t\t\t\ttags: [\"$:/tags/RemoteAssetInfo\"],\n\t\t\t\t\t\t\t\t\t\"original-tags\": $tw.utils.stringifyList(tiddler.tags || []),\n\t\t\t\t\t\t\t\t\t\"server-url\": event.data.cookies.url\n\t\t\t\t\t\t\t\t},$tw.wiki.getModificationFields()));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else if(event.data.cookies.type === \"save-tiddler\") {\n\t\t\t\t\t\t\tvar tiddler = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t},false);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/commands.js": {
"title": "$:/core/modules/startup/commands.js",
"text": "/*\\\ntitle: $:/core/modules/startup/commands.js\ntype: application/javascript\nmodule-type: startup\n\nCommand processing\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"commands\";\nexports.platforms = [\"node\"];\nexports.after = [\"story\"];\nexports.synchronous = false;\n\nexports.startup = function(callback) {\n\t// On the server, start a commander with the command line arguments\n\tvar commander = new $tw.Commander(\n\t\t$tw.boot.argv,\n\t\tfunction(err) {\n\t\t\tif(err) {\n\t\t\t\treturn $tw.utils.error(\"Error: \" + err);\n\t\t\t}\n\t\t\tcallback();\n\t\t},\n\t\t$tw.wiki,\n\t\t{output: process.stdout, error: process.stderr}\n\t);\n\tcommander.execute();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/CSSescape.js": {
"title": "$:/core/modules/startup/CSSescape.js",
"text": "/*\\\ntitle: $:/core/modules/startup/CSSescape.js\ntype: application/javascript\nmodule-type: startup\n\nPolyfill for CSS.escape()\n\n\\*/\n(function(root,factory){\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"css-escape\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n/*! https://mths.be/cssescape v1.5.1 by @mathias | MIT license */\n// https://github.com/umdjs/umd/blob/master/returnExports.js\nexports.startup = factory(root);\n}(typeof global != 'undefined' ? global : this, function(root) {\n\n\tif (root.CSS && root.CSS.escape) {\n\t\treturn;\n\t}\n\n\t// https://drafts.csswg.org/cssom/#serialize-an-identifier\n\tvar cssEscape = function(value) {\n\t\tif (arguments.length == 0) {\n\t\t\tthrow new TypeError('`CSS.escape` requires an argument.');\n\t\t}\n\t\tvar string = String(value);\n\t\tvar length = string.length;\n\t\tvar index = -1;\n\t\tvar codeUnit;\n\t\tvar result = '';\n\t\tvar firstCodeUnit = string.charCodeAt(0);\n\t\twhile (++index < length) {\n\t\t\tcodeUnit = string.charCodeAt(index);\n\t\t\t// Note: there’s no need to special-case astral symbols, surrogate\n\t\t\t// pairs, or lone surrogates.\n\n\t\t\t// If the character is NULL (U+0000), then the REPLACEMENT CHARACTER\n\t\t\t// (U+FFFD).\n\t\t\tif (codeUnit == 0x0000) {\n\t\t\t\tresult += '\\uFFFD';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is in the range [\\1-\\1F] (U+0001 to U+001F) or is\n\t\t\t\t// U+007F, […]\n\t\t\t\t(codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F ||\n\t\t\t\t// If the character is the first character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039), […]\n\t\t\t\t(index == 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||\n\t\t\t\t// If the character is the second character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039) and the first character is a `-` (U+002D), […]\n\t\t\t\t(\n\t\t\t\t\tindex == 1 &&\n\t\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 &&\n\t\t\t\t\tfirstCodeUnit == 0x002D\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character-as-code-point\n\t\t\t\tresult += '\\\\' + codeUnit.toString(16) + ' ';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is the first character and is a `-` (U+002D), and\n\t\t\t\t// there is no second character, […]\n\t\t\t\tindex == 0 &&\n\t\t\t\tlength == 1 &&\n\t\t\t\tcodeUnit == 0x002D\n\t\t\t) {\n\t\t\t\tresult += '\\\\' + string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If the character is not handled by one of the above rules and is\n\t\t\t// greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or\n\t\t\t// is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to\n\t\t\t// U+005A), or [a-z] (U+0061 to U+007A), […]\n\t\t\tif (\n\t\t\t\tcodeUnit >= 0x0080 ||\n\t\t\t\tcodeUnit == 0x002D ||\n\t\t\t\tcodeUnit == 0x005F ||\n\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 ||\n\t\t\t\tcodeUnit >= 0x0041 && codeUnit <= 0x005A ||\n\t\t\t\tcodeUnit >= 0x0061 && codeUnit <= 0x007A\n\t\t\t) {\n\t\t\t\t// the character itself\n\t\t\t\tresult += string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Otherwise, the escaped character.\n\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character\n\t\t\tresult += '\\\\' + string.charAt(index);\n\n\t\t}\n\t\treturn result;\n\t};\n\n\tif (!root.CSS) {\n\t\troot.CSS = {};\n\t}\n\n\troot.CSS.escape = cssEscape;\n\n}));\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/favicon.js": {
"title": "$:/core/modules/startup/favicon.js",
"text": "/*\\\ntitle: $:/core/modules/startup/favicon.js\ntype: application/javascript\nmodule-type: startup\n\nFavicon handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"favicon\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\t\t\n// Favicon tiddler\nvar FAVICON_TITLE = \"$:/favicon.ico\";\n\nexports.startup = function() {\n\t// Set up the favicon\n\tsetFavicon();\n\t// Reset the favicon when the tiddler changes\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,FAVICON_TITLE)) {\n\t\t\tsetFavicon();\n\t\t}\n\t});\n};\n\nfunction setFavicon() {\n\tvar tiddler = $tw.wiki.getTiddler(FAVICON_TITLE);\n\tif(tiddler) {\n\t\tvar faviconLink = document.getElementById(\"faviconLink\");\n\t\tfaviconLink.setAttribute(\"href\",$tw.utils.makeDataUri(tiddler.fields.text,tiddler.fields.type,tiddler.fields._canonical_uri));\n\t}\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/info.js": {
"title": "$:/core/modules/startup/info.js",
"text": "/*\\\ntitle: $:/core/modules/startup/info.js\ntype: application/javascript\nmodule-type: startup\n\nInitialise $:/info tiddlers via $:/temp/info-plugin pseudo-plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"info\";\nexports.before = [\"startup\"];\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\nvar TITLE_INFO_PLUGIN = \"$:/temp/info-plugin\";\n\nexports.startup = function() {\n\t// Function to bake the info plugin with new tiddlers\n\tvar updateInfoPlugin = function(tiddlerFieldsArray) {\n\t\t// Get the existing tiddlers\n\t\tvar json = $tw.wiki.getTiddlerData(TITLE_INFO_PLUGIN,{tiddlers: {}});\n\t\t// Add the new ones\n\t\t$tw.utils.each(tiddlerFieldsArray,function(fields) {\n\t\t\tif(fields && fields.title) {\n\t\t\t\tjson.tiddlers[fields.title] = fields;\n\t\t\t}\n\t\t});\n\t\t// Bake the info tiddlers into a plugin. We use the non-standard plugin-type \"info\" because ordinary plugins are only registered asynchronously after being loaded dynamically\n\t\tvar fields = {\n\t\t\ttitle: TITLE_INFO_PLUGIN,\n\t\t\ttype: \"application/json\",\n\t\t\t\"plugin-type\": \"info\",\n\t\t\ttext: JSON.stringify(json,null,$tw.config.preferences.jsonSpaces)\n\t\t};\n\t\t$tw.wiki.addTiddler(new $tw.Tiddler(fields));\n\n\t};\n\t// Collect up the info tiddlers\n\tvar tiddlerFieldsArray = [];\n\t// Give each info module a chance to provide as many info tiddlers as they want as an array, and give them a callback for dynamically updating them\n\t$tw.modules.forEachModuleOfType(\"info\",function(title,moduleExports) {\n\t\tif(moduleExports && moduleExports.getInfoTiddlerFields) {\n\t\t\tArray.prototype.push.apply(tiddlerFieldsArray,moduleExports.getInfoTiddlerFields(updateInfoPlugin));\n\t\t}\n\t});\n\tupdateInfoPlugin(tiddlerFieldsArray);\n\tvar changes = $tw.wiki.readPluginInfo([TITLE_INFO_PLUGIN]);\n\t$tw.wiki.registerPluginTiddlers(\"info\",[TITLE_INFO_PLUGIN]);\n\t$tw.wiki.unpackPluginTiddlers();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/load-modules.js": {
"title": "$:/core/modules/startup/load-modules.js",
"text": "/*\\\ntitle: $:/core/modules/startup/load-modules.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"load-modules\";\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Load modules\n\t$tw.modules.applyMethods(\"utils\",$tw.utils);\n\tif($tw.node) {\n\t\t$tw.modules.applyMethods(\"utils-node\",$tw.utils);\n\t}\n\t$tw.modules.applyMethods(\"global\",$tw);\n\t$tw.modules.applyMethods(\"config\",$tw.config);\n\t$tw.Tiddler.fieldModules = $tw.modules.getModulesByTypeAsHashmap(\"tiddlerfield\");\n\t$tw.modules.applyMethods(\"tiddlermethod\",$tw.Tiddler.prototype);\n\t$tw.modules.applyMethods(\"wikimethod\",$tw.Wiki.prototype);\n\t$tw.wiki.addIndexersToWiki();\n\t$tw.modules.applyMethods(\"tiddlerdeserializer\",$tw.Wiki.tiddlerDeserializerModules);\n\t$tw.macros = $tw.modules.getModulesByTypeAsHashmap(\"macro\");\n\t$tw.wiki.initParsers();\n\t$tw.Commander.initCommands();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/password.js": {
"title": "$:/core/modules/startup/password.js",
"text": "/*\\\ntitle: $:/core/modules/startup/password.js\ntype: application/javascript\nmodule-type: startup\n\nPassword handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"password\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t$tw.rootWidget.addEventListener(\"tm-set-password\",function(event) {\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: $tw.language.getString(\"Encryption/PromptSetPassword\"),\n\t\t\tnoUserName: true,\n\t\t\tsubmitText: $tw.language.getString(\"Encryption/SetPassword\"),\n\t\t\tcanCancel: true,\n\t\t\trepeatPassword: true,\n\t\t\tcallback: function(data) {\n\t\t\t\tif(data) {\n\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t}\n\t\t\t\treturn true; // Get rid of the password prompt\n\t\t\t}\n\t\t});\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-clear-password\",function(event) {\n\t\tif($tw.browser) {\n\t\t\tif(!confirm($tw.language.getString(\"Encryption/ConfirmClearPassword\"))) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t$tw.crypto.setPassword(null);\n\t});\n\t// Ensure that $:/isEncrypted is maintained properly\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,\"$:/isEncrypted\")) {\n\t\t\t$tw.crypto.updateCryptoStateTiddler();\n\t\t}\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/plugins.js": {
"title": "$:/core/modules/startup/plugins.js",
"text": "/*\\\ntitle: $:/core/modules/startup/plugins.js\ntype: application/javascript\nmodule-type: startup\n\nStartup logic concerned with managing plugins\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"plugins\";\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\nvar TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE = \"$:/status/RequireReloadDueToPluginChange\";\n\nvar PREFIX_CONFIG_REGISTER_PLUGIN_TYPE = \"$:/config/RegisterPluginType/\";\n\nexports.startup = function() {\n\t$tw.wiki.addTiddler({title: TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE,text: \"no\"});\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\t// Work out which of the changed tiddlers are plugins that we need to reregister\n\t\tvar changesToProcess = [],\n\t\t\trequireReloadDueToPluginChange = false;\n\t\t$tw.utils.each(Object.keys(changes),function(title) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title),\n\t\t\t\trequiresReload = $tw.wiki.doesPluginRequireReload(title);\n\t\t\tif(requiresReload) {\n\t\t\t\trequireReloadDueToPluginChange = true;\n\t\t\t} else if(tiddler) {\n\t\t\t\tvar pluginType = tiddler.fields[\"plugin-type\"];\n\t\t\t\tif($tw.wiki.getTiddlerText(PREFIX_CONFIG_REGISTER_PLUGIN_TYPE + (tiddler.fields[\"plugin-type\"] || \"\"),\"no\") === \"yes\") {\n\t\t\t\t\tchangesToProcess.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t// Issue warning if any of the tiddlers require a reload\n\t\tif(requireReloadDueToPluginChange) {\n\t\t\t$tw.wiki.addTiddler({title: TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE,text: \"yes\"});\n\t\t}\n\t\t// Read or delete the plugin info of the changed tiddlers\n\t\tif(changesToProcess.length > 0) {\n\t\t\tvar changes = $tw.wiki.readPluginInfo(changesToProcess);\n\t\t\tif(changes.modifiedPlugins.length > 0 || changes.deletedPlugins.length > 0) {\n\t\t\t\tvar changedShadowTiddlers = {};\n\t\t\t\t// Collect the shadow tiddlers of any deleted plugins\n\t\t\t\t$tw.utils.each(changes.deletedPlugins,function(pluginTitle) {\n\t\t\t\t\tvar pluginInfo = $tw.wiki.getPluginInfo(pluginTitle);\n\t\t\t\t\tif(pluginInfo) {\n\t\t\t\t\t\t$tw.utils.each(Object.keys(pluginInfo.tiddlers),function(title) {\n\t\t\t\t\t\t\tchangedShadowTiddlers[title] = true;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t// Collect the shadow tiddlers of any modified plugins\n\t\t\t\t$tw.utils.each(changes.modifiedPlugins,function(pluginTitle) {\n\t\t\t\t\tvar pluginInfo = $tw.wiki.getPluginInfo(pluginTitle);\n\t\t\t\t\tif(pluginInfo) {\n\t\t\t\t\t\t$tw.utils.each(Object.keys(pluginInfo.tiddlers),function(title) {\n\t\t\t\t\t\t\tchangedShadowTiddlers[title] = false;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t// (Re-)register any modified plugins\n\t\t\t\t$tw.wiki.registerPluginTiddlers(null,changes.modifiedPlugins);\n\t\t\t\t// Unregister any deleted plugins\n\t\t\t\t$tw.wiki.unregisterPluginTiddlers(null,changes.deletedPlugins);\n\t\t\t\t// Unpack the shadow tiddlers\n\t\t\t\t$tw.wiki.unpackPluginTiddlers();\n\t\t\t\t// Queue change events for the changed shadow tiddlers\n\t\t\t\t$tw.utils.each(Object.keys(changedShadowTiddlers),function(title) {\n\t\t\t\t\t$tw.wiki.enqueueTiddlerEvent(title,changedShadowTiddlers[title]);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/render.js": {
"title": "$:/core/modules/startup/render.js",
"text": "/*\\\ntitle: $:/core/modules/startup/render.js\ntype: application/javascript\nmodule-type: startup\n\nTitle, stylesheet and page rendering\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"render\";\nexports.platforms = [\"browser\"];\nexports.after = [\"story\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar PAGE_TITLE_TITLE = \"$:/core/wiki/title\";\nvar PAGE_STYLESHEET_TITLE = \"$:/core/ui/PageStylesheet\";\nvar PAGE_TEMPLATE_TITLE = \"$:/core/ui/RootTemplate\";\n\n// Time (in ms) that we defer refreshing changes to draft tiddlers\nvar DRAFT_TIDDLER_TIMEOUT_TITLE = \"$:/config/Drafts/TypingTimeout\";\nvar THROTTLE_REFRESH_TIMEOUT = 400;\n\nexports.startup = function() {\n\t// Set up the title\n\t$tw.titleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TITLE_TITLE,{document: $tw.fakeDocument, parseAsInline: true});\n\t$tw.titleContainer = $tw.fakeDocument.createElement(\"div\");\n\t$tw.titleWidgetNode.render($tw.titleContainer,null);\n\tdocument.title = $tw.titleContainer.textContent;\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.titleWidgetNode.refresh(changes,$tw.titleContainer,null)) {\n\t\t\tdocument.title = $tw.titleContainer.textContent;\n\t\t}\n\t});\n\t// Set up the styles\n\t$tw.styleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_STYLESHEET_TITLE,{document: $tw.fakeDocument});\n\t$tw.styleContainer = $tw.fakeDocument.createElement(\"style\");\n\t$tw.styleWidgetNode.render($tw.styleContainer,null);\n\t$tw.styleElement = document.createElement(\"style\");\n\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\tdocument.head.insertBefore($tw.styleElement,document.head.firstChild);\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"styleRefresh\",function(changes) {\n\t\tif($tw.styleWidgetNode.refresh(changes,$tw.styleContainer,null)) {\n\t\t\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\t\t}\n\t}));\n\t// Display the $:/core/ui/PageTemplate tiddler to kick off the display\n\t$tw.perf.report(\"mainRender\",function() {\n\t\t$tw.pageWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TEMPLATE_TITLE,{document: document, parentWidget: $tw.rootWidget, recursionMarker: \"no\"});\n\t\t$tw.pageContainer = document.createElement(\"div\");\n\t\t$tw.utils.addClass($tw.pageContainer,\"tc-page-container-wrapper\");\n\t\tdocument.body.insertBefore($tw.pageContainer,document.body.firstChild);\n\t\t$tw.pageWidgetNode.render($tw.pageContainer,null);\n \t\t$tw.hooks.invokeHook(\"th-page-refreshed\");\n\t})();\n\t// Remove any splash screen elements\n\tvar removeList = document.querySelectorAll(\".tc-remove-when-wiki-loaded\");\n\t$tw.utils.each(removeList,function(removeItem) {\n\t\tif(removeItem.parentNode) {\n\t\t\tremoveItem.parentNode.removeChild(removeItem);\n\t\t}\n\t});\n\t// Prepare refresh mechanism\n\tvar deferredChanges = Object.create(null),\n\t\ttimerId;\n\tfunction refresh() {\n\t\t// Process the refresh\n\t\t$tw.hooks.invokeHook(\"th-page-refreshing\");\n\t\t$tw.pageWidgetNode.refresh(deferredChanges);\n\t\tdeferredChanges = Object.create(null);\n\t\t$tw.hooks.invokeHook(\"th-page-refreshed\");\n\t}\n\t// Add the change event handler\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"mainRefresh\",function(changes) {\n\t\t// Check if only tiddlers that are throttled have changed\n\t\tvar onlyThrottledTiddlersHaveChanged = true;\n\t\tfor(var title in changes) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(!tiddler || !(tiddler.hasField(\"draft.of\") || tiddler.hasField(\"throttle.refresh\"))) {\n\t\t\t\tonlyThrottledTiddlersHaveChanged = false;\n\t\t\t}\n\t\t}\n\t\t// Defer the change if only drafts have changed\n\t\tif(timerId) {\n\t\t\tclearTimeout(timerId);\n\t\t}\n\t\ttimerId = null;\n\t\tif(onlyThrottledTiddlersHaveChanged) {\n\t\t\tvar timeout = parseInt($tw.wiki.getTiddlerText(DRAFT_TIDDLER_TIMEOUT_TITLE,\"\"),10);\n\t\t\tif(isNaN(timeout)) {\n\t\t\t\ttimeout = THROTTLE_REFRESH_TIMEOUT;\n\t\t\t}\n\t\t\ttimerId = setTimeout(refresh,timeout);\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t} else {\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t\trefresh();\n\t\t}\n\t}));\n\t// Fix up the link between the root widget and the page container\n\t$tw.rootWidget.domNodes = [$tw.pageContainer];\n\t$tw.rootWidget.children = [$tw.pageWidgetNode];\n\t// Run any post-render startup actions\n\t$tw.rootWidget.invokeActionsByTag(\"$:/tags/StartupAction/PostRender\");\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/rootwidget.js": {
"title": "$:/core/modules/startup/rootwidget.js",
"text": "/*\\\ntitle: $:/core/modules/startup/rootwidget.js\ntype: application/javascript\nmodule-type: startup\n\nSetup the root widget and the core root widget handlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"rootwidget\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.before = [\"story\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Install the modal message mechanism\n\t$tw.modal = new $tw.utils.Modal($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-modal\",function(event) {\n\t\t$tw.modal.display(event.param,{variables: event.paramObject, event: event});\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-show-switcher\",function(event) {\n\t\t$tw.modal.display(\"$:/core/ui/SwitcherModal\",{variables: event.paramObject, event: event});\n\t});\t\n\t// Install the notification mechanism\n\t$tw.notifier = new $tw.utils.Notifier($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-notify\",function(event) {\n\t\t$tw.notifier.display(event.param,{variables: event.paramObject});\n\t});\n\t// Install the copy-to-clipboard mechanism\n\t$tw.rootWidget.addEventListener(\"tm-copy-to-clipboard\",function(event) {\n\t\t$tw.utils.copyToClipboard(event.param);\n\t});\n\t// Install the tm-focus-selector message\n\t$tw.rootWidget.addEventListener(\"tm-focus-selector\",function(event) {\n\t\tvar selector = event.param || \"\",\n\t\t\telement;\n\t\ttry {\n\t\t\telement = document.querySelector(selector);\n\t\t} catch(e) {\n\t\t\tconsole.log(\"Error in selector: \",selector)\n\t\t}\n\t\tif(element && element.focus) {\n\t\t\telement.focus(event.paramObject);\n\t\t}\n\t});\n\t// Install the scroller\n\t$tw.pageScroller = new $tw.utils.PageScroller();\n\t$tw.rootWidget.addEventListener(\"tm-scroll\",function(event) {\n\t\t$tw.pageScroller.handleEvent(event);\n\t});\n\tvar fullscreen = $tw.utils.getFullScreenApis();\n\tif(fullscreen) {\n\t\t$tw.rootWidget.addEventListener(\"tm-full-screen\",function(event) {\n\t\t\tvar fullScreenDocument = event.event ? event.event.target.ownerDocument : document;\n\t\t\tif(event.param === \"enter\") {\n\t\t\t\tfullScreenDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t} else if(event.param === \"exit\") {\n\t\t\t\tfullScreenDocument[fullscreen._exitFullscreen]();\n\t\t\t} else {\n\t\t\t\tif(fullScreenDocument[fullscreen._fullscreenElement]) {\n\t\t\t\t\tfullScreenDocument[fullscreen._exitFullscreen]();\n\t\t\t\t} else {\n\t\t\t\t\tfullScreenDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t\t}\t\t\t\t\n\t\t\t}\n\t\t});\n\t}\n\t// If we're being viewed on a data: URI then give instructions for how to save\n\tif(document.location.protocol === \"data:\") {\n\t\t$tw.rootWidget.dispatchEvent({\n\t\t\ttype: \"tm-modal\",\n\t\t\tparam: \"$:/language/Modals/SaveInstructions\"\n\t\t});\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup.js": {
"title": "$:/core/modules/startup.js",
"text": "/*\\\ntitle: $:/core/modules/startup.js\ntype: application/javascript\nmodule-type: startup\n\nMiscellaneous startup logic for both the client and server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"startup\";\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\n// Set to `true` to enable performance instrumentation\nvar PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE = \"$:/config/Performance/Instrumentation\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.startup = function() {\n\tvar modules,n,m,f;\n\t// Minimal browser detection\n\tif($tw.browser) {\n\t\t$tw.browser.isIE = (/msie|trident/i.test(navigator.userAgent));\n\t\t$tw.browser.isFirefox = !!document.mozFullScreenEnabled;\n\t}\n\t// Platform detection\n\t$tw.platform = {};\n\tif($tw.browser) {\n\t\t$tw.platform.isMac = /Mac/.test(navigator.platform);\n\t\t$tw.platform.isWindows = /win/i.test(navigator.platform);\n\t\t$tw.platform.isLinux = /Linux/i.test(navigator.platform);\n\t} else {\n\t\tswitch(require(\"os\").platform()) {\n\t\t\tcase \"darwin\":\n\t\t\t\t$tw.platform.isMac = true;\n\t\t\t\tbreak;\n\t\t\tcase \"win32\":\n\t\t\t\t$tw.platform.isWindows = true;\n\t\t\t\tbreak;\n\t\t\tcase \"freebsd\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t\tcase \"linux\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\t// Initialise version\n\t$tw.version = $tw.utils.extractVersionInfo();\n\t// Set up the performance framework\n\t$tw.perf = new $tw.Performance($tw.wiki.getTiddlerText(PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE,\"no\") === \"yes\");\n\t// Create a root widget for attaching event handlers. By using it as the parentWidget for another widget tree, one can reuse the event handlers\n\t$tw.rootWidget = new widget.widget({\n\t\ttype: \"widget\",\n\t\tchildren: []\n\t},{\n\t\twiki: $tw.wiki,\n\t\tdocument: $tw.browser ? document : $tw.fakeDocument\n\t});\n\t// Execute any startup actions\n\t$tw.rootWidget.invokeActionsByTag(\"$:/tags/StartupAction\");\n\tif($tw.browser) {\n\t\t$tw.rootWidget.invokeActionsByTag(\"$:/tags/StartupAction/Browser\");\t\t\n\t}\n\tif($tw.node) {\n\t\t$tw.rootWidget.invokeActionsByTag(\"$:/tags/StartupAction/Node\");\t\t\n\t}\n\t// Kick off the language manager and switcher\n\t$tw.language = new $tw.Language();\n\t$tw.languageSwitcher = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"language\",\n\t\tcontrollerTitle: \"$:/language\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/languages/en-GB\"\n\t\t],\n\t\tonSwitch: function(plugins) {\n\t\t\tif($tw.browser) {\n\t\t\t\tvar pluginTiddler = $tw.wiki.getTiddler(plugins[0]);\n\t\t\t\tif(pluginTiddler) {\n\t\t\t\t\tdocument.documentElement.setAttribute(\"dir\",pluginTiddler.getFieldString(\"text-direction\") || \"auto\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.documentElement.removeAttribute(\"dir\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t// Kick off the theme manager\n\t$tw.themeManager = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"theme\",\n\t\tcontrollerTitle: \"$:/theme\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/themes/tiddlywiki/snowwhite\",\n\t\t\t\"$:/themes/tiddlywiki/vanilla\"\n\t\t]\n\t});\n\t// Kick off the keyboard manager\n\t$tw.keyboardManager = new $tw.KeyboardManager();\n\t// Listen for shortcuts\n\tif($tw.browser) {\n\t\t$tw.utils.addEventListeners(document,[{\n\t\t\tname: \"keydown\",\n\t\t\thandlerObject: $tw.keyboardManager,\n\t\t\thandlerMethod: \"handleKeydownEvent\"\n\t\t}]);\n\t}\n\t// Clear outstanding tiddler store change events to avoid an unnecessary refresh cycle at startup\n\t$tw.wiki.clearTiddlerEventQueue();\n\t// Find a working syncadaptor\n\t$tw.syncadaptor = undefined;\n\t$tw.modules.forEachModuleOfType(\"syncadaptor\",function(title,module) {\n\t\tif(!$tw.syncadaptor && module.adaptorClass) {\n\t\t\t$tw.syncadaptor = new module.adaptorClass({wiki: $tw.wiki});\n\t\t}\n\t});\n\t// Set up the syncer object if we've got a syncadaptor\n\tif($tw.syncadaptor) {\n\t\t$tw.syncer = new $tw.Syncer({wiki: $tw.wiki, syncadaptor: $tw.syncadaptor});\n\t}\n\t// Setup the saver handler\n\t$tw.saverHandler = new $tw.SaverHandler({\n\t\twiki: $tw.wiki,\n\t\tdirtyTracking: !$tw.syncadaptor,\n\t\tpreloadDirty: $tw.boot.preloadDirty || []\n\t});\n\t// Host-specific startup\n\tif($tw.browser) {\n\t\t// Install the popup manager\n\t\t$tw.popup = new $tw.utils.Popup();\n\t\t// Install the animator\n\t\t$tw.anim = new $tw.utils.Animator();\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/story.js": {
"title": "$:/core/modules/startup/story.js",
"text": "/*\\\ntitle: $:/core/modules/startup/story.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"story\";\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar DEFAULT_STORY_TITLE = \"$:/StoryList\";\nvar DEFAULT_HISTORY_TITLE = \"$:/HistoryList\";\n\n// Default tiddlers\nvar DEFAULT_TIDDLERS_TITLE = \"$:/DefaultTiddlers\";\n\n// Config\nvar CONFIG_UPDATE_ADDRESS_BAR = \"$:/config/Navigation/UpdateAddressBar\"; // Can be \"no\", \"permalink\", \"permaview\"\nvar CONFIG_UPDATE_HISTORY = \"$:/config/Navigation/UpdateHistory\"; // Can be \"yes\" or \"no\"\nvar CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD = \"$:/config/Navigation/Permalinkview/CopyToClipboard\"; // Can be \"yes\" (default) or \"no\"\nvar CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR = \"$:/config/Navigation/Permalinkview/UpdateAddressBar\"; // Can be \"yes\" (default) or \"no\"\n\n\n// Links to help, if there is no param\nvar HELP_OPEN_EXTERNAL_WINDOW = \"http://tiddlywiki.com/#WidgetMessage%3A%20tm-open-external-window\";\n\nexports.startup = function() {\n\t// Open startup tiddlers\n\topenStartupTiddlers({\n\t\tdisableHistory: $tw.boot.disableStartupNavigation\n\t});\n\tif($tw.browser) {\n\t\t// Set up location hash update\n\t\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\t\tif($tw.utils.hop(changes,DEFAULT_STORY_TITLE) || $tw.utils.hop(changes,DEFAULT_HISTORY_TITLE)) {\n\t\t\t\tupdateLocationHash({\n\t\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_UPDATE_ADDRESS_BAR,\"permaview\").trim(),\n\t\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim()\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t// Listen for changes to the browser location hash\n\t\twindow.addEventListener(\"hashchange\",function() {\n\t\t\tvar hash = $tw.utils.getLocationHash();\n\t\t\tif(hash !== $tw.locationHash) {\n\t\t\t\t$tw.locationHash = hash;\n\t\t\t\topenStartupTiddlers({defaultToCurrentStory: true});\n\t\t\t}\n\t\t},false);\n\t\t// Listen for the tm-browser-refresh message\n\t\t$tw.rootWidget.addEventListener(\"tm-browser-refresh\",function(event) {\n\t\t\twindow.location.reload(true);\n\t\t});\n\t\t// Listen for tm-open-external-window message\n\t\t$tw.rootWidget.addEventListener(\"tm-open-external-window\",function(event) {\n\t\t\tvar paramObject = event.paramObject || {},\n\t\t\t\tstrUrl = event.param || HELP_OPEN_EXTERNAL_WINDOW,\n\t\t\t\tstrWindowName = paramObject.windowName,\n\t\t\t\tstrWindowFeatures = paramObject.windowFeatures;\n\t\t\twindow.open(strUrl, strWindowName, strWindowFeatures);\n\t\t});\n\t\t// Listen for the tm-print message\n\t\t$tw.rootWidget.addEventListener(\"tm-print\",function(event) {\n\t\t\t(event.event.view || window).print();\n\t\t});\n\t\t// Listen for the tm-home message\n\t\t$tw.rootWidget.addEventListener(\"tm-home\",function(event) {\n\t\t\twindow.location.hash = \"\";\n\t\t\tvar storyFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE),\n\t\t\t\tstoryList = $tw.wiki.filterTiddlers(storyFilter);\n\t\t\t//invoke any hooks that might change the default story list\n\t\t\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t\t\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t\t\tif(storyList[0]) {\n\t\t\t\t$tw.wiki.addToHistory(storyList[0]);\n\t\t\t}\n\t\t});\n\t\t// Listen for the tm-permalink message\n\t\t$tw.rootWidget.addEventListener(\"tm-permalink\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\"yes\").trim() === \"yes\" ? \"permalink\" : \"none\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle,\n\t\t\t\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\"yes\").trim() === \"yes\" ? \"permalink\" : \"none\"\n\t\t\t});\n\t\t});\n\t\t// Listen for the tm-permaview message\n\t\t$tw.rootWidget.addEventListener(\"tm-permaview\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\"yes\").trim() === \"yes\" ? \"permaview\" : \"none\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle,\n\t\t\t\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\"yes\").trim() === \"yes\" ? \"permaview\" : \"none\"\n\t\t\t});\t\t\t\t\n\t\t});\n\t}\n};\n\n/*\nProcess the location hash to open the specified tiddlers. Options:\ndisableHistory: if true $:/History is NOT updated\ndefaultToCurrentStory: If true, the current story is retained as the default, instead of opening the default tiddlers\n*/\nfunction openStartupTiddlers(options) {\n\toptions = options || {};\n\t// Work out the target tiddler and the story filter. \"null\" means \"unspecified\"\n\tvar target = null,\n\t\tstoryFilter = null;\n\tif($tw.locationHash.length > 1) {\n\t\tvar hash = $tw.locationHash.substr(1),\n\t\t\tsplit = hash.indexOf(\":\");\n\t\tif(split === -1) {\n\t\t\ttarget = decodeURIComponent(hash.trim());\n\t\t} else {\n\t\t\ttarget = decodeURIComponent(hash.substr(0,split).trim());\n\t\t\tstoryFilter = decodeURIComponent(hash.substr(split + 1).trim());\n\t\t}\n\t}\n\t// If the story wasn't specified use the current tiddlers or a blank story\n\tif(storyFilter === null) {\n\t\tif(options.defaultToCurrentStory) {\n\t\t\tvar currStoryList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE);\n\t\t\tstoryFilter = $tw.utils.stringifyList(currStoryList);\n\t\t} else {\n\t\t\tif(target && target !== \"\") {\n\t\t\t\tstoryFilter = \"\";\n\t\t\t} else {\n\t\t\t\tstoryFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE);\n\t\t\t}\n\t\t}\n\t}\n\t// Process the story filter to get the story list\n\tvar storyList = $tw.wiki.filterTiddlers(storyFilter);\n\t// Invoke any hooks that want to change the default story list\n\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t// If the target tiddler isn't included then splice it in at the top\n\tif(target && storyList.indexOf(target) === -1) {\n\t\tstoryList.unshift(target);\n\t}\n\t// Save the story list\n\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t// Update history\n\tvar story = new $tw.Story({\n\t\twiki: $tw.wiki,\n\t\tstoryTitle: DEFAULT_STORY_TITLE,\n\t\thistoryTitle: DEFAULT_HISTORY_TITLE\n\t});\n\tif(!options.disableHistory) {\n\t\t// If a target tiddler was specified add it to the history stack\n\t\tif(target && target !== \"\") {\n\t\t\t// The target tiddler doesn't need double square brackets, but we'll silently remove them if they're present\n\t\t\tif(target.indexOf(\"[[\") === 0 && target.substr(-2) === \"]]\") {\n\t\t\t\ttarget = target.substr(2,target.length - 4);\n\t\t\t}\n\t\t\tstory.addToHistory(target);\n\t\t} else if(storyList.length > 0) {\n\t\t\tstory.addToHistory(storyList[0]);\n\t\t}\t\t\n\t}\n}\n\n/*\noptions: See below\noptions.updateAddressBar: \"permalink\", \"permaview\" or \"no\" (defaults to \"permaview\")\noptions.updateHistory: \"yes\" or \"no\" (defaults to \"no\")\noptions.copyToClipboard: \"permalink\", \"permaview\" or \"no\" (defaults to \"no\")\noptions.targetTiddler: optional title of target tiddler for permalink\n*/\nfunction updateLocationHash(options) {\n\t// Get the story and the history stack\n\tvar storyList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE),\n\t\thistoryList = $tw.wiki.getTiddlerData(DEFAULT_HISTORY_TITLE,[]),\n\t\ttargetTiddler = \"\";\n\tif(options.targetTiddler) {\n\t\ttargetTiddler = options.targetTiddler;\n\t} else {\n\t\t// The target tiddler is the one at the top of the stack\n\t\tif(historyList.length > 0) {\n\t\t\ttargetTiddler = historyList[historyList.length-1].title;\n\t\t}\n\t\t// Blank the target tiddler if it isn't present in the story\n\t\tif(storyList.indexOf(targetTiddler) === -1) {\n\t\t\ttargetTiddler = \"\";\n\t\t}\n\t}\n\t// Assemble the location hash\n\tswitch(options.updateAddressBar) {\n\t\tcase \"permalink\":\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler);\n\t\t\tbreak;\n\t\tcase \"permaview\":\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList));\n\t\t\tbreak;\n\t}\n\t// Copy URL to the clipboard\n\tswitch(options.copyToClipboard) {\n\t\tcase \"permalink\":\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \"#\" + encodeURIComponent(targetTiddler));\n\t\t\tbreak;\n\t\tcase \"permaview\":\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList)));\n\t\t\tbreak;\n\t}\n\t// Only change the location hash if we must, thus avoiding unnecessary onhashchange events\n\tif($tw.utils.getLocationHash() !== $tw.locationHash) {\n\t\tif(options.updateHistory === \"yes\") {\n\t\t\t// Assign the location hash so that history is updated\n\t\t\twindow.location.hash = $tw.locationHash;\n\t\t} else {\n\t\t\t// We use replace so that browser history isn't affected\n\t\t\twindow.location.replace(window.location.toString().split(\"#\")[0] + $tw.locationHash);\n\t\t}\n\t}\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/windows.js": {
"title": "$:/core/modules/startup/windows.js",
"text": "/*\\\ntitle: $:/core/modules/startup/windows.js\ntype: application/javascript\nmodule-type: startup\n\nSetup root widget handlers for the messages concerned with opening external browser windows\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"windows\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Global to keep track of open windows (hashmap by title)\n$tw.windows = {};\n\nexports.startup = function() {\n\t// Handle open window message\n\t$tw.rootWidget.addEventListener(\"tm-open-window\",function(event) {\n\t\t// Get the parameters\n\t\tvar refreshHandler,\n\t\t\ttitle = event.param || event.tiddlerTitle,\n\t\t\tparamObject = event.paramObject || {},\n\t\t\twindowTitle = paramObject.windowTitle || title,\n\t\t\ttemplate = paramObject.template || \"$:/core/templates/single.tiddler.window\",\n\t\t\twidth = paramObject.width || \"700\",\n\t\t\theight = paramObject.height || \"600\",\n\t\t\tvariables = $tw.utils.extend({},paramObject,{currentTiddler: title});\n\t\t// Open the window\n\t\tvar srcWindow,\n\t\t srcDocument;\n\t\t// In case that popup blockers deny opening a new window\n\t\ttry {\n\t\t\tsrcWindow = window.open(\"\",\"external-\" + title,\"scrollbars,width=\" + width + \",height=\" + height),\n\t\t\tsrcDocument = srcWindow.document;\n\t\t}\n\t\tcatch(e) {\n\t\t\treturn;\n\t\t}\n\t\t$tw.windows[title] = srcWindow;\n\t\t// Check for reopening the same window\n\t\tif(srcWindow.haveInitialisedWindow) {\n\t\t\treturn;\n\t\t}\n\t\t// Initialise the document\n\t\tsrcDocument.write(\"<html><head></head><body class='tc-body tc-single-tiddler-window'></body></html>\");\n\t\tsrcDocument.close();\n\t\tsrcDocument.title = windowTitle;\n\t\tsrcWindow.addEventListener(\"beforeunload\",function(event) {\n\t\t\tdelete $tw.windows[title];\n\t\t\t$tw.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t},false);\n\t\t// Set up the styles\n\t\tvar styleWidgetNode = $tw.wiki.makeTranscludeWidget(\"$:/core/ui/PageStylesheet\",{\n\t\t\t\tdocument: $tw.fakeDocument,\n\t\t\t\tvariables: variables,\n\t\t\t\timportPageMacros: true}),\n\t\t\tstyleContainer = $tw.fakeDocument.createElement(\"style\");\n\t\tstyleWidgetNode.render(styleContainer,null);\n\t\tvar styleElement = srcDocument.createElement(\"style\");\n\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\tsrcDocument.head.insertBefore(styleElement,srcDocument.head.firstChild);\n\t\t// Render the text of the tiddler\n\t\tvar parser = $tw.wiki.parseTiddler(template),\n\t\t\twidgetNode = $tw.wiki.makeWidget(parser,{document: srcDocument, parentWidget: $tw.rootWidget, variables: variables});\n\t\twidgetNode.render(srcDocument.body,srcDocument.body.firstChild);\n\t\t// Function to handle refreshes\n\t\trefreshHandler = function(changes) {\n\t\t\tif(styleWidgetNode.refresh(changes,styleContainer,null)) {\n\t\t\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\t\t}\n\t\t\twidgetNode.refresh(changes);\n\t\t};\n\t\t$tw.wiki.addEventListener(\"change\",refreshHandler);\n\t\t// Listen for keyboard shortcuts\n\t\t$tw.utils.addEventListeners(srcDocument,[{\n\t\t\tname: \"keydown\",\n\t\t\thandlerObject: $tw.keyboardManager,\n\t\t\thandlerMethod: \"handleKeydownEvent\"\n\t\t}]);\n\t\tsrcWindow.document.documentElement.addEventListener(\"click\",$tw.popup,true);\n\t\tsrcWindow.haveInitialisedWindow = true;\n\t});\n\t// Close open windows when unloading main window\n\t$tw.addUnloadTask(function() {\n\t\t$tw.utils.each($tw.windows,function(win) {\n\t\t\twin.close();\n\t\t});\n\t});\n\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/story.js": {
"title": "$:/core/modules/story.js",
"text": "/*\\\ntitle: $:/core/modules/story.js\ntype: application/javascript\nmodule-type: global\n\nLightweight object for managing interactions with the story and history lists.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nConstruct Story object with options:\nwiki: reference to wiki object to use to resolve tiddler titles\nstoryTitle: title of story list tiddler\nhistoryTitle: title of history list tiddler\n*/\nfunction Story(options) {\n\toptions = options || {};\n\tthis.wiki = options.wiki || $tw.wiki;\n\tthis.storyTitle = options.storyTitle || \"$:/StoryList\";\n\tthis.historyTitle = options.historyTitle || \"$:/HistoryList\";\n};\n\nStory.prototype.navigateTiddler = function(navigateTo,navigateFromTitle,navigateFromClientRect) {\n\tthis.addToStory(navigateTo,navigateFromTitle);\n\tthis.addToHistory(navigateTo,navigateFromClientRect);\n};\n\nStory.prototype.getStoryList = function() {\n\treturn this.wiki.getTiddlerList(this.storyTitle) || [];\n};\n\nStory.prototype.addToStory = function(navigateTo,navigateFromTitle,options) {\n\toptions = options || {};\n\tvar storyList = this.getStoryList();\n\t// See if the tiddler is already there\n\tvar slot = storyList.indexOf(navigateTo);\n\t// Quit if it already exists in the story river\n\tif(slot >= 0) {\n\t\treturn;\n\t}\n\t// First we try to find the position of the story element we navigated from\n\tvar fromIndex = storyList.indexOf(navigateFromTitle);\n\tif(fromIndex >= 0) {\n\t\t// The tiddler is added from inside the river\n\t\t// Determine where to insert the tiddler; Fallback is \"below\"\n\t\tswitch(options.openLinkFromInsideRiver) {\n\t\t\tcase \"top\":\n\t\t\t\tslot = 0;\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\tslot = storyList.length;\n\t\t\t\tbreak;\n\t\t\tcase \"above\":\n\t\t\t\tslot = fromIndex;\n\t\t\t\tbreak;\n\t\t\tcase \"below\": // Intentional fall-through\n\t\t\tdefault:\n\t\t\t\tslot = fromIndex + 1;\n\t\t\t\tbreak;\n\t\t}\n\t} else {\n\t\t// The tiddler is opened from outside the river. Determine where to insert the tiddler; default is \"top\"\n\t\tif(options.openLinkFromOutsideRiver === \"bottom\") {\n\t\t\t// Insert at bottom\n\t\t\tslot = storyList.length;\n\t\t} else {\n\t\t\t// Insert at top\n\t\t\tslot = 0;\n\t\t}\n\t}\n\t// Add the tiddler\n\tstoryList.splice(slot,0,navigateTo);\n\t// Save the story\n\tthis.saveStoryList(storyList);\n};\n\nStory.prototype.saveStoryList = function(storyList) {\n\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\t{title: this.storyTitle},\n\t\tstoryTiddler,\n\t\t{list: storyList},\n\t\tthis.wiki.getModificationFields()\n\t));\n};\n\nStory.prototype.addToHistory = function(navigateTo,navigateFromClientRect) {\n\tvar titles = $tw.utils.isArray(navigateTo) ? navigateTo : [navigateTo];\n\t// Add a new record to the top of the history stack\n\tvar historyList = this.wiki.getTiddlerData(this.historyTitle,[]);\n\t$tw.utils.each(titles,function(title) {\n\t\thistoryList.push({title: title, fromPageRect: navigateFromClientRect});\n\t});\n\tthis.wiki.setTiddlerData(this.historyTitle,historyList,{\"current-tiddler\": titles[titles.length-1]});\n};\n\nStory.prototype.storyCloseTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCloseAllTiddlers = function() {\n// TBD\n};\n\nStory.prototype.storyCloseOtherTiddlers = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyEditTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyDeleteTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storySaveTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCancelTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyNewTiddler = function(targetTitle) {\n// TBD\n};\n\nexports.Story = Story;\n\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/storyviews/classic.js": {
"title": "$:/core/modules/storyviews/classic.js",
"text": "/*\\\ntitle: $:/core/modules/storyviews/classic.js\ntype: application/javascript\nmodule-type: storyview\n\nViews the story as a linear sequence\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ClassicStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nClassicStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar duration = $tw.utils.getAnimationDuration()\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\tif(duration) {\n\t\t// Scroll the node into view\n\t\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\t\n\t} else {\n\t\ttargetElement.scrollIntoView();\n\t}\n};\n\nClassicStoryView.prototype.insert = function(widget) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tif(duration) {\n\t\tvar targetElement = widget.findFirstDomNode();\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(targetElement instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\t\t// Get the current height of the tiddler\n\t\tvar computedStyle = window.getComputedStyle(targetElement),\n\t\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t\t// Reset the margin once the transition is over\n\t\tsetTimeout(function() {\n\t\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t\t{transition: \"none\"},\n\t\t\t\t{marginBottom: \"\"}\n\t\t\t]);\n\t\t},duration);\n\t\t// Set up the initial position of the element\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t\t{opacity: \"0.0\"}\n\t\t]);\n\t\t$tw.utils.forceLayout(targetElement);\n\t\t// Transition to the final position\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t\t{opacity: \"1.0\"}\n\t]);\n\t}\n};\n\nClassicStoryView.prototype.remove = function(widget) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tif(duration) {\n\t\tvar targetElement = widget.findFirstDomNode(),\n\t\t\tremoveElement = function() {\n\t\t\t\twidget.removeChildDomNodes();\n\t\t\t};\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(targetElement instanceof Element)) {\n\t\t\tremoveElement();\n\t\t\treturn;\n\t\t}\n\t\t// Get the current height of the tiddler\n\t\tvar currWidth = targetElement.offsetWidth,\n\t\t\tcomputedStyle = window.getComputedStyle(targetElement),\n\t\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t\t// Remove the dom nodes of the widget at the end of the transition\n\t\tsetTimeout(removeElement,duration);\n\t\t// Animate the closure\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{transform: \"translateX(0px)\"},\n\t\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t\t{opacity: \"1.0\"}\n\t\t]);\n\t\t$tw.utils.forceLayout(targetElement);\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t\t{transform: \"translateX(-\" + currWidth + \"px)\"},\n\t\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t\t{opacity: \"0.0\"}\n\t\t]);\n\t} else {\n\t\twidget.removeChildDomNodes();\n\t}\n};\n\nexports.classic = ClassicStoryView;\n\n})();",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/storyviews/pop.js": {
"title": "$:/core/modules/storyviews/pop.js",
"text": "/*\\\ntitle: $:/core/modules/storyviews/pop.js\ntype: application/javascript\nmodule-type: storyview\n\nAnimates list insertions and removals\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar PopStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nPopStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Scroll the node into view\n\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\n};\n\nPopStoryView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Reset once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{transform: \"none\"}\n\t\t]);\n\t\t$tw.utils.setStyle(widget.document.body,[\n\t\t\t{\"overflow-x\": \"\"}\n\t\t]);\n\t},duration);\n\t// Prevent the page from overscrolling due to the zoom factor\n\t$tw.utils.setStyle(widget.document.body,[\n\t\t{\"overflow-x\": \"hidden\"}\n\t]);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(2)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t// Transition to the final position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n};\n\nPopStoryView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\tif(targetElement && targetElement.parentNode) {\n\t\t\t\twidget.removeChildDomNodes();\n\t\t\t}\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Remove the element at the end of the transition\n\tsetTimeout(removeElement,duration);\n\t// Animate the closure\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(0.1)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n};\n\nexports.pop = PopStoryView;\n\n})();\n",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/storyviews/zoomin.js": {
"title": "$:/core/modules/storyviews/zoomin.js",
"text": "/*\\\ntitle: $:/core/modules/storyviews/zoomin.js\ntype: application/javascript\nmodule-type: storyview\n\nZooms between individual tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ZoominListView = function(listWidget) {\n\tvar self = this;\n\tthis.listWidget = listWidget;\n\t// Get the index of the tiddler that is at the top of the history\n\tvar history = this.listWidget.wiki.getTiddlerDataCached(this.listWidget.historyTitle,[]),\n\t\ttargetTiddler;\n\tif(history.length > 0) {\n\t\ttargetTiddler = history[history.length-1].title;\n\t}\n\t// Make all the tiddlers position absolute, and hide all but the top (or first) one\n\t$tw.utils.each(this.listWidget.children,function(itemWidget,index) {\n\t\tvar domNode = itemWidget.findFirstDomNode();\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(domNode instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\t\tif((targetTiddler && targetTiddler !== itemWidget.parseTreeNode.itemTitle) || (!targetTiddler && index)) {\n\t\t\tdomNode.style.display = \"none\";\n\t\t} else {\n\t\t\tself.currentTiddlerDomNode = domNode;\n\t\t}\n\t\t$tw.utils.addClass(domNode,\"tc-storyview-zoomin-tiddler\");\n\t});\n};\n\nZoominListView.prototype.navigateTo = function(historyInfo) {\n\tvar duration = $tw.utils.getAnimationDuration(),\n\t\tlistElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the new tiddler be position absolute and visible so that we can measure it\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"0 0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t// Get the position of the source node, or use the centre of the window as the source position\n\tvar sourceBounds = historyInfo.fromPageRect || {\n\t\t\tleft: window.innerWidth/2 - 2,\n\t\t\ttop: window.innerHeight/2 - 2,\n\t\t\twidth: window.innerWidth/8,\n\t\t\theight: window.innerHeight/8\n\t\t};\n\t// Try to find the title node in the target tiddler\n\tvar titleDomNode = findTitleDomNode(listItemWidget) || listItemWidget.findFirstDomNode(),\n\t\tzoomBounds = titleDomNode.getBoundingClientRect();\n\t// Compute the transform for the target tiddler to make the title lie over the source rectange\n\tvar targetBounds = targetElement.getBoundingClientRect(),\n\t\tscale = sourceBounds.width / zoomBounds.width,\n\t\tx = sourceBounds.left - targetBounds.left - (zoomBounds.left - targetBounds.left) * scale,\n\t\ty = sourceBounds.top - targetBounds.top - (zoomBounds.top - targetBounds.top) * scale;\n\t// Transform the target tiddler to its starting position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(targetElement);\n\t// Apply the ending transitions with a timeout to ensure that the previously applied transformations are applied first\n\tvar self = this,\n\t\tprevCurrentTiddler = this.currentTiddlerDomNode;\n\tthis.currentTiddlerDomNode = targetElement;\n\t// Transform the target tiddler to its natural size\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{zIndex: \"500\"},\n\t]);\n\t// Transform the previous tiddler out of the way and then hide it\n\tif(prevCurrentTiddler && prevCurrentTiddler !== targetElement) {\n\t\tscale = zoomBounds.width / sourceBounds.width;\n\t\tx = zoomBounds.left - targetBounds.left - (sourceBounds.left - targetBounds.left) * scale;\n\t\ty = zoomBounds.top - targetBounds.top - (sourceBounds.top - targetBounds.top) * scale;\n\t\t$tw.utils.setStyle(prevCurrentTiddler,[\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transformOrigin: \"0 0\"},\n\t\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"},\n\t\t\t{zIndex: \"0\"}\n\t\t]);\n\t\t// Hide the tiddler when the transition has finished\n\t\tsetTimeout(function() {\n\t\t\tif(self.currentTiddlerDomNode !== prevCurrentTiddler) {\n\t\t\t\tprevCurrentTiddler.style.display = \"none\";\n\t\t\t}\n\t\t},duration);\n\t}\n\t// Scroll the target into view\n//\t$tw.pageScroller.scrollIntoView(targetElement);\n};\n\n/*\nFind the first child DOM node of a widget that has the class \"tc-title\"\n*/\nfunction findTitleDomNode(widget,targetClass) {\n\ttargetClass = targetClass || \"tc-title\";\n\tvar domNode = widget.findFirstDomNode();\n\tif(domNode && domNode.querySelector) {\n\t\treturn domNode.querySelector(\".\" + targetClass);\n\t}\n\treturn null;\n}\n\nZoominListView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the newly inserted node position absolute and hidden\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"none\"}\n\t]);\n};\n\nZoominListView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\twidget.removeChildDomNodes();\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Abandon if hidden\n\tif(targetElement.style.display != \"block\" ) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Set up the tiddler that is being closed\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\t// We'll move back to the previous or next element in the story\n\tvar toWidget = widget.previousSibling();\n\tif(!toWidget) {\n\t\ttoWidget = widget.nextSibling();\n\t}\n\tvar toWidgetDomNode = toWidget && toWidget.findFirstDomNode();\n\t// Set up the tiddler we're moving back in\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.addClass(toWidgetDomNode,\"tc-storyview-zoomin-tiddler\");\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{display: \"block\"},\n\t\t\t{transformOrigin: \"50% 50%\"},\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(10)\"},\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0\"},\n\t\t\t{zIndex: \"500\"}\n\t\t]);\n\t\tthis.currentTiddlerDomNode = toWidgetDomNode;\n\t}\n\t// Animate them both\n\t// Force layout\n\t$tw.utils.forceLayout(this.listWidget.parentDomNode);\n\t// First, the tiddler we're closing\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(0.1)\"},\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"0\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\tsetTimeout(removeElement,duration);\n\t// Now the tiddler we're going back to\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t\t{opacity: \"1\"}\n\t\t]);\n\t}\n\treturn true; // Indicate that we'll delete the DOM node\n};\n\nexports.zoomin = ZoominListView;\n\n})();\n",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/syncer.js": {
"title": "$:/core/modules/syncer.js",
"text": "/*\\\ntitle: $:/core/modules/syncer.js\ntype: application/javascript\nmodule-type: global\n\nThe syncer tracks changes to the store and synchronises them to a remote data store represented as a \"sync adaptor\"\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDefaults\n*/\nSyncer.prototype.titleIsLoggedIn = \"$:/status/IsLoggedIn\";\nSyncer.prototype.titleIsAnonymous = \"$:/status/IsAnonymous\";\nSyncer.prototype.titleIsReadOnly = \"$:/status/IsReadOnly\";\nSyncer.prototype.titleUserName = \"$:/status/UserName\";\nSyncer.prototype.titleSyncFilter = \"$:/config/SyncFilter\";\nSyncer.prototype.titleSyncPollingInterval = \"$:/config/SyncPollingInterval\";\nSyncer.prototype.titleSyncDisableLazyLoading = \"$:/config/SyncDisableLazyLoading\";\nSyncer.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\nSyncer.prototype.titleSyncThrottleInterval = \"$:/config/SyncThrottleInterval\";\nSyncer.prototype.taskTimerInterval = 1 * 1000; // Interval for sync timer\nSyncer.prototype.throttleInterval = 1 * 1000; // Defer saving tiddlers if they've changed in the last 1s...\nSyncer.prototype.errorRetryInterval = 5 * 1000; // Interval to retry after an error\nSyncer.prototype.fallbackInterval = 10 * 1000; // Unless the task is older than 10s\nSyncer.prototype.pollTimerInterval = 60 * 1000; // Interval for polling for changes from the adaptor\n\n/*\nInstantiate the syncer with the following options:\nsyncadaptor: reference to syncadaptor to be used\nwiki: wiki to be synced\n*/\nfunction Syncer(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\t// Save parameters\n\tthis.syncadaptor = options.syncadaptor;\n\tthis.disableUI = !!options.disableUI;\n\tthis.titleIsLoggedIn = options.titleIsLoggedIn || this.titleIsLoggedIn;\n\tthis.titleUserName = options.titleUserName || this.titleUserName;\n\tthis.titleSyncFilter = options.titleSyncFilter || this.titleSyncFilter;\n\tthis.titleSavedNotification = options.titleSavedNotification || this.titleSavedNotification;\n\tthis.taskTimerInterval = options.taskTimerInterval || this.taskTimerInterval;\n\tthis.throttleInterval = options.throttleInterval || parseInt(this.wiki.getTiddlerText(this.titleSyncThrottleInterval,\"\"),10) || this.throttleInterval;\n\tthis.errorRetryInterval = options.errorRetryInterval || this.errorRetryInterval;\n\tthis.fallbackInterval = options.fallbackInterval || this.fallbackInterval;\n\tthis.pollTimerInterval = options.pollTimerInterval || parseInt(this.wiki.getTiddlerText(this.titleSyncPollingInterval,\"\"),10) || this.pollTimerInterval;\n\tthis.logging = \"logging\" in options ? options.logging : true;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"syncer\" + ($tw.browser ? \"-browser\" : \"\") + ($tw.node ? \"-server\" : \"\") + (this.syncadaptor.name ? (\"-\" + this.syncadaptor.name) : \"\"),{\n\t\tcolour: \"cyan\",\n\t\tenable: this.logging,\n\t\tsaveHistory: true\n\t});\n\t// Make another logger for connection errors\n\tthis.loggerConnection = new $tw.utils.Logger(\"syncer\" + ($tw.browser ? \"-browser\" : \"\") + ($tw.node ? \"-server\" : \"\") + (this.syncadaptor.name ? (\"-\" + this.syncadaptor.name) : \"\") + \"-connection\",{\n\t\tcolour: \"cyan\",\n\t\tenable: this.logging\n\t});\n\t// Ask the syncadaptor to use the main logger\n\tif(this.syncadaptor.setLoggerSaveBuffer) {\n\t\tthis.syncadaptor.setLoggerSaveBuffer(this.logger);\n\t}\n\t// Compile the dirty tiddler filter\n\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t// Record information for known tiddlers\n\tthis.readTiddlerInfo();\n\tthis.titlesToBeLoaded = {}; // Hashmap of titles of tiddlers that need loading from the server\n\tthis.titlesHaveBeenLazyLoaded = {}; // Hashmap of titles of tiddlers that have already been lazily loaded from the server\n\t// Timers\n\tthis.taskTimerId = null; // Timer for task dispatch\n\tthis.pollTimerId = null; // Timer for polling server\n\t// Number of outstanding requests\n\tthis.numTasksInProgress = 0;\n\t// Listen out for changes to tiddlers\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\t// Filter the changes to just include ones that are being synced\n\t\tvar filteredChanges = self.getSyncedTiddlers(function(callback) {\n\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\tvar tiddler = self.wiki.tiddlerExists(title) && self.wiki.getTiddler(title);\n\t\t\t\tcallback(tiddler,title);\n\t\t\t});\n\t\t});\n\t\tif(filteredChanges.length > 0) {\n\t\t\tself.processTaskQueue();\n\t\t} else {\n\t\t\t// Look for deletions of tiddlers we're already syncing\t\n\t\t\tvar outstandingDeletion = false\n\t\t\t$tw.utils.each(changes,function(change,title,object) {\n\t\t\t\tif(change.deleted && $tw.utils.hop(self.tiddlerInfo,title)) {\n\t\t\t\t\toutstandingDeletion = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(outstandingDeletion) {\n\t\t\t\tself.processTaskQueue();\n\t\t\t}\n\t\t}\n\t});\n\t// Browser event handlers\n\tif($tw.browser && !this.disableUI) {\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t\t// Listen out for login/logout/refresh events in the browser\n\t\t$tw.rootWidget.addEventListener(\"tm-login\",function(event) {\n\t\t\tvar username = event && event.paramObject && event.paramObject.username,\n\t\t\t\tpassword = event && event.paramObject && event.paramObject.password;\n\t\t\tif(username && password) {\n\t\t\t\t// Login with username and password\n\t\t\t\tself.login(username,password,function() {});\n\t\t\t} else {\n\t\t\t\t// No username and password, so we display a prompt\n\t\t\t\tself.handleLoginEvent();\t\t\t\t\n\t\t\t}\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-logout\",function() {\n\t\t\tself.handleLogoutEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-server-refresh\",function() {\n\t\t\tself.handleRefreshEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-copy-syncer-logs-to-clipboard\",function() {\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getSystemInfo() + \"\\n\\nLog:\\n\" + self.logger.getBuffer());\n\t\t});\n\t}\n\t// Listen out for lazyLoad events\n\tif(!this.disableUI && this.wiki.getTiddlerText(this.titleSyncDisableLazyLoading) !== \"yes\") {\n\t\tthis.wiki.addEventListener(\"lazyLoad\",function(title) {\n\t\t\tself.handleLazyLoadEvent(title);\n\t\t});\t\t\n\t}\n\t// Get the login status\n\tthis.getStatus(function(err,isLoggedIn) {\n\t\t// Do a sync from the server\n\t\tself.syncFromServer();\n\t});\n}\n\n/*\nShow a generic network error alert\n*/\nSyncer.prototype.displayError = function(msg,err) {\n\tif(err === ($tw.language.getString(\"Error/XMLHttpRequest\") + \": 0\")) {\n\t\tthis.loggerConnection.alert($tw.language.getString(\"Error/NetworkErrorAlert\"));\n\t\tthis.logger.log(msg + \":\",err);\n\t} else {\n\t\tthis.logger.alert(msg + \":\",err);\n\t}\n};\n\n/*\nReturn an array of the tiddler titles that are subjected to syncing\n*/\nSyncer.prototype.getSyncedTiddlers = function(source) {\n\treturn this.filterFn.call(this.wiki,source);\n};\n\n/*\nReturn an array of the tiddler titles that are subjected to syncing\n*/\nSyncer.prototype.getTiddlerRevision = function(title) {\n\tif(this.syncadaptor && this.syncadaptor.getTiddlerRevision) {\n\t\treturn this.syncadaptor.getTiddlerRevision(title);\n\t} else {\n\t\treturn this.wiki.getTiddler(title).fields.revision;\t\n\t} \n};\n\n/*\nRead (or re-read) the latest tiddler info from the store\n*/\nSyncer.prototype.readTiddlerInfo = function() {\n\t// Hashmap by title of {revision:,changeCount:,adaptorInfo:}\n\t// \"revision\" is the revision of the tiddler last seen on the server, and \"changecount\" is the corresponding local changecount\n\tthis.tiddlerInfo = {};\n\t// Record information for known tiddlers\n\tvar self = this,\n\t\ttiddlers = this.getSyncedTiddlers();\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tself.tiddlerInfo[title] = {\n\t\t\t\trevision: self.getTiddlerRevision(title),\n\t\t\t\tadaptorInfo: self.syncadaptor && self.syncadaptor.getTiddlerInfo(tiddler),\n\t\t\t\tchangeCount: self.wiki.getChangeCount(title)\n\t\t\t};\n\t\t}\n\t});\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSyncer.prototype.isDirty = function() {\n\tthis.logger.log(\"Checking dirty status\");\n\t// Check tiddlers that are in the store and included in the filter function\n\tvar titles = this.getSyncedTiddlers();\n\tfor(var index=0; index<titles.length; index++) {\n\t\tvar title = titles[index],\n\t\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\tif(this.wiki.tiddlerExists(title)) {\n\t\t\tif(tiddlerInfo) {\n\t\t\t\t// If the tiddler is known on the server and has been modified locally then it needs to be saved to the server\n\t\t\t\tif(this.wiki.getChangeCount(title) > tiddlerInfo.changeCount) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If the tiddler isn't known on the server then it needs to be saved to the server\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\t// Check tiddlers that are known from the server but not currently in the store\n\ttitles = Object.keys(this.tiddlerInfo);\n\tfor(index=0; index<titles.length; index++) {\n\t\tif(!this.wiki.tiddlerExists(titles[index])) {\n\t\t\t// There must be a pending delete\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSyncer.prototype.updateDirtyStatus = function() {\n\tif($tw.browser && !this.disableUI) {\n\t\tvar dirty = this.isDirty();\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",dirty);\n\t\tif(!dirty) {\n\t\t\tthis.loggerConnection.clearAlerts();\n\t\t}\n\t}\n};\n\n/*\nSave an incoming tiddler in the store, and updates the associated tiddlerInfo\n*/\nSyncer.prototype.storeTiddler = function(tiddlerFields) {\n\t// Save the tiddler\n\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\tthis.wiki.addTiddler(tiddler);\n\t// Save the tiddler revision and changeCount details\n\tthis.tiddlerInfo[tiddlerFields.title] = {\n\t\trevision: this.getTiddlerRevision(tiddlerFields.title),\n\t\tadaptorInfo: this.syncadaptor.getTiddlerInfo(tiddler),\n\t\tchangeCount: this.wiki.getChangeCount(tiddlerFields.title)\n\t};\n};\n\nSyncer.prototype.getStatus = function(callback) {\n\tvar self = this;\n\t// Check if the adaptor supports getStatus()\n\tif(this.syncadaptor && this.syncadaptor.getStatus) {\n\t\t// Mark us as not logged in\n\t\tthis.wiki.addTiddler({title: this.titleIsLoggedIn,text: \"no\"});\n\t\t// Get login status\n\t\tthis.syncadaptor.getStatus(function(err,isLoggedIn,username,isReadOnly,isAnonymous) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t} else {\n\t\t\t\t// Set the various status tiddlers\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsReadOnly,text: isReadOnly ? \"yes\" : \"no\"});\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsAnonymous,text: isAnonymous ? \"yes\" : \"no\"});\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsLoggedIn,text: isLoggedIn ? \"yes\" : \"no\"});\n\t\t\t\tif(isLoggedIn) {\n\t\t\t\t\tself.wiki.addTiddler({title: self.titleUserName,text: username || \"\"});\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Invoke the callback\n\t\t\tif(callback) {\n\t\t\t\tcallback(err,isLoggedIn,username);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tcallback(null,true,\"UNAUTHENTICATED\");\n\t}\n};\n\n/*\nSynchronise from the server by reading the skinny tiddler list and queuing up loads for any tiddlers that we don't already have up to date\n*/\nSyncer.prototype.syncFromServer = function() {\n\tvar self = this,\n\t\tcancelNextSync = function() {\n\t\t\tif(self.pollTimerId) {\n\t\t\t\tclearTimeout(self.pollTimerId);\n\t\t\t\tself.pollTimerId = null;\n\t\t\t}\n\t\t},\n\t\ttriggerNextSync = function() {\n\t\t\tself.pollTimerId = setTimeout(function() {\n\t\t\t\tself.pollTimerId = null;\n\t\t\t\tself.syncFromServer.call(self);\n\t\t\t},self.pollTimerInterval);\n\t\t},\n\t\tsyncSystemFromServer = (self.wiki.getTiddlerText(\"$:/config/SyncSystemTiddlersFromServer\") === \"yes\" ? true : false);\n\tif(this.syncadaptor && this.syncadaptor.getUpdatedTiddlers) {\n\t\tthis.logger.log(\"Retrieving updated tiddler list\");\n\t\tcancelNextSync();\n\t\tthis.syncadaptor.getUpdatedTiddlers(self,function(err,updates) {\n\t\t\ttriggerNextSync();\n\t\t\tif(err) {\n\t\t\t\tself.displayError($tw.language.getString(\"Error/RetrievingSkinny\"),err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(updates) {\n\t\t\t\t$tw.utils.each(updates.modifications,function(title) {\n\t\t\t\t\tself.titlesToBeLoaded[title] = true;\n\t\t\t\t});\n\t\t\t\t$tw.utils.each(updates.deletions,function(title) {\n\t\t\t\t\tif(syncSystemFromServer || !self.wiki.isSystemTiddler(title)) {\n\t\t\t\t\t\tdelete self.tiddlerInfo[title];\n\t\t\t\t\t\tself.logger.log(\"Deleting tiddler missing from server:\",title);\n\t\t\t\t\t\tself.wiki.deleteTiddler(title);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(updates.modifications.length > 0 || updates.deletions.length > 0) {\n\t\t\t\t\tself.processTaskQueue();\n\t\t\t\t}\t\t\t\t\n\t\t\t}\n\t\t});\n\t} else if(this.syncadaptor && this.syncadaptor.getSkinnyTiddlers) {\n\t\tthis.logger.log(\"Retrieving skinny tiddler list\");\n\t\tcancelNextSync();\n\t\tthis.syncadaptor.getSkinnyTiddlers(function(err,tiddlers) {\n\t\t\ttriggerNextSync();\n\t\t\t// Check for errors\n\t\t\tif(err) {\n\t\t\t\tself.displayError($tw.language.getString(\"Error/RetrievingSkinny\"),err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Keep track of which tiddlers we already know about have been reported this time\n\t\t\tvar previousTitles = Object.keys(self.tiddlerInfo);\n\t\t\t// Process each incoming tiddler\n\t\t\tfor(var t=0; t<tiddlers.length; t++) {\n\t\t\t\t// Get the incoming tiddler fields, and the existing tiddler\n\t\t\t\tvar tiddlerFields = tiddlers[t],\n\t\t\t\t\tincomingRevision = tiddlerFields.revision + \"\",\n\t\t\t\t\ttiddler = self.wiki.tiddlerExists(tiddlerFields.title) && self.wiki.getTiddler(tiddlerFields.title),\n\t\t\t\t\ttiddlerInfo = self.tiddlerInfo[tiddlerFields.title],\n\t\t\t\t\tcurrRevision = tiddlerInfo ? tiddlerInfo.revision : null,\n\t\t\t\t\tindexInPreviousTitles = previousTitles.indexOf(tiddlerFields.title);\n\t\t\t\tif(indexInPreviousTitles !== -1) {\n\t\t\t\t\tpreviousTitles.splice(indexInPreviousTitles,1);\n\t\t\t\t}\n\t\t\t\t// Ignore the incoming tiddler if it's the same as the revision we've already got\n\t\t\t\tif(currRevision !== incomingRevision) {\n\t\t\t\t\t// Only load the skinny version if we don't already have a fat version of the tiddler\n\t\t\t\t\tif(!tiddler || tiddler.fields.text === undefined) {\n\t\t\t\t\t\tself.storeTiddler(tiddlerFields);\n\t\t\t\t\t}\n\t\t\t\t\t// Do a full load of this tiddler\n\t\t\t\t\tself.titlesToBeLoaded[tiddlerFields.title] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Delete any tiddlers that were previously reported but missing this time\n\t\t\t$tw.utils.each(previousTitles,function(title) {\n\t\t\t\tif(syncSystemFromServer || !self.wiki.isSystemTiddler(title)) {\n\t\t\t\t\tdelete self.tiddlerInfo[title];\n\t\t\t\t\tself.logger.log(\"Deleting tiddler missing from server:\",title);\n\t\t\t\t\tself.wiki.deleteTiddler(title);\n\t\t\t\t}\n\t\t\t});\n\t\t\tself.processTaskQueue();\n\t\t});\n\t}\n};\n\n/*\nForce load a tiddler from the server\n*/\nSyncer.prototype.enqueueLoadTiddler = function(title) {\n\tthis.titlesToBeLoaded[title] = true;\n\tthis.processTaskQueue();\n};\n\n/*\nLazily load a skinny tiddler if we can\n*/\nSyncer.prototype.handleLazyLoadEvent = function(title) {\n\t// Ignore if the syncadaptor doesn't handle it\n\tif(!this.syncadaptor.supportsLazyLoading) {\n\t\treturn;\n\t}\n\t// Don't lazy load the same tiddler twice\n\tif(!this.titlesHaveBeenLazyLoaded[title]) {\n\t\t// Don't lazy load if the tiddler isn't included in the sync filter\n\t\tif(this.getSyncedTiddlers().indexOf(title) !== -1) {\n\t\t\t// Mark the tiddler as needing loading, and having already been lazily loaded\n\t\t\tthis.titlesToBeLoaded[title] = true;\n\t\t\tthis.titlesHaveBeenLazyLoaded[title] = true;\n\t\t}\n\t}\n};\n\n/*\nDispay a password prompt and allow the user to login\n*/\nSyncer.prototype.handleLoginEvent = function() {\n\tvar self = this;\n\tthis.getStatus(function(err,isLoggedIn,username) {\n\t\tif(!err && !isLoggedIn) {\n\t\t\tif(self.syncadaptor && self.syncadaptor.displayLoginPrompt) {\n\t\t\t\tself.syncadaptor.displayLoginPrompt(self);\n\t\t\t} else {\n\t\t\t\tself.displayLoginPrompt();\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nDispay a password prompt\n*/\nSyncer.prototype.displayLoginPrompt = function() {\n\tvar self = this;\n\tvar promptInfo = $tw.passwordPrompt.createPrompt({\n\t\tserviceName: $tw.language.getString(\"LoginToTiddlySpace\"),\n\t\tcallback: function(data) {\n\t\t\tself.login(data.username,data.password,function(err,isLoggedIn) {\n\t\t\t\tself.syncFromServer();\n\t\t\t});\n\t\t\treturn true; // Get rid of the password prompt\n\t\t}\n\t});\n};\n\n/*\nAttempt to login to TiddlyWeb.\n\tusername: username\n\tpassword: password\n\tcallback: invoked with arguments (err,isLoggedIn)\n*/\nSyncer.prototype.login = function(username,password,callback) {\n\tthis.logger.log(\"Attempting to login as\",username);\n\tvar self = this;\n\tif(this.syncadaptor.login) {\n\t\tthis.syncadaptor.login(username,password,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.getStatus(function(err,isLoggedIn,username) {\n\t\t\t\tif(callback) {\n\t\t\t\t\tcallback(err,isLoggedIn);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t} else {\n\t\tcallback(null,true);\n\t}\n};\n\n/*\nAttempt to log out of TiddlyWeb\n*/\nSyncer.prototype.handleLogoutEvent = function() {\n\tthis.logger.log(\"Attempting to logout\");\n\tvar self = this;\n\tif(this.syncadaptor.logout) {\n\t\tthis.syncadaptor.logout(function(err) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t} else {\n\t\t\t\tself.getStatus();\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nImmediately refresh from the server\n*/\nSyncer.prototype.handleRefreshEvent = function() {\n\tthis.syncFromServer();\n};\n\n/*\nProcess the next task\n*/\nSyncer.prototype.processTaskQueue = function() {\n\tvar self = this;\n\t// Only process a task if the sync adaptor is fully initialised and we're not already performing\n\t// a task. If we are already performing a task then we'll dispatch the next one when it completes\n\tif((!this.syncadaptor.isReady || this.syncadaptor.isReady()) && this.numTasksInProgress === 0) {\n\t\t// Choose the next task to perform\n\t\tvar task = this.chooseNextTask();\n\t\t// Perform the task if we had one\n\t\tif(typeof task === \"object\" && task !== null) {\n\t\t\tthis.numTasksInProgress += 1;\n\t\t\ttask.run(function(err) {\n\t\t\t\tself.numTasksInProgress -= 1;\n\t\t\t\tif(err) {\n\t\t\t\t\tself.displayError(\"Sync error while processing \" + task.type + \" of '\" + task.title + \"'\",err);\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t\tself.triggerTimeout(self.errorRetryInterval);\n\t\t\t\t} else {\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t\t// Process the next task\n\t\t\t\t\tself.processTaskQueue.call(self);\t\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// No task is ready so update the status\n\t\t\tthis.updateDirtyStatus();\n\t\t\t// And trigger a timeout if there is a pending task\n\t\t\tif(task === true) {\n\t\t\t\tthis.triggerTimeout();\t\t\t\t\n\t\t\t}\n\t\t}\n\t} else {\n\t\tthis.updateDirtyStatus();\t\t\n\t}\n};\n\nSyncer.prototype.triggerTimeout = function(interval) {\n\tvar self = this;\n\tif(!this.taskTimerId) {\n\t\tthis.taskTimerId = setTimeout(function() {\n\t\t\tself.taskTimerId = null;\n\t\t\tself.processTaskQueue.call(self);\n\t\t},interval || self.taskTimerInterval);\n\t}\n};\n\n/*\nChoose the next sync task. We prioritise saves, then deletes, then loads from the server\n\nReturns either a task object, null if there's no upcoming tasks, or the boolean true if there are pending tasks that aren't yet due\n*/\nSyncer.prototype.chooseNextTask = function() {\n\tvar thresholdLastSaved = (new Date()) - this.throttleInterval,\n\t\thavePending = null;\n\t// First we look for tiddlers that have been modified locally and need saving back to the server\n\tvar titles = this.getSyncedTiddlers();\n\tfor(var index=0; index<titles.length; index++) {\n\t\tvar title = titles[index],\n\t\t\ttiddler = this.wiki.tiddlerExists(title) && this.wiki.getTiddler(title),\n\t\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\tif(tiddler) {\n\t\t\t// If the tiddler is not known on the server, or has been modified locally no more recently than the threshold then it needs to be saved to the server\n\t\t\tvar hasChanged = !tiddlerInfo || this.wiki.getChangeCount(title) > tiddlerInfo.changeCount,\n\t\t\t\tisReadyToSave = !tiddlerInfo || !tiddlerInfo.timestampLastSaved || tiddlerInfo.timestampLastSaved < thresholdLastSaved;\n\t\t\tif(hasChanged) {\n\t\t\t\tif(isReadyToSave) {\n\t\t\t\t\treturn new SaveTiddlerTask(this,title); \t\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\thavePending = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Second, we check tiddlers that are known from the server but not currently in the store, and so need deleting on the server\n\ttitles = Object.keys(this.tiddlerInfo);\n\tfor(index=0; index<titles.length; index++) {\n\t\ttitle = titles[index];\n\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\ttiddler = this.wiki.tiddlerExists(title) && this.wiki.getTiddler(title);\n\t\tif(!tiddler) {\n\t\t\treturn new DeleteTiddlerTask(this,title);\n\t\t}\n\t}\n\t// Check for tiddlers that need loading\n\ttitle = Object.keys(this.titlesToBeLoaded)[0];\n\tif(title) {\n\t\tdelete this.titlesToBeLoaded[title];\n\t\treturn new LoadTiddlerTask(this,title);\n\t}\n\t// No tasks are ready\n\treturn havePending;\n};\n\nfunction SaveTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"save\";\n}\n\nSaveTiddlerTask.prototype.run = function(callback) {\n\tvar self = this,\n\t\tchangeCount = this.syncer.wiki.getChangeCount(this.title),\n\t\ttiddler = this.syncer.wiki.tiddlerExists(this.title) && this.syncer.wiki.getTiddler(this.title);\n\tthis.syncer.logger.log(\"Dispatching 'save' task:\",this.title);\n\tif(tiddler) {\n\t\tthis.syncer.syncadaptor.saveTiddler(tiddler,function(err,adaptorInfo,revision) {\n\t\t\t// If there's an error, exit without changing any internal state\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\t// Adjust the info stored about this tiddler\n\t\t\tself.syncer.tiddlerInfo[self.title] = {\n\t\t\t\tchangeCount: changeCount,\n\t\t\t\tadaptorInfo: adaptorInfo,\n\t\t\t\trevision: revision,\n\t\t\t\ttimestampLastSaved: new Date()\n\t\t\t};\n\t\t\t// Invoke the callback\n\t\t\tcallback(null);\n\t\t},{\n\t\t\ttiddlerInfo: self.syncer.tiddlerInfo[self.title]\n\t\t});\n\t} else {\n\t\tthis.syncer.logger.log(\" Not Dispatching 'save' task:\",this.title,\"tiddler does not exist\");\n\t\t$tw.utils.nextTick(callback(null));\n\t}\n};\n\nfunction DeleteTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"delete\";\n}\n\nDeleteTiddlerTask.prototype.run = function(callback) {\n\tvar self = this;\n\tthis.syncer.logger.log(\"Dispatching 'delete' task:\",this.title);\n\tthis.syncer.syncadaptor.deleteTiddler(this.title,function(err) {\n\t\t// If there's an error, exit without changing any internal state\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\t// Remove the info stored about this tiddler\n\t\tdelete self.syncer.tiddlerInfo[self.title];\n\t\tif($tw.boot.files){\n\t\t\t// Remove the tiddler from $tw.boot.files\n\t\t\tdelete $tw.boot.files[self.title];\n\t\t}\n\t\t// Invoke the callback\n\t\tcallback(null);\n\t},{\n\t\ttiddlerInfo: self.syncer.tiddlerInfo[this.title]\n\t});\n};\n\nfunction LoadTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"load\";\n}\n\nLoadTiddlerTask.prototype.run = function(callback) {\n\tvar self = this;\n\tthis.syncer.logger.log(\"Dispatching 'load' task:\",this.title);\n\tthis.syncer.syncadaptor.loadTiddler(this.title,function(err,tiddlerFields) {\n\t\t// If there's an error, exit without changing any internal state\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\t// Update the info stored about this tiddler\n\t\tif(tiddlerFields) {\n\t\t\tself.syncer.storeTiddler(tiddlerFields);\n\t\t}\n\t\t// Invoke the callback\n\t\tcallback(null);\n\t});\n};\n\nexports.Syncer = Syncer;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/tiddler.js": {
"title": "$:/core/modules/tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/tiddler.js\ntype: application/javascript\nmodule-type: tiddlermethod\n\nExtension methods for the $tw.Tiddler object (constructor and methods required at boot time are in boot/boot.js)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.hasTag = function(tag) {\n\treturn this.fields.tags && this.fields.tags.indexOf(tag) !== -1;\n};\n\nexports.isPlugin = function() {\n\treturn this.fields.type === \"application/json\" && this.hasField(\"plugin-type\");\n};\n\nexports.isDraft = function() {\n\treturn this.hasField(\"draft.of\");\n};\n\nexports.getFieldString = function(field) {\n\tvar value = this.fields[field];\n\t// Check for a missing field\n\tif(value === undefined || value === null) {\n\t\treturn \"\";\n\t}\n\t// Parse the field with the associated module (if any)\n\tvar fieldModule = $tw.Tiddler.fieldModules[field];\n\tif(fieldModule && fieldModule.stringify) {\n\t\treturn fieldModule.stringify.call(this,value);\n\t} else {\n\t\treturn value.toString();\n\t}\n};\n\n/*\nGet the value of a field as a list\n*/\nexports.getFieldList = function(field) {\n\tvar value = this.fields[field];\n\t// Check for a missing field\n\tif(value === undefined || value === null) {\n\t\treturn [];\n\t}\n\treturn $tw.utils.parseStringArray(value);\n};\n\n/*\nGet all the fields as a hashmap of strings. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStrings = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [];\n\tvar fields = {};\n\tfor(var field in this.fields) {\n\t\tif($tw.utils.hop(this.fields,field)) {\n\t\t\tif(exclude.indexOf(field) === -1) {\n\t\t\t\tfields[field] = this.getFieldString(field);\n\t\t\t}\n\t\t}\n\t}\n\treturn fields;\n};\n\n/*\nGet all the fields as a name:value block. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStringBlock = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [],\n\t\tfields = Object.keys(this.fields).sort(),\n\t\tresult = [];\n\tfor(var t=0; t<fields.length; t++) {\n\t\tvar field = fields[t];\n\t\tif(exclude.indexOf(field) === -1) {\n\t\t\tresult.push(field + \": \" + this.getFieldString(field));\n\t\t}\n\t}\n\treturn result.join(\"\\n\");\n};\n\nexports.getFieldDay = function(field) {\n\tif(this.cache && this.cache.day && $tw.utils.hop(this.cache.day,field) ) {\n\t\treturn this.cache.day[field];\n\t}\n\tvar day = \"\";\n\tif(this.fields[field]) {\n\t\tday = (new Date($tw.utils.parseDate(this.fields[field]))).setHours(0,0,0,0);\n\t}\n\tthis.cache.day = this.cache.day || {};\n\tthis.cache.day[field] = day;\n\treturn day;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "tiddlermethod"
},
"$:/core/modules/upgraders/plugins.js": {
"title": "$:/core/modules/upgraders/plugins.js",
"text": "/*\\\ntitle: $:/core/modules/upgraders/plugins.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that checks that plugins are newer than any already installed version\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar BLOCKED_PLUGINS = {\n\t\"$:/themes/tiddlywiki/stickytitles\": {\n\t\tversions: [\"*\"]\n\t},\n\t\"$:/plugins/tiddlywiki/fullscreen\": {\n\t\tversions: [\"*\"]\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {},\n\t\tupgradeLibrary,\n\t\tgetLibraryTiddler = function(title) {\n\t\t\tif(!upgradeLibrary) {\n\t\t\t\tupgradeLibrary = wiki.getTiddlerData(UPGRADE_LIBRARY_TITLE,{});\n\t\t\t\tupgradeLibrary.tiddlers = upgradeLibrary.tiddlers || {};\n\t\t\t}\n\t\t\treturn upgradeLibrary.tiddlers[title];\n\t\t};\n\n\t// Go through all the incoming tiddlers\n\t$tw.utils.each(titles,function(title) {\n\t\tvar incomingTiddler = tiddlers[title];\n\t\t// Check if we're dealing with a plugin\n\t\tif(incomingTiddler && incomingTiddler[\"plugin-type\"]) {\n\t\t\t// Check whether the plugin contains JS modules\n\t\t\tvar requiresReload = wiki.doesPluginInfoRequireReload(JSON.parse(incomingTiddler.text)) ? (wiki.getTiddlerText(\"$:/language/ControlPanel/Plugins/PluginWillRequireReload\") + \" \") : \"\";\n\t\t\tmessages[title] = requiresReload;\n\t\t\tif(incomingTiddler.version) {\n\t\t\t\t// Upgrade the incoming plugin if it is in the upgrade library\n\t\t\t\tvar libraryTiddler = getLibraryTiddler(title);\n\t\t\t\tif(libraryTiddler && libraryTiddler[\"plugin-type\"] && libraryTiddler.version) {\n\t\t\t\t\ttiddlers[title] = libraryTiddler;\n\t\t\t\t\tmessages[title] = requiresReload + $tw.language.getString(\"Import/Upgrader/Plugins/Upgraded\",{variables: {incoming: incomingTiddler.version, upgraded: libraryTiddler.version}});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// Suppress the incoming plugin if it is older than the currently installed one\n\t\t\t\tvar existingTiddler = wiki.getTiddler(title);\n\t\t\t\tif(existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t\t\t\t// Reject the incoming plugin by blanking all its fields\n\t\t\t\t\tif($tw.utils.checkVersions(existingTiddler.fields.version,incomingTiddler.version)) {\n\t\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Version\",{variables: {incoming: incomingTiddler.version, existing: existingTiddler.fields.version}});\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Check whether the plugin is on the blocked list\n\t\t\tvar blockInfo = BLOCKED_PLUGINS[title];\n\t\t\tif(blockInfo) {\n\t\t\t\tif(blockInfo.versions.indexOf(\"*\") !== -1 || (incomingTiddler.version && blockInfo.versions.indexOf(incomingTiddler.version) !== -1)) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Incompatible\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/upgraders/system.js": {
"title": "$:/core/modules/upgraders/system.js",
"text": "/*\\\ntitle: $:/core/modules/upgraders/system.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that suppresses certain system tiddlers that shouldn't be imported\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DONT_IMPORT_LIST = [\"$:/StoryList\",\"$:/HistoryList\"],\n\tDONT_IMPORT_PREFIX_LIST = [\"$:/temp/\",\"$:/state/\",\"$:/Import\"],\n\tWARN_IMPORT_PREFIX_LIST = [\"$:/core/modules/\"];\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {},\n\t\tshowAlert = false;\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tif(DONT_IMPORT_LIST.indexOf(title) !== -1) {\n\t\t\ttiddlers[title] = Object.create(null);\n\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/System/Suppressed\");\n\t\t} else {\n\t\t\tfor(var t=0; t<DONT_IMPORT_PREFIX_LIST.length; t++) {\n\t\t\t\tvar prefix = DONT_IMPORT_PREFIX_LIST[t];\n\t\t\t\tif(title.substr(0,prefix.length) === prefix) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/State/Suppressed\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor(var t=0; t<WARN_IMPORT_PREFIX_LIST.length; t++) {\n\t\t\t\tvar prefix = WARN_IMPORT_PREFIX_LIST[t];\n\t\t\t\tif(title.substr(0,prefix.length) === prefix && wiki.isShadowTiddler(title)) {\n\t\t\t\t\tshowAlert = true;\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/System/Warning\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\tif(showAlert) {\n\t\tvar logger = new $tw.utils.Logger(\"import\");\n\t\tlogger.alert($tw.language.getString(\"Import/Upgrader/System/Alert\"));\n\t}\n\treturn messages;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/upgraders/themetweaks.js": {
"title": "$:/core/modules/upgraders/themetweaks.js",
"text": "/*\\\ntitle: $:/core/modules/upgraders/themetweaks.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that handles the change in theme tweak storage introduced in 5.0.14-beta.\n\nPreviously, theme tweaks were stored in two data tiddlers:\n\n* $:/themes/tiddlywiki/vanilla/metrics\n* $:/themes/tiddlywiki/vanilla/settings\n\nNow, each tweak is stored in its own separate tiddler.\n\nThis upgrader copies any values from the old format to the new. The old data tiddlers are not deleted in case they have been used to store additional indexes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar MAPPINGS = {\n\t\"$:/themes/tiddlywiki/vanilla/metrics\": {\n\t\t\"fontsize\": \"$:/themes/tiddlywiki/vanilla/metrics/fontsize\",\n\t\t\"lineheight\": \"$:/themes/tiddlywiki/vanilla/metrics/lineheight\",\n\t\t\"storyleft\": \"$:/themes/tiddlywiki/vanilla/metrics/storyleft\",\n\t\t\"storytop\": \"$:/themes/tiddlywiki/vanilla/metrics/storytop\",\n\t\t\"storyright\": \"$:/themes/tiddlywiki/vanilla/metrics/storyright\",\n\t\t\"storywidth\": \"$:/themes/tiddlywiki/vanilla/metrics/storywidth\",\n\t\t\"tiddlerwidth\": \"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"\n\t},\n\t\"$:/themes/tiddlywiki/vanilla/settings\": {\n\t\t\"fontfamily\": \"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {};\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tvar mapping = MAPPINGS[title];\n\t\tif(mapping) {\n\t\t\tvar tiddler = new $tw.Tiddler(tiddlers[title]),\n\t\t\t\ttiddlerData = wiki.getTiddlerDataCached(tiddler,{});\n\t\t\tfor(var index in mapping) {\n\t\t\t\tvar mappedTitle = mapping[index];\n\t\t\t\tif(!tiddlers[mappedTitle] || tiddlers[mappedTitle].title !== mappedTitle) {\n\t\t\t\t\ttiddlers[mappedTitle] = {\n\t\t\t\t\t\ttitle: mappedTitle,\n\t\t\t\t\t\ttext: tiddlerData[index]\n\t\t\t\t\t};\n\t\t\t\t\tmessages[mappedTitle] = $tw.language.getString(\"Import/Upgrader/ThemeTweaks/Created\",{variables: {\n\t\t\t\t\t\tfrom: title + \"##\" + index\n\t\t\t\t\t}});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/utils/base64-utf8/base64-utf8.module.js": {
"text": "(function(){// From https://gist.github.com/Nijikokun/5192472\n//\n// UTF8 Module\n//\n// Cleaner and modularized utf-8 encoding and decoding library for javascript.\n//\n// copyright: MIT\n// author: Nijiko Yonskai, @nijikokun, nijikokun@gmail.com\n!function(r,e,o,t){void 0!==o.module&&o.module.exports?o.module.exports=e.apply(o):void 0!==o.define&&\"function\"===o.define&&o.define.amd?define(\"utf8\",[],e):o.utf8=e.apply(o)}(0,function(){return{encode:function(r){if(\"string\"!=typeof r)return r;r=r.replace(/\\r\\n/g,\"\\n\");for(var e,o=\"\",t=0;t<r.length;t++)if((e=r.charCodeAt(t))<128)o+=String.fromCharCode(e);else if(e>127&&e<2048)o+=String.fromCharCode(e>>6|192),o+=String.fromCharCode(63&e|128);else if(e>55295&&e<57344&&r.length>t+1){var i=e,n=r.charCodeAt(t+1);t++;var d=65536+(i-55296<<10|n-56320);o+=String.fromCharCode(d>>18|240),o+=String.fromCharCode(d>>12&63|128),o+=String.fromCharCode(d>>6&63|128),o+=String.fromCharCode(63&d|128)}else o+=String.fromCharCode(e>>12|224),o+=String.fromCharCode(e>>6&63|128),o+=String.fromCharCode(63&e|128);return o},decode:function(r){if(\"string\"!=typeof r)return r;for(var e=\"\",o=0,t=0;o<r.length;)if((t=r.charCodeAt(o))<128)e+=String.fromCharCode(t),o++;else if(t>191&&t<224)e+=String.fromCharCode((31&t)<<6|63&r.charCodeAt(o+1)),o+=2;else if(t>223&&t<240)e+=String.fromCharCode((15&t)<<12|(63&r.charCodeAt(o+1))<<6|63&r.charCodeAt(o+2)),o+=3;else{var i=(7&t)<<18|(63&r.charCodeAt(o+1))<<12|(63&r.charCodeAt(o+2))<<6|63&r.charCodeAt(o+3);e+=String.fromCharCode(55296+(i-65536>>10))+String.fromCharCode(56320+(i-65536&1023)),o+=4}return e}}},this),function(r,e,o,t){if(void 0!==o.module&&o.module.exports){if(t&&o.require)for(var i=0;i<t.length;i++)o[t[i]]=o.require(t[i]);o.module.exports=e.apply(o)}else void 0!==o.define&&\"function\"===o.define&&o.define.amd?define(\"base64\",t||[],e):o.base64=e.apply(o)}(0,function(r){var e=r||this.utf8,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";return{encode:function(r){if(void 0===e)throw{error:\"MissingMethod\",message:\"UTF8 Module is missing.\"};if(\"string\"!=typeof r)return r;r=e.encode(r);for(var t,i,n,d,f,a,h,C=\"\",c=0;c<r.length;)d=(t=r.charCodeAt(c++))>>2,f=(3&t)<<4|(i=r.charCodeAt(c++))>>4,a=(15&i)<<2|(n=r.charCodeAt(c++))>>6,h=63&n,isNaN(i)?a=h=64:isNaN(n)&&(h=64),C+=o.charAt(d)+o.charAt(f)+o.charAt(a)+o.charAt(h);return C},decode:function(r){if(void 0===e)throw{error:\"MissingMethod\",message:\"UTF8 Module is missing.\"};if(\"string\"!=typeof r)return r;r=r.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");for(var t,i,n,d,f,a,h=\"\",C=0;C<r.length;)t=o.indexOf(r.charAt(C++))<<2|(d=o.indexOf(r.charAt(C++)))>>4,i=(15&d)<<4|(f=o.indexOf(r.charAt(C++)))>>2,n=(3&f)<<6|(a=o.indexOf(r.charAt(C++))),h+=String.fromCharCode(t),64!=f&&(h+=String.fromCharCode(i)),64!=a&&(h+=String.fromCharCode(n));return e.decode(h)}}},this,[\"utf8\"]);}).call(exports);",
"type": "application/javascript",
"title": "$:/core/modules/utils/base64-utf8/base64-utf8.module.js",
"module-type": "library"
},
"$:/core/modules/utils/crypto.js": {
"title": "$:/core/modules/utils/crypto.js",
"text": "/*\\\ntitle: $:/core/modules/utils/crypto.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions related to crypto.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for an encrypted store area in the text of a TiddlyWiki file\n*/\nexports.extractEncryptedStoreArea = function(text) {\n\tvar encryptedStoreAreaStartMarker = \"<pre id=\\\"encryptedStoreArea\\\" type=\\\"text/plain\\\" style=\\\"display:none;\\\">\",\n\t\tencryptedStoreAreaStart = text.indexOf(encryptedStoreAreaStartMarker);\n\tif(encryptedStoreAreaStart !== -1) {\n\t\tvar encryptedStoreAreaEnd = text.indexOf(\"</pre>\",encryptedStoreAreaStart);\n\t\tif(encryptedStoreAreaEnd !== -1) {\n\t\t\treturn $tw.utils.htmlDecode(text.substring(encryptedStoreAreaStart + encryptedStoreAreaStartMarker.length,encryptedStoreAreaEnd-1));\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If the password is not provided then the password in the password store will be used\n*/\nexports.decryptStoreArea = function(encryptedStoreArea,password) {\n\tvar decryptedText = $tw.crypto.decrypt(encryptedStoreArea,password);\n\tif(decryptedText) {\n\t\tvar json = JSON.parse(decryptedText),\n\t\t\ttiddlers = [];\n\t\tfor(var title in json) {\n\t\t\tif(title !== \"$:/isEncrypted\") {\n\t\t\t\ttiddlers.push(json[title]);\n\t\t\t}\n\t\t}\n\t\treturn tiddlers;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If that fails, the user is prompted for a password.\nencryptedStoreArea: text of the TiddlyWiki encrypted store area\ncallback: function(tiddlers) called with the array of decrypted tiddlers\n\nThe following configuration settings are supported:\n\n$tw.config.usePasswordVault: causes any password entered by the user to also be put into the system password vault\n*/\nexports.decryptStoreAreaInteractive = function(encryptedStoreArea,callback,options) {\n\t// Try to decrypt with the current password\n\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea);\n\tif(tiddlers) {\n\t\tcallback(tiddlers);\n\t} else {\n\t\t// Prompt for a new password and keep trying\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: \"Enter a password to decrypt the imported TiddlyWiki\",\n\t\t\tnoUserName: true,\n\t\t\tcanCancel: true,\n\t\t\tsubmitText: \"Decrypt\",\n\t\t\tcallback: function(data) {\n\t\t\t\t// Exit if the user cancelled\n\t\t\t\tif(!data) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// Attempt to decrypt the tiddlers\n\t\t\t\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea,data.password);\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tif($tw.config.usePasswordVault) {\n\t\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t\t}\n\t\t\t\t\tcallback(tiddlers);\n\t\t\t\t\t// Exit and remove the password prompt\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\t\t\t\t\t// We didn't decrypt everything, so continue to prompt for password\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/csv.js": {
"title": "$:/core/modules/utils/csv.js",
"text": "/*\\\ntitle: $:/core/modules/utils/csv.js\ntype: application/javascript\nmodule-type: utils\n\nA barebones CSV parser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse a CSV string with a header row and return an array of hashmaps.\n*/\nexports.parseCsvStringWithHeader = function(text,options) {\n\toptions = options || {};\n\tvar separator = options.separator || \",\",\n\t\trows = text.split(/\\r?\\n/mg).map(function(row) {\n\t\t\treturn $tw.utils.trim(row);\n\t\t}).filter(function(row) {\n\t\t\treturn row !== \"\";\n\t\t});\n\tif(rows.length < 1) {\n\t\treturn \"Missing header row\";\n\t}\n\tvar headings = rows[0].split(separator),\n\t\tresults = [];\n\tfor(var row=1; row<rows.length; row++) {\n\t\tvar columns = rows[row].split(separator),\n\t\t\tcolumnResult = Object.create(null);\n\t\tif(columns.length !== headings.length) {\n\t\t\treturn \"Malformed CSV row '\" + rows[row] + \"'\";\n\t\t}\n\t\tfor(var column=0; column<columns.length; column++) {\n\t\t\tvar columnName = headings[column];\n\t\t\tcolumnResult[columnName] = $tw.utils.trim(columns[column] || \"\");\n\t\t}\n\t\tresults.push(columnResult);\t\t\t\n\t}\n\treturn results;\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/diff-match-patch/diff_match_patch.js": {
"text": "(function(){function diff_match_patch(){this.Diff_Timeout=1;this.Diff_EditCost=4;this.Match_Threshold=.5;this.Match_Distance=1E3;this.Patch_DeleteThreshold=.5;this.Patch_Margin=4;this.Match_MaxBits=32}var DIFF_DELETE=-1,DIFF_INSERT=1,DIFF_EQUAL=0;\ndiff_match_patch.prototype.diff_main=function(a,b,c,d){\"undefined\"==typeof d&&(d=0>=this.Diff_Timeout?Number.MAX_VALUE:(new Date).getTime()+1E3*this.Diff_Timeout);if(null==a||null==b)throw Error(\"Null input. (diff_main)\");if(a==b)return a?[[DIFF_EQUAL,a]]:[];\"undefined\"==typeof c&&(c=!0);var e=c,f=this.diff_commonPrefix(a,b);c=a.substring(0,f);a=a.substring(f);b=b.substring(f);f=this.diff_commonSuffix(a,b);var g=a.substring(a.length-f);a=a.substring(0,a.length-f);b=b.substring(0,b.length-f);a=this.diff_compute_(a,\nb,e,d);c&&a.unshift([DIFF_EQUAL,c]);g&&a.push([DIFF_EQUAL,g]);this.diff_cleanupMerge(a);return a};\ndiff_match_patch.prototype.diff_compute_=function(a,b,c,d){if(!a)return[[DIFF_INSERT,b]];if(!b)return[[DIFF_DELETE,a]];var e=a.length>b.length?a:b,f=a.length>b.length?b:a,g=e.indexOf(f);return-1!=g?(c=[[DIFF_INSERT,e.substring(0,g)],[DIFF_EQUAL,f],[DIFF_INSERT,e.substring(g+f.length)]],a.length>b.length&&(c[0][0]=c[2][0]=DIFF_DELETE),c):1==f.length?[[DIFF_DELETE,a],[DIFF_INSERT,b]]:(e=this.diff_halfMatch_(a,b))?(b=e[1],f=e[3],a=e[4],e=this.diff_main(e[0],e[2],c,d),c=this.diff_main(b,f,c,d),e.concat([[DIFF_EQUAL,\na]],c)):c&&100<a.length&&100<b.length?this.diff_lineMode_(a,b,d):this.diff_bisect_(a,b,d)};\ndiff_match_patch.prototype.diff_lineMode_=function(a,b,c){var d=this.diff_linesToChars_(a,b);a=d.chars1;b=d.chars2;d=d.lineArray;a=this.diff_main(a,b,!1,c);this.diff_charsToLines_(a,d);this.diff_cleanupSemantic(a);a.push([DIFF_EQUAL,\"\"]);for(var e=d=b=0,f=\"\",g=\"\";b<a.length;){switch(a[b][0]){case DIFF_INSERT:e++;g+=a[b][1];break;case DIFF_DELETE:d++;f+=a[b][1];break;case DIFF_EQUAL:if(1<=d&&1<=e){a.splice(b-d-e,d+e);b=b-d-e;d=this.diff_main(f,g,!1,c);for(e=d.length-1;0<=e;e--)a.splice(b,0,d[e]);b+=\nd.length}d=e=0;g=f=\"\"}b++}a.pop();return a};\ndiff_match_patch.prototype.diff_bisect_=function(a,b,c){for(var d=a.length,e=b.length,f=Math.ceil((d+e)/2),g=2*f,h=Array(g),l=Array(g),k=0;k<g;k++)h[k]=-1,l[k]=-1;h[f+1]=0;l[f+1]=0;k=d-e;for(var m=0!=k%2,p=0,x=0,w=0,q=0,t=0;t<f&&!((new Date).getTime()>c);t++){for(var v=-t+p;v<=t-x;v+=2){var n=f+v;var r=v==-t||v!=t&&h[n-1]<h[n+1]?h[n+1]:h[n-1]+1;for(var y=r-v;r<d&&y<e&&a.charAt(r)==b.charAt(y);)r++,y++;h[n]=r;if(r>d)x+=2;else if(y>e)p+=2;else if(m&&(n=f+k-v,0<=n&&n<g&&-1!=l[n])){var u=d-l[n];if(r>=\nu)return this.diff_bisectSplit_(a,b,r,y,c)}}for(v=-t+w;v<=t-q;v+=2){n=f+v;u=v==-t||v!=t&&l[n-1]<l[n+1]?l[n+1]:l[n-1]+1;for(r=u-v;u<d&&r<e&&a.charAt(d-u-1)==b.charAt(e-r-1);)u++,r++;l[n]=u;if(u>d)q+=2;else if(r>e)w+=2;else if(!m&&(n=f+k-v,0<=n&&n<g&&-1!=h[n]&&(r=h[n],y=f+r-n,u=d-u,r>=u)))return this.diff_bisectSplit_(a,b,r,y,c)}}return[[DIFF_DELETE,a],[DIFF_INSERT,b]]};\ndiff_match_patch.prototype.diff_bisectSplit_=function(a,b,c,d,e){var f=a.substring(0,c),g=b.substring(0,d);a=a.substring(c);b=b.substring(d);f=this.diff_main(f,g,!1,e);e=this.diff_main(a,b,!1,e);return f.concat(e)};\ndiff_match_patch.prototype.diff_linesToChars_=function(a,b){function c(a){for(var b=\"\",c=0,f=-1,g=d.length;f<a.length-1;){f=a.indexOf(\"\\n\",c);-1==f&&(f=a.length-1);var h=a.substring(c,f+1);c=f+1;(e.hasOwnProperty?e.hasOwnProperty(h):void 0!==e[h])?b+=String.fromCharCode(e[h]):(b+=String.fromCharCode(g),e[h]=g,d[g++]=h)}return b}var d=[],e={};d[0]=\"\";var f=c(a),g=c(b);return{chars1:f,chars2:g,lineArray:d}};\ndiff_match_patch.prototype.diff_charsToLines_=function(a,b){for(var c=0;c<a.length;c++){for(var d=a[c][1],e=[],f=0;f<d.length;f++)e[f]=b[d.charCodeAt(f)];a[c][1]=e.join(\"\")}};diff_match_patch.prototype.diff_commonPrefix=function(a,b){if(!a||!b||a.charAt(0)!=b.charAt(0))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(f,e)==b.substring(f,e)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};\ndiff_match_patch.prototype.diff_commonSuffix=function(a,b){if(!a||!b||a.charAt(a.length-1)!=b.charAt(b.length-1))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(a.length-e,a.length-f)==b.substring(b.length-e,b.length-f)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};\ndiff_match_patch.prototype.diff_commonOverlap_=function(a,b){var c=a.length,d=b.length;if(0==c||0==d)return 0;c>d?a=a.substring(c-d):c<d&&(b=b.substring(0,c));c=Math.min(c,d);if(a==b)return c;d=0;for(var e=1;;){var f=a.substring(c-e);f=b.indexOf(f);if(-1==f)return d;e+=f;if(0==f||a.substring(c-e)==b.substring(0,e))d=e,e++}};\ndiff_match_patch.prototype.diff_halfMatch_=function(a,b){function c(a,b,c){for(var d=a.substring(c,c+Math.floor(a.length/4)),e=-1,g=\"\",h,k,l,m;-1!=(e=b.indexOf(d,e+1));){var p=f.diff_commonPrefix(a.substring(c),b.substring(e)),u=f.diff_commonSuffix(a.substring(0,c),b.substring(0,e));g.length<u+p&&(g=b.substring(e-u,e)+b.substring(e,e+p),h=a.substring(0,c-u),k=a.substring(c+p),l=b.substring(0,e-u),m=b.substring(e+p))}return 2*g.length>=a.length?[h,k,l,m,g]:null}if(0>=this.Diff_Timeout)return null;\nvar d=a.length>b.length?a:b,e=a.length>b.length?b:a;if(4>d.length||2*e.length<d.length)return null;var f=this,g=c(d,e,Math.ceil(d.length/4));d=c(d,e,Math.ceil(d.length/2));if(g||d)g=d?g?g[4].length>d[4].length?g:d:d:g;else return null;if(a.length>b.length){d=g[0];e=g[1];var h=g[2];var l=g[3]}else h=g[0],l=g[1],d=g[2],e=g[3];return[d,e,h,l,g[4]]};\ndiff_match_patch.prototype.diff_cleanupSemantic=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=0,h=0,l=0,k=0;f<a.length;)a[f][0]==DIFF_EQUAL?(c[d++]=f,g=l,h=k,k=l=0,e=a[f][1]):(a[f][0]==DIFF_INSERT?l+=a[f][1].length:k+=a[f][1].length,e&&e.length<=Math.max(g,h)&&e.length<=Math.max(l,k)&&(a.splice(c[d-1],0,[DIFF_DELETE,e]),a[c[d-1]+1][0]=DIFF_INSERT,d--,d--,f=0<d?c[d-1]:-1,k=l=h=g=0,e=null,b=!0)),f++;b&&this.diff_cleanupMerge(a);this.diff_cleanupSemanticLossless(a);for(f=1;f<a.length;){if(a[f-1][0]==\nDIFF_DELETE&&a[f][0]==DIFF_INSERT){b=a[f-1][1];c=a[f][1];d=this.diff_commonOverlap_(b,c);e=this.diff_commonOverlap_(c,b);if(d>=e){if(d>=b.length/2||d>=c.length/2)a.splice(f,0,[DIFF_EQUAL,c.substring(0,d)]),a[f-1][1]=b.substring(0,b.length-d),a[f+1][1]=c.substring(d),f++}else if(e>=b.length/2||e>=c.length/2)a.splice(f,0,[DIFF_EQUAL,b.substring(0,e)]),a[f-1][0]=DIFF_INSERT,a[f-1][1]=c.substring(0,c.length-e),a[f+1][0]=DIFF_DELETE,a[f+1][1]=b.substring(e),f++;f++}f++}};\ndiff_match_patch.prototype.diff_cleanupSemanticLossless=function(a){function b(a,b){if(!a||!b)return 6;var c=a.charAt(a.length-1),d=b.charAt(0),e=c.match(diff_match_patch.nonAlphaNumericRegex_),f=d.match(diff_match_patch.nonAlphaNumericRegex_),g=e&&c.match(diff_match_patch.whitespaceRegex_),h=f&&d.match(diff_match_patch.whitespaceRegex_);c=g&&c.match(diff_match_patch.linebreakRegex_);d=h&&d.match(diff_match_patch.linebreakRegex_);var k=c&&a.match(diff_match_patch.blanklineEndRegex_),l=d&&b.match(diff_match_patch.blanklineStartRegex_);\nreturn k||l?5:c||d?4:e&&!g&&h?3:g||h?2:e||f?1:0}for(var c=1;c<a.length-1;){if(a[c-1][0]==DIFF_EQUAL&&a[c+1][0]==DIFF_EQUAL){var d=a[c-1][1],e=a[c][1],f=a[c+1][1],g=this.diff_commonSuffix(d,e);if(g){var h=e.substring(e.length-g);d=d.substring(0,d.length-g);e=h+e.substring(0,e.length-g);f=h+f}g=d;h=e;for(var l=f,k=b(d,e)+b(e,f);e.charAt(0)===f.charAt(0);){d+=e.charAt(0);e=e.substring(1)+f.charAt(0);f=f.substring(1);var m=b(d,e)+b(e,f);m>=k&&(k=m,g=d,h=e,l=f)}a[c-1][1]!=g&&(g?a[c-1][1]=g:(a.splice(c-\n1,1),c--),a[c][1]=h,l?a[c+1][1]=l:(a.splice(c+1,1),c--))}c++}};diff_match_patch.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;diff_match_patch.whitespaceRegex_=/\\s/;diff_match_patch.linebreakRegex_=/[\\r\\n]/;diff_match_patch.blanklineEndRegex_=/\\n\\r?\\n$/;diff_match_patch.blanklineStartRegex_=/^\\r?\\n\\r?\\n/;\ndiff_match_patch.prototype.diff_cleanupEfficiency=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=!1,h=!1,l=!1,k=!1;f<a.length;)a[f][0]==DIFF_EQUAL?(a[f][1].length<this.Diff_EditCost&&(l||k)?(c[d++]=f,g=l,h=k,e=a[f][1]):(d=0,e=null),l=k=!1):(a[f][0]==DIFF_DELETE?k=!0:l=!0,e&&(g&&h&&l&&k||e.length<this.Diff_EditCost/2&&3==g+h+l+k)&&(a.splice(c[d-1],0,[DIFF_DELETE,e]),a[c[d-1]+1][0]=DIFF_INSERT,d--,e=null,g&&h?(l=k=!0,d=0):(d--,f=0<d?c[d-1]:-1,l=k=!1),b=!0)),f++;b&&this.diff_cleanupMerge(a)};\ndiff_match_patch.prototype.diff_cleanupMerge=function(a){a.push([DIFF_EQUAL,\"\"]);for(var b=0,c=0,d=0,e=\"\",f=\"\",g;b<a.length;)switch(a[b][0]){case DIFF_INSERT:d++;f+=a[b][1];b++;break;case DIFF_DELETE:c++;e+=a[b][1];b++;break;case DIFF_EQUAL:1<c+d?(0!==c&&0!==d&&(g=this.diff_commonPrefix(f,e),0!==g&&(0<b-c-d&&a[b-c-d-1][0]==DIFF_EQUAL?a[b-c-d-1][1]+=f.substring(0,g):(a.splice(0,0,[DIFF_EQUAL,f.substring(0,g)]),b++),f=f.substring(g),e=e.substring(g)),g=this.diff_commonSuffix(f,e),0!==g&&(a[b][1]=f.substring(f.length-\ng)+a[b][1],f=f.substring(0,f.length-g),e=e.substring(0,e.length-g))),0===c?a.splice(b-d,c+d,[DIFF_INSERT,f]):0===d?a.splice(b-c,c+d,[DIFF_DELETE,e]):a.splice(b-c-d,c+d,[DIFF_DELETE,e],[DIFF_INSERT,f]),b=b-c-d+(c?1:0)+(d?1:0)+1):0!==b&&a[b-1][0]==DIFF_EQUAL?(a[b-1][1]+=a[b][1],a.splice(b,1)):b++,c=d=0,f=e=\"\"}\"\"===a[a.length-1][1]&&a.pop();c=!1;for(b=1;b<a.length-1;)a[b-1][0]==DIFF_EQUAL&&a[b+1][0]==DIFF_EQUAL&&(a[b][1].substring(a[b][1].length-a[b-1][1].length)==a[b-1][1]?(a[b][1]=a[b-1][1]+a[b][1].substring(0,\na[b][1].length-a[b-1][1].length),a[b+1][1]=a[b-1][1]+a[b+1][1],a.splice(b-1,1),c=!0):a[b][1].substring(0,a[b+1][1].length)==a[b+1][1]&&(a[b-1][1]+=a[b+1][1],a[b][1]=a[b][1].substring(a[b+1][1].length)+a[b+1][1],a.splice(b+1,1),c=!0)),b++;c&&this.diff_cleanupMerge(a)};\ndiff_match_patch.prototype.diff_xIndex=function(a,b){var c=0,d=0,e=0,f=0,g;for(g=0;g<a.length;g++){a[g][0]!==DIFF_INSERT&&(c+=a[g][1].length);a[g][0]!==DIFF_DELETE&&(d+=a[g][1].length);if(c>b)break;e=c;f=d}return a.length!=g&&a[g][0]===DIFF_DELETE?f:f+(b-e)};\ndiff_match_patch.prototype.diff_prettyHtml=function(a){for(var b=[],c=/&/g,d=/</g,e=/>/g,f=/\\n/g,g=0;g<a.length;g++){var h=a[g][0],l=a[g][1].replace(c,\"&\").replace(d,\"<\").replace(e,\">\").replace(f,\"¶<br>\");switch(h){case DIFF_INSERT:b[g]='<ins style=\"background:#e6ffe6;\">'+l+\"</ins>\";break;case DIFF_DELETE:b[g]='<del style=\"background:#ffe6e6;\">'+l+\"</del>\";break;case DIFF_EQUAL:b[g]=\"<span>\"+l+\"</span>\"}}return b.join(\"\")};\ndiff_match_patch.prototype.diff_text1=function(a){for(var b=[],c=0;c<a.length;c++)a[c][0]!==DIFF_INSERT&&(b[c]=a[c][1]);return b.join(\"\")};diff_match_patch.prototype.diff_text2=function(a){for(var b=[],c=0;c<a.length;c++)a[c][0]!==DIFF_DELETE&&(b[c]=a[c][1]);return b.join(\"\")};\ndiff_match_patch.prototype.diff_levenshtein=function(a){for(var b=0,c=0,d=0,e=0;e<a.length;e++){var f=a[e][1];switch(a[e][0]){case DIFF_INSERT:c+=f.length;break;case DIFF_DELETE:d+=f.length;break;case DIFF_EQUAL:b+=Math.max(c,d),d=c=0}}return b+=Math.max(c,d)};\ndiff_match_patch.prototype.diff_toDelta=function(a){for(var b=[],c=0;c<a.length;c++)switch(a[c][0]){case DIFF_INSERT:b[c]=\"+\"+encodeURI(a[c][1]);break;case DIFF_DELETE:b[c]=\"-\"+a[c][1].length;break;case DIFF_EQUAL:b[c]=\"=\"+a[c][1].length}return b.join(\"\\t\").replace(/%20/g,\" \")};\ndiff_match_patch.prototype.diff_fromDelta=function(a,b){for(var c=[],d=0,e=0,f=b.split(/\\t/g),g=0;g<f.length;g++){var h=f[g].substring(1);switch(f[g].charAt(0)){case \"+\":try{c[d++]=[DIFF_INSERT,decodeURI(h)]}catch(k){throw Error(\"Illegal escape in diff_fromDelta: \"+h);}break;case \"-\":case \"=\":var l=parseInt(h,10);if(isNaN(l)||0>l)throw Error(\"Invalid number in diff_fromDelta: \"+h);h=a.substring(e,e+=l);\"=\"==f[g].charAt(0)?c[d++]=[DIFF_EQUAL,h]:c[d++]=[DIFF_DELETE,h];break;default:if(f[g])throw Error(\"Invalid diff operation in diff_fromDelta: \"+\nf[g]);}}if(e!=a.length)throw Error(\"Delta length (\"+e+\") does not equal source text length (\"+a.length+\").\");return c};diff_match_patch.prototype.match_main=function(a,b,c){if(null==a||null==b||null==c)throw Error(\"Null input. (match_main)\");c=Math.max(0,Math.min(c,a.length));return a==b?0:a.length?a.substring(c,c+b.length)==b?c:this.match_bitap_(a,b,c):-1};\ndiff_match_patch.prototype.match_bitap_=function(a,b,c){function d(a,d){var e=a/b.length,g=Math.abs(c-d);return f.Match_Distance?e+g/f.Match_Distance:g?1:e}if(b.length>this.Match_MaxBits)throw Error(\"Pattern too long for this browser.\");var e=this.match_alphabet_(b),f=this,g=this.Match_Threshold,h=a.indexOf(b,c);-1!=h&&(g=Math.min(d(0,h),g),h=a.lastIndexOf(b,c+b.length),-1!=h&&(g=Math.min(d(0,h),g)));var l=1<<b.length-1;h=-1;for(var k,m,p=b.length+a.length,x,w=0;w<b.length;w++){k=0;for(m=p;k<m;)d(w,\nc+m)<=g?k=m:p=m,m=Math.floor((p-k)/2+k);p=m;k=Math.max(1,c-m+1);var q=Math.min(c+m,a.length)+b.length;m=Array(q+2);for(m[q+1]=(1<<w)-1;q>=k;q--){var t=e[a.charAt(q-1)];m[q]=0===w?(m[q+1]<<1|1)&t:(m[q+1]<<1|1)&t|(x[q+1]|x[q])<<1|1|x[q+1];if(m[q]&l&&(t=d(w,q-1),t<=g))if(g=t,h=q-1,h>c)k=Math.max(1,2*c-h);else break}if(d(w+1,c)>g)break;x=m}return h};\ndiff_match_patch.prototype.match_alphabet_=function(a){for(var b={},c=0;c<a.length;c++)b[a.charAt(c)]=0;for(c=0;c<a.length;c++)b[a.charAt(c)]|=1<<a.length-c-1;return b};\ndiff_match_patch.prototype.patch_addContext_=function(a,b){if(0!=b.length){for(var c=b.substring(a.start2,a.start2+a.length1),d=0;b.indexOf(c)!=b.lastIndexOf(c)&&c.length<this.Match_MaxBits-this.Patch_Margin-this.Patch_Margin;)d+=this.Patch_Margin,c=b.substring(a.start2-d,a.start2+a.length1+d);d+=this.Patch_Margin;(c=b.substring(a.start2-d,a.start2))&&a.diffs.unshift([DIFF_EQUAL,c]);(d=b.substring(a.start2+a.length1,a.start2+a.length1+d))&&a.diffs.push([DIFF_EQUAL,d]);a.start1-=c.length;a.start2-=\nc.length;a.length1+=c.length+d.length;a.length2+=c.length+d.length}};\ndiff_match_patch.prototype.patch_make=function(a,b,c){if(\"string\"==typeof a&&\"string\"==typeof b&&\"undefined\"==typeof c){var d=a;b=this.diff_main(d,b,!0);2<b.length&&(this.diff_cleanupSemantic(b),this.diff_cleanupEfficiency(b))}else if(a&&\"object\"==typeof a&&\"undefined\"==typeof b&&\"undefined\"==typeof c)b=a,d=this.diff_text1(b);else if(\"string\"==typeof a&&b&&\"object\"==typeof b&&\"undefined\"==typeof c)d=a;else if(\"string\"==typeof a&&\"string\"==typeof b&&c&&\"object\"==typeof c)d=a,b=c;else throw Error(\"Unknown call format to patch_make.\");\nif(0===b.length)return[];c=[];a=new diff_match_patch.patch_obj;for(var e=0,f=0,g=0,h=d,l=0;l<b.length;l++){var k=b[l][0],m=b[l][1];e||k===DIFF_EQUAL||(a.start1=f,a.start2=g);switch(k){case DIFF_INSERT:a.diffs[e++]=b[l];a.length2+=m.length;d=d.substring(0,g)+m+d.substring(g);break;case DIFF_DELETE:a.length1+=m.length;a.diffs[e++]=b[l];d=d.substring(0,g)+d.substring(g+m.length);break;case DIFF_EQUAL:m.length<=2*this.Patch_Margin&&e&&b.length!=l+1?(a.diffs[e++]=b[l],a.length1+=m.length,a.length2+=m.length):\nm.length>=2*this.Patch_Margin&&e&&(this.patch_addContext_(a,h),c.push(a),a=new diff_match_patch.patch_obj,e=0,h=d,f=g)}k!==DIFF_INSERT&&(f+=m.length);k!==DIFF_DELETE&&(g+=m.length)}e&&(this.patch_addContext_(a,h),c.push(a));return c};\ndiff_match_patch.prototype.patch_deepCopy=function(a){for(var b=[],c=0;c<a.length;c++){var d=a[c],e=new diff_match_patch.patch_obj;e.diffs=[];for(var f=0;f<d.diffs.length;f++)e.diffs[f]=d.diffs[f].slice();e.start1=d.start1;e.start2=d.start2;e.length1=d.length1;e.length2=d.length2;b[c]=e}return b};\ndiff_match_patch.prototype.patch_apply=function(a,b){if(0==a.length)return[b,[]];a=this.patch_deepCopy(a);var c=this.patch_addPadding(a);b=c+b+c;this.patch_splitMax(a);for(var d=0,e=[],f=0;f<a.length;f++){var g=a[f].start2+d,h=this.diff_text1(a[f].diffs),l=-1;if(h.length>this.Match_MaxBits){var k=this.match_main(b,h.substring(0,this.Match_MaxBits),g);-1!=k&&(l=this.match_main(b,h.substring(h.length-this.Match_MaxBits),g+h.length-this.Match_MaxBits),-1==l||k>=l)&&(k=-1)}else k=this.match_main(b,h,\ng);if(-1==k)e[f]=!1,d-=a[f].length2-a[f].length1;else if(e[f]=!0,d=k-g,g=-1==l?b.substring(k,k+h.length):b.substring(k,l+this.Match_MaxBits),h==g)b=b.substring(0,k)+this.diff_text2(a[f].diffs)+b.substring(k+h.length);else if(g=this.diff_main(h,g,!1),h.length>this.Match_MaxBits&&this.diff_levenshtein(g)/h.length>this.Patch_DeleteThreshold)e[f]=!1;else{this.diff_cleanupSemanticLossless(g);h=0;var m;for(l=0;l<a[f].diffs.length;l++){var p=a[f].diffs[l];p[0]!==DIFF_EQUAL&&(m=this.diff_xIndex(g,h));p[0]===\nDIFF_INSERT?b=b.substring(0,k+m)+p[1]+b.substring(k+m):p[0]===DIFF_DELETE&&(b=b.substring(0,k+m)+b.substring(k+this.diff_xIndex(g,h+p[1].length)));p[0]!==DIFF_DELETE&&(h+=p[1].length)}}}b=b.substring(c.length,b.length-c.length);return[b,e]};\ndiff_match_patch.prototype.patch_addPadding=function(a){for(var b=this.Patch_Margin,c=\"\",d=1;d<=b;d++)c+=String.fromCharCode(d);for(d=0;d<a.length;d++)a[d].start1+=b,a[d].start2+=b;d=a[0];var e=d.diffs;if(0==e.length||e[0][0]!=DIFF_EQUAL)e.unshift([DIFF_EQUAL,c]),d.start1-=b,d.start2-=b,d.length1+=b,d.length2+=b;else if(b>e[0][1].length){var f=b-e[0][1].length;e[0][1]=c.substring(e[0][1].length)+e[0][1];d.start1-=f;d.start2-=f;d.length1+=f;d.length2+=f}d=a[a.length-1];e=d.diffs;0==e.length||e[e.length-\n1][0]!=DIFF_EQUAL?(e.push([DIFF_EQUAL,c]),d.length1+=b,d.length2+=b):b>e[e.length-1][1].length&&(f=b-e[e.length-1][1].length,e[e.length-1][1]+=c.substring(0,f),d.length1+=f,d.length2+=f);return c};\ndiff_match_patch.prototype.patch_splitMax=function(a){for(var b=this.Match_MaxBits,c=0;c<a.length;c++)if(!(a[c].length1<=b)){var d=a[c];a.splice(c--,1);for(var e=d.start1,f=d.start2,g=\"\";0!==d.diffs.length;){var h=new diff_match_patch.patch_obj,l=!0;h.start1=e-g.length;h.start2=f-g.length;\"\"!==g&&(h.length1=h.length2=g.length,h.diffs.push([DIFF_EQUAL,g]));for(;0!==d.diffs.length&&h.length1<b-this.Patch_Margin;){g=d.diffs[0][0];var k=d.diffs[0][1];g===DIFF_INSERT?(h.length2+=k.length,f+=k.length,h.diffs.push(d.diffs.shift()),\nl=!1):g===DIFF_DELETE&&1==h.diffs.length&&h.diffs[0][0]==DIFF_EQUAL&&k.length>2*b?(h.length1+=k.length,e+=k.length,l=!1,h.diffs.push([g,k]),d.diffs.shift()):(k=k.substring(0,b-h.length1-this.Patch_Margin),h.length1+=k.length,e+=k.length,g===DIFF_EQUAL?(h.length2+=k.length,f+=k.length):l=!1,h.diffs.push([g,k]),k==d.diffs[0][1]?d.diffs.shift():d.diffs[0][1]=d.diffs[0][1].substring(k.length))}g=this.diff_text2(h.diffs);g=g.substring(g.length-this.Patch_Margin);k=this.diff_text1(d.diffs).substring(0,\nthis.Patch_Margin);\"\"!==k&&(h.length1+=k.length,h.length2+=k.length,0!==h.diffs.length&&h.diffs[h.diffs.length-1][0]===DIFF_EQUAL?h.diffs[h.diffs.length-1][1]+=k:h.diffs.push([DIFF_EQUAL,k]));l||a.splice(++c,0,h)}}};diff_match_patch.prototype.patch_toText=function(a){for(var b=[],c=0;c<a.length;c++)b[c]=a[c];return b.join(\"\")};\ndiff_match_patch.prototype.patch_fromText=function(a){var b=[];if(!a)return b;a=a.split(\"\\n\");for(var c=0,d=/^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$/;c<a.length;){var e=a[c].match(d);if(!e)throw Error(\"Invalid patch string: \"+a[c]);var f=new diff_match_patch.patch_obj;b.push(f);f.start1=parseInt(e[1],10);\"\"===e[2]?(f.start1--,f.length1=1):\"0\"==e[2]?f.length1=0:(f.start1--,f.length1=parseInt(e[2],10));f.start2=parseInt(e[3],10);\"\"===e[4]?(f.start2--,f.length2=1):\"0\"==e[4]?f.length2=0:(f.start2--,f.length2=\nparseInt(e[4],10));for(c++;c<a.length;){e=a[c].charAt(0);try{var g=decodeURI(a[c].substring(1))}catch(h){throw Error(\"Illegal escape in patch_fromText: \"+g);}if(\"-\"==e)f.diffs.push([DIFF_DELETE,g]);else if(\"+\"==e)f.diffs.push([DIFF_INSERT,g]);else if(\" \"==e)f.diffs.push([DIFF_EQUAL,g]);else if(\"@\"==e)break;else if(\"\"!==e)throw Error('Invalid patch mode \"'+e+'\" in: '+g);c++}}return b};diff_match_patch.patch_obj=function(){this.diffs=[];this.start2=this.start1=null;this.length2=this.length1=0};\ndiff_match_patch.patch_obj.prototype.toString=function(){for(var a=[\"@@ -\"+(0===this.length1?this.start1+\",0\":1==this.length1?this.start1+1:this.start1+1+\",\"+this.length1)+\" +\"+(0===this.length2?this.start2+\",0\":1==this.length2?this.start2+1:this.start2+1+\",\"+this.length2)+\" @@\\n\"],b,c=0;c<this.diffs.length;c++){switch(this.diffs[c][0]){case DIFF_INSERT:b=\"+\";break;case DIFF_DELETE:b=\"-\";break;case DIFF_EQUAL:b=\" \"}a[c+1]=b+encodeURI(this.diffs[c][1])+\"\\n\"}return a.join(\"\").replace(/%20/g,\" \")};\nthis.diff_match_patch=diff_match_patch;this.DIFF_DELETE=DIFF_DELETE;this.DIFF_INSERT=DIFF_INSERT;this.DIFF_EQUAL=DIFF_EQUAL;\n}).call(exports);",
"type": "application/javascript",
"title": "$:/core/modules/utils/diff-match-patch/diff_match_patch.js",
"module-type": "library"
},
"$:/core/modules/utils/dom/animations/slide.js": {
"title": "$:/core/modules/utils/dom/animations/slide.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/animations/slide.js\ntype: application/javascript\nmodule-type: animation\n\nA simple slide animation that varies the height of the element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction slideOpen(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration();\n\t// Get the current height of the domNode\n\tvar computedStyle = window.getComputedStyle(domNode),\n\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\tcurrPaddingBottom = parseInt(computedStyle.paddingBottom,10),\n\t\tcurrPaddingTop = parseInt(computedStyle.paddingTop,10),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Reset the margin once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"none\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t{marginTop: currMarginTop + \"px\"},\n\t\t{paddingBottom: currPaddingBottom + \"px\"},\n\t\t{paddingTop: currPaddingTop + \"px\"},\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n}\n\nfunction slideClosed(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration(),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Clear the properties we've set when the animation is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n}\n\nexports.slide = {\n\topen: slideOpen,\n\tclose: slideClosed\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "animation"
},
"$:/core/modules/utils/dom/animator.js": {
"title": "$:/core/modules/utils/dom/animator.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/animator.js\ntype: application/javascript\nmodule-type: utils\n\nOrchestrates animations and transitions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Animator() {\n\t// Get the registered animation modules\n\tthis.animations = {};\n\t$tw.modules.applyMethods(\"animation\",this.animations);\n}\n\nAnimator.prototype.perform = function(type,domNode,options) {\n\toptions = options || {};\n\t// Find an animation that can handle this type\n\tvar chosenAnimation;\n\t$tw.utils.each(this.animations,function(animation,name) {\n\t\tif($tw.utils.hop(animation,type)) {\n\t\t\tchosenAnimation = animation[type];\n\t\t}\n\t});\n\tif(!chosenAnimation) {\n\t\tchosenAnimation = function(domNode,options) {\n\t\t\tif(options.callback) {\n\t\t\t\toptions.callback();\n\t\t\t}\n\t\t};\n\t}\n\t// Call the animation\n\tchosenAnimation(domNode,options);\n};\n\nexports.Animator = Animator;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/browser.js": {
"title": "$:/core/modules/utils/dom/browser.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/browser.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser feature detection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet style properties of an element\n\telement: dom node\n\tstyles: ordered array of {name: value} pairs\n*/\nexports.setStyle = function(element,styles) {\n\tif(element.nodeType === 1) { // Element.ELEMENT_NODE\n\t\tfor(var t=0; t<styles.length; t++) {\n\t\t\tfor(var styleName in styles[t]) {\n\t\t\t\telement.style[$tw.utils.convertStyleNameToPropertyName(styleName)] = styles[t][styleName];\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nConverts a standard CSS property name into the local browser-specific equivalent. For example:\n\t\"background-color\" --> \"backgroundColor\"\n\t\"transition\" --> \"webkitTransition\"\n*/\n\nvar styleNameCache = {}; // We'll cache the style name conversions\n\nexports.convertStyleNameToPropertyName = function(styleName) {\n\t// Return from the cache if we can\n\tif(styleNameCache[styleName]) {\n\t\treturn styleNameCache[styleName];\n\t}\n\t// Convert it by first removing any hyphens\n\tvar propertyName = $tw.utils.unHyphenateCss(styleName);\n\t// Then check if it needs a prefix\n\tif($tw.browser && document.body.style[propertyName] === undefined) {\n\t\tvar prefixes = [\"O\",\"MS\",\"Moz\",\"webkit\"];\n\t\tfor(var t=0; t<prefixes.length; t++) {\n\t\t\tvar prefixedName = prefixes[t] + propertyName.substr(0,1).toUpperCase() + propertyName.substr(1);\n\t\t\tif(document.body.style[prefixedName] !== undefined) {\n\t\t\t\tpropertyName = prefixedName;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t// Put it in the cache too\n\tstyleNameCache[styleName] = propertyName;\n\treturn propertyName;\n};\n\n/*\nConverts a JS format CSS property name back into the dashed form used in CSS declarations. For example:\n\t\"backgroundColor\" --> \"background-color\"\n\t\"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.convertPropertyNameToStyleName = function(propertyName) {\n\t// Rehyphenate the name\n\tvar styleName = $tw.utils.hyphenateCss(propertyName);\n\t// If there's a webkit prefix, add a dash (other browsers have uppercase prefixes, and so get the dash automatically)\n\tif(styleName.indexOf(\"webkit\") === 0) {\n\t\tstyleName = \"-\" + styleName;\n\t} else if(styleName.indexOf(\"-m-s\") === 0) {\n\t\tstyleName = \"-ms\" + styleName.substr(4);\n\t}\n\treturn styleName;\n};\n\n/*\nRound trip a stylename to a property name and back again. For example:\n\t\"transform\" --> \"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.roundTripPropertyName = function(propertyName) {\n\treturn $tw.utils.convertPropertyNameToStyleName($tw.utils.convertStyleNameToPropertyName(propertyName));\n};\n\n/*\nConverts a standard event name into the local browser specific equivalent. For example:\n\t\"animationEnd\" --> \"webkitAnimationEnd\"\n*/\n\nvar eventNameCache = {}; // We'll cache the conversions\n\nvar eventNameMappings = {\n\t\"transitionEnd\": {\n\t\tcorrespondingCssProperty: \"transition\",\n\t\tmappings: {\n\t\t\ttransition: \"transitionend\",\n\t\t\tOTransition: \"oTransitionEnd\",\n\t\t\tMSTransition: \"msTransitionEnd\",\n\t\t\tMozTransition: \"transitionend\",\n\t\t\twebkitTransition: \"webkitTransitionEnd\"\n\t\t}\n\t},\n\t\"animationEnd\": {\n\t\tcorrespondingCssProperty: \"animation\",\n\t\tmappings: {\n\t\t\tanimation: \"animationend\",\n\t\t\tOAnimation: \"oAnimationEnd\",\n\t\t\tMSAnimation: \"msAnimationEnd\",\n\t\t\tMozAnimation: \"animationend\",\n\t\t\twebkitAnimation: \"webkitAnimationEnd\"\n\t\t}\n\t}\n};\n\nexports.convertEventName = function(eventName) {\n\tif(eventNameCache[eventName]) {\n\t\treturn eventNameCache[eventName];\n\t}\n\tvar newEventName = eventName,\n\t\tmappings = eventNameMappings[eventName];\n\tif(mappings) {\n\t\tvar convertedProperty = $tw.utils.convertStyleNameToPropertyName(mappings.correspondingCssProperty);\n\t\tif(mappings.mappings[convertedProperty]) {\n\t\t\tnewEventName = mappings.mappings[convertedProperty];\n\t\t}\n\t}\n\t// Put it in the cache too\n\teventNameCache[eventName] = newEventName;\n\treturn newEventName;\n};\n\n/*\nReturn the names of the fullscreen APIs\n*/\nexports.getFullScreenApis = function() {\n\tvar d = document,\n\t\tdb = d.body,\n\t\tresult = {\n\t\t\"_requestFullscreen\": db.webkitRequestFullscreen !== undefined ? \"webkitRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.mozRequestFullScreen !== undefined ? \"mozRequestFullScreen\" :\n\t\t\t\t\t\t\tdb.msRequestFullscreen !== undefined ? \"msRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.requestFullscreen !== undefined ? \"requestFullscreen\" : \"\",\n\t\t\"_exitFullscreen\": d.webkitExitFullscreen !== undefined ? \"webkitExitFullscreen\" :\n\t\t\t\t\t\t\td.mozCancelFullScreen !== undefined ? \"mozCancelFullScreen\" :\n\t\t\t\t\t\t\td.msExitFullscreen !== undefined ? \"msExitFullscreen\" :\n\t\t\t\t\t\t\td.exitFullscreen !== undefined ? \"exitFullscreen\" : \"\",\n\t\t\"_fullscreenElement\": d.webkitFullscreenElement !== undefined ? \"webkitFullscreenElement\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozFullScreenElement\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"msFullscreenElement\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenElement\" : \"\",\n\t\t\"_fullscreenChange\": d.webkitFullscreenElement !== undefined ? \"webkitfullscreenchange\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozfullscreenchange\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"MSFullscreenChange\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenchange\" : \"\"\n\t};\n\tif(!result._requestFullscreen || !result._exitFullscreen || !result._fullscreenElement || !result._fullscreenChange) {\n\t\treturn null;\n\t} else {\n\t\treturn result;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/csscolorparser.js": {
"title": "$:/core/modules/utils/dom/csscolorparser.js",
"text": "// (c) Dean McNamee <dean@gmail.com>, 2012.\n//\n// https://github.com/deanm/css-color-parser-js\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n\n// http://www.w3.org/TR/css3-color/\nvar kCSSColorTable = {\n \"transparent\": [0,0,0,0], \"aliceblue\": [240,248,255,1],\n \"antiquewhite\": [250,235,215,1], \"aqua\": [0,255,255,1],\n \"aquamarine\": [127,255,212,1], \"azure\": [240,255,255,1],\n \"beige\": [245,245,220,1], \"bisque\": [255,228,196,1],\n \"black\": [0,0,0,1], \"blanchedalmond\": [255,235,205,1],\n \"blue\": [0,0,255,1], \"blueviolet\": [138,43,226,1],\n \"brown\": [165,42,42,1], \"burlywood\": [222,184,135,1],\n \"cadetblue\": [95,158,160,1], \"chartreuse\": [127,255,0,1],\n \"chocolate\": [210,105,30,1], \"coral\": [255,127,80,1],\n \"cornflowerblue\": [100,149,237,1], \"cornsilk\": [255,248,220,1],\n \"crimson\": [220,20,60,1], \"cyan\": [0,255,255,1],\n \"darkblue\": [0,0,139,1], \"darkcyan\": [0,139,139,1],\n \"darkgoldenrod\": [184,134,11,1], \"darkgray\": [169,169,169,1],\n \"darkgreen\": [0,100,0,1], \"darkgrey\": [169,169,169,1],\n \"darkkhaki\": [189,183,107,1], \"darkmagenta\": [139,0,139,1],\n \"darkolivegreen\": [85,107,47,1], \"darkorange\": [255,140,0,1],\n \"darkorchid\": [153,50,204,1], \"darkred\": [139,0,0,1],\n \"darksalmon\": [233,150,122,1], \"darkseagreen\": [143,188,143,1],\n \"darkslateblue\": [72,61,139,1], \"darkslategray\": [47,79,79,1],\n \"darkslategrey\": [47,79,79,1], \"darkturquoise\": [0,206,209,1],\n \"darkviolet\": [148,0,211,1], \"deeppink\": [255,20,147,1],\n \"deepskyblue\": [0,191,255,1], \"dimgray\": [105,105,105,1],\n \"dimgrey\": [105,105,105,1], \"dodgerblue\": [30,144,255,1],\n \"firebrick\": [178,34,34,1], \"floralwhite\": [255,250,240,1],\n \"forestgreen\": [34,139,34,1], \"fuchsia\": [255,0,255,1],\n \"gainsboro\": [220,220,220,1], \"ghostwhite\": [248,248,255,1],\n \"gold\": [255,215,0,1], \"goldenrod\": [218,165,32,1],\n \"gray\": [128,128,128,1], \"green\": [0,128,0,1],\n \"greenyellow\": [173,255,47,1], \"grey\": [128,128,128,1],\n \"honeydew\": [240,255,240,1], \"hotpink\": [255,105,180,1],\n \"indianred\": [205,92,92,1], \"indigo\": [75,0,130,1],\n \"ivory\": [255,255,240,1], \"khaki\": [240,230,140,1],\n \"lavender\": [230,230,250,1], \"lavenderblush\": [255,240,245,1],\n \"lawngreen\": [124,252,0,1], \"lemonchiffon\": [255,250,205,1],\n \"lightblue\": [173,216,230,1], \"lightcoral\": [240,128,128,1],\n \"lightcyan\": [224,255,255,1], \"lightgoldenrodyellow\": [250,250,210,1],\n \"lightgray\": [211,211,211,1], \"lightgreen\": [144,238,144,1],\n \"lightgrey\": [211,211,211,1], \"lightpink\": [255,182,193,1],\n \"lightsalmon\": [255,160,122,1], \"lightseagreen\": [32,178,170,1],\n \"lightskyblue\": [135,206,250,1], \"lightslategray\": [119,136,153,1],\n \"lightslategrey\": [119,136,153,1], \"lightsteelblue\": [176,196,222,1],\n \"lightyellow\": [255,255,224,1], \"lime\": [0,255,0,1],\n \"limegreen\": [50,205,50,1], \"linen\": [250,240,230,1],\n \"magenta\": [255,0,255,1], \"maroon\": [128,0,0,1],\n \"mediumaquamarine\": [102,205,170,1], \"mediumblue\": [0,0,205,1],\n \"mediumorchid\": [186,85,211,1], \"mediumpurple\": [147,112,219,1],\n \"mediumseagreen\": [60,179,113,1], \"mediumslateblue\": [123,104,238,1],\n \"mediumspringgreen\": [0,250,154,1], \"mediumturquoise\": [72,209,204,1],\n \"mediumvioletred\": [199,21,133,1], \"midnightblue\": [25,25,112,1],\n \"mintcream\": [245,255,250,1], \"mistyrose\": [255,228,225,1],\n \"moccasin\": [255,228,181,1], \"navajowhite\": [255,222,173,1],\n \"navy\": [0,0,128,1], \"oldlace\": [253,245,230,1],\n \"olive\": [128,128,0,1], \"olivedrab\": [107,142,35,1],\n \"orange\": [255,165,0,1], \"orangered\": [255,69,0,1],\n \"orchid\": [218,112,214,1], \"palegoldenrod\": [238,232,170,1],\n \"palegreen\": [152,251,152,1], \"paleturquoise\": [175,238,238,1],\n \"palevioletred\": [219,112,147,1], \"papayawhip\": [255,239,213,1],\n \"peachpuff\": [255,218,185,1], \"peru\": [205,133,63,1],\n \"pink\": [255,192,203,1], \"plum\": [221,160,221,1],\n \"powderblue\": [176,224,230,1], \"purple\": [128,0,128,1],\n \"red\": [255,0,0,1], \"rosybrown\": [188,143,143,1],\n \"royalblue\": [65,105,225,1], \"saddlebrown\": [139,69,19,1],\n \"salmon\": [250,128,114,1], \"sandybrown\": [244,164,96,1],\n \"seagreen\": [46,139,87,1], \"seashell\": [255,245,238,1],\n \"sienna\": [160,82,45,1], \"silver\": [192,192,192,1],\n \"skyblue\": [135,206,235,1], \"slateblue\": [106,90,205,1],\n \"slategray\": [112,128,144,1], \"slategrey\": [112,128,144,1],\n \"snow\": [255,250,250,1], \"springgreen\": [0,255,127,1],\n \"steelblue\": [70,130,180,1], \"tan\": [210,180,140,1],\n \"teal\": [0,128,128,1], \"thistle\": [216,191,216,1],\n \"tomato\": [255,99,71,1], \"turquoise\": [64,224,208,1],\n \"violet\": [238,130,238,1], \"wheat\": [245,222,179,1],\n \"white\": [255,255,255,1], \"whitesmoke\": [245,245,245,1],\n \"yellow\": [255,255,0,1], \"yellowgreen\": [154,205,50,1]}\n\nfunction clamp_css_byte(i) { // Clamp to integer 0 .. 255.\n i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clamp_css_float(f) { // Clamp to float 0.0 .. 1.0.\n return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parse_css_int(str) { // int or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_byte(parseFloat(str) / 100 * 255);\n return clamp_css_byte(parseInt(str));\n}\n\nfunction parse_css_float(str) { // float or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_float(parseFloat(str) / 100);\n return clamp_css_float(parseFloat(str));\n}\n\nfunction css_hue_to_rgb(m1, m2, h) {\n if (h < 0) h += 1;\n else if (h > 1) h -= 1;\n\n if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;\n if (h * 2 < 1) return m2;\n if (h * 3 < 2) return m1 + (m2 - m1) * (2/3 - h) * 6;\n return m1;\n}\n\nfunction parseCSSColor(css_str) {\n // Remove all whitespace, not compliant, but should just be more accepting.\n var str = css_str.replace(/ /g, '').toLowerCase();\n\n // Color keywords (and transparent) lookup.\n if (str in kCSSColorTable) return kCSSColorTable[str].slice(); // dup.\n\n // #abc and #abc123 syntax.\n if (str[0] === '#') {\n if (str.length === 4) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xfff)) return null; // Covers NaN.\n return [((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8),\n (iv & 0xf0) | ((iv & 0xf0) >> 4),\n (iv & 0xf) | ((iv & 0xf) << 4),\n 1];\n } else if (str.length === 7) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xffffff)) return null; // Covers NaN.\n return [(iv & 0xff0000) >> 16,\n (iv & 0xff00) >> 8,\n iv & 0xff,\n 1];\n }\n\n return null;\n }\n\n var op = str.indexOf('('), ep = str.indexOf(')');\n if (op !== -1 && ep + 1 === str.length) {\n var fname = str.substr(0, op);\n var params = str.substr(op+1, ep-(op+1)).split(',');\n var alpha = 1; // To allow case fallthrough.\n switch (fname) {\n case 'rgba':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'rgb':\n if (params.length !== 3) return null;\n return [parse_css_int(params[0]),\n parse_css_int(params[1]),\n parse_css_int(params[2]),\n alpha];\n case 'hsla':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'hsl':\n if (params.length !== 3) return null;\n var h = (((parseFloat(params[0]) % 360) + 360) % 360) / 360; // 0 .. 1\n // NOTE(deanm): According to the CSS spec s/l should only be\n // percentages, but we don't bother and let float or percentage.\n var s = parse_css_float(params[1]);\n var l = parse_css_float(params[2]);\n var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var m1 = l * 2 - m2;\n return [clamp_css_byte(css_hue_to_rgb(m1, m2, h+1/3) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h-1/3) * 255),\n alpha];\n default:\n return null;\n }\n }\n\n return null;\n}\n\ntry { exports.parseCSSColor = parseCSSColor } catch(e) { }\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom.js": {
"title": "$:/core/modules/utils/dom.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static DOM-related utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDetermines whether element 'a' contains element 'b'\nCode thanks to John Resig, http://ejohn.org/blog/comparing-document-position/\n*/\nexports.domContains = function(a,b) {\n\treturn a.contains ?\n\t\ta !== b && a.contains(b) :\n\t\t!!(a.compareDocumentPosition(b) & 16);\n};\n\nexports.removeChildren = function(node) {\n\twhile(node.hasChildNodes()) {\n\t\tnode.removeChild(node.firstChild);\n\t}\n};\n\nexports.hasClass = function(el,className) {\n\treturn el && el.hasAttribute && el.hasAttribute(\"class\") && el.getAttribute(\"class\").split(\" \").indexOf(className) !== -1;\n};\n\nexports.addClass = function(el,className) {\n\tvar c = (el.getAttribute(\"class\") || \"\").split(\" \");\n\tif(c.indexOf(className) === -1) {\n\t\tc.push(className);\n\t\tel.setAttribute(\"class\",c.join(\" \"));\n\t}\n};\n\nexports.removeClass = function(el,className) {\n\tvar c = (el.getAttribute(\"class\") || \"\").split(\" \"),\n\t\tp = c.indexOf(className);\n\tif(p !== -1) {\n\t\tc.splice(p,1);\n\t\tel.setAttribute(\"class\",c.join(\" \"));\n\t}\n};\n\nexports.toggleClass = function(el,className,status) {\n\tif(status === undefined) {\n\t\tstatus = !exports.hasClass(el,className);\n\t}\n\tif(status) {\n\t\texports.addClass(el,className);\n\t} else {\n\t\texports.removeClass(el,className);\n\t}\n};\n\n/*\nGet the first parent element that has scrollbars or use the body as fallback.\n*/\nexports.getScrollContainer = function(el) {\n\tvar doc = el.ownerDocument;\n\twhile(el.parentNode) {\t\n\t\tel = el.parentNode;\n\t\tif(el.scrollTop) {\n\t\t\treturn el;\n\t\t}\n\t}\n\treturn doc.body;\n};\n\n/*\nGet the scroll position of the viewport\nReturns:\n\t{\n\t\tx: horizontal scroll position in pixels,\n\t\ty: vertical scroll position in pixels\n\t}\n*/\nexports.getScrollPosition = function(srcWindow) {\n\tvar scrollWindow = srcWindow || window;\n\tif(\"scrollX\" in scrollWindow) {\n\t\treturn {x: scrollWindow.scrollX, y: scrollWindow.scrollY};\n\t} else {\n\t\treturn {x: scrollWindow.document.documentElement.scrollLeft, y: scrollWindow.document.documentElement.scrollTop};\n\t}\n};\n\n/*\nAdjust the height of a textarea to fit its content, preserving scroll position, and return the height\n*/\nexports.resizeTextAreaToFit = function(domNode,minHeight) {\n\t// Get the scroll container and register the current scroll position\n\tvar container = $tw.utils.getScrollContainer(domNode),\n\t\tscrollTop = container.scrollTop;\n // Measure the specified minimum height\n\tdomNode.style.height = minHeight;\n\tvar measuredHeight = domNode.offsetHeight || parseInt(minHeight,10);\n\t// Set its height to auto so that it snaps to the correct height\n\tdomNode.style.height = \"auto\";\n\t// Calculate the revised height\n\tvar newHeight = Math.max(domNode.scrollHeight + domNode.offsetHeight - domNode.clientHeight,measuredHeight);\n\t// Only try to change the height if it has changed\n\tif(newHeight !== domNode.offsetHeight) {\n\t\tdomNode.style.height = newHeight + \"px\";\n\t\t// Make sure that the dimensions of the textarea are recalculated\n\t\t$tw.utils.forceLayout(domNode);\n\t\t// Set the container to the position we registered at the beginning\n\t\tcontainer.scrollTop = scrollTop;\n\t}\n\treturn newHeight;\n};\n\n/*\nGets the bounding rectangle of an element in absolute page coordinates\n*/\nexports.getBoundingPageRect = function(element) {\n\tvar scrollPos = $tw.utils.getScrollPosition(element.ownerDocument.defaultView),\n\t\tclientRect = element.getBoundingClientRect();\n\treturn {\n\t\tleft: clientRect.left + scrollPos.x,\n\t\twidth: clientRect.width,\n\t\tright: clientRect.right + scrollPos.x,\n\t\ttop: clientRect.top + scrollPos.y,\n\t\theight: clientRect.height,\n\t\tbottom: clientRect.bottom + scrollPos.y\n\t};\n};\n\n/*\nSaves a named password in the browser\n*/\nexports.savePassword = function(name,password) {\n\tvar done = false;\n\ttry {\n\t\twindow.localStorage.setItem(\"tw5-password-\" + name,password);\n\t\tdone = true;\n\t} catch(e) {\n\t}\n\tif(!done) {\n\t\t$tw.savedPasswords = $tw.savedPasswords || Object.create(null);\n\t\t$tw.savedPasswords[name] = password;\n\t}\n};\n\n/*\nRetrieve a named password from the browser\n*/\nexports.getPassword = function(name) {\n\tvar value;\n\ttry {\n\t\tvalue = window.localStorage.getItem(\"tw5-password-\" + name);\n\t} catch(e) {\n\t}\n\tif(value !== undefined) {\n\t\treturn value;\n\t} else {\n\t\treturn ($tw.savedPasswords || Object.create(null))[name] || \"\";\n\t}\n};\n\n/*\nForce layout of a dom node and its descendents\n*/\nexports.forceLayout = function(element) {\n\tvar dummy = element.offsetWidth;\n};\n\n/*\nPulse an element for debugging purposes\n*/\nexports.pulseElement = function(element) {\n\t// Event handler to remove the class at the end\n\telement.addEventListener($tw.browser.animationEnd,function handler(event) {\n\t\telement.removeEventListener($tw.browser.animationEnd,handler,false);\n\t\t$tw.utils.removeClass(element,\"pulse\");\n\t},false);\n\t// Apply the pulse class\n\t$tw.utils.removeClass(element,\"pulse\");\n\t$tw.utils.forceLayout(element);\n\t$tw.utils.addClass(element,\"pulse\");\n};\n\n/*\nAttach specified event handlers to a DOM node\ndomNode: where to attach the event handlers\nevents: array of event handlers to be added (see below)\nEach entry in the events array is an object with these properties:\nhandlerFunction: optional event handler function\nhandlerObject: optional event handler object\nhandlerMethod: optionally specifies object handler method name (defaults to `handleEvent`)\n*/\nexports.addEventListeners = function(domNode,events) {\n\t$tw.utils.each(events,function(eventInfo) {\n\t\tvar handler;\n\t\tif(eventInfo.handlerFunction) {\n\t\t\thandler = eventInfo.handlerFunction;\n\t\t} else if(eventInfo.handlerObject) {\n\t\t\tif(eventInfo.handlerMethod) {\n\t\t\t\thandler = function(event) {\n\t\t\t\t\teventInfo.handlerObject[eventInfo.handlerMethod].call(eventInfo.handlerObject,event);\n\t\t\t\t};\t\n\t\t\t} else {\n\t\t\t\thandler = eventInfo.handlerObject;\n\t\t\t}\n\t\t}\n\t\tdomNode.addEventListener(eventInfo.name,handler,false);\n\t});\n};\n\n/*\nGet the computed styles applied to an element as an array of strings of individual CSS properties\n*/\nexports.getComputedStyles = function(domNode) {\n\tvar textAreaStyles = window.getComputedStyle(domNode,null),\n\t\tstyleDefs = [],\n\t\tname;\n\tfor(var t=0; t<textAreaStyles.length; t++) {\n\t\tname = textAreaStyles[t];\n\t\tstyleDefs.push(name + \": \" + textAreaStyles.getPropertyValue(name) + \";\");\n\t}\n\treturn styleDefs;\n};\n\n/*\nApply a set of styles passed as an array of strings of individual CSS properties\n*/\nexports.setStyles = function(domNode,styleDefs) {\n\tdomNode.style.cssText = styleDefs.join(\"\");\n};\n\n/*\nCopy the computed styles from a source element to a destination element\n*/\nexports.copyStyles = function(srcDomNode,dstDomNode) {\n\t$tw.utils.setStyles(dstDomNode,$tw.utils.getComputedStyles(srcDomNode));\n};\n\n/*\nCopy plain text to the clipboard on browsers that support it\n*/\nexports.copyToClipboard = function(text,options) {\n\toptions = options || {};\n\tvar textArea = document.createElement(\"textarea\");\n\ttextArea.style.position = \"fixed\";\n\ttextArea.style.top = 0;\n\ttextArea.style.left = 0;\n\ttextArea.style.fontSize = \"12pt\";\n\ttextArea.style.width = \"2em\";\n\ttextArea.style.height = \"2em\";\n\ttextArea.style.padding = 0;\n\ttextArea.style.border = \"none\";\n\ttextArea.style.outline = \"none\";\n\ttextArea.style.boxShadow = \"none\";\n\ttextArea.style.background = \"transparent\";\n\ttextArea.value = text;\n\tdocument.body.appendChild(textArea);\n\ttextArea.select();\n\ttextArea.setSelectionRange(0,text.length);\n\tvar succeeded = false;\n\ttry {\n\t\tsucceeded = document.execCommand(\"copy\");\n\t} catch (err) {\n\t}\n\tif(!options.doNotNotify) {\n\t\t$tw.notifier.display(succeeded ? \"$:/language/Notifications/CopiedToClipboard/Succeeded\" : \"$:/language/Notifications/CopiedToClipboard/Failed\");\n\t}\n\tdocument.body.removeChild(textArea);\n};\n\nexports.getLocationPath = function() {\n\treturn window.location.toString().split(\"#\")[0];\n};\n\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/dragndrop.js": {
"title": "$:/core/modules/utils/dom/dragndrop.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/dragndrop.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser data transfer utilities, used with the clipboard and drag and drop\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOptions:\n\ndomNode: dom node to make draggable\ndragImageType: \"pill\" or \"dom\"\ndragTiddlerFn: optional function to retrieve the title of tiddler to drag\ndragFilterFn: optional function to retreive the filter defining a list of tiddlers to drag\nwidget: widget to use as the contect for the filter\n*/\nexports.makeDraggable = function(options) {\n\tvar dragImageType = options.dragImageType || \"dom\",\n\t\tdragImage,\n\t\tdomNode = options.domNode;\n\t// Make the dom node draggable (not necessary for anchor tags)\n\tif((domNode.tagName || \"\").toLowerCase() !== \"a\") {\n\t\tdomNode.setAttribute(\"draggable\",\"true\");\t\t\n\t}\n\t// Add event handlers\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"dragstart\", handlerFunction: function(event) {\n\t\t\tif(event.dataTransfer === undefined) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Collect the tiddlers being dragged\n\t\t\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\n\t\t\t\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\n\t\t\t\ttitles = dragTiddler ? [dragTiddler] : [],\n\t\t\t \tstartActions = options.startActions;\n\t\t\tif(dragFilter) {\n\t\t\t\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\n\t\t\t}\n\t\t\tvar titleString = $tw.utils.stringifyList(titles);\n\t\t\t// Check that we've something to drag\n\t\t\tif(titles.length > 0 && event.target === domNode) {\n\t\t\t\t// Mark the drag in progress\n\t\t\t\t$tw.dragInProgress = domNode;\n\t\t\t\t// Set the dragging class on the element being dragged\n\t\t\t\t$tw.utils.addClass(event.target,\"tc-dragging\");\n\t\t\t\t// Invoke drag-start actions if given\n\t\t\t\tif(startActions !== undefined) {\n\t\t\t\t\toptions.widget.invokeActionString(startActions,options.widget,event,{actionTiddler: titleString});\n\t\t\t\t}\n\t\t\t\t// Create the drag image elements\n\t\t\t\tdragImage = options.widget.document.createElement(\"div\");\n\t\t\t\tdragImage.className = \"tc-tiddler-dragger\";\n\t\t\t\tvar inner = options.widget.document.createElement(\"div\");\n\t\t\t\tinner.className = \"tc-tiddler-dragger-inner\";\n\t\t\t\tinner.appendChild(options.widget.document.createTextNode(\n\t\t\t\t\ttitles.length === 1 ? \n\t\t\t\t\t\ttitles[0] :\n\t\t\t\t\t\ttitles.length + \" tiddlers\"\n\t\t\t\t));\n\t\t\t\tdragImage.appendChild(inner);\n\t\t\t\toptions.widget.document.body.appendChild(dragImage);\n\t\t\t\t// Set the data transfer properties\n\t\t\t\tvar dataTransfer = event.dataTransfer;\n\t\t\t\t// Set up the image\n\t\t\t\tdataTransfer.effectAllowed = \"all\";\n\t\t\t\tif(dataTransfer.setDragImage) {\n\t\t\t\t\tif(dragImageType === \"pill\") {\n\t\t\t\t\t\tdataTransfer.setDragImage(dragImage.firstChild,-16,-16);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar r = domNode.getBoundingClientRect();\n\t\t\t\t\t\tdataTransfer.setDragImage(domNode,event.clientX-r.left,event.clientY-r.top);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Set up the data transfer\n\t\t\t\tif(dataTransfer.clearData) {\n\t\t\t\t\tdataTransfer.clearData();\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\tvar jsonData = [];\n\t\t\t\tif(titles.length > 1) {\n\t\t\t\t\ttitles.forEach(function(title) {\n\t\t\t\t\t\tjsonData.push(options.widget.wiki.getTiddlerAsJson(title));\n\t\t\t\t\t});\n\t\t\t\t\tjsonData = \"[\" + jsonData.join(\",\") + \"]\";\n\t\t\t\t} else {\n\t\t\t\t\tjsonData = options.widget.wiki.getTiddlerAsJson(titles[0]);\n\t\t\t\t}\n\t\t\t\t// IE doesn't like these content types\n\t\t\t\tif(!$tw.browser.isIE) {\n\t\t\t\t\tdataTransfer.setData(\"text/vnd.tiddler\",jsonData);\n\t\t\t\t\tdataTransfer.setData(\"text/plain\",titleString);\n\t\t\t\t\tdataTransfer.setData(\"text/x-moz-url\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\t}\n\t\t\t\tdataTransfer.setData(\"URL\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\tdataTransfer.setData(\"Text\",titleString);\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t\treturn false;\n\t\t}},\n\t\t{name: \"dragend\", handlerFunction: function(event) {\n\t\t\tif(event.target === domNode) {\n\t\t\t\t// Collect the tiddlers being dragged\n\t\t\t\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\n\t\t\t\t\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\n\t\t\t\t\ttitles = dragTiddler ? [dragTiddler] : [],\n\t\t\t \t\tendActions = options.endActions;\n\t\t\t\tif(dragFilter) {\n\t\t\t\t\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\n\t\t\t\t}\n\t\t\t\tvar titleString = $tw.utils.stringifyList(titles);\n\t\t\t\t$tw.dragInProgress = null;\n\t\t\t\t// Invoke drag-end actions if given\n\t\t\t\tif(endActions !== undefined) {\n\t\t\t\t\toptions.widget.invokeActionString(endActions,options.widget,event,{actionTiddler: titleString});\n\t\t\t\t}\n\t\t\t\t// Remove the dragging class on the element being dragged\n\t\t\t\t$tw.utils.removeClass(event.target,\"tc-dragging\");\n\t\t\t\t// Delete the drag image element\n\t\t\t\tif(dragImage) {\n\t\t\t\t\tdragImage.parentNode.removeChild(dragImage);\n\t\t\t\t\tdragImage = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}}\n\t]);\n};\n\nexports.importDataTransfer = function(dataTransfer,fallbackTitle,callback) {\n\t// Try each provided data type in turn\n\tif($tw.log.IMPORT) {\n\t\tconsole.log(\"Available data types:\");\n\t\tfor(var type=0; type<dataTransfer.types.length; type++) {\n\t\t\tconsole.log(\"type\",dataTransfer.types[type],dataTransfer.getData(dataTransfer.types[type]))\n\t\t}\n\t}\n\tfor(var t=0; t<importDataTypes.length; t++) {\n\t\tif(!$tw.browser.isIE || importDataTypes[t].IECompatible) {\n\t\t\t// Get the data\n\t\t\tvar dataType = importDataTypes[t];\n\t\t\t\tvar data = dataTransfer.getData(dataType.type);\n\t\t\t// Import the tiddlers in the data\n\t\t\tif(data !== \"\" && data !== null) {\n\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\tconsole.log(\"Importing data type '\" + dataType.type + \"', data: '\" + data + \"'\")\n\t\t\t\t}\n\t\t\t\tvar tiddlerFields = dataType.toTiddlerFieldsArray(data,fallbackTitle);\n\t\t\t\tcallback(tiddlerFields);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar importDataTypes = [\n\t{type: \"text/vnd.tiddler\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn parseJSONTiddlers(data,fallbackTitle);\n\t}},\n\t{type: \"URL\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/x-moz-url\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/html\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/plain\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"Text\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/uri-list\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}}\n];\n\nfunction parseJSONTiddlers(json,fallbackTitle) {\n\tvar data = JSON.parse(json);\n\tif(!$tw.utils.isArray(data)) {\n\t\tdata = [data];\n\t}\n\tdata.forEach(function(fields) {\n\t\tfields.title = fields.title || fallbackTitle;\n\t});\n\treturn data;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/http.js": {
"title": "$:/core/modules/utils/dom/http.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/http.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser HTTP support\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nA quick and dirty HTTP function; to be refactored later. Options are:\n\turl: URL to retrieve\n\theaders: hashmap of headers to send\n\ttype: GET, PUT, POST etc\n\tcallback: function invoked with (err,data,xhr)\n\treturnProp: string name of the property to return as first argument of callback\n*/\nexports.httpRequest = function(options) {\n\tvar type = options.type || \"GET\",\n\t\turl = options.url,\n\t\theaders = options.headers || {accept: \"application/json\"},\n\t\thasHeader = function(targetHeader) {\n\t\t\ttargetHeader = targetHeader.toLowerCase();\n\t\t\tvar result = false;\n\t\t\t$tw.utils.each(headers,function(header,headerTitle,object) {\n\t\t\t\tif(headerTitle.toLowerCase() === targetHeader) {\n\t\t\t\t\tresult = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn result;\n\t\t},\n\t\treturnProp = options.returnProp || \"responseText\",\n\t\trequest = new XMLHttpRequest(),\n\t\tdata = \"\",\n\t\tf,results;\n\t// Massage the data hashmap into a string\n\tif(options.data) {\n\t\tif(typeof options.data === \"string\") { // Already a string\n\t\t\tdata = options.data;\n\t\t} else { // A hashmap of strings\n\t\t\tresults = [];\n\t\t\t$tw.utils.each(options.data,function(dataItem,dataItemTitle) {\n\t\t\t\tresults.push(dataItemTitle + \"=\" + encodeURIComponent(dataItem));\n\t\t\t});\n\t\t\tif(type === \"GET\" || type === \"HEAD\") {\n\t\t\t\turl += \"?\" + results.join(\"&\");\n\t\t\t} else {\n\t\t\t\tdata = results.join(\"&\");\n\t\t\t}\n\t\t}\n\t}\n\t// Set up the state change handler\n\trequest.onreadystatechange = function() {\n\t\tif(this.readyState === 4) {\n\t\t\tif(this.status === 200 || this.status === 201 || this.status === 204) {\n\t\t\t\t// Success!\n\t\t\t\toptions.callback(null,this[returnProp],this);\n\t\t\t\treturn;\n\t\t\t}\n\t\t// Something went wrong\n\t\toptions.callback($tw.language.getString(\"Error/XMLHttpRequest\") + \": \" + this.status,null,this);\n\t\t}\n\t};\n\t// Make the request\n\trequest.open(type,url,true);\n\tif(headers) {\n\t\t$tw.utils.each(headers,function(header,headerTitle,object) {\n\t\t\trequest.setRequestHeader(headerTitle,header);\n\t\t});\n\t}\n\tif(data && !hasHeader(\"Content-Type\")) {\n\t\trequest.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded; charset=UTF-8\");\n\t}\n\tif(!hasHeader(\"X-Requested-With\")) {\n\t\trequest.setRequestHeader(\"X-Requested-With\",\"TiddlyWiki\");\n\t}\n\ttry {\n\t\trequest.send(data);\n\t} catch(e) {\n\t\toptions.callback(e,null,this);\n\t}\n\treturn request;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/keyboard.js": {
"title": "$:/core/modules/utils/dom/keyboard.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/keyboard.js\ntype: application/javascript\nmodule-type: utils\n\nKeyboard utilities; now deprecated. Instead, use $tw.keyboardManager\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n[\"parseKeyDescriptor\",\"checkKeyDescriptor\"].forEach(function(method) {\n\texports[method] = function() {\n\t\tif($tw.keyboardManager) {\n\t\t\treturn $tw.keyboardManager[method].apply($tw.keyboardManager,Array.prototype.slice.call(arguments,0));\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t};\n});\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/modal.js": {
"title": "$:/core/modules/utils/dom/modal.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/modal.js\ntype: application/javascript\nmodule-type: utils\n\nModal message mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\nvar navigator = require(\"$:/core/modules/widgets/navigator.js\");\n\nvar Modal = function(wiki) {\n\tthis.wiki = wiki;\n\tthis.modalCount = 0;\n};\n\n/*\nDisplay a modal dialogue\n\ttitle: Title of tiddler to display\n\toptions: see below\nOptions include:\n\tdownloadLink: Text of a big download link to include\n*/\nModal.prototype.display = function(title,options) {\n\toptions = options || {};\n\tthis.srcDocument = options.variables && (options.variables.rootwindow === \"true\" ||\n\t\t\t\toptions.variables.rootwindow === \"yes\") ? document :\n\t\t\t\t(options.event.event && options.event.event.target ? options.event.event.target.ownerDocument : document);\n\tthis.srcWindow = this.srcDocument.defaultView;\n\tvar self = this,\n\t\trefreshHandler,\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\ttiddler = this.wiki.getTiddler(title);\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Create the variables\n\tvar variables = $tw.utils.extend({\n\t\t\tcurrentTiddler: title,\n\t\t\t\"tv-story-list\": (options.event && options.event.widget ? options.event.widget.getVariable(\"tv-story-list\") : \"\"),\n\t\t\t\"tv-history-list\": (options.event && options.event.widget ? options.event.widget.getVariable(\"tv-history-list\") : \"\")\n\t\t},options.variables);\n\n\t// Create the wrapper divs\n\tvar wrapper = this.srcDocument.createElement(\"div\"),\n\t\tmodalBackdrop = this.srcDocument.createElement(\"div\"),\n\t\tmodalWrapper = this.srcDocument.createElement(\"div\"),\n\t\tmodalHeader = this.srcDocument.createElement(\"div\"),\n\t\theaderTitle = this.srcDocument.createElement(\"h3\"),\n\t\tmodalBody = this.srcDocument.createElement(\"div\"),\n\t\tmodalLink = this.srcDocument.createElement(\"a\"),\n\t\tmodalFooter = this.srcDocument.createElement(\"div\"),\n\t\tmodalFooterHelp = this.srcDocument.createElement(\"span\"),\n\t\tmodalFooterButtons = this.srcDocument.createElement(\"span\");\n\t// Up the modal count and adjust the body class\n\tthis.modalCount++;\n\tthis.adjustPageClass();\n\t// Add classes\n\t$tw.utils.addClass(wrapper,\"tc-modal-wrapper\");\n\tif(tiddler.fields && tiddler.fields.class) {\n\t\t$tw.utils.addClass(wrapper,tiddler.fields.class);\n\t}\n\t$tw.utils.addClass(modalBackdrop,\"tc-modal-backdrop\");\n\t$tw.utils.addClass(modalWrapper,\"tc-modal\");\n\t$tw.utils.addClass(modalHeader,\"tc-modal-header\");\n\t$tw.utils.addClass(modalBody,\"tc-modal-body\");\n\t$tw.utils.addClass(modalFooter,\"tc-modal-footer\");\n\t// Join them together\n\twrapper.appendChild(modalBackdrop);\n\twrapper.appendChild(modalWrapper);\n\tmodalHeader.appendChild(headerTitle);\n\tmodalWrapper.appendChild(modalHeader);\n\tmodalWrapper.appendChild(modalBody);\n\tmodalFooter.appendChild(modalFooterHelp);\n\tmodalFooter.appendChild(modalFooterButtons);\n\tmodalWrapper.appendChild(modalFooter);\n\tvar navigatorTree = {\n\t\t\"type\": \"navigator\",\n\t\t\"attributes\": {\n\t\t\t\"story\": {\n\t\t\t\t\"name\": \"story\",\n\t\t\t\t\"type\": \"string\",\n\t\t\t\t\"value\": variables[\"tv-story-list\"]\n\t\t\t},\n\t\t\t\"history\": {\n\t\t\t\t\"name\": \"history\",\n\t\t\t\t\"type\": \"string\",\n\t\t\t\t\"value\": variables[\"tv-history-list\"]\n\t\t\t}\n\t\t},\n\t\t\"tag\": \"$navigator\",\n\t\t\"isBlock\": true,\n\t\t\"children\": []\n\t};\n\tvar navigatorWidgetNode = new navigator.navigator(navigatorTree, {\n\t\twiki: this.wiki,\n\t\tdocument : this.srcDocument,\n\t\tparentWidget: $tw.rootWidget\n\t});\n\tnavigatorWidgetNode.render(modalBody,null);\n\t\n\t// Render the title of the message\n\tvar headerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"subtitle\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\tattributes: {\n\t\t\t\ttext: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title\n\t\t}}}],\n\t\tparentWidget: navigatorWidgetNode,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\theaderWidgetNode.render(headerTitle,null);\n\t// Render the body of the message\n\tvar bodyWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: navigatorWidgetNode,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\n\tbodyWidgetNode.render(modalBody,null);\n\t// Setup the link if present\n\tif(options.downloadLink) {\n\t\tmodalLink.href = options.downloadLink;\n\t\tmodalLink.appendChild(this.srcDocument.createTextNode(\"Right-click to save changes\"));\n\t\tmodalBody.appendChild(modalLink);\n\t}\n\t// Render the footer of the message\n\tif(tiddler.fields && tiddler.fields.help) {\n\t\tvar link = this.srcDocument.createElement(\"a\");\n\t\tlink.setAttribute(\"href\",tiddler.fields.help);\n\t\tlink.setAttribute(\"target\",\"_blank\");\n\t\tlink.setAttribute(\"rel\",\"noopener noreferrer\");\n\t\tlink.appendChild(this.srcDocument.createTextNode(\"Help\"));\n\t\tmodalFooterHelp.appendChild(link);\n\t\tmodalFooterHelp.style.float = \"left\";\n\t}\n\tvar footerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"footer\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"button\",\n\t\t\tattributes: {\n\t\t\t\tmessage: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: \"tm-close-tiddler\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\tattributes: {\n\t\t\t\t\ttext: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tvalue: $tw.language.getString(\"Buttons/Close/Caption\")\n\t\t\t}}}\n\t\t]}],\n\t\tparentWidget: navigatorWidgetNode,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\tfooterWidgetNode.render(modalFooterButtons,null);\n\t// Set up the refresh handler\n\trefreshHandler = function(changes) {\n\t\theaderWidgetNode.refresh(changes,modalHeader,null);\n\t\tbodyWidgetNode.refresh(changes,modalBody,null);\n\t\tfooterWidgetNode.refresh(changes,modalFooterButtons,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Add the close event handler\n\tvar closeHandler = function(event) {\n\t\t// Remove our refresh handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Decrease the modal count and adjust the body class\n\t\tself.modalCount--;\n\t\tself.adjustPageClass();\n\t\t// Force layout and animate the modal message away\n\t\t$tw.utils.forceLayout(modalBackdrop);\n\t\t$tw.utils.forceLayout(modalWrapper);\n\t\t$tw.utils.setStyle(modalBackdrop,[\n\t\t\t{opacity: \"0\"}\n\t\t]);\n\t\t$tw.utils.setStyle(modalWrapper,[\n\t\t\t{transform: \"translateY(\" + self.srcWindow.innerHeight + \"px)\"}\n\t\t]);\n\t\t// Set up an event for the transition end\n\t\tself.srcWindow.setTimeout(function() {\n\t\t\tif(wrapper.parentNode) {\n\t\t\t\t// Remove the modal message from the DOM\n\t\t\t\tself.srcDocument.body.removeChild(wrapper);\n\t\t\t}\n\t\t},duration);\n\t\t// Don't let anyone else handle the tm-close-tiddler message\n\t\treturn false;\n\t};\n\theaderWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tbodyWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tfooterWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\t// Set the initial styles for the message\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-this.srcWindow.innerHeight) + \"px)\"}\n\t]);\n\t// Put the message into the document\n\tthis.srcDocument.body.appendChild(wrapper);\n\t// Set up animation for the styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{transition: \"opacity \" + duration + \"ms ease-out\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(modalBackdrop);\n\t$tw.utils.forceLayout(modalWrapper);\n\t// Set final animated styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0.7\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n};\n\nModal.prototype.adjustPageClass = function() {\n\tvar windowContainer = $tw.pageContainer ? ($tw.pageContainer === this.srcDocument.body.firstChild ? $tw.pageContainer : this.srcDocument.body.firstChild) : null;\n\tif(windowContainer) {\n\t\t$tw.utils.toggleClass(windowContainer,\"tc-modal-displayed\",this.modalCount > 0);\n\t}\n};\n\nexports.Modal = Modal;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/notifier.js": {
"title": "$:/core/modules/utils/dom/notifier.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/notifier.js\ntype: application/javascript\nmodule-type: utils\n\nNotifier mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar Notifier = function(wiki) {\n\tthis.wiki = wiki;\n};\n\n/*\nDisplay a notification\n\ttitle: Title of tiddler containing the notification text\n\toptions: see below\nOptions include:\n*/\nNotifier.prototype.display = function(title,options) {\n\toptions = options || {};\n\t// Create the wrapper divs\n\tvar self = this,\n\t\tnotification = document.createElement(\"div\"),\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\trefreshHandler;\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Add classes\n\t$tw.utils.addClass(notification,\"tc-notification\");\n\t// Create the variables\n\tvar variables = $tw.utils.extend({currentTiddler: title},options.variables);\n\t// Render the body of the notification\n\tvar widgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables,\n\t\timportPageMacros: true});\n\twidgetNode.render(notification,null);\n\trefreshHandler = function(changes) {\n\t\twidgetNode.refresh(changes,notification,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Set the initial styles for the notification\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"0\"},\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-window.innerHeight) + \"px)\"},\n\t\t{transition: \"opacity \" + duration + \"ms ease-out, \" + $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Add the notification to the DOM\n\tdocument.body.appendChild(notification);\n\t// Force layout\n\t$tw.utils.forceLayout(notification);\n\t// Set final animated styles\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n\t// Set a timer to remove the notification\n\twindow.setTimeout(function() {\n\t\t// Remove our change event handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Force layout and animate the notification away\n\t\t$tw.utils.forceLayout(notification);\n\t\t$tw.utils.setStyle(notification,[\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transform: \"translateX(\" + (notification.offsetWidth) + \"px)\"}\n\t\t]);\n\t\t// Remove the modal message from the DOM once the transition ends\n\t\tsetTimeout(function() {\n\t\t\tif(notification.parentNode) {\n\t\t\t\tdocument.body.removeChild(notification);\n\t\t\t}\n\t\t},duration);\n\t},$tw.config.preferences.notificationDuration);\n};\n\nexports.Notifier = Notifier;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/popup.js": {
"title": "$:/core/modules/utils/dom/popup.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/popup.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Popup object prototype that manages popups in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreates a Popup object with these options:\n\trootElement: the DOM element to which the popup zapper should be attached\n*/\nvar Popup = function(options) {\n\toptions = options || {};\n\tthis.rootElement = options.rootElement || document.documentElement;\n\tthis.popups = []; // Array of {title:,wiki:,domNode:} objects\n};\n\n/*\nTrigger a popup open or closed. Parameters are in a hashmap:\n\ttitle: title of the tiddler where the popup details are stored\n\tdomNode: dom node to which the popup will be positioned (one of domNode or domNodeRect is required)\n\tdomNodeRect: rectangle to which the popup will be positioned\n\twiki: wiki\n\tforce: if specified, forces the popup state to true or false (instead of toggling it)\n\tfloating: if true, skips registering the popup, meaning that it will need manually clearing\n*/\nPopup.prototype.triggerPopup = function(options) {\n\t// Check if this popup is already active\n\tvar index = this.findPopup(options.title);\n\t// Compute the new state\n\tvar state = index === -1;\n\tif(options.force !== undefined) {\n\t\tstate = options.force;\n\t}\n\t// Show or cancel the popup according to the new state\n\tif(state) {\n\t\tthis.show(options);\n\t} else {\n\t\tthis.cancel(index);\n\t}\n};\n\nPopup.prototype.findPopup = function(title) {\n\tvar index = -1;\n\tfor(var t=0; t<this.popups.length; t++) {\n\t\tif(this.popups[t].title === title) {\n\t\t\tindex = t;\n\t\t}\n\t}\n\treturn index;\n};\n\nPopup.prototype.handleEvent = function(event) {\n\tif(event.type === \"click\") {\n\t\t// Find out what was clicked on\n\t\tvar info = this.popupInfo(event.target),\n\t\t\tcancelLevel = info.popupLevel - 1;\n\t\t// Don't remove the level that was clicked on if we clicked on a handle\n\t\tif(info.isHandle) {\n\t\t\tcancelLevel++;\n\t\t}\n\t\t// Cancel\n\t\tthis.cancel(cancelLevel);\n\t}\n};\n\n/*\nFind the popup level containing a DOM node. Returns:\npopupLevel: count of the number of nested popups containing the specified element\nisHandle: true if the specified element is within a popup handle\n*/\nPopup.prototype.popupInfo = function(domNode) {\n\tvar isHandle = false,\n\t\tpopupCount = 0,\n\t\tnode = domNode;\n\t// First check ancestors to see if we're within a popup handle\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup-handle\")) {\n\t\t\tisHandle = true;\n\t\t\tpopupCount++;\n\t\t}\n\t\tif($tw.utils.hasClass(node,\"tc-popup-keep\")) {\n\t\t\tisHandle = true;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\t// Then count the number of ancestor popups\n\tnode = domNode;\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup\")) {\n\t\t\tpopupCount++;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\tvar info = {\n\t\tpopupLevel: popupCount,\n\t\tisHandle: isHandle\n\t};\n\treturn info;\n};\n\n/*\nDisplay a popup by adding it to the stack\n*/\nPopup.prototype.show = function(options) {\n\t// Find out what was clicked on\n\tvar info = this.popupInfo(options.domNode);\n\t// Cancel any higher level popups\n\tthis.cancel(info.popupLevel);\n\n\t// Store the popup details if not already there\n\tif(!options.floating && this.findPopup(options.title) === -1) {\n\t\tthis.popups.push({\n\t\t\ttitle: options.title,\n\t\t\twiki: options.wiki,\n\t\t\tdomNode: options.domNode,\n\t\t\tnoStateReference: options.noStateReference\n\t\t});\n\t}\n\t// Set the state tiddler\n\tvar rect;\n\tif(options.domNodeRect) {\n\t\trect = options.domNodeRect;\n\t} else {\n\t\trect = {\n\t\t\tleft: options.domNode.offsetLeft,\n\t\t\ttop: options.domNode.offsetTop,\n\t\t\twidth: options.domNode.offsetWidth,\n\t\t\theight: options.domNode.offsetHeight\n\t\t};\n\t}\n\tvar popupRect = \"(\" + rect.left + \",\" + rect.top + \",\" + \n\t\t\t\trect.width + \",\" + rect.height + \")\";\n\tif(options.noStateReference) {\n\t\toptions.wiki.setText(options.title,\"text\",undefined,popupRect);\n\t} else {\n\t\toptions.wiki.setTextReference(options.title,popupRect);\n\t}\n\t// Add the click handler if we have any popups\n\tif(this.popups.length > 0) {\n\t\tthis.rootElement.addEventListener(\"click\",this,true);\t\t\n\t}\n};\n\n/*\nCancel all popups at or above a specified level or DOM node\nlevel: popup level to cancel (0 cancels all popups)\n*/\nPopup.prototype.cancel = function(level) {\n\tvar numPopups = this.popups.length;\n\tlevel = Math.max(0,Math.min(level,numPopups));\n\tfor(var t=level; t<numPopups; t++) {\n\t\tvar popup = this.popups.pop();\n\t\tif(popup.title) {\n\t\t\tif(popup.noStateReference) {\n\t\t\t\tpopup.wiki.deleteTiddler(popup.title);\n\t\t\t} else {\n\t\t\t\tpopup.wiki.deleteTiddler($tw.utils.parseTextReference(popup.title).title);\n \t\t}\n\t\t}\n\t}\n\tif(this.popups.length === 0) {\n\t\tthis.rootElement.removeEventListener(\"click\",this,false);\n\t}\n};\n\n/*\nReturns true if the specified title and text identifies an active popup\n*/\nPopup.prototype.readPopupState = function(text) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/;\n\treturn popupLocationRegExp.test(text);\n};\n\nexports.Popup = Popup;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/scroller.js": {
"title": "$:/core/modules/utils/dom/scroller.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/scroller.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Scroller object prototype that manages scrolling in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nEvent handler for when the `tm-scroll` event hits the document body\n*/\nvar PageScroller = function() {\n\tthis.idRequestFrame = null;\n\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\twindow.webkitRequestAnimationFrame ||\n\t\twindow.mozRequestAnimationFrame ||\n\t\tfunction(callback) {\n\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t};\n\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\twindow.webkitCancelAnimationFrame ||\n\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\twindow.mozCancelAnimationFrame ||\n\t\twindow.mozCancelRequestAnimationFrame ||\n\t\tfunction(id) {\n\t\t\twindow.clearTimeout(id);\n\t\t};\n};\n\nPageScroller.prototype.isScrolling = function() {\n\treturn this.idRequestFrame !== null;\n}\n\nPageScroller.prototype.cancelScroll = function(srcWindow) {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(srcWindow,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle an event\n*/\nPageScroller.prototype.handleEvent = function(event) {\n\tif(event.type === \"tm-scroll\") {\n\t\tif(event.paramObject && event.paramObject.selector) {\n\t\t\tthis.scrollSelectorIntoView(null,event.paramObject.selector);\n\t\t} else {\n\t\t\tthis.scrollIntoView(event.target);\t\t\t\n\t\t}\n\t\treturn false; // Event was handled\n\t}\n\treturn true;\n};\n\n/*\nHandle a scroll event hitting the page document\n*/\nPageScroller.prototype.scrollIntoView = function(element,callback) {\n\tvar self = this,\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t srcWindow = element ? element.ownerDocument.defaultView : window;\n\t// Now get ready to scroll the body\n\tthis.cancelScroll(srcWindow);\n\tthis.startTime = Date.now();\n\t// Get the height of any position:fixed toolbars\n\tvar toolbar = srcWindow.document.querySelector(\".tc-adjust-top-of-scroll\"),\n\t\toffset = 0;\n\tif(toolbar) {\n\t\toffset = toolbar.offsetHeight;\n\t}\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar getBounds = function() {\n\t\t\tvar clientBounds = typeof callback === 'function' ? callback() : element.getBoundingClientRect(),\n\t\t\t\tscrollPosition = $tw.utils.getScrollPosition(srcWindow);\n\t\t\treturn {\n\t\t\t\tleft: clientBounds.left + scrollPosition.x,\n\t\t\t\ttop: clientBounds.top + scrollPosition.y - offset,\n\t\t\t\twidth: clientBounds.width,\n\t\t\t\theight: clientBounds.height\n\t\t\t};\n\t\t},\n\t\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\t\t// targetPos/targetSize - position and size of the target element\n\t\t// currentPos/currentSize - position and size of the current scroll viewport\n\t\t// returns: new position of the scroll viewport\n\t\tgetEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\tvar newPos = targetPos;\n\t\t\t// If we are scrolling within 50 pixels of the top/left then snap to zero\n\t\t\tif(newPos < 50) {\n\t\t\t\tnewPos = 0;\n\t\t\t}\n\t\t\treturn newPos;\n\t\t},\n\t\tdrawFrame = function drawFrame() {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll(srcWindow);\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tvar scrollPosition = $tw.utils.getScrollPosition(srcWindow),\n\t\t\t\tbounds = getBounds(),\n\t\t\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,srcWindow.innerWidth),\n\t\t\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,srcWindow.innerHeight);\n\t\t\tsrcWindow.scrollTo(scrollPosition.x + (endX - scrollPosition.x) * t,scrollPosition.y + (endY - scrollPosition.y) * t);\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(srcWindow,drawFrame);\n\t\t\t}\n\t\t};\n\tdrawFrame();\n};\n\nPageScroller.prototype.scrollSelectorIntoView = function(baseElement,selector,callback) {\n\tbaseElement = baseElement || document.body;\n\tvar element = baseElement.querySelector(selector);\n\tif(element) {\n\t\tthis.scrollIntoView(element,callback);\t\t\n\t}\n};\n\nexports.PageScroller = PageScroller;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/edition-info.js": {
"title": "$:/core/modules/utils/edition-info.js",
"text": "/*\\\ntitle: $:/core/modules/utils/edition-info.js\ntype: application/javascript\nmodule-type: utils-node\n\nInformation about the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\nvar editionInfo;\n\nexports.getEditionInfo = function() {\n\tif(!editionInfo) {\n\t\t// Enumerate the edition paths\n\t\tvar editionPaths = $tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar);\n\t\teditionInfo = {};\n\t\tfor(var editionIndex=0; editionIndex<editionPaths.length; editionIndex++) {\n\t\t\tvar editionPath = editionPaths[editionIndex];\n\t\t\t// Enumerate the folders\n\t\t\tvar entries = fs.readdirSync(editionPath);\n\t\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\t\tvar entry = entries[entryIndex];\n\t\t\t\t// Check if directories have a valid tiddlywiki.info\n\t\t\t\tif(!editionInfo[entry] && $tw.utils.isDirectory(path.resolve(editionPath,entry))) {\n\t\t\t\t\tvar info;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tinfo = JSON.parse(fs.readFileSync(path.resolve(editionPath,entry,\"tiddlywiki.info\"),\"utf8\"));\n\t\t\t\t\t} catch(ex) {\n\t\t\t\t\t}\n\t\t\t\t\tif(info) {\n\t\t\t\t\t\teditionInfo[entry] = info;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn editionInfo;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils-node"
},
"$:/core/modules/utils/fakedom.js": {
"title": "$:/core/modules/utils/fakedom.js",
"text": "/*\\\ntitle: $:/core/modules/utils/fakedom.js\ntype: application/javascript\nmodule-type: global\n\nA barebones implementation of DOM interfaces needed by the rendering mechanism.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Sequence number used to enable us to track objects for testing\nvar sequenceNumber = null;\n\nvar bumpSequenceNumber = function(object) {\n\tif(sequenceNumber !== null) {\n\t\tobject.sequenceNumber = sequenceNumber++;\n\t}\n};\n\nvar TW_Node = function (){\n\tthrow TypeError(\"Illegal constructor\");\n};\n\nObject.defineProperty(TW_Node.prototype, 'ELEMENT_NODE', {\n\tget: function() {\n\t\treturn 1;\n\t}\n});\n\nObject.defineProperty(TW_Node.prototype, 'TEXT_NODE', {\n\tget: function() {\n\t\treturn 3;\n\t}\n});\n\nvar TW_TextNode = function(text) {\n\tbumpSequenceNumber(this);\n\tthis.textContent = text + \"\";\n};\n\nTW_TextNode.prototype = Object.create(TW_Node.prototype);\n\nObject.defineProperty(TW_TextNode.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn this.TEXT_NODE;\n\t}\n});\n\nObject.defineProperty(TW_TextNode.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\treturn this.textContent.replace(/(\\r?\\n)/g,\"\");\n\t}\n});\n\nvar TW_Element = function(tag,namespace) {\n\tbumpSequenceNumber(this);\n\tthis.isTiddlyWikiFakeDom = true;\n\tthis.tag = tag;\n\tthis.attributes = {};\n\tthis.isRaw = false;\n\tthis.children = [];\n\tthis._style = {};\n\tthis.namespaceURI = namespace || \"http://www.w3.org/1999/xhtml\";\n};\n\nTW_Element.prototype = Object.create(TW_Node.prototype);\n\nObject.defineProperty(TW_Element.prototype, \"style\", {\n\tget: function() {\n\t\treturn this._style;\n\t},\n\tset: function(str) {\n\t\tvar self = this;\n\t\tstr = str || \"\";\n\t\t$tw.utils.each(str.split(\";\"),function(declaration) {\n\t\t\tvar parts = declaration.split(\":\"),\n\t\t\t\tname = $tw.utils.trim(parts[0]),\n\t\t\t\tvalue = $tw.utils.trim(parts[1]);\n\t\t\tif(name && value) {\n\t\t\t\tself._style[$tw.utils.convertStyleNameToPropertyName(name)] = value;\n\t\t\t}\n\t\t});\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn this.ELEMENT_NODE;\n\t}\n});\n\nTW_Element.prototype.getAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot getAttribute on a raw TW_Element\";\n\t}\n\treturn this.attributes[name];\n};\n\nTW_Element.prototype.setAttribute = function(name,value) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot setAttribute on a raw TW_Element\";\n\t}\n\tthis.attributes[name] = value + \"\";\n};\n\nTW_Element.prototype.setAttributeNS = function(namespace,name,value) {\n\tthis.setAttribute(name,value);\n};\n\nTW_Element.prototype.removeAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot removeAttribute on a raw TW_Element\";\n\t}\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\tdelete this.attributes[name];\n\t}\n};\n\nTW_Element.prototype.appendChild = function(node) {\n\tthis.children.push(node);\n\tnode.parentNode = this;\n};\n\nTW_Element.prototype.insertBefore = function(node,nextSibling) {\n\tif(nextSibling) {\n\t\tvar p = this.children.indexOf(nextSibling);\n\t\tif(p !== -1) {\n\t\t\tthis.children.splice(p,0,node);\n\t\t\tnode.parentNode = this;\n\t\t} else {\n\t\t\tthis.appendChild(node);\n\t\t}\n\t} else {\n\t\tthis.appendChild(node);\n\t}\n};\n\nTW_Element.prototype.removeChild = function(node) {\n\tvar p = this.children.indexOf(node);\n\tif(p !== -1) {\n\t\tthis.children.splice(p,1);\n\t}\n};\n\nTW_Element.prototype.hasChildNodes = function() {\n\treturn !!this.children.length;\n};\n\nObject.defineProperty(TW_Element.prototype, \"childNodes\", {\n\tget: function() {\n\t\treturn this.children;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"firstChild\", {\n\tget: function() {\n\t\treturn this.children[0];\n\t}\n});\n\nTW_Element.prototype.addEventListener = function(type,listener,useCapture) {\n\t// Do nothing\n};\n\nObject.defineProperty(TW_Element.prototype, \"tagName\", {\n\tget: function() {\n\t\treturn this.tag || \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"className\", {\n\tget: function() {\n\t\treturn this.attributes[\"class\"] || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes[\"class\"] = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"value\", {\n\tget: function() {\n\t\treturn this.attributes.value || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes.value = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"outerHTML\", {\n\tget: function() {\n\t\tvar output = [],attr,a,v;\n\t\toutput.push(\"<\",this.tag);\n\t\tif(this.attributes) {\n\t\t\tattr = [];\n\t\t\tfor(a in this.attributes) {\n\t\t\t\tattr.push(a);\n\t\t\t}\n\t\t\tattr.sort();\n\t\t\tfor(a=0; a<attr.length; a++) {\n\t\t\t\tv = this.attributes[attr[a]];\n\t\t\t\tif(v !== undefined) {\n\t\t\t\t\toutput.push(\" \",attr[a],\"=\\\"\",$tw.utils.htmlEncode(v),\"\\\"\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif(this._style) {\n\t\t\tvar style = [];\n\t\t\tfor(var s in this._style) {\n\t\t\t\tstyle.push($tw.utils.convertPropertyNameToStyleName(s) + \":\" + this._style[s] + \";\");\n\t\t\t}\n\t\t\tif(style.length > 0) {\n\t\t\t\toutput.push(\" style=\\\"\",style.join(\"\"),\"\\\"\");\n\t\t\t}\n\t\t}\n\t\toutput.push(\">\");\n\t\tif($tw.config.htmlVoidElements.indexOf(this.tag) === -1) {\n\t\t\toutput.push(this.innerHTML);\n\t\t\toutput.push(\"</\",this.tag,\">\");\n\t\t}\n\t\treturn output.join(\"\");\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"innerHTML\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\treturn this.rawHTML;\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tif(node instanceof TW_Element) {\n\t\t\t\t\tb.push(node.outerHTML);\n\t\t\t\t} else if(node instanceof TW_TextNode) {\n\t\t\t\t\tb.push($tw.utils.htmlEncode(node.textContent));\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.isRaw = true;\n\t\tthis.rawHTML = value;\n\t\tthis.rawTextContent = null;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textInnerHTML\", {\n\tset: function(value) {\n\t\tif(this.isRaw) {\n\t\t\tthis.rawTextContent = value;\n\t\t} else {\n\t\t\tthrow \"Cannot set textInnerHTML of a non-raw TW_Element\";\n\t\t}\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\tif(this.rawTextContent === null) {\n\t\t\t\treturn \"\";\n\t\t\t} else {\n\t\t\t\treturn this.rawTextContent;\n\t\t\t}\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.textContent);\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.children = [new TW_TextNode(value)];\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\treturn \"\";\n\t\t} else {\n\t\t\tvar b = [],\n\t\t\t\tisBlock = $tw.config.htmlBlockElements.indexOf(this.tag) !== -1;\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\tif(this.tag === \"li\") {\n\t\t\t\tb.push(\"* \");\n\t\t\t}\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.formattedTextContent);\n\t\t\t});\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\treturn b.join(\"\");\n\t\t}\n\t}\n});\n\nvar document = {\n\tsetSequenceNumber: function(value) {\n\t\tsequenceNumber = value;\n\t},\n\tcreateElementNS: function(namespace,tag) {\n\t\treturn new TW_Element(tag,namespace);\n\t},\n\tcreateElement: function(tag) {\n\t\treturn new TW_Element(tag);\n\t},\n\tcreateTextNode: function(text) {\n\t\treturn new TW_TextNode(text);\n\t},\n\tcompatMode: \"CSS1Compat\", // For KaTeX to know that we're not a browser in quirks mode\n\tisTiddlyWikiFakeDom: true\n};\n\nexports.fakeDocument = document;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/utils/filesystem.js": {
"title": "$:/core/modules/utils/filesystem.js",
"text": "/*\\\ntitle: $:/core/modules/utils/filesystem.js\ntype: application/javascript\nmodule-type: utils-node\n\nFile system utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\n/*\nReturn the subdirectories of a path\n*/\nexports.getSubdirectories = function(dirPath) {\n\tif(!$tw.utils.isDirectory(dirPath)) {\n\t\treturn null;\n\t}\n\tvar subdirs = [];\n\t$tw.utils.each(fs.readdirSync(dirPath),function(item) {\n\t\tif($tw.utils.isDirectory(path.resolve(dirPath,item))) {\n\t\t\tsubdirs.push(item);\n\t\t}\n\t});\n\treturn subdirs;\n}\n\n/*\nRecursively (and synchronously) copy a directory and all its content\n*/\nexports.copyDirectory = function(srcPath,dstPath) {\n\t// Remove any trailing path separators\n\tsrcPath = path.resolve($tw.utils.removeTrailingSeparator(srcPath));\n\tdstPath = path.resolve($tw.utils.removeTrailingSeparator(dstPath));\n\t// Check that neither director is within the other\n\tif(srcPath.substring(0,dstPath.length) === dstPath || dstPath.substring(0,srcPath.length) === srcPath) {\n\t\treturn \"Cannot copy nested directories\";\n\t}\n\t// Create the destination directory\n\tvar err = $tw.utils.createDirectory(dstPath);\n\tif(err) {\n\t\treturn err;\n\t}\n\t// Function to copy a folder full of files\n\tvar copy = function(srcPath,dstPath) {\n\t\tvar srcStats = fs.lstatSync(srcPath),\n\t\t\tdstExists = fs.existsSync(dstPath);\n\t\tif(srcStats.isFile()) {\n\t\t\t$tw.utils.copyFile(srcPath,dstPath);\n\t\t} else if(srcStats.isDirectory()) {\n\t\t\tvar items = fs.readdirSync(srcPath);\n\t\t\tfor(var t=0; t<items.length; t++) {\n\t\t\t\tvar item = items[t],\n\t\t\t\t\terr = copy(srcPath + path.sep + item,dstPath + path.sep + item);\n\t\t\t\tif(err) {\n\t\t\t\t\treturn err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\tcopy(srcPath,dstPath);\n\treturn null;\n};\n\n/*\nCopy a file\n*/\nvar FILE_BUFFER_LENGTH = 64 * 1024,\n\tfileBuffer;\n\nexports.copyFile = function(srcPath,dstPath) {\n\t// Create buffer if required\n\tif(!fileBuffer) {\n\t\tfileBuffer = Buffer.alloc(FILE_BUFFER_LENGTH);\n\t}\n\t// Create any directories in the destination\n\t$tw.utils.createDirectory(path.dirname(dstPath));\n\t// Copy the file\n\tvar srcFile = fs.openSync(srcPath,\"r\"),\n\t\tdstFile = fs.openSync(dstPath,\"w\"),\n\t\tbytesRead = 1,\n\t\tpos = 0;\n\twhile (bytesRead > 0) {\n\t\tbytesRead = fs.readSync(srcFile,fileBuffer,0,FILE_BUFFER_LENGTH,pos);\n\t\tfs.writeSync(dstFile,fileBuffer,0,bytesRead);\n\t\tpos += bytesRead;\n\t}\n\tfs.closeSync(srcFile);\n\tfs.closeSync(dstFile);\n\treturn null;\n};\n\n/*\nRemove trailing path separator\n*/\nexports.removeTrailingSeparator = function(dirPath) {\n\tvar len = dirPath.length;\n\tif(dirPath.charAt(len-1) === path.sep) {\n\t\tdirPath = dirPath.substr(0,len-1);\n\t}\n\treturn dirPath;\n};\n\n/*\nRecursively create a directory\n*/\nexports.createDirectory = function(dirPath) {\n\tif(dirPath.substr(dirPath.length-1,1) !== path.sep) {\n\t\tdirPath = dirPath + path.sep;\n\t}\n\tvar pos = 1;\n\tpos = dirPath.indexOf(path.sep,pos);\n\twhile(pos !== -1) {\n\t\tvar subDirPath = dirPath.substr(0,pos);\n\t\tif(!$tw.utils.isDirectory(subDirPath)) {\n\t\t\ttry {\n\t\t\t\tfs.mkdirSync(subDirPath);\n\t\t\t} catch(e) {\n\t\t\t\treturn \"Error creating directory '\" + subDirPath + \"'\";\n\t\t\t}\n\t\t}\n\t\tpos = dirPath.indexOf(path.sep,pos + 1);\n\t}\n\treturn null;\n};\n\n/*\nRecursively create directories needed to contain a specified file\n*/\nexports.createFileDirectories = function(filePath) {\n\treturn $tw.utils.createDirectory(path.dirname(filePath));\n};\n\n/*\nRecursively delete a directory\n*/\nexports.deleteDirectory = function(dirPath) {\n\tif(fs.existsSync(dirPath)) {\n\t\tvar entries = fs.readdirSync(dirPath);\n\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\tvar currPath = dirPath + path.sep + entries[entryIndex];\n\t\t\tif(fs.lstatSync(currPath).isDirectory()) {\n\t\t\t\t$tw.utils.deleteDirectory(currPath);\n\t\t\t} else {\n\t\t\t\tfs.unlinkSync(currPath);\n\t\t\t}\n\t\t}\n\tfs.rmdirSync(dirPath);\n\t}\n\treturn null;\n};\n\n/*\nCheck if a path identifies a directory\n*/\nexports.isDirectory = function(dirPath) {\n\treturn fs.existsSync(dirPath) && fs.statSync(dirPath).isDirectory();\n};\n\n/*\nCheck if a path identifies a directory that is empty\n*/\nexports.isDirectoryEmpty = function(dirPath) {\n\tif(!$tw.utils.isDirectory(dirPath)) {\n\t\treturn false;\n\t}\n\tvar files = fs.readdirSync(dirPath),\n\t\tempty = true;\n\t$tw.utils.each(files,function(file,index) {\n\t\tif(file.charAt(0) !== \".\") {\n\t\t\tempty = false;\n\t\t}\n\t});\n\treturn empty;\n};\n\n/*\nRecursively delete a tree of empty directories\n*/\nexports.deleteEmptyDirs = function(dirpath,callback) {\n\tvar self = this;\n\tfs.readdir(dirpath,function(err,files) {\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\tif(files.length > 0) {\n\t\t\treturn callback(null);\n\t\t}\n\t\tfs.rmdir(dirpath,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.deleteEmptyDirs(path.dirname(dirpath),callback);\n\t\t});\n\t});\n};\n\n/*\nCreate a fileInfo object for saving a tiddler:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file on disk (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n\tisEditableFile: true if the tiddler was loaded via non-standard options & marked editable\nOptions include:\n\tdirectory: absolute path of root directory to which we are saving\n\tpathFilters: optional array of filters to be used to generate the base path\n\textFilters: optional array of filters to be used to generate the base path\n\twiki: optional wiki for evaluating the pathFilters,\n\tfileInfo: an existing fileInfo to check against\n\toriginalpath: a preferred filepath if no pathFilters match\n*/\nexports.generateTiddlerFileInfo = function(tiddler,options) {\n\tvar fileInfo = {}, metaExt;\n\t// Propagate the isEditableFile flag\n\tif(options.fileInfo) {\n\t\tfileInfo.isEditableFile = options.fileInfo.isEditableFile || false;\n\t}\n\t// Check if the tiddler has any unsafe fields that can't be expressed in a .tid or .meta file: containing control characters, or leading/trailing whitespace\n\tvar hasUnsafeFields = false;\n\t$tw.utils.each(tiddler.getFieldStrings(),function(value,fieldName) {\n\t\tif(fieldName !== \"text\") {\n\t\t\thasUnsafeFields = hasUnsafeFields || /[\\x00-\\x1F]/mg.test(value);\n\t\t\thasUnsafeFields = hasUnsafeFields || ($tw.utils.trim(value) !== value);\n\t\t}\n\t});\n\t// Check for field values \n\tif(hasUnsafeFields) {\n\t\t// Save as a JSON file\n\t\tfileInfo.type = \"application/json\";\n\t\tfileInfo.hasMetaFile = false;\n\t} else {\n\t\t// Save as a .tid or a text/binary file plus a .meta file\n\t\tvar tiddlerType = tiddler.fields.type || \"text/vnd.tiddlywiki\";\n\t\tif(tiddlerType === \"text/vnd.tiddlywiki\") {\n\t\t\t// Save as a .tid file\n\t\t\tfileInfo.type = \"application/x-tiddler\";\n\t\t\tfileInfo.hasMetaFile = false;\n\t\t} else {\n\t\t\t// Save as a text/binary file and a .meta file\n\t\t\tfileInfo.type = tiddlerType;\n\t\t\tfileInfo.hasMetaFile = true;\n\t\t}\n\t\tif(options.extFilters) {\n\t\t\t// Check for extension override\n\t\t\tmetaExt = $tw.utils.generateTiddlerExtension(tiddler.fields.title,{\n\t\t\t\textFilters: options.extFilters,\n\t\t\t\twiki: options.wiki\n\t\t\t});\n\t\t\tif(metaExt){\n\t\t\t\tif(metaExt === \".tid\") {\n\t\t\t\t\t// Overriding to the .tid extension needs special handling\n\t\t\t\t\tfileInfo.type = \"application/x-tiddler\";\n\t\t\t\t\tfileInfo.hasMetaFile = false;\n\t\t\t\t} else if (metaExt === \".json\") {\n\t\t\t\t\t// Overriding to the .json extension needs special handling\n\t\t\t\t\tfileInfo.type = \"application/json\";\n\t\t\t\t\tfileInfo.hasMetaFile = false;\n\t\t\t\t} else {\n\t\t\t\t\t//If the new type matches a known extention, use that MIME type's encoding\n\t\t\t\t\tvar extInfo = $tw.utils.getFileExtensionInfo(metaExt);\n\t\t\t\t\tfileInfo.type = extInfo ? extInfo.type : null;\n\t\t\t\t\tfileInfo.encoding = $tw.utils.getTypeEncoding(metaExt);\n\t\t\t\t\tfileInfo.hasMetaFile = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Take the file extension from the tiddler content type or metaExt\n\tvar contentTypeInfo = $tw.config.contentTypeInfo[fileInfo.type] || {extension: \"\"};\n\t// Generate the filepath\n\tfileInfo.filepath = $tw.utils.generateTiddlerFilepath(tiddler.fields.title,{\n\t\textension: metaExt || contentTypeInfo.extension,\n\t\tdirectory: options.directory,\n\t\tpathFilters: options.pathFilters,\n\t\twiki: options.wiki,\n\t\tfileInfo: options.fileInfo,\n\t\toriginalpath: options.originalpath\n\t});\n\treturn fileInfo;\n};\n\n/*\nGenerate the file extension for saving a tiddler\nOptions include:\n\textFilters: optional array of filters to be used to generate the extention\n\twiki: optional wiki for evaluating the extFilters\n*/\nexports.generateTiddlerExtension = function(title,options) {\n\tvar self = this,\n\t\textension;\n\t// Check if any of the extFilters applies\n\tif(options.extFilters && options.wiki) { \n\t\t$tw.utils.each(options.extFilters,function(filter) {\n\t\t\tif(!extension) {\n\t\t\t\tvar source = options.wiki.makeTiddlerIterator([title]),\n\t\t\t\t\tresult = options.wiki.filterTiddlers(filter,null,source);\n\t\t\t\tif(result.length > 0) {\n\t\t\t\t\textension = result[0];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn extension;\n};\n\n/*\nGenerate the filepath for saving a tiddler\nOptions include:\n\textension: file extension to be added the finished filepath\n\tdirectory: absolute path of root directory to which we are saving\n\tpathFilters: optional array of filters to be used to generate the base path\n\twiki: optional wiki for evaluating the pathFilters\n\tfileInfo: an existing fileInfo object to check against\n*/\nexports.generateTiddlerFilepath = function(title,options) {\n\tvar self = this,\n\t\tdirectory = options.directory || \"\",\n\t\textension = options.extension || \"\",\n\t\toriginalpath = options.originalpath || \"\",\n\t\tfilepath;\t\n\t// Check if any of the pathFilters applies\n\tif(options.pathFilters && options.wiki) {\n\t\t$tw.utils.each(options.pathFilters,function(filter) {\n\t\t\tif(!filepath) {\n\t\t\t\tvar source = options.wiki.makeTiddlerIterator([title]),\n\t\t\t\t\tresult = options.wiki.filterTiddlers(filter,null,source);\n\t\t\t\tif(result.length > 0) {\n\t\t\t\t\tfilepath = result[0];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tif(!filepath && originalpath !== \"\") {\n\t\t//Use the originalpath without the extension\n\t\tvar ext = path.extname(originalpath);\n\t\tfilepath = originalpath.substring(0,originalpath.length - ext.length);\n\t} else if(!filepath) {\n\t\tfilepath = title;\n\t\t// If the filepath already ends in the extension then remove it\n\t\tif(filepath.substring(filepath.length - extension.length) === extension) {\n\t\t\tfilepath = filepath.substring(0,filepath.length - extension.length);\n\t\t}\n\t\t// Remove any forward or backward slashes so we don't create directories\n\t\tfilepath = filepath.replace(/\\/|\\\\/g,\"_\");\n\t}\n\t//If the path does not start with \".\" or \"..\" and a path seperator, then\n\tif(!/^\\.{1,2}[/\\\\]/g.test(filepath)) {\n\t\t// Don't let the filename start with any dots because such files are invisible on *nix\n\t\tfilepath = filepath.replace(/^\\.+/g,\"_\");\n\t}\n\t// Remove any characters that can't be used in cross-platform filenames\n\tfilepath = $tw.utils.transliterate(filepath.replace(/<|>|~|\\:|\\\"|\\||\\?|\\*|\\^/g,\"_\"));\n\t// Truncate the filename if it is too long\n\tif(filepath.length > 200) {\n\t\tfilepath = filepath.substr(0,200);\n\t}\n\t// If the resulting filename is blank (eg because the title is just punctuation characters)\n\tif(!filepath) {\n\t\t// ...then just use the character codes of the title\n\t\tfilepath = \"\";\t\n\t\t$tw.utils.each(title.split(\"\"),function(char) {\n\t\t\tif(filepath) {\n\t\t\t\tfilepath += \"-\";\n\t\t\t}\n\t\t\tfilepath += char.charCodeAt(0).toString();\n\t\t});\n\t}\n\t// Add a uniquifier if the file already exists\n\tvar fullPath, oldPath = (options.fileInfo) ? options.fileInfo.filepath : undefined,\n\t\tcount = 0;\n\tdo {\n\t\tfullPath = path.resolve(directory,filepath + (count ? \"_\" + count : \"\") + extension);\n\t\tif(oldPath && oldPath == fullPath) {\n\t\t\tbreak;\n\t\t}\n\t\tcount++;\n\t} while(fs.existsSync(fullPath));\n\t// If the last write failed with an error, or if path does not start with:\n\t//\tthe resolved options.directory, the resolved wikiPath directory, or the wikiTiddlersPath directory, \n\t//\tthen encodeURIComponent() and resolve to tiddler directory\n\tvar newPath = fullPath,\n\t\tencode = (options.fileInfo || {writeError: false}).writeError == true;\n\tif(!encode){\n\t\tencode = !(fullPath.indexOf(path.resolve(directory)) == 0 ||\n\t\t\tfullPath.indexOf(path.resolve($tw.boot.wikiPath)) == 0 ||\n\t\t\tfullPath.indexOf($tw.boot.wikiTiddlersPath) == 0);\n\t\t}\n\tif(encode){\n\t\tfullPath = path.resolve(directory, encodeURIComponent(fullPath));\n\t}\n\t// Call hook to allow plugins to modify the final path\n\tfullPath = $tw.hooks.invokeHook(\"th-make-tiddler-path\", newPath, fullPath);\n\t// Return the full path to the file\n\treturn fullPath;\n};\n\n/*\nSave a tiddler to a file described by the fileInfo:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n*/\nexports.saveTiddlerToFile = function(tiddler,fileInfo,callback) {\n\t$tw.utils.createDirectory(path.dirname(fileInfo.filepath));\n\tif(fileInfo.hasMetaFile) {\n\t\t// Save the tiddler as a separate body and meta file\n\t\tvar typeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/plain\"] || {encoding: \"utf8\"};\n\t\tfs.writeFile(fileInfo.filepath,tiddler.fields.text,typeInfo.encoding,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tfs.writeFile(fileInfo.filepath + \".meta\",tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}),\"utf8\",callback);\n\t\t});\n\t} else {\n\t\t// Save the tiddler as a self contained templated file\n\t\tif(fileInfo.type === \"application/x-tiddler\") {\n\t\t\tfs.writeFile(fileInfo.filepath,tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}) + (!!tiddler.fields.text ? \"\\n\\n\" + tiddler.fields.text : \"\"),\"utf8\",callback);\n\t\t} else {\n\t\t\tfs.writeFile(fileInfo.filepath,JSON.stringify([tiddler.getFieldStrings({exclude: [\"bag\"]})],null,$tw.config.preferences.jsonSpaces),\"utf8\",callback);\n\t\t}\n\t}\n};\n\n/*\nSave a tiddler to a file described by the fileInfo:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n*/\nexports.saveTiddlerToFileSync = function(tiddler,fileInfo) {\n\t$tw.utils.createDirectory(path.dirname(fileInfo.filepath));\n\tif(fileInfo.hasMetaFile) {\n\t\t// Save the tiddler as a separate body and meta file\n\t\tvar typeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/plain\"] || {encoding: \"utf8\"};\n\t\tfs.writeFileSync(fileInfo.filepath,tiddler.fields.text,typeInfo.encoding);\n\t\tfs.writeFileSync(fileInfo.filepath + \".meta\",tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}),\"utf8\");\n\t} else {\n\t\t// Save the tiddler as a self contained templated file\n\t\tif(fileInfo.type === \"application/x-tiddler\") {\n\t\t\tfs.writeFileSync(fileInfo.filepath,tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}) + (!!tiddler.fields.text ? \"\\n\\n\" + tiddler.fields.text : \"\"),\"utf8\");\n\t\t} else {\n\t\t\tfs.writeFileSync(fileInfo.filepath,JSON.stringify([tiddler.getFieldStrings({exclude: [\"bag\"]})],null,$tw.config.preferences.jsonSpaces),\"utf8\");\n\t\t}\n\t}\n};\n\n/*\nDelete a file described by the fileInfo if it exits\n*/\nexports.deleteTiddlerFile = function(fileInfo, callback) {\n\t//Only attempt to delete files that exist on disk\n\tif(!fileInfo.filepath || !fs.existsSync(fileInfo.filepath)) {\n\t\treturn callback(null);\n\t}\n\t// Delete the file\n\tfs.unlink(fileInfo.filepath,function(err) {\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\t\n\t\t// Delete the metafile if present\n\t\tif(fileInfo.hasMetaFile && fs.existsSync(fileInfo.filepath + \".meta\")) {\n\t\t\tfs.unlink(fileInfo.filepath + \".meta\",function(err) {\n\t\t\t\tif(err) {\n\t\t\t\t\treturn callback(err);\n\t\t\t\t}\n\t\t\t\treturn $tw.utils.deleteEmptyDirs(path.dirname(fileInfo.filepath),callback);\n\t\t\t});\n\t\t} else {\n\t\t\treturn $tw.utils.deleteEmptyDirs(path.dirname(fileInfo.filepath),callback);\n\t\t}\n\t});\n};\n\n/*\nCleanup old files on disk, by comparing the options values:\n\tadaptorInfo from $tw.syncer.tiddlerInfo\n\tbootInfo from $tw.boot.files\n*/\nexports.cleanupTiddlerFiles = function(options, callback) {\n\tvar adaptorInfo = options.adaptorInfo || {},\n\tbootInfo = options.bootInfo || {},\n\ttitle = options.title || \"undefined\";\n\tif(adaptorInfo.filepath && bootInfo.filepath && adaptorInfo.filepath !== bootInfo.filepath) {\n\t\treturn $tw.utils.deleteTiddlerFile(adaptorInfo, function(err){\n\t\t\tif(err) {\n\t\t\t\tif ((err.code == \"EPERM\" || err.code == \"EACCES\") && err.syscall == \"unlink\") {\n\t\t\t\t\t// Error deleting the previous file on disk, should fail gracefully\n\t\t\t\t\t$tw.syncer.displayError(\"Server desynchronized. Error cleaning up previous file for tiddler: \"+title, err);\n\t\t\t\t\treturn callback(null);\n\t\t\t\t} else {\n\t\t\t\t\treturn callback(err);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn callback(null);\n\t\t});\n\t} else {\n\t\treturn callback(null);\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils-node"
},
"$:/core/modules/utils/linkedlist.js": {
"title": "$:/core/modules/utils/linkedlist.js",
"text": "/*\\\nmodule-type: utils\ntitle: $:/core/modules/utils/linkedlist.js\ntype: application/javascript\n\nThis is a doubly-linked indexed list intended for manipulation, particularly\npushTop, which it does with significantly better performance than an array.\n\n\\*/\n(function(){\n\nfunction LinkedList() {\n\tthis.clear();\n};\n\nLinkedList.prototype.clear = function() {\n\tthis.index = Object.create(null);\n\t// LinkedList performs the duty of both the head and tail node\n\tthis.next = this;\n\tthis.prev = this;\n\tthis.length = 0;\n};\n\nLinkedList.prototype.remove = function(value) {\n\tif($tw.utils.isArray(value)) {\n\t\tfor(var t=0; t<value.length; t++) {\n\t\t\t_removeOne(this,value[t]);\n\t\t}\n\t} else {\n\t\t_removeOne(this,value);\n\t}\n};\n\nLinkedList.prototype.push = function(/* values */) {\n\tfor(var i = 0; i < arguments.length; i++) {\n\t\tvar value = arguments[i];\n\t\tvar node = {value: value};\n\t\tvar preexistingNode = this.index[value];\n\t\t_linkToEnd(this,node);\n\t\tif(preexistingNode) {\n\t\t\t// We want to keep pointing to the first instance, but we want\n\t\t\t// to have that instance (or chain of instances) point to the\n\t\t\t// new one.\n\t\t\twhile (preexistingNode.copy) {\n\t\t\t\tpreexistingNode = preexistingNode.copy;\n\t\t\t}\n\t\t\tpreexistingNode.copy = node;\n\t\t} else {\n\t\t\tthis.index[value] = node;\n\t\t}\n\t}\n};\n\nLinkedList.prototype.pushTop = function(value) {\n\tif($tw.utils.isArray(value)) {\n\t\tfor(var t=0; t<value.length; t++) {\n\t\t\t_removeOne(this,value[t]);\n\t\t}\n\t\tthis.push.apply(this,value);\n\t} else {\n\t\tvar node = _removeOne(this,value);\n\t\tif(!node) {\n\t\t\tnode = {value: value};\n\t\t\tthis.index[value] = node;\n\t\t} else {\n\t\t\t// Put this node at the end of the copy chain.\n\t\t\tvar preexistingNode = node;\n\t\t\twhile(preexistingNode.copy) {\n\t\t\t\tpreexistingNode = preexistingNode.copy;\n\t\t\t}\n\t\t\t// The order of these three statements is important,\n\t\t\t// because sometimes preexistingNode == node.\n\t\t\tpreexistingNode.copy = node;\n\t\t\tthis.index[value] = node.copy;\n\t\t\tnode.copy = undefined;\n\t\t}\n\t\t_linkToEnd(this,node);\n\t}\n};\n\nLinkedList.prototype.each = function(callback) {\n\tfor(var ptr = this.next; ptr !== this; ptr = ptr.next) {\n\t\tcallback(ptr.value);\n\t}\n};\n\nLinkedList.prototype.toArray = function() {\n\tvar output = [];\n\tfor(var ptr = this.next; ptr !== this; ptr = ptr.next) {\n\t\toutput.push(ptr.value);\n\t}\n\treturn output;\n};\n\nfunction _removeOne(list,value) {\n\tvar node = list.index[value];\n\tif(node) {\n\t\tnode.prev.next = node.next;\n\t\tnode.next.prev = node.prev;\n\t\tlist.length -= 1;\n\t\t// Point index to the next instance of the same value, maybe nothing.\n\t\tlist.index[value] = node.copy;\n\t}\n\treturn node;\n};\n\nfunction _linkToEnd(list,node) {\n\t// Sticks the given node onto the end of the list.\n\tlist.prev.next = node;\n\tnode.prev = list.prev;\n\tlist.prev = node;\n\tnode.next = list;\n\tlist.length += 1;\n};\n\nexports.LinkedList = LinkedList;\n\n})();\n",
"module-type": "utils",
"type": "application/javascript"
},
"$:/core/modules/utils/logger.js": {
"title": "$:/core/modules/utils/logger.js",
"text": "/*\\\ntitle: $:/core/modules/utils/logger.js\ntype: application/javascript\nmodule-type: utils\n\nA basic logging implementation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ALERT_TAG = \"$:/tags/Alert\";\n\n/*\nMake a new logger\n*/\nfunction Logger(componentName,options) {\n\toptions = options || {};\n\tthis.componentName = componentName || \"\";\n\tthis.colour = options.colour || \"white\";\n\tthis.enable = \"enable\" in options ? options.enable : true;\n\tthis.save = \"save\" in options ? options.save : true;\n\tthis.saveLimit = options.saveLimit || 100 * 1024;\n\tthis.saveBufferLogger = this;\n\tthis.buffer = \"\";\n\tthis.alertCount = 0;\n}\n\nLogger.prototype.setSaveBuffer = function(logger) {\n\tthis.saveBufferLogger = logger;\n};\n\n/*\nLog a message\n*/\nLogger.prototype.log = function(/* args */) {\n\tvar self = this;\n\tif(this.enable) {\n\t\tif(this.saveBufferLogger.save) {\n\t\t\tthis.saveBufferLogger.buffer += $tw.utils.formatDateString(new Date(),\"YYYY MM DD 0hh:0mm:0ss.0XXX\") + \":\";\n\t\t\t$tw.utils.each(Array.prototype.slice.call(arguments,0),function(arg,index) {\n\t\t\t\tself.saveBufferLogger.buffer += \" \" + arg;\n\t\t\t});\n\t\t\tthis.saveBufferLogger.buffer += \"\\n\";\n\t\t\tthis.saveBufferLogger.buffer = this.saveBufferLogger.buffer.slice(-this.saveBufferLogger.saveLimit);\t\t\t\n\t\t}\n\t\tif(console !== undefined && console.log !== undefined) {\n\t\t\treturn Function.apply.call(console.log, console, [$tw.utils.terminalColour(this.colour),this.componentName + \":\"].concat(Array.prototype.slice.call(arguments,0)).concat($tw.utils.terminalColour()));\n\t\t}\n\t} \n};\n\n/*\nRead the message buffer\n*/\nLogger.prototype.getBuffer = function() {\n\treturn this.saveBufferLogger.buffer;\n};\n\n/*\nLog a structure as a table\n*/\nLogger.prototype.table = function(value) {\n\t(console.table || console.log)(value);\n};\n\n/*\nAlert a message\n*/\nLogger.prototype.alert = function(/* args */) {\n\tif(this.enable) {\n\t\t// Prepare the text of the alert\n\t\tvar text = Array.prototype.join.call(arguments,\" \");\n\t\t// Create alert tiddlers in the browser\n\t\tif($tw.browser) {\n\t\t\t// Check if there is an existing alert with the same text and the same component\n\t\t\tvar existingAlerts = $tw.wiki.getTiddlersWithTag(ALERT_TAG),\n\t\t\t\talertFields,\n\t\t\t\texistingCount,\n\t\t\t\tself = this;\n\t\t\t$tw.utils.each(existingAlerts,function(title) {\n\t\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\t\tif(tiddler.fields.text === text && tiddler.fields.component === self.componentName && tiddler.fields.modified && (!alertFields || tiddler.fields.modified < alertFields.modified)) {\n\t\t\t\t\t\talertFields = $tw.utils.extend({},tiddler.fields);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(alertFields) {\n\t\t\t\texistingCount = alertFields.count || 1;\n\t\t\t} else {\n\t\t\t\talertFields = {\n\t\t\t\t\ttitle: $tw.wiki.generateNewTitle(\"$:/temp/alerts/alert\",{prefix: \"\"}),\n\t\t\t\t\ttext: text,\n\t\t\t\t\ttags: [ALERT_TAG],\n\t\t\t\t\tcomponent: this.componentName\n\t\t\t\t};\n\t\t\t\texistingCount = 0;\n\t\t\t\tthis.alertCount += 1;\n\t\t\t}\n\t\t\talertFields.modified = new Date();\n\t\t\tif(++existingCount > 1) {\n\t\t\t\talertFields.count = existingCount;\n\t\t\t} else {\n\t\t\t\talertFields.count = undefined;\n\t\t\t}\n\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(alertFields));\n\t\t\t// Log the alert as well\n\t\t\tthis.log.apply(this,Array.prototype.slice.call(arguments,0));\n\t\t} else {\n\t\t\t// Print an orange message to the console if not in the browser\n\t\t\tconsole.error(\"\\x1b[1;33m\" + text + \"\\x1b[0m\");\n\t\t}\t\t\n\t}\n};\n\n/*\nClear outstanding alerts\n*/\nLogger.prototype.clearAlerts = function() {\n\tvar self = this;\n\tif($tw.browser && this.alertCount > 0) {\n\t\t$tw.utils.each($tw.wiki.getTiddlersWithTag(ALERT_TAG),function(title) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(tiddler.fields.component === self.componentName) {\n\t\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t\t}\n\t\t});\n\t\tthis.alertCount = 0;\n\t}\n};\n\nexports.Logger = Logger;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/parsetree.js": {
"title": "$:/core/modules/utils/parsetree.js",
"text": "/*\\\ntitle: $:/core/modules/utils/parsetree.js\ntype: application/javascript\nmodule-type: utils\n\nParse tree utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.addAttributeToParseTreeNode = function(node,name,value) {\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[name] = {type: \"string\", value: value};\n};\n\nexports.getAttributeValueFromParseTreeNode = function(node,name,defaultValue) {\n\tif(node.attributes && node.attributes[name] && node.attributes[name].value !== undefined) {\n\t\treturn node.attributes[name].value;\n\t}\n\treturn defaultValue;\n};\n\nexports.addClassToParseTreeNode = function(node,classString) {\n\tvar classes = [];\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[\"class\"] = node.attributes[\"class\"] || {type: \"string\", value: \"\"};\n\tif(node.attributes[\"class\"].type === \"string\") {\n\t\tif(node.attributes[\"class\"].value !== \"\") {\n\t\t\tclasses = node.attributes[\"class\"].value.split(\" \");\n\t\t}\n\t\tif(classString !== \"\") {\n\t\t\t$tw.utils.pushTop(classes,classString.split(\" \"));\n\t\t}\n\t\tnode.attributes[\"class\"].value = classes.join(\" \");\n\t}\n};\n\nexports.addStyleToParseTreeNode = function(node,name,value) {\n\t\tnode.attributes = node.attributes || {};\n\t\tnode.attributes.style = node.attributes.style || {type: \"string\", value: \"\"};\n\t\tif(node.attributes.style.type === \"string\") {\n\t\t\tnode.attributes.style.value += name + \":\" + value + \";\";\n\t\t}\n};\n\nexports.findParseTreeNode = function(nodeArray,search) {\n\tfor(var t=0; t<nodeArray.length; t++) {\n\t\tif(nodeArray[t].type === search.type && nodeArray[t].tag === search.tag) {\n\t\t\treturn nodeArray[t];\n\t\t}\n\t}\n\treturn undefined;\n};\n\n/*\nHelper to get the text of a parse tree node or array of nodes\n*/\nexports.getParseTreeText = function getParseTreeText(tree) {\n\tvar output = [];\n\tif($tw.utils.isArray(tree)) {\n\t\t$tw.utils.each(tree,function(node) {\n\t\t\toutput.push(getParseTreeText(node));\n\t\t});\n\t} else {\n\t\tif(tree.type === \"text\") {\n\t\t\toutput.push(tree.text);\n\t\t}\n\t\tif(tree.children) {\n\t\t\treturn getParseTreeText(tree.children);\n\t\t}\n\t}\n\treturn output.join(\"\");\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/performance.js": {
"title": "$:/core/modules/utils/performance.js",
"text": "/*\\\ntitle: $:/core/modules/utils/performance.js\ntype: application/javascript\nmodule-type: global\n\nPerformance measurement.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Performance(enabled) {\n\tthis.enabled = !!enabled;\n\tthis.measures = {}; // Hashmap by measurement name of {time:, invocations:}\n\tthis.logger = new $tw.utils.Logger(\"performance\");\n\tthis.showGreeting();\n}\n\nPerformance.prototype.showGreeting = function() {\n\tif($tw.browser) {\n\t\tthis.logger.log(\"Execute $tw.perf.log(); to see filter execution timings\");\t\t\n\t}\n};\n\n/*\nWrap performance reporting around a top level function\n*/\nPerformance.prototype.report = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments);\n\t\t\tself.logger.log(name + \": \" + $tw.utils.timer(startTime).toFixed(2) + \"ms\");\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\nPerformance.prototype.log = function() {\n\tvar self = this,\n\t\ttotalTime = 0,\n\t\torderedMeasures = Object.keys(this.measures).sort(function(a,b) {\n\t\t\tif(self.measures[a].time > self.measures[b].time) {\n\t\t\t\treturn -1;\n\t\t\t} else if (self.measures[a].time < self.measures[b].time) {\n\t\t\t\treturn + 1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t});\n\t$tw.utils.each(orderedMeasures,function(name) {\n\t\ttotalTime += self.measures[name].time;\n\t});\n\tvar results = []\n\t$tw.utils.each(orderedMeasures,function(name) {\n\t\tvar measure = self.measures[name];\n\t\tresults.push({name: name,invocations: measure.invocations, avgTime: measure.time / measure.invocations, totalTime: measure.time, percentTime: (measure.time / totalTime) * 100})\n\t});\n\tself.logger.table(results);\n};\n\n/*\nWrap performance measurements around a subfunction\n*/\nPerformance.prototype.measure = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments);\n\t\t\tif(!(name in self.measures)) {\n\t\t\t\tself.measures[name] = {time: 0, invocations: 0};\n\t\t\t}\n\t\t\tself.measures[name].time += $tw.utils.timer(startTime);\n\t\t\tself.measures[name].invocations++;\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\nexports.Performance = Performance;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/utils/pluginmaker.js": {
"title": "$:/core/modules/utils/pluginmaker.js",
"text": "/*\\\ntitle: $:/core/modules/utils/pluginmaker.js\ntype: application/javascript\nmodule-type: utils\n\nA quick and dirty way to pack up plugins within the browser.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRepack a plugin, and then delete any non-shadow payload tiddlers\n*/\nexports.repackPlugin = function(title,additionalTiddlers,excludeTiddlers) {\n\tadditionalTiddlers = additionalTiddlers || [];\n\texcludeTiddlers = excludeTiddlers || [];\n\t// Get the plugin tiddler\n\tvar pluginTiddler = $tw.wiki.getTiddler(title);\n\tif(!pluginTiddler) {\n\t\tthrow \"No such tiddler as \" + title;\n\t}\n\t// Extract the JSON\n\tvar jsonPluginTiddler;\n\ttry {\n\t\tjsonPluginTiddler = JSON.parse(pluginTiddler.fields.text);\n\t} catch(e) {\n\t\tthrow \"Cannot parse plugin tiddler \" + title + \"\\n\" + $tw.language.getString(\"Error/Caption\") + \": \" + e;\n\t}\n\t// Get the list of tiddlers\n\tvar tiddlers = Object.keys(jsonPluginTiddler.tiddlers);\n\t// Add the additional tiddlers\n\t$tw.utils.pushTop(tiddlers,additionalTiddlers);\n\t// Remove any excluded tiddlers\n\tfor(var t=tiddlers.length-1; t>=0; t--) {\n\t\tif(excludeTiddlers.indexOf(tiddlers[t]) !== -1) {\n\t\t\ttiddlers.splice(t,1);\n\t\t}\n\t}\n\t// Pack up the tiddlers into a block of JSON\n\tvar plugins = {};\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = $tw.wiki.getTiddler(title),\n\t\t\tfields = {};\n\t\t$tw.utils.each(tiddler.fields,function (value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\tplugins[title] = fields;\n\t});\n\t// Retrieve and bump the version number\n\tvar pluginVersion = $tw.utils.parseVersion(pluginTiddler.getFieldString(\"version\") || \"0.0.0\") || {\n\t\t\tmajor: \"0\",\n\t\t\tminor: \"0\",\n\t\t\tpatch: \"0\"\n\t\t};\n\tpluginVersion.patch++;\n\tvar version = pluginVersion.major + \".\" + pluginVersion.minor + \".\" + pluginVersion.patch;\n\tif(pluginVersion.prerelease) {\n\t\tversion += \"-\" + pluginVersion.prerelease;\n\t}\n\tif(pluginVersion.build) {\n\t\tversion += \"+\" + pluginVersion.build;\n\t}\n\t// Save the tiddler\n\t$tw.wiki.addTiddler(new $tw.Tiddler(pluginTiddler,{text: JSON.stringify({tiddlers: plugins},null,4), version: version}));\n\t// Delete any non-shadow constituent tiddlers\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tif($tw.wiki.tiddlerExists(title)) {\n\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t}\n\t});\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t// Return a heartwarming confirmation\n\treturn \"Plugin \" + title + \" successfully saved\";\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/transliterate.js": {
"title": "$:/core/modules/utils/transliterate.js",
"text": "/*\\\ntitle: $:/core/modules/utils/transliterate.js\ntype: application/javascript\nmodule-type: utils\n\nTransliteration static utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nTransliterate string to ASCII\n\n(Some pairs taken from http://semplicewebsites.com/removing-accents-javascript)\n*/\nexports.transliterationPairs = {\n\t\"Á\":\"A\",\n\t\"Ă\":\"A\",\n\t\"Ắ\":\"A\",\n\t\"Ặ\":\"A\",\n\t\"Ằ\":\"A\",\n\t\"Ẳ\":\"A\",\n\t\"Ẵ\":\"A\",\n\t\"Ǎ\":\"A\",\n\t\"Â\":\"A\",\n\t\"Ấ\":\"A\",\n\t\"Ậ\":\"A\",\n\t\"Ầ\":\"A\",\n\t\"Ẩ\":\"A\",\n\t\"Ẫ\":\"A\",\n\t\"Ä\":\"A\",\n\t\"Ǟ\":\"A\",\n\t\"Ȧ\":\"A\",\n\t\"Ǡ\":\"A\",\n\t\"Ạ\":\"A\",\n\t\"Ȁ\":\"A\",\n\t\"À\":\"A\",\n\t\"Ả\":\"A\",\n\t\"Ȃ\":\"A\",\n\t\"Ā\":\"A\",\n\t\"Ą\":\"A\",\n\t\"Å\":\"A\",\n\t\"Ǻ\":\"A\",\n\t\"Ḁ\":\"A\",\n\t\"Ⱥ\":\"A\",\n\t\"Ã\":\"A\",\n\t\"Ꜳ\":\"AA\",\n\t\"Æ\":\"AE\",\n\t\"Ǽ\":\"AE\",\n\t\"Ǣ\":\"AE\",\n\t\"Ꜵ\":\"AO\",\n\t\"Ꜷ\":\"AU\",\n\t\"Ꜹ\":\"AV\",\n\t\"Ꜻ\":\"AV\",\n\t\"Ꜽ\":\"AY\",\n\t\"Ḃ\":\"B\",\n\t\"Ḅ\":\"B\",\n\t\"Ɓ\":\"B\",\n\t\"Ḇ\":\"B\",\n\t\"Ƀ\":\"B\",\n\t\"Ƃ\":\"B\",\n\t\"Ć\":\"C\",\n\t\"Č\":\"C\",\n\t\"Ç\":\"C\",\n\t\"Ḉ\":\"C\",\n\t\"Ĉ\":\"C\",\n\t\"Ċ\":\"C\",\n\t\"Ƈ\":\"C\",\n\t\"Ȼ\":\"C\",\n\t\"Ď\":\"D\",\n\t\"Ḑ\":\"D\",\n\t\"Ḓ\":\"D\",\n\t\"Ḋ\":\"D\",\n\t\"Ḍ\":\"D\",\n\t\"Ɗ\":\"D\",\n\t\"Ḏ\":\"D\",\n\t\"Dz\":\"D\",\n\t\"Dž\":\"D\",\n\t\"Đ\":\"D\",\n\t\"Ƌ\":\"D\",\n\t\"DZ\":\"DZ\",\n\t\"DŽ\":\"DZ\",\n\t\"É\":\"E\",\n\t\"Ĕ\":\"E\",\n\t\"Ě\":\"E\",\n\t\"Ȩ\":\"E\",\n\t\"Ḝ\":\"E\",\n\t\"Ê\":\"E\",\n\t\"Ế\":\"E\",\n\t\"Ệ\":\"E\",\n\t\"Ề\":\"E\",\n\t\"Ể\":\"E\",\n\t\"Ễ\":\"E\",\n\t\"Ḙ\":\"E\",\n\t\"Ë\":\"E\",\n\t\"Ė\":\"E\",\n\t\"Ẹ\":\"E\",\n\t\"Ȅ\":\"E\",\n\t\"È\":\"E\",\n\t\"Ẻ\":\"E\",\n\t\"Ȇ\":\"E\",\n\t\"Ē\":\"E\",\n\t\"Ḗ\":\"E\",\n\t\"Ḕ\":\"E\",\n\t\"Ę\":\"E\",\n\t\"Ɇ\":\"E\",\n\t\"Ẽ\":\"E\",\n\t\"Ḛ\":\"E\",\n\t\"Ꝫ\":\"ET\",\n\t\"Ḟ\":\"F\",\n\t\"Ƒ\":\"F\",\n\t\"Ǵ\":\"G\",\n\t\"Ğ\":\"G\",\n\t\"Ǧ\":\"G\",\n\t\"Ģ\":\"G\",\n\t\"Ĝ\":\"G\",\n\t\"Ġ\":\"G\",\n\t\"Ɠ\":\"G\",\n\t\"Ḡ\":\"G\",\n\t\"Ǥ\":\"G\",\n\t\"Ḫ\":\"H\",\n\t\"Ȟ\":\"H\",\n\t\"Ḩ\":\"H\",\n\t\"Ĥ\":\"H\",\n\t\"Ⱨ\":\"H\",\n\t\"Ḧ\":\"H\",\n\t\"Ḣ\":\"H\",\n\t\"Ḥ\":\"H\",\n\t\"Ħ\":\"H\",\n\t\"Í\":\"I\",\n\t\"Ĭ\":\"I\",\n\t\"Ǐ\":\"I\",\n\t\"Î\":\"I\",\n\t\"Ï\":\"I\",\n\t\"Ḯ\":\"I\",\n\t\"İ\":\"I\",\n\t\"Ị\":\"I\",\n\t\"Ȉ\":\"I\",\n\t\"Ì\":\"I\",\n\t\"Ỉ\":\"I\",\n\t\"Ȋ\":\"I\",\n\t\"Ī\":\"I\",\n\t\"Į\":\"I\",\n\t\"Ɨ\":\"I\",\n\t\"Ĩ\":\"I\",\n\t\"Ḭ\":\"I\",\n\t\"Ꝺ\":\"D\",\n\t\"Ꝼ\":\"F\",\n\t\"Ᵹ\":\"G\",\n\t\"Ꞃ\":\"R\",\n\t\"Ꞅ\":\"S\",\n\t\"Ꞇ\":\"T\",\n\t\"Ꝭ\":\"IS\",\n\t\"Ĵ\":\"J\",\n\t\"Ɉ\":\"J\",\n\t\"Ḱ\":\"K\",\n\t\"Ǩ\":\"K\",\n\t\"Ķ\":\"K\",\n\t\"Ⱪ\":\"K\",\n\t\"Ꝃ\":\"K\",\n\t\"Ḳ\":\"K\",\n\t\"Ƙ\":\"K\",\n\t\"Ḵ\":\"K\",\n\t\"Ꝁ\":\"K\",\n\t\"Ꝅ\":\"K\",\n\t\"Ĺ\":\"L\",\n\t\"Ƚ\":\"L\",\n\t\"Ľ\":\"L\",\n\t\"Ļ\":\"L\",\n\t\"Ḽ\":\"L\",\n\t\"Ḷ\":\"L\",\n\t\"Ḹ\":\"L\",\n\t\"Ⱡ\":\"L\",\n\t\"Ꝉ\":\"L\",\n\t\"Ḻ\":\"L\",\n\t\"Ŀ\":\"L\",\n\t\"Ɫ\":\"L\",\n\t\"Lj\":\"L\",\n\t\"Ł\":\"L\",\n\t\"LJ\":\"LJ\",\n\t\"Ḿ\":\"M\",\n\t\"Ṁ\":\"M\",\n\t\"Ṃ\":\"M\",\n\t\"Ɱ\":\"M\",\n\t\"Ń\":\"N\",\n\t\"Ň\":\"N\",\n\t\"Ņ\":\"N\",\n\t\"Ṋ\":\"N\",\n\t\"Ṅ\":\"N\",\n\t\"Ṇ\":\"N\",\n\t\"Ǹ\":\"N\",\n\t\"Ɲ\":\"N\",\n\t\"Ṉ\":\"N\",\n\t\"Ƞ\":\"N\",\n\t\"Nj\":\"N\",\n\t\"Ñ\":\"N\",\n\t\"NJ\":\"NJ\",\n\t\"Ó\":\"O\",\n\t\"Ŏ\":\"O\",\n\t\"Ǒ\":\"O\",\n\t\"Ô\":\"O\",\n\t\"Ố\":\"O\",\n\t\"Ộ\":\"O\",\n\t\"Ồ\":\"O\",\n\t\"Ổ\":\"O\",\n\t\"Ỗ\":\"O\",\n\t\"Ö\":\"O\",\n\t\"Ȫ\":\"O\",\n\t\"Ȯ\":\"O\",\n\t\"Ȱ\":\"O\",\n\t\"Ọ\":\"O\",\n\t\"Ő\":\"O\",\n\t\"Ȍ\":\"O\",\n\t\"Ò\":\"O\",\n\t\"Ỏ\":\"O\",\n\t\"Ơ\":\"O\",\n\t\"Ớ\":\"O\",\n\t\"Ợ\":\"O\",\n\t\"Ờ\":\"O\",\n\t\"Ở\":\"O\",\n\t\"Ỡ\":\"O\",\n\t\"Ȏ\":\"O\",\n\t\"Ꝋ\":\"O\",\n\t\"Ꝍ\":\"O\",\n\t\"Ō\":\"O\",\n\t\"Ṓ\":\"O\",\n\t\"Ṑ\":\"O\",\n\t\"Ɵ\":\"O\",\n\t\"Ǫ\":\"O\",\n\t\"Ǭ\":\"O\",\n\t\"Ø\":\"O\",\n\t\"Ǿ\":\"O\",\n\t\"Õ\":\"O\",\n\t\"Ṍ\":\"O\",\n\t\"Ṏ\":\"O\",\n\t\"Ȭ\":\"O\",\n\t\"Ƣ\":\"OI\",\n\t\"Ꝏ\":\"OO\",\n\t\"Ɛ\":\"E\",\n\t\"Ɔ\":\"O\",\n\t\"Ȣ\":\"OU\",\n\t\"Ṕ\":\"P\",\n\t\"Ṗ\":\"P\",\n\t\"Ꝓ\":\"P\",\n\t\"Ƥ\":\"P\",\n\t\"Ꝕ\":\"P\",\n\t\"Ᵽ\":\"P\",\n\t\"Ꝑ\":\"P\",\n\t\"Ꝙ\":\"Q\",\n\t\"Ꝗ\":\"Q\",\n\t\"Ŕ\":\"R\",\n\t\"Ř\":\"R\",\n\t\"Ŗ\":\"R\",\n\t\"Ṙ\":\"R\",\n\t\"Ṛ\":\"R\",\n\t\"Ṝ\":\"R\",\n\t\"Ȑ\":\"R\",\n\t\"Ȓ\":\"R\",\n\t\"Ṟ\":\"R\",\n\t\"Ɍ\":\"R\",\n\t\"Ɽ\":\"R\",\n\t\"Ꜿ\":\"C\",\n\t\"Ǝ\":\"E\",\n\t\"Ś\":\"S\",\n\t\"Ṥ\":\"S\",\n\t\"Š\":\"S\",\n\t\"Ṧ\":\"S\",\n\t\"Ş\":\"S\",\n\t\"Ŝ\":\"S\",\n\t\"Ș\":\"S\",\n\t\"Ṡ\":\"S\",\n\t\"Ṣ\":\"S\",\n\t\"Ṩ\":\"S\",\n\t\"Ť\":\"T\",\n\t\"Ţ\":\"T\",\n\t\"Ṱ\":\"T\",\n\t\"Ț\":\"T\",\n\t\"Ⱦ\":\"T\",\n\t\"Ṫ\":\"T\",\n\t\"Ṭ\":\"T\",\n\t\"Ƭ\":\"T\",\n\t\"Ṯ\":\"T\",\n\t\"Ʈ\":\"T\",\n\t\"Ŧ\":\"T\",\n\t\"Ɐ\":\"A\",\n\t\"Ꞁ\":\"L\",\n\t\"Ɯ\":\"M\",\n\t\"Ʌ\":\"V\",\n\t\"Ꜩ\":\"TZ\",\n\t\"Ú\":\"U\",\n\t\"Ŭ\":\"U\",\n\t\"Ǔ\":\"U\",\n\t\"Û\":\"U\",\n\t\"Ṷ\":\"U\",\n\t\"Ü\":\"U\",\n\t\"Ǘ\":\"U\",\n\t\"Ǚ\":\"U\",\n\t\"Ǜ\":\"U\",\n\t\"Ǖ\":\"U\",\n\t\"Ṳ\":\"U\",\n\t\"Ụ\":\"U\",\n\t\"Ű\":\"U\",\n\t\"Ȕ\":\"U\",\n\t\"Ù\":\"U\",\n\t\"Ủ\":\"U\",\n\t\"Ư\":\"U\",\n\t\"Ứ\":\"U\",\n\t\"Ự\":\"U\",\n\t\"Ừ\":\"U\",\n\t\"Ử\":\"U\",\n\t\"Ữ\":\"U\",\n\t\"Ȗ\":\"U\",\n\t\"Ū\":\"U\",\n\t\"Ṻ\":\"U\",\n\t\"Ų\":\"U\",\n\t\"Ů\":\"U\",\n\t\"Ũ\":\"U\",\n\t\"Ṹ\":\"U\",\n\t\"Ṵ\":\"U\",\n\t\"Ꝟ\":\"V\",\n\t\"Ṿ\":\"V\",\n\t\"Ʋ\":\"V\",\n\t\"Ṽ\":\"V\",\n\t\"Ꝡ\":\"VY\",\n\t\"Ẃ\":\"W\",\n\t\"Ŵ\":\"W\",\n\t\"Ẅ\":\"W\",\n\t\"Ẇ\":\"W\",\n\t\"Ẉ\":\"W\",\n\t\"Ẁ\":\"W\",\n\t\"Ⱳ\":\"W\",\n\t\"Ẍ\":\"X\",\n\t\"Ẋ\":\"X\",\n\t\"Ý\":\"Y\",\n\t\"Ŷ\":\"Y\",\n\t\"Ÿ\":\"Y\",\n\t\"Ẏ\":\"Y\",\n\t\"Ỵ\":\"Y\",\n\t\"Ỳ\":\"Y\",\n\t\"Ƴ\":\"Y\",\n\t\"Ỷ\":\"Y\",\n\t\"Ỿ\":\"Y\",\n\t\"Ȳ\":\"Y\",\n\t\"Ɏ\":\"Y\",\n\t\"Ỹ\":\"Y\",\n\t\"Ź\":\"Z\",\n\t\"Ž\":\"Z\",\n\t\"Ẑ\":\"Z\",\n\t\"Ⱬ\":\"Z\",\n\t\"Ż\":\"Z\",\n\t\"Ẓ\":\"Z\",\n\t\"Ȥ\":\"Z\",\n\t\"Ẕ\":\"Z\",\n\t\"Ƶ\":\"Z\",\n\t\"IJ\":\"IJ\",\n\t\"Œ\":\"OE\",\n\t\"ᴀ\":\"A\",\n\t\"ᴁ\":\"AE\",\n\t\"ʙ\":\"B\",\n\t\"ᴃ\":\"B\",\n\t\"ᴄ\":\"C\",\n\t\"ᴅ\":\"D\",\n\t\"ᴇ\":\"E\",\n\t\"ꜰ\":\"F\",\n\t\"ɢ\":\"G\",\n\t\"ʛ\":\"G\",\n\t\"ʜ\":\"H\",\n\t\"ɪ\":\"I\",\n\t\"ʁ\":\"R\",\n\t\"ᴊ\":\"J\",\n\t\"ᴋ\":\"K\",\n\t\"ʟ\":\"L\",\n\t\"ᴌ\":\"L\",\n\t\"ᴍ\":\"M\",\n\t\"ɴ\":\"N\",\n\t\"ᴏ\":\"O\",\n\t\"ɶ\":\"OE\",\n\t\"ᴐ\":\"O\",\n\t\"ᴕ\":\"OU\",\n\t\"ᴘ\":\"P\",\n\t\"ʀ\":\"R\",\n\t\"ᴎ\":\"N\",\n\t\"ᴙ\":\"R\",\n\t\"ꜱ\":\"S\",\n\t\"ᴛ\":\"T\",\n\t\"ⱻ\":\"E\",\n\t\"ᴚ\":\"R\",\n\t\"ᴜ\":\"U\",\n\t\"ᴠ\":\"V\",\n\t\"ᴡ\":\"W\",\n\t\"ʏ\":\"Y\",\n\t\"ᴢ\":\"Z\",\n\t\"á\":\"a\",\n\t\"ă\":\"a\",\n\t\"ắ\":\"a\",\n\t\"ặ\":\"a\",\n\t\"ằ\":\"a\",\n\t\"ẳ\":\"a\",\n\t\"ẵ\":\"a\",\n\t\"ǎ\":\"a\",\n\t\"â\":\"a\",\n\t\"ấ\":\"a\",\n\t\"ậ\":\"a\",\n\t\"ầ\":\"a\",\n\t\"ẩ\":\"a\",\n\t\"ẫ\":\"a\",\n\t\"ä\":\"a\",\n\t\"ǟ\":\"a\",\n\t\"ȧ\":\"a\",\n\t\"ǡ\":\"a\",\n\t\"ạ\":\"a\",\n\t\"ȁ\":\"a\",\n\t\"à\":\"a\",\n\t\"ả\":\"a\",\n\t\"ȃ\":\"a\",\n\t\"ā\":\"a\",\n\t\"ą\":\"a\",\n\t\"ᶏ\":\"a\",\n\t\"ẚ\":\"a\",\n\t\"å\":\"a\",\n\t\"ǻ\":\"a\",\n\t\"ḁ\":\"a\",\n\t\"ⱥ\":\"a\",\n\t\"ã\":\"a\",\n\t\"ꜳ\":\"aa\",\n\t\"æ\":\"ae\",\n\t\"ǽ\":\"ae\",\n\t\"ǣ\":\"ae\",\n\t\"ꜵ\":\"ao\",\n\t\"ꜷ\":\"au\",\n\t\"ꜹ\":\"av\",\n\t\"ꜻ\":\"av\",\n\t\"ꜽ\":\"ay\",\n\t\"ḃ\":\"b\",\n\t\"ḅ\":\"b\",\n\t\"ɓ\":\"b\",\n\t\"ḇ\":\"b\",\n\t\"ᵬ\":\"b\",\n\t\"ᶀ\":\"b\",\n\t\"ƀ\":\"b\",\n\t\"ƃ\":\"b\",\n\t\"ɵ\":\"o\",\n\t\"ć\":\"c\",\n\t\"č\":\"c\",\n\t\"ç\":\"c\",\n\t\"ḉ\":\"c\",\n\t\"ĉ\":\"c\",\n\t\"ɕ\":\"c\",\n\t\"ċ\":\"c\",\n\t\"ƈ\":\"c\",\n\t\"ȼ\":\"c\",\n\t\"ď\":\"d\",\n\t\"ḑ\":\"d\",\n\t\"ḓ\":\"d\",\n\t\"ȡ\":\"d\",\n\t\"ḋ\":\"d\",\n\t\"ḍ\":\"d\",\n\t\"ɗ\":\"d\",\n\t\"ᶑ\":\"d\",\n\t\"ḏ\":\"d\",\n\t\"ᵭ\":\"d\",\n\t\"ᶁ\":\"d\",\n\t\"đ\":\"d\",\n\t\"ɖ\":\"d\",\n\t\"ƌ\":\"d\",\n\t\"ı\":\"i\",\n\t\"ȷ\":\"j\",\n\t\"ɟ\":\"j\",\n\t\"ʄ\":\"j\",\n\t\"dz\":\"dz\",\n\t\"dž\":\"dz\",\n\t\"é\":\"e\",\n\t\"ĕ\":\"e\",\n\t\"ě\":\"e\",\n\t\"ȩ\":\"e\",\n\t\"ḝ\":\"e\",\n\t\"ê\":\"e\",\n\t\"ế\":\"e\",\n\t\"ệ\":\"e\",\n\t\"ề\":\"e\",\n\t\"ể\":\"e\",\n\t\"ễ\":\"e\",\n\t\"ḙ\":\"e\",\n\t\"ë\":\"e\",\n\t\"ė\":\"e\",\n\t\"ẹ\":\"e\",\n\t\"ȅ\":\"e\",\n\t\"è\":\"e\",\n\t\"ẻ\":\"e\",\n\t\"ȇ\":\"e\",\n\t\"ē\":\"e\",\n\t\"ḗ\":\"e\",\n\t\"ḕ\":\"e\",\n\t\"ⱸ\":\"e\",\n\t\"ę\":\"e\",\n\t\"ᶒ\":\"e\",\n\t\"ɇ\":\"e\",\n\t\"ẽ\":\"e\",\n\t\"ḛ\":\"e\",\n\t\"ꝫ\":\"et\",\n\t\"ḟ\":\"f\",\n\t\"ƒ\":\"f\",\n\t\"ᵮ\":\"f\",\n\t\"ᶂ\":\"f\",\n\t\"ǵ\":\"g\",\n\t\"ğ\":\"g\",\n\t\"ǧ\":\"g\",\n\t\"ģ\":\"g\",\n\t\"ĝ\":\"g\",\n\t\"ġ\":\"g\",\n\t\"ɠ\":\"g\",\n\t\"ḡ\":\"g\",\n\t\"ᶃ\":\"g\",\n\t\"ǥ\":\"g\",\n\t\"ḫ\":\"h\",\n\t\"ȟ\":\"h\",\n\t\"ḩ\":\"h\",\n\t\"ĥ\":\"h\",\n\t\"ⱨ\":\"h\",\n\t\"ḧ\":\"h\",\n\t\"ḣ\":\"h\",\n\t\"ḥ\":\"h\",\n\t\"ɦ\":\"h\",\n\t\"ẖ\":\"h\",\n\t\"ħ\":\"h\",\n\t\"ƕ\":\"hv\",\n\t\"í\":\"i\",\n\t\"ĭ\":\"i\",\n\t\"ǐ\":\"i\",\n\t\"î\":\"i\",\n\t\"ï\":\"i\",\n\t\"ḯ\":\"i\",\n\t\"ị\":\"i\",\n\t\"ȉ\":\"i\",\n\t\"ì\":\"i\",\n\t\"ỉ\":\"i\",\n\t\"ȋ\":\"i\",\n\t\"ī\":\"i\",\n\t\"į\":\"i\",\n\t\"ᶖ\":\"i\",\n\t\"ɨ\":\"i\",\n\t\"ĩ\":\"i\",\n\t\"ḭ\":\"i\",\n\t\"ꝺ\":\"d\",\n\t\"ꝼ\":\"f\",\n\t\"ᵹ\":\"g\",\n\t\"ꞃ\":\"r\",\n\t\"ꞅ\":\"s\",\n\t\"ꞇ\":\"t\",\n\t\"ꝭ\":\"is\",\n\t\"ǰ\":\"j\",\n\t\"ĵ\":\"j\",\n\t\"ʝ\":\"j\",\n\t\"ɉ\":\"j\",\n\t\"ḱ\":\"k\",\n\t\"ǩ\":\"k\",\n\t\"ķ\":\"k\",\n\t\"ⱪ\":\"k\",\n\t\"ꝃ\":\"k\",\n\t\"ḳ\":\"k\",\n\t\"ƙ\":\"k\",\n\t\"ḵ\":\"k\",\n\t\"ᶄ\":\"k\",\n\t\"ꝁ\":\"k\",\n\t\"ꝅ\":\"k\",\n\t\"ĺ\":\"l\",\n\t\"ƚ\":\"l\",\n\t\"ɬ\":\"l\",\n\t\"ľ\":\"l\",\n\t\"ļ\":\"l\",\n\t\"ḽ\":\"l\",\n\t\"ȴ\":\"l\",\n\t\"ḷ\":\"l\",\n\t\"ḹ\":\"l\",\n\t\"ⱡ\":\"l\",\n\t\"ꝉ\":\"l\",\n\t\"ḻ\":\"l\",\n\t\"ŀ\":\"l\",\n\t\"ɫ\":\"l\",\n\t\"ᶅ\":\"l\",\n\t\"ɭ\":\"l\",\n\t\"ł\":\"l\",\n\t\"lj\":\"lj\",\n\t\"ſ\":\"s\",\n\t\"ẜ\":\"s\",\n\t\"ẛ\":\"s\",\n\t\"ẝ\":\"s\",\n\t\"ḿ\":\"m\",\n\t\"ṁ\":\"m\",\n\t\"ṃ\":\"m\",\n\t\"ɱ\":\"m\",\n\t\"ᵯ\":\"m\",\n\t\"ᶆ\":\"m\",\n\t\"ń\":\"n\",\n\t\"ň\":\"n\",\n\t\"ņ\":\"n\",\n\t\"ṋ\":\"n\",\n\t\"ȵ\":\"n\",\n\t\"ṅ\":\"n\",\n\t\"ṇ\":\"n\",\n\t\"ǹ\":\"n\",\n\t\"ɲ\":\"n\",\n\t\"ṉ\":\"n\",\n\t\"ƞ\":\"n\",\n\t\"ᵰ\":\"n\",\n\t\"ᶇ\":\"n\",\n\t\"ɳ\":\"n\",\n\t\"ñ\":\"n\",\n\t\"nj\":\"nj\",\n\t\"ó\":\"o\",\n\t\"ŏ\":\"o\",\n\t\"ǒ\":\"o\",\n\t\"ô\":\"o\",\n\t\"ố\":\"o\",\n\t\"ộ\":\"o\",\n\t\"ồ\":\"o\",\n\t\"ổ\":\"o\",\n\t\"ỗ\":\"o\",\n\t\"ö\":\"o\",\n\t\"ȫ\":\"o\",\n\t\"ȯ\":\"o\",\n\t\"ȱ\":\"o\",\n\t\"ọ\":\"o\",\n\t\"ő\":\"o\",\n\t\"ȍ\":\"o\",\n\t\"ò\":\"o\",\n\t\"ỏ\":\"o\",\n\t\"ơ\":\"o\",\n\t\"ớ\":\"o\",\n\t\"ợ\":\"o\",\n\t\"ờ\":\"o\",\n\t\"ở\":\"o\",\n\t\"ỡ\":\"o\",\n\t\"ȏ\":\"o\",\n\t\"ꝋ\":\"o\",\n\t\"ꝍ\":\"o\",\n\t\"ⱺ\":\"o\",\n\t\"ō\":\"o\",\n\t\"ṓ\":\"o\",\n\t\"ṑ\":\"o\",\n\t\"ǫ\":\"o\",\n\t\"ǭ\":\"o\",\n\t\"ø\":\"o\",\n\t\"ǿ\":\"o\",\n\t\"õ\":\"o\",\n\t\"ṍ\":\"o\",\n\t\"ṏ\":\"o\",\n\t\"ȭ\":\"o\",\n\t\"ƣ\":\"oi\",\n\t\"ꝏ\":\"oo\",\n\t\"ɛ\":\"e\",\n\t\"ᶓ\":\"e\",\n\t\"ɔ\":\"o\",\n\t\"ᶗ\":\"o\",\n\t\"ȣ\":\"ou\",\n\t\"ṕ\":\"p\",\n\t\"ṗ\":\"p\",\n\t\"ꝓ\":\"p\",\n\t\"ƥ\":\"p\",\n\t\"ᵱ\":\"p\",\n\t\"ᶈ\":\"p\",\n\t\"ꝕ\":\"p\",\n\t\"ᵽ\":\"p\",\n\t\"ꝑ\":\"p\",\n\t\"ꝙ\":\"q\",\n\t\"ʠ\":\"q\",\n\t\"ɋ\":\"q\",\n\t\"ꝗ\":\"q\",\n\t\"ŕ\":\"r\",\n\t\"ř\":\"r\",\n\t\"ŗ\":\"r\",\n\t\"ṙ\":\"r\",\n\t\"ṛ\":\"r\",\n\t\"ṝ\":\"r\",\n\t\"ȑ\":\"r\",\n\t\"ɾ\":\"r\",\n\t\"ᵳ\":\"r\",\n\t\"ȓ\":\"r\",\n\t\"ṟ\":\"r\",\n\t\"ɼ\":\"r\",\n\t\"ᵲ\":\"r\",\n\t\"ᶉ\":\"r\",\n\t\"ɍ\":\"r\",\n\t\"ɽ\":\"r\",\n\t\"ↄ\":\"c\",\n\t\"ꜿ\":\"c\",\n\t\"ɘ\":\"e\",\n\t\"ɿ\":\"r\",\n\t\"ś\":\"s\",\n\t\"ṥ\":\"s\",\n\t\"š\":\"s\",\n\t\"ṧ\":\"s\",\n\t\"ş\":\"s\",\n\t\"ŝ\":\"s\",\n\t\"ș\":\"s\",\n\t\"ṡ\":\"s\",\n\t\"ṣ\":\"s\",\n\t\"ṩ\":\"s\",\n\t\"ʂ\":\"s\",\n\t\"ᵴ\":\"s\",\n\t\"ᶊ\":\"s\",\n\t\"ȿ\":\"s\",\n\t\"ɡ\":\"g\",\n\t\"ᴑ\":\"o\",\n\t\"ᴓ\":\"o\",\n\t\"ᴝ\":\"u\",\n\t\"ť\":\"t\",\n\t\"ţ\":\"t\",\n\t\"ṱ\":\"t\",\n\t\"ț\":\"t\",\n\t\"ȶ\":\"t\",\n\t\"ẗ\":\"t\",\n\t\"ⱦ\":\"t\",\n\t\"ṫ\":\"t\",\n\t\"ṭ\":\"t\",\n\t\"ƭ\":\"t\",\n\t\"ṯ\":\"t\",\n\t\"ᵵ\":\"t\",\n\t\"ƫ\":\"t\",\n\t\"ʈ\":\"t\",\n\t\"ŧ\":\"t\",\n\t\"ᵺ\":\"th\",\n\t\"ɐ\":\"a\",\n\t\"ᴂ\":\"ae\",\n\t\"ǝ\":\"e\",\n\t\"ᵷ\":\"g\",\n\t\"ɥ\":\"h\",\n\t\"ʮ\":\"h\",\n\t\"ʯ\":\"h\",\n\t\"ᴉ\":\"i\",\n\t\"ʞ\":\"k\",\n\t\"ꞁ\":\"l\",\n\t\"ɯ\":\"m\",\n\t\"ɰ\":\"m\",\n\t\"ᴔ\":\"oe\",\n\t\"ɹ\":\"r\",\n\t\"ɻ\":\"r\",\n\t\"ɺ\":\"r\",\n\t\"ⱹ\":\"r\",\n\t\"ʇ\":\"t\",\n\t\"ʌ\":\"v\",\n\t\"ʍ\":\"w\",\n\t\"ʎ\":\"y\",\n\t\"ꜩ\":\"tz\",\n\t\"ú\":\"u\",\n\t\"ŭ\":\"u\",\n\t\"ǔ\":\"u\",\n\t\"û\":\"u\",\n\t\"ṷ\":\"u\",\n\t\"ü\":\"u\",\n\t\"ǘ\":\"u\",\n\t\"ǚ\":\"u\",\n\t\"ǜ\":\"u\",\n\t\"ǖ\":\"u\",\n\t\"ṳ\":\"u\",\n\t\"ụ\":\"u\",\n\t\"ű\":\"u\",\n\t\"ȕ\":\"u\",\n\t\"ù\":\"u\",\n\t\"ủ\":\"u\",\n\t\"ư\":\"u\",\n\t\"ứ\":\"u\",\n\t\"ự\":\"u\",\n\t\"ừ\":\"u\",\n\t\"ử\":\"u\",\n\t\"ữ\":\"u\",\n\t\"ȗ\":\"u\",\n\t\"ū\":\"u\",\n\t\"ṻ\":\"u\",\n\t\"ų\":\"u\",\n\t\"ᶙ\":\"u\",\n\t\"ů\":\"u\",\n\t\"ũ\":\"u\",\n\t\"ṹ\":\"u\",\n\t\"ṵ\":\"u\",\n\t\"ᵫ\":\"ue\",\n\t\"ꝸ\":\"um\",\n\t\"ⱴ\":\"v\",\n\t\"ꝟ\":\"v\",\n\t\"ṿ\":\"v\",\n\t\"ʋ\":\"v\",\n\t\"ᶌ\":\"v\",\n\t\"ⱱ\":\"v\",\n\t\"ṽ\":\"v\",\n\t\"ꝡ\":\"vy\",\n\t\"ẃ\":\"w\",\n\t\"ŵ\":\"w\",\n\t\"ẅ\":\"w\",\n\t\"ẇ\":\"w\",\n\t\"ẉ\":\"w\",\n\t\"ẁ\":\"w\",\n\t\"ⱳ\":\"w\",\n\t\"ẘ\":\"w\",\n\t\"ẍ\":\"x\",\n\t\"ẋ\":\"x\",\n\t\"ᶍ\":\"x\",\n\t\"ý\":\"y\",\n\t\"ŷ\":\"y\",\n\t\"ÿ\":\"y\",\n\t\"ẏ\":\"y\",\n\t\"ỵ\":\"y\",\n\t\"ỳ\":\"y\",\n\t\"ƴ\":\"y\",\n\t\"ỷ\":\"y\",\n\t\"ỿ\":\"y\",\n\t\"ȳ\":\"y\",\n\t\"ẙ\":\"y\",\n\t\"ɏ\":\"y\",\n\t\"ỹ\":\"y\",\n\t\"ź\":\"z\",\n\t\"ž\":\"z\",\n\t\"ẑ\":\"z\",\n\t\"ʑ\":\"z\",\n\t\"ⱬ\":\"z\",\n\t\"ż\":\"z\",\n\t\"ẓ\":\"z\",\n\t\"ȥ\":\"z\",\n\t\"ẕ\":\"z\",\n\t\"ᵶ\":\"z\",\n\t\"ᶎ\":\"z\",\n\t\"ʐ\":\"z\",\n\t\"ƶ\":\"z\",\n\t\"ɀ\":\"z\",\n\t\"ff\":\"ff\",\n\t\"ffi\":\"ffi\",\n\t\"ffl\":\"ffl\",\n\t\"fi\":\"fi\",\n\t\"fl\":\"fl\",\n\t\"ij\":\"ij\",\n\t\"œ\":\"oe\",\n\t\"st\":\"st\",\n\t\"ₐ\":\"a\",\n\t\"ₑ\":\"e\",\n\t\"ᵢ\":\"i\",\n\t\"ⱼ\":\"j\",\n\t\"ₒ\":\"o\",\n\t\"ᵣ\":\"r\",\n\t\"ᵤ\":\"u\",\n\t\"ᵥ\":\"v\",\n\t\"ₓ\":\"x\",\n\t\"Ё\":\"YO\",\n\t\"Й\":\"I\",\n\t\"Ц\":\"TS\",\n\t\"У\":\"U\",\n\t\"К\":\"K\",\n\t\"Е\":\"E\",\n\t\"Н\":\"N\",\n\t\"Г\":\"G\",\n\t\"Ш\":\"SH\",\n\t\"Щ\":\"SCH\",\n\t\"З\":\"Z\",\n\t\"Х\":\"H\",\n\t\"Ъ\":\"'\",\n\t\"ё\":\"yo\",\n\t\"й\":\"i\",\n\t\"ц\":\"ts\",\n\t\"у\":\"u\",\n\t\"к\":\"k\",\n\t\"е\":\"e\",\n\t\"н\":\"n\",\n\t\"г\":\"g\",\n\t\"ш\":\"sh\",\n\t\"щ\":\"sch\",\n\t\"з\":\"z\",\n\t\"х\":\"h\",\n\t\"ъ\":\"'\",\n\t\"Ф\":\"F\",\n\t\"Ы\":\"I\",\n\t\"В\":\"V\",\n\t\"А\":\"a\",\n\t\"П\":\"P\",\n\t\"Р\":\"R\",\n\t\"О\":\"O\",\n\t\"Л\":\"L\",\n\t\"Д\":\"D\",\n\t\"Ж\":\"ZH\",\n\t\"Э\":\"E\",\n\t\"ф\":\"f\",\n\t\"ы\":\"i\",\n\t\"в\":\"v\",\n\t\"а\":\"a\",\n\t\"п\":\"p\",\n\t\"р\":\"r\",\n\t\"о\":\"o\",\n\t\"л\":\"l\",\n\t\"д\":\"d\",\n\t\"ж\":\"zh\",\n\t\"э\":\"e\",\n\t\"Я\":\"Ya\",\n\t\"Ч\":\"CH\",\n\t\"С\":\"S\",\n\t\"М\":\"M\",\n\t\"И\":\"I\",\n\t\"Т\":\"T\",\n\t\"Ь\":\"'\",\n\t\"Б\":\"B\",\n\t\"Ю\":\"YU\",\n\t\"я\":\"ya\",\n\t\"ч\":\"ch\",\n\t\"с\":\"s\",\n\t\"м\":\"m\",\n\t\"и\":\"i\",\n\t\"т\":\"t\",\n\t\"ь\":\"'\",\n\t\"б\":\"b\",\n\t\"ю\":\"yu\"\n};\n\nexports.transliterate = function(str) {\n\treturn str.replace(/[^A-Za-z0-9\\[\\] ]/g,function(ch) {\n\t\treturn exports.transliterationPairs[ch] || ch\n\t});\n};\n\nexports.transliterateToSafeASCII = function(str) {\n\treturn str.replace(/[^\\x00-\\x7F]/g,function(ch) {\n\t\treturn exports.transliterationPairs[ch] || \"\"\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/utils.js": {
"title": "$:/core/modules/utils/utils.js",
"text": "/*\\\ntitle: $:/core/modules/utils/utils.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar base64utf8 = require(\"$:/core/modules/utils/base64-utf8/base64-utf8.module.js\");\n\n/*\nDisplay a message, in colour if we're on a terminal\n*/\nexports.log = function(text,colour) {\n\tconsole.log($tw.node ? exports.terminalColour(colour) + text + exports.terminalColour() : text);\n};\n\nexports.terminalColour = function(colour) {\n\tif(!$tw.browser && $tw.node && process.stdout.isTTY) {\n\t\tif(colour) {\n\t\t\tvar code = exports.terminalColourLookup[colour];\n\t\t\tif(code) {\n\t\t\t\treturn \"\\x1b[\" + code + \"m\";\n\t\t\t}\n\t\t} else {\n\t\t\treturn \"\\x1b[0m\"; // Cancel colour\n\t\t}\n\t}\n\treturn \"\";\n};\n\nexports.terminalColourLookup = {\n\t\"black\": \"0;30\",\n\t\"red\": \"0;31\",\n\t\"green\": \"0;32\",\n\t\"brown/orange\": \"0;33\",\n\t\"blue\": \"0;34\",\n\t\"purple\": \"0;35\",\n\t\"cyan\": \"0;36\",\n\t\"light gray\": \"0;37\"\n};\n\n/*\nDisplay a warning, in colour if we're on a terminal\n*/\nexports.warning = function(text) {\n\texports.log(text,\"brown/orange\");\n};\n\n/*\nLog a table of name: value pairs\n*/\nexports.logTable = function(data) {\n\tif(console.table) {\n\t\tconsole.table(data);\n\t} else {\n\t\t$tw.utils.each(data,function(value,name) {\n\t\t\tconsole.log(name + \": \" + value);\n\t\t});\n\t}\n}\n\n/*\nReturn the integer represented by the str (string).\nReturn the dflt (default) parameter if str is not a base-10 number.\n*/\nexports.getInt = function(str,deflt) {\n\tvar i = parseInt(str,10);\n\treturn isNaN(i) ? deflt : i;\n}\n\n/*\nRepeatedly replaces a substring within a string. Like String.prototype.replace, but without any of the default special handling of $ sequences in the replace string\n*/\nexports.replaceString = function(text,search,replace) {\n\treturn text.replace(search,function() {\n\t\treturn replace;\n\t});\n};\n\n/*\nRepeats a string\n*/\nexports.repeat = function(str,count) {\n\tvar result = \"\";\n\tfor(var t=0;t<count;t++) {\n\t\tresult += str;\n\t}\n\treturn result;\n};\n\n/*\nTrim whitespace from the start and end of a string\nThanks to Steven Levithan, http://blog.stevenlevithan.com/archives/faster-trim-javascript\n*/\nexports.trim = function(str) {\n\tif(typeof str === \"string\") {\n\t\treturn str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n\t} else {\n\t\treturn str;\n\t}\n};\n\nexports.trimPrefix = function(str,unwanted) {\n\tif(typeof str === \"string\" && typeof unwanted === \"string\") {\n\t\tif(unwanted === \"\") {\n\t\t\treturn str.replace(/^\\s\\s*/, '');\n\t\t} else {\n\t\t\t// Safely regexp-escape the unwanted text\n\t\t\tunwanted = unwanted.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\t\t\tvar regex = new RegExp('^(' + unwanted + ')+');\n\t\t\treturn str.replace(regex, '');\n\t\t}\n\t} else {\n\t\treturn str;\n\t}\n};\n\nexports.trimSuffix = function(str,unwanted) {\n\tif(typeof str === \"string\" && typeof unwanted === \"string\") {\n\t\tif(unwanted === \"\") {\n\t\t\treturn str.replace(/\\s\\s*$/, '');\n\t\t} else {\n\t\t\t// Safely regexp-escape the unwanted text\n\t\t\tunwanted = unwanted.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\t\t\tvar regex = new RegExp('(' + unwanted + ')+$');\n\t\t\treturn str.replace(regex, '');\n\t\t}\n\t} else {\n\t\treturn str;\n\t}\n};\n\n/*\nConvert a string to sentence case (ie capitalise first letter)\n*/\nexports.toSentenceCase = function(str) {\n\treturn (str || \"\").replace(/^\\S/, function(c) {return c.toUpperCase();});\n}\n\n/*\nConvert a string to title case (ie capitalise each initial letter)\n*/\nexports.toTitleCase = function(str) {\n\treturn (str || \"\").replace(/(^|\\s)\\S/g, function(c) {return c.toUpperCase();});\n}\n\t\n/*\nFind the line break preceding a given position in a string\nReturns position immediately after that line break, or the start of the string\n*/\nexports.findPrecedingLineBreak = function(text,pos) {\n\tvar result = text.lastIndexOf(\"\\n\",pos - 1);\n\tif(result === -1) {\n\t\tresult = 0;\n\t} else {\n\t\tresult++;\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nFind the line break following a given position in a string\n*/\nexports.findFollowingLineBreak = function(text,pos) {\n\t// Cut to just past the following line break, or to the end of the text\n\tvar result = text.indexOf(\"\\n\",pos);\n\tif(result === -1) {\n\t\tresult = text.length;\n\t} else {\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nReturn the number of keys in an object\n*/\nexports.count = function(object) {\n\treturn Object.keys(object || {}).length;\n};\n\n/*\nDetermine whether an array-item is an object-property\n*/\nexports.hopArray = function(object,array) {\n\tfor(var i=0; i<array.length; i++) {\n\t\tif($tw.utils.hop(object,array[i])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nRemove entries from an array\n\tarray: array to modify\n\tvalue: a single value to remove, or an array of values to remove\n*/\nexports.removeArrayEntries = function(array,value) {\n\tvar t,p;\n\tif($tw.utils.isArray(value)) {\n\t\tfor(t=0; t<value.length; t++) {\n\t\t\tp = array.indexOf(value[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tarray.splice(p,1);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tp = array.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tarray.splice(p,1);\n\t\t}\n\t}\n};\n\n/*\nCheck whether any members of a hashmap are present in another hashmap\n*/\nexports.checkDependencies = function(dependencies,changes) {\n\tvar hit = false;\n\t$tw.utils.each(changes,function(change,title) {\n\t\tif($tw.utils.hop(dependencies,title)) {\n\t\t\thit = true;\n\t\t}\n\t});\n\treturn hit;\n};\n\nexports.extend = function(object /* [, src] */) {\n\t$tw.utils.each(Array.prototype.slice.call(arguments, 1), function(source) {\n\t\tif(source) {\n\t\t\tfor(var property in source) {\n\t\t\t\tobject[property] = source[property];\n\t\t\t}\n\t\t}\n\t});\n\treturn object;\n};\n\nexports.deepCopy = function(object) {\n\tvar result,t;\n\tif($tw.utils.isArray(object)) {\n\t\t// Copy arrays\n\t\tresult = object.slice(0);\n\t} else if(typeof object === \"object\") {\n\t\tresult = {};\n\t\tfor(t in object) {\n\t\t\tif(object[t] !== undefined) {\n\t\t\t\tresult[t] = $tw.utils.deepCopy(object[t]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tresult = object;\n\t}\n\treturn result;\n};\n\nexports.extendDeepCopy = function(object,extendedProperties) {\n\tvar result = $tw.utils.deepCopy(object),t;\n\tfor(t in extendedProperties) {\n\t\tif(extendedProperties[t] !== undefined) {\n\t\t\tresult[t] = $tw.utils.deepCopy(extendedProperties[t]);\n\t\t}\n\t}\n\treturn result;\n};\n\nexports.deepFreeze = function deepFreeze(object) {\n\tvar property, key;\n\tif(object) {\n\t\tObject.freeze(object);\n\t\tfor(key in object) {\n\t\t\tproperty = object[key];\n\t\t\tif($tw.utils.hop(object,key) && (typeof property === \"object\") && !Object.isFrozen(property)) {\n\t\t\t\tdeepFreeze(property);\n\t\t\t}\n\t\t}\n\t}\n};\n\nexports.slowInSlowOut = function(t) {\n\treturn (1 - ((Math.cos(t * Math.PI) + 1) / 2));\n};\n\nexports.formatDateString = function(date,template) {\n\tvar result = \"\",\n\t\tt = template,\n\t\tmatches = [\n\t\t\t[/^0hh12/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getHours12(date));\n\t\t\t}],\n\t\t\t[/^wYYYY/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getYearForWeekNo(date),4);\n\t\t\t}],\n\t\t\t[/^hh12/, function() {\n\t\t\t\treturn $tw.utils.getHours12(date);\n\t\t\t}],\n\t\t\t[/^DDth/, function() {\n\t\t\t\treturn date.getDate() + $tw.utils.getDaySuffix(date);\n\t\t\t}],\n\t\t\t[/^YYYY/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getFullYear(),4);\n\t\t\t}],\n\t\t\t[/^aYYYY/, function() {\n\t\t\t\treturn $tw.utils.pad(Math.abs(date.getFullYear()),4);\n\t\t\t}],\n\t\t\t[/^\\{era:([^,\\|}]*)\\|([^}\\|]*)\\|([^}]*)\\}/, function(match) {\n\t\t\t\tvar year = date.getFullYear();\n\t\t\t\treturn year === 0 ? match[2] : (year < 0 ? match[1] : match[3]);\n\t\t\t}],\n\t\t\t[/^0hh/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getHours());\n\t\t\t}],\n\t\t\t[/^0mm/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMinutes());\n\t\t\t}],\n\t\t\t[/^0ss/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getSeconds());\n\t\t\t}],\n\t\t\t[/^0XXX/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMilliseconds(),3);\n\t\t\t}],\n\t\t\t[/^0DD/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getDate());\n\t\t\t}],\n\t\t\t[/^0MM/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMonth()+1);\n\t\t\t}],\n\t\t\t[/^0WW/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getWeek(date));\n\t\t\t}],\n\t\t\t[/^ddd/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^mmm/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^DDD/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^MMM/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^TZD/, function() {\n\t\t\t\tvar tz = date.getTimezoneOffset(),\n\t\t\t\tatz = Math.abs(tz);\n\t\t\t\treturn (tz < 0 ? '+' : '-') + $tw.utils.pad(Math.floor(atz / 60)) + ':' + $tw.utils.pad(atz % 60);\n\t\t\t}],\n\t\t\t[/^wYY/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getYearForWeekNo(date) - 2000);\n\t\t\t}],\n\t\t\t[/^[ap]m/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toLowerCase();\n\t\t\t}],\n\t\t\t[/^hh/, function() {\n\t\t\t\treturn date.getHours();\n\t\t\t}],\n\t\t\t[/^mm/, function() {\n\t\t\t\treturn date.getMinutes();\n\t\t\t}],\n\t\t\t[/^ss/, function() {\n\t\t\t\treturn date.getSeconds();\n\t\t\t}],\n\t\t\t[/^XXX/, function() {\n\t\t\t\treturn date.getMilliseconds();\n\t\t\t}],\n\t\t\t[/^[AP]M/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toUpperCase();\n\t\t\t}],\n\t\t\t[/^DD/, function() {\n\t\t\t\treturn date.getDate();\n\t\t\t}],\n\t\t\t[/^MM/, function() {\n\t\t\t\treturn date.getMonth() + 1;\n\t\t\t}],\n\t\t\t[/^WW/, function() {\n\t\t\t\treturn $tw.utils.getWeek(date);\n\t\t\t}],\n\t\t\t[/^YY/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getFullYear() - 2000);\n\t\t\t}]\n\t\t];\n\t// If the user wants everything in UTC, shift the datestamp\n\t// Optimize for format string that essentially means\n\t// 'return raw UTC (tiddlywiki style) date string.'\n\tif(t.indexOf(\"[UTC]\") == 0 ) {\n\t\tif(t == \"[UTC]YYYY0MM0DD0hh0mm0ssXXX\")\n\t\t\treturn $tw.utils.stringifyDate(new Date());\n\t\tvar offset = date.getTimezoneOffset() ; // in minutes\n\t\tdate = new Date(date.getTime()+offset*60*1000) ;\n\t\tt = t.substr(5) ;\n\t}\n\twhile(t.length){\n\t\tvar matchString = \"\";\n\t\t$tw.utils.each(matches, function(m) {\n\t\t\tvar match = m[0].exec(t);\n\t\t\tif(match) {\n\t\t\t\tmatchString = m[1].call(null,match);\n\t\t\t\tt = t.substr(match[0].length);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif(matchString) {\n\t\t\tresult += matchString;\n\t\t} else {\n\t\t\tresult += t.charAt(0);\n\t\t\tt = t.substr(1);\n\t\t}\n\t}\n\tresult = result.replace(/\\\\(.)/g,\"$1\");\n\treturn result;\n};\n\nexports.getAmPm = function(date) {\n\treturn $tw.language.getString(\"Date/Period/\" + (date.getHours() >= 12 ? \"pm\" : \"am\"));\n};\n\nexports.getDaySuffix = function(date) {\n\treturn $tw.language.getString(\"Date/DaySuffix/\" + date.getDate());\n};\n\nexports.getWeek = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week to calculate weekNo\n\tvar x = new Date(dt.getFullYear(),0,1);\n\tvar n = Math.floor((dt.getTime() - x.getTime()) / 86400000);\n\treturn Math.floor(n / 7) + 1;\n};\n\nexports.getYearForWeekNo = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week\n\treturn dt.getFullYear();\n};\n\nexports.getHours12 = function(date) {\n\tvar h = date.getHours();\n\treturn h > 12 ? h-12 : ( h > 0 ? h : 12 );\n};\n\n/*\nConvert a date delta in milliseconds into a string representation of \"23 seconds ago\", \"27 minutes ago\" etc.\n\tdelta: delta in milliseconds\nReturns an object with these members:\n\tdescription: string describing the delta period\n\tupdatePeriod: time in millisecond until the string will be inaccurate\n*/\nexports.getRelativeDate = function(delta) {\n\tvar futurep = false;\n\tif(delta < 0) {\n\t\tdelta = -1 * delta;\n\t\tfuturep = true;\n\t}\n\tvar units = [\n\t\t{name: \"Years\", duration: 365 * 24 * 60 * 60 * 1000},\n\t\t{name: \"Months\", duration: (365/12) * 24 * 60 * 60 * 1000},\n\t\t{name: \"Days\", duration: 24 * 60 * 60 * 1000},\n\t\t{name: \"Hours\", duration: 60 * 60 * 1000},\n\t\t{name: \"Minutes\", duration: 60 * 1000},\n\t\t{name: \"Seconds\", duration: 1000}\n\t];\n\tfor(var t=0; t<units.length; t++) {\n\t\tvar result = Math.floor(delta / units[t].duration);\n\t\tif(result >= 2) {\n\t\t\treturn {\n\t\t\t\tdelta: delta,\n\t\t\t\tdescription: $tw.language.getString(\n\t\t\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/\" + units[t].name,\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{period: result.toString()}\n\t\t\t\t\t}\n\t\t\t\t),\n\t\t\t\tupdatePeriod: units[t].duration\n\t\t\t};\n\t\t}\n\t}\n\treturn {\n\t\tdelta: delta,\n\t\tdescription: $tw.language.getString(\n\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/Second\",\n\t\t\t{variables:\n\t\t\t\t{period: \"1\"}\n\t\t\t}\n\t\t),\n\t\tupdatePeriod: 1000\n\t};\n};\n\n// Convert & to \"&\", < to \"<\", > to \">\", \" to \""\"\nexports.htmlEncode = function(s) {\n\tif(s) {\n\t\treturn s.toString().replace(/&/mg,\"&\").replace(/</mg,\"<\").replace(/>/mg,\">\").replace(/\\\"/mg,\""\");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n// Converts all HTML entities to their character equivalents\nexports.entityDecode = function(s) {\n\tvar converter = String.fromCodePoint || String.fromCharCode,\n\t\te = s.substr(1,s.length-2), // Strip the & and the ;\n\t\tc;\n\tif(e.charAt(0) === \"#\") {\n\t\tif(e.charAt(1) === \"x\" || e.charAt(1) === \"X\") {\n\t\t\tc = parseInt(e.substr(2),16);\n\t\t} else {\n\t\t\tc = parseInt(e.substr(1),10);\n\t\t}\n\t\tif(isNaN(c)) {\n\t\t\treturn s;\n\t\t} else {\n\t\t\treturn converter(c);\n\t\t}\n\t} else {\n\t\tc = $tw.config.htmlEntities[e];\n\t\tif(c) {\n\t\t\treturn converter(c);\n\t\t} else {\n\t\t\treturn s; // Couldn't convert it as an entity, just return it raw\n\t\t}\n\t}\n};\n\nexports.unescapeLineBreaks = function(s) {\n\treturn s.replace(/\\\\n/mg,\"\\n\").replace(/\\\\b/mg,\" \").replace(/\\\\s/mg,\"\\\\\").replace(/\\r/mg,\"\");\n};\n\n/*\n * Returns an escape sequence for given character. Uses \\x for characters <=\n * 0xFF to save space, \\u for the rest.\n *\n * The code needs to be in sync with th code template in the compilation\n * function for \"action\" nodes.\n */\n// Copied from peg.js, thanks to David Majda\nexports.escape = function(ch) {\n\tvar charCode = ch.charCodeAt(0);\n\tif(charCode <= 0xFF) {\n\t\treturn '\\\\x' + $tw.utils.pad(charCode.toString(16).toUpperCase());\n\t} else {\n\t\treturn '\\\\u' + $tw.utils.pad(charCode.toString(16).toUpperCase(),4);\n\t}\n};\n\n// Turns a string into a legal JavaScript string\n// Copied from peg.js, thanks to David Majda\nexports.stringify = function(s, rawUnicode) {\n\t/*\n\t* ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a string\n\t* literal except for the closing quote character, backslash, carriage return,\n\t* line separator, paragraph separator, and line feed. Any character may\n\t* appear in the form of an escape sequence.\n\t*\n\t* For portability, we also escape all non-ASCII characters.\n\t*/\n\tvar regex = rawUnicode ? /[\\x00-\\x1f]/g : /[\\x00-\\x1f\\x80-\\uFFFF]/g;\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\') // backslash\n\t\t.replace(/\"/g, '\\\\\"') // double quote character\n\t\t.replace(/'/g, \"\\\\'\") // single quote character\n\t\t.replace(/\\r/g, '\\\\r') // carriage return\n\t\t.replace(/\\n/g, '\\\\n') // line feed\n\t\t.replace(regex, exports.escape); // non-ASCII characters\n};\n\n// Turns a string into a legal JSON string\n// Derived from peg.js, thanks to David Majda\nexports.jsonStringify = function(s, rawUnicode) {\n\t// See http://www.json.org/\n\tvar regex = rawUnicode ? /[\\x00-\\x1f]/g : /[\\x00-\\x1f\\x80-\\uFFFF]/g;\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\') // backslash\n\t\t.replace(/\"/g, '\\\\\"') // double quote character\n\t\t.replace(/\\r/g, '\\\\r') // carriage return\n\t\t.replace(/\\n/g, '\\\\n') // line feed\n\t\t.replace(/\\x08/g, '\\\\b') // backspace\n\t\t.replace(/\\x0c/g, '\\\\f') // formfeed\n\t\t.replace(/\\t/g, '\\\\t') // tab\n\t\t.replace(regex,function(s) {\n\t\t\treturn '\\\\u' + $tw.utils.pad(s.charCodeAt(0).toString(16).toUpperCase(),4);\n\t\t}); // non-ASCII characters\n};\n\n/*\nEscape the RegExp special characters with a preceding backslash\n*/\nexports.escapeRegExp = function(s) {\n return s.replace(/[\\-\\/\\\\\\^\\$\\*\\+\\?\\.\\(\\)\\|\\[\\]\\{\\}]/g, '\\\\$&');\n};\n\n// Checks whether a link target is external, i.e. not a tiddler title\nexports.isLinkExternal = function(to) {\n\tvar externalRegExp = /^(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/i;\n\treturn externalRegExp.test(to);\n};\n\nexports.nextTick = function(fn) {\n/*global window: false */\n\tif(typeof process === \"undefined\") {\n\t\t// Apparently it would be faster to use postMessage - http://dbaron.org/log/20100309-faster-timeouts\n\t\twindow.setTimeout(fn,4);\n\t} else {\n\t\tprocess.nextTick(fn);\n\t}\n};\n\n/*\nConvert a hyphenated CSS property name into a camel case one\n*/\nexports.unHyphenateCss = function(propName) {\n\treturn propName.replace(/-([a-z])/gi, function(match0,match1) {\n\t\treturn match1.toUpperCase();\n\t});\n};\n\n/*\nConvert a camelcase CSS property name into a dashed one (\"backgroundColor\" --> \"background-color\")\n*/\nexports.hyphenateCss = function(propName) {\n\treturn propName.replace(/([A-Z])/g, function(match0,match1) {\n\t\treturn \"-\" + match1.toLowerCase();\n\t});\n};\n\n/*\nParse a text reference of one of these forms:\n* title\n* !!field\n* title!!field\n* title##index\n* etc\nReturns an object with the following fields, all optional:\n* title: tiddler title\n* field: tiddler field name\n* index: JSON property index\n*/\nexports.parseTextReference = function(textRef) {\n\t// Separate out the title, field name and/or JSON indices\n\tvar reTextRef = /(?:(.*?)!!(.+))|(?:(.*?)##(.+))|(.*)/mg,\n\t\tmatch = reTextRef.exec(textRef),\n\t\tresult = {};\n\tif(match && reTextRef.lastIndex === textRef.length) {\n\t\t// Return the parts\n\t\tif(match[1]) {\n\t\t\tresult.title = match[1];\n\t\t}\n\t\tif(match[2]) {\n\t\t\tresult.field = match[2];\n\t\t}\n\t\tif(match[3]) {\n\t\t\tresult.title = match[3];\n\t\t}\n\t\tif(match[4]) {\n\t\t\tresult.index = match[4];\n\t\t}\n\t\tif(match[5]) {\n\t\t\tresult.title = match[5];\n\t\t}\n\t} else {\n\t\t// If we couldn't parse it\n\t\tresult.title = textRef\n\t}\n\treturn result;\n};\n\n/*\nChecks whether a string is a valid fieldname\n*/\nexports.isValidFieldName = function(name) {\n\tif(!name || typeof name !== \"string\") {\n\t\treturn false;\n\t}\n\tname = name.toLowerCase().trim();\n\tvar fieldValidatorRegEx = /^[a-z0-9\\-\\._]+$/mg;\n\treturn fieldValidatorRegEx.test(name);\n};\n\n/*\nExtract the version number from the meta tag or from the boot file\n*/\n\n// Browser version\nexports.extractVersionInfo = function() {\n\tif($tw.packageInfo) {\n\t\treturn $tw.packageInfo.version;\n\t} else {\n\t\tvar metatags = document.getElementsByTagName(\"meta\");\n\t\tfor(var t=0; t<metatags.length; t++) {\n\t\t\tvar m = metatags[t];\n\t\t\tif(m.name === \"tiddlywiki-version\") {\n\t\t\t\treturn m.content;\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the animation duration in ms\n*/\nexports.getAnimationDuration = function() {\n\treturn parseInt($tw.wiki.getTiddlerText(\"$:/config/AnimationDuration\",\"400\"),10) || 0;\n};\n\n/*\nHash a string to a number\nDerived from http://stackoverflow.com/a/15710692\n*/\nexports.hashString = function(str) {\n\treturn str.split(\"\").reduce(function(a,b) {\n\t\ta = ((a << 5) - a) + b.charCodeAt(0);\n\t\treturn a & a;\n\t},0);\n};\n\n/*\nDecode a base64 string\n*/\nexports.base64Decode = function(string64) {\n\treturn base64utf8.base64.decode.call(base64utf8,string64);\n};\n\n/*\nEncode a string to base64\n*/\nexports.base64Encode = function(string64) {\n\treturn base64utf8.base64.encode.call(base64utf8,string64);\n};\n\n/*\nConvert a hashmap into a tiddler dictionary format sequence of name:value pairs\n*/\nexports.makeTiddlerDictionary = function(data) {\n\tvar output = [];\n\tfor(var name in data) {\n\t\toutput.push(name + \": \" + data[name]);\n\t}\n\treturn output.join(\"\\n\");\n};\n\n/*\nHigh resolution microsecond timer for profiling\n*/\nexports.timer = function(base) {\n\tvar m;\n\tif($tw.node) {\n\t\tvar r = process.hrtime();\n\t\tm = r[0] * 1e3 + (r[1] / 1e6);\n\t} else if(window.performance) {\n\t\tm = performance.now();\n\t} else {\n\t\tm = Date.now();\n\t}\n\tif(typeof base !== \"undefined\") {\n\t\tm = m - base;\n\t}\n\treturn m;\n};\n\n/*\nConvert text and content type to a data URI\n*/\nexports.makeDataUri = function(text,type,_canonical_uri) {\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar typeInfo = $tw.config.contentTypeInfo[type] || $tw.config.contentTypeInfo[\"text/plain\"],\n\t\tisBase64 = typeInfo.encoding === \"base64\",\n\t\tparts = [];\n\tif(_canonical_uri) {\n\t\tparts.push(_canonical_uri);\n\t} else {\n\t\tparts.push(\"data:\");\n\t\tparts.push(type);\n\t\tparts.push(isBase64 ? \";base64\" : \"\");\n\t\tparts.push(\",\");\n\t\tparts.push(isBase64 ? text : encodeURIComponent(text));\t\t\n\t}\n\treturn parts.join(\"\");\n};\n\n/*\nUseful for finding out the fully escaped CSS selector equivalent to a given tag. For example:\n\n$tw.utils.tagToCssSelector(\"$:/tags/Stylesheet\") --> tc-tagged-\\%24\\%3A\\%2Ftags\\%2FStylesheet\n*/\nexports.tagToCssSelector = function(tagName) {\n\treturn \"tc-tagged-\" + encodeURIComponent(tagName).replace(/[!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^`{\\|}~,]/mg,function(c) {\n\t\treturn \"\\\\\" + c;\n\t});\n};\n\n/*\nIE does not have sign function\n*/\nexports.sign = Math.sign || function(x) {\n\tx = +x; // convert to a number\n\tif (x === 0 || isNaN(x)) {\n\t\treturn x;\n\t}\n\treturn x > 0 ? 1 : -1;\n};\n\n/*\nIE does not have an endsWith function\n*/\nexports.strEndsWith = function(str,ending,position) {\n\tif(str.endsWith) {\n\t\treturn str.endsWith(ending,position);\n\t} else {\n\t\tif (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > str.length) {\n\t\t\tposition = str.length;\n\t\t}\n\t\tposition -= ending.length;\n\t\tvar lastIndex = str.indexOf(ending, position);\n\t\treturn lastIndex !== -1 && lastIndex === position;\n\t}\n};\n\n/*\nReturn system information useful for debugging\n*/\nexports.getSystemInfo = function(str,ending,position) {\n\tvar results = [],\n\t\tsave = function(desc,value) {\n\t\t\tresults.push(desc + \": \" + value);\n\t\t};\n\tif($tw.browser) {\n\t\tsave(\"User Agent\",navigator.userAgent);\n\t\tsave(\"Online Status\",window.navigator.onLine);\n\t}\n\tif($tw.node) {\n\t\tsave(\"Node Version\",process.version);\n\t}\n\treturn results.join(\"\\n\");\n};\n\nexports.parseNumber = function(str) {\n\treturn parseFloat(str) || 0;\n};\n\nexports.parseInt = function(str) {\n\treturn parseInt(str,10) || 0;\n};\n\nexports.stringifyNumber = function(num) {\n\treturn num + \"\";\n};\n\nexports.makeCompareFunction = function(type,options) {\n\toptions = options || {};\n\tvar gt = options.invert ? -1 : +1,\n\t\tlt = options.invert ? +1 : -1,\n\t\tcompare = function(a,b) {\n\t\t\tif(a > b) {\n\t\t\t\treturn gt ;\n\t\t\t} else if(a < b) {\n\t\t\t\treturn lt;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t},\n\t\ttypes = {\n\t\t\t\"number\": function(a,b) {\n\t\t\t\treturn compare($tw.utils.parseNumber(a),$tw.utils.parseNumber(b));\n\t\t\t},\n\t\t\t\"integer\": function(a,b) {\n\t\t\t\treturn compare($tw.utils.parseInt(a),$tw.utils.parseInt(b));\n\t\t\t},\n\t\t\t\"string\": function(a,b) {\n\t\t\t\treturn compare(\"\" + a,\"\" +b);\n\t\t\t},\n\t\t\t\"date\": function(a,b) {\n\t\t\t\tvar dateA = $tw.utils.parseDate(a),\n\t\t\t\t\tdateB = $tw.utils.parseDate(b);\n\t\t\t\tif(!isFinite(dateA)) {\n\t\t\t\t\tdateA = new Date(0);\n\t\t\t\t}\n\t\t\t\tif(!isFinite(dateB)) {\n\t\t\t\t\tdateB = new Date(0);\n\t\t\t\t}\n\t\t\t\treturn compare(dateA,dateB);\n\t\t\t},\n\t\t\t\"version\": function(a,b) {\n\t\t\t\treturn $tw.utils.compareVersions(a,b);\n\t\t\t}\n\t\t};\n\treturn (types[type] || types[options.defaultType] || types.number);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/widgets/action-confirm.js": {
"title": "$:/core/modules/widgets/action-confirm.js",
"text": "/*\\\n\ntitle: $:/core/modules/widgets/action-confirm.js\ntype: application/javascript\nmodule-type: widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ConfirmWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nConfirmWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nConfirmWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.parentDomNode = parent;\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nConfirmWidget.prototype.execute = function() {\n\tthis.message = this.getAttribute(\"$message\",$tw.language.getString(\"ConfirmAction\"));\n\tthis.prompt = (this.getAttribute(\"$prompt\",\"yes\") == \"no\" ? false : true);\n\tthis.makeChildWidgets();\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nConfirmWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$message\"] || changedAttributes[\"$prompt\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nConfirmWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar invokeActions = true,\n\t\thandled = true;\n\tif(this.prompt) {\n\t\tinvokeActions = confirm(this.message);\n\t}\n\tif(invokeActions) {\n\t\thandled = this.invokeActions(triggeringWidget,event);\n\t}\n\treturn handled;\n};\n\nConfirmWidget.prototype.allowActionPropagation = function() {\n\treturn false;\n};\n\nexports[\"action-confirm\"] = ConfirmWidget;\n\n})();",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-createtiddler.js": {
"title": "$:/core/modules/widgets/action-createtiddler.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-createtiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to create a new tiddler with a unique name and specified fields.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw:false, require:false, exports:false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CreateTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCreateTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCreateTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nCreateTiddlerWidget.prototype.execute = function() {\n\tthis.actionBaseTitle = this.getAttribute(\"$basetitle\");\n\tthis.hasBase = !!this.actionBaseTitle;\n\tthis.actionSaveTitle = this.getAttribute(\"$savetitle\");\n\tthis.actionSaveDraftTitle = this.getAttribute(\"$savedrafttitle\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n\t//Following params are new since 5.1.22\n\tthis.actionTemplate = this.getAttribute(\"$template\");\n\tthis.useTemplate = !!this.actionTemplate;\n\tthis.actionOverwrite = this.getAttribute(\"$overwrite\",\"no\");\n\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nCreateTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nCreateTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar title = this.wiki.getTiddlerText(\"$:/language/DefaultNewTiddlerTitle\"), // Get the initial new-tiddler title\n\t\tfields = {},\n\t\tcreationFields,\n\t\tmodificationFields;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tfields[name] = attribute;\n\t\t}\n\t});\n\tif(this.actionTimestamp) {\n\t\tcreationFields = this.wiki.getCreationFields();\n\t\tmodificationFields = this.wiki.getModificationFields();\n\t}\n\tif(this.hasBase && this.actionOverwrite === \"no\") {\n\t\ttitle = this.wiki.generateNewTitle(this.actionBaseTitle);\n\t} else if (this.hasBase && this.actionOverwrite === \"yes\") {\n\t\ttitle = this.actionBaseTitle\n\t}\n\t// NO $basetitle BUT $template parameter is available\n\t// the title MUST be unique, otherwise the template would be overwritten\n\tif (!this.hasBase && this.useTemplate) {\n\t\ttitle = this.wiki.generateNewTitle(this.actionTemplate);\n\t} else if (!this.hasBase && !this.useTemplate) {\n\t\t// If NO $basetitle AND NO $template use initial title\n\t\t// DON'T overwrite any stuff\n\t\ttitle = this.wiki.generateNewTitle(title);\n\t}\n\tvar templateTiddler = this.wiki.getTiddler(this.actionTemplate) || {};\n\tvar tiddler = this.wiki.addTiddler(new $tw.Tiddler(templateTiddler.fields,creationFields,fields,modificationFields,{title: title}));\n\tif(this.actionSaveTitle) {\n\t\tthis.wiki.setTextReference(this.actionSaveTitle,title,this.getVariable(\"currentTiddler\"));\n\t}\n\tif(this.actionSaveDraftTitle) {\n\t\tthis.wiki.setTextReference(this.actionSaveDraftTitle,this.wiki.generateDraftTitle(title),this.getVariable(\"currentTiddler\"));\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-createtiddler\"] = CreateTiddlerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-deletefield.js": {
"title": "$:/core/modules/widgets/action-deletefield.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-deletefield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete fields of a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\ttiddler = this.wiki.getTiddler(self.actionTiddler),\n\t\tremoveFields = {},\n\t\thasChanged = false;\n\tif(this.actionField && tiddler) {\n\t\tremoveFields[this.actionField] = undefined;\n\t\tif(this.actionField in tiddler.fields) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(tiddler) {\n\t\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\t\tif(name.charAt(0) !== \"$\" && name !== \"title\") {\n\t\t\t\tremoveFields[name] = undefined;\n\t\t\t\thasChanged = true;\n\t\t\t}\n\t\t});\n\t\tif(hasChanged) {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,removeFields,this.wiki.getModificationFields()));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletefield\"] = DeleteFieldWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-deletetiddler.js": {
"title": "$:/core/modules/widgets/action-deletetiddler.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-deletetiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteTiddlerWidget.prototype.execute = function() {\n\tthis.actionFilter = this.getAttribute(\"$filter\");\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$filter\"] || changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar tiddlers = [];\n\tif(this.actionFilter) {\n\t\ttiddlers = this.wiki.filterTiddlers(this.actionFilter,this);\n\t}\n\tif(this.actionTiddler) {\n\t\ttiddlers.push(this.actionTiddler);\n\t}\n\tfor(var t=0; t<tiddlers.length; t++) {\n\t\tthis.wiki.deleteTiddler(tiddlers[t]);\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletetiddler\"] = DeleteTiddlerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-listops.js": {
"title": "$:/core/modules/widgets/action-listops.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-listops.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to apply list operations to any tiddler field (defaults to the 'list' field of the current tiddler)\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar ActionListopsWidget = function(parseTreeNode, options) {\n\tthis.initialise(parseTreeNode, options);\n};\n/**\n * Inherit from the base widget class\n */\nActionListopsWidget.prototype = new Widget();\n/**\n * Render this widget into the DOM\n */\nActionListopsWidget.prototype.render = function(parent, nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n/**\n * Compute the internal state of the widget\n */\nActionListopsWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.target = this.getAttribute(\"$tiddler\", this.getVariable(\n\t\t\"currentTiddler\"));\n\tthis.filter = this.getAttribute(\"$filter\");\n\tthis.subfilter = this.getAttribute(\"$subfilter\");\n\tthis.listField = this.getAttribute(\"$field\", \"list\");\n\tthis.listIndex = this.getAttribute(\"$index\");\n\tthis.filtertags = this.getAttribute(\"$tags\");\n};\n/**\n * \tRefresh the widget by ensuring our attributes are up to date\n */\nActionListopsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.$tiddler || changedAttributes.$filter ||\n\t\tchangedAttributes.$subfilter || changedAttributes.$field ||\n\t\tchangedAttributes.$index || changedAttributes.$tags) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n/**\n * \tInvoke the action associated with this widget\n */\nActionListopsWidget.prototype.invokeAction = function(triggeringWidget,\n\tevent) {\n\t//Apply the specified filters to the lists\n\tvar field = this.listField,\n\t\tindex,\n\t\ttype = \"!!\",\n\t\tlist = this.listField;\n\tif(this.listIndex) {\n\t\tfield = undefined;\n\t\tindex = this.listIndex;\n\t\ttype = \"##\";\n\t\tlist = this.listIndex;\n\t}\n\tif(this.filter) {\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(this.filter, this)));\n\t}\n\tif(this.subfilter) {\n\t\tvar subfilter = \"[list[\" + this.target + type + list + \"]] \" + this.subfilter;\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(subfilter, this)));\n\t}\n\tif(this.filtertags) {\n\t\tvar tiddler = this.wiki.getTiddler(this.target),\n\t\t\toldtags = tiddler ? (tiddler.fields.tags || []).slice(0) : [],\n\t\t\ttagfilter = \"[list[\" + this.target + \"!!tags]] \" + this.filtertags,\n\t\t\tnewtags = this.wiki.filterTiddlers(tagfilter,this);\n\t\tif($tw.utils.stringifyList(oldtags.sort()) !== $tw.utils.stringifyList(newtags.sort())) {\n\t\t\tthis.wiki.setText(this.target,\"tags\",undefined,$tw.utils.stringifyList(newtags));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-listops\"] = ActionListopsWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-log.js": {
"title": "$:/core/modules/widgets/action-log.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-log.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to log debug messages\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LogWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nLogWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLogWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\nLogWidget.prototype.execute = function(){\n\tthis.message = this.getAttribute(\"$$message\",\"debug\");\n\tthis.logAll = this.getAttribute(\"$$all\",\"no\") === \"yes\" ? true : false;\n\tthis.filter = this.getAttribute(\"$$filter\");\n}\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nLogWidget.prototype.refresh = function(changedTiddlers) {\n\tthis.refreshSelf();\n\treturn true;\n};\n\n/*\nInvoke the action associated with this widget\n*/\nLogWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tthis.log();\n\treturn true; // Action was invoked\n};\n\nLogWidget.prototype.log = function() {\n\tvar data = {},\n\t\tdataCount,\n\t\tallVars = {},\n\t\tfilteredVars;\n\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.substring(0,2) !== \"$$\") {\n\t\t\tdata[name] = attribute;\n\t\t}\t\t\n\t});\n\n\tfor(var v in this.variables) {\n\t\tallVars[v] = this.getVariable(v,{defaultValue:\"\"});\n\t}\t\n\tif(this.filter) {\n\t\tfilteredVars = this.wiki.compileFilter(this.filter).call(this.wiki,this.wiki.makeTiddlerIterator(allVars));\n\t\t$tw.utils.each(filteredVars,function(name) {\n\t\t\tdata[name] = allVars[name];\n\t\t});\t\t\n\t}\n\tdataCount = $tw.utils.count(data);\n\n\tconsole.group(this.message);\n\tif(dataCount > 0) {\n\t\t$tw.utils.logTable(data);\n\t}\n\tif(this.logAll || !dataCount) {\n\t\tconsole.groupCollapsed(\"All variables\");\n\t\t$tw.utils.logTable(allVars);\n\t\tconsole.groupEnd();\n\t}\n\tconsole.groupEnd();\n}\n\nexports[\"action-log\"] = LogWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-navigate.js": {
"title": "$:/core/modules/widgets/action-navigate.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-navigate.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to navigate to a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigateWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigateWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigateWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigateWidget.prototype.execute = function() {\n\tthis.actionTo = this.getAttribute(\"$to\");\n\tthis.actionScroll = this.getAttribute(\"$scroll\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nNavigateWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$to\"] || changedAttributes[\"$scroll\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nNavigateWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tevent = event || {};\n\tvar bounds = triggeringWidget && triggeringWidget.getBoundingClientRect && triggeringWidget.getBoundingClientRect(),\n\t\tsuppressNavigation = event.metaKey || event.ctrlKey || (event.button === 1);\n\tif(this.actionScroll === \"yes\") {\n\t\tsuppressNavigation = false;\n\t} else if(this.actionScroll === \"no\") {\n\t\tsuppressNavigation = true;\n\t}\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.actionTo === undefined ? this.getVariable(\"currentTiddler\") : this.actionTo,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: triggeringWidget,\n\t\tnavigateFromClientRect: bounds && { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: suppressNavigation\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-navigate\"] = NavigateWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-popup.js": {
"title": "$:/core/modules/widgets/action-popup.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-popup.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to trigger a popup.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ActionPopupWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nActionPopupWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nActionPopupWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nActionPopupWidget.prototype.execute = function() {\n\tthis.actionState = this.getAttribute(\"$state\");\n\tthis.actionCoords = this.getAttribute(\"$coords\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nActionPopupWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$state\"] || changedAttributes[\"$coords\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nActionPopupWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\t// Trigger the popup\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/,\n\t\tmatch = popupLocationRegExp.exec(this.actionCoords || \"\");\n\tif(match) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: null,\n\t\t\tdomNodeRect: {\n\t\t\t\tleft: parseFloat(match[1]),\n\t\t\t\ttop: parseFloat(match[2]),\n\t\t\t\twidth: parseFloat(match[3]),\n\t\t\t\theight: parseFloat(match[4])\n\t\t\t},\n\t\t\ttitle: this.actionState,\n\t\t\twiki: this.wiki\n\t\t});\n\t} else {\n\t\t$tw.popup.cancel(0);\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-popup\"] = ActionPopupWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-sendmessage.js": {
"title": "$:/core/modules/widgets/action-sendmessage.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-sendmessage.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to send a message\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SendMessageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSendMessageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSendMessageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSendMessageWidget.prototype.execute = function() {\n\tthis.actionMessage = this.getAttribute(\"$message\");\n\tthis.actionParam = this.getAttribute(\"$param\");\n\tthis.actionName = this.getAttribute(\"$name\");\n\tthis.actionValue = this.getAttribute(\"$value\",\"\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSendMessageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSendMessageWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\t// Get the string parameter\n\tvar param = this.actionParam;\n\t// Assemble the attributes as a hashmap\n\tvar paramObject = Object.create(null);\n\tvar count = 0;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparamObject[name] = attribute;\n\t\t\tcount++;\n\t\t}\n\t});\n\t// Add name/value pair if present\n\tif(this.actionName) {\n\t\tparamObject[this.actionName] = this.actionValue;\n\t}\n\t// Dispatch the message\n\tthis.dispatchEvent({\n\t\ttype: this.actionMessage,\n\t\tparam: param,\n\t\tparamObject: paramObject,\n\t\ttiddlerTitle: this.getVariable(\"currentTiddler\"),\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tevent: event\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-sendmessage\"] = SendMessageWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-setfield.js": {
"title": "$:/core/modules/widgets/action-setfield.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-setfield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to set a single field or index on a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n\tthis.actionIndex = this.getAttribute(\"$index\");\n\tthis.actionValue = this.getAttribute(\"$value\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSetFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"] || changedAttributes[\"$field\"] || changedAttributes[\"$index\"] || changedAttributes[\"$value\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSetFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\toptions = {};\n\toptions.suppressTimestamp = !this.actionTimestamp;\n\tif((typeof this.actionField == \"string\") || (typeof this.actionIndex == \"string\") || (typeof this.actionValue == \"string\")) {\n\t\tthis.wiki.setText(this.actionTiddler,this.actionField,this.actionIndex,this.actionValue,options);\n\t}\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tself.wiki.setText(self.actionTiddler,name,undefined,attribute,options);\n\t\t}\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-setfield\"] = SetFieldWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/browse.js": {
"title": "$:/core/modules/widgets/browse.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/browse.js\ntype: application/javascript\nmodule-type: widget\n\nBrowse widget for browsing for files to import\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar BrowseWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nBrowseWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nBrowseWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"file\");\n\tif(this.browseMultiple) {\n\t\tdomNode.setAttribute(\"multiple\",\"multiple\");\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\t// Nw.js supports \"nwsaveas\" to force a \"save as\" dialogue that allows a new or existing file to be selected\n\tif(this.nwsaveas) {\n\t\tdomNode.setAttribute(\"nwsaveas\",this.nwsaveas);\n\t}\n\tif(this.accept) {\n\t\tdomNode.setAttribute(\"accept\",this.accept);\n\t}\n\t// Nw.js supports \"webkitdirectory\" and \"nwdirectory\" to allow a directory to be selected\n\tif(this.webkitdirectory) {\n\t\tdomNode.setAttribute(\"webkitdirectory\",this.webkitdirectory);\n\t}\n\tif(this.nwdirectory) {\n\t\tdomNode.setAttribute(\"nwdirectory\",this.nwdirectory);\n\t}\n\t// Add a click event handler\n\tdomNode.addEventListener(\"change\",function (event) {\n\t\tif(self.message) {\n\t\t\tself.dispatchEvent({type: self.message, param: self.param, files: event.target.files});\n\t\t} else {\n\t\t\tself.wiki.readFiles(event.target.files,{\n\t\t\t\tcallback: function(tiddlerFieldsArray) {\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t\t\t},\n\t\t\t\tdeserializer: self.deserializer\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nBrowseWidget.prototype.execute = function() {\n\tthis.browseMultiple = this.getAttribute(\"multiple\");\n\tthis.deserializer = this.getAttribute(\"deserializer\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.nwsaveas = this.getAttribute(\"nwsaveas\");\n\tthis.accept = this.getAttribute(\"accept\");\n\tthis.webkitdirectory = this.getAttribute(\"webkitdirectory\");\n\tthis.nwdirectory = this.getAttribute(\"nwdirectory\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nBrowseWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.browse = BrowseWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/button.js": {
"title": "$:/core/modules/widgets/button.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/button.js\ntype: application/javascript\nmodule-type: widget\n\nButton widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ButtonWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nButtonWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nButtonWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this,\n\t\ttag = \"button\",\n\t\tdomNode;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tif(this.buttonTag && $tw.config.htmlUnsafeElements.indexOf(this.buttonTag) === -1) {\n\t\ttag = this.buttonTag;\n\t}\n\tdomNode = this.document.createElement(tag);\n\tthis.domNode = domNode;\n\t// Assign classes\n\tvar classes = this[\"class\"].split(\" \") || [],\n\t\tisPoppedUp = (this.popup || this.popupTitle) && this.isPoppedUp();\n\tif(this.selectedClass) {\n\t\tif((this.set || this.setTitle) && this.setTo && this.isSelected()) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t\tif(isPoppedUp) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t}\n\tif(isPoppedUp) {\n\t\t$tw.utils.pushTop(classes,\"tc-popup-handle\");\n\t}\n\tdomNode.className = classes.join(\" \");\n\t// Assign other attributes\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Set the tabindex\n\tif(this.tabIndex) {\n\t\tdomNode.setAttribute(\"tabindex\",this.tabIndex);\n\t}\n\tif(this.isDisabled === \"yes\") {\n\t\tdomNode.setAttribute(\"disabled\",true);\n\t}\n\t// Add a click event handler\n\tdomNode.addEventListener(\"click\",function (event) {\n\t\tvar handled = false;\n\t\tif(self.invokeActions(self,event)) {\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.to) {\n\t\t\tself.navigateTo(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.message) {\n\t\t\tself.dispatchMessage(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.popup || self.popupTitle) {\n\t\t\tself.triggerPopup(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.set || self.setTitle) {\n\t\t\tself.setTiddler();\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.actions) {\n\t\t\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\t\tself.invokeActionString(self.actions,self,event,{modifier: modifierKey});\n\t\t}\n\t\tif(handled) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t\treturn handled;\n\t},false);\n\t// Make it draggable if required\n\tif(this.dragTiddler || this.dragFilter) {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.dragTiddler;},\n\t\t\tdragFilterFn: function() {return self.dragFilter;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nWe don't allow actions to propagate because we trigger actions ourselves\n*/\nButtonWidget.prototype.allowActionPropagation = function() {\n\treturn false;\n};\n\nButtonWidget.prototype.getBoundingClientRect = function() {\n\treturn this.domNodes[0].getBoundingClientRect();\n};\n\nButtonWidget.prototype.isSelected = function() {\n return this.setTitle ? (this.setField ? this.wiki.getTiddler(this.setTitle).getFieldString(this.setField) === this.setTo :\n\t\t(this.setIndex ? this.wiki.extractTiddlerDataItem(this.setTitle,this.setIndex) === this.setTo :\n\t\t\tthis.wiki.getTiddlerText(this.setTitle))) || this.defaultSetValue || this.getVariable(\"currentTiddler\") :\n\t\tthis.wiki.getTextReference(this.set,this.defaultSetValue,this.getVariable(\"currentTiddler\")) === this.setTo;\n};\n\nButtonWidget.prototype.isPoppedUp = function() {\n\tvar tiddler = this.popupTitle ? this.wiki.getTiddler(this.popupTitle) : this.wiki.getTiddler(this.popup);\n\tvar result = tiddler && tiddler.fields.text ? $tw.popup.readPopupState(tiddler.fields.text) : false;\n\treturn result;\n};\n\nButtonWidget.prototype.navigateTo = function(event) {\n\tvar bounds = this.getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1),\n\t\tevent: event\n\t});\n};\n\nButtonWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\"), event: event});\n};\n\nButtonWidget.prototype.triggerPopup = function(event) {\n\tif(this.popupTitle) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNodes[0],\n\t\t\ttitle: this.popupTitle,\n\t\t\twiki: this.wiki,\n\t\t\tnoStateReference: true\n\t\t});\n\t} else {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNodes[0],\n\t\t\ttitle: this.popup,\n\t\t\twiki: this.wiki\n\t\t});\n\t}\n};\n\nButtonWidget.prototype.setTiddler = function() {\n\tif(this.setTitle) {\n\t\tthis.setField ? this.wiki.setText(this.setTitle,this.setField,undefined,this.setTo) :\n\t\t\t\t(this.setIndex ? this.wiki.setText(this.setTitle,undefined,this.setIndex,this.setTo) :\n\t\t\t\tthis.wiki.setText(this.setTitle,\"text\",undefined,this.setTo));\n\t} else {\n\t\tthis.wiki.setTextReference(this.set,this.setTo,this.getVariable(\"currentTiddler\"));\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nButtonWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\");\n\tthis.to = this.getAttribute(\"to\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.set = this.getAttribute(\"set\");\n\tthis.setTo = this.getAttribute(\"setTo\");\n\tthis.popup = this.getAttribute(\"popup\");\n\tthis.hover = this.getAttribute(\"hover\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.style = this.getAttribute(\"style\");\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis.selectedClass = this.getAttribute(\"selectedClass\");\n\tthis.defaultSetValue = this.getAttribute(\"default\",\"\");\n\tthis.buttonTag = this.getAttribute(\"tag\");\n\tthis.dragTiddler = this.getAttribute(\"dragTiddler\");\n\tthis.dragFilter = this.getAttribute(\"dragFilter\");\n\tthis.setTitle = this.getAttribute(\"setTitle\");\n\tthis.setField = this.getAttribute(\"setField\");\n\tthis.setIndex = this.getAttribute(\"setIndex\");\n\tthis.popupTitle = this.getAttribute(\"popupTitle\");\n\tthis.tabIndex = this.getAttribute(\"tabindex\");\n\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\nButtonWidget.prototype.updateDomNodeClasses = function() {\n\tvar domNodeClasses = this.domNode.className.split(\" \"),\n\t\toldClasses = this.class.split(\" \"),\n\t\tnewClasses;\t\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tnewClasses = this.class.split(\" \");\n\t//Remove classes assigned from the old value of class attribute\n\t$tw.utils.each(oldClasses,function(oldClass){\n\t\tvar i = domNodeClasses.indexOf(oldClass);\n\t\tif(i !== -1) {\n\t\t\tdomNodeClasses.splice(i,1);\n\t\t}\n\t});\n\t//Add new classes from updated class attribute.\n\t$tw.utils.pushTop(domNodeClasses,newClasses);\n\tthis.domNode.className = domNodeClasses.join(\" \");\n}\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nButtonWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.actions || changedAttributes.to || changedAttributes.message || changedAttributes.param || changedAttributes.set || changedAttributes.setTo || changedAttributes.popup || changedAttributes.hover || changedAttributes.selectedClass || changedAttributes.style || changedAttributes.dragFilter || changedAttributes.dragTiddler || (this.set && changedTiddlers[this.set]) || (this.popup && changedTiddlers[this.popup]) || (this.popupTitle && changedTiddlers[this.popupTitle]) || changedAttributes.setTitle || changedAttributes.setField || changedAttributes.setIndex || changedAttributes.popupTitle || changedAttributes.disabled) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedAttributes[\"class\"]) {\n\t\tthis.updateDomNodeClasses();\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.button = ButtonWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/checkbox.js": {
"title": "$:/core/modules/widgets/checkbox.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/checkbox.js\ntype: application/javascript\nmodule-type: widget\n\nCheckbox widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CheckboxWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCheckboxWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCheckboxWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",this.checkboxClass);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"checkbox\");\n\tif(this.getValue()) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tif(this.isDisabled === \"yes\") {\n\t\tthis.inputDomNode.setAttribute(\"disabled\",true);\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nCheckboxWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.checkboxTitle);\n\tif(tiddler) {\n\t\tif(this.checkboxTag) {\n\t\t\tif(this.checkboxInvertTag) {\n\t\t\t\treturn !tiddler.hasTag(this.checkboxTag);\n\t\t\t} else {\n\t\t\t\treturn tiddler.hasTag(this.checkboxTag);\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tvar value;\n\t\t\tif($tw.utils.hop(tiddler.fields,this.checkboxField)) {\n\t\t\t\tvalue = tiddler.fields[this.checkboxField] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = this.checkboxDefault || \"\";\n\t\t\t}\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxIndex) {\n\t\t\tvar value = this.wiki.extractTiddlerDataItem(tiddler,this.checkboxIndex,this.checkboxDefault || \"\");\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif(this.checkboxTag) {\n\t\t\treturn false;\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tif(this.checkboxDefault === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(this.checkboxDefault === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\nCheckboxWidget.prototype.handleChangeEvent = function(event) {\n\tvar checked = this.inputDomNode.checked,\n\t\ttiddler = this.wiki.getTiddler(this.checkboxTitle),\n\t\tfallbackFields = {text: \"\"},\n\t\tnewFields = {title: this.checkboxTitle},\n\t\thasChanged = false,\n\t\ttagCheck = false,\n\t\thasTag = tiddler && tiddler.hasTag(this.checkboxTag),\n\t\tvalue = checked ? this.checkboxChecked : this.checkboxUnchecked;\n\tif(this.checkboxTag && this.checkboxInvertTag === \"yes\") {\n\t\ttagCheck = hasTag === checked;\n\t} else {\n\t\ttagCheck = hasTag !== checked;\n\t}\n\t// Set the tag if specified\n\tif(this.checkboxTag && (!tiddler || tagCheck)) {\n\t\tnewFields.tags = tiddler ? (tiddler.fields.tags || []).slice(0) : [];\n\t\tvar pos = newFields.tags.indexOf(this.checkboxTag);\n\t\tif(pos !== -1) {\n\t\t\tnewFields.tags.splice(pos,1);\n\t\t}\n\t\tif(this.checkboxInvertTag === \"yes\" && !checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t} else if(this.checkboxInvertTag !== \"yes\" && checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t}\n\t\thasChanged = true;\n\t}\n\t// Set the field if specified\n\tif(this.checkboxField) {\n\t\tif(!tiddler || tiddler.fields[this.checkboxField] !== value) {\n\t\t\tnewFields[this.checkboxField] = value;\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\t// Set the index if specified\n\tif(this.checkboxIndex) {\n\t\tvar indexValue = this.wiki.extractTiddlerDataItem(this.checkboxTitle,this.checkboxIndex);\n\t\tif(!tiddler || indexValue !== value) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(hasChanged) {\n\t\tif(this.checkboxIndex) {\n\t\t\tthis.wiki.setText(this.checkboxTitle,\"\",this.checkboxIndex,value);\n\t\t} else {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),fallbackFields,tiddler,newFields,this.wiki.getModificationFields()));\n\t\t}\n\t}\n\t// Trigger actions\n\tif(this.checkboxActions) {\n\t\tthis.invokeActionString(this.checkboxActions,this,event);\n\t}\n\tif(this.checkboxCheckActions && checked) {\n\t\tthis.invokeActionString(this.checkboxCheckActions,this,event);\n\t}\n\tif(this.checkboxUncheckActions && !checked) {\n\t\tthis.invokeActionString(this.checkboxUncheckActions,this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCheckboxWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.checkboxActions = this.getAttribute(\"actions\");\n\tthis.checkboxCheckActions = this.getAttribute(\"checkactions\");\n\tthis.checkboxUncheckActions = this.getAttribute(\"uncheckactions\");\n\tthis.checkboxTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.checkboxTag = this.getAttribute(\"tag\");\n\tthis.checkboxField = this.getAttribute(\"field\");\n\tthis.checkboxIndex = this.getAttribute(\"index\");\n\tthis.checkboxChecked = this.getAttribute(\"checked\");\n\tthis.checkboxUnchecked = this.getAttribute(\"unchecked\");\n\tthis.checkboxDefault = this.getAttribute(\"default\");\n\tthis.checkboxClass = this.getAttribute(\"class\",\"\");\n\tthis.checkboxInvertTag = this.getAttribute(\"invertTag\",\"\");\n\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCheckboxWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.tag || changedAttributes.invertTag || changedAttributes.field || changedAttributes.index || changedAttributes.checked || changedAttributes.unchecked || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.disabled) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.checkboxTitle]) {\n\t\t\tthis.inputDomNode.checked = this.getValue();\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.checkbox = CheckboxWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/codeblock.js": {
"title": "$:/core/modules/widgets/codeblock.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/codeblock.js\ntype: application/javascript\nmodule-type: widget\n\nCode block node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CodeBlockWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCodeBlockWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCodeBlockWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar codeNode = this.document.createElement(\"code\"),\n\t\tdomNode = this.document.createElement(\"pre\");\n\tcodeNode.appendChild(this.document.createTextNode(this.getAttribute(\"code\")));\n\tdomNode.appendChild(codeNode);\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n\tif(this.postRender) {\n\t\tthis.postRender();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCodeBlockWidget.prototype.execute = function() {\n\tthis.language = this.getAttribute(\"language\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCodeBlockWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.codeblock = CodeBlockWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/count.js": {
"title": "$:/core/modules/widgets/count.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/count.js\ntype: application/javascript\nmodule-type: widget\n\nCount widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CountWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCountWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCountWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.currentCount);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nCountWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Execute the filter\n\tif(this.filter) {\n\t\tthis.currentCount = this.wiki.filterTiddlers(this.filter,this).length;\n\t} else {\n\t\tthis.currentCount = \"0\";\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCountWidget.prototype.refresh = function(changedTiddlers) {\n\t// Re-execute the filter to get the count\n\tthis.computeAttributes();\n\tvar oldCount = this.currentCount;\n\tthis.execute();\n\tif(this.currentCount !== oldCount) {\n\t\t// Regenerate and rerender the widget and replace the existing DOM node\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n\n};\n\nexports.count = CountWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/diff-text.js": {
"title": "$:/core/modules/widgets/diff-text.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/diff-text.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to display a diff between two texts\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget,\n\tdmp = require(\"$:/core/modules/utils/diff-match-patch/diff_match_patch.js\");\n\nvar DiffTextWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDiffTextWidget.prototype = new Widget();\n\nDiffTextWidget.prototype.invisibleCharacters = {\n\t\"\\n\": \"↩︎\\n\",\n\t\"\\r\": \"⇠\",\n\t\"\\t\": \"⇥\\t\"\n};\n\n/*\nRender this widget into the DOM\n*/\nDiffTextWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create the diff\n\tvar dmpObject = new dmp.diff_match_patch(),\n\t\tdiffs = dmpObject.diff_main(this.getAttribute(\"source\"),this.getAttribute(\"dest\"));\n\t// Apply required cleanup\n\tswitch(this.getAttribute(\"cleanup\",\"semantic\")) {\n\t\tcase \"none\":\n\t\t\t// No cleanup\n\t\t\tbreak;\n\t\tcase \"efficiency\":\n\t\t\tdmpObject.diff_cleanupEfficiency(diffs);\n\t\t\tbreak;\n\t\tdefault: // case \"semantic\"\n\t\t\tdmpObject.diff_cleanupSemantic(diffs);\n\t\t\tbreak;\n\t}\n\t// Create the elements\n\tvar domContainer = this.document.createElement(\"div\"), \n\t\tdomDiff = this.createDiffDom(diffs);\n\tparent.insertBefore(domContainer,nextSibling);\n\t// Set variables\n\tthis.setVariable(\"diff-count\",diffs.reduce(function(acc,diff) {\n\t\tif(diff[0] !== dmp.DIFF_EQUAL) {\n\t\t\tacc++;\n\t\t}\n\t\treturn acc;\n\t},0).toString());\n\t// Render child widgets\n\tthis.renderChildren(domContainer,null);\n\t// Render the diff\n\tdomContainer.appendChild(domDiff);\n\t// Save our container\n\tthis.domNodes.push(domContainer);\n};\n\n/*\nCreate DOM elements representing a list of diffs\n*/\nDiffTextWidget.prototype.createDiffDom = function(diffs) {\n\tvar self = this;\n\t// Create the element and assign the attributes\n\tvar domPre = this.document.createElement(\"pre\"),\n\t\tdomCode = this.document.createElement(\"code\");\n\t$tw.utils.each(diffs,function(diff) {\n\t\tvar tag = diff[0] === dmp.DIFF_INSERT ? \"ins\" : (diff[0] === dmp.DIFF_DELETE ? \"del\" : \"span\"),\n\t\t\tclassName = diff[0] === dmp.DIFF_INSERT ? \"tc-diff-insert\" : (diff[0] === dmp.DIFF_DELETE ? \"tc-diff-delete\" : \"tc-diff-equal\"),\n\t\t\tdom = self.document.createElement(tag),\n\t\t\ttext = diff[1],\n\t\t\tcurrPos = 0,\n\t\t\tre = /([\\x00-\\x1F])/mg,\n\t\t\tmatch = re.exec(text),\n\t\t\tspan,\n\t\t\tprintable;\n\t\tdom.className = className;\n\t\twhile(match) {\n\t\t\tif(currPos < match.index) {\n\t\t\t\tdom.appendChild(self.document.createTextNode(text.slice(currPos,match.index)));\n\t\t\t}\n\t\t\tspan = self.document.createElement(\"span\");\n\t\t\tspan.className = \"tc-diff-invisible\";\n\t\t\tprintable = self.invisibleCharacters[match[0]] || (\"[0x\" + match[0].charCodeAt(0).toString(16) + \"]\");\n\t\t\tspan.appendChild(self.document.createTextNode(printable));\n\t\t\tdom.appendChild(span);\n\t\t\tcurrPos = match.index + match[0].length;\n\t\t\tmatch = re.exec(text);\n\t\t}\n\t\tif(currPos < text.length) {\n\t\t\tdom.appendChild(self.document.createTextNode(text.slice(currPos)));\n\t\t}\n\t\tdomCode.appendChild(dom);\n\t});\n\tdomPre.appendChild(domCode);\n\treturn domPre;\n};\n\n/*\nCompute the internal state of the widget\n*/\nDiffTextWidget.prototype.execute = function() {\n\t// Make child widgets\n\tvar parseTreeNodes;\n\tif(this.parseTreeNode && this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\tparseTreeNodes = this.parseTreeNode.children;\n\t} else {\n\t\tparseTreeNodes = [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: \"$:/language/Diffs/CountMessage\"}\n\t\t\t}\n\t\t}];\n\t}\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDiffTextWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.source || changedAttributes.dest || changedAttributes.cleanup) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports[\"diff-text\"] = DiffTextWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/draggable.js": {
"title": "$:/core/modules/widgets/draggable.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/draggable.js\ntype: application/javascript\nmodule-type: widget\n\nDraggable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DraggableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDraggableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDraggableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Sanitise the specified tag\n\tvar tag = this.draggableTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"div\";\n\t}\n\t// Create our element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = [\"tc-draggable\"];\n\tif(this.draggableClasses) {\n\t\tclasses.push(this.draggableClasses);\n\t}\n\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t// Add event handlers\n\t$tw.utils.makeDraggable({\n\t\tdomNode: domNode,\n\t\tdragTiddlerFn: function() {return self.getAttribute(\"tiddler\");},\n\t\tdragFilterFn: function() {return self.getAttribute(\"filter\");},\n\t\tstartActions: self.startActions,\n\t\tendActions: self.endActions,\n\t\twidget: this\n\t});\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nDraggableWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.draggableTag = this.getAttribute(\"tag\",\"div\");\n\tthis.draggableClasses = this.getAttribute(\"class\");\n\tthis.startActions = this.getAttribute(\"startactions\");\n\tthis.endActions = this.getAttribute(\"endactions\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDraggableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tag || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.draggable = DraggableWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/droppable.js": {
"title": "$:/core/modules/widgets/droppable.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/droppable.js\ntype: application/javascript\nmodule-type: widget\n\nDroppable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DroppableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDroppableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDroppableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this,\n\t\ttag = this.parseTreeNode.isBlock ? \"div\" : \"span\",\n\t\tdomNode;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tif(this.droppableTag && $tw.config.htmlUnsafeElements.indexOf(this.droppableTag) === -1) {\n\t\ttag = this.droppableTag;\n\t}\n\t// Create element and assign classes\n\tdomNode = this.document.createElement(tag);\n\tthis.domNode = domNode;\n\tthis.assignDomNodeClasses();\n\t// Add event handlers\n\tif(this.droppableEnable) {\n\t\t$tw.utils.addEventListeners(domNode,[\n\t\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"}\n\t\t]);\t\t\n\t} else {\n\t\t$tw.utils.addClass(this.domNode,this.disabledClass);\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDroppableWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDroppableWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally. The hacky second condition is to resolve a problem with Firefox whereby there is an erroneous dragenter event if the node being dragged is within the dropzone\n\tif(this.currentlyEntered.length === 0 || (this.currentlyEntered.length === 1 && this.currentlyEntered[0] === $tw.dragInProgress)) {\n\t\tthis.currentlyEntered = [];\n\t\tif(this.domNodes[0]) {\n\t\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t\t}\n\t}\n};\n\nDroppableWidget.prototype.handleDragEnterEvent = function(event) {\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragOverEvent = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\t// Set the drop effect\n\tevent.dataTransfer.dropEffect = this.droppableEffect;\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragLeaveEvent = function(event) {\n\tthis.leaveDrag(event);\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDropEvent = function(event) {\n\tvar self = this;\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\tvar dataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Try to import the various data types we understand\n\t$tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) {\n\t\tfieldsArray.forEach(function(fields) {\n\t\t\tself.performActions(fields.title || fields.text,event);\n\t\t});\n\t});\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.performActions = function(title,event) {\n\tif(this.droppableActions) {\n\t\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\tthis.invokeActionString(this.droppableActions,this,event,{actionTiddler: title, modifier: modifierKey});\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDroppableWidget.prototype.execute = function() {\n\tthis.droppableActions = this.getAttribute(\"actions\");\n\tthis.droppableEffect = this.getAttribute(\"effect\",\"copy\");\n\tthis.droppableTag = this.getAttribute(\"tag\");\n\tthis.droppableEnable = (this.getAttribute(\"enable\") || \"yes\") === \"yes\";\n\tthis.disabledClass = this.getAttribute(\"disabledClass\",\"\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\nDroppableWidget.prototype.assignDomNodeClasses = function() {\n\tvar classes = this.getAttribute(\"class\",\"\").split(\" \");\n\tclasses.push(\"tc-droppable\");\n\tthis.domNode.className = classes.join(\" \");\t\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDroppableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tag || changedAttributes.enable || changedAttributes.disabledClass || changedAttributes.actions || changedAttributes.effect) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedAttributes[\"class\"]) {\n\t\tthis.assignDomNodeClasses();\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.droppable = DroppableWidget;\n\n})();",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/dropzone.js": {
"title": "$:/core/modules/widgets/dropzone.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/dropzone.js\ntype: application/javascript\nmodule-type: widget\n\nDropzone widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DropZoneWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDropZoneWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDropZoneWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"div\");\n\tdomNode.className = this.dropzoneClass || \"tc-dropzone\";\n\t// Add event handlers\n\tif(this.dropzoneEnable) {\n\t\t$tw.utils.addEventListeners(domNode,[\n\t\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"},\n\t\t\t{name: \"paste\", handlerObject: this, handlerMethod: \"handlePasteEvent\"},\n\t\t\t{name: \"dragend\", handlerObject: this, handlerMethod: \"handleDragEndEvent\"}\n\t\t]);\t\t\n\t}\n\tdomNode.addEventListener(\"click\",function (event) {\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDropZoneWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDropZoneWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally\n\tif(this.currentlyEntered.length === 0) {\n\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t}\n};\n\nDropZoneWidget.prototype.handleDragEnterEvent = function(event) {\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handleDragOverEvent = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\tevent.dataTransfer.dropEffect = \"copy\"; // Explicitly show this is a copy\n};\n\nDropZoneWidget.prototype.handleDragLeaveEvent = function(event) {\n\tthis.leaveDrag(event);\n};\n\nDropZoneWidget.prototype.handleDragEndEvent = function(event) {\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDropZoneWidget.prototype.handleDropEvent = function(event) {\n\tvar self = this,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray), autoOpenOnImport: self.autoOpenOnImport, importTitle: self.importTitle});\n\t\t};\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tvar self = this,\n\t\tdataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Import any files in the drop\n\tvar numFiles = 0;\n\tif(dataTransfer.files) {\n\t\tnumFiles = this.wiki.readFiles(dataTransfer.files,{\n\t\t\tcallback: readFileCallback,\n\t\t\tdeserializer: this.dropzoneDeserializer\n\t\t});\n\t}\n\t// Try to import the various data types we understand\n\tif(numFiles === 0) {\n\t\t$tw.utils.importDataTransfer(dataTransfer,this.wiki.generateNewTitle(\"Untitled\"),readFileCallback);\n\t}\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handlePasteEvent = function(event) {\n\tvar self = this,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray), autoOpenOnImport: self.autoOpenOnImport, importTitle: self.importTitle});\n\t\t};\n\t// Let the browser handle it if we're in a textarea or input box\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) == -1 && !event.target.isContentEditable) {\n\t\tvar self = this,\n\t\t\titems = event.clipboardData.items;\n\t\t// Enumerate the clipboard items\n\t\tfor(var t = 0; t<items.length; t++) {\n\t\t\tvar item = items[t];\n\t\t\tif(item.kind === \"file\") {\n\t\t\t\t// Import any files\n\t\t\t\tthis.wiki.readFile(item.getAsFile(),{\n\t\t\t\t\tcallback: readFileCallback,\n\t\t\t\t\tdeserializer: this.dropzoneDeserializer\n\t\t\t\t});\n\t\t\t} else if(item.kind === \"string\") {\n\t\t\t\t// Create tiddlers from string items\n\t\t\t\tvar type = item.type;\n\t\t\t\titem.getAsString(function(str) {\n\t\t\t\t\tvar tiddlerFields = {\n\t\t\t\t\t\ttitle: self.wiki.generateNewTitle(\"Untitled\"),\n\t\t\t\t\t\ttext: str,\n\t\t\t\t\t\ttype: type\n\t\t\t\t\t};\n\t\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\t\tconsole.log(\"Importing string '\" + str + \"', type: '\" + type + \"'\");\n\t\t\t\t\t}\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify([tiddlerFields]), autoOpenOnImport: self.autoOpenOnImport, importTitle: self.importTitle});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t// Tell the browser that we've handled the paste\n\t\tevent.stopPropagation();\n\t\tevent.preventDefault();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDropZoneWidget.prototype.execute = function() {\n\tthis.dropzoneClass = this.getAttribute(\"class\");\n\tthis.dropzoneDeserializer = this.getAttribute(\"deserializer\");\n\tthis.dropzoneEnable = (this.getAttribute(\"enable\") || \"yes\") === \"yes\";\n\tthis.autoOpenOnImport = this.getAttribute(\"autoOpenOnImport\");\n\tthis.importTitle = this.getAttribute(\"importTitle\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDropZoneWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.enable || changedAttributes.autoOpenOnImport || changedAttributes.importTitle || changedAttributes.deserializer || changedAttributes.class) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.dropzone = DropZoneWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-binary.js": {
"title": "$:/core/modules/widgets/edit-binary.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-binary.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-binary widget; placeholder for editing binary tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar BINARY_WARNING_MESSAGE = \"$:/core/ui/BinaryWarning\";\nvar EXPORT_BUTTON_IMAGE = \"$:/core/images/export-button\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBinaryWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBinaryWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBinaryWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBinaryWidget.prototype.execute = function() {\n\t// Get our parameters\n\tvar editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tvar tiddler = this.wiki.getTiddler(editTitle);\n\tvar type = tiddler.fields.type;\n\tvar text = tiddler.fields.text;\n\t// Transclude the binary data tiddler warning message\n\tvar warn = {\n\t\ttype: \"element\",\n\t\ttag: \"p\",\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Create download link based on draft tiddler title\n\tvar link = {\n\t\ttype: \"element\",\n\t\ttag: \"a\",\n\t\tattributes: {\n\t\t\ttitle: {type: \"indirect\", textReference: \"!!draft.title\"},\n\t\t\tdownload: {type: \"indirect\", textReference: \"!!draft.title\"}\n\t\t},\n\t\tchildren: [{\n\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: EXPORT_BUTTON_IMAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Set the link href to internal data URI (no external)\n\tif(text) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: \"data:\" + type + \";base64,\" + text\n\t\t};\n\t}\n\t// Combine warning message and download link in a div\n\tvar element = {\n\t\ttype: \"element\",\n\t\ttag: \"div\",\n\t\tattributes: {\n\t\t\tclass: {type: \"string\", value: \"tc-binary-warning\"}\n\t\t},\n\t\tchildren: [warn, link]\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets([element]);\n};\n\n/*\nRefresh by refreshing our child widget\n*/\nEditBinaryWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"edit-binary\"] = EditBinaryWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-bitmap.js": {
"title": "$:/core/modules/widgets/edit-bitmap.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-bitmap.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-bitmap widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Default image sizes\nvar DEFAULT_IMAGE_WIDTH = 600,\n\tDEFAULT_IMAGE_HEIGHT = 370,\n\tDEFAULT_IMAGE_TYPE = \"image/png\";\n\n// Configuration tiddlers\nvar LINE_WIDTH_TITLE = \"$:/config/BitmapEditor/LineWidth\",\n\tLINE_COLOUR_TITLE = \"$:/config/BitmapEditor/Colour\",\n\tLINE_OPACITY_TITLE = \"$:/config/BitmapEditor/Opacity\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBitmapWidget = function(parseTreeNode,options) {\n\t// Initialise the editor operations if they've not been done already\n\tif(!this.editorOperations) {\n\t\tEditBitmapWidget.prototype.editorOperations = {};\n\t\t$tw.modules.applyMethods(\"bitmapeditoroperation\",this.editorOperations);\n\t}\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBitmapWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBitmapWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create the wrapper for the toolbar and render its content\n\tthis.toolbarNode = this.document.createElement(\"div\");\n\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\tparent.insertBefore(this.toolbarNode,nextSibling);\n\tthis.domNodes.push(this.toolbarNode);\n\t// Create the on-screen canvas\n\tthis.canvasDomNode = $tw.utils.domMaker(\"canvas\",{\n\t\tdocument: this.document,\n\t\t\"class\":\"tc-edit-bitmapeditor\",\n\t\teventListeners: [{\n\t\t\tname: \"touchstart\", handlerObject: this, handlerMethod: \"handleTouchStartEvent\"\n\t\t},{\n\t\t\tname: \"touchmove\", handlerObject: this, handlerMethod: \"handleTouchMoveEvent\"\n\t\t},{\n\t\t\tname: \"touchend\", handlerObject: this, handlerMethod: \"handleTouchEndEvent\"\n\t\t},{\n\t\t\tname: \"mousedown\", handlerObject: this, handlerMethod: \"handleMouseDownEvent\"\n\t\t},{\n\t\t\tname: \"mousemove\", handlerObject: this, handlerMethod: \"handleMouseMoveEvent\"\n\t\t},{\n\t\t\tname: \"mouseup\", handlerObject: this, handlerMethod: \"handleMouseUpEvent\"\n\t\t}]\n\t});\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Render toolbar child widgets\n\tthis.renderChildren(this.toolbarNode,null);\n\t// // Insert the elements into the DOM\n\tparent.insertBefore(this.canvasDomNode,nextSibling);\n\tthis.domNodes.push(this.canvasDomNode);\n\t// Load the image into the canvas\n\tif($tw.browser) {\n\t\tthis.loadCanvas();\n\t}\n\t// Add widget message listeners\n\tthis.addEventListeners([\n\t\t{type: \"tm-edit-bitmap-operation\", handler: \"handleEditBitmapOperationMessage\"}\n\t]);\n};\n\n/*\nHandle an edit bitmap operation message from the toolbar\n*/\nEditBitmapWidget.prototype.handleEditBitmapOperationMessage = function(event) {\n\t// Invoke the handler\n\tvar handler = this.editorOperations[event.param];\n\tif(handler) {\n\t\thandler.call(this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBitmapWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nJust refresh the toolbar\n*/\nEditBitmapWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nSet the bitmap size variables and refresh the toolbar\n*/\nEditBitmapWidget.prototype.refreshToolbar = function() {\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Refresh each of our child widgets\n\t$tw.utils.each(this.children,function(childWidget) {\n\t\tchildWidget.refreshSelf();\n\t});\n};\n\nEditBitmapWidget.prototype.loadCanvas = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle),\n\t\tcurrImage = new Image();\n\t// Set up event handlers for loading the image\n\tvar self = this;\n\tcurrImage.onload = function() {\n\t\t// Copy the image to the on-screen canvas\n\t\tself.initCanvas(self.canvasDomNode,currImage.width,currImage.height,currImage);\n\t\t// And also copy the current bitmap to the off-screen canvas\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,currImage.width,currImage.height,currImage);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\tcurrImage.onerror = function() {\n\t\t// Set the on-screen canvas size and clear it\n\t\tself.initCanvas(self.canvasDomNode,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the off-screen canvas size and clear it\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\t// Get the current bitmap into an image object\n\tif(tiddler && tiddler.fields.type && tiddler.fields.text) {\n\t\tcurrImage.src = \"data:\" + tiddler.fields.type + \";base64,\" + tiddler.fields.text;\t\t\n\t} else {\n\t\tcurrImage.width = DEFAULT_IMAGE_WIDTH;\n\t\tcurrImage.height = DEFAULT_IMAGE_HEIGHT;\n\t\tcurrImage.onerror();\n\t}\n};\n\nEditBitmapWidget.prototype.initCanvas = function(canvas,width,height,image) {\n\tcanvas.width = width;\n\tcanvas.height = height;\n\tvar ctx = canvas.getContext(\"2d\");\n\tif(image) {\n\t\tctx.drawImage(image,0,0);\n\t} else {\n\t\tctx.fillStyle = \"#fff\";\n\t\tctx.fillRect(0,0,canvas.width,canvas.height);\n\t}\n};\n\n/*\n** Change the size of the canvas, preserving the current image\n*/\nEditBitmapWidget.prototype.changeCanvasSize = function(newWidth,newHeight) {\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\");\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Set the new canvas as the current one\n\tthis.currCanvas = newCanvas;\n\t// Set the size of the onscreen canvas\n\tthis.canvasDomNode.width = newWidth;\n\tthis.canvasDomNode.height = newHeight;\n\t// Paint the onscreen canvas with the offscreen canvas\n\tctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n};\n\n/*\n** Rotate the canvas left by 90 degrees\n*/\nEditBitmapWidget.prototype.rotateCanvasLeft = function() {\n\t// Get the current size of the image\n\tvar origWidth = this.currCanvas.width,\n\t\torigHeight = this.currCanvas.height;\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\"),\n\t\tnewWidth = origHeight,\n\t\tnewHeight = origWidth;\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.save();\n\tctx.translate(newWidth / 2,newHeight / 2);\n\tctx.rotate(-Math.PI / 2);\n\tctx.drawImage(this.currCanvas,-origWidth / 2,-origHeight / 2);\n\tctx.restore();\n\t// Set the new canvas as the current one\n\tthis.currCanvas = newCanvas;\n\t// Set the size of the onscreen canvas\n\tthis.canvasDomNode.width = newWidth;\n\tthis.canvasDomNode.height = newHeight;\n\t// Paint the onscreen canvas with the offscreen canvas\n\tctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n};\n\nEditBitmapWidget.prototype.handleTouchStartEvent = function(event) {\n\tthis.brushDown = true;\n\tthis.strokeStart(event.touches[0].clientX,event.touches[0].clientY);\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.touches[0].clientX,event.touches[0].clientY);\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchEndEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseDownEvent = function(event) {\n\tthis.strokeStart(event.clientX,event.clientY);\n\tthis.brushDown = true;\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.clientX,event.clientY);\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.handleMouseUpEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.adjustCoordinates = function(x,y) {\n\tvar canvasRect = this.canvasDomNode.getBoundingClientRect(),\n\t\tscale = this.canvasDomNode.width/canvasRect.width;\n\treturn {x: (x - canvasRect.left) * scale, y: (y - canvasRect.top) * scale};\n};\n\nEditBitmapWidget.prototype.strokeStart = function(x,y) {\n\t// Start off a new stroke\n\tthis.stroke = [this.adjustCoordinates(x,y)];\n};\n\nEditBitmapWidget.prototype.strokeMove = function(x,y) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\"),\n\t\tt;\n\t// Add the new position to the end of the stroke\n\tthis.stroke.push(this.adjustCoordinates(x,y));\n\t// Redraw the previous image\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Render the stroke\n\tctx.globalAlpha = parseFloat(this.wiki.getTiddlerText(LINE_OPACITY_TITLE,\"1.0\"));\n\tctx.strokeStyle = this.wiki.getTiddlerText(LINE_COLOUR_TITLE,\"#ff0\");\n\tctx.lineWidth = parseFloat(this.wiki.getTiddlerText(LINE_WIDTH_TITLE,\"3\"));\n\tctx.lineCap = \"round\";\n\tctx.lineJoin = \"round\";\n\tctx.beginPath();\n\tctx.moveTo(this.stroke[0].x,this.stroke[0].y);\n\tfor(t=1; t<this.stroke.length-1; t++) {\n\t\tvar s1 = this.stroke[t],\n\t\t\ts2 = this.stroke[t-1],\n\t\t\ttx = (s1.x + s2.x)/2,\n\t\t\tty = (s1.y + s2.y)/2;\n\t\tctx.quadraticCurveTo(s2.x,s2.y,tx,ty);\n\t}\n\tctx.stroke();\n};\n\nEditBitmapWidget.prototype.strokeEnd = function() {\n\t// Copy the bitmap to the off-screen canvas\n\tvar ctx = this.currCanvas.getContext(\"2d\");\n\tctx.drawImage(this.canvasDomNode,0,0);\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\nEditBitmapWidget.prototype.saveChanges = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle) || new $tw.Tiddler({title: this.editTitle,type: DEFAULT_IMAGE_TYPE});\n\t// data URIs look like \"data:<type>;base64,<text>\"\n\tvar dataURL = this.canvasDomNode.toDataURL(tiddler.fields.type),\n\t\tposColon = dataURL.indexOf(\":\"),\n\t\tposSemiColon = dataURL.indexOf(\";\"),\n\t\tposComma = dataURL.indexOf(\",\"),\n\t\ttype = dataURL.substring(posColon+1,posSemiColon),\n\t\ttext = dataURL.substring(posComma+1);\n\tvar update = {type: type, text: text};\n\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getModificationFields(),tiddler,update,this.wiki.getCreationFields()));\n};\n\nexports[\"edit-bitmap\"] = EditBitmapWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-shortcut.js": {
"title": "$:/core/modules/widgets/edit-shortcut.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-shortcut.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to display an editable keyboard shortcut\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditShortcutWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditShortcutWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditShortcutWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.inputNode = this.document.createElement(\"input\");\n\t// Assign classes\n\tif(this.shortcutClass) {\n\t\tthis.inputNode.className = this.shortcutClass;\t\t\n\t}\n\t// Assign other attributes\n\tif(this.shortcutStyle) {\n\t\tthis.inputNode.setAttribute(\"style\",this.shortcutStyle);\n\t}\n\tif(this.shortcutTooltip) {\n\t\tthis.inputNode.setAttribute(\"title\",this.shortcutTooltip);\n\t}\n\tif(this.shortcutPlaceholder) {\n\t\tthis.inputNode.setAttribute(\"placeholder\",this.shortcutPlaceholder);\n\t}\n\tif(this.shortcutAriaLabel) {\n\t\tthis.inputNode.setAttribute(\"aria-label\",this.shortcutAriaLabel);\n\t}\n\t// Assign the current shortcut\n\tthis.updateInputNode();\n\t// Add event handlers\n\t$tw.utils.addEventListeners(this.inputNode,[\n\t\t{name: \"keydown\", handlerObject: this, handlerMethod: \"handleKeydownEvent\"}\n\t]);\n\t// Link into the DOM\n\tparent.insertBefore(this.inputNode,nextSibling);\n\tthis.domNodes.push(this.inputNode);\n\t// Focus the input Node if focus === \"yes\" or focus === \"true\"\n\tif(this.shortcutFocus === \"yes\" || this.shortcutFocus === \"true\") {\n\t\tthis.focus();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditShortcutWidget.prototype.execute = function() {\n\tthis.shortcutTiddler = this.getAttribute(\"tiddler\");\n\tthis.shortcutField = this.getAttribute(\"field\");\n\tthis.shortcutIndex = this.getAttribute(\"index\");\n\tthis.shortcutPlaceholder = this.getAttribute(\"placeholder\");\n\tthis.shortcutDefault = this.getAttribute(\"default\",\"\");\n\tthis.shortcutClass = this.getAttribute(\"class\");\n\tthis.shortcutStyle = this.getAttribute(\"style\");\n\tthis.shortcutTooltip = this.getAttribute(\"tooltip\");\n\tthis.shortcutAriaLabel = this.getAttribute(\"aria-label\");\n\tthis.shortcutFocus = this.getAttribute(\"focus\");\n};\n\n/*\nUpdate the value of the input node\n*/\nEditShortcutWidget.prototype.updateInputNode = function() {\n\tif(this.shortcutField) {\n\t\tvar tiddler = this.wiki.getTiddler(this.shortcutTiddler);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,this.shortcutField)) {\n\t\t\tthis.inputNode.value = tiddler.getFieldString(this.shortcutField);\n\t\t} else {\n\t\t\tthis.inputNode.value = this.shortcutDefault;\n\t\t}\n\t} else if(this.shortcutIndex) {\n\t\tthis.inputNode.value = this.wiki.extractTiddlerDataItem(this.shortcutTiddler,this.shortcutIndex,this.shortcutDefault);\n\t} else {\n\t\tthis.inputNode.value = this.wiki.getTiddlerText(this.shortcutTiddler,this.shortcutDefault);\n\t}\n};\n\n/*\nHandle a dom \"keydown\" event\n*/\nEditShortcutWidget.prototype.handleKeydownEvent = function(event) {\n\t// Ignore shift, ctrl, meta, alt\n\tif(event.keyCode && $tw.keyboardManager.getModifierKeys().indexOf(event.keyCode) === -1) {\n\t\t// Get the shortcut text representation\n\t\tvar value = $tw.keyboardManager.getPrintableShortcuts([{\n\t\t\tctrlKey: event.ctrlKey,\n\t\t\tshiftKey: event.shiftKey,\n\t\t\taltKey: event.altKey,\n\t\t\tmetaKey: event.metaKey,\n\t\t\tkeyCode: event.keyCode\n\t\t}]);\n\t\tif(value.length > 0) {\n\t\t\tthis.wiki.setText(this.shortcutTiddler,this.shortcutField,this.shortcutIndex,value[0]);\n\t\t}\n\t\t// Ignore the keydown if it was already handled\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn true;\t\t\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nfocus the input node\n*/\nEditShortcutWidget.prototype.focus = function() {\n\tif(this.inputNode.focus && this.inputNode.select) {\n\t\tthis.inputNode.focus();\n\t\tthis.inputNode.select();\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget needed re-rendering\n*/\nEditShortcutWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.placeholder || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.style || changedAttributes.tooltip || changedAttributes[\"aria-label\"] || changedAttributes.focus) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedTiddlers[this.shortcutTiddler]) {\n\t\tthis.updateInputNode();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports[\"edit-shortcut\"] = EditShortcutWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-text.js": {
"title": "$:/core/modules/widgets/edit-text.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-text.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-text widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar editTextWidgetFactory = require(\"$:/core/modules/editor/factory.js\").editTextWidgetFactory,\n\tFramedEngine = require(\"$:/core/modules/editor/engines/framed.js\").FramedEngine,\n\tSimpleEngine = require(\"$:/core/modules/editor/engines/simple.js\").SimpleEngine;\n\nexports[\"edit-text\"] = editTextWidgetFactory(FramedEngine,SimpleEngine);\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit.js": {
"title": "$:/core/modules/widgets/edit.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit.js\ntype: application/javascript\nmodule-type: widget\n\nEdit widget is a meta-widget chooses the appropriate actual editting widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n// Mappings from content type to editor type are stored in tiddlers with this prefix\nvar EDITOR_MAPPING_PREFIX = \"$:/config/EditorTypeMappings/\";\n\n/*\nCompute the internal state of the widget\n*/\nEditWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.editField = this.getAttribute(\"field\",\"text\");\n\tthis.editIndex = this.getAttribute(\"index\");\n\tthis.editClass = this.getAttribute(\"class\");\n\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\tthis.editTabIndex = this.getAttribute(\"tabindex\");\n\tthis.editFocus = this.getAttribute(\"focus\",\"\");\n\tthis.editCancelPopups = this.getAttribute(\"cancelPopups\",\"\");\n\tthis.editInputActions = this.getAttribute(\"inputActions\");\n\tthis.editRefreshTitle = this.getAttribute(\"refreshTitle\");\n\tthis.editAutoComplete = this.getAttribute(\"autocomplete\");\n\t// Choose the appropriate edit widget\n\tthis.editorType = this.getEditorType();\n\t// Make the child widgets\n\tthis.makeChildWidgets([{\n\t\ttype: \"edit-\" + this.editorType,\n\t\tattributes: this.parseTreeNode.attributes,\n\t\tchildren: this.parseTreeNode.children\n\t}]);\n};\n\nEditWidget.prototype.getEditorType = function() {\n\t// Get the content type of the thing we're editing\n\tvar type;\n\tif(this.editField === \"text\") {\n\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\tif(tiddler) {\n\t\t\ttype = tiddler.fields.type;\n\t\t}\n\t}\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar editorType = this.wiki.getTiddlerText(EDITOR_MAPPING_PREFIX + type);\n\tif(!editorType) {\n\t\tvar typeInfo = $tw.config.contentTypeInfo[type];\n\t\tif(typeInfo && typeInfo.encoding === \"base64\") {\n\t\t\teditorType = \"binary\";\n\t\t} else {\n\t\t\teditorType = \"text\";\n\t\t}\n\t}\n\treturn editorType;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEditWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh if an attribute has changed, or the type associated with the target tiddler has changed\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.tabindex || changedAttributes.cancelPopups || changedAttributes.inputActions || changedAttributes.refreshTitle || changedAttributes.autocomplete || (changedTiddlers[this.editTitle] && this.getEditorType() !== this.editorType)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.edit = EditWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/element.js": {
"title": "$:/core/modules/widgets/element.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/element.js\ntype: application/javascript\nmodule-type: widget\n\nElement widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ElementWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nElementWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nElementWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\t// Neuter blacklisted elements\n\tthis.tag = this.parseTreeNode.tag;\n\tif($tw.config.htmlUnsafeElements.indexOf(this.tag) !== -1) {\n\t\tthis.tag = \"safe-\" + this.tag;\n\t}\n\t// Adjust headings by the current base level\n\tvar headingLevel = [\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"].indexOf(this.tag);\n\tif(headingLevel !== -1) {\n\t\tvar baseLevel = parseInt(this.getVariable(\"tv-adjust-heading-level\",\"0\"),10) || 0;\n\t\theadingLevel = Math.min(Math.max(headingLevel + 1 + baseLevel,1),6);\n\t\tthis.tag = \"h\" + headingLevel;\n\t}\n\t// Select the namespace for the tag\n\tvar tagNamespaces = {\n\t\t\tsvg: \"http://www.w3.org/2000/svg\",\n\t\t\tmath: \"http://www.w3.org/1998/Math/MathML\",\n\t\t\tbody: \"http://www.w3.org/1999/xhtml\"\n\t\t};\n\tthis.namespace = tagNamespaces[this.tag];\n\tif(this.namespace) {\n\t\tthis.setVariable(\"namespace\",this.namespace);\n\t} else {\n\t\tthis.namespace = this.getVariable(\"namespace\",{defaultValue: \"http://www.w3.org/1999/xhtml\"});\n\t}\n\t// Invoke the th-rendering-element hook\n\tvar parseTreeNodes = $tw.hooks.invokeHook(\"th-rendering-element\",null,this);\n\tthis.isReplaced = !!parseTreeNodes;\n\tif(parseTreeNodes) {\n\t\t// Use the parse tree nodes provided by the hook\n\t\tthis.makeChildWidgets(parseTreeNodes);\n\t\tthis.renderChildren(this.parentDomNode,null);\n\t\treturn;\n\t}\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n\t// Create the DOM node and render children\n\tvar domNode = this.document.createElementNS(this.namespace,this.tag);\n\tthis.assignAttributes(domNode,{excludeEventAttributes: true});\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nElementWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\thasChangedAttributes = $tw.utils.count(changedAttributes) > 0;\n\tif(hasChangedAttributes) {\n\t\tif(!this.isReplaced) {\n\t\t\t// Update our attributes\n\t\t\tthis.assignAttributes(this.domNodes[0],{excludeEventAttributes: true});\t\t\t\n\t\t} else {\n\t\t\t// If we were replaced then completely refresh ourselves\n\t\t\treturn this.refreshSelf();\n\t\t}\n\t}\n\treturn this.refreshChildren(changedTiddlers) || hasChangedAttributes;\n};\n\nexports.element = ElementWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/encrypt.js": {
"title": "$:/core/modules/widgets/encrypt.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/encrypt.js\ntype: application/javascript\nmodule-type: widget\n\nEncrypt widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EncryptWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEncryptWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEncryptWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.encryptedText);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEncryptWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\",\"[!is[system]]\");\n\t// Encrypt the filtered tiddlers\n\tvar tiddlers = this.wiki.filterTiddlers(this.filter),\n\t\tjson = {},\n\t\tself = this;\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title),\n\t\t\tjsonTiddler = {};\n\t\tfor(var f in tiddler.fields) {\n\t\t\tjsonTiddler[f] = tiddler.getFieldString(f);\n\t\t}\n\t\tjson[title] = jsonTiddler;\n\t});\n\tthis.encryptedText = $tw.utils.htmlEncode($tw.crypto.encrypt(JSON.stringify(json)));\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEncryptWidget.prototype.refresh = function(changedTiddlers) {\n\t// We don't need to worry about refreshing because the encrypt widget isn't for interactive use\n\treturn false;\n};\n\nexports.encrypt = EncryptWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/entity.js": {
"title": "$:/core/modules/widgets/entity.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/entity.js\ntype: application/javascript\nmodule-type: widget\n\nHTML entity widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EntityWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEntityWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEntityWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar entityString = this.getAttribute(\"entity\",this.parseTreeNode.entity || \"\"),\n\t\ttextNode = this.document.createTextNode($tw.utils.entityDecode(entityString));\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEntityWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEntityWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.entity) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.entity = EntityWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/eventcatcher.js": {
"title": "$:/core/modules/widgets/eventcatcher.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/eventcatcher.js\ntype: application/javascript\nmodule-type: widget\n\nEvent handler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EventWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEventWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEventWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.elementTag && $tw.config.htmlUnsafeElements.indexOf(this.elementTag) === -1) {\n\t\ttag = this.elementTag;\n\t}\t\n\tvar domNode = this.document.createElement(tag);\n\tthis.domNode = domNode;\n\t// Assign classes\n\tthis.assignDomNodeClasses();\t\n\t// Add our event handler\n\t$tw.utils.each(this.types,function(type) {\n\t\tdomNode.addEventListener(type,function(event) {\n\t\t\tvar selector = self.getAttribute(\"selector\"),\n\t\t\t\tactions = self.getAttribute(\"actions-\"+type),\n\t\t\t\tselectedNode = event.target,\n\t\t\t\tselectedNodeRect,\n\t\t\t\tcatcherNodeRect,\n\t\t\t\tvariables = {};\n\t\t\tif(selector) {\n\t\t\t\t// Search ancestors for a node that matches the selector\n\t\t\t\twhile(!selectedNode.matches(selector) && selectedNode !== domNode) {\n\t\t\t\t\tselectedNode = selectedNode.parentNode;\n\t\t\t\t}\n\t\t\t\t// If we found one, copy the attributes as variables, otherwise exit\n\t\t\t\tif(selectedNode.matches(selector)) {\n\t\t\t\t\t$tw.utils.each(selectedNode.attributes,function(attribute) {\n\t\t\t\t\t\tvariables[\"dom-\" + attribute.name] = attribute.value.toString();\n\t\t\t\t\t});\n\t\t\t\t\t//Add a variable with a popup coordinate string for the selected node\n\t\t\t\t\tvariables[\"tv-popup-coords\"] = \"(\" + selectedNode.offsetLeft + \",\" + selectedNode.offsetTop +\",\" + selectedNode.offsetWidth + \",\" + selectedNode.offsetHeight + \")\";\n\t\t\t\t\t\n\t\t\t\t\t//Add variables for offset of selected node\n\t\t\t\t\tvariables[\"tv-selectednode-posx\"] = selectedNode.offsetLeft.toString();\n\t\t\t\t\tvariables[\"tv-selectednode-posy\"] = selectedNode.offsetTop.toString();\n\t\t\t\t\tvariables[\"tv-selectednode-width\"] = selectedNode.offsetWidth.toString();\n\t\t\t\t\tvariables[\"tv-selectednode-height\"] = selectedNode.offsetHeight.toString();\n\n\t\t\t\t\t//Add variables for event X and Y position relative to selected node\n\t\t\t\t\tselectedNodeRect = selectedNode.getBoundingClientRect();\t\t\t\t\n\t\t\t\t\tvariables[\"event-fromselected-posx\"] = (event.clientX - selectedNodeRect.left).toString();\n\t\t\t\t\tvariables[\"event-fromselected-posy\"] = (event.clientY - selectedNodeRect.top).toString();\n\n\t\t\t\t\t//Add variables for event X and Y position relative to event catcher node\n\t\t\t\t\tcatcherNodeRect = self.domNode.getBoundingClientRect();\n\t\t\t\t\tvariables[\"event-fromcatcher-posx\"] = (event.clientX - catcherNodeRect.left).toString();\n\t\t\t\t\tvariables[\"event-fromcatcher-posy\"] = (event.clientY - catcherNodeRect.top).toString();\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Execute our actions with the variables\n\t\t\tif(actions) {\n\t\t\t\t// Add a variable for the modifier key\n\t\t\t\tvariables.modifier = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\t\t\t// Add a variable for the mouse button\n\t\t\t\tif(\"button\" in event) {\n\t\t\t\t\tif(event.button === 0) {\n\t\t\t\t\t\tvariables[\"event-mousebutton\"] = \"left\";\n\t\t\t\t\t} else if(event.button === 1) {\n\t\t\t\t\t\tvariables[\"event-mousebutton\"] = \"middle\";\n\t\t\t\t\t} else if(event.button === 2) {\n\t\t\t\t\t\tvariables[\"event-mousebutton\"] = \"right\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvariables[\"event-type\"] = event.type.toString();\n\t\t\t\tif(typeof event.detail === \"object\" && !!event.detail) {\n\t\t\t\t\t$tw.utils.each(event.detail,function(detailValue,detail) {\n\t\t\t\t\t\tvariables[\"event-detail-\" + detail] = detailValue.toString();\n\t\t\t\t\t});\n\t\t\t\t} else if(!!event.detail) {\n\t\t\t\t\tvariables[\"event-detail\"] = event.detail.toString();\n\t\t\t\t}\n\t\t\t\tself.invokeActionString(actions,self,event,variables);\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},false);\n\t});\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEventWidget.prototype.execute = function() {\n\tvar self = this;\n\t// Get attributes that require a refresh on change\n\tthis.types = this.getAttribute(\"events\",\"\").split(\" \");\n\tthis.elementTag = this.getAttribute(\"tag\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\nEventWidget.prototype.assignDomNodeClasses = function() {\n\tvar classes = this.getAttribute(\"class\",\"\").split(\" \");\n\tclasses.push(\"tc-eventcatcher\");\n\tthis.domNode.className = classes.join(\" \");\t\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEventWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"events\"] || changedAttributes[\"tag\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedAttributes[\"class\"]) {\n\t\tthis.assignDomNodeClasses();\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.eventcatcher = EventWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/fieldmangler.js": {
"title": "$:/core/modules/widgets/fieldmangler.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/fieldmangler.js\ntype: application/javascript\nmodule-type: widget\n\nField mangler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldManglerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-remove-field\", handler: \"handleRemoveFieldEvent\"},\n\t\t{type: \"tm-add-field\", handler: \"handleAddFieldEvent\"},\n\t\t{type: \"tm-remove-tag\", handler: \"handleRemoveTagEvent\"},\n\t\t{type: \"tm-add-tag\", handler: \"handleAddTagEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldManglerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldManglerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldManglerWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.mangleTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldManglerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nFieldManglerWidget.prototype.handleRemoveFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tdeletion = {};\n\tdeletion[event.param] = undefined;\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,deletion));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\taddition = this.wiki.getModificationFields(),\n\t\thadInvalidFieldName = false,\n\t\taddField = function(name,value) {\n\t\t\tvar trimmedName = name.toLowerCase().trim();\n\t\t\tif(!$tw.utils.isValidFieldName(trimmedName)) {\n\t\t\t\tif(!hadInvalidFieldName) {\n\t\t\t\t\talert($tw.language.getString(\n\t\t\t\t\t\t\"InvalidFieldName\",\n\t\t\t\t\t\t{variables:\n\t\t\t\t\t\t\t{fieldName: trimmedName}\n\t\t\t\t\t\t}\n\t\t\t\t\t));\n\t\t\t\t\thadInvalidFieldName = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif(!value && tiddler) {\n\t\t\t\t\tvalue = tiddler.fields[trimmedName];\n\t\t\t\t}\n\t\t\t\taddition[trimmedName] = value || \"\";\n\t\t\t}\n\t\t\treturn;\n\t\t};\n\taddition.title = this.mangleTitle;\n\tif(typeof event.param === \"string\") {\n\t\taddField(event.param,\"\");\n\t}\n\tif(typeof event.paramObject === \"object\") {\n\t\tfor(var name in event.paramObject) {\n\t\t\taddField(name,event.paramObject[name]);\n\t\t}\n\t}\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,addition));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleRemoveTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tmodification = this.wiki.getModificationFields();\n\tif(tiddler && tiddler.fields.tags) {\n\t\tvar p = tiddler.fields.tags.indexOf(event.param);\n\t\tif(p !== -1) {\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\tmodification.tags.splice(p,1);\n\t\t\tif(modification.tags.length === 0) {\n\t\t\t\tmodification.tags = undefined;\n\t\t\t}\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\n\t\t}\n\t}\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tmodification = this.wiki.getModificationFields();\n\tif(tiddler && typeof event.param === \"string\") {\n\t\tvar tag = event.param.trim();\n\t\tif(tag !== \"\") {\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\t$tw.utils.pushTop(modification.tags,tag);\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\t\t\t\n\t\t}\n\t} else if(typeof event.param === \"string\" && event.param.trim() !== \"\" && this.mangleTitle.trim() !== \"\") {\n\t\tvar tag = [];\n\t\ttag.push(event.param.trim());\n\t\tthis.wiki.addTiddler(new $tw.Tiddler({title: this.mangleTitle, tags: tag},modification));\n\t}\n\treturn true;\n};\n\nexports.fieldmangler = FieldManglerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/fields.js": {
"title": "$:/core/modules/widgets/fields.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/fields.js\ntype: application/javascript\nmodule-type: widget\n\nFields widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldsWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldsWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldsWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.template = this.getAttribute(\"template\");\n\tthis.sort = this.getAttribute(\"sort\",\"yes\") === \"yes\";\n\tthis.sortReverse = this.getAttribute(\"sortReverse\",\"no\") === \"yes\";\n\tthis.exclude = this.getAttribute(\"exclude\");\n\tthis.include = this.getAttribute(\"include\",null);\n\tthis.stripTitlePrefix = this.getAttribute(\"stripTitlePrefix\",\"no\") === \"yes\";\n\t// Get the value to display\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\n\t// Get the inclusion and exclusion list\n\tvar excludeArr = (this.exclude) ? this.exclude.split(\" \") : [\"text\"];\n\t// Include takes precedence\n\tvar includeArr = (this.include) ? this.include.split(\" \") : null;\n\n\t// Compose the template\n\tvar text = [];\n\tif(this.template && tiddler) {\n\t\tvar fields = [];\n\t\tif (includeArr) { // Include takes precedence\n\t\t\tfor(var i=0; i<includeArr.length; i++) {\n\t\t\t\tif(tiddler.fields[includeArr[i]]) {\n\t\t\t\t\tfields.push(includeArr[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor(var fieldName in tiddler.fields) {\n\t\t\t\tif(excludeArr.indexOf(fieldName) === -1) {\n\t\t\t\t\tfields.push(fieldName);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (this.sort) fields.sort();\n\t\tif (this.sortReverse) fields.reverse();\n\t\tfor(var f=0, fmax=fields.length; f<fmax; f++) {\n\t\t\tfieldName = fields[f];\n\t\t\tvar row = this.template,\n\t\t\t\tvalue = tiddler.getFieldString(fieldName);\n\t\t\tif(this.stripTitlePrefix && fieldName === \"title\") {\n\t\t\t\tvar reStrip = /^\\{[^\\}]+\\}(.+)/mg,\n\t\t\t\t\treMatch = reStrip.exec(value);\n\t\t\t\tif(reMatch) {\n\t\t\t\t\tvalue = reMatch[1];\n\t\t\t\t}\n\t\t\t}\n\t\t\trow = $tw.utils.replaceString(row,\"$name$\",fieldName);\n\t\t\trow = $tw.utils.replaceString(row,\"$value$\",value);\n\t\t\trow = $tw.utils.replaceString(row,\"$encoded_value$\",$tw.utils.htmlEncode(value));\n\t\t\ttext.push(row);\n\t\t}\n\t}\n\tthis.text = text.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif( changedAttributes.tiddler || changedAttributes.template || changedAttributes.exclude ||\n\t\tchangedAttributes.include || changedAttributes.sort || changedAttributes.sortReverse ||\n\t\tchangedTiddlers[this.tiddlerTitle] || changedAttributes.stripTitlePrefix) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\nexports.fields = FieldsWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/image.js": {
"title": "$:/core/modules/widgets/image.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/image.js\ntype: application/javascript\nmodule-type: widget\n\nThe image widget displays an image referenced with an external URI or with a local tiddler title.\n\n```\n<$image src=\"TiddlerTitle\" width=\"320\" height=\"400\" class=\"classnames\">\n```\n\nThe image source can be the title of an existing tiddler or the URL of an external image.\n\nExternal images always generate an HTML `<img>` tag.\n\nTiddlers that have a _canonical_uri field generate an HTML `<img>` tag with the src attribute containing the URI.\n\nTiddlers that contain image data generate an HTML `<img>` tag with the src attribute containing a base64 representation of the image.\n\nTiddlers that contain wikitext could be rendered to a DIV of the usual size of a tiddler, and then transformed to the size requested.\n\nThe width and height attributes are interpreted as a number of pixels, and do not need to include the \"px\" suffix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\t// Determine what type of image it is\n\tvar tag = \"img\", src = \"\",\n\t\ttiddler = this.wiki.getTiddler(this.imageSource);\n\tif(!tiddler) {\n\t\t// The source isn't the title of a tiddler, so we'll assume it's a URL\n\t\tsrc = this.getVariable(\"tv-get-export-image-link\",{params: [{name: \"src\",value: this.imageSource}],defaultValue: this.imageSource});\n\t} else {\n\t\t// Check if it is an image tiddler\n\t\tif(this.wiki.isImageTiddler(this.imageSource)) {\n\t\t\tvar type = tiddler.fields.type,\n\t\t\t\ttext = tiddler.fields.text,\n\t\t\t\t_canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t// If the tiddler has body text then it doesn't need to be lazily loaded\n\t\t\tif(text) {\n\t\t\t\t// Render the appropriate element for the image type\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = \"data:application/pdf;base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = \"data:image/svg+xml,\" + encodeURIComponent(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = \"data:\" + type + \";base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if(_canonical_uri) {\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\t\n\t\t\t} else {\n\t\t\t\t// Just trigger loading of the tiddler\n\t\t\t\tthis.wiki.getTiddlerText(this.imageSource);\n\t\t\t}\n\t\t}\n\t}\n\t// Create the element and assign the attributes\n\tvar domNode = this.document.createElement(tag);\n\tdomNode.setAttribute(\"src\",src);\n\tif(this.imageClass) {\n\t\tdomNode.setAttribute(\"class\",this.imageClass);\t\t\n\t}\n\tif(this.imageWidth) {\n\t\tdomNode.setAttribute(\"width\",this.imageWidth);\n\t}\n\tif(this.imageHeight) {\n\t\tdomNode.setAttribute(\"height\",this.imageHeight);\n\t}\n\tif(this.imageTooltip) {\n\t\tdomNode.setAttribute(\"title\",this.imageTooltip);\t\t\n\t}\n\tif(this.imageAlt) {\n\t\tdomNode.setAttribute(\"alt\",this.imageAlt);\t\t\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImageWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.imageSource = this.getAttribute(\"source\");\n\tthis.imageWidth = this.getAttribute(\"width\");\n\tthis.imageHeight = this.getAttribute(\"height\");\n\tthis.imageClass = this.getAttribute(\"class\");\n\tthis.imageTooltip = this.getAttribute(\"tooltip\");\n\tthis.imageAlt = this.getAttribute(\"alt\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.source || changedAttributes.width || changedAttributes.height || changedAttributes[\"class\"] || changedAttributes.tooltip || changedTiddlers[this.imageSource]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\t\n\t}\n};\n\nexports.image = ImageWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/importvariables.js": {
"title": "$:/core/modules/widgets/importvariables.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/importvariables.js\ntype: application/javascript\nmodule-type: widget\n\nImport variable definitions from other tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImportVariablesWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImportVariablesWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImportVariablesWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImportVariablesWidget.prototype.execute = function(tiddlerList) {\n\tvar widgetPointer = this;\n\t// Got to flush all the accumulated variables\n\tthis.variables = new this.variablesConstructor();\n\t// Get our parameters\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Compute the filter\n\tthis.tiddlerList = tiddlerList || this.wiki.filterTiddlers(this.filter,this);\n\t// Accumulate the <$set> widgets from each tiddler\n\t$tw.utils.each(this.tiddlerList,function(title) {\n\t\tvar parser = widgetPointer.wiki.parseTiddler(title);\n\t\tif(parser) {\n\t\t\tvar parseTreeNode = parser.tree[0];\n\t\t\twhile(parseTreeNode && parseTreeNode.type === \"set\") {\n\t\t\t\tvar node = {\n\t\t\t\t\ttype: \"set\",\n\t\t\t\t\tattributes: parseTreeNode.attributes,\n\t\t\t\t\tparams: parseTreeNode.params,\n\t\t\t\t\tisMacroDefinition: parseTreeNode.isMacroDefinition\n\t\t\t\t};\n\t\t\t\tif (parseTreeNode.isMacroDefinition) {\n\t\t\t\t\t// Macro definitions can be folded into\n\t\t\t\t\t// current widget instead of adding\n\t\t\t\t\t// another link to the chain.\n\t\t\t\t\tvar widget = widgetPointer.makeChildWidget(node);\n\t\t\t\t\twidget.computeAttributes();\n\t\t\t\t\twidget.execute();\n\t\t\t\t\t// We SHALLOW copy over all variables\n\t\t\t\t\t// in widget. We can't use\n\t\t\t\t\t// $tw.utils.assign, because that copies\n\t\t\t\t\t// up the prototype chain, which we\n\t\t\t\t\t// don't want.\n\t\t\t\t\t$tw.utils.each(Object.keys(widget.variables), function(key) {\n\t\t\t\t\t\twidgetPointer.variables[key] = widget.variables[key];\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\twidgetPointer.children = [widgetPointer.makeChildWidget(node)];\n\t\t\t\t\t// No more regenerating children for\n\t\t\t\t\t// this widget. If it needs to refresh,\n\t\t\t\t\t// it'll do so along with the the whole\n\t\t\t\t\t// importvariable tree.\n\t\t\t\t\tif (widgetPointer != this) {\n\t\t\t\t\t\twidgetPointer.makeChildWidgets = function(){};\n\t\t\t\t\t}\n\t\t\t\t\twidgetPointer = widgetPointer.children[0];\n\t\t\t\t}\n\t\t\t\tparseTreeNode = parseTreeNode.children && parseTreeNode.children[0];\n\t\t\t}\n\t\t} \n\t});\n\n\tif (widgetPointer != this) {\n\t\twidgetPointer.parseTreeNode.children = this.parseTreeNode.children;\n\t} else {\n\t\twidgetPointer.makeChildWidgets();\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImportVariablesWidget.prototype.refresh = function(changedTiddlers) {\n\t// Recompute our attributes and the filter list\n\tvar changedAttributes = this.computeAttributes(),\n\t\ttiddlerList = this.wiki.filterTiddlers(this.getAttribute(\"filter\"),this);\n\t// Refresh if the filter has changed, or the list of tiddlers has changed, or any of the tiddlers in the list has changed\n\tfunction haveListedTiddlersChanged() {\n\t\tvar changed = false;\n\t\ttiddlerList.forEach(function(title) {\n\t\t\tif(changedTiddlers[title]) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t});\n\t\treturn changed;\n\t}\n\tif(changedAttributes.filter || !$tw.utils.isArrayEqual(this.tiddlerList,tiddlerList) || haveListedTiddlersChanged()) {\n\t\t// Compute the filter\n\t\tthis.removeChildDomNodes();\n\t\tthis.execute(tiddlerList);\n\t\tthis.renderChildren(this.parentDomNode,this.findNextSiblingDomNode());\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.importvariables = ImportVariablesWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/keyboard.js": {
"title": "$:/core/modules/widgets/keyboard.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/keyboard.js\ntype: application/javascript\nmodule-type: widget\n\nKeyboard shortcut widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar KeyboardWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nKeyboardWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nKeyboardWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.tag && $tw.config.htmlUnsafeElements.indexOf(this.tag) === -1) {\n\t\ttag = this.tag;\n\t}\n\t// Create element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = (this[\"class\"] || \"\").split(\" \");\n\tclasses.push(\"tc-keyboard\");\n\tdomNode.className = classes.join(\" \");\n\t// Add a keyboard event handler\n\tdomNode.addEventListener(\"keydown\",function (event) {\n\t\tif($tw.keyboardManager.checkKeyDescriptors(event,self.keyInfoArray)) {\n\t\t\tvar handled = self.invokeActions(self,event);\n\t\t\tif(self.actions) {\n\t\t\t\tself.invokeActionString(self.actions,self,event);\n\t\t\t}\n\t\t\tself.dispatchMessage(event);\n\t\t\tif(handled || self.actions || self.message) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nKeyboardWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\")});\n};\n\n/*\nCompute the internal state of the widget\n*/\nKeyboardWidget.prototype.execute = function() {\n\tvar self = this;\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\",\"\");\n\tthis.message = this.getAttribute(\"message\",\"\");\n\tthis.param = this.getAttribute(\"param\",\"\");\n\tthis.key = this.getAttribute(\"key\",\"\");\n\tthis.tag = this.getAttribute(\"tag\",\"\");\n\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tif(this.key.substr(0,2) === \"((\" && this.key.substr(-2,2) === \"))\") {\n\t\tthis.shortcutTiddlers = [];\n\t\tvar name = this.key.substring(2,this.key.length -2);\n\t\t$tw.utils.each($tw.keyboardManager.lookupNames,function(platformDescriptor) {\n\t\t\tself.shortcutTiddlers.push(\"$:/config/\" + platformDescriptor + \"/\" + name);\n\t\t});\n\t}\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nKeyboardWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.message || changedAttributes.param || changedAttributes.key || changedAttributes[\"class\"] || changedAttributes.tag) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\t// Update the keyInfoArray if one of its shortcut-config-tiddlers has changed\n\tif(this.shortcutTiddlers && $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers)) {\n\t\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.keyboard = KeyboardWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/link.js": {
"title": "$:/core/modules/widgets/link.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/link.js\ntype: application/javascript\nmodule-type: widget\n\nLink widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LinkWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the value of the tv-wikilinks configuration macro\n\tvar wikiLinksMacro = this.getVariable(\"tv-wikilinks\"),\n\t\tuseWikiLinks = wikiLinksMacro ? (wikiLinksMacro.trim() !== \"no\") : true,\n\t\tmissingLinksEnabled = !(this.hideMissingLinks && this.isMissing && !this.isShadow);\n\t// Render the link if required\n\tif(useWikiLinks && missingLinksEnabled) {\n\t\tthis.renderLink(parent,nextSibling);\n\t} else {\n\t\t// Just insert the link text\n\t\tvar domNode = this.document.createElement(\"span\");\n\t\tparent.insertBefore(domNode,nextSibling);\n\t\tthis.renderChildren(domNode,null);\n\t\tthis.domNodes.push(domNode);\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.renderLink = function(parent,nextSibling) {\n\tvar self = this;\n\t// Sanitise the specified tag\n\tvar tag = this.linkTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"a\";\n\t}\n\t// Create our element\n\tvar namespace = this.getVariable(\"namespace\",{defaultValue: \"http://www.w3.org/1999/xhtml\"}),\n\t\tdomNode = this.document.createElementNS(namespace,tag);\n\t// Assign classes\n\tvar classes = [];\n\tif(this.overrideClasses === undefined) {\n\t\tclasses.push(\"tc-tiddlylink\");\n\t\tif(this.isShadow) {\n\t\t\tclasses.push(\"tc-tiddlylink-shadow\");\n\t\t}\n\t\tif(this.isMissing && !this.isShadow) {\n\t\t\tclasses.push(\"tc-tiddlylink-missing\");\n\t\t} else {\n\t\t\tif(!this.isMissing) {\n\t\t\t\tclasses.push(\"tc-tiddlylink-resolves\");\n\t\t\t}\n\t\t}\n\t\tif(this.linkClasses) {\n\t\t\tclasses.push(this.linkClasses);\t\t\t\n\t\t}\n\t} else if(this.overrideClasses !== \"\") {\n\t\tclasses.push(this.overrideClasses)\n\t}\n\tif(classes.length > 0) {\n\t\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t}\n\t// Set an href\n\tvar wikilinkTransformFilter = this.getVariable(\"tv-filter-export-link\"),\n\t\twikiLinkText;\n\tif(wikilinkTransformFilter) {\n\t\t// Use the filter to construct the href\n\t\twikiLinkText = this.wiki.filterTiddlers(wikilinkTransformFilter,this,function(iterator) {\n\t\t\titerator(self.wiki.getTiddler(self.to),self.to)\n\t\t})[0];\n\t} else {\n\t\t// Expand the tv-wikilink-template variable to construct the href\n\t\tvar wikiLinkTemplateMacro = this.getVariable(\"tv-wikilink-template\"),\n\t\t\twikiLinkTemplate = wikiLinkTemplateMacro ? wikiLinkTemplateMacro.trim() : \"#$uri_encoded$\";\n\t\twikiLinkText = $tw.utils.replaceString(wikiLinkTemplate,\"$uri_encoded$\",encodeURIComponent(this.to));\n\t\twikiLinkText = $tw.utils.replaceString(wikiLinkText,\"$uri_doubleencoded$\",encodeURIComponent(encodeURIComponent(this.to)));\n\t}\n\t// Override with the value of tv-get-export-link if defined\n\twikiLinkText = this.getVariable(\"tv-get-export-link\",{params: [{name: \"to\",value: this.to}],defaultValue: wikiLinkText});\n\tif(tag === \"a\") {\n\t\tvar namespaceHref = (namespace === \"http://www.w3.org/2000/svg\") ? \"http://www.w3.org/1999/xlink\" : undefined;\n\t\tdomNode.setAttributeNS(namespaceHref,\"href\",wikiLinkText);\n\t}\n\t// Set the tabindex\n\tif(this.tabIndex) {\n\t\tdomNode.setAttribute(\"tabindex\",this.tabIndex);\n\t}\n\t// Set the tooltip\n\t// HACK: Performance issues with re-parsing the tooltip prevent us defaulting the tooltip to \"<$transclude field='tooltip'><$transclude field='title'/></$transclude>\"\n\tvar tooltipWikiText = this.tooltip || this.getVariable(\"tv-wikilink-tooltip\");\n\tif(tooltipWikiText) {\n\t\tvar tooltipText = this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",tooltipWikiText,{\n\t\t\t\tparseAsInline: true,\n\t\t\t\tvariables: {\n\t\t\t\t\tcurrentTiddler: this.to\n\t\t\t\t},\n\t\t\t\tparentWidget: this\n\t\t\t});\n\t\tdomNode.setAttribute(\"title\",tooltipText);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"click\", handlerObject: this, handlerMethod: \"handleClickEvent\"},\n\t]);\n\t// Make the link draggable if required\n\tif(this.draggable === \"yes\") {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.to;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nLinkWidget.prototype.handleClickEvent = function(event) {\n\t// Send the click on its way as a navigate event\n\tvar bounds = this.domNodes[0].getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1),\n\t\tmetaKey: event.metaKey,\n\t\tctrlKey: event.ctrlKey,\n\t\taltKey: event.altKey,\n\t\tshiftKey: event.shiftKey,\n\t\tevent: event\n\t});\n\tif(this.domNodes[0].hasAttribute(\"href\")) {\n\t\tevent.preventDefault();\n\t}\n\tevent.stopPropagation();\n\treturn false;\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.to = this.getAttribute(\"to\",this.getVariable(\"currentTiddler\"));\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.linkClasses = this.getAttribute(\"class\");\n\tthis.overrideClasses = this.getAttribute(\"overrideClass\");\n\tthis.tabIndex = this.getAttribute(\"tabindex\");\n\tthis.draggable = this.getAttribute(\"draggable\",\"yes\");\n\tthis.linkTag = this.getAttribute(\"tag\",\"a\");\n\t// Determine the link characteristics\n\tthis.isMissing = !this.wiki.tiddlerExists(this.to);\n\tthis.isShadow = this.wiki.isShadowTiddler(this.to);\n\tthis.hideMissingLinks = (this.getVariable(\"tv-show-missing-links\") || \"yes\") === \"no\";\n\t// Make the child widgets\n\tvar templateTree;\n\tif(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\ttemplateTree = this.parseTreeNode.children;\n\t} else {\n\t\t// Default template is a link to the title\n\t\ttemplateTree = [{type: \"text\", text: this.to}];\n\t}\n\tthis.makeChildWidgets(templateTree);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedTiddlers[this.to] || changedAttributes[\"aria-label\"] || changedAttributes.tooltip) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.link = LinkWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/linkcatcher.js": {
"title": "$:/core/modules/widgets/linkcatcher.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/linkcatcher.js\ntype: application/javascript\nmodule-type: widget\n\nLinkcatcher widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LinkCatcherWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkCatcherWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkCatcherWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkCatcherWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.catchTo = this.getAttribute(\"to\");\n\tthis.catchMessage = this.getAttribute(\"message\");\n\tthis.catchSet = this.getAttribute(\"set\");\n\tthis.catchSetTo = this.getAttribute(\"setTo\");\n\tthis.catchActions = this.getAttribute(\"actions\");\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n\t// When executing actions we avoid trapping navigate events, so that we don't trigger ourselves recursively\n\tthis.executingActions = false;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkCatcherWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedAttributes.message || changedAttributes.set || changedAttributes.setTo) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\n/*\nHandle a tm-navigate event\n*/\nLinkCatcherWidget.prototype.handleNavigateEvent = function(event) {\n\tif(!this.executingActions) {\n\t\t// Execute the actions\n\t\tif(this.catchTo) {\n\t\t\tthis.wiki.setTextReference(this.catchTo,event.navigateTo,this.getVariable(\"currentTiddler\"));\n\t\t}\n\t\tif(this.catchMessage && this.parentWidget) {\n\t\t\tthis.parentWidget.dispatchEvent({\n\t\t\t\ttype: this.catchMessage,\n\t\t\t\tparam: event.navigateTo,\n\t\t\t\tnavigateTo: event.navigateTo\n\t\t\t});\n\t\t}\n\t\tif(this.catchSet) {\n\t\t\tvar tiddler = this.wiki.getTiddler(this.catchSet);\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,{title: this.catchSet, text: this.catchSetTo}));\n\t\t}\n\t\tif(this.catchActions) {\n\t\t\tthis.executingActions = true;\n\t\t\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\t\tthis.invokeActionString(this.catchActions,this,event,{navigateTo: event.navigateTo, modifier: modifierKey});\n\t\t\tthis.executingActions = false;\n\t\t}\n\t} else {\n\t\t// This is a navigate event generated by the actions of this linkcatcher, so we don't trap it again, but just pass it to the parent\n\t\tthis.parentWidget.dispatchEvent({\n\t\t\ttype: \"tm-navigate\",\n\t\t\tparam: event.navigateTo,\n\t\t\tnavigateTo: event.navigateTo\n\t\t});\n\t}\n\treturn false;\n};\n\nexports.linkcatcher = LinkCatcherWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/list.js": {
"title": "$:/core/modules/widgets/list.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/list.js\ntype: application/javascript\nmodule-type: widget\n\nList and list item widgets\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\n/*\nThe list widget creates list element sub-widgets that reach back into the list widget for their configuration\n*/\n\nvar ListWidget = function(parseTreeNode,options) {\n\t// Initialise the storyviews if they've not been done already\n\tif(!this.storyViews) {\n\t\tListWidget.prototype.storyViews = {};\n\t\t$tw.modules.applyMethods(\"storyview\",this.storyViews);\n\t}\n\t// Main initialisation inherited from widget.js\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\t// Construct the storyview\n\tvar StoryView = this.storyViews[this.storyViewName];\n\tif(this.storyViewName && !StoryView) {\n\t\tStoryView = this.storyViews[\"classic\"];\n\t}\n\tif(StoryView && !this.document.isTiddlyWikiFakeDom) {\n\t\tthis.storyview = new StoryView(this);\n\t} else {\n\t\tthis.storyview = null;\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nListWidget.prototype.execute = function() {\n\t// Get our attributes\n\tthis.template = this.getAttribute(\"template\");\n\tthis.editTemplate = this.getAttribute(\"editTemplate\");\n\tthis.variableName = this.getAttribute(\"variable\",\"currentTiddler\");\n\tthis.storyViewName = this.getAttribute(\"storyview\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\t// Compose the list elements\n\tthis.list = this.getTiddlerList();\n\tvar members = [],\n\t\tself = this;\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\tmembers = this.getEmptyMessage();\n\t} else {\n\t\t$tw.utils.each(this.list,function(title,index) {\n\t\t\tmembers.push(self.makeItemTemplate(title));\n\t\t});\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(members);\n\t// Clear the last history\n\tthis.history = [];\n};\n\nListWidget.prototype.getTiddlerList = function() {\n\tvar defaultFilter = \"[!is[system]sort[title]]\";\n\treturn this.wiki.filterTiddlers(this.getAttribute(\"filter\",defaultFilter),this);\n};\n\nListWidget.prototype.getEmptyMessage = function() {\n\tvar parser,\n\t\temptyMessage = this.getAttribute(\"emptyMessage\",\"\");\n\t// this.wiki.parseText() calls \n\t// new Parser(..), which should only be done, if needed, because it's heavy!\n\tif (emptyMessage === \"\") {\n\t\treturn [];\n\t}\n\tparser = this.wiki.parseText(\"text/vnd.tiddlywiki\",emptyMessage,{parseAsInline: true});\n\tif(parser) {\n\t\treturn parser.tree;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n/*\nCompose the template for a list item\n*/\nListWidget.prototype.makeItemTemplate = function(title) {\n\t// Check if the tiddler is a draft\n\tvar tiddler = this.wiki.getTiddler(title),\n\t\tisDraft = tiddler && tiddler.hasField(\"draft.of\"),\n\t\ttemplate = this.template,\n\t\ttemplateTree;\n\tif(isDraft && this.editTemplate) {\n\t\ttemplate = this.editTemplate;\n\t}\n\t// Compose the transclusion of the template\n\tif(template) {\n\t\ttemplateTree = [{type: \"transclude\", attributes: {tiddler: {type: \"string\", value: template}}}];\n\t} else {\n\t\tif(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\t\ttemplateTree = this.parseTreeNode.children;\n\t\t} else {\n\t\t\t// Default template is a link to the title\n\t\t\ttemplateTree = [{type: \"element\", tag: this.parseTreeNode.isBlock ? \"div\" : \"span\", children: [{type: \"link\", attributes: {to: {type: \"string\", value: title}}, children: [\n\t\t\t\t\t{type: \"text\", text: title}\n\t\t\t]}]}];\n\t\t}\n\t}\n\t// Return the list item\n\treturn {type: \"listitem\", itemTitle: title, variableName: this.variableName, children: templateTree};\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tresult;\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshStart) {\n\t\tthis.storyview.refreshStart(changedTiddlers,changedAttributes);\n\t}\n\t// Completely refresh if any of our attributes have changed\n\tif(changedAttributes.filter || changedAttributes.template || changedAttributes.editTemplate || changedAttributes.emptyMessage || changedAttributes.storyview || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\tresult = true;\n\t} else {\n\t\t// Handle any changes to the list\n\t\tresult = this.handleListChanges(changedTiddlers);\n\t\t// Handle any changes to the history stack\n\t\tif(this.historyTitle && changedTiddlers[this.historyTitle]) {\n\t\t\tthis.handleHistoryChanges();\n\t\t}\n\t}\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshEnd) {\n\t\tthis.storyview.refreshEnd(changedTiddlers,changedAttributes);\n\t}\n\treturn result;\n};\n\n/*\nHandle any changes to the history list\n*/\nListWidget.prototype.handleHistoryChanges = function() {\n\t// Get the history data\n\tvar newHistory = this.wiki.getTiddlerDataCached(this.historyTitle,[]);\n\t// Ignore any entries of the history that match the previous history\n\tvar entry = 0;\n\twhile(entry < newHistory.length && entry < this.history.length && newHistory[entry].title === this.history[entry].title) {\n\t\tentry++;\n\t}\n\t// Navigate forwards to each of the new tiddlers\n\twhile(entry < newHistory.length) {\n\t\tif(this.storyview && this.storyview.navigateTo) {\n\t\t\tthis.storyview.navigateTo(newHistory[entry]);\n\t\t}\n\t\tentry++;\n\t}\n\t// Update the history\n\tthis.history = newHistory;\n};\n\n/*\nProcess any changes to the list\n*/\nListWidget.prototype.handleListChanges = function(changedTiddlers) {\n\t// Get the new list\n\tvar prevList = this.list;\n\tthis.list = this.getTiddlerList();\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\t// Check if it was empty before\n\t\tif(prevList.length === 0) {\n\t\t\t// If so, just refresh the empty message\n\t\t\treturn this.refreshChildren(changedTiddlers);\n\t\t} else {\n\t\t\t// Replace the previous content with the empty message\n\t\t\tfor(t=this.children.length-1; t>=0; t--) {\n\t\t\t\tthis.removeListItem(t);\n\t\t\t}\n\t\t\tvar nextSibling = this.findNextSiblingDomNode();\n\t\t\tthis.makeChildWidgets(this.getEmptyMessage());\n\t\t\tthis.renderChildren(this.parentDomNode,nextSibling);\n\t\t\treturn true;\n\t\t}\n\t} else {\n\t\t// If the list was empty then we need to remove the empty message\n\t\tif(prevList.length === 0) {\n\t\t\tthis.removeChildDomNodes();\n\t\t\tthis.children = [];\n\t\t}\n\t\t// Cycle through the list, inserting and removing list items as needed\n\t\tvar hasRefreshed = false;\n\t\tfor(var t=0; t<this.list.length; t++) {\n\t\t\tvar index = this.findListItem(t,this.list[t]);\n\t\t\tif(index === undefined) {\n\t\t\t\t// The list item must be inserted\n\t\t\t\tthis.insertListItem(t,this.list[t]);\n\t\t\t\thasRefreshed = true;\n\t\t\t} else {\n\t\t\t\t// There are intervening list items that must be removed\n\t\t\t\tfor(var n=index-1; n>=t; n--) {\n\t\t\t\t\tthis.removeListItem(n);\n\t\t\t\t\thasRefreshed = true;\n\t\t\t\t}\n\t\t\t\t// Refresh the item we're reusing\n\t\t\t\tvar refreshed = this.children[t].refresh(changedTiddlers);\n\t\t\t\thasRefreshed = hasRefreshed || refreshed;\n\t\t\t}\n\t\t}\n\t\t// Remove any left over items\n\t\tfor(t=this.children.length-1; t>=this.list.length; t--) {\n\t\t\tthis.removeListItem(t);\n\t\t\thasRefreshed = true;\n\t\t}\n\t\treturn hasRefreshed;\n\t}\n};\n\n/*\nFind the list item with a given title, starting from a specified position\n*/\nListWidget.prototype.findListItem = function(startIndex,title) {\n\twhile(startIndex < this.children.length) {\n\t\tif(this.children[startIndex].parseTreeNode.itemTitle === title) {\n\t\t\treturn startIndex;\n\t\t}\n\t\tstartIndex++;\n\t}\n\treturn undefined;\n};\n\n/*\nInsert a new list item at the specified index\n*/\nListWidget.prototype.insertListItem = function(index,title) {\n\t// Create, insert and render the new child widgets\n\tvar widget = this.makeChildWidget(this.makeItemTemplate(title));\n\twidget.parentDomNode = this.parentDomNode; // Hack to enable findNextSiblingDomNode() to work\n\tthis.children.splice(index,0,widget);\n\tvar nextSibling = widget.findNextSiblingDomNode();\n\twidget.render(this.parentDomNode,nextSibling);\n\t// Animate the insertion if required\n\tif(this.storyview && this.storyview.insert) {\n\t\tthis.storyview.insert(widget);\n\t}\n\treturn true;\n};\n\n/*\nRemove the specified list item\n*/\nListWidget.prototype.removeListItem = function(index) {\n\tvar widget = this.children[index];\n\t// Animate the removal if required\n\tif(this.storyview && this.storyview.remove) {\n\t\tthis.storyview.remove(widget);\n\t} else {\n\t\twidget.removeChildDomNodes();\n\t}\n\t// Remove the child widget\n\tthis.children.splice(index,1);\n};\n\nexports.list = ListWidget;\n\nvar ListItemWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListItemWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListItemWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nListItemWidget.prototype.execute = function() {\n\t// Set the current list item title\n\tthis.setVariable(this.parseTreeNode.variableName,this.parseTreeNode.itemTitle);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListItemWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.listitem = ListItemWidget;\n\n})();",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/log.js": {
"title": "$:/core/modules/widgets/log.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/log.js\ntype: application/javascript\nmodule-type: widget-subclass\n\nWidget to log debug messages\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.baseClass = \"action-log\";\n\nexports.name = \"log\";\n\nexports.constructor = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n}\n\nexports.prototype = {};\n\nexports.prototype.render = function(event) {\n\tObject.getPrototypeOf(Object.getPrototypeOf(this)).render.call(this,event);\t\n\tObject.getPrototypeOf(Object.getPrototypeOf(this)).log.call(this);\n}\n\n})();",
"type": "application/javascript",
"module-type": "widget-subclass"
},
"$:/core/modules/widgets/macrocall.js": {
"title": "$:/core/modules/widgets/macrocall.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/macrocall.js\ntype: application/javascript\nmodule-type: widget\n\nMacrocall widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar MacroCallWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nMacroCallWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nMacroCallWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nMacroCallWidget.prototype.execute = function() {\n\t// Get the parse type if specified\n\tthis.parseType = this.getAttribute(\"$type\",\"text/vnd.tiddlywiki\");\n\tthis.renderOutput = this.getAttribute(\"$output\",\"text/html\");\n\t// Merge together the parameters specified in the parse tree with the specified attributes\n\tvar params = this.parseTreeNode.params ? this.parseTreeNode.params.slice(0) : [];\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparams.push({name: name, value: attribute});\t\t\t\n\t\t}\n\t});\n\t// Get the macro value\n\tvar macroName = this.parseTreeNode.name || this.getAttribute(\"$name\"),\n\t\tvariableInfo = this.getVariableInfo(macroName,{params: params}),\n\t\ttext = variableInfo.text,\n\t\tparseTreeNodes;\n\t// Are we rendering to HTML?\n\tif(this.renderOutput === \"text/html\") {\n\t\t// If so we'll return the parsed macro\n\t\t// Check if we've already cached parsing this macro\n\t\tvar mode = this.parseTreeNode.isBlock ? \"blockParser\" : \"inlineParser\",\n\t\t\tparser;\n\t\tif(variableInfo.srcVariable && variableInfo.srcVariable[mode]) {\n\t\t\tparser = variableInfo.srcVariable[mode];\n\t\t} else {\n\t\t\tparser = this.wiki.parseText(this.parseType,text,\n\t\t\t\t\t\t\t\t{parseAsInline: !this.parseTreeNode.isBlock});\n\t\t\tif(variableInfo.isCacheable && variableInfo.srcVariable) {\n\t\t\t\tvariableInfo.srcVariable[mode] = parser;\n\t\t\t}\n\t\t}\n\t\tvar parseTreeNodes = parser ? parser.tree : [];\n\t\t// Wrap the parse tree in a vars widget assigning the parameters to variables named \"__paramname__\"\n\t\tvar attributes = {};\n\t\t$tw.utils.each(variableInfo.params,function(param) {\n\t\t\tvar name = \"__\" + param.name + \"__\";\n\t\t\tattributes[name] = {\n\t\t\t\tname: name,\n\t\t\t\ttype: \"string\",\n\t\t\t\tvalue: param.value\n\t\t\t};\n\t\t});\n\t\tparseTreeNodes = [{\n\t\t\ttype: \"vars\",\n\t\t\tattributes: attributes,\n\t\t\tchildren: parseTreeNodes\n\t\t}];\n\t} else if(this.renderOutput === \"text/raw\") {\n\t\tparseTreeNodes = [{type: \"text\", text: text}];\n\t} else {\n\t\t// Otherwise, we'll render the text\n\t\tvar plainText = this.wiki.renderText(\"text/plain\",this.parseType,text,{parentWidget: this});\n\t\tparseTreeNodes = [{type: \"text\", text: plainText}];\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nMacroCallWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\t// Rerender ourselves\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.macrocall = MacroCallWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/navigator.js": {
"title": "$:/core/modules/widgets/navigator.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/navigator.js\ntype: application/javascript\nmodule-type: widget\n\nNavigator widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar IMPORT_TITLE = \"$:/Import\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigatorWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"},\n\t\t{type: \"tm-edit-tiddler\", handler: \"handleEditTiddlerEvent\"},\n\t\t{type: \"tm-delete-tiddler\", handler: \"handleDeleteTiddlerEvent\"},\n\t\t{type: \"tm-save-tiddler\", handler: \"handleSaveTiddlerEvent\"},\n\t\t{type: \"tm-cancel-tiddler\", handler: \"handleCancelTiddlerEvent\"},\n\t\t{type: \"tm-close-tiddler\", handler: \"handleCloseTiddlerEvent\"},\n\t\t{type: \"tm-close-all-tiddlers\", handler: \"handleCloseAllTiddlersEvent\"},\n\t\t{type: \"tm-close-other-tiddlers\", handler: \"handleCloseOtherTiddlersEvent\"},\n\t\t{type: \"tm-new-tiddler\", handler: \"handleNewTiddlerEvent\"},\n\t\t{type: \"tm-import-tiddlers\", handler: \"handleImportTiddlersEvent\"},\n\t\t{type: \"tm-perform-import\", handler: \"handlePerformImportEvent\"},\n\t\t{type: \"tm-fold-tiddler\", handler: \"handleFoldTiddlerEvent\"},\n\t\t{type: \"tm-fold-other-tiddlers\", handler: \"handleFoldOtherTiddlersEvent\"},\n\t\t{type: \"tm-fold-all-tiddlers\", handler: \"handleFoldAllTiddlersEvent\"},\n\t\t{type: \"tm-unfold-all-tiddlers\", handler: \"handleUnfoldAllTiddlersEvent\"},\n\t\t{type: \"tm-rename-tiddler\", handler: \"handleRenameTiddlerEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigatorWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigatorWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigatorWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.storyTitle = this.getAttribute(\"story\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\tthis.setVariable(\"tv-story-list\",this.storyTitle);\n\tthis.setVariable(\"tv-history-list\",this.historyTitle);\n\tthis.story = new $tw.Story({\n\t\twiki: this.wiki,\n\t\tstoryTitle: this.storyTitle,\n\t\thistoryTitle: this.historyTitle\n\t});\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nNavigatorWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.story || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nNavigatorWidget.prototype.getStoryList = function() {\n\treturn this.storyTitle ? this.wiki.getTiddlerList(this.storyTitle) : null;\n};\n\nNavigatorWidget.prototype.saveStoryList = function(storyList) {\n\tif(this.storyTitle) {\n\t\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\t\t{title: this.storyTitle},\n\t\t\tstoryTiddler,\n\t\t\t{list: storyList}\n\t\t));\t\t\n\t}\n};\n\nNavigatorWidget.prototype.removeTitleFromStory = function(storyList,title) {\n\tif(storyList) {\n\t\tvar p = storyList.indexOf(title);\n\t\twhile(p !== -1) {\n\t\t\tstoryList.splice(p,1);\n\t\t\tp = storyList.indexOf(title);\n\t\t}\t\t\n\t}\n};\n\nNavigatorWidget.prototype.replaceFirstTitleInStory = function(storyList,oldTitle,newTitle) {\n\tif(storyList) {\n\t\tvar pos = storyList.indexOf(oldTitle);\n\t\tif(pos !== -1) {\n\t\t\tstoryList[pos] = newTitle;\n\t\t\tdo {\n\t\t\t\tpos = storyList.indexOf(oldTitle,pos + 1);\n\t\t\t\tif(pos !== -1) {\n\t\t\t\t\tstoryList.splice(pos,1);\n\t\t\t\t}\n\t\t\t} while(pos !== -1);\n\t\t} else {\n\t\t\tstoryList.splice(0,0,newTitle);\n\t\t}\t\t\n\t}\n};\n\nNavigatorWidget.prototype.addToStory = function(title,fromTitle) {\n\tif(this.storyTitle) {\n\t\tthis.story.addToStory(title,fromTitle,{\n\t\t\topenLinkFromInsideRiver: this.getAttribute(\"openLinkFromInsideRiver\",\"top\"),\n\t\t\topenLinkFromOutsideRiver: this.getAttribute(\"openLinkFromOutsideRiver\",\"top\")\n\t\t});\n\t}\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\n*/\nNavigatorWidget.prototype.addToHistory = function(title,fromPageRect) {\n\tthis.story.addToHistory(title,fromPageRect,this.historyTitle);\n};\n\n/*\nHandle a tm-navigate event\n*/\nNavigatorWidget.prototype.handleNavigateEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-navigating\",event);\n\tif(event.navigateTo) {\n\t\tthis.addToStory(event.navigateTo,event.navigateFromTitle);\n\t\tif(!event.navigateSuppressNavigation) {\n\t\t\tthis.addToHistory(event.navigateTo,event.navigateFromClientRect);\n\t\t}\n\t}\n\treturn false;\n};\n\n// Close a specified tiddler\nNavigatorWidget.prototype.handleCloseTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\tstoryList = this.getStoryList();\n\t// Look for tiddlers with this title to close\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\treturn false;\n};\n\n// Close all tiddlers\nNavigatorWidget.prototype.handleCloseAllTiddlersEvent = function(event) {\n\tthis.saveStoryList([]);\n\treturn false;\n};\n\n// Close other tiddlers\nNavigatorWidget.prototype.handleCloseOtherTiddlersEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle;\n\tthis.saveStoryList([title]);\n\treturn false;\n};\n\n// Place a tiddler in edit mode\nNavigatorWidget.prototype.handleEditTiddlerEvent = function(event) {\n\tvar editTiddler = $tw.hooks.invokeHook(\"th-editing-tiddler\",event);\n\tif(!editTiddler) {\n\t\treturn false;\n\t}\n\tvar self = this;\n\tfunction isUnmodifiedShadow(title) {\n\t\treturn self.wiki.isShadowTiddler(title) && !self.wiki.tiddlerExists(title);\n\t}\n\tfunction confirmEditShadow(title) {\n\t\treturn confirm($tw.language.getString(\n\t\t\t\"ConfirmEditShadowTiddler\",\n\t\t\t{variables:\n\t\t\t\t{title: title}\n\t\t\t}\n\t\t));\n\t}\n\tvar title = event.param || event.tiddlerTitle;\n\tif(isUnmodifiedShadow(title) && !confirmEditShadow(title)) {\n\t\treturn false;\n\t}\n\t// Replace the specified tiddler with a draft in edit mode\n\tvar draftTiddler = this.makeDraftTiddler(title);\n\t// Update the story and history if required\n\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\tvar draftTitle = draftTiddler.fields.title,\n\t\t\tstoryList = this.getStoryList();\n\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\tthis.saveStoryList(storyList);\n\t\treturn false;\n\t}\n};\n\n// Delete a tiddler\nNavigatorWidget.prototype.handleDeleteTiddlerEvent = function(event) {\n\t// Get the tiddler we're deleting\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList(),\n\t\toriginalTitle = tiddler ? tiddler.fields[\"draft.of\"] : \"\",\n\t\toriginalTiddler = originalTitle ? this.wiki.getTiddler(originalTitle) : undefined,\n\t\tconfirmationTitle;\n\tif(!tiddler) {\n\t\treturn false;\n\t}\n\t// Check if the tiddler we're deleting is in draft mode\n\tif(originalTitle) {\n\t\t// If so, we'll prompt for confirmation referencing the original tiddler\n\t\tconfirmationTitle = originalTitle;\n\t} else {\n\t\t// If not a draft, then prompt for confirmation referencing the specified tiddler\n\t\tconfirmationTitle = title;\n\t}\n\t// Seek confirmation\n\tif((this.wiki.getTiddler(originalTitle) || (tiddler.fields.text || \"\") !== \"\") && !confirm($tw.language.getString(\n\t\t\t\t\"ConfirmDeleteTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: confirmationTitle}\n\t\t\t\t}\n\t\t\t))) {\n\t\treturn false;\n\t}\n\t// Delete the original tiddler\n\tif(originalTitle) {\n\t\tif(originalTiddler) {\n\t\t\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",originalTiddler);\n\t\t}\n\t\tthis.wiki.deleteTiddler(originalTitle);\n\t\tthis.removeTitleFromStory(storyList,originalTitle);\n\t}\n\t// Invoke the hook function and delete this tiddler\n\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",tiddler);\n\tthis.wiki.deleteTiddler(title);\n\t// Remove the closed tiddler from the story\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\treturn false;\n};\n\n/*\nCreate/reuse the draft tiddler for a given title\n*/\nNavigatorWidget.prototype.makeDraftTiddler = function(targetTitle) {\n\t// See if there is already a draft tiddler for this tiddler\n\tvar draftTitle = this.wiki.findDraft(targetTitle);\n\tif(draftTitle) {\n\t\treturn this.wiki.getTiddler(draftTitle);\n\t}\n\t// Get the current value of the tiddler we're editing\n\tvar tiddler = this.wiki.getTiddler(targetTitle);\n\t// Save the initial value of the draft tiddler\n\tdraftTitle = this.generateDraftTitle(targetTitle);\n\tvar draftTiddler = new $tw.Tiddler({\n\t\t\t\ttext: \"\",\n\t\t\t},\n\t\t\ttiddler,\n\t\t\t{\n\t\t\t\ttitle: draftTitle,\n\t\t\t\t\"draft.title\": targetTitle,\n\t\t\t\t\"draft.of\": targetTitle\n\t\t\t},\n\t\t\tthis.wiki.getModificationFields()\n\t\t);\n\tthis.wiki.addTiddler(draftTiddler);\n\treturn draftTiddler;\n};\n\n/*\nGenerate a title for the draft of a given tiddler\n*/\nNavigatorWidget.prototype.generateDraftTitle = function(title) {\n\treturn this.wiki.generateDraftTitle(title);\n};\n\n// Take a tiddler out of edit mode, saving the changes\nNavigatorWidget.prototype.handleSaveTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList();\n\t// Replace the original tiddler with the draft\n\tif(tiddler) {\n\t\tvar draftTitle = (tiddler.fields[\"draft.title\"] || \"\").trim(),\n\t\t\tdraftOf = (tiddler.fields[\"draft.of\"] || \"\").trim();\n\t\tif(draftTitle) {\n\t\t\tvar isRename = draftOf !== draftTitle,\n\t\t\t\tisConfirmed = true;\n\t\t\tif(isRename && this.wiki.tiddlerExists(draftTitle)) {\n\t\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\t\"ConfirmOverwriteTiddler\",\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{title: draftTitle}\n\t\t\t\t\t}\n\t\t\t\t));\n\t\t\t}\n\t\t\tif(isConfirmed) {\n\t\t\t\t// Create the new tiddler and pass it through the th-saving-tiddler hook\n\t\t\t\tvar newTiddler = new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\ttitle: draftTitle,\n\t\t\t\t\t\"draft.title\": undefined,\n\t\t\t\t\t\"draft.of\": undefined\n\t\t\t\t},this.wiki.getModificationFields());\n\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-saving-tiddler\",newTiddler,tiddler);\n\t\t\t\tthis.wiki.addTiddler(newTiddler);\n\t\t\t\t// If enabled, relink references to renamed tiddler\n\t\t\t\tvar shouldRelink = this.getAttribute(\"relinkOnRename\",\"no\").toLowerCase().trim() === \"yes\";\n\t\t\t\tif(isRename && shouldRelink && this.wiki.tiddlerExists(draftOf)) {\n\t\t\t\t\tthis.wiki.relinkTiddler(draftOf,draftTitle);\n\t\t\t\t}\n\t\t\t\t// Remove the draft tiddler\n\t\t\t\tthis.wiki.deleteTiddler(title);\n\t\t\t\t// Remove the original tiddler if we're renaming it\n\t\t\t\tif(isRename) {\n\t\t\t\t\tthis.wiki.deleteTiddler(draftOf);\n\t\t\t\t}\n\t\t\t\t// #2381 always remove new title & old\n\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\tthis.removeTitleFromStory(storyList,draftOf);\n\t\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\t\t// Replace the draft in the story with the original\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\t\t\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\t\t\t\tif(draftTitle !== this.storyTitle) {\n\t\t\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Trigger an autosave\n\t\t\t\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Take a tiddler out of edit mode without saving the changes\nNavigatorWidget.prototype.handleCancelTiddlerEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-cancelling-tiddler\", event);\n\t// Flip the specified tiddler from draft back to the original\n\tvar draftTitle = event.param || event.tiddlerTitle,\n\t\tdraftTiddler = this.wiki.getTiddler(draftTitle),\n\t\toriginalTitle = draftTiddler && draftTiddler.fields[\"draft.of\"];\n\tif(draftTiddler && originalTitle) {\n\t\t// Ask for confirmation if the tiddler text has changed\n\t\tvar isConfirmed = true,\n\t\t\toriginalTiddler = this.wiki.getTiddler(originalTitle),\n\t\t\tstoryList = this.getStoryList();\n\t\tif(this.wiki.isDraftModified(draftTitle)) {\n\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\"ConfirmCancelTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: draftTitle}\n\t\t\t\t}\n\t\t\t));\n\t\t}\n\t\t// Remove the draft tiddler\n\t\tif(isConfirmed) {\n\t\t\tthis.wiki.deleteTiddler(draftTitle);\n\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\tif(originalTiddler) {\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,draftTitle,originalTitle);\n\t\t\t\t\tthis.addToHistory(originalTitle,event.navigateFromClientRect);\n\t\t\t\t} else {\n\t\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\t}\n\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Create a new draft tiddler\n// event.param can either be the title of a template tiddler, or a hashmap of fields.\n//\n// The title of the newly created tiddler follows these rules:\n// * If a hashmap was used and a title field was specified, use that title\n// * If a hashmap was used without a title field, use a default title, if necessary making it unique with a numeric suffix\n// * If a template tiddler was used, use the title of the template, if necessary making it unique with a numeric suffix\n//\n// If a draft of the target tiddler already exists then it is reused\nNavigatorWidget.prototype.handleNewTiddlerEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-new-tiddler\", event);\n\t// Get the story details\n\tvar storyList = this.getStoryList(),\n\t\ttemplateTiddler, additionalFields, title, draftTitle, existingTiddler;\n\t// Get the template tiddler (if any)\n\tif(typeof event.param === \"string\") {\n\t\t// Get the template tiddler\n\t\ttemplateTiddler = this.wiki.getTiddler(event.param);\n\t\t// Generate a new title\n\t\ttitle = this.wiki.generateNewTitle(event.param || $tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t}\n\t// Get the specified additional fields\n\tif(typeof event.paramObject === \"object\") {\n\t\tadditionalFields = event.paramObject;\n\t}\n\tif(typeof event.param === \"object\") { // Backwards compatibility with 5.1.3\n\t\tadditionalFields = event.param;\n\t}\n\tif(additionalFields && additionalFields.title) {\n\t\ttitle = additionalFields.title;\n\t}\n\t// Make a copy of the additional fields excluding any blank ones\n\tvar filteredAdditionalFields = $tw.utils.extend({},additionalFields);\n\tObject.keys(filteredAdditionalFields).forEach(function(fieldName) {\n\t\tif(filteredAdditionalFields[fieldName] === \"\") {\n\t\t\tdelete filteredAdditionalFields[fieldName];\n\t\t}\n\t});\n\t// Generate a title if we don't have one\n\ttitle = title || this.wiki.generateNewTitle($tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t// Find any existing draft for this tiddler\n\tdraftTitle = this.wiki.findDraft(title);\n\t// Pull in any existing tiddler\n\tif(draftTitle) {\n\t\texistingTiddler = this.wiki.getTiddler(draftTitle);\n\t} else {\n\t\tdraftTitle = this.generateDraftTitle(title);\n\t\texistingTiddler = this.wiki.getTiddler(title);\n\t}\n\t// Merge the tags\n\tvar mergedTags = [];\n\tif(existingTiddler && existingTiddler.fields.tags) {\n\t\t$tw.utils.pushTop(mergedTags,existingTiddler.fields.tags);\n\t}\n\tif(additionalFields && additionalFields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,$tw.utils.parseStringArray(additionalFields.tags));\n\t}\n\tif(templateTiddler && templateTiddler.fields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,templateTiddler.fields.tags);\n\t}\n\t// Save the draft tiddler\n\tvar draftTiddler = new $tw.Tiddler({\n\t\t\ttext: \"\",\n\t\t\t\"draft.title\": title\n\t\t},\n\t\ttemplateTiddler,\n\t\tadditionalFields,\n\t\tthis.wiki.getCreationFields(),\n\t\texistingTiddler,\n\t\tfilteredAdditionalFields,\n\t\t{\n\t\t\ttitle: draftTitle,\n\t\t\t\"draft.of\": title,\n\t\t\ttags: mergedTags\n\t\t},this.wiki.getModificationFields());\n\tthis.wiki.addTiddler(draftTiddler);\n\t// Update the story to insert the new draft at the top and remove any existing tiddler\n\tif(storyList && storyList.indexOf(draftTitle) === -1) {\n\t\tvar slot = storyList.indexOf(event.navigateFromTitle);\n\t\tif(slot === -1) {\n\t\t\tslot = this.getAttribute(\"openLinkFromOutsideRiver\",\"top\") === \"bottom\" ? storyList.length - 1 : slot;\n\t\t}\n\t\tstoryList.splice(slot + 1,0,draftTitle);\n\t}\n\tif(storyList && storyList.indexOf(title) !== -1) {\n\t\tstoryList.splice(storyList.indexOf(title),1);\n\t}\n\tthis.saveStoryList(storyList);\n\t// Add a new record to the top of the history stack\n\tthis.addToHistory(draftTitle);\n\treturn false;\n};\n\n// Import JSON tiddlers into a pending import tiddler\nNavigatorWidget.prototype.handleImportTiddlersEvent = function(event) {\n\t// Get the tiddlers\n\tvar tiddlers = [];\n\ttry {\n\t\ttiddlers = JSON.parse(event.param);\n\t} catch(e) {\n\t}\n\t// Get the current $:/Import tiddler\n\tvar importTitle = event.importTitle ? event.importTitle : IMPORT_TITLE,\n\t\timportTiddler = this.wiki.getTiddler(importTitle),\n\t\timportData = this.wiki.getTiddlerData(importTitle,{}),\n\t\tnewFields = new Object({\n\t\t\ttitle: importTitle,\n\t\t\ttype: \"application/json\",\n\t\t\t\"plugin-type\": \"import\",\n\t\t\t\"status\": \"pending\"\n\t\t}),\n\t\tincomingTiddlers = [];\n\t// Process each tiddler\n\timportData.tiddlers = importData.tiddlers || {};\n\t$tw.utils.each(tiddlers,function(tiddlerFields) {\n\t\ttiddlerFields.title = $tw.utils.trim(tiddlerFields.title);\n\t\tvar title = tiddlerFields.title;\n\t\tif(title) {\n\t\t\tincomingTiddlers.push(title);\n\t\t\timportData.tiddlers[title] = tiddlerFields;\n\t\t}\n\t});\n\t// Give the active upgrader modules a chance to process the incoming tiddlers\n\tvar messages = this.wiki.invokeUpgraders(incomingTiddlers,importData.tiddlers);\n\t$tw.utils.each(messages,function(message,title) {\n\t\tnewFields[\"message-\" + title] = message;\n\t});\n\t// Deselect any suppressed tiddlers\n\t$tw.utils.each(importData.tiddlers,function(tiddler,title) {\n\t\tif($tw.utils.count(tiddler) === 0) {\n\t\t\tnewFields[\"selection-\" + title] = \"unchecked\";\n\t\t\tnewFields[\"suppressed-\" + title] = \"yes\";\n\t\t}\n\t});\n\t// Save the $:/Import tiddler\n\tnewFields.text = JSON.stringify(importData,null,$tw.config.preferences.jsonSpaces);\n\tthis.wiki.addTiddler(new $tw.Tiddler(importTiddler,newFields));\n\t// Update the story and history details\n\tvar autoOpenOnImport = event.autoOpenOnImport ? event.autoOpenOnImport : this.getVariable(\"tv-auto-open-on-import\"); \n\tif(autoOpenOnImport !== \"no\") {\n\t\tvar storyList = this.getStoryList(),\n\t\t\thistory = [];\n\t\t// Add it to the story\n\t\tif(storyList && storyList.indexOf(importTitle) === -1) {\n\t\t\tstoryList.unshift(importTitle);\n\t\t}\n\t\t// And to history\n\t\thistory.push(importTitle);\n\t\t// Save the updated story and history\n\t\tthis.saveStoryList(storyList);\n\t\tthis.addToHistory(history);\n\t}\n\treturn false;\n};\n\n//\nNavigatorWidget.prototype.handlePerformImportEvent = function(event) {\n\tvar self = this,\n\t\timportTiddler = this.wiki.getTiddler(event.param),\n\t\timportData = this.wiki.getTiddlerDataCached(event.param,{tiddlers: {}}),\n\t\timportReport = [];\n\t// Add the tiddlers to the store\n\timportReport.push($tw.language.getString(\"Import/Imported/Hint\") + \"\\n\");\n\t$tw.utils.each(importData.tiddlers,function(tiddlerFields) {\n\t\tvar title = tiddlerFields.title;\n\t\tif(title && importTiddler && importTiddler.fields[\"selection-\" + title] !== \"unchecked\") {\n\t\t\tif($tw.utils.hop(importTiddler.fields,[\"rename-\" + title])) {\n\t\t\t\tvar tiddler = new $tw.Tiddler(tiddlerFields,{title : importTiddler.fields[\"rename-\" + title]});\n\t\t\t} else {\n\t\t\t\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\t\t\t}\n\t\t\ttiddler = $tw.hooks.invokeHook(\"th-importing-tiddler\",tiddler);\n\t\t\tself.wiki.addTiddler(tiddler);\n\t\t\timportReport.push(\"# [[\" + tiddler.fields.title + \"]]\");\n\t\t}\n\t});\n\t// Replace the $:/Import tiddler with an import report\n\tthis.wiki.addTiddler(new $tw.Tiddler({\n\t\ttitle: event.param,\n\t\ttext: importReport.join(\"\\n\"),\n\t\t\"status\": \"complete\"\n\t}));\n\t// Navigate to the $:/Import tiddler\n\tthis.addToHistory([event.param]);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n};\n\nNavigatorWidget.prototype.handleFoldTiddlerEvent = function(event) {\n\tvar paramObject = event.paramObject || {};\n\tif(paramObject.foldedState) {\n\t\tvar foldedState = this.wiki.getTiddlerText(paramObject.foldedState,\"show\") === \"show\" ? \"hide\" : \"show\";\n\t\tthis.wiki.setText(paramObject.foldedState,\"text\",null,foldedState);\n\t}\n};\n\nNavigatorWidget.prototype.handleFoldOtherTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,event.param === title ? \"show\" : \"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleFoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix || \"$:/state/folded/\";\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleUnfoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"show\");\n\t});\n};\n\nNavigatorWidget.prototype.handleRenameTiddlerEvent = function(event) {\n\tvar options = {},\n\t\tparamObject = event.paramObject || {},\n\t\tfrom = paramObject.from || event.tiddlerTitle,\n\t\tto = paramObject.to;\n\toptions.dontRenameInTags = (paramObject.renameInTags === \"false\" || paramObject.renameInTags === \"no\") ? true : false;\n\toptions.dontRenameInLists = (paramObject.renameInLists === \"false\" || paramObject.renameInLists === \"no\") ? true : false;\n\tthis.wiki.renameTiddler(from,to,options);\n};\n\nexports.navigator = NavigatorWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/password.js": {
"title": "$:/core/modules/widgets/password.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/password.js\ntype: application/javascript\nmodule-type: widget\n\nPassword widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar PasswordWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nPasswordWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nPasswordWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the current password\n\tvar password = $tw.browser ? $tw.utils.getPassword(this.passwordName) || \"\" : \"\";\n\t// Create our element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"password\");\n\tdomNode.setAttribute(\"value\",password);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nPasswordWidget.prototype.handleChangeEvent = function(event) {\n\tvar password = this.domNodes[0].value;\n\treturn $tw.utils.savePassword(this.passwordName,password);\n};\n\n/*\nCompute the internal state of the widget\n*/\nPasswordWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.passwordName = this.getAttribute(\"name\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nPasswordWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.password = PasswordWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/qualify.js": {
"title": "$:/core/modules/widgets/qualify.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/qualify.js\ntype: application/javascript\nmodule-type: widget\n\nQualify text to a variable \n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar QualifyWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nQualifyWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nQualifyWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nQualifyWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.qualifyName = this.getAttribute(\"name\");\n\tthis.qualifyTitle = this.getAttribute(\"title\");\n\t// Set context variable\n\tif(this.qualifyName) {\n\t\tthis.setVariable(this.qualifyName,this.qualifyTitle + \"-\" + this.getStateQualifier());\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nQualifyWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name || changedAttributes.title) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.qualify = QualifyWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/radio.js": {
"title": "$:/core/modules/widgets/radio.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/radio.js\ntype: application/javascript\nmodule-type: widget\n\nSet a field or index at a given tiddler via radio buttons\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar RadioWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRadioWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRadioWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\tvar isChecked = this.getValue() === this.radioValue;\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",\n\t\t\"tc-radio \" + this.radioClass + (isChecked ? \" tc-radio-selected\" : \"\")\n\t);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"radio\");\n\tif(isChecked) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tif(this.isDisabled === \"yes\") {\n\t\tthis.inputDomNode.setAttribute(\"disabled\",true);\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nRadioWidget.prototype.getValue = function() {\n\tvar value,\n\t\ttiddler = this.wiki.getTiddler(this.radioTitle);\n\tif (this.radioIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.radioTitle,this.radioIndex);\n\t} else {\n\t\tvalue = tiddler && tiddler.getFieldString(this.radioField);\n\t}\n\treturn value;\n};\n\nRadioWidget.prototype.setValue = function() {\n\tif(this.radioIndex) {\n\t\tthis.wiki.setText(this.radioTitle,\"\",this.radioIndex,this.radioValue);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.radioTitle),\n\t\t\taddition = {};\n\t\taddition[this.radioField] = this.radioValue;\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),{title: this.radioTitle},tiddler,addition,this.wiki.getModificationFields()));\n\t}\n};\n\nRadioWidget.prototype.handleChangeEvent = function(event) {\n\tif(this.inputDomNode.checked) {\n\t\tthis.setValue();\n\t}\n\t// Trigger actions\n\tif(this.radioActions) {\n\t\tthis.invokeActionString(this.radioActions,this,event,{\"actionValue\": this.radioValue});\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRadioWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.radioTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.radioField = this.getAttribute(\"field\",\"text\");\n\tthis.radioIndex = this.getAttribute(\"index\");\n\tthis.radioValue = this.getAttribute(\"value\");\n\tthis.radioClass = this.getAttribute(\"class\",\"\");\n\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\tthis.radioActions = this.getAttribute(\"actions\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRadioWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(($tw.utils.count(changedAttributes) > 0) || changedTiddlers[this.radioTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.radio = RadioWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/range.js": {
"title": "$:/core/modules/widgets/range.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/range.js\ntype: application/javascript\nmodule-type: widget\n\nRange widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RangeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRangeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRangeWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"range\");\n\tthis.inputDomNode.setAttribute(\"class\",this.elementClass);\n\tif(this.minValue){\n\t\tthis.inputDomNode.setAttribute(\"min\", this.minValue);\n\t}\n\tif(this.maxValue){\n\t\tthis.inputDomNode.setAttribute(\"max\", this.maxValue);\n\t}\n\tif(this.increment){\n\t\tthis.inputDomNode.setAttribute(\"step\", this.increment);\n\t}\n\tif(this.isDisabled === \"yes\") {\n\t\tthis.inputDomNode.setAttribute(\"disabled\",true);\n\t}\n\tthis.inputDomNode.value = this.getValue();\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name:\"mousedown\", handlerObject:this, handlerMethod:\"handleMouseDownEvent\"},\n\t\t{name:\"mouseup\", handlerObject:this, handlerMethod:\"handleMouseUpEvent\"},\n\t\t{name:\"change\", handlerObject:this, handlerMethod:\"handleChangeEvent\"},\n\t\t{name:\"input\", handlerObject:this, handlerMethod:\"handleInputEvent\"},\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.inputDomNode,nextSibling);\n\tthis.domNodes.push(this.inputDomNode);\n};\n\nRangeWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle),\n\t\tfieldName = this.tiddlerField,\n\t\tvalue = this.defaultValue;\n\tif(tiddler) {\n\t\tif(this.tiddlerIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(tiddler,this.tiddlerIndex,this.defaultValue);\n\t\t} else {\n\t\t\tif($tw.utils.hop(tiddler.fields,fieldName)) {\n\t\t\t\tvalue = tiddler.fields[fieldName] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = this.defaultValue;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\nRangeWidget.prototype.getActionVariables = function(options) {\n\toptions = options || {};\n\tvar hasChanged = (this.startValue !== this.inputDomNode.value) ? \"yes\" : \"no\";\n\t// Trigger actions. Use variables = {key:value, key:value ...}\n\t// the \"value\" is needed.\n\treturn $tw.utils.extend({\"actionValue\": this.inputDomNode.value, \"actionValueHasChanged\": hasChanged}, options);\n}\n\n// actionsStart\nRangeWidget.prototype.handleMouseDownEvent = function(event) {\n\tthis.mouseDown = true; // TODO remove once IE is gone.\n\tthis.startValue = this.inputDomNode.value; // TODO remove this line once IE is gone!\n\tthis.handleEvent(event);\n\t// Trigger actions\n\tif(this.actionsMouseDown) {\n\t\tvar variables = this.getActionVariables() // TODO this line will go into the function call below.\n\t\tthis.invokeActionString(this.actionsMouseDown,this,event,variables);\n\t}\n}\n\n// actionsStop\nRangeWidget.prototype.handleMouseUpEvent = function(event) {\n\tthis.mouseDown = false; // TODO remove once IE is gone.\n\tthis.handleEvent(event);\n\t// Trigger actions\n\tif(this.actionsMouseUp) {\n\t\tvar variables = this.getActionVariables()\n\t\tthis.invokeActionString(this.actionsMouseUp,this,event,variables);\n\t}\n\t// TODO remove the following if() once IE is gone!\n\tif ($tw.browser.isIE) {\n\t\tif (this.startValue !== this.inputDomNode.value) {\n\t\t\tthis.handleChangeEvent(event);\n\t\t\tthis.startValue = this.inputDomNode.value;\n\t\t}\n\t}\n}\n\nRangeWidget.prototype.handleChangeEvent = function(event) {\n\tif (this.mouseDown) { // TODO refactor this function once IE is gone.\n\t\tthis.handleInputEvent(event);\n\t}\n};\n\nRangeWidget.prototype.handleInputEvent = function(event) {\n\tthis.handleEvent(event);\n\t// Trigger actions\n\tif(this.actionsInput) {\n\t\t// \"tiddler\" parameter may be missing. See .execute() below\n\t\tvar variables = this.getActionVariables({\"actionValueHasChanged\": \"yes\"}) // TODO this line will go into the function call below.\n\t\tthis.invokeActionString(this.actionsInput,this,event,variables);\n\t}\n};\n\nRangeWidget.prototype.handleEvent = function(event) {\n\tif(this.getValue() !== this.inputDomNode.value) {\n\t\tif(this.tiddlerIndex) {\n\t\t\tthis.wiki.setText(this.tiddlerTitle,\"\",this.tiddlerIndex,this.inputDomNode.value);\n\t\t} else {\n\t\t\tthis.wiki.setText(this.tiddlerTitle,this.tiddlerField,null,this.inputDomNode.value);\n\t\t}\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRangeWidget.prototype.execute = function() {\n\t// TODO remove the next 1 lines once IE is gone!\n\tthis.mouseUp = true; // Needed for IE10\n\t// Get the parameters from the attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.tiddlerField = this.getAttribute(\"field\",\"text\");\n\tthis.tiddlerIndex = this.getAttribute(\"index\");\n\tthis.minValue = this.getAttribute(\"min\");\n\tthis.maxValue = this.getAttribute(\"max\");\n\tthis.increment = this.getAttribute(\"increment\");\n\tthis.defaultValue = this.getAttribute(\"default\",\"\");\n\tthis.elementClass = this.getAttribute(\"class\",\"\");\n\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\t// Actions since 5.1.23\n\t// Next 2 only fire once!\n\tthis.actionsMouseDown = this.getAttribute(\"actionsStart\",\"\");\n\tthis.actionsMouseUp = this.getAttribute(\"actionsStop\",\"\");\n\t// Input fires very often!\n\tthis.actionsInput = this.getAttribute(\"actions\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRangeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.tiddlerTitle]) {\n\t\t\tvar value = this.getValue();\n\t\t\tif(this.inputDomNode.value !== value) {\n\t\t\t\tthis.inputDomNode.value = value;\n\t\t\t}\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.range = RangeWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/raw.js": {
"title": "$:/core/modules/widgets/raw.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/raw.js\ntype: application/javascript\nmodule-type: widget\n\nRaw widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RawWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRawWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRawWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tvar div = this.document.createElement(\"div\");\n\tdiv.innerHTML=this.parseTreeNode.html;\n\tparent.insertBefore(div,nextSibling);\n\tthis.domNodes.push(div);\t\n};\n\n/*\nCompute the internal state of the widget\n*/\nRawWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRawWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.raw = RawWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/reveal.js": {
"title": "$:/core/modules/widgets/reveal.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/reveal.js\ntype: application/javascript\nmodule-type: widget\n\nReveal widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RevealWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRevealWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRevealWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.revealTag && $tw.config.htmlUnsafeElements.indexOf(this.revealTag) === -1) {\n\t\ttag = this.revealTag;\n\t}\n\tvar domNode = this.document.createElement(tag);\n\tthis.domNode = domNode;\n\tthis.assignDomNodeClasses();\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\t}\n\tif(!this.isOpen) {\n\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t}\n\tthis.domNodes.push(domNode);\n};\n\nRevealWidget.prototype.positionPopup = function(domNode) {\n\tdomNode.style.position = \"absolute\";\n\tdomNode.style.zIndex = \"1000\";\n\tvar left,top;\n\tswitch(this.position) {\n\t\tcase \"left\":\n\t\t\tleft = this.popup.left - domNode.offsetWidth;\n\t\t\ttop = this.popup.top;\n\t\t\tbreak;\n\t\tcase \"above\":\n\t\t\tleft = this.popup.left;\n\t\t\ttop = this.popup.top - domNode.offsetHeight;\n\t\t\tbreak;\n\t\tcase \"aboveright\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top + this.popup.height - domNode.offsetHeight;\n\t\t\tbreak;\n\t\tcase \"belowright\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\t\t\t\n\t\tcase \"right\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top;\n\t\t\tbreak;\n\t\tcase \"belowleft\":\n\t\t\tleft = this.popup.left + this.popup.width - domNode.offsetWidth;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\n\t\tcase \"aboveleft\":\n\t\t\tleft = this.popup.left - domNode.offsetWidth;\n\t\t\ttop = this.popup.top - domNode.offsetHeight;\n\t\t\tbreak;\t\t\t\n\t\tdefault: // Below\n\t\t\tleft = this.popup.left;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\n\t}\n\tif(!this.positionAllowNegative) {\n\t\tleft = Math.max(0,left);\n\t\ttop = Math.max(0,top);\n\t}\n\tdomNode.style.left = left + \"px\";\n\tdomNode.style.top = top + \"px\";\n};\n\n/*\nCompute the internal state of the widget\n*/\nRevealWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.state = this.getAttribute(\"state\");\n\tthis.revealTag = this.getAttribute(\"tag\");\n\tthis.type = this.getAttribute(\"type\");\n\tthis.text = this.getAttribute(\"text\");\n\tthis.position = this.getAttribute(\"position\");\n\tthis.positionAllowNegative = this.getAttribute(\"positionAllowNegative\") === \"yes\";\n\t// class attribute handled in assignDomNodeClasses()\n\tthis.style = this.getAttribute(\"style\",\"\");\n\tthis[\"default\"] = this.getAttribute(\"default\",\"\");\n\tthis.animate = this.getAttribute(\"animate\",\"no\");\n\tthis.retain = this.getAttribute(\"retain\",\"no\");\n\tthis.openAnimation = this.animate === \"no\" ? undefined : \"open\";\n\tthis.closeAnimation = this.animate === \"no\" ? undefined : \"close\";\n\tthis.updatePopupPosition = this.getAttribute(\"updatePopupPosition\",\"no\") === \"yes\";\n\t// Compute the title of the state tiddler and read it\n\tthis.stateTiddlerTitle = this.state;\n\tthis.stateTitle = this.getAttribute(\"stateTitle\");\n\tthis.stateField = this.getAttribute(\"stateField\");\n\tthis.stateIndex = this.getAttribute(\"stateIndex\");\n\tthis.readState();\n\t// Construct the child widgets\n\tvar childNodes = this.isOpen ? this.parseTreeNode.children : [];\n\tthis.hasChildNodes = this.isOpen;\n\tthis.makeChildWidgets(childNodes);\n};\n\n/*\nRead the state tiddler\n*/\nRevealWidget.prototype.readState = function() {\n\t// Read the information from the state tiddler\n\tvar state,\n\t defaultState = this[\"default\"];\n\tif(this.stateTitle) {\n\t\tvar stateTitleTiddler = this.wiki.getTiddler(this.stateTitle);\n\t\tif(this.stateField) {\n\t\t\tstate = stateTitleTiddler ? stateTitleTiddler.getFieldString(this.stateField) || defaultState : defaultState;\n\t\t} else if(this.stateIndex) {\n\t\t\tstate = stateTitleTiddler ? this.wiki.extractTiddlerDataItem(this.stateTitle,this.stateIndex) || defaultState : defaultState;\n\t\t} else if(stateTitleTiddler) {\n\t\t\tstate = this.wiki.getTiddlerText(this.stateTitle) || defaultState;\n\t\t} else {\n\t\t\tstate = defaultState;\n\t\t}\n\t} else {\n\t\tstate = this.stateTiddlerTitle ? this.wiki.getTextReference(this.state,this[\"default\"],this.getVariable(\"currentTiddler\")) : this[\"default\"];\n\t}\n\tif(state === null) {\n\t\tstate = this[\"default\"];\n\t}\n\tswitch(this.type) {\n\t\tcase \"popup\":\n\t\t\tthis.readPopupState(state);\n\t\t\tbreak;\n\t\tcase \"match\":\n\t\t\tthis.isOpen = this.text === state;\n\t\t\tbreak;\n\t\tcase \"nomatch\":\n\t\t\tthis.isOpen = this.text !== state;\n\t\t\tbreak;\n\t\tcase \"lt\":\n\t\t\tthis.isOpen = !!(this.compareStateText(state) < 0);\n\t\t\tbreak;\n\t\tcase \"gt\":\n\t\t\tthis.isOpen = !!(this.compareStateText(state) > 0);\n\t\t\tbreak;\n\t\tcase \"lteq\":\n\t\t\tthis.isOpen = !(this.compareStateText(state) > 0);\n\t\t\tbreak;\n\t\tcase \"gteq\":\n\t\t\tthis.isOpen = !(this.compareStateText(state) < 0);\n\t\t\tbreak;\n\t}\n};\n\nRevealWidget.prototype.compareStateText = function(state) {\n\treturn state.localeCompare(this.text,undefined,{numeric: true,sensitivity: \"case\"});\n};\n\nRevealWidget.prototype.readPopupState = function(state) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/,\n\t\tmatch = popupLocationRegExp.exec(state);\n\t// Check if the state matches the location regexp\n\tif(match) {\n\t\t// If so, we're open\n\t\tthis.isOpen = true;\n\t\t// Get the location\n\t\tthis.popup = {\n\t\t\tleft: parseFloat(match[1]),\n\t\t\ttop: parseFloat(match[2]),\n\t\t\twidth: parseFloat(match[3]),\n\t\t\theight: parseFloat(match[4])\n\t\t};\n\t} else {\n\t\t// If not, we're closed\n\t\tthis.isOpen = false;\n\t}\n};\n\nRevealWidget.prototype.assignDomNodeClasses = function() {\n\tvar classes = this.getAttribute(\"class\",\"\").split(\" \");\n\tclasses.push(\"tc-reveal\");\n\tthis.domNode.className = classes.join(\" \");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRevealWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.state || changedAttributes.type || changedAttributes.text || changedAttributes.position || changedAttributes.positionAllowNegative || changedAttributes[\"default\"] || changedAttributes.animate || changedAttributes.stateTitle || changedAttributes.stateField || changedAttributes.stateIndex) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar currentlyOpen = this.isOpen;\n\t\tthis.readState();\n\t\tif(this.isOpen !== currentlyOpen) {\n\t\t\tif(this.retain === \"yes\") {\n\t\t\t\tthis.updateState();\n\t\t\t} else {\n\t\t\t\tthis.refreshSelf();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else if(this.type === \"popup\" && this.updatePopupPosition && (changedTiddlers[this.state] || changedTiddlers[this.stateTitle])) {\n\t\t\tthis.positionPopup(this.domNode);\n\t\t}\n\t\tif(changedAttributes.style) {\n\t\t\tthis.domNode.style = this.getAttribute(\"style\",\"\");\n\t\t}\n\t\tif(changedAttributes[\"class\"]) {\n\t\t\tthis.assignDomNodeClasses();\n\t\t}\t\t\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\n/*\nCalled by refresh() to dynamically show or hide the content\n*/\nRevealWidget.prototype.updateState = function() {\n\tvar self = this;\n\t// Read the current state\n\tthis.readState();\n\t// Construct the child nodes if needed\n\tvar domNode = this.domNodes[0];\n\tif(this.isOpen && !this.hasChildNodes) {\n\t\tthis.hasChildNodes = true;\n\t\tthis.makeChildWidgets(this.parseTreeNode.children);\n\t\tthis.renderChildren(domNode,null);\n\t}\n\t// Animate our DOM node\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\n\t}\n\tif(this.isOpen) {\n\t\tdomNode.removeAttribute(\"hidden\");\n $tw.anim.perform(this.openAnimation,domNode);\n\t} else {\n\t\t$tw.anim.perform(this.closeAnimation,domNode,{callback: function() {\n\t\t\t//make sure that the state hasn't changed during the close animation\n\t\t\tself.readState()\n\t\t\tif(!self.isOpen) {\n\t\t\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t\t\t}\n\t\t}});\n\t}\n};\n\nexports.reveal = RevealWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/scrollable.js": {
"title": "$:/core/modules/widgets/scrollable.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/scrollable.js\ntype: application/javascript\nmodule-type: widget\n\nScrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ScrollableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.scaleFactor = 1;\n\tthis.addEventListeners([\n\t\t{type: \"tm-scroll\", handler: \"handleScrollEvent\"}\n\t]);\n\tif($tw.browser) {\n\t\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t\t};\n\t\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\t\twindow.webkitCancelAnimationFrame ||\n\t\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\t\twindow.mozCancelAnimationFrame ||\n\t\t\twindow.mozCancelRequestAnimationFrame ||\n\t\t\tfunction(id) {\n\t\t\t\twindow.clearTimeout(id);\n\t\t\t};\n\t}\n};\n\n/*\nInherit from the base widget class\n*/\nScrollableWidget.prototype = new Widget();\n\nScrollableWidget.prototype.cancelScroll = function() {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(window,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle a scroll event\n*/\nScrollableWidget.prototype.handleScrollEvent = function(event) {\n\t// Pass the scroll event through if our offsetsize is larger than our scrollsize\n\tif(this.outerDomNode.scrollWidth <= this.outerDomNode.offsetWidth && this.outerDomNode.scrollHeight <= this.outerDomNode.offsetHeight && this.fallthrough === \"yes\") {\n\t\treturn true;\n\t}\n\tif(event.paramObject && event.paramObject.selector) {\n\t\tthis.scrollSelectorIntoView(null,event.paramObject.selector);\n\t} else {\n\t\tthis.scrollIntoView(event.target);\t\t\t\n\t}\n\treturn false; // Handled event\n};\n\n/*\nScroll an element into view\n*/\nScrollableWidget.prototype.scrollIntoView = function(element) {\n\tvar duration = $tw.utils.getAnimationDuration(),\n\tsrcWindow = element ? element.ownerDocument.defaultView : window;\n\tthis.cancelScroll();\n\tthis.startTime = Date.now();\n\tvar scrollPosition = {\n\t\tx: this.outerDomNode.scrollLeft,\n\t\ty: this.outerDomNode.scrollTop\n\t};\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar scrollableBounds = this.outerDomNode.getBoundingClientRect(),\n\t\tclientTargetBounds = element.getBoundingClientRect(),\n\t\tbounds = {\n\t\t\tleft: clientTargetBounds.left + scrollPosition.x - scrollableBounds.left,\n\t\t\ttop: clientTargetBounds.top + scrollPosition.y - scrollableBounds.top,\n\t\t\twidth: clientTargetBounds.width,\n\t\t\theight: clientTargetBounds.height\n\t\t};\n\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\tvar getEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\t// If the target is already visible then stay where we are\n\t\t\tif(targetPos >= currentPos && (targetPos + targetSize) <= (currentPos + currentSize)) {\n\t\t\t\treturn currentPos;\n\t\t\t// If the target is above/left of the current view, then scroll to its top/left\n\t\t\t} else if(targetPos <= currentPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// If the target is smaller than the window and the scroll position is too far up, then scroll till the target is at the bottom of the window\n\t\t\t} else if(targetSize < currentSize && currentPos < (targetPos + targetSize - currentSize)) {\n\t\t\t\treturn targetPos + targetSize - currentSize;\n\t\t\t// If the target is big, then just scroll to the top\n\t\t\t} else if(currentPos < targetPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// Otherwise, stay where we are\n\t\t\t} else {\n\t\t\t\treturn currentPos;\n\t\t\t}\n\t\t},\n\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,this.outerDomNode.offsetWidth),\n\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,this.outerDomNode.offsetHeight);\n\t// Only scroll if necessary\n\tif(endX !== scrollPosition.x || endY !== scrollPosition.y) {\n\t\tvar self = this,\n\t\t\tdrawFrame;\n\t\tdrawFrame = function () {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll();\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tself.outerDomNode.scrollLeft = scrollPosition.x + (endX - scrollPosition.x) * t;\n\t\t\tself.outerDomNode.scrollTop = scrollPosition.y + (endY - scrollPosition.y) * t;\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(srcWindow,drawFrame);\n\t\t\t}\n\t\t};\n\t\tdrawFrame();\n\t}\n};\n\nScrollableWidget.prototype.scrollSelectorIntoView = function(baseElement,selector,callback) {\n\tbaseElement = baseElement || document.body;\n\tvar element = baseElement.querySelector(selector);\n\tif(element) {\n\t\tthis.scrollIntoView(element,callback);\t\t\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nScrollableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create elements\n\tthis.outerDomNode = this.document.createElement(\"div\");\n\t$tw.utils.setStyle(this.outerDomNode,[\n\t\t{overflowY: \"auto\"},\n\t\t{overflowX: \"auto\"},\n\t\t{webkitOverflowScrolling: \"touch\"}\n\t]);\n\tthis.innerDomNode = this.document.createElement(\"div\");\n\tthis.outerDomNode.appendChild(this.innerDomNode);\n\t// Assign classes\n\tthis.outerDomNode.className = this[\"class\"] || \"\";\n\t// Insert element\n\tparent.insertBefore(this.outerDomNode,nextSibling);\n\tthis.renderChildren(this.innerDomNode,null);\n\tthis.domNodes.push(this.outerDomNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nScrollableWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.fallthrough = this.getAttribute(\"fallthrough\",\"yes\");\n\tthis[\"class\"] = this.getAttribute(\"class\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nScrollableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.scrollable = ScrollableWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/select.js": {
"title": "$:/core/modules/widgets/select.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/select.js\ntype: application/javascript\nmodule-type: widget\n\nSelect widget:\n\n```\n<$select tiddler=\"MyTiddler\" field=\"text\">\n<$list filter=\"[tag[chapter]]\">\n<option value=<<currentTiddler>>>\n<$view field=\"description\"/>\n</option>\n</$list>\n</$select>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SelectWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSelectWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSelectWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\tthis.setSelectValue();\n\t$tw.utils.addEventListeners(this.getSelectDomNode(),[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n};\n\n/*\nHandle a change event\n*/\nSelectWidget.prototype.handleChangeEvent = function(event) {\n\t// Get the new value and assign it to the tiddler\n\tif(this.selectMultiple == false) {\n\t\tvar value = this.getSelectDomNode().value;\n\t} else {\n\t\tvar value = this.getSelectValues()\n\t\t\t\tvalue = $tw.utils.stringifyList(value);\n\t}\n\tthis.wiki.setText(this.selectTitle,this.selectField,this.selectIndex,value);\n\t// Trigger actions\n\tif(this.selectActions) {\n\t\tthis.invokeActionString(this.selectActions,this,event);\n\t}\n};\n\n/*\nIf necessary, set the value of the select element to the current value\n*/\nSelectWidget.prototype.setSelectValue = function() {\n\tvar value = this.selectDefault;\n\t// Get the value\n\tif(this.selectIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.selectTitle,this.selectIndex,value);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.selectTitle);\n\t\tif(tiddler) {\n\t\t\tif(this.selectField === \"text\") {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.selectTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.selectField)) {\n\t\t\t\t\tvalue = tiddler.getFieldString(this.selectField);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.selectField === \"title\") {\n\t\t\t\tvalue = this.selectTitle;\n\t\t\t}\n\t\t}\n\t}\n\t// Assign it to the select element if it's different than the current value\n\tif (this.selectMultiple) {\n\t\tvalue = value === undefined ? \"\" : value;\n\t\tvar select = this.getSelectDomNode();\n\t\tvar values = Array.isArray(value) ? value : $tw.utils.parseStringArray(value);\n\t\tfor(var i=0; i < select.children.length; i++){\n\t\t\tselect.children[i].selected = values.indexOf(select.children[i].value) !== -1\n\t\t}\n\t} else {\n\t\tvar domNode = this.getSelectDomNode();\n\t\tif(domNode.value !== value) {\n\t\t\tdomNode.value = value;\n\t\t}\n\t}\n};\n\n/*\nGet the DOM node of the select element\n*/\nSelectWidget.prototype.getSelectDomNode = function() {\n\treturn this.children[0].domNodes[0];\n};\n\n// Return an array of the selected opion values\n// select is an HTML select element\nSelectWidget.prototype.getSelectValues = function() {\n\tvar select, result, options, opt;\n\tselect = this.getSelectDomNode();\n\tresult = [];\n\toptions = select && select.options;\n\tfor (var i=0; i<options.length; i++) {\n\t\topt = options[i];\n\t\tif (opt.selected) {\n\t\t\tresult.push(opt.value || opt.text);\n\t\t}\n\t}\n\treturn result;\n}\n\n/*\nCompute the internal state of the widget\n*/\nSelectWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.selectActions = this.getAttribute(\"actions\");\n\tthis.selectTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.selectField = this.getAttribute(\"field\",\"text\");\n\tthis.selectIndex = this.getAttribute(\"index\");\n\tthis.selectClass = this.getAttribute(\"class\");\n\tthis.selectDefault = this.getAttribute(\"default\");\n\tthis.selectMultiple = this.getAttribute(\"multiple\", false);\n\tthis.selectSize = this.getAttribute(\"size\");\n\tthis.selectTooltip = this.getAttribute(\"tooltip\");\n\t// Make the child widgets\n\tvar selectNode = {\n\t\ttype: \"element\",\n\t\ttag: \"select\",\n\t\tchildren: this.parseTreeNode.children\n\t};\n\tif(this.selectClass) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"class\",this.selectClass);\n\t}\n\tif(this.selectMultiple) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"multiple\",\"multiple\");\n\t}\n\tif(this.selectSize) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"size\",this.selectSize);\n\t}\n\tif(this.selectTooltip) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"title\",this.selectTooltip);\n\t}\n\tthis.makeChildWidgets([selectNode]);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSelectWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// If we're using a different tiddler/field/index then completely refresh ourselves\n\tif(changedAttributes.selectTitle || changedAttributes.selectField || changedAttributes.selectIndex || changedAttributes.selectTooltip) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t// If the target tiddler value has changed, just update setting and refresh the children\n\t} else {\n\t\tvar childrenRefreshed = this.refreshChildren(changedTiddlers);\n\t\tif(changedTiddlers[this.selectTitle] || childrenRefreshed) {\n\t\t\tthis.setSelectValue();\n\t\t} \n\t\treturn childrenRefreshed;\n\t}\n};\n\nexports.select = SelectWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/set.js": {
"title": "$:/core/modules/widgets/set.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/set.js\ntype: application/javascript\nmodule-type: widget\n\nSet variable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.setName = this.getAttribute(\"name\",\"currentTiddler\");\n\tthis.setFilter = this.getAttribute(\"filter\");\n\tthis.setSelect = this.getAttribute(\"select\");\n\tthis.setTiddler = this.getAttribute(\"tiddler\");\n\tthis.setSubTiddler = this.getAttribute(\"subtiddler\");\n\tthis.setField = this.getAttribute(\"field\");\n\tthis.setIndex = this.getAttribute(\"index\");\n\tthis.setValue = this.getAttribute(\"value\");\n\tthis.setEmptyValue = this.getAttribute(\"emptyValue\");\n\t// Set context variable\n\tthis.setVariable(this.setName,this.getValue(),this.parseTreeNode.params,!!this.parseTreeNode.isMacroDefinition);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nGet the value to be assigned\n*/\nSetWidget.prototype.getValue = function() {\n\tvar value = this.setValue;\n\tif(this.setTiddler) {\n\t\tvar tiddler;\n\t\tif(this.setSubTiddler) {\n\t\t\ttiddler = this.wiki.getSubTiddler(this.setTiddler,this.setSubTiddler);\n\t\t} else {\n\t\t\ttiddler = this.wiki.getTiddler(this.setTiddler);\t\t\t\n\t\t}\n\t\tif(!tiddler) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t} else if(this.setField) {\n\t\t\tvalue = tiddler.getFieldString(this.setField) || this.setEmptyValue;\n\t\t} else if(this.setIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.setTiddler,this.setIndex,this.setEmptyValue);\n\t\t} else {\n\t\t\tvalue = tiddler.fields.text || this.setEmptyValue ;\n\t\t}\n\t} else if(this.setFilter) {\n\t\tvar results = this.wiki.filterTiddlers(this.setFilter,this);\n\t\tif(this.setValue == null) {\n\t\t\tvar select;\n\t\t\tif(this.setSelect) {\n\t\t\t\tselect = parseInt(this.setSelect,10);\n\t\t\t}\n\t\t\tif(select !== undefined) {\n\t\t\t\tvalue = results[select] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = $tw.utils.stringifyList(results);\t\t\t\n\t\t\t}\n\t\t}\n\t\tif(results.length === 0 && this.setEmptyValue !== undefined) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t}\n\t} else if(!value && this.setEmptyValue) {\n\t\tvalue = this.setEmptyValue;\n\t}\n\treturn value || \"\";\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSetWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name || changedAttributes.filter || changedAttributes.select || changedAttributes.tiddler || (this.setTiddler && changedTiddlers[this.setTiddler]) || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes.emptyValue ||\n\t (this.setFilter && this.getValue() != this.variables[this.setName].value)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.setvariable = SetWidget;\nexports.set = SetWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/text.js": {
"title": "$:/core/modules/widgets/text.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/text.js\ntype: application/javascript\nmodule-type: widget\n\nText node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TextNodeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTextNodeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTextNodeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar text = this.getAttribute(\"text\",this.parseTreeNode.text || \"\");\n\ttext = text.replace(/\\r/mg,\"\");\n\tvar textNode = this.document.createTextNode(text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTextNodeWidget.prototype.execute = function() {\n\t// Nothing to do for a text node\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTextNodeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.text) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.text = TextNodeWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/tiddler.js": {
"title": "$:/core/modules/widgets/tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/tiddler.js\ntype: application/javascript\nmodule-type: widget\n\nTiddler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTiddlerWidget.prototype.execute = function() {\n\tthis.tiddlerState = this.computeTiddlerState();\n\tthis.setVariable(\"currentTiddler\",this.tiddlerState.currentTiddler);\n\tthis.setVariable(\"missingTiddlerClass\",this.tiddlerState.missingTiddlerClass);\n\tthis.setVariable(\"shadowTiddlerClass\",this.tiddlerState.shadowTiddlerClass);\n\tthis.setVariable(\"systemTiddlerClass\",this.tiddlerState.systemTiddlerClass);\n\tthis.setVariable(\"tiddlerTagClasses\",this.tiddlerState.tiddlerTagClasses);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nCompute the tiddler state flags\n*/\nTiddlerWidget.prototype.computeTiddlerState = function() {\n\t// Get our parameters\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Compute the state\n\tvar state = {\n\t\tcurrentTiddler: this.tiddlerTitle || \"\",\n\t\tmissingTiddlerClass: (this.wiki.tiddlerExists(this.tiddlerTitle) || this.wiki.isShadowTiddler(this.tiddlerTitle)) ? \"tc-tiddler-exists\" : \"tc-tiddler-missing\",\n\t\tshadowTiddlerClass: this.wiki.isShadowTiddler(this.tiddlerTitle) ? \"tc-tiddler-shadow\" : \"\",\n\t\tsystemTiddlerClass: this.wiki.isSystemTiddler(this.tiddlerTitle) ? \"tc-tiddler-system\" : \"\",\n\t\ttiddlerTagClasses: this.getTagClasses()\n\t};\n\t// Compute a simple hash to make it easier to detect changes\n\tstate.hash = state.currentTiddler + state.missingTiddlerClass + state.shadowTiddlerClass + state.systemTiddlerClass + state.tiddlerTagClasses;\n\treturn state;\n};\n\n/*\nCreate a string of CSS classes derived from the tags of the current tiddler\n*/\nTiddlerWidget.prototype.getTagClasses = function() {\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\tif(tiddler) {\n\t\tvar tags = [];\n\t\t$tw.utils.each(tiddler.fields.tags,function(tag) {\n\t\t\ttags.push(\"tc-tagged-\" + encodeURIComponent(tag));\n\t\t});\n\t\treturn tags.join(\" \");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tnewTiddlerState = this.computeTiddlerState();\n\tif(changedAttributes.tiddler || newTiddlerState.hash !== this.tiddlerState.hash) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.tiddler = TiddlerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/transclude.js": {
"title": "$:/core/modules/widgets/transclude.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/transclude.js\ntype: application/javascript\nmodule-type: widget\n\nTransclude widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TranscludeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTranscludeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTranscludeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTranscludeWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.transcludeTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.transcludeSubTiddler = this.getAttribute(\"subtiddler\");\n\tthis.transcludeField = this.getAttribute(\"field\");\n\tthis.transcludeIndex = this.getAttribute(\"index\");\n\tthis.transcludeMode = this.getAttribute(\"mode\");\n\tthis.recursionMarker = this.getAttribute(\"recursionMarker\",\"yes\");\n\t// Parse the text reference\n\tvar parseAsInline = !this.parseTreeNode.isBlock;\n\tif(this.transcludeMode === \"inline\") {\n\t\tparseAsInline = true;\n\t} else if(this.transcludeMode === \"block\") {\n\t\tparseAsInline = false;\n\t}\n\tvar parser = this.wiki.parseTextReference(\n\t\t\t\t\t\tthis.transcludeTitle,\n\t\t\t\t\t\tthis.transcludeField,\n\t\t\t\t\t\tthis.transcludeIndex,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tparseAsInline: parseAsInline,\n\t\t\t\t\t\t\tsubTiddler: this.transcludeSubTiddler\n\t\t\t\t\t\t}),\n\t\tparseTreeNodes = parser ? parser.tree : this.parseTreeNode.children;\n\t// Set context variables for recursion detection\n\tvar recursionMarker = this.makeRecursionMarker();\n\tif(this.recursionMarker === \"yes\") {\n\t\tthis.setVariable(\"transclusion\",recursionMarker);\n\t}\n\t// Check for recursion\n\tif(parser) {\n\t\tif(this.parentWidget && this.parentWidget.hasVariable(\"transclusion\",recursionMarker)) {\n\t\t\tparseTreeNodes = [{type: \"element\", tag: \"span\", attributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-error\"}\n\t\t\t}, children: [\n\t\t\t\t{type: \"text\", text: $tw.language.getString(\"Error/RecursiveTransclusion\")}\n\t\t\t]}];\n\t\t}\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nCompose a string comprising the title, field and/or index to identify this transclusion for recursion detection\n*/\nTranscludeWidget.prototype.makeRecursionMarker = function() {\n\tvar output = [];\n\toutput.push(\"{\");\n\toutput.push(this.getVariable(\"currentTiddler\",{defaultValue: \"\"}));\n\toutput.push(\"|\");\n\toutput.push(this.transcludeTitle || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeField || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeIndex || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeSubTiddler || \"\");\n\toutput.push(\"}\");\n\treturn output.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTranscludeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedTiddlers[this.transcludeTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.transclude = TranscludeWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/vars.js": {
"title": "$:/core/modules/widgets/vars.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/vars.js\ntype: application/javascript\nmodule-type: widget\n\nThis widget allows multiple variables to be set in one go:\n\n```\n\\define helloworld() Hello world!\n<$vars greeting=\"Hi\" me={{!!title}} sentence=<<helloworld>>>\n <<greeting>>! I am <<me>> and I say: <<sentence>>\n</$vars>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar VarsWidget = function(parseTreeNode,options) {\n\t// Call the constructor\n\tWidget.call(this);\n\t// Initialise\t\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nVarsWidget.prototype = Object.create(Widget.prototype);\n\n/*\nRender this widget into the DOM\n*/\nVarsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nVarsWidget.prototype.execute = function() {\n\t// Parse variables\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(val,key) {\n\t\tif(key.charAt(0) !== \"$\") {\n\t\t\tself.setVariable(key,val);\n\t\t}\n\t});\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nVarsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"vars\"] = VarsWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/view.js": {
"title": "$:/core/modules/widgets/view.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/view.js\ntype: application/javascript\nmodule-type: widget\n\nView widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ViewWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nViewWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nViewWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tif(this.text) {\n\t\tvar textNode = this.document.createTextNode(this.text);\n\t\tparent.insertBefore(textNode,nextSibling);\n\t\tthis.domNodes.push(textNode);\n\t} else {\n\t\tthis.makeChildWidgets();\n\t\tthis.renderChildren(parent,nextSibling);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nViewWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.viewTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.viewSubtiddler = this.getAttribute(\"subtiddler\");\n\tthis.viewField = this.getAttribute(\"field\",\"text\");\n\tthis.viewIndex = this.getAttribute(\"index\");\n\tthis.viewFormat = this.getAttribute(\"format\",\"text\");\n\tthis.viewTemplate = this.getAttribute(\"template\",\"\");\n\tthis.viewMode = this.getAttribute(\"mode\",\"block\");\n\tswitch(this.viewFormat) {\n\t\tcase \"htmlwikified\":\n\t\t\tthis.text = this.getValueAsHtmlWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"plainwikified\":\n\t\t\tthis.text = this.getValueAsPlainWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"htmlencodedplainwikified\":\n\t\t\tthis.text = this.getValueAsHtmlEncodedPlainWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"htmlencoded\":\n\t\t\tthis.text = this.getValueAsHtmlEncoded();\n\t\t\tbreak;\n\t\tcase \"urlencoded\":\n\t\t\tthis.text = this.getValueAsUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"doubleurlencoded\":\n\t\t\tthis.text = this.getValueAsDoubleUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"date\":\n\t\t\tthis.text = this.getValueAsDate(this.viewTemplate);\n\t\t\tbreak;\n\t\tcase \"relativedate\":\n\t\t\tthis.text = this.getValueAsRelativeDate();\n\t\t\tbreak;\n\t\tcase \"stripcomments\":\n\t\t\tthis.text = this.getValueAsStrippedComments();\n\t\t\tbreak;\n\t\tcase \"jsencoded\":\n\t\t\tthis.text = this.getValueAsJsEncoded();\n\t\t\tbreak;\n\t\tdefault: // \"text\"\n\t\t\tthis.text = this.getValueAsText();\n\t\t\tbreak;\n\t}\n};\n\n/*\nThe various formatter functions are baked into this widget for the moment. Eventually they will be replaced by macro functions\n*/\n\n/*\nRetrieve the value of the widget. Options are:\nasString: Optionally return the value as a string\n*/\nViewWidget.prototype.getValue = function(options) {\n\toptions = options || {};\n\tvar value = options.asString ? \"\" : undefined;\n\tif(this.viewIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.viewTitle,this.viewIndex);\n\t} else {\n\t\tvar tiddler;\n\t\tif(this.viewSubtiddler) {\n\t\t\ttiddler = this.wiki.getSubTiddler(this.viewTitle,this.viewSubtiddler);\t\n\t\t} else {\n\t\t\ttiddler = this.wiki.getTiddler(this.viewTitle);\n\t\t}\n\t\tif(tiddler) {\n\t\t\tif(this.viewField === \"text\" && !this.viewSubtiddler) {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.viewTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.viewField)) {\n\t\t\t\t\tif(options.asString) {\n\t\t\t\t\t\tvalue = tiddler.getFieldString(this.viewField);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = tiddler.fields[this.viewField];\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.viewField === \"title\") {\n\t\t\t\tvalue = this.viewTitle;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\nViewWidget.prototype.getValueAsText = function() {\n\treturn this.getValue({asString: true});\n};\n\nViewWidget.prototype.getValueAsHtmlWikified = function(mode) {\n\treturn this.wiki.renderText(\"text/html\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t});\n};\n\nViewWidget.prototype.getValueAsPlainWikified = function(mode) {\n\treturn this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t});\n};\n\nViewWidget.prototype.getValueAsHtmlEncodedPlainWikified = function(mode) {\n\treturn $tw.utils.htmlEncode(this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t}));\n};\n\nViewWidget.prototype.getValueAsHtmlEncoded = function() {\n\treturn $tw.utils.htmlEncode(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsUrlEncoded = function() {\n\treturn encodeURIComponent(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsDoubleUrlEncoded = function() {\n\treturn encodeURIComponent(encodeURIComponent(this.getValueAsText()));\n};\n\nViewWidget.prototype.getValueAsDate = function(format) {\n\tformat = format || \"YYYY MM DD 0hh:0mm\";\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.formatDateString(value,format);\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsRelativeDate = function(format) {\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.getRelativeDate((new Date()) - (new Date(value))).description;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsStrippedComments = function() {\n\tvar lines = this.getValueAsText().split(\"\\n\"),\n\t\tout = [];\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar text = lines[line];\n\t\tif(!/^\\s*\\/\\/#/.test(text)) {\n\t\t\tout.push(text);\n\t\t}\n\t}\n\treturn out.join(\"\\n\");\n};\n\nViewWidget.prototype.getValueAsJsEncoded = function() {\n\treturn $tw.utils.stringify(this.getValueAsText());\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nViewWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.template || changedAttributes.format || changedTiddlers[this.viewTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.view = ViewWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/widget.js": {
"title": "$:/core/modules/widgets/widget.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/widget.js\ntype: application/javascript\nmodule-type: widget\n\nWidget base class\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate a widget object for a parse tree node\n\tparseTreeNode: reference to the parse tree node to be rendered\n\toptions: see below\nOptions include:\n\twiki: mandatory reference to wiki associated with this render tree\n\tparentWidget: optional reference to a parent renderer node for the context chain\n\tdocument: optional document object to use instead of global document\n*/\nvar Widget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInitialise widget properties. These steps are pulled out of the constructor so that we can reuse them in subclasses\n*/\nWidget.prototype.initialise = function(parseTreeNode,options) {\n\t// Bail if parseTreeNode is undefined, meaning that the widget constructor was called without any arguments so that it can be subclassed\n\tif(parseTreeNode === undefined) {\n\t\treturn;\n\t}\n\toptions = options || {};\n\t// Save widget info\n\tthis.parseTreeNode = parseTreeNode;\n\tthis.wiki = options.wiki;\n\tthis.parentWidget = options.parentWidget;\n\tthis.variablesConstructor = function() {};\n\tthis.variablesConstructor.prototype = this.parentWidget ? this.parentWidget.variables : {};\n\tthis.variables = new this.variablesConstructor();\n\tthis.document = options.document;\n\tthis.attributes = {};\n\tthis.children = [];\n\tthis.domNodes = [];\n\tthis.eventListeners = {};\n\t// Hashmap of the widget classes\n\tif(!this.widgetClasses) {\n\t\t// Get widget classes\n\t\tWidget.prototype.widgetClasses = $tw.modules.applyMethods(\"widget\");\n\t\t// Process any subclasses\n\t\t$tw.modules.forEachModuleOfType(\"widget-subclass\",function(title,module) {\n\t\t\tif(module.baseClass) {\n\t\t\t\tvar baseClass = Widget.prototype.widgetClasses[module.baseClass];\n\t\t\t\tif(!baseClass) {\n\t\t\t\t\tthrow \"Module '\" + title + \"' is attemping to extend a non-existent base class '\" + module.baseClass + \"'\";\n\t\t\t\t}\n\t\t\t\tvar subClass = module.constructor;\n\t\t\t\tsubClass.prototype = new baseClass();\n\t\t\t\t$tw.utils.extend(subClass.prototype,module.prototype);\n\t\t\t\tWidget.prototype.widgetClasses[module.name || module.baseClass] = subClass;\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWidget.prototype.execute = function() {\n\tthis.makeChildWidgets();\n};\n\n/*\nSet the value of a context variable\nname: name of the variable\nvalue: value of the variable\nparams: array of {name:, default:} for each parameter\nisMacroDefinition: true if the variable is set via a \\define macro pragma (and hence should have variable substitution performed)\n*/\nWidget.prototype.setVariable = function(name,value,params,isMacroDefinition) {\n\tthis.variables[name] = {value: value, params: params, isMacroDefinition: !!isMacroDefinition};\n};\n\n/*\nGet the prevailing value of a context variable\nname: name of variable\noptions: see below\nOptions include\nparams: array of {name:, value:} for each parameter\ndefaultValue: default value if the variable is not defined\n\nReturns an object with the following fields:\n\nparams: array of {name:,value:} of parameters passed to wikitext variables\ntext: text of variable, with parameters properly substituted\n*/\nWidget.prototype.getVariableInfo = function(name,options) {\n\toptions = options || {};\n\tvar actualParams = options.params || [],\n\t\tparentWidget = this.parentWidget;\n\t// Check for the variable defined in the parent widget (or an ancestor in the prototype chain)\n\tif(parentWidget && name in parentWidget.variables) {\n\t\tvar variable = parentWidget.variables[name],\n\t\t\toriginalValue = variable.value,\n\t\t\tvalue = originalValue,\n\t\t\tparams = this.resolveVariableParameters(variable.params,actualParams);\n\t\t// Substitute any parameters specified in the definition\n\t\t$tw.utils.each(params,function(param) {\n\t\t\tvalue = $tw.utils.replaceString(value,new RegExp(\"\\\\$\" + $tw.utils.escapeRegExp(param.name) + \"\\\\$\",\"mg\"),param.value);\n\t\t});\n\t\t// Only substitute variable references if this variable was defined with the \\define pragma\n\t\tif(variable.isMacroDefinition) {\n\t\t\tvalue = this.substituteVariableReferences(value);\t\t\t\n\t\t}\n\t\treturn {\n\t\t\ttext: value,\n\t\t\tparams: params,\n\t\t\tsrcVariable: variable,\n\t\t\tisCacheable: originalValue === value\n\t\t};\n\t}\n\t// If the variable doesn't exist in the parent widget then look for a macro module\n\treturn {\n\t\ttext: this.evaluateMacroModule(name,actualParams,options.defaultValue)\n\t};\n};\n\n/*\nSimplified version of getVariableInfo() that just returns the text\n*/\nWidget.prototype.getVariable = function(name,options) {\n\treturn this.getVariableInfo(name,options).text;\n};\n\nWidget.prototype.resolveVariableParameters = function(formalParams,actualParams) {\n\tformalParams = formalParams || [];\n\tactualParams = actualParams || [];\n\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\tparamInfo, paramValue,\n\t\tresults = [];\n\t// Step through each of the parameters in the macro definition\n\tfor(var p=0; p<formalParams.length; p++) {\n\t\t// Check if we've got a macro call parameter with the same name\n\t\tparamInfo = formalParams[p];\n\t\tparamValue = undefined;\n\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t}\n\t\t}\n\t\t// If not, use the next available anonymous macro call parameter\n\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\tnextAnonParameter++;\n\t\t}\n\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t}\n\t\t// If we've still not got a value, use the default, if any\n\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t// Store the parameter name and value\n\t\tresults.push({name: paramInfo.name, value: paramValue});\n\t}\n\treturn results;\n};\n\nWidget.prototype.substituteVariableReferences = function(text) {\n\tvar self = this;\n\treturn (text || \"\").replace(/\\$\\(([^\\)\\$]+)\\)\\$/g,function(match,p1,offset,string) {\n\t\treturn self.getVariable(p1,{defaultValue: \"\"});\n\t});\n};\n\nWidget.prototype.evaluateMacroModule = function(name,actualParams,defaultValue) {\n\tif($tw.utils.hop($tw.macros,name)) {\n\t\tvar macro = $tw.macros[name],\n\t\t\targs = [];\n\t\tif(macro.params.length > 0) {\n\t\t\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\t\t\tparamInfo, paramValue;\n\t\t\t// Step through each of the parameters in the macro definition\n\t\t\tfor(var p=0; p<macro.params.length; p++) {\n\t\t\t\t// Check if we've got a macro call parameter with the same name\n\t\t\t\tparamInfo = macro.params[p];\n\t\t\t\tparamValue = undefined;\n\t\t\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If not, use the next available anonymous macro call parameter\n\t\t\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\t\t\tnextAnonParameter++;\n\t\t\t\t}\n\t\t\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t\t\t}\n\t\t\t\t// If we've still not got a value, use the default, if any\n\t\t\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t\t\t// Save the parameter\n\t\t\t\targs.push(paramValue);\n\t\t\t}\n\t\t}\n\t\telse for(var i=0; i<actualParams.length; ++i) {\n\t\t\targs.push(actualParams[i].value);\n\t\t}\n\t\treturn (macro.run.apply(this,args) || \"\").toString();\n\t} else {\n\t\treturn defaultValue;\n\t}\n};\n\n/*\nCheck whether a given context variable value exists in the parent chain\n*/\nWidget.prototype.hasVariable = function(name,value) {\n\tvar node = this;\n\twhile(node) {\n\t\tif($tw.utils.hop(node.variables,name) && node.variables[name].value === value) {\n\t\t\treturn true;\n\t\t}\n\t\tnode = node.parentWidget;\n\t}\n\treturn false;\n};\n\n/*\nConstruct a qualifying string based on a hash of concatenating the values of a given variable in the parent chain\n*/\nWidget.prototype.getStateQualifier = function(name) {\n\tthis.qualifiers = this.qualifiers || Object.create(null);\n\tname = name || \"transclusion\";\n\tif(this.qualifiers[name]) {\n\t\treturn this.qualifiers[name];\n\t} else {\n\t\tvar output = [],\n\t\t\tnode = this;\n\t\twhile(node && node.parentWidget) {\n\t\t\tif($tw.utils.hop(node.parentWidget.variables,name)) {\n\t\t\t\toutput.push(node.getVariable(name));\n\t\t\t}\n\t\t\tnode = node.parentWidget;\n\t\t}\n\t\tvar value = $tw.utils.hashString(output.join(\"\"));\n\t\tthis.qualifiers[name] = value;\n\t\treturn value;\n\t}\n};\n\n/*\nCompute the current values of the attributes of the widget. Returns a hashmap of the names of the attributes that have changed\n*/\nWidget.prototype.computeAttributes = function() {\n\tvar changedAttributes = {},\n\t\tself = this,\n\t\tvalue;\n\t$tw.utils.each(this.parseTreeNode.attributes,function(attribute,name) {\n\t\tif(attribute.type === \"filtered\") {\n\t\t\tvalue = self.wiki.filterTiddlers(attribute.filter,self)[0] || \"\";\n\t\t} else if(attribute.type === \"indirect\") {\n\t\t\tvalue = self.wiki.getTextReference(attribute.textReference,\"\",self.getVariable(\"currentTiddler\"));\n\t\t} else if(attribute.type === \"macro\") {\n\t\t\tvalue = self.getVariable(attribute.value.name,{params: attribute.value.params});\n\t\t} else { // String attribute\n\t\t\tvalue = attribute.value;\n\t\t}\n\t\t// Check whether the attribute has changed\n\t\tif(self.attributes[name] !== value) {\n\t\t\tself.attributes[name] = value;\n\t\t\tchangedAttributes[name] = true;\n\t\t}\n\t});\n\treturn changedAttributes;\n};\n\n/*\nCheck for the presence of an attribute\n*/\nWidget.prototype.hasAttribute = function(name) {\n\treturn $tw.utils.hop(this.attributes,name);\n};\n\n/*\nGet the value of an attribute\n*/\nWidget.prototype.getAttribute = function(name,defaultText) {\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\treturn this.attributes[name];\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nAssign the computed attributes of the widget to a domNode\noptions include:\nexcludeEventAttributes: ignores attributes whose name begins with \"on\"\n*/\nWidget.prototype.assignAttributes = function(domNode,options) {\n\toptions = options || {};\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(v,a) {\n\t\t// Check exclusions\n\t\tif(options.excludeEventAttributes && a.substr(0,2) === \"on\") {\n\t\t\tv = undefined;\n\t\t}\n\t\tif(v !== undefined) {\n\t\t\tvar b = a.split(\":\");\n\t\t\t// Setting certain attributes can cause a DOM error (eg xmlns on the svg element)\n\t\t\ttry {\n\t\t\t\tif (b.length == 2 && b[0] == \"xlink\"){\n\t\t\t\t\tdomNode.setAttributeNS(\"http://www.w3.org/1999/xlink\",b[1],v);\n\t\t\t\t} else {\n\t\t\t\t\tdomNode.setAttributeNS(null,a,v);\n\t\t\t\t}\n\t\t\t} catch(e) {\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nMake child widgets correspondng to specified parseTreeNodes\n*/\nWidget.prototype.makeChildWidgets = function(parseTreeNodes) {\n\tthis.children = [];\n\tvar self = this;\n\t$tw.utils.each(parseTreeNodes || (this.parseTreeNode && this.parseTreeNode.children),function(childNode) {\n\t\tself.children.push(self.makeChildWidget(childNode));\n\t});\n};\n\n/*\nConstruct the widget object for a parse tree node\n*/\nWidget.prototype.makeChildWidget = function(parseTreeNode) {\n\tvar WidgetClass = this.widgetClasses[parseTreeNode.type];\n\tif(!WidgetClass) {\n\t\tWidgetClass = this.widgetClasses.text;\n\t\tparseTreeNode = {type: \"text\", text: \"Undefined widget '\" + parseTreeNode.type + \"'\"};\n\t}\n\treturn new WidgetClass(parseTreeNode,{\n\t\twiki: this.wiki,\n\t\tvariables: {},\n\t\tparentWidget: this,\n\t\tdocument: this.document\n\t});\n};\n\n/*\nGet the next sibling of this widget\n*/\nWidget.prototype.nextSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index < this.parentWidget.children.length-1) {\n\t\t\treturn this.parentWidget.children[index+1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the previous sibling of this widget\n*/\nWidget.prototype.previousSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index > 0) {\n\t\t\treturn this.parentWidget.children[index-1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRender the children of this widget into the DOM\n*/\nWidget.prototype.renderChildren = function(parent,nextSibling) {\n\tvar children = this.children;\n\tfor(var i = 0; i < children.length; i++) {\n\t\tchildren[i].render(parent,nextSibling);\n\t};\n};\n\n/*\nAdd a list of event listeners from an array [{type:,handler:},...]\n*/\nWidget.prototype.addEventListeners = function(listeners) {\n\tvar self = this;\n\t$tw.utils.each(listeners,function(listenerInfo) {\n\t\tself.addEventListener(listenerInfo.type,listenerInfo.handler);\n\t});\n};\n\n/*\nAdd an event listener\n*/\nWidget.prototype.addEventListener = function(type,handler) {\n\tvar self = this;\n\tif(typeof handler === \"string\") { // The handler is a method name on this widget\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn self[handler].call(self,event);\n\t\t};\n\t} else { // The handler is a function\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn handler.call(self,event);\n\t\t};\n\t}\n};\n\n/*\nDispatch an event to a widget. If the widget doesn't handle the event then it is also dispatched to the parent widget\n*/\nWidget.prototype.dispatchEvent = function(event) {\n\tevent.widget = event.widget || this;\n\t// Dispatch the event if this widget handles it\n\tvar listener = this.eventListeners[event.type];\n\tif(listener) {\n\t\t// Don't propagate the event if the listener returned false\n\t\tif(!listener(event)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Dispatch the event to the parent widget\n\tif(this.parentWidget) {\n\t\treturn this.parentWidget.dispatchEvent(event);\n\t}\n\treturn true;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nRebuild a previously rendered widget\n*/\nWidget.prototype.refreshSelf = function() {\n\tvar nextSibling = this.findNextSiblingDomNode();\n\tthis.removeChildDomNodes();\n\tthis.render(this.parentDomNode,nextSibling);\n};\n\n/*\nRefresh all the children of a widget\n*/\nWidget.prototype.refreshChildren = function(changedTiddlers) {\n\tvar children = this.children,\n\t\trefreshed = false;\n\tfor (var i = 0; i < children.length; i++) {\n\t\trefreshed = children[i].refresh(changedTiddlers) || refreshed;\n\t}\n\treturn refreshed;\n};\n\n/*\nFind the next sibling in the DOM to this widget. This is done by scanning the widget tree through all next siblings and their descendents that share the same parent DOM node\n*/\nWidget.prototype.findNextSiblingDomNode = function(startIndex) {\n\t// Refer to this widget by its index within its parents children\n\tvar parent = this.parentWidget,\n\t\tindex = startIndex !== undefined ? startIndex : parent.children.indexOf(this);\nif(index === -1) {\n\tthrow \"node not found in parents children\";\n}\n\t// Look for a DOM node in the later siblings\n\twhile(++index < parent.children.length) {\n\t\tvar domNode = parent.children[index].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\t// Go back and look for later siblings of our parent if it has the same parent dom node\n\tvar grandParent = parent.parentWidget;\n\tif(grandParent && parent.parentDomNode === this.parentDomNode) {\n\t\tindex = grandParent.children.indexOf(parent);\n\t\tif(index !== -1) {\n\t\t\treturn parent.findNextSiblingDomNode(index);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nFind the first DOM node generated by a widget or its children\n*/\nWidget.prototype.findFirstDomNode = function() {\n\t// Return the first dom node of this widget, if we've got one\n\tif(this.domNodes.length > 0) {\n\t\treturn this.domNodes[0];\n\t}\n\t// Otherwise, recursively call our children\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar domNode = this.children[t].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRemove any DOM nodes created by this widget or its children\n*/\nWidget.prototype.removeChildDomNodes = function() {\n\t// If this widget has directly created DOM nodes, delete them and exit. This assumes that any child widgets are contained within the created DOM nodes, which would normally be the case\n\tif(this.domNodes.length > 0) {\n\t\t$tw.utils.each(this.domNodes,function(domNode) {\n\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t});\n\t\tthis.domNodes = [];\n\t} else {\n\t\t// Otherwise, ask the child widgets to delete their DOM nodes\n\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\tchildWidget.removeChildDomNodes();\n\t\t});\n\t}\n};\n\n/*\nInvoke the action widgets that are descendents of the current widget.\n*/\nWidget.prototype.invokeActions = function(triggeringWidget,event) {\n\tvar handled = false;\n\t// For each child widget\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar child = this.children[t];\n\t\t// Invoke the child if it is an action widget\n\t\tif(child.invokeAction) {\n\t\t\tchild.refreshSelf();\n\t\t\tif(child.invokeAction(triggeringWidget,event)) {\n\t\t\t\thandled = true;\n\t\t\t}\n\t\t}\n\t\t// Propagate through through the child if it permits it\n\t\tif(child.allowActionPropagation() && child.invokeActions(triggeringWidget,event)) {\n\t\t\thandled = true;\n\t\t}\n\t}\n\treturn handled;\n};\n\n/*\nInvoke the action widgets defined in a string\n*/\nWidget.prototype.invokeActionString = function(actions,triggeringWidget,event,variables) {\n\tactions = actions || \"\";\n\tvar parser = this.wiki.parseText(\"text/vnd.tiddlywiki\",actions,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document\n\t\t}),\n\t\twidgetNode = this.wiki.makeWidget(parser,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document,\n\t\t\tvariables: variables\n\t\t});\n\tvar container = this.document.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn widgetNode.invokeActions(this,event);\n};\n\n/*\nExecute action tiddlers by tag\n*/\nWidget.prototype.invokeActionsByTag = function(tag,event,variables) {\n\tvar self = this;\n\t$tw.utils.each(self.wiki.filterTiddlers(\"[all[shadows+tiddlers]tag[\" + tag + \"]!has[draft.of]]\"),function(title) {\n\t\tself.invokeActionString(self.wiki.getTiddlerText(title),self,event,variables);\n\t});\n};\n\nWidget.prototype.allowActionPropagation = function() {\n\treturn true;\n};\n\nexports.widget = Widget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/wikify.js": {
"title": "$:/core/modules/widgets/wikify.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/wikify.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to wikify text into a variable\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar WikifyWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nWikifyWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nWikifyWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWikifyWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.wikifyName = this.getAttribute(\"name\");\n\tthis.wikifyText = this.getAttribute(\"text\");\n\tthis.wikifyType = this.getAttribute(\"type\");\n\tthis.wikifyMode = this.getAttribute(\"mode\",\"block\");\n\tthis.wikifyOutput = this.getAttribute(\"output\",\"text\");\n\t// Create the parse tree\n\tthis.wikifyParser = this.wiki.parseText(this.wikifyType,this.wikifyText,{\n\t\t\tparseAsInline: this.wikifyMode === \"inline\"\n\t\t});\n\t// Create the widget tree \n\tthis.wikifyWidgetNode = this.wiki.makeWidget(this.wikifyParser,{\n\t\t\tdocument: $tw.fakeDocument,\n\t\t\tparentWidget: this\n\t\t});\n\t// Render the widget tree to the container\n\tthis.wikifyContainer = $tw.fakeDocument.createElement(\"div\");\n\tthis.wikifyWidgetNode.render(this.wikifyContainer,null);\n\tthis.wikifyResult = this.getResult();\n\t// Set context variable\n\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nReturn the result string\n*/\nWikifyWidget.prototype.getResult = function() {\n\tvar result;\n\tswitch(this.wikifyOutput) {\n\t\tcase \"text\":\n\t\t\tresult = this.wikifyContainer.textContent;\n\t\t\tbreak;\n\t\tcase \"formattedtext\":\n\t\t\tresult = this.wikifyContainer.formattedTextContent;\n\t\t\tbreak;\n\t\tcase \"html\":\n\t\t\tresult = this.wikifyContainer.innerHTML;\n\t\t\tbreak;\n\t\tcase \"parsetree\":\n\t\t\tresult = JSON.stringify(this.wikifyParser.tree,0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t\tcase \"widgettree\":\n\t\t\tresult = JSON.stringify(this.getWidgetTree(),0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t}\n\treturn result;\n};\n\n/*\nReturn a string of the widget tree\n*/\nWikifyWidget.prototype.getWidgetTree = function() {\n\tvar copyNode = function(widgetNode,resultNode) {\n\t\t\tvar type = widgetNode.parseTreeNode.type;\n\t\t\tresultNode.type = type;\n\t\t\tswitch(type) {\n\t\t\t\tcase \"element\":\n\t\t\t\t\tresultNode.tag = widgetNode.parseTreeNode.tag;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"text\":\n\t\t\t\t\tresultNode.text = widgetNode.parseTreeNode.text;\n\t\t\t\t\tbreak;\t\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.attributes || {}).length > 0) {\n\t\t\t\tresultNode.attributes = {};\n\t\t\t\t$tw.utils.each(widgetNode.attributes,function(attr,attrName) {\n\t\t\t\t\tresultNode.attributes[attrName] = widgetNode.getAttribute(attrName);\n\t\t\t\t});\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.children || {}).length > 0) {\n\t\t\t\tresultNode.children = [];\n\t\t\t\t$tw.utils.each(widgetNode.children,function(widgetChildNode) {\n\t\t\t\t\tvar node = {};\n\t\t\t\t\tresultNode.children.push(node);\n\t\t\t\t\tcopyNode(widgetChildNode,node);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tresults = {};\n\tcopyNode(this.wikifyWidgetNode,results);\n\treturn results;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWikifyWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh ourselves entirely if any of our attributes have changed\n\tif(changedAttributes.name || changedAttributes.text || changedAttributes.type || changedAttributes.mode || changedAttributes.output) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\t// Refresh the widget tree\n\t\tif(this.wikifyWidgetNode.refresh(changedTiddlers)) {\n\t\t\t// Check if there was any change\n\t\t\tvar result = this.getResult();\n\t\t\tif(result !== this.wikifyResult) {\n\t\t\t\t// If so, save the change\n\t\t\t\tthis.wikifyResult = result;\n\t\t\t\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t\t\t\t// Refresh each of our child widgets\n\t\t\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\t\t\tchildWidget.refreshSelf();\n\t\t\t\t});\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// Just refresh the children\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.wikify = WikifyWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/wiki-bulkops.js": {
"title": "$:/core/modules/wiki-bulkops.js",
"text": "/*\\\ntitle: $:/core/modules/wiki-bulkops.js\ntype: application/javascript\nmodule-type: wikimethod\n\nBulk tiddler operations such as rename.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRename a tiddler, and relink any tags or lists that reference it.\n*/\nfunction renameTiddler(fromTitle,toTitle,options) {\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\t// Rename the tiddler itself\n\t\tvar oldTiddler = this.getTiddler(fromTitle),\n\t\t\tnewTiddler = new $tw.Tiddler(oldTiddler,{title: toTitle},this.getModificationFields());\n\t\tnewTiddler = $tw.hooks.invokeHook(\"th-renaming-tiddler\",newTiddler,oldTiddler);\n\t\tthis.addTiddler(newTiddler);\n\t\tthis.deleteTiddler(fromTitle);\n\t\t// Rename any tags or lists that reference it\n\t\tthis.relinkTiddler(fromTitle,toTitle,options)\n\t}\n}\n\n/*\nRelink any tags or lists that reference a given tiddler\n*/\nfunction relinkTiddler(fromTitle,toTitle,options) {\n\tvar self = this;\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\tthis.each(function(tiddler,title) {\n\t\t\tvar type = tiddler.fields.type || \"\";\n\t\t\t// Don't touch plugins or JavaScript modules\n\t\t\tif(!tiddler.fields[\"plugin-type\"] && type !== \"application/javascript\") {\n\t\t\t\tvar tags = tiddler.fields.tags ? tiddler.fields.tags.slice(0) : undefined,\n\t\t\t\t\tlist = tiddler.fields.list ? tiddler.fields.list.slice(0) : undefined,\n\t\t\t\t\tisModified = false;\n\t\t\t\tif(!options.dontRenameInTags) {\n\t\t\t\t\t// Rename tags\n\t\t\t\t\t$tw.utils.each(tags,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming tag '\" + tags[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\ttags[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(!options.dontRenameInLists) {\n\t\t\t\t\t// Rename lists\n\t\t\t\t\t$tw.utils.each(list,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming list item '\" + list[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\tlist[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(isModified) {\n\t\t\t\t\tvar newTiddler = new $tw.Tiddler(tiddler,{tags: tags, list: list},self.getModificationFields())\n\t\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-relinking-tiddler\",newTiddler,tiddler);\n\t\t\t\t\tself.addTiddler(newTiddler);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\nexports.renameTiddler = renameTiddler;\nexports.relinkTiddler = relinkTiddler;\n\n})();\n",
"type": "application/javascript",
"module-type": "wikimethod"
},
"$:/core/modules/wiki.js": {
"title": "$:/core/modules/wiki.js",
"text": "/*\\\ntitle: $:/core/modules/wiki.js\ntype: application/javascript\nmodule-type: wikimethod\n\nExtension methods for the $tw.Wiki object\n\nAdds the following properties to the wiki object:\n\n* `eventListeners` is a hashmap by type of arrays of listener functions\n* `changedTiddlers` is a hashmap describing changes to named tiddlers since wiki change events were last dispatched. Each entry is a hashmap containing two fields:\n\tmodified: true/false\n\tdeleted: true/false\n* `changeCount` is a hashmap by tiddler title containing a numerical index that starts at zero and is incremented each time a tiddler is created changed or deleted\n* `caches` is a hashmap by tiddler title containing a further hashmap of named cache objects. Caches are automatically cleared when a tiddler is modified or deleted\n* `globalCache` is a hashmap by cache name of cache objects that are cleared whenever any tiddler change occurs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar USER_NAME_TITLE = \"$:/status/UserName\",\n\tTIMESTAMP_DISABLE_TITLE = \"$:/config/TimestampDisable\";\n\n/*\nAdd available indexers to this wiki\n*/\nexports.addIndexersToWiki = function() {\n\tvar self = this;\n\t$tw.utils.each($tw.modules.applyMethods(\"indexer\"),function(Indexer,name) {\n\t\tself.addIndexer(new Indexer(self),name);\n\t});\n};\n\n/*\nGet the value of a text reference. Text references can have any of these forms:\n\t<tiddlertitle>\n\t<tiddlertitle>!!<fieldname>\n\t!!<fieldname> - specifies a field of the current tiddlers\n\t<tiddlertitle>##<index>\n*/\nexports.getTextReference = function(textRef,defaultText,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tif(tr.field) {\n\t\tvar tiddler = this.getTiddler(title);\n\t\tif(tr.field === \"title\") { // Special case so we can return the title of a non-existent tiddler\n\t\t\treturn title;\n\t\t} else if(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\treturn tiddler.getFieldString(tr.field);\n\t\t} else {\n\t\t\treturn defaultText;\n\t\t}\n\t} else if(tr.index) {\n\t\treturn this.extractTiddlerDataItem(title,tr.index,defaultText);\n\t} else {\n\t\treturn this.getTiddlerText(title,defaultText);\n\t}\n};\n\nexports.setTextReference = function(textRef,value,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tthis.setText(title,tr.field,tr.index,value);\n};\n\nexports.setText = function(title,field,index,value,options) {\n\toptions = options || {};\n\tvar creationFields = options.suppressTimestamp ? {} : this.getCreationFields(),\n\t\tmodificationFields = options.suppressTimestamp ? {} : this.getModificationFields();\n\t// Check if it is a reference to a tiddler field\n\tif(index) {\n\t\tvar data = this.getTiddlerData(title,Object.create(null));\n\t\tif(value !== undefined) {\n\t\t\tdata[index] = value;\n\t\t} else {\n\t\t\tdelete data[index];\n\t\t}\n\t\tthis.setTiddlerData(title,data,modificationFields);\n\t} else {\n\t\tvar tiddler = this.getTiddler(title),\n\t\t\tfields = {title: title};\n\t\tfields[field || \"text\"] = value;\n\t\tthis.addTiddler(new $tw.Tiddler(creationFields,tiddler,fields,modificationFields));\n\t}\n};\n\nexports.deleteTextReference = function(textRef,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle,tiddler,fields;\n\t// Check if it is a reference to a tiddler\n\tif(tr.title && !tr.field) {\n\t\tthis.deleteTiddler(tr.title);\n\t// Else check for a field reference\n\t} else if(tr.field) {\n\t\ttitle = tr.title || currTiddlerTitle;\n\t\ttiddler = this.getTiddler(title);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\tfields = Object.create(null);\n\t\t\tfields[tr.field] = undefined;\n\t\t\tthis.addTiddler(new $tw.Tiddler(tiddler,fields,this.getModificationFields()));\n\t\t}\n\t}\n};\n\nexports.addEventListener = function(type,listener) {\n\tthis.eventListeners = this.eventListeners || {};\n\tthis.eventListeners[type] = this.eventListeners[type] || [];\n\tthis.eventListeners[type].push(listener);\t\n};\n\nexports.removeEventListener = function(type,listener) {\n\tvar listeners = this.eventListeners[type];\n\tif(listeners) {\n\t\tvar p = listeners.indexOf(listener);\n\t\tif(p !== -1) {\n\t\t\tlisteners.splice(p,1);\n\t\t}\n\t}\n};\n\nexports.dispatchEvent = function(type /*, args */) {\n\tvar args = Array.prototype.slice.call(arguments,1),\n\t\tlisteners = this.eventListeners[type];\n\tif(listeners) {\n\t\tfor(var p=0; p<listeners.length; p++) {\n\t\t\tvar listener = listeners[p];\n\t\t\tlistener.apply(listener,args);\n\t\t}\n\t}\n};\n\n/*\nCauses a tiddler to be marked as changed, incrementing the change count, and triggers event handlers.\nThis method should be called after the changes it describes have been made to the wiki.tiddlers[] array.\n\ttitle: Title of tiddler\n\tisDeleted: defaults to false (meaning the tiddler has been created or modified),\n\t\ttrue if the tiddler has been deleted\n*/\nexports.enqueueTiddlerEvent = function(title,isDeleted) {\n\t// Record the touch in the list of changed tiddlers\n\tthis.changedTiddlers = this.changedTiddlers || Object.create(null);\n\tthis.changedTiddlers[title] = this.changedTiddlers[title] || Object.create(null);\n\tthis.changedTiddlers[title][isDeleted ? \"deleted\" : \"modified\"] = true;\n\t// Increment the change count\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\tthis.changeCount[title]++;\n\t} else {\n\t\tthis.changeCount[title] = 1;\n\t}\n\t// Trigger events\n\tthis.eventListeners = this.eventListeners || {};\n\tif(!this.eventsTriggered) {\n\t\tvar self = this;\n\t\t$tw.utils.nextTick(function() {\n\t\t\tvar changes = self.changedTiddlers;\n\t\t\tself.changedTiddlers = Object.create(null);\n\t\t\tself.eventsTriggered = false;\n\t\t\tif($tw.utils.count(changes) > 0) {\n\t\t\t\tself.dispatchEvent(\"change\",changes);\n\t\t\t}\n\t\t});\n\t\tthis.eventsTriggered = true;\n\t}\n};\n\nexports.getSizeOfTiddlerEventQueue = function() {\n\treturn $tw.utils.count(this.changedTiddlers);\n};\n\nexports.clearTiddlerEventQueue = function() {\n\tthis.changedTiddlers = Object.create(null);\n\tthis.changeCount = Object.create(null);\n};\n\nexports.getChangeCount = function(title) {\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\treturn this.changeCount[title];\n\t} else {\n\t\treturn 0;\n\t}\n};\n\n/*\nGenerate an unused title from the specified base\n*/\nexports.generateNewTitle = function(baseTitle,options) {\n\toptions = options || {};\n\tvar c = 0,\n\t\ttitle = baseTitle;\n\twhile(this.tiddlerExists(title) || this.isShadowTiddler(title) || this.findDraft(title)) {\n\t\ttitle = baseTitle + \n\t\t\t(options.prefix || \" \") + \n\t\t\t(++c);\n\t}\n\treturn title;\n};\n\nexports.isSystemTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/\") === 0;\n};\n\nexports.isTemporaryTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/temp/\") === 0;\n};\n\nexports.isImageTiddler = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\t\t\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/vnd.tiddlywiki\"];\n\t\treturn !!contentTypeInfo && contentTypeInfo.flags.indexOf(\"image\") !== -1;\n\t} else {\n\t\treturn null;\n\t}\n};\n\nexports.isBinaryTiddler = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\t\t\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/vnd.tiddlywiki\"];\n\t\treturn !!contentTypeInfo && contentTypeInfo.encoding === \"base64\";\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLike addTiddler() except it will silently reject any plugin tiddlers that are older than the currently loaded version. Returns true if the tiddler was imported\n*/\nexports.importTiddler = function(tiddler) {\n\tvar existingTiddler = this.getTiddler(tiddler.fields.title);\n\t// Check if we're dealing with a plugin\n\tif(tiddler && tiddler.hasField(\"plugin-type\") && tiddler.hasField(\"version\") && existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t// Reject the incoming plugin if it is older\n\t\tif(!$tw.utils.checkVersions(tiddler.fields.version,existingTiddler.fields.version)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Fall through to adding the tiddler\n\tthis.addTiddler(tiddler);\n\treturn true;\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is created\n*/\nexports.getCreationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = {\n\t\t\t\tcreated: new Date()\n\t\t\t},\n\t\t\tcreator = this.getTiddlerText(USER_NAME_TITLE);\n\t\tif(creator) {\n\t\t\tfields.creator = creator;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is modified\n*/\nexports.getModificationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = Object.create(null),\n\t\t\tmodifier = this.getTiddlerText(USER_NAME_TITLE);\n\t\tfields.modified = new Date();\n\t\tif(modifier) {\n\t\t\tfields.modifier = modifier;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a sorted array of tiddler titles. Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.getTiddlers = function(options) {\n\toptions = options || Object.create(null);\n\tvar self = this,\n\t\tsortField = options.sortField || \"title\",\n\t\ttiddlers = [], t, titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tif(options.includeSystem || !self.isSystemTiddler(title)) {\n\t\t\tif(!options.excludeTag || !tiddler.hasTag(options.excludeTag)) {\n\t\t\t\ttiddlers.push(tiddler);\n\t\t\t}\n\t\t}\n\t});\n\ttiddlers.sort(function(a,b) {\n\t\tvar aa = a.fields[sortField].toLowerCase() || \"\",\n\t\t\tbb = b.fields[sortField].toLowerCase() || \"\";\n\t\tif(aa < bb) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(aa > bb) {\n\t\t\t\treturn 1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n\tfor(t=0; t<tiddlers.length; t++) {\n\t\ttitles.push(tiddlers[t].fields.title);\n\t}\n\treturn titles;\n};\n\nexports.countTiddlers = function(excludeTag) {\n\tvar tiddlers = this.getTiddlers({excludeTag: excludeTag});\n\treturn $tw.utils.count(tiddlers);\n};\n\n/*\nReturns a function iterator(callback) that iterates through the specified titles, and invokes the callback with callback(tiddler,title)\n*/\nexports.makeTiddlerIterator = function(titles) {\n\tvar self = this;\n\tif(!$tw.utils.isArray(titles)) {\n\t\ttitles = Object.keys(titles);\n\t} else {\n\t\ttitles = titles.slice(0);\n\t}\n\treturn function(callback) {\n\t\ttitles.forEach(function(title) {\n\t\t\tcallback(self.getTiddler(title),title);\n\t\t});\n\t};\n};\n\n/*\nSort an array of tiddler titles by a specified field\n\ttitles: array of titles (sorted in place)\n\tsortField: name of field to sort by\n\tisDescending: true if the sort should be descending\n\tisCaseSensitive: true if the sort should consider upper and lower case letters to be different\n*/\nexports.sortTiddlers = function(titles,sortField,isDescending,isCaseSensitive,isNumeric,isAlphaNumeric) {\n\tvar self = this;\n\ttitles.sort(function(a,b) {\n\t\tvar x,y,\n\t\t\tcompareNumbers = function(x,y) {\n\t\t\t\tvar result = \n\t\t\t\t\tisNaN(x) && !isNaN(y) ? (isDescending ? -1 : 1) :\n\t\t\t\t\t!isNaN(x) && isNaN(y) ? (isDescending ? 1 : -1) :\n\t\t\t\t\t\t\t\t\t\t\t(isDescending ? y - x : x - y);\n\t\t\t\treturn result;\n\t\t\t};\n\t\tif(sortField !== \"title\") {\n\t\t\tvar tiddlerA = self.getTiddler(a),\n\t\t\t\ttiddlerB = self.getTiddler(b);\n\t\t\tif(tiddlerA) {\n\t\t\t\ta = tiddlerA.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\ta = \"\";\n\t\t\t}\n\t\t\tif(tiddlerB) {\n\t\t\t\tb = tiddlerB.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\tb = \"\";\n\t\t\t}\n\t\t}\n\t\tx = Number(a);\n\t\ty = Number(b);\n\t\tif(isNumeric && (!isNaN(x) || !isNaN(y))) {\n\t\t\treturn compareNumbers(x,y);\n\t\t} else if($tw.utils.isDate(a) && $tw.utils.isDate(b)) {\n\t\t\treturn isDescending ? b - a : a - b;\n\t\t} else if(isAlphaNumeric) {\n\t\t\treturn isDescending ? b.localeCompare(a,undefined,{numeric: true,sensitivity: \"base\"}) : a.localeCompare(b,undefined,{numeric: true,sensitivity: \"base\"});\n\t\t} else {\n\t\t\ta = String(a);\n\t\t\tb = String(b);\n\t\t\tif(!isCaseSensitive) {\n\t\t\t\ta = a.toLowerCase();\n\t\t\t\tb = b.toLowerCase();\n\t\t\t}\n\t\t\treturn isDescending ? b.localeCompare(a) : a.localeCompare(b);\n\t\t}\n\t});\n};\n\n/*\nFor every tiddler invoke a callback(title,tiddler) with `this` set to the wiki object. Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.forEachTiddler = function(/* [options,]callback */) {\n\tvar arg = 0,\n\t\toptions = arguments.length >= 2 ? arguments[arg++] : {},\n\t\tcallback = arguments[arg++],\n\t\ttitles = this.getTiddlers(options),\n\t\tt, tiddler;\n\tfor(t=0; t<titles.length; t++) {\n\t\ttiddler = this.getTiddler(titles[t]);\n\t\tif(tiddler) {\n\t\t\tcallback.call(this,tiddler.fields.title,tiddler);\n\t\t}\n\t}\n};\n\n/*\nReturn an array of tiddler titles that are directly linked within the given parse tree\n */\nexports.extractLinks = function(parseTreeRoot) {\n\t// Count up the links\n\tvar links = [],\n\t\tcheckParseTree = function(parseTree) {\n\t\t\tfor(var t=0; t<parseTree.length; t++) {\n\t\t\t\tvar parseTreeNode = parseTree[t];\n\t\t\t\tif(parseTreeNode.type === \"link\" && parseTreeNode.attributes.to && parseTreeNode.attributes.to.type === \"string\") {\n\t\t\t\t\tvar value = parseTreeNode.attributes.to.value;\n\t\t\t\t\tif(links.indexOf(value) === -1) {\n\t\t\t\t\t\tlinks.push(value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(parseTreeNode.children) {\n\t\t\t\t\tcheckParseTree(parseTreeNode.children);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\tcheckParseTree(parseTreeRoot);\n\treturn links;\n};\n\n/*\nReturn an array of tiddler titles that are directly linked from the specified tiddler\n*/\nexports.getTiddlerLinks = function(title) {\n\tvar self = this;\n\t// We'll cache the links so they only get computed if the tiddler changes\n\treturn this.getCacheForTiddler(title,\"links\",function() {\n\t\t// Parse the tiddler\n\t\tvar parser = self.parseTiddler(title);\n\t\tif(parser) {\n\t\t\treturn self.extractLinks(parser.tree);\n\t\t}\n\t\treturn [];\n\t});\n};\n\n/*\nReturn an array of tiddler titles that link to the specified tiddler\n*/\nexports.getTiddlerBacklinks = function(targetTitle) {\n\tvar self = this,\n\t\tbacklinksIndexer = this.getIndexer(\"BacklinksIndexer\"),\n\t\tbacklinks = backlinksIndexer && backlinksIndexer.lookup(targetTitle);\n\n\tif(!backlinks) {\n\t\tbacklinks = [];\n\t\tthis.forEachTiddler(function(title,tiddler) {\n\t\t\tvar links = self.getTiddlerLinks(title);\n\t\t\tif(links.indexOf(targetTitle) !== -1) {\n\t\t\t\tbacklinks.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn backlinks;\n};\n\n/*\nReturn a hashmap of tiddler titles that are referenced but not defined. Each value is the number of times the missing tiddler is referenced\n*/\nexports.getMissingTitles = function() {\n\tvar self = this,\n\t\tmissing = [];\n// We should cache the missing tiddler list, even if we recreate it every time any tiddler is modified\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tif((!self.tiddlerExists(link) && !self.isShadowTiddler(link)) && missing.indexOf(link) === -1) {\n\t\t\t\tmissing.push(link);\n\t\t\t}\n\t\t});\n\t});\n\treturn missing;\n};\n\nexports.getOrphanTitles = function() {\n\tvar self = this,\n\t\torphans = this.getTiddlers();\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tvar p = orphans.indexOf(link);\n\t\t\tif(p !== -1) {\n\t\t\t\torphans.splice(p,1);\n\t\t\t}\n\t\t});\n\t});\n\treturn orphans; // Todo\n};\n\n/*\nRetrieves a list of the tiddler titles that are tagged with a given tag\n*/\nexports.getTiddlersWithTag = function(tag) {\n\t// Try to use the indexer\n\tvar self = this,\n\t\ttagIndexer = this.getIndexer(\"TagIndexer\"),\n\t\tresults = tagIndexer && tagIndexer.subIndexers[3].lookup(tag);\n\tif(!results) {\n\t\t// If not available, perform a manual scan\n\t\tresults = this.getGlobalCache(\"taglist-\" + tag,function() {\n\t\t\tvar tagmap = self.getTagMap();\n\t\t\treturn self.sortByList(tagmap[tag],tag);\n\t\t});\n\t}\n\treturn results;\n};\n\n/*\nGet a hashmap by tag of arrays of tiddler titles\n*/\nexports.getTagMap = function() {\n\tvar self = this;\n\treturn this.getGlobalCache(\"tagmap\",function() {\n\t\tvar tags = Object.create(null),\n\t\t\tstoreTags = function(tagArray,title) {\n\t\t\t\tif(tagArray) {\n\t\t\t\t\tfor(var index=0; index<tagArray.length; index++) {\n\t\t\t\t\t\tvar tag = tagArray[index];\n\t\t\t\t\t\tif($tw.utils.hop(tags,tag)) {\n\t\t\t\t\t\t\ttags[tag].push(title);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttags[tag] = [title];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\ttitle, tiddler;\n\t\t// Collect up all the tags\n\t\tself.eachShadow(function(tiddler,title) {\n\t\t\tif(!self.tiddlerExists(title)) {\n\t\t\t\ttiddler = self.getTiddler(title);\n\t\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t\t}\n\t\t});\n\t\tself.each(function(tiddler,title) {\n\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t});\n\t\treturn tags;\n\t});\n};\n\n/*\nLookup a given tiddler and return a list of all the tiddlers that include it in the specified list field\n*/\nexports.findListingsOfTiddler = function(targetTitle,fieldName) {\n\tfieldName = fieldName || \"list\";\n\tvar titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tvar list = $tw.utils.parseStringArray(tiddler.fields[fieldName]);\n\t\tif(list && list.indexOf(targetTitle) !== -1) {\n\t\t\ttitles.push(title);\n\t\t}\n\t});\n\treturn titles;\n};\n\n/*\nSorts an array of tiddler titles according to an ordered list\n*/\nexports.sortByList = function(array,listTitle) {\n\tvar self = this,\n\t\treplacedTitles = Object.create(null);\n\t// Given a title, this function will place it in the correct location\n\t// within titles.\n\tfunction moveItemInList(title) {\n\t\tif(!$tw.utils.hop(replacedTitles, title)) {\n\t\t\treplacedTitles[title] = true;\n\t\t\tvar newPos = -1,\n\t\t\t\ttiddler = self.getTiddler(title);\n\t\t\tif(tiddler) {\n\t\t\t\tvar beforeTitle = tiddler.fields[\"list-before\"],\n\t\t\t\t\tafterTitle = tiddler.fields[\"list-after\"];\n\t\t\t\tif(beforeTitle === \"\") {\n\t\t\t\t\tnewPos = 0;\n\t\t\t\t} else if(afterTitle === \"\") {\n\t\t\t\t\tnewPos = titles.length;\n\t\t\t\t} else if(beforeTitle) {\n\t\t\t\t\t// if this title is placed relative\n\t\t\t\t\t// to another title, make sure that\n\t\t\t\t\t// title is placed before we place\n\t\t\t\t\t// this one.\n\t\t\t\t\tmoveItemInList(beforeTitle);\n\t\t\t\t\tnewPos = titles.indexOf(beforeTitle);\n\t\t\t\t} else if(afterTitle) {\n\t\t\t\t\t// Same deal\n\t\t\t\t\tmoveItemInList(afterTitle);\n\t\t\t\t\tnewPos = titles.indexOf(afterTitle);\n\t\t\t\t\tif(newPos >= 0) {\n\t\t\t\t\t\t++newPos;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If a new position is specified, let's move it\n\t\t\t\tif (newPos !== -1) {\n\t\t\t\t\t// get its current Pos, and make sure\n\t\t\t\t\t// sure that it's _actually_ in the list\n\t\t\t\t\t// and that it would _actually_ move\n\t\t\t\t\t// (#4275) We don't bother calling\n\t\t\t\t\t// indexOf unless we have a new\n\t\t\t\t\t// position to work with\n\t\t\t\t\tvar currPos = titles.indexOf(title);\n\t\t\t\t\tif(currPos >= 0 && newPos !== currPos) {\n\t\t\t\t\t\t// move it!\n\t\t\t\t\t\ttitles.splice(currPos,1);\n\t\t\t\t\t\tif(newPos >= currPos) {\n\t\t\t\t\t\t\tnewPos--;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttitles.splice(newPos,0,title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tvar list = this.getTiddlerList(listTitle);\n\tif(!array || array.length === 0) {\n\t\treturn [];\n\t} else {\n\t\tvar titles = [], t, title;\n\t\t// First place any entries that are present in the list\n\t\tfor(t=0; t<list.length; t++) {\n\t\t\ttitle = list[t];\n\t\t\tif(array.indexOf(title) !== -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Then place any remaining entries\n\t\tfor(t=0; t<array.length; t++) {\n\t\t\ttitle = array[t];\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Finally obey the list-before and list-after fields of each tiddler in turn\n\t\tvar sortedTitles = titles.slice(0);\n\t\tfor(t=0; t<sortedTitles.length; t++) {\n\t\t\ttitle = sortedTitles[t];\n\t\t\tmoveItemInList(title);\n\t\t}\n\t\treturn titles;\n\t}\n};\n\nexports.getSubTiddler = function(title,subTiddlerTitle) {\n\tvar bundleInfo = this.getPluginInfo(title) || this.getTiddlerDataCached(title);\n\tif(bundleInfo && bundleInfo.tiddlers) {\n\t\tvar subTiddler = bundleInfo.tiddlers[subTiddlerTitle];\n\t\tif(subTiddler) {\n\t\t\treturn new $tw.Tiddler(subTiddler);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRetrieve a tiddler as a JSON string of the fields\n*/\nexports.getTiddlerAsJson = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\tvar fields = Object.create(null);\n\t\t$tw.utils.each(tiddler.fields,function(value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\treturn JSON.stringify(fields);\n\t} else {\n\t\treturn JSON.stringify({title: title});\n\t}\n};\n\nexports.getTiddlersAsJson = function(filter,spaces) {\n\tvar tiddlers = this.filterTiddlers(filter),\n\t\tspaces = (spaces === undefined) ? $tw.config.preferences.jsonSpaces : spaces,\n\t\tdata = [];\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\tvar tiddler = this.getTiddler(tiddlers[t]);\n\t\tif(tiddler) {\n\t\t\tvar fields = new Object();\n\t\t\tfor(var field in tiddler.fields) {\n\t\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t\t}\n\t\t\tdata.push(fields);\n\t\t}\n\t}\n\treturn JSON.stringify(data,null,spaces);\n};\n\n/*\nGet the content of a tiddler as a JavaScript object. How this is done depends on the type of the tiddler:\n\napplication/json: the tiddler JSON is parsed into an object\napplication/x-tiddler-dictionary: the tiddler is parsed as sequence of name:value pairs\n\nOther types currently just return null.\n\ntitleOrTiddler: string tiddler title or a tiddler object\ndefaultData: default data to be returned if the tiddler is missing or doesn't contain data\n\nNote that the same value is returned for repeated calls for the same tiddler data. The value is frozen to prevent modification; otherwise modifications would be visible to all callers\n*/\nexports.getTiddlerDataCached = function(titleOrTiddler,defaultData) {\n\tvar self = this,\n\t\ttiddler = titleOrTiddler;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler) {\n\t\treturn this.getCacheForTiddler(tiddler.fields.title,\"data\",function() {\n\t\t\t// Return the frozen value\n\t\t\tvar value = self.getTiddlerData(tiddler.fields.title,undefined);\n\t\t\t$tw.utils.deepFreeze(value);\n\t\t\treturn value;\n\t\t}) || defaultData;\n\t} else {\n\t\treturn defaultData;\n\t}\n};\n\n/*\nAlternative, uncached version of getTiddlerDataCached(). The return value can be mutated freely and reused\n*/\nexports.getTiddlerData = function(titleOrTiddler,defaultData) {\n\tvar tiddler = titleOrTiddler,\n\t\tdata;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler && tiddler.fields.text) {\n\t\tswitch(tiddler.fields.type) {\n\t\t\tcase \"application/json\":\n\t\t\t\t// JSON tiddler\n\t\t\t\ttry {\n\t\t\t\t\tdata = JSON.parse(tiddler.fields.text);\n\t\t\t\t} catch(ex) {\n\t\t\t\t\treturn defaultData;\n\t\t\t\t}\n\t\t\t\treturn data;\n\t\t\tcase \"application/x-tiddler-dictionary\":\n\t\t\t\treturn $tw.utils.parseFields(tiddler.fields.text);\n\t\t}\n\t}\n\treturn defaultData;\n};\n\n/*\nExtract an indexed field from within a data tiddler\n*/\nexports.extractTiddlerDataItem = function(titleOrTiddler,index,defaultText) {\n\tvar data = this.getTiddlerDataCached(titleOrTiddler,Object.create(null)),\n\t\ttext;\n\tif(data && $tw.utils.hop(data,index)) {\n\t\ttext = data[index];\n\t}\n\tif(typeof text === \"string\" || typeof text === \"number\") {\n\t\treturn text.toString();\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nSet a tiddlers content to a JavaScript object. Currently this is done by setting the tiddler's type to \"application/json\" and setting the text to the JSON text of the data.\ntitle: title of tiddler\ndata: object that can be serialised to JSON\nfields: optional hashmap of additional tiddler fields to be set\n*/\nexports.setTiddlerData = function(title,data,fields) {\n\tvar existingTiddler = this.getTiddler(title),\n\t\tnewFields = {\n\t\t\ttitle: title\n\t};\n\tif(existingTiddler && existingTiddler.fields.type === \"application/x-tiddler-dictionary\") {\n\t\tnewFields.text = $tw.utils.makeTiddlerDictionary(data);\n\t} else {\n\t\tnewFields.type = \"application/json\";\n\t\tnewFields.text = JSON.stringify(data,null,$tw.config.preferences.jsonSpaces);\n\t}\n\tthis.addTiddler(new $tw.Tiddler(this.getCreationFields(),existingTiddler,fields,newFields,this.getModificationFields()));\n};\n\n/*\nReturn the content of a tiddler as an array containing each line\n*/\nexports.getTiddlerList = function(title,field,index) {\n\tif(index) {\n\t\treturn $tw.utils.parseStringArray(this.extractTiddlerDataItem(title,index,\"\"));\n\t}\n\tfield = field || \"list\";\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\treturn ($tw.utils.parseStringArray(tiddler.fields[field]) || []).slice(0);\n\t}\n\treturn [];\n};\n\n// Return a named global cache object. Global cache objects are cleared whenever a tiddler change occurs\nexports.getGlobalCache = function(cacheName,initializer) {\n\tthis.globalCache = this.globalCache || Object.create(null);\n\tif($tw.utils.hop(this.globalCache,cacheName)) {\n\t\treturn this.globalCache[cacheName];\n\t} else {\n\t\tthis.globalCache[cacheName] = initializer();\n\t\treturn this.globalCache[cacheName];\n\t}\n};\n\nexports.clearGlobalCache = function() {\n\tthis.globalCache = Object.create(null);\n};\n\n// Return the named cache object for a tiddler. If the cache doesn't exist then the initializer function is invoked to create it\nexports.getCacheForTiddler = function(title,cacheName,initializer) {\n\tthis.caches = this.caches || Object.create(null);\n\tvar caches = this.caches[title];\n\tif(caches && caches[cacheName]) {\n\t\treturn caches[cacheName];\n\t} else {\n\t\tif(!caches) {\n\t\t\tcaches = Object.create(null);\n\t\t\tthis.caches[title] = caches;\n\t\t}\n\t\tcaches[cacheName] = initializer();\n\t\treturn caches[cacheName];\n\t}\n};\n\n// Clear all caches associated with a particular tiddler, or, if the title is null, clear all the caches for all the tiddlers\nexports.clearCache = function(title) {\n\tif(title) {\n\t\tthis.caches = this.caches || Object.create(null);\n\t\tif($tw.utils.hop(this.caches,title)) {\n\t\t\tdelete this.caches[title];\n\t\t}\n\t} else {\n\t\tthis.caches = Object.create(null);\n\t}\n};\n\nexports.initParsers = function(moduleType) {\n\t// Install the parser modules\n\t$tw.Wiki.parsers = {};\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(\"parser\",function(title,module) {\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\t$tw.Wiki.parsers[f] = module[f]; // Store the parser class\n\t\t\t}\n\t\t}\n\t});\n\t// Use the generic binary parser for any binary types not registered so far\n\tif($tw.Wiki.parsers[\"application/octet-stream\"]) {\n\t\tObject.keys($tw.config.contentTypeInfo).forEach(function(type) {\n\t\t\tif(!$tw.utils.hop($tw.Wiki.parsers,type) && $tw.config.contentTypeInfo[type].encoding === \"base64\") {\n\t\t\t\t$tw.Wiki.parsers[type] = $tw.Wiki.parsers[\"application/octet-stream\"];\n\t\t\t}\n\t\t});\t\t\n\t}\n};\n\n/*\nParse a block of text of a specified MIME type\n\ttype: content type of text to be parsed\n\ttext: text\n\toptions: see below\nOptions include:\n\tparseAsInline: if true, the text of the tiddler will be parsed as an inline run\n\t_canonical_uri: optional string of the canonical URI of this content\n*/\nexports.parseText = function(type,text,options) {\n\ttext = text || \"\";\n\toptions = options || {};\n\t// Select a parser\n\tvar Parser = $tw.Wiki.parsers[type];\n\tif(!Parser && $tw.utils.getFileExtensionInfo(type)) {\n\t\tParser = $tw.Wiki.parsers[$tw.utils.getFileExtensionInfo(type).type];\n\t}\n\tif(!Parser) {\n\t\tParser = $tw.Wiki.parsers[options.defaultType || \"text/vnd.tiddlywiki\"];\n\t}\n\tif(!Parser) {\n\t\treturn null;\n\t}\n\t// Return the parser instance\n\treturn new Parser(type,text,{\n\t\tparseAsInline: options.parseAsInline,\n\t\twiki: this,\n\t\t_canonical_uri: options._canonical_uri\n\t});\n};\n\n/*\nParse a tiddler according to its MIME type\n*/\nexports.parseTiddler = function(title,options) {\n\toptions = $tw.utils.extend({},options);\n\tvar cacheType = options.parseAsInline ? \"inlineParseTree\" : \"blockParseTree\",\n\t\ttiddler = this.getTiddler(title),\n\t\tself = this;\n\treturn tiddler ? this.getCacheForTiddler(title,cacheType,function() {\n\t\t\tif(tiddler.hasField(\"_canonical_uri\")) {\n\t\t\t\toptions._canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t}\n\t\t\treturn self.parseText(tiddler.fields.type,tiddler.fields.text,options);\n\t\t}) : null;\n};\n\nexports.parseTextReference = function(title,field,index,options) {\n\tvar tiddler,text;\n\tif(options.subTiddler) {\n\t\ttiddler = this.getSubTiddler(title,options.subTiddler);\n\t} else {\n\t\ttiddler = this.getTiddler(title);\n\t\tif(field === \"text\" || (!field && !index)) {\n\t\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\t\treturn this.parseTiddler(title,options);\n\t\t}\n\t}\n\tif(field === \"text\" || (!field && !index)) {\n\t\tif(tiddler && tiddler.fields) {\n\t\t\treturn this.parseText(tiddler.fields.type,tiddler.fields.text,options);\t\t\t\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t} else if(field) {\n\t\tif(field === \"title\") {\n\t\t\ttext = title;\n\t\t} else {\n\t\t\tif(!tiddler || !tiddler.hasField(field)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\ttext = tiddler.fields[field];\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text.toString(),options);\n\t} else if(index) {\n\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\ttext = this.extractTiddlerDataItem(tiddler,index,undefined);\n\t\tif(text === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text,options);\n\t}\n};\n\n/*\nMake a widget tree for a parse tree\nparser: parser object\noptions: see below\nOptions include:\ndocument: optional document to use\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.makeWidget = function(parser,options) {\n\toptions = options || {};\n\tvar widgetNode = {\n\t\t\ttype: \"widget\",\n\t\t\tchildren: []\n\t\t},\n\t\tcurrWidgetNode = widgetNode;\n\t// Create set variable widgets for each variable\n\t$tw.utils.each(options.variables,function(value,name) {\n\t\tvar setVariableWidget = {\n\t\t\ttype: \"set\",\n\t\t\tattributes: {\n\t\t\t\tname: {type: \"string\", value: name},\n\t\t\t\tvalue: {type: \"string\", value: value}\n\t\t\t},\n\t\t\tchildren: []\n\t\t};\n\t\tcurrWidgetNode.children = [setVariableWidget];\n\t\tcurrWidgetNode = setVariableWidget;\n\t});\n\t// Add in the supplied parse tree nodes\n\tcurrWidgetNode.children = parser ? parser.tree : [];\n\t// Create the widget\n\treturn new widget.widget(widgetNode,{\n\t\twiki: this,\n\t\tdocument: options.document || $tw.fakeDocument,\n\t\tparentWidget: options.parentWidget\n\t});\n};\n\n/*\nMake a widget tree for transclusion\ntitle: target tiddler title\noptions: as for wiki.makeWidget() plus:\noptions.field: optional field to transclude (defaults to \"text\")\noptions.mode: transclusion mode \"inline\" or \"block\"\noptions.recursionMarker : optional flag to set a recursion marker, defaults to \"yes\"\noptions.children: optional array of children for the transclude widget\noptions.importVariables: optional importvariables filter string for macros to be included\noptions.importPageMacros: optional boolean; if true, equivalent to passing \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\" to options.importVariables\n*/\nexports.makeTranscludeWidget = function(title,options) {\n\toptions = options || {};\n\tvar parseTreeDiv = {tree: [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"div\",\n\t\t\tchildren: []}]},\n\t\tparseTreeImportVariables = {\n\t\t\ttype: \"importvariables\",\n\t\t\tattributes: {\n\t\t\t\tfilter: {\n\t\t\t\t\tname: \"filter\",\n\t\t\t\t\ttype: \"string\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tisBlock: false,\n\t\t\tchildren: []},\n\t\tparseTreeTransclude = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\trecursionMarker: {\n\t\t\t\t\tname: \"recursionMarker\",\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: options.recursionMarker || \"yes\"\n\t\t\t\t\t},\n\t\t\t\ttiddler: {\n\t\t\t\t\tname: \"tiddler\",\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title\n\t\t\t\t}\n\t\t\t},\n\t\t\tisBlock: !options.parseAsInline};\n\tif(options.importVariables || options.importPageMacros) {\n\t\tif(options.importVariables) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = options.importVariables;\n\t\t} else if(options.importPageMacros) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\";\n\t\t}\n\t\tparseTreeDiv.tree[0].children.push(parseTreeImportVariables);\n\t\tparseTreeImportVariables.children.push(parseTreeTransclude);\n\t} else {\n\t\tparseTreeDiv.tree[0].children.push(parseTreeTransclude);\n\t}\n\tif(options.field) {\n\t\tparseTreeTransclude.attributes.field = {type: \"string\", value: options.field};\n\t}\n\tif(options.mode) {\n\t\tparseTreeTransclude.attributes.mode = {type: \"string\", value: options.mode};\n\t}\n\tif(options.children) {\n\t\tparseTreeTransclude.children = options.children;\n\t}\n\treturn this.makeWidget(parseTreeDiv,options);\n};\n\n/*\nParse text in a specified format and render it into another format\n\toutputType: content type for the output\n\ttextType: content type of the input text\n\ttext: input text\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderText = function(outputType,textType,text,options) {\n\toptions = options || {};\n\tvar parser = this.parseText(textType,text,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : container.textContent;\n};\n\n/*\nParse text from a tiddler and render it into another format\n\toutputType: content type for the output\n\ttitle: title of the tiddler to be rendered\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderTiddler = function(outputType,title,options) {\n\toptions = options || {};\n\tvar parser = this.parseTiddler(title,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : (outputType === \"text/plain-formatted\" ? container.formattedTextContent : container.textContent);\n};\n\n/*\nReturn an array of tiddler titles that match a search string\n\ttext: The text string to search for\n\toptions: see below\nOptions available:\n\tsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\n\texclude: An array of tiddler titles to exclude from the search\n\tinvert: If true returns tiddlers that do not contain the specified string\n\tcaseSensitive: If true forces a case sensitive search\n\tfield: If specified, restricts the search to the specified field, or an array of field names\n\tanchored: If true, forces all but regexp searches to be anchored to the start of text\n\texcludeField: If true, the field options are inverted to specify the fields that are not to be searched\n\tThe search mode is determined by the first of these boolean flags to be true\n\t\tliteral: searches for literal string\n\t\twhitespace: same as literal except runs of whitespace are treated as a single space\n\t\tregexp: treats the search term as a regular expression\n\t\twords: (default) treats search string as a list of tokens, and matches if all tokens are found, regardless of adjacency or ordering\n*/\nexports.search = function(text,options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tt,\n\t\tinvert = !!options.invert;\n\t// Convert the search string into a regexp for each term\n\tvar terms, searchTermsRegExps,\n\t\tflags = options.caseSensitive ? \"\" : \"i\",\n\t\tanchor = options.anchored ? \"^\" : \"\";\n\tif(options.literal) {\n\t\tif(text.length === 0) {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + anchor + $tw.utils.escapeRegExp(text) + \")\",flags)];\n\t\t}\n\t} else if(options.whitespace) {\n\t\tterms = [];\n\t\t$tw.utils.each(text.split(/\\s+/g),function(term) {\n\t\t\tif(term) {\n\t\t\t\tterms.push($tw.utils.escapeRegExp(term));\n\t\t\t}\n\t\t});\n\t\tsearchTermsRegExps = [new RegExp(\"(\" + anchor + terms.join(\"\\\\s+\") + \")\",flags)];\n\t} else if(options.regexp) {\n\t\ttry {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + text + \")\",flags)];\t\t\t\n\t\t} catch(e) {\n\t\t\tsearchTermsRegExps = null;\n\t\t\tconsole.log(\"Regexp error parsing /(\" + text + \")/\" + flags + \": \",e);\n\t\t}\n\t} else {\n\t\tterms = text.split(/ +/);\n\t\tif(terms.length === 1 && terms[0] === \"\") {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [];\n\t\t\tfor(t=0; t<terms.length; t++) {\n\t\t\t\tsearchTermsRegExps.push(new RegExp(\"(\" + anchor + $tw.utils.escapeRegExp(terms[t]) + \")\",flags));\n\t\t\t}\n\t\t}\n\t}\n\t// Accumulate the array of fields to be searched or excluded from the search\n\tvar fields = [];\n\tif(options.field) {\n\t\tif($tw.utils.isArray(options.field)) {\n\t\t\t$tw.utils.each(options.field,function(fieldName) {\n\t\t\t\tif(fieldName) {\n\t\t\t\t\tfields.push(fieldName);\t\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tfields.push(options.field);\n\t\t}\n\t}\n\t// Use default fields if none specified and we're not excluding fields (excluding fields with an empty field array is the same as searching all fields)\n\tif(fields.length === 0 && !options.excludeField) {\n\t\tfields.push(\"title\");\n\t\tfields.push(\"tags\");\n\t\tfields.push(\"text\");\n\t}\n\t// Function to check a given tiddler for the search term\n\tvar searchTiddler = function(title) {\n\t\tif(!searchTermsRegExps) {\n\t\t\treturn true;\n\t\t}\n\t\tvar notYetFound = searchTermsRegExps.slice();\n\n\t\tvar tiddler = self.getTiddler(title);\n\t\tif(!tiddler) {\n\t\t\ttiddler = new $tw.Tiddler({title: title, text: \"\", type: \"text/vnd.tiddlywiki\"});\n\t\t}\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type] || $tw.config.contentTypeInfo[\"text/vnd.tiddlywiki\"],\n\t\t\tsearchFields;\n\t\t// Get the list of fields we're searching\n\t\tif(options.excludeField) {\n\t\t\tsearchFields = Object.keys(tiddler.fields);\n\t\t\t$tw.utils.each(fields,function(fieldName) {\n\t\t\t\tvar p = searchFields.indexOf(fieldName);\n\t\t\t\tif(p !== -1) {\n\t\t\t\t\tsearchFields.splice(p,1);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsearchFields = fields;\n\t\t}\n\t\tfor(var fieldIndex=0; notYetFound.length>0 && fieldIndex<searchFields.length; fieldIndex++) {\n\t\t\t// Don't search the text field if the content type is binary\n\t\t\tvar fieldName = searchFields[fieldIndex];\n\t\t\tif(fieldName === \"text\" && contentTypeInfo.encoding !== \"utf8\") {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tvar str = tiddler.fields[fieldName],\n\t\t\t\tt;\n\t\t\tif(str) {\n\t\t\t\tif($tw.utils.isArray(str)) {\n\t\t\t\t\t// If the field value is an array, test each regexp against each field array entry and fail if each regexp doesn't match at least one field array entry\n\t\t\t\t\tfor(var s=0; s<str.length; s++) {\n\t\t\t\t\t\tfor(t=0; t<notYetFound.length;) {\n\t\t\t\t\t\t\tif(notYetFound[t].test(str[s])) {\n\t\t\t\t\t\t\t\tnotYetFound.splice(t, 1);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tt++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// If the field isn't an array, force it to a string and test each regexp against it and fail if any do not match\n\t\t\t\t\tstr = tiddler.getFieldString(fieldName);\n\t\t\t\t\tfor(t=0; t<notYetFound.length;) {\n\t\t\t\t\t\tif(notYetFound[t].test(str)) {\n\t\t\t\t\t\t\tnotYetFound.splice(t, 1);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tt++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\treturn notYetFound.length == 0;\n\t};\n\t// Loop through all the tiddlers doing the search\n\tvar results = [],\n\t\tsource = options.source || this.each;\n\tsource(function(tiddler,title) {\n\t\tif(searchTiddler(title) !== options.invert) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\t// Remove any of the results we have to exclude\n\tif(options.exclude) {\n\t\tfor(t=0; t<options.exclude.length; t++) {\n\t\t\tvar p = results.indexOf(options.exclude[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tresults.splice(p,1);\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n};\n\n/*\nTrigger a load for a tiddler if it is skinny. Returns the text, or undefined if the tiddler is missing, null if the tiddler is being lazily loaded.\n*/\nexports.getTiddlerText = function(title,defaultText) {\n\tvar tiddler = this.getTiddler(title);\n\t// Return undefined if the tiddler isn't found\n\tif(!tiddler) {\n\t\treturn defaultText;\n\t}\n\tif(!tiddler.hasField(\"_is_skinny\")) {\n\t\t// Just return the text if we've got it\n\t\treturn tiddler.fields.text || \"\";\n\t} else {\n\t\t// Tell any listeners about the need to lazily load this tiddler\n\t\tthis.dispatchEvent(\"lazyLoad\",title);\n\t\t// Indicate that the text is being loaded\n\t\treturn null;\n\t}\n};\n\n/*\nCheck whether the text of a tiddler matches a given value. By default, the comparison is case insensitive, and any spaces at either end of the tiddler text is trimmed\n*/\nexports.checkTiddlerText = function(title,targetText,options) {\n\toptions = options || {};\n\tvar text = this.getTiddlerText(title,\"\");\n\tif(!options.noTrim) {\n\t\ttext = text.trim();\n\t}\n\tif(!options.caseSensitive) {\n\t\ttext = text.toLowerCase();\n\t\ttargetText = targetText.toLowerCase();\n\t}\n\treturn text === targetText;\n}\n\n/*\nRead an array of browser File objects, invoking callback(tiddlerFieldsArray) once they're all read\n*/\nexports.readFiles = function(files,options) {\n\tvar callback;\n\tif(typeof options === \"function\") {\n\t\tcallback = options;\n\t\toptions = {};\n\t} else {\n\t\tcallback = options.callback;\n\t}\n\tvar result = [],\n\t\toutstanding = files.length,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tresult.push.apply(result,tiddlerFieldsArray);\n\t\t\tif(--outstanding === 0) {\n\t\t\t\tcallback(result);\n\t\t\t}\n\t\t};\n\tfor(var f=0; f<files.length; f++) {\n\t\tthis.readFile(files[f],$tw.utils.extend({},options,{callback: readFileCallback}));\n\t}\n\treturn files.length;\n};\n\n/*\nRead a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects\n*/\nexports.readFile = function(file,options) {\n\tvar callback;\n\tif(typeof options === \"function\") {\n\t\tcallback = options;\n\t\toptions = {};\n\t} else {\n\t\tcallback = options.callback;\n\t}\n\t// Get the type, falling back to the filename extension\n\tvar self = this,\n\t\ttype = file.type;\n\tif(type === \"\" || !type) {\n\t\tvar dotPos = file.name.lastIndexOf(\".\");\n\t\tif(dotPos !== -1) {\n\t\t\tvar fileExtensionInfo = $tw.utils.getFileExtensionInfo(file.name.substr(dotPos));\n\t\t\tif(fileExtensionInfo) {\n\t\t\t\ttype = fileExtensionInfo.type;\n\t\t\t}\n\t\t}\n\t}\n\t// Figure out if we're reading a binary file\n\tvar contentTypeInfo = $tw.config.contentTypeInfo[type],\n\t\tisBinary = contentTypeInfo ? contentTypeInfo.encoding === \"base64\" : false;\n\t// Log some debugging information\n\tif($tw.log.IMPORT) {\n\t\tconsole.log(\"Importing file '\" + file.name + \"', type: '\" + type + \"', isBinary: \" + isBinary);\n\t}\n\t// Give the hook a chance to process the drag\n\tif($tw.hooks.invokeHook(\"th-importing-file\",{\n\t\tfile: file,\n\t\ttype: type,\n\t\tisBinary: isBinary,\n\t\tcallback: callback\n\t}) !== true) {\n\t\tthis.readFileContent(file,type,isBinary,options.deserializer,callback);\n\t}\n};\n\n/*\nLower level utility to read the content of a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects\n*/\nexports.readFileContent = function(file,type,isBinary,deserializer,callback) {\n\tvar self = this;\n\t// Create the FileReader\n\tvar reader = new FileReader();\n\t// Onload\n\treader.onload = function(event) {\n\t\tvar text = event.target.result,\n\t\t\ttiddlerFields = {title: file.name || \"Untitled\"};\n\t\tif(isBinary) {\n\t\t\tvar commaPos = text.indexOf(\",\");\n\t\t\tif(commaPos !== -1) {\n\t\t\t\ttext = text.substr(commaPos + 1);\n\t\t\t}\n\t\t}\n\t\t// Check whether this is an encrypted TiddlyWiki file\n\t\tvar encryptedJson = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedJson) {\n\t\t\t// If so, attempt to decrypt it with the current password\n\t\t\t$tw.utils.decryptStoreAreaInteractive(encryptedJson,function(tiddlers) {\n\t\t\t\tcallback(tiddlers);\n\t\t\t});\n\t\t} else {\n\t\t\t// Otherwise, just try to deserialise any tiddlers in the file\n\t\t\tcallback(self.deserializeTiddlers(type,text,tiddlerFields,{deserializer: deserializer}));\n\t\t}\n\t};\n\t// Kick off the read\n\tif(isBinary) {\n\t\treader.readAsDataURL(file);\n\t} else {\n\t\treader.readAsText(file);\n\t}\n};\n\n/*\nFind any existing draft of a specified tiddler\n*/\nexports.findDraft = function(targetTitle) {\n\tvar draftTitle = undefined;\n\tthis.forEachTiddler({includeSystem: true},function(title,tiddler) {\n\t\tif(tiddler.fields[\"draft.title\"] && tiddler.fields[\"draft.of\"] === targetTitle) {\n\t\t\tdraftTitle = title;\n\t\t}\n\t});\n\treturn draftTitle;\n}\n\n/*\nCheck whether the specified draft tiddler has been modified.\nIf the original tiddler doesn't exist, create a vanilla tiddler variable,\nto check if additional fields have been added.\n*/\nexports.isDraftModified = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(!tiddler.isDraft()) {\n\t\treturn false;\n\t}\n\tvar ignoredFields = [\"created\", \"modified\", \"title\", \"draft.title\", \"draft.of\"],\n\t\torigTiddler = this.getTiddler(tiddler.fields[\"draft.of\"]) || new $tw.Tiddler({text:\"\", tags:[]}),\n\t\ttitleModified = tiddler.fields[\"draft.title\"] !== tiddler.fields[\"draft.of\"];\n\treturn titleModified || !tiddler.isEqual(origTiddler,ignoredFields);\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\nhistoryTitle: title of history tiddler (defaults to $:/HistoryList)\n*/\nexports.addToHistory = function(title,fromPageRect,historyTitle) {\n\tvar story = new $tw.Story({wiki: this, historyTitle: historyTitle});\n\tstory.addToHistory(title,fromPageRect);\t\n\tconsole.log(\"$tw.wiki.addToHistory() is deprecated since V5.1.23! Use the this.story.addToHistory() from the story-object!\")\n};\n\n/*\nAdd a new tiddler to the story river\ntitle: a title string or an array of title strings\nfromTitle: the title of the tiddler from which the navigation originated\nstoryTitle: title of story tiddler (defaults to $:/StoryList)\noptions: see story.js\n*/\nexports.addToStory = function(title,fromTitle,storyTitle,options) {\n\tvar story = new $tw.Story({wiki: this, storyTitle: storyTitle});\n\tstory.addToStory(title,fromTitle,options);\n\tconsole.log(\"$tw.wiki.addToStory() is deprecated since V5.1.23! Use the this.story.addToStory() from the story-object!\")\n};\n\n/*\nGenerate a title for the draft of a given tiddler\n*/\nexports.generateDraftTitle = function(title) {\n\tvar c = 0,\n\t\tdraftTitle,\n\t\tusername = this.getTiddlerText(\"$:/status/UserName\"),\n\t\tattribution = username ? \" by \" + username : \"\";\n\tdo {\n\t\tdraftTitle = \"Draft \" + (c ? (c + 1) + \" \" : \"\") + \"of '\" + title + \"'\" + attribution;\n\t\tc++;\n\t} while(this.tiddlerExists(draftTitle));\n\treturn draftTitle;\n};\n\n/*\nInvoke the available upgrader modules\ntitles: array of tiddler titles to be processed\ntiddlers: hashmap by title of tiddler fields of pending import tiddlers. These can be modified by the upgraders. An entry with no fields indicates a tiddler that was pending import has been suppressed. When entries are added to the pending import the tiddlers hashmap may have entries that are not present in the titles array\nReturns a hashmap of messages keyed by tiddler title.\n*/\nexports.invokeUpgraders = function(titles,tiddlers) {\n\t// Collect up the available upgrader modules\n\tvar self = this;\n\tif(!this.upgraderModules) {\n\t\tthis.upgraderModules = [];\n\t\t$tw.modules.forEachModuleOfType(\"upgrader\",function(title,module) {\n\t\t\tif(module.upgrade) {\n\t\t\t\tself.upgraderModules.push(module);\n\t\t\t}\n\t\t});\n\t}\n\t// Invoke each upgrader in turn\n\tvar messages = {};\n\tfor(var t=0; t<this.upgraderModules.length; t++) {\n\t\tvar upgrader = this.upgraderModules[t],\n\t\t\tupgraderMessages = upgrader.upgrade(this,titles,tiddlers);\n\t\t$tw.utils.extend(messages,upgraderMessages);\n\t}\n\treturn messages;\n};\n\n// Determine whether a plugin by title is dynamically loadable\nexports.doesPluginRequireReload = function(title) {\n\treturn this.doesPluginInfoRequireReload(this.getPluginInfo(title) || this.getTiddlerDataCached(title));\n};\n\n// Determine whether a plugin info structure is dynamically loadable\nexports.doesPluginInfoRequireReload = function(pluginInfo) {\n\tif(pluginInfo) {\n\t\tvar foundModule = false;\n\t\t$tw.utils.each(pluginInfo.tiddlers,function(tiddler) {\n\t\t\tif(tiddler.type === \"application/javascript\" && $tw.utils.hop(tiddler,\"module-type\")) {\n\t\t\t\tfoundModule = true;\n\t\t\t}\n\t\t});\n\t\treturn foundModule;\n\t} else {\n\t\treturn null;\n\t}\n};\n\nexports.slugify = function(title,options) {\n\tvar tiddler = this.getTiddler(title),\n\t\tslug;\n\tif(tiddler && tiddler.fields.slug) {\n\t\tslug = tiddler.fields.slug;\n\t} else {\n\t\tslug = $tw.utils.transliterate(title.toString().toLowerCase()) // Replace diacritics with basic lowercase ASCII\n\t\t\t.replace(/\\s+/g,\"-\") // Replace spaces with -\n\t\t\t.replace(/[^\\w\\-\\.]+/g,\"\") // Remove all non-word chars except dash and dot\n\t\t\t.replace(/\\-\\-+/g,\"-\") // Replace multiple - with single -\n\t\t\t.replace(/^-+/,\"\") // Trim - from start of text\n\t\t\t.replace(/-+$/,\"\"); // Trim - from end of text\n\t}\n\t// If the resulting slug is blank (eg because the title is just punctuation characters)\n\tif(!slug) {\n\t\t// ...then just use the character codes of the title\n\t\tvar result = [];\n\t\t$tw.utils.each(title.split(\"\"),function(char) {\n\t\t\tresult.push(char.charCodeAt(0).toString());\n\t\t});\n\t\tslug = result.join(\"-\");\n\t}\n\treturn slug;\n};\n\n})();\n\n",
"type": "application/javascript",
"module-type": "wikimethod"
},
"$:/palettes/Blanca": {
"title": "$:/palettes/Blanca",
"name": "Blanca",
"description": "A clean white palette to let you focus",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #66cccc\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ffffff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #7897f3\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ccc\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #ffffff\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #7897f3\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #eeeeee\ntab-border-selected: #cccccc\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffeedd\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: #eee\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #ff9900\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/Blue": {
"title": "$:/palettes/Blue",
"name": "Blue",
"description": "A blue theme",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333353\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ddddff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #5959c0\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: #ccccdd\ntab-border-selected: #ccccdd\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #eeeeff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #666666\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #ffffff\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #ffffff\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #5959c0\ntoolbar-new-button: #5eb95e\ntoolbar-options-button: rgb(128, 88, 165)\ntoolbar-save-button: #0e90d2\ntoolbar-info-button: #0e90d2\ntoolbar-edit-button: rgb(243, 123, 29)\ntoolbar-close-button: #dd514c\ntoolbar-delete-button: #dd514c\ntoolbar-cancel-button: rgb(243, 123, 29)\ntoolbar-done-button: #5eb95e\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/Muted": {
"title": "$:/palettes/Muted",
"name": "Muted",
"description": "Bright tiddlers on a muted background",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #6f6f70\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #29a6ee\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #c2c1c2\nsidebar-foreground-shadow: rgba(255,255,255,0)\nsidebar-foreground: #d3d2d4\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #6f6f70\nsidebar-tab-background: #666667\nsidebar-tab-border-selected: #999\nsidebar-tab-border: #515151\nsidebar-tab-divider: #999\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: #999\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #d1d0d2\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #d5ad34\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/ContrastLight": {
"title": "$:/palettes/ContrastLight",
"name": "Contrast (Light)",
"description": "High contrast and unambiguous (light version)",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #000\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #000\ntag-foreground: #fff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"
},
"$:/palettes/ContrastDark": {
"title": "$:/palettes/ContrastDark",
"name": "Contrast (Dark)",
"description": "High contrast and unambiguous (dark version)",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #000\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #fff\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #fff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"
},
"$:/palettes/CupertinoDark": {
"title": "$:/palettes/CupertinoDark",
"tags": "$:/tags/Palette",
"name": "Cupertino Dark",
"description": "A macOS inspired dark palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #FF453A\nalert-border: #FF453A\nalert-highlight: #FFD60A\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #282828\nblockquote-bar: <<colour page-background>>\nbutton-foreground: <<colour background>>\ncode-background: <<colour pre-background>>\ncode-border: <<colour pre-border>>\ncode-foreground: rgba(255, 255, 255, 0.54)\ndirty-indicator: #FF453A\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour tiddler-info-background>>\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: #3F638B\ndropdown-tab-background: #323232\ndropzone-background: #30D158\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: #BF5AF2\nexternal-link-foreground: #32D74B\nforeground: #FFFFFF\nmenubar-background: #464646\nmenubar-foreground: #ffffff\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(255, 255, 255, 0.54)\nmodal-backdrop: <<colour page-background>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour background>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: #98989D\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #323232\npre-background: #464646\npre-border: transparent\nprimary: #0A84FF\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour background>>\nsidebar-controls-foreground-hover: #FF9F0A\nsidebar-controls-foreground: #8E8E93\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground-hover: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground: rgba(255, 255, 255, 0.38)\nsidebar-tab-background-selected: #3F638B\nsidebar-tab-background: <<colour background>>\nsidebar-tab-border-selected: <<colour background>>\nsidebar-tab-border: <<colour background>>\nsidebar-tab-divider: <<colour background>>\nsidebar-tab-foreground-selected: rgba(255, 255, 255, 0.87)\nsidebar-tab-foreground: rgba(255, 255, 255, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(255, 255, 255, 0.7)\nsidebar-tiddler-link-foreground: rgba(255, 255, 255, 0.54)\nsite-title-foreground: #ffffff\nstatic-alert-foreground: #B4B4B4\ntab-background-selected: #3F638B\ntab-background: <<colour page-background>>\ntab-border-selected: <<colour page-background>>\ntab-border: <<colour page-background>>\ntab-divider: <<colour page-background>>\ntab-foreground-selected: rgba(255, 255, 255, 0.87)\ntab-foreground: rgba(255, 255, 255, 0.54)\ntable-border: #464646\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #48484A\ntag-foreground: #323232\ntiddler-background: <<colour background>>\ntiddler-border: transparent\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: #48484A\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: rgba(255, 255, 255, 0.08)\ntiddler-editor-fields-even: rgba(255, 255, 255, 0.1)\ntiddler-editor-fields-odd: rgba(255, 255, 255, 0.04)\ntiddler-info-background: #1E1E1E\ntiddler-info-border: #1E1E1E\ntiddler-info-tab-background: #3F638B\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #FFFFFF\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: #464646\nselection-background: #3F638B\nselection-foreground: #ffffff\nwikilist-background: <<colour page-background>>\nwikilist-button-background: #3F638B\nwikilist-button-foreground: <<colour foreground>>\nwikilist-button-open: #32D74B\nwikilist-button-open-hover: #32D74B\nwikilist-button-reveal: #0A84FF\nwikilist-button-reveal-hover: #0A84FF\nwikilist-button-remove: #FF453A\nwikilist-button-remove-hover: #FF453A\nwikilist-droplink-dragover: #32D74B\nwikilist-item: <<colour background>>\nwikilist-toolbar-background: <<colour background>>\nwikilist-title: <<colour foreground>>\nwikilist-title-svg: <<colour foreground>>\nwikilist-toolbar-foreground: <<colour foreground>>\nwikilist-url: <<colour muted-foreground>>\n"
},
"$:/palettes/DarkPhotos": {
"title": "$:/palettes/DarkPhotos",
"created": "20150402111612188",
"description": "Good with dark photo backgrounds",
"modified": "20150402112344080",
"name": "DarkPhotos",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: \nbutton-foreground: \nbutton-border: \ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #ddd\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #336438\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #ccf\nsidebar-controls-foreground: #fff\nsidebar-foreground-shadow: rgba(0,0,0, 0.5)\nsidebar-foreground: #fff\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #eee\nsidebar-tab-background-selected: rgba(255,255,255, 0.8)\nsidebar-tab-background: rgba(255,255,255, 0.4)\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: rgba(255,255,255, 0.2)\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #aaf\nsidebar-tiddler-link-foreground: #ddf\nsite-title-foreground: #fff\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/DesertSand": {
"title": "$:/palettes/DesertSand",
"tags": "$:/tags/Palette",
"name": "Desert Sand",
"description": "A desert sand palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #E9E0C7\nblockquote-bar: <<colour muted-foreground>>\nbutton-foreground: <<colour foreground>>\ncode-background: #F3EDDF\ncode-border: #C3BAA1\ncode-foreground: #ab3250\ndiff-delete-background: #bd8b8b\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #91c093\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #ad3434\ndownload-background: #6ca16c\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #E9E0C7\ndropdown-tab-background: #BAB29C\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #313163\nexternal-link-foreground: #555592\nforeground: #2D2A23\nmenubar-background: #CDC2A6\nmenubar-foreground: #5A5446\nmessage-background: #ECE5CF\nmessage-border: #D6CBAA\nmessage-foreground: #5f6e7d\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #8A8885\nmodal-footer-background: #CDC2A6\nmodal-footer-border: #9D998E\nmodal-header-border: #9D998E\nmuted-foreground: #9D998E\nnotification-background: #F0E9D7\nnotification-border: #939189\npage-background: #e0d3af\npre-background: #D6CBAA\npre-border: #CDC2A6\nprimary: #5B6F55\nselection-background: #9D947B\nselection-foreground: <<colour foreground>>\nselect-tag-background: #F0E9D7\nselect-tag-foreground: #2D2A23\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #2D2A23\nsidebar-controls-foreground: #867F69\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #867F69\nsidebar-muted-foreground-hover: #706A58\nsidebar-muted-foreground: #B3A98C\nsidebar-tab-background-selected: #e0d3af\nsidebar-tab-background: #A6A193\nsidebar-tab-border-selected: #C3BAA1\nsidebar-tab-border: #C3BAA1\nsidebar-tab-divider: #CDC2A6\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: #2D2A23\nsidebar-tiddler-link-foreground-hover: #433F35\nsidebar-tiddler-link-foreground: #706A58\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #A6A193\ntab-background-selected: #E9E0C7\ntab-background: #A6A193\ntab-border-selected: #C3BAA1\ntab-border: #C3BAA1\ntab-divider: #CDC2A6\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #2D2A23\ntable-border: #9D998E\ntable-footer-background: #8A8885\ntable-header-background: #B0AA98\ntag-background: #706A58\ntag-foreground: #E3D7B7\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #9D947B\ntiddler-controls-foreground-selected: #706A58\ntiddler-controls-foreground: #C3BAA1\ntiddler-editor-background: #E9E0C7\ntiddler-editor-border-image: #A6A193\ntiddler-editor-border: #A6A193\ntiddler-editor-fields-even: #D6CBAA\ntiddler-editor-fields-odd: #C3BAA1\ntiddler-info-background: #E3D7B7\ntiddler-info-border: #BAB29C\ntiddler-info-tab-background: #E9E0C7\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #867F69\ntiddler-title-foreground: #374464\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #8A8885\nvery-muted-foreground: #CDC2A6\nwikilist-background: <<colour page-background>>\nwikilist-item: #CDC2A6\nwikilist-info: #161512\nwikilist-title: #433F35\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: #706A58\nwikilist-button-open: #7db66a\nwikilist-button-open-hover: #56a556\nwikilist-button-reveal: #5a6c9e\nwikilist-button-reveal-hover: #454591\nwikilist-button-remove: #bc5972\nwikilist-button-remove-hover: #814040\nwikilist-toolbar-background: #CDC2A6\nwikilist-toolbar-foreground: #2D2A23\nwikilist-droplink-dragover: rgba(255,192,192,0.5)\nwikilist-button-background: #A6A193\nwikilist-button-foreground: #161512\n"
},
"$:/palettes/GruvboxDark": {
"title": "$:/palettes/GruvboxDark",
"name": "Gruvbox Dark",
"description": "Retro groove color scheme",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"license": "https://github.com/morhetz/gruvbox",
"text": "alert-background: #cc241d\nalert-border: #cc241d\nalert-highlight: #d79921\nalert-muted-foreground: #504945\nbackground: #3c3836\nblockquote-bar: <<colour muted-foreground>>\nbutton-foreground: <<colour page-background>>\ncode-background: #504945\ncode-border: #504945\ncode-foreground: #fb4934\ndiff-delete-background: #fb4934\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #b8bb26\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #fb4934\ndownload-background: #b8bb26\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #665c54\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #ebdbb2\ndropdown-tab-background: #665c54\ndropzone-background: #98971a\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #d3869b\nexternal-link-foreground: #8ec07c\nforeground: #fbf1c7\nmenubar-background: #504945\nmenubar-foreground: <<colour foreground>>\nmessage-background: #83a598\nmessage-border: #83a598\nmessage-foreground: #3c3836\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #504945\nmodal-footer-background: #3c3836\nmodal-footer-border: #3c3836\nmodal-header-border: #3c3836\nmuted-foreground: #d5c4a1\nnotification-background: <<colour primary>>\nnotification-border: <<colour primary>>\npage-background: #282828\npre-background: #504945\npre-border: #504945\nprimary: #d79921\nselect-tag-background: #665c54\nselect-tag-foreground: <<colour foreground>>\nselection-background: #458588\nselection-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour page-background>>\nsidebar-controls-foreground-hover: #7c6f64\nsidebar-controls-foreground: #504945\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #fbf1c7\nsidebar-muted-foreground-hover: #7c6f64\nsidebar-muted-foreground: #504945\nsidebar-tab-background-selected: #bdae93\nsidebar-tab-background: #3c3836\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #bdae93\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #282828\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #458588\nsidebar-tiddler-link-foreground: #98971a\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #B48EAD\ntab-background-selected: #ebdbb2\ntab-background: #665c54\ntab-border-selected: #665c54\ntab-border: #665c54\ntab-divider: #bdae93\ntab-foreground-selected: #282828\ntab-foreground: #ebdbb2\ntable-border: #7c6f64\ntable-footer-background: #665c54\ntable-header-background: #504945\ntag-background: #d3869b\ntag-foreground: #282828\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #7c6f64\ntiddler-controls-foreground-selected: <<colour primary>>\ntiddler-controls-foreground: #665c54\ntiddler-editor-background: #32302f\ntiddler-editor-border-image: #282828\ntiddler-editor-border: #282828\ntiddler-editor-fields-even: #504945\ntiddler-editor-fields-odd: #7c6f64\ntiddler-info-background: #32302f\ntiddler-info-border: #ebdbb2\ntiddler-info-tab-background: #ebdbb2\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #7c6f64\ntiddler-title-foreground: #a89984\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #504945\nvery-muted-foreground: #bdae93\nwikilist-background: <<colour page-background>>\nwikilist-button-background: #acacac\nwikilist-button-foreground: <<colour button-foreground>>\nwikilist-item: <<colour background>>\nwikilist-toolbar-background: <<colour background>>\nwikilist-toolbar-foreground: <<colour foreground>>\nwikilist-title: <<colour foreground>>\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: <<colour muted-foreground>>\nwikilist-button-open-hover: <<colour primary>>\nwikilist-button-open: <<colour dropzone-background>>\nwikilist-button-remove: <<colour dirty-indicator>>\nwikilist-button-remove-hover: <<colour alert-background>>\nwikilist-droplink-dragover: <<colour dropzone-background>>\nwikilist-button-reveal: <<colour sidebar-tiddler-link-foreground-hover>>\nwikilist-button-reveal-hover: <<colour message-background>>\n"
},
"$:/palettes/Nord": {
"title": "$:/palettes/Nord",
"name": "Nord",
"description": "An arctic, north-bluish color palette.",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"license": "MIT, arcticicestudio, https://github.com/arcticicestudio/nord/blob/develop/LICENSE.md",
"text": "alert-background: #D08770\nalert-border: #D08770\nalert-highlight: #B48EAD\nalert-muted-foreground: #4C566A\nbackground: #3b4252\nblockquote-bar: <<colour muted-foreground>>\nbutton-foreground: <<colour page-background>>\ncode-background: #2E3440\ncode-border: #2E3440\ncode-foreground: #BF616A\ndiff-delete-background: #BF616A\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #A3BE8C\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #BF616A\ndownload-background: #A3BE8C\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #ECEFF4\ndropdown-tab-background: #4C566A\ndropzone-background: #A3BE8C\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #5E81AC\nexternal-link-foreground: #8FBCBB\nforeground: #d8dee9\nmenubar-background: #2E3440\nmenubar-foreground: #d8dee9\nmessage-background: #2E3440\nmessage-border: #2E3440\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #3b4252\nmodal-footer-background: #3b4252\nmodal-footer-border: #3b4252\nmodal-header-border: #3b4252\nmuted-foreground: #4C566A\nnotification-background: <<colour primary>>\nnotification-border: #EBCB8B\npage-background: #2e3440\npre-background: #2E3440\npre-border: #2E3440\nprimary: #5E81AC\nselect-tag-background: #3b4252\nselect-tag-foreground: <<colour foreground>>\nselection-background: #5E81AC\nselection-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour page-background>>\nsidebar-controls-foreground-hover: #D8DEE9\nsidebar-controls-foreground: #4C566A\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #D8DEE9\nsidebar-muted-foreground-hover: #4C566A\nsidebar-muted-foreground: #4C566A\nsidebar-tab-background-selected: #ECEFF4\nsidebar-tab-background: #4C566A\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #4C566A\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #4C566A\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #A3BE8C\nsidebar-tiddler-link-foreground: #81A1C1\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #B48EAD\ntab-background-selected: #ECEFF4\ntab-background: #4C566A\ntab-border-selected: #4C566A\ntab-border: #4C566A\ntab-divider: #4C566A\ntab-foreground-selected: #4C566A\ntab-foreground: #D8DEE9\ntable-border: #4C566A\ntable-footer-background: #2e3440\ntable-header-background: #2e3440\ntag-background: #A3BE8C\ntag-foreground: #4C566A\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: \ntiddler-controls-foreground-selected: #EBCB8B\ntiddler-controls-foreground: #4C566A\ntiddler-editor-background: #2e3440\ntiddler-editor-border-image: #2e3440\ntiddler-editor-border: #3b4252\ntiddler-editor-fields-even: #2e3440\ntiddler-editor-fields-odd: #2e3440\ntiddler-info-background: #2e3440\ntiddler-info-border: #2e3440\ntiddler-info-tab-background: #2e3440\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #4C566A\ntiddler-title-foreground: #81A1C1\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #2d3038\nvery-muted-foreground: #2d3038\nwikilist-background: <<colour page-background>>\nwikilist-toolbar-background: <<colour background>>\nwikilist-item: <<colour background>>\nwikilist-title: <<colour foreground>>\nwikilist-info: <<colour muted-foreground>>\nwikilist-button-open: #A3BE8C\nwikilist-button-open-hover: #A3BE8C\nwikilist-button-reveal: #81A1C1\nwikilist-button-reveal-hover: #81A1C1\nwikilist-button-remove: #B48EAD\nwikilist-button-remove-hover: #B48EAD\n"
},
"$:/palettes/Rocker": {
"title": "$:/palettes/Rocker",
"name": "Rocker",
"description": "A dark theme",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #000\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #cc0000\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.0)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #000\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #ffbb99\nsidebar-tiddler-link-foreground: #cc0000\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffbb99\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #cc0000\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/SolarFlare": {
"title": "$:/palettes/SolarFlare",
"name": "Solar Flare",
"description": "Warm, relaxing earth colours",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": ": Background Tones\n\nbase03: #002b36\nbase02: #073642\n\n: Content Tones\n\nbase01: #586e75\nbase00: #657b83\nbase0: #839496\nbase1: #93a1a1\n\n: Background Tones\n\nbase2: #eee8d5\nbase3: #fdf6e3\n\n: Accent Colors\n\nyellow: #b58900\norange: #cb4b16\nred: #dc322f\nmagenta: #d33682\nviolet: #6c71c4\nblue: #268bd2\ncyan: #2aa198\ngreen: #859900\n\n: Additional Tones (RA)\n\nbase10: #c0c4bb\nviolet-muted: #7c81b0\nblue-muted: #4e7baa\n\nyellow-hot: #ffcc44\norange-hot: #eb6d20\nred-hot: #ff2222\nblue-hot: #2298ee\ngreen-hot: #98ee22\n\n: Palette\n\n: Do not use colour macro for background and foreground\nbackground: #fdf6e3\n download-foreground: <<colour background>>\n dragger-foreground: <<colour background>>\n dropdown-background: <<colour background>>\n modal-background: <<colour background>>\n sidebar-foreground-shadow: <<colour background>>\n tiddler-background: <<colour background>>\n tiddler-border: <<colour background>>\n tiddler-link-background: <<colour background>>\n tab-background-selected: <<colour background>>\n dropdown-tab-background-selected: <<colour tab-background-selected>>\nforeground: #657b83\n dragger-background: <<colour foreground>>\n tab-foreground: <<colour foreground>>\n tab-foreground-selected: <<colour tab-foreground>>\n sidebar-tab-foreground-selected: <<colour tab-foreground-selected>>\n sidebar-tab-foreground: <<colour tab-foreground>>\n sidebar-button-foreground: <<colour foreground>>\n sidebar-controls-foreground: <<colour foreground>>\n sidebar-foreground: <<colour foreground>>\n: base03\n: base02\n: base01\n alert-muted-foreground: <<colour base01>>\n: base00\n code-foreground: <<colour base00>>\n message-foreground: <<colour base00>>\n tag-foreground: <<colour base00>>\n: base0\n sidebar-tiddler-link-foreground: <<colour base0>>\n: base1\n muted-foreground: <<colour base1>>\n blockquote-bar: <<colour muted-foreground>>\n dropdown-border: <<colour muted-foreground>>\n sidebar-muted-foreground: <<colour muted-foreground>>\n tiddler-title-foreground: <<colour muted-foreground>>\n site-title-foreground: <<colour tiddler-title-foreground>>\n: base2\n modal-footer-background: <<colour base2>>\n page-background: <<colour base2>>\n modal-backdrop: <<colour page-background>>\n notification-background: <<colour page-background>>\n code-background: <<colour page-background>>\n code-border: <<colour code-background>>\n pre-background: <<colour page-background>>\n pre-border: <<colour pre-background>>\n sidebar-tab-background-selected: <<colour page-background>>\n table-header-background: <<colour base2>>\n tag-background: <<colour base2>>\n tiddler-editor-background: <<colour base2>>\n tiddler-info-background: <<colour base2>>\n tiddler-info-tab-background: <<colour base2>>\n tab-background: <<colour base2>>\n dropdown-tab-background: <<colour tab-background>>\n: base3\n alert-background: <<colour base3>>\n message-background: <<colour base3>>\n: yellow\n: orange\n: red\n: magenta\n alert-highlight: <<colour magenta>>\n: violet\n external-link-foreground: <<colour violet>>\n: blue\n: cyan\n: green\n: base10\n tiddler-controls-foreground: <<colour base10>>\n: violet-muted\n external-link-foreground-visited: <<colour violet-muted>>\n: blue-muted\n primary: <<colour blue-muted>>\n download-background: <<colour primary>>\n tiddler-link-foreground: <<colour primary>>\n\nalert-border: #b99e2f\ndirty-indicator: #ff0000\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nmessage-border: #cfd6e6\nmodal-border: #999999\nselect-tag-background:\nselect-tag-foreground:\nsidebar-controls-foreground-hover:\nsidebar-muted-foreground-hover:\nsidebar-tab-background: #ded8c5\nsidebar-tiddler-link-foreground-hover:\nstatic-alert-foreground: #aaaaaa\ntab-border: #cccccc\n modal-footer-border: <<colour tab-border>>\n modal-header-border: <<colour tab-border>>\n notification-border: <<colour tab-border>>\n sidebar-tab-border: <<colour tab-border>>\n tab-border-selected: <<colour tab-border>>\n sidebar-tab-border-selected: <<colour tab-border-selected>>\ntab-divider: #d8d8d8\n sidebar-tab-divider: <<colour tab-divider>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-border: #dddddd\ntiddler-subtitle-foreground: #c0c0c0\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/SolarizedDark": {
"title": "$:/palettes/SolarizedDark",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"description": "Precision dark colors for machines and people",
"license": "MIT, Ethan Schoonover, https://github.com/altercation/solarized/blob/master/LICENSE",
"name": "SolarizedDark",
"text": "alert-background: #073642\nalert-border: #93a1a1\nalert-highlight: #d33682\nalert-muted-foreground: #d33682\nbackground: #073642\nblockquote-bar: #d33682\nbutton-background: #073642\nbutton-border: #586e75\nbutton-foreground: #93a1a1\ncode-background: #073642\ncode-border: #586e75\ncode-foreground: #93a1a1\ndirty-indicator: inherit\ndownload-background: #859900\ndownload-foreground: #073642\ndragger-background: #073642\ndragger-foreground: #839496\ndropdown-background: #073642\ndropdown-border: #93a1a1\ndropdown-tab-background: #002b36\ndropdown-tab-background-selected: #073642\ndropzone-background: #859900\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: #268bd2\nexternal-link-foreground-hover:\nexternal-link-foreground-visited: #268bd2\nforeground: #839496\nmessage-background: #002b36\nmessage-border: #586e75\nmessage-foreground: #839496\nmodal-backdrop: #657b83\nmodal-background: #002b36\nmodal-border: #586e75\nmodal-footer-background: #073642\nmodal-footer-border: #586e75\nmodal-header-border: #586e75\nmuted-foreground: #93a1a1\nnotification-background: #002b36\nnotification-border: #586e75\npage-background: #073642\npre-background: inherit\npre-border: #657b83\nprimary: #859900\nselect-tag-background: #002b36\nselect-tag-foreground: #839496\nsidebar-button-foreground: #93a1a1\nsidebar-controls-foreground: #93a1a1\nsidebar-controls-foreground-hover: #eee8d5\nsidebar-foreground: #93a1a1\nsidebar-foreground-shadow: transparent\nsidebar-muted-foreground: #839496\nsidebar-muted-foreground-hover: #93a1a1\nsidebar-tab-background: #002b36\nsidebar-tab-background-selected: #073642\nsidebar-tab-border: #073642\nsidebar-tab-border-selected: #839496\nsidebar-tab-divider: #002b36\nsidebar-tab-foreground: #657b83\nsidebar-tab-foreground-selected: #93a1a1\nsidebar-tiddler-link-foreground: #2aa198\nsidebar-tiddler-link-foreground-hover: #eee8d5\nsite-title-foreground: #d33682\nstatic-alert-foreground: #93a1a1\ntab-background: #073642\ntab-background-selected: #002b36\ntab-border: #586e75\ntab-border-selected: #93a1a1\ntab-divider: #93a1a1\ntab-foreground: #839496\ntab-foreground-selected: #93a1a1\ntable-border: #586e75\ntable-footer-background: #073642\ntable-header-background: #073642\ntag-background: #b58900\ntag-foreground: #002b36\ntiddler-background: #002b36\ntiddler-border: #586e75\ntiddler-controls-foreground: inherit\ntiddler-controls-foreground-hover: #d33682\ntiddler-controls-foreground-selected: #2aa198\ntiddler-editor-background: #002b36\ntiddler-editor-border: #073642\ntiddler-editor-border-image: #002b36\ntiddler-editor-fields-even: #002b36\ntiddler-editor-fields-odd: #073642\ntiddler-info-background: #073642\ntiddler-info-border: #657b83\ntiddler-info-tab-background: #002b36\ntiddler-link-background: #002b36\ntiddler-link-foreground: #2aa198\ntiddler-subtitle-foreground: #839496\ntiddler-title-foreground: #d33682\ntoolbar-cancel-button: #839496\ntoolbar-close-button: #839496\ntoolbar-delete-button: #dc322f\ntoolbar-done-button: #839496\ntoolbar-edit-button: #839496\ntoolbar-info-button: #839496\ntoolbar-new-button: #839496\ntoolbar-options-button: #839496\ntoolbar-save-button: inherit\nuntagged-background: #586e75\nvery-muted-foreground: #586e75\n"
},
"$:/palettes/SolarizedLight": {
"title": "$:/palettes/SolarizedLight",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"description": "Precision colors for machines and people",
"license": "MIT, Ethan Schoonover, https://github.com/altercation/solarized/blob/master/LICENSE",
"name": "SolarizedLight",
"text": "alert-background: #eee8d5\nalert-border: #586e75\nalert-highlight: #d33682\nalert-muted-foreground: #d33682\nbackground: #eee8d5\nblockquote-bar: #d33682\nbutton-background: #eee8d5\nbutton-border: #93a1a1\nbutton-foreground: #586e75\ncode-background: #eee8d5\ncode-border: #93a1a1\ncode-foreground: #586e75\ndirty-indicator: inherit\ndownload-background: #859900\ndownload-foreground: #eee8d5\ndragger-background: #eee8d5\ndragger-foreground: #657b83\ndropdown-background: #eee8d5\ndropdown-border: #586e75\ndropdown-tab-background: #fdf6e3\ndropdown-tab-background-selected: #eee8d5\ndropzone-background: #859900\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: #268bd2\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #268bd2\nforeground: #657b83\nmessage-background: #fdf6e3\nmessage-border: #93a1a1\nmessage-foreground: #657b83\nmodal-backdrop: #839496\nmodal-background: #fdf6e3\nmodal-border: #93a1a1\nmodal-footer-background: #eee8d5\nmodal-footer-border: #93a1a1\nmodal-header-border: #93a1a1\nmuted-foreground: #586e75\nnotification-background: #fdf6e3\nnotification-border: #93a1a1\npage-background: #eee8d5\npre-background: #eee8d5\npre-border: #839496\nprimary: #859900\nselect-tag-background: #fdf6e3\nselect-tag-foreground: #657b83\nsidebar-button-foreground: #586e75\nsidebar-controls-foreground: #586e75\nsidebar-controls-foreground-hover: #d33682\nsidebar-foreground: #586e75\nsidebar-foreground-shadow: transparent\nsidebar-muted-foreground: #657b83\nsidebar-muted-foreground-hover: #586e75\nsidebar-tab-background: #fdf6e3\nsidebar-tab-background-selected: #eee8d5\nsidebar-tab-border: #eee8d5\nsidebar-tab-border-selected: #657b83\nsidebar-tab-divider: #fdf6e3\nsidebar-tab-foreground: #839496\nsidebar-tab-foreground-selected: #586e75\nsidebar-tiddler-link-foreground: #2aa198\nsidebar-tiddler-link-foreground-hover: #002b36\nsite-title-foreground: #d33682\nstatic-alert-foreground: #586e75\ntab-background: #eee8d5\ntab-background-selected: #fdf6e3\ntab-border: #93a1a1\ntab-border-selected: #586e75\ntab-divider: #586e75\ntab-foreground: #657b83\ntab-foreground-selected: #586e75\ntable-border: #93a1a1\ntable-footer-background: #eee8d5\ntable-header-background: #eee8d5\ntag-background: #b58900\ntag-foreground: #fdf6e3\ntiddler-background: #fdf6e3\ntiddler-border: #93a1a1\ntiddler-controls-foreground: inherit\ntiddler-controls-foreground-hover: #d33682\ntiddler-controls-foreground-selected: #2aa198\ntiddler-editor-background: #fdf6e3\ntiddler-editor-border: #eee8d5\ntiddler-editor-border-image: #fdf6e3\ntiddler-editor-fields-even: #fdf6e3\ntiddler-editor-fields-odd: #eee8d5\ntiddler-info-background: #eee8d5\ntiddler-info-border: #839496\ntiddler-info-tab-background: #fdf6e3\ntiddler-link-background: #fdf6e3\ntiddler-link-foreground: #2aa198\ntiddler-subtitle-foreground: #657b83\ntiddler-title-foreground: #d33682\ntoolbar-cancel-button: #657b83\ntoolbar-close-button: #657b83\ntoolbar-delete-button: #dc322f\ntoolbar-done-button: #657b83\ntoolbar-edit-button: #657b83\ntoolbar-info-button: #657b83\ntoolbar-new-button: #657b83\ntoolbar-options-button: #657b83\ntoolbar-save-button: inherit\nuntagged-background: #586e75\nvery-muted-foreground: #93a1a1\n"
},
"$:/palettes/SpartanDay": {
"title": "$:/palettes/SpartanDay",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"description": "Cold, spartan day colors",
"name": "Spartan Day",
"text": "alert-background: <<colour background>>\nalert-border: <<colour very-muted-foreground>>\nalert-highlight: <<colour very-muted-foreground>>\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #FAFAFA\nblockquote-bar: <<colour page-background>>\nbutton-background: transparent\nbutton-foreground: inherit\nbutton-border: <<colour tag-background>>\ncode-background: #ececec\ncode-border: #ececec\ncode-foreground: \ndirty-indicator: #c80000\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #FFFFFF\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: <<colour dropdown-background>>\ndropdown-tab-background: #F5F5F5\ndropzone-background: <<colour tag-background>>\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: \nexternal-link-foreground: \nforeground: rgba(0, 0, 0, 0.87)\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(0, 0, 0, 0.54)\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour very-muted-foreground>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: rgba(0, 0, 0, 0.54)\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #f4f4f4\npre-background: #ececec\npre-border: #ececec\nprimary: #3949ab\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #aeaeae\nsidebar-controls-foreground: #c6c6c6\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(0, 0, 0, 0.54)\nsidebar-muted-foreground-hover: rgba(0, 0, 0, 0.54)\nsidebar-muted-foreground: rgba(0, 0, 0, 0.38)\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: transparent\nsidebar-tab-border-selected: <<colour table-border>>\nsidebar-tab-border: transparent\nsidebar-tab-divider: <<colour table-border>>\nsidebar-tab-foreground-selected: rgba(0, 0, 0, 0.87)\nsidebar-tab-foreground: rgba(0, 0, 0, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(0, 0, 0, 0.87)\nsidebar-tiddler-link-foreground: rgba(0, 0, 0, 0.54)\nsite-title-foreground: rgba(0, 0, 0, 0.87)\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: transparent\ntab-border-selected: <<colour table-border>>\ntab-border: transparent\ntab-divider: <<colour table-border>>\ntab-foreground-selected: rgba(0, 0, 0, 0.87)\ntab-foreground: rgba(0, 0, 0, 0.54)\ntable-border: #d8d8d8\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #ec6\ntag-foreground: <<colour button-foreground>>\ntiddler-background: <<colour background>>\ntiddler-border: #f9f9f9\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: <<colour sidebar-controls-foreground>>\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: #e8e7e7\ntiddler-editor-fields-even: rgba(0, 0, 0, 0.1)\ntiddler-editor-fields-odd: rgba(0, 0, 0, 0.04)\ntiddler-info-background: #F5F5F5\ntiddler-info-border: #F5F5F5\ntiddler-info-tab-background: <<colour tiddler-editor-fields-odd>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #000000\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: rgba(0, 0, 0, 0.12)\n"
},
"$:/palettes/SpartanNight": {
"title": "$:/palettes/SpartanNight",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"description": "Dark spartan colors",
"name": "Spartan Night",
"text": "alert-background: <<colour background>>\nalert-border: <<colour very-muted-foreground>>\nalert-highlight: <<colour very-muted-foreground>>\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #303030\nblockquote-bar: <<colour page-background>>\nbutton-background: transparent\nbutton-foreground: inherit\nbutton-border: <<colour tag-background>>\ncode-background: <<colour pre-background>>\ncode-border: <<colour pre-border>>\ncode-foreground: rgba(255, 255, 255, 0.54)\ndirty-indicator: #c80000\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #424242\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: <<colour dropdown-background>>\ndropdown-tab-background: #050505\ndropzone-background: <<colour tag-background>>\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: #7c318c\nexternal-link-foreground: #9e3eb3\nforeground: rgba(255, 255, 255, 0.7)\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(255, 255, 255, 0.54)\nmodal-backdrop: <<colour page-background>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour background>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: rgba(255, 255, 255, 0.54)\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #212121\npre-background: #2a2a2a\npre-border: transparent\nprimary: #5656f3\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #494949\nsidebar-controls-foreground: #5d5d5d\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground-hover: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground: rgba(255, 255, 255, 0.38)\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: transparent\nsidebar-tab-border-selected: <<colour table-border>>\nsidebar-tab-border: transparent\nsidebar-tab-divider: <<colour table-border>>\nsidebar-tab-foreground-selected: rgba(255, 255, 255, 0.87)\nsidebar-tab-foreground: rgba(255, 255, 255, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(255, 255, 255, 0.7)\nsidebar-tiddler-link-foreground: rgba(255, 255, 255, 0.54)\nsite-title-foreground: rgba(255, 255, 255, 0.7)\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: transparent\ntab-border-selected: <<colour table-border>>\ntab-border: transparent\ntab-divider: <<colour table-border>>\ntab-foreground-selected: rgba(255, 255, 255, 0.87)\ntab-foreground: rgba(255, 255, 255, 0.54)\ntable-border: #3a3a3a\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #ec6\ntag-foreground: <<colour button-foreground>>\ntiddler-background: <<colour background>>\ntiddler-border: rgb(55,55,55)\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: <<colour sidebar-controls-foreground>>\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: rgba(255, 255, 255, 0.08)\ntiddler-editor-fields-even: rgba(255, 255, 255, 0.1)\ntiddler-editor-fields-odd: rgba(255, 255, 255, 0.04)\ntiddler-info-background: #454545\ntiddler-info-border: #454545\ntiddler-info-tab-background: <<colour tiddler-editor-fields-odd>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #FFFFFF\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: rgba(255, 255, 255, 0.12)\n"
},
"$:/palettes/Twilight": {
"title": "$:/palettes/Twilight",
"tags": "$:/tags/Palette",
"author": "Thomas Elmiger",
"type": "application/x-tiddler-dictionary",
"name": "Twilight",
"description": "Delightful, soft darkness.",
"text": "alert-background: rgb(255, 255, 102)\nalert-border: rgb(232, 232, 125)\nalert-highlight: rgb(255, 51, 51)\nalert-muted-foreground: rgb(224, 82, 82)\nbackground: rgb(38, 38, 38)\nblockquote-bar: rgba(240, 196, 117, 0.7)\nbutton-background: rgb(63, 63, 63)\nbutton-border: rgb(127, 127, 127)\nbutton-foreground: rgb(179, 179, 179)\ncode-background: rgba(0,0,0,0.03)\ncode-border: rgba(0,0,0,0.08)\ncode-foreground: rgb(255, 94, 94)\ndiff-delete-background: #ffc9c9\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #aaefad\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: rgb(255, 94, 94)\ndownload-background: #19a974\ndownload-foreground: rgb(38, 38, 38)\ndragger-background: rgb(179, 179, 179)\ndragger-foreground: rgb(38, 38, 38)\ndropdown-background: rgb(38, 38, 38)\ndropdown-border: rgb(255, 255, 255)\ndropdown-tab-background: rgba(0,0,0,.1)\ndropdown-tab-background-selected: rgba(255,255,255,1)\ndropzone-background: #9eebcf\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: rgb(179, 179, 255)\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: rgb(153, 153, 255)\nforeground: rgb(179, 179, 179)\nmessage-background: <<colour tag-foreground>>\nmessage-border: #96ccff\nmessage-foreground: <<colour tag-background>>\nmodal-backdrop: rgb(179, 179, 179)\nmodal-background: rgb(38, 38, 38)\nmodal-border: rgba(0,0,0,.5)\nmodal-footer-background: #f4f4f4\nmodal-footer-border: rgba(0,0,0,.1)\nmodal-header-border: rgba(0,0,0,.2)\nmuted-foreground: rgb(255, 255, 255)\nnotification-background: <<colour tag-foreground>>\nnotification-border: <<colour tag-background>>\npage-background: rgb(26, 26, 26)\npre-background: rgb(25, 25, 25)\npre-border: rgba(0,0,0,.2)\nprimary: rgb(255, 201, 102)\nselect-tag-background: \nselect-tag-foreground: \nsidebar-button-foreground: rgb(179, 179, 179)\nsidebar-controls-foreground: rgb(153, 153, 153)\nsidebar-controls-foreground-hover: <<colour tiddler-controls-foreground-hover>>\nsidebar-foreground: rgb(141, 141, 141)\nsidebar-foreground-shadow: transparent\nsidebar-muted-foreground: rgba(0, 0, 0, 0.5)\nsidebar-muted-foreground-hover: rgb(141, 141, 141)\nsidebar-tab-background: rgba(141, 141, 141, 0.2)\nsidebar-tab-background-selected: rgb(26, 26, 26)\nsidebar-tab-border: rgb(127, 127, 127)\nsidebar-tab-border-selected: rgb(127, 127, 127)\nsidebar-tab-divider: rgb(127, 127, 127)\nsidebar-tab-foreground: rgb(179, 179, 179)\nsidebar-tab-foreground-selected: rgb(179, 179, 179)\nsidebar-tiddler-link-foreground: rgb(179, 179, 179)\nsidebar-tiddler-link-foreground-hover: rgb(115, 115, 115)\nsite-title-foreground: rgb(255, 201, 102)\nstatic-alert-foreground: rgba(0,0,0,.3)\ntab-background: rgba(0,0,0,0.125)\ntab-background-selected: rgb(38, 38, 38)\ntab-border: rgb(255, 201, 102)\ntab-border-selected: rgb(255, 201, 102)\ntab-divider: rgb(255, 201, 102)\ntab-foreground: rgb(179, 179, 179)\ntab-foreground-selected: rgb(179, 179, 179)\ntable-border: rgba(255,255,255,.3)\ntable-footer-background: rgba(0,0,0,.4)\ntable-header-background: rgba(0,0,0,.1)\ntag-background: rgb(255, 201, 102)\ntag-foreground: rgb(25, 25, 25)\ntiddler-background: rgb(38, 38, 38)\ntiddler-border: rgba(240, 196, 117, 0.7)\ntiddler-controls-foreground: rgb(128, 128, 128)\ntiddler-controls-foreground-hover: rgba(255, 255, 255, 0.8)\ntiddler-controls-foreground-selected: rgba(255, 255, 255, 0.9)\ntiddler-editor-background: rgb(33, 33, 33)\ntiddler-editor-border: rgb(63, 63, 63)\ntiddler-editor-border-image: rgb(25, 25, 25)\ntiddler-editor-fields-even: rgb(33, 33, 33)\ntiddler-editor-fields-odd: rgb(28, 28, 28)\ntiddler-info-background: rgb(43, 43, 43)\ntiddler-info-border: rgb(25, 25, 25)\ntiddler-info-tab-background: rgb(43, 43, 43)\ntiddler-link-background: rgb(38, 38, 38)\ntiddler-link-foreground: rgb(204, 204, 255)\ntiddler-subtitle-foreground: rgb(255, 255, 255)\ntiddler-title-foreground: rgb(255, 192, 76)\ntoolbar-cancel-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-done-button: \ntoolbar-edit-button: \ntoolbar-info-button: \ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \nuntagged-background: rgb(255, 255, 255)\nvery-muted-foreground: rgba(240, 196, 117, 0.7)\n"
},
"$:/palettes/Vanilla": {
"title": "$:/palettes/Vanilla",
"name": "Vanilla",
"description": "Pale and unobtrusive",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndiff-delete-background: #ffc9c9\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #aaefad\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #f4f4f4\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselection-background:\nselection-foreground:\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #aaaaaa\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #f4f4f4\nsidebar-tab-background: #e0e0e0\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: #e4e4e4\nsidebar-tab-foreground-selected:\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #999999\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\nwikilist-background: #e5e5e5\nwikilist-item: #fff\nwikilist-info: #000\nwikilist-title: #666\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: #aaa\nwikilist-button-open: #4fb82b\nwikilist-button-open-hover: green\nwikilist-button-reveal: #5778d8\nwikilist-button-reveal-hover: blue\nwikilist-button-remove: #d85778\nwikilist-button-remove-hover: red\nwikilist-toolbar-background: #d3d3d3\nwikilist-toolbar-foreground: #888\nwikilist-droplink-dragover: rgba(255,192,192,0.5)\nwikilist-button-background: #acacac\nwikilist-button-foreground: #000\n"
},
"$:/core/readme": {
"title": "$:/core/readme",
"text": "This plugin contains TiddlyWiki's core components, comprising:\n\n* JavaScript code modules\n* Icons\n* Templates needed to create TiddlyWiki's user interface\n* British English (''en-GB'') translations of the localisable strings used by the core\n"
},
"$:/library/sjcl.js/license": {
"title": "$:/library/sjcl.js/license",
"type": "text/plain",
"text": "SJCL is open. You can use, modify and redistribute it under a BSD\nlicense or under the GNU GPL, version 2.0.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/BSD-2-Clause\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n1. Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright\nnotice, this list of conditions and the following disclaimer in the\ndocumentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\nIS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\nTO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/GPL-2.0\n\nThe Stanford Javascript Crypto Library (hosted here on GitHub) is a\nproject by the Stanford Computer Security Lab to build a secure,\npowerful, fast, small, easy-to-use, cross-browser library for\ncryptography in Javascript.\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University.\n\nThis program is free software; you can redistribute it and/or modify it\nunder the terms of the GNU General Public License as published by the\nFree Software Foundation; either version 2 of the License, or (at your\noption) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\nPublic License for more details.\n\nYou should have received a copy of the GNU General Public License along\nwith this program; if not, write to the Free Software Foundation, Inc.,\n59 Temple Place, Suite 330, Boston, MA 02111-1307 USA"
},
"$:/core/templates/MOTW.html": {
"title": "$:/core/templates/MOTW.html",
"text": "\\rules only filteredtranscludeinline transcludeinline entity\n<!-- The following comment is called a MOTW comment and is necessary for the TiddlyIE Internet Explorer extension -->\n<!-- saved from url=(0021)https://tiddlywiki.com --> "
},
"$:/core/templates/alltiddlers.template.html": {
"title": "$:/core/templates/alltiddlers.template.html",
"type": "text/vnd.tiddlywiki-html",
"text": "<!-- This template is provided for backwards compatibility with older versions of TiddlyWiki -->\n\n<$set name=\"exportFilter\" value=\"[!is[system]sort[title]]\">\n\n{{$:/core/templates/exporters/StaticRiver}}\n\n</$set>\n"
},
"$:/core/templates/canonical-uri-external-image": {
"title": "$:/core/templates/canonical-uri-external-image",
"text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external images.\n\nChange the `./images/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./images/<$view field=\"title\" format=\"doubleurlencoded\"/>"
},
"$:/core/templates/canonical-uri-external-raw": {
"title": "$:/core/templates/canonical-uri-external-raw",
"text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external raw files that are stored in the same directory\n\n-->\n<$view field=\"title\" format=\"doubleurlencoded\"/>"
},
"$:/core/templates/canonical-uri-external-text": {
"title": "$:/core/templates/canonical-uri-external-text",
"text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external text files.\n\nChange the `./text/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./text/<$view field=\"title\" format=\"doubleurlencoded\"/>.tid"
},
"$:/core/templates/css-tiddler": {
"title": "$:/core/templates/css-tiddler",
"text": "<!--\n\nThis template is used for saving CSS tiddlers as a style tag with data attributes representing the tiddler fields.\n\n-->`<style`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/css\">`<$view field=\"text\" format=\"text\" />`</style>`"
},
"$:/core/templates/exporters/CsvFile": {
"title": "$:/core/templates/exporters/CsvFile",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/CsvFile}}",
"extension": ".csv",
"text": "<$macrocall $name=\"csvtiddlers\" filter=<<exportFilter>> format=\"quoted-comma-sep\" $output=\"text/raw\"/>\n"
},
"$:/core/templates/exporters/JsonFile": {
"title": "$:/core/templates/exporters/JsonFile",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/JsonFile}}",
"extension": ".json",
"text": "<$macrocall $name=\"jsontiddlers\" filter=<<exportFilter>> $output=\"text/raw\"/>\n"
},
"$:/core/templates/exporters/StaticRiver": {
"title": "$:/core/templates/exporters/StaticRiver",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/StaticRiver}}",
"extension": ".html",
"text": "\\define tv-wikilink-template() #$uri_encoded$\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n<section class=\"tc-story-river tc-static-story-river\">\n{{$:/core/templates/exporters/StaticRiver/Content||$:/core/templates/html-tiddler}}\n</section>\n</body>\n</html>\n"
},
"$:/core/templates/exporters/StaticRiver/Content": {
"title": "$:/core/templates/exporters/StaticRiver/Content",
"text": "\\define renderContent()\n{{{ $(exportFilter)$ ||$:/core/templates/static-tiddler}}}\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<<renderContent>>\n"
},
"$:/core/templates/exporters/TidFile": {
"title": "$:/core/templates/exporters/TidFile",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/TidFile}}",
"extension": ".tid",
"condition": "[<count>compare:lte[1]]",
"text": "\\define renderContent()\n{{{ $(exportFilter)$ +[limit[1]] ||$:/core/templates/tid-tiddler}}}\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<<renderContent>>"
},
"$:/core/save/all-external-js": {
"title": "$:/core/save/all-external-js",
"text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[prefix[$:/temp/]] -[prefix[$:/HistoryList]] -[status[pending]plugin-type[import]] -[[$:/core]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\n\\end\n{{$:/core/templates/tiddlywiki5-external-js.html}}\n"
},
"$:/core/templates/tiddlywiki5.js": {
"title": "$:/core/templates/tiddlywiki5.js",
"text": "\\rules only filteredtranscludeinline transcludeinline codeinline\n\n/*\n{{ $:/core/copyright.txt ||$:/core/templates/plain-text-tiddler}}\n`*/\n`<!--~~ Library modules ~~-->\n{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/plain-text-tiddler}}}\n<!--~~ Boot prefix ~~-->\n{{ $:/boot/bootprefix.js ||$:/core/templates/plain-text-tiddler}}\n<!--~~ Core plugin ~~-->\n{{$:/core/templates/tiddlywiki5.js/tiddlers}}\n<!--~~ Boot kernel ~~-->\n{{ $:/boot/boot.js ||$:/core/templates/plain-text-tiddler}}\n"
},
"$:/core/templates/tiddlywiki5.js/tiddlers": {
"title": "$:/core/templates/tiddlywiki5.js/tiddlers",
"text": "`\n$tw.preloadTiddlerArray(`<$text text=<<jsontiddlers \"[[$:/core]]\">>/>`);\n`\n"
},
"$:/core/templates/tiddlywiki5-external-js.html": {
"title": "$:/core/templates/tiddlywiki5-external-js.html",
"text": "\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n{{$:/core/templates/MOTW.html}}<html lang=\"`<$text text={{{ [{$:/language}get[name]] }}}/>`\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<!--~~ Raw markup for the top of the head section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/>\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"{{$:/core/copyright.txt}}\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/core/wiki/rawmarkup]] [all[shadows+tiddlers]tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}\n</head>\n<body class=\"tc-body\">\n<!--~~ Raw markup for the top of the body section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n{{$:/core/templates/static.area}}\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n{{$:/core/templates/store.area.template.html}}\n<!--~~ Raw markup for the bottom of the body section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}\n</body>\n<script src=\"%24%3A%2Fcore%2Ftemplates%2Ftiddlywiki5.js\" onerror=\"alert('Error: Cannot load tiddlywiki.js');\"></script>\n</html>\n"
},
"$:/core/templates/html-div-skinny-tiddler": {
"title": "$:/core/templates/html-div-skinny-tiddler",
"text": "<!--\n\nThis template is a variant of $:/core/templates/html-div-tiddler used for saving skinny tiddlers (with no text field)\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre></pre>\n</div>`\n"
},
"$:/core/templates/html-div-tiddler": {
"title": "$:/core/templates/html-div-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as an HTML DIV tag with attributes representing the tiddler fields.\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre>`<$view field=\"text\" format=\"htmlencoded\" />`</pre>\n</div>`\n"
},
"$:/core/templates/html-tiddler": {
"title": "$:/core/templates/html-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as raw HTML\n\n--><$view field=\"text\" format=\"htmlwikified\" />"
},
"$:/core/templates/javascript-tiddler": {
"title": "$:/core/templates/javascript-tiddler",
"text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields.\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\">`<$view field=\"text\" format=\"text\" />`</script>`"
},
"$:/core/templates/json-tiddler": {
"title": "$:/core/templates/json-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as raw JSON\n\n--><$text text=<<jsontiddler>>/>"
},
"$:/core/templates/module-tiddler": {
"title": "$:/core/templates/module-tiddler",
"text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields. The body of the tiddler is wrapped in a call to the `$tw.modules.define` function in order to define the body of the tiddler as a module\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\" data-module=\"yes\">$tw.modules.define(\"`<$view field=\"title\" format=\"jsencoded\" />`\",\"`<$view field=\"module-type\" format=\"jsencoded\" />`\",function(module,exports,require) {`<$view field=\"text\" format=\"text\" />`});\n</script>`"
},
"$:/core/templates/plain-text-tiddler": {
"title": "$:/core/templates/plain-text-tiddler",
"text": "<$view field=\"text\" format=\"text\" />"
},
"$:/core/templates/raw-static-tiddler": {
"title": "$:/core/templates/raw-static-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as static HTML\n\n--><$view field=\"text\" format=\"plainwikified\" />"
},
"$:/core/save/all": {
"title": "$:/core/save/all",
"text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[prefix[$:/temp/]] -[prefix[$:/HistoryList]] -[status[pending]plugin-type[import]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/save/empty": {
"title": "$:/core/save/empty",
"text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/save/lazy-all": {
"title": "$:/core/save/lazy-all",
"text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] \n\\end\n\\define skinnySaveTiddlerFilter()\n[!is[system]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/save/lazy-images": {
"title": "$:/core/save/lazy-images",
"text": "\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] -[!is[system]is[image]] +[sort[title]] \n\\end\n\\define skinnySaveTiddlerFilter()\n[is[image]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/templates/server/static.sidebar.wikitext": {
"title": "$:/core/templates/server/static.sidebar.wikitext",
"text": "\\whitespace trim\n<div class=\"tc-sidebar-scrollable\" style=\"overflow: auto;\">\n<div class=\"tc-sidebar-header\">\n<h1 class=\"tc-site-title\">\n<$transclude tiddler=\"$:/SiteTitle\"/>\n</h1>\n<div class=\"tc-site-subtitle\">\n<$transclude tiddler=\"$:/SiteSubtitle\"/>\n</div>\n<h2>\n</h2>\n<div class=\"tc-sidebar-lists\">\n<$list filter={{$:/DefaultTiddlers}}>\n<div class=\"tc-menu-list-subitem\">\n<$link><$text text=<<currentTiddler>>/></$link>\n</div>\n</$list>\n</div>\n<!-- Currently disabled the recent list as it is unweildy when the responsive narrow view kicks in\n<h2>\n{{$:/language/SideBar/Recent/Caption}}\n</h2>\n<div class=\"tc-sidebar-lists\">\n<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n</div>\n</div>\n</div>\n-->\n"
},
"$:/core/templates/server/static.tiddler.html": {
"title": "$:/core/templates/server/static.tiddler.html",
"text": "\\whitespace trim\n\\define tv-wikilink-template() $uri_encoded$\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content={{$:/core/templates/version}} />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"%24%3A%2Fcore%2Ftemplates%2Fstatic.template.css\">\n<title><$view field=\"caption\" format=\"plainwikified\"><$view field=\"title\"/></$view>: <$view tiddler=\"$:/core/wiki/title\" format=\"plainwikified\"/></title>\n</head>\n<body class=\"tc-body\">\n<$transclude tiddler=\"$:/core/templates/server/static.sidebar.wikitext\" mode=\"inline\"/>\n<section class=\"tc-story-river\">\n<div class=\"tc-tiddler-frame\">\n<$transclude tiddler=\"$:/core/templates/server/static.tiddler.wikitext\" mode=\"inline\"/>\n</div>\n</section>\n</body>\n</html>"
},
"$:/core/templates/server/static.tiddler.wikitext": {
"title": "$:/core/templates/server/static.tiddler.wikitext",
"text": "\\whitespace trim\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<h2><$text text=<<currentTiddler>>/></h2>\n</div>\n</div>\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}}>\n<$view field=\"modifier\"/>\n</$link> <$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n<div class=\"tc-tags-wrapper\">\n<$list filter=\"[all[current]tags[]sort[title]]\">\n<a href={{{ [<currentTiddler>encodeuricomponent[]] }}}>\n<$macrocall $name=\"tag-pill\" tag=<<currentTiddler>>/>\n</a>\n</$list>\n</div>\n<div class=\"tc-tiddler-body\">\n<$transclude mode=\"block\"/>\n</div>\n"
},
"$:/core/templates/single.tiddler.window": {
"title": "$:/core/templates/single.tiddler.window",
"text": "\\whitespace trim\n\\define containerClasses()\ntc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$vars\n\ttv-config-toolbar-icons={{$:/config/Toolbar/Icons}}\n\ttv-config-toolbar-text={{$:/config/Toolbar/Text}}\n\ttv-config-toolbar-class={{$:/config/Toolbar/ButtonClass}}\n\ttv-show-missing-links={{$:/config/MissingLinks}}\n\tstoryviewTitle={{$:/view}}\n\tlanguageTitle={{{ [{$:/language}get[name]] }}}>\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n\n<$transclude mode=\"block\"/>\n\n</$navigator>\n\n</div>\n\n</$vars>\n"
},
"$:/core/templates/split-recipe": {
"title": "$:/core/templates/split-recipe",
"text": "<$list filter=\"[!is[system]]\">\ntiddler: <$view field=\"title\" format=\"urlencoded\"/>.tid\n</$list>\n"
},
"$:/core/templates/static-tiddler": {
"title": "$:/core/templates/static-tiddler",
"text": "<a name=<<currentTiddler>>>\n<$transclude tiddler=\"$:/core/ui/ViewTemplate\"/>\n</a>"
},
"$:/core/templates/static.area": {
"title": "$:/core/templates/static.area",
"text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawStaticContent]!has[draft.of]] ||$:/core/templates/raw-static-tiddler}}}\n{{$:/core/templates/static.content||$:/core/templates/html-tiddler}}\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\nThis file contains an encrypted ~TiddlyWiki. Enable ~JavaScript and enter the decryption password when prompted.\n</$reveal>\n<!-- ensure splash screen isn't shown when JS is disabled -->\n`<style>\n.tc-remove-when-wiki-loaded {display: none;}\n</style>`\n"
},
"$:/core/templates/static.content": {
"title": "$:/core/templates/static.content",
"text": "<!-- For Google, and people without JavaScript-->\nThis [[TiddlyWiki|https://tiddlywiki.com]] contains the following tiddlers:\n\n<ul>\n<$list filter=<<saveTiddlerFilter>>>\n<li><$view field=\"title\" format=\"text\"></$view></li>\n</$list>\n</ul>\n"
},
"$:/core/templates/static.template.css": {
"title": "$:/core/templates/static.template.css",
"text": "{{$:/boot/boot.css||$:/core/templates/plain-text-tiddler}}\n\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n"
},
"$:/core/templates/static.template.html": {
"title": "$:/core/templates/static.template.html",
"type": "text/vnd.tiddlywiki-html",
"text": "\\define tv-wikilink-template() static/$uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n{{$:/core/ui/PageTemplate||$:/core/templates/html-tiddler}}\n</body>\n</html>\n"
},
"$:/core/templates/static.tiddler.html": {
"title": "$:/core/templates/static.tiddler.html",
"text": "\\define tv-wikilink-template() $uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n`<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"`{{$:/core/templates/version}}`\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"static.css\">\n<title>`<$view field=\"caption\"><$view field=\"title\"/></$view>: {{$:/core/wiki/title}}`</title>\n</head>\n<body class=\"tc-body\">\n`{{$:/StaticBanner||$:/core/templates/html-tiddler}}`\n<section class=\"tc-story-river tc-static-story-river\">\n`<$view tiddler=\"$:/core/ui/ViewTemplate\" format=\"htmlwikified\"/>`\n</section>\n</body>\n</html>\n`\n"
},
"$:/core/templates/store.area.template.html": {
"title": "$:/core/templates/store.area.template.html",
"text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n`<div id=\"storeArea\" style=\"display:none;\">`\n<$list filter=<<saveTiddlerFilter>> template=\"$:/core/templates/html-div-tiddler\"/>\n<$list filter={{{ [<skinnySaveTiddlerFilter>] }}} template=\"$:/core/templates/html-div-skinny-tiddler\"/>\n`</div>`\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n`<!--~~ Encrypted tiddlers ~~-->`\n`<pre id=\"encryptedStoreArea\" type=\"text/plain\" style=\"display:none;\">`\n<$encrypt filter=<<saveTiddlerFilter>>/>\n`</pre>`\n</$reveal>"
},
"$:/core/templates/tid-tiddler": {
"title": "$:/core/templates/tid-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers in TiddlyWeb *.tid format\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>`\n`<$view field=\"text\" format=\"text\" />"
},
"$:/core/templates/tiddler-metadata": {
"title": "$:/core/templates/tiddler-metadata",
"text": "<!--\n\nThis template is used for saving tiddler metadata *.meta files\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>"
},
"$:/core/templates/tiddlywiki5.html": {
"title": "$:/core/templates/tiddlywiki5.html",
"text": "<$set name=\"saveTiddlerAndShadowsFilter\" filter=\"[subfilter<saveTiddlerFilter>] [subfilter<saveTiddlerFilter>plugintiddlers[]]\">\n`<!doctype html>\n`{{$:/core/templates/MOTW.html}}`<html lang=\"`<$text text={{{ [{$:/language}get[name]] }}}/>`\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<!--~~ Raw markup for the top of the head section ~~-->\n`{{{ [<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}`\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/>\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"`{{$:/core/templates/version}}`\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"`{{$:/core/copyright.txt}}`\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>`{{$:/core/wiki/title}}`</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/core/wiki/rawmarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}`\n</head>\n<body class=\"tc-body\">\n<!--~~ Raw markup for the top of the body section ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}`\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n`{{$:/boot/boot.css||$:/core/templates/css-tiddler}}`\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n`{{$:/core/templates/static.area}}`\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n`{{$:/core/templates/store.area.template.html}}`\n<!--~~ Library modules ~~-->\n<div id=\"libraryModules\" style=\"display:none;\">\n`{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/javascript-tiddler}}}`\n</div>\n<!--~~ Boot kernel prologue ~~-->\n<div id=\"bootKernelPrefix\" style=\"display:none;\">\n`{{ $:/boot/bootprefix.js ||$:/core/templates/javascript-tiddler}}`\n</div>\n<!--~~ Boot kernel ~~-->\n<div id=\"bootKernel\" style=\"display:none;\">\n`{{ $:/boot/boot.js ||$:/core/templates/javascript-tiddler}}`\n</div>\n<!--~~ Raw markup for the bottom of the body section ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}`\n</body>\n</html>`\n"
},
"$:/core/templates/version": {
"title": "$:/core/templates/version",
"text": "<<version>>"
},
"$:/core/templates/wikified-tiddler": {
"title": "$:/core/templates/wikified-tiddler",
"text": "<$transclude />"
},
"$:/core/ui/AboveStory/tw2-plugin-check": {
"title": "$:/core/ui/AboveStory/tw2-plugin-check",
"tags": "$:/tags/AboveStory",
"text": "\\define lingo-base() $:/language/AboveStory/ClassicPlugin/\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]limit[1]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n<ul>\n\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]]\">\n\n<li>\n\n<$link><$view field=\"title\"/></$link>\n\n</li>\n\n</$list>\n\n</ul>\n\n</div>\n\n</$list>\n"
},
"$:/core/ui/Actions/new-image": {
"title": "$:/core/ui/Actions/new-image",
"tags": "$:/tags/Actions",
"description": "create a new image tiddler",
"text": "\\define get-type()\nimage/$(imageType)$\n\\end\n\\define get-tags() $(textFieldTags)$ $(tagsFieldTags)$\n<$vars imageType={{$:/config/NewImageType}} textFieldTags={{$:/config/NewJournal/Tags}} tagsFieldTags={{$:/config/NewJournal/Tags!!tags}}>\n<$action-sendmessage $message=\"tm-new-tiddler\" type=<<get-type>> tags=<<get-tags>>/>\n</$vars>\n"
},
"$:/core/ui/Actions/new-journal": {
"title": "$:/core/ui/Actions/new-journal",
"tags": "$:/tags/Actions",
"description": "create a new journal tiddler",
"text": "\\define get-tags() $(textFieldTags)$ $(tagsFieldTags)$\n<$vars journalTitleTemplate={{$:/config/NewJournal/Title}} textFieldTags={{$:/config/NewJournal/Tags}} tagsFieldTags={{$:/config/NewJournal/Tags!!tags}} journalText={{$:/config/NewJournal/Text}}>\n<$wikify name=\"journalTitle\" text=\"\"\"<$macrocall $name=\"now\" format=<<journalTitleTemplate>>/>\"\"\">\n<$reveal type=\"nomatch\" state=<<journalTitle>> text=\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<get-tags>> text={{{ [<journalTitle>get[]] }}}/>\n</$reveal>\n<$reveal type=\"match\" state=<<journalTitle>> text=\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<get-tags>> text=<<journalText>>/>\n</$reveal>\n</$wikify>\n</$vars>\n"
},
"$:/core/ui/Actions/new-tiddler": {
"title": "$:/core/ui/Actions/new-tiddler",
"tags": "$:/tags/Actions",
"description": "create a new empty tiddler",
"text": "\\define get-tags() $(textFieldTags)$ $(tagsFieldTags)$\n<$vars textFieldTags={{$:/config/NewTiddler/Tags}} tagsFieldTags={{$:/config/NewTiddler/Tags!!tags}}>\n<$action-sendmessage $message=\"tm-new-tiddler\" tags=<<get-tags>>/>\n</$vars>\n"
},
"$:/core/ui/AdvancedSearch/Filter": {
"title": "$:/core/ui/AdvancedSearch/Filter",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/Filter/Caption}}",
"text": "\\define lingo-base() $:/language/Search/\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch/input}!match{$:/temp/advancedsearch}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo Filter/Hint>>\n\n<div class=\"tc-search tc-advanced-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\" \n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\" type=\"search\" \n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} configTiddlerFilter=\"[[$:/temp/advancedsearch]]\" firstSearchFilterField=\"text\" \n\t\tinputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> \n\t\tinputCancelActions=<<cancel-search-actions>>/>\n</$keyboard>\n</$keyboard>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch/FilterButton]!has[draft.of]]\"><$transclude/></$list>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\n<div class=\"tc-search-results\">\n<<lingo Filter/Matches>>\n<$list filter={{$:/temp/advancedsearch}}>\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n</div>\n</$set>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\" />\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button popup=<<qualify \"$:/state/filterDeleteDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/delete-button}}\n</$button>\n</$reveal>\n\n<$reveal state=<<qualify \"$:/state/filterDeleteDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<div class=\"tc-dropdown-item-plain\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\nAre you sure you wish to delete <<resultCount>> tiddler(s)?\n</$set>\n</div>\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn\">\n<$action-deletetiddler $filter={{$:/temp/advancedsearch}}/>\nDelete these tiddlers\n</$button>\n</div>\n</div>\n</div>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/filterDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</span>\n\n<$reveal state=<<qualify \"$:/state/filterDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher actions=\"\"\"<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text=<<navigateTo>>/><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text=<<navigateTo>>/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/><$action-sendmessage $message=\"tm-focus-selector\" $param='.tc-advanced-search input' />\"\"\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Filter]]\"><$link to={{!!filter}}><$transclude field=\"description\"/></$link>\n</$list>\n</div>\n</div>\n</$linkcatcher>\n</$set>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/export": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/export",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$macrocall $name=\"exportButton\" exportFilter={{$:/temp/advancedsearch}} lingoBase=\"$:/language/Buttons/ExportTiddlers/\"/>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Shadows": {
"title": "$:/core/ui/AdvancedSearch/Shadows",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/Shadows/Caption}}",
"first-search-filter": "[all[shadows]search<userInput>sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]",
"text": "\\define lingo-base() $:/language/Search/\n\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\"/>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo Shadows/Hint>>\n\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\"\n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\" type=\"search\"\n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} configTiddlerFilter=\"[[$:/core/ui/AdvancedSearch/Shadows]]\"\n\t\tinputCancelActions=<<cancel-search-actions>> inputAcceptActions=<<input-accept-actions>> \n\t\tinputAcceptVariantActions=<<input-accept-variant-actions>> filterMinLength={{$:/config/Search/MinLength}}/>\n</$keyboard>\n</$keyboard>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[all[shadows]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo Shadows/Matches>>\n\n<$list filter=\"[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]\">\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Standard": {
"title": "$:/core/ui/AdvancedSearch/Standard",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/Standard/Caption}}",
"text": "\\define lingo-base() $:/language/Search/\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define next-search-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab/search-results/advancedsearch\" tag=\"$:/tags/SearchResults\" beforeafter=\"$beforeafter$\" defaultState={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/standard/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\"/>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo Standard/Hint>>\n\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$keyboard key=\"shift-alt-Right\" actions=<<next-search-tab>>>\n<$keyboard key=\"shift-alt-Left\" actions=<<next-search-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\"\n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\" type=\"search\"\n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} inputCancelActions=<<cancel-search-actions>> \n\t\tinputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> \n\t\tconfigTiddlerFilter=\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\"\n\t\tfilterMinLength={{$:/config/Search/MinLength}}/>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$vars userInput={{{ [[$:/temp/advancedsearch]get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}} searchListState=\"$:/temp/advancedsearch/selected-item\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude/>\n</$list>\n\"\"\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/standard/currentTab\" text=<<currentTab>>/>\"\"\" explicitState=\"$:/state/tab/search-results/advancedsearch\" />\n</$list>\n</$vars>\n</$list>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/System": {
"title": "$:/core/ui/AdvancedSearch/System",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/System/Caption}}",
"first-search-filter": "[is[system]search<userInput>sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]",
"text": "\\define lingo-base() $:/language/Search/\n\\define set-next-input-tab(beforeafter:\"after\",stateTitle,tag,defaultState,currentTabTiddler) <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\"/>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo System/Hint>>\n\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\"\n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\"\n\t\ttype=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}} configTiddlerFilter=\"[[$:/core/ui/AdvancedSearch/System]]\"\n\t\tinputCancelActions=<<cancel-search-actions>> inputAcceptActions=<<input-accept-actions>> \n\t\tinputAcceptVariantActions=<<input-accept-variant-actions>> filterMinLength={{$:/config/Search/MinLength}}/>\n</$keyboard>\n</$keyboard>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo System/Matches>>\n\n<$list filter=\"[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]\">\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
},
"$:/AdvancedSearch": {
"title": "$:/AdvancedSearch",
"icon": "$:/core/images/advanced-search-button",
"color": "#bbb",
"text": "<div class=\"tc-advanced-search\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]]\" default=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<currentTab>>/>\"\"\" explicitState=\"$:/state/tab--1498284803\"/>\n</div>\n"
},
"$:/core/ui/AlertTemplate": {
"title": "$:/core/ui/AlertTemplate",
"text": "<div class=\"tc-alert\">\n<div class=\"tc-alert-toolbar\">\n<$button class=\"tc-btn-invisible\"><$action-deletetiddler $tiddler=<<currentTiddler>>/>{{$:/core/images/cancel-button}}</$button>\n</div>\n<div class=\"tc-alert-subtitle\">\n<$wikify name=\"format\" text=<<lingo Tiddler/DateFormat>>>\n<$view field=\"component\"/> - <$view field=\"modified\" format=\"date\" template=<<format>>/> <$reveal type=\"nomatch\" state=\"!!count\" text=\"\"><span class=\"tc-alert-highlight\">({{$:/language/Count}}: <$view field=\"count\"/>)</span></$reveal>\n</$wikify>\n</div>\n<div class=\"tc-alert-body\">\n\n<$transclude/>\n\n</div>\n</div>\n"
},
"$:/core/ui/BinaryWarning": {
"title": "$:/core/ui/BinaryWarning",
"text": "\\define lingo-base() $:/language/BinaryWarning/\n<<lingo Prompt>>\n"
},
"$:/core/ui/Components/plugin-info": {
"title": "$:/core/ui/Components/plugin-info",
"text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define popup-state-macro()\n$(qualified-state)$-$(currentTiddler)$\n\\end\n\n\\define tabs-state-macro()\n$(popup-state)$-$(pluginInfoType)$\n\\end\n\n\\define plugin-icon-title()\n$(currentTiddler)$/icon\n\\end\n\n\\define plugin-disable-title()\n$:/config/Plugins/Disabled/$(currentTiddler)$\n\\end\n\n\\define plugin-table-body(type,disabledMessage,default-popup-state)\n<div class=\"tc-plugin-info-chunk tc-plugin-info-toggle\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/chevron-right}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-icon\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<plugin-icon-title>>>\n<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\n</$transclude>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-description\">\n<h1>\n''<$text text={{{ [<currentTiddler>get[name]] ~[<currentTiddler>split[/]last[1]] }}}/>'': <$view field=\"description\"><$view field=\"title\"/></$view> $disabledMessage$\n</h1>\n<h2>\n<$view field=\"title\"/>\n</h2>\n<h2>\n<div><em><$view field=\"version\"/></em></div>\n</h2>\n</div>\n\\end\n\n\\define plugin-info(type,default-popup-state)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info tc-plugin-info-disabled\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\" disabledMessage:\"<$macrocall $name='lingo' title='Disabled/Status'/>\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>> default=\"\"\"$default-popup-state$\"\"\">\n<div class=\"tc-plugin-info-dropdown\">\n<div class=\"tc-plugin-info-dropdown-body\">\n<$list filter=\"[all[current]] -[[$:/core]]\">\n<div style=\"float:right;\">\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"yes\" tooltip={{$:/language/ControlPanel/Plugins/Disable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Disable/Caption}}>\n<<lingo Disable/Caption>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"no\" tooltip={{$:/language/ControlPanel/Plugins/Enable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Enable/Caption}}>\n<<lingo Enable/Caption>>\n</$button>\n</$reveal>\n</div>\n</$list>\n<$set name=\"tabsList\" filter=\"[<currentTiddler>list[]] contents\">\n<$macrocall $name=\"tabs\" state=<<tabs-state-macro>> tabsList=<<tabsList>> default={{{ [enlist<tabsList>] }}} template=\"$:/core/ui/PluginInfo\"/>\n</$set>\n</div>\n</div>\n</$reveal>\n</$set>\n\\end\n\n<$macrocall $name=\"plugin-info\" type=<<plugin-type>> default-popup-state=<<default-popup-state>>/>\n"
},
"$:/core/ui/Components/tag-link": {
"title": "$:/core/ui/Components/tag-link",
"text": "<$link>\n<$set name=\"backgroundColor\" value={{!!color}}>\n<span style=<<tag-styles>> class=\"tc-tag-label\">\n<$view field=\"title\" format=\"text\"/>\n</span>\n</$set>\n</$link>"
},
"$:/core/ui/ControlPanel/Advanced": {
"title": "$:/core/ui/ControlPanel/Advanced",
"tags": "$:/tags/ControlPanel/Info",
"caption": "{{$:/language/ControlPanel/Advanced/Caption}}",
"text": "{{$:/language/ControlPanel/Advanced/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Advanced]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/TiddlerFields\" explicitState=\"$:/state/tab--959111941\"/>\n</div>\n"
},
"$:/core/ui/ControlPanel/Appearance": {
"title": "$:/core/ui/ControlPanel/Appearance",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Appearance/Caption}}",
"text": "{{$:/language/ControlPanel/Appearance/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Appearance]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Theme\" explicitState=\"$:/state/tab--1963855381\"/>\n</div>\n"
},
"$:/core/ui/ControlPanel/Basics": {
"title": "$:/core/ui/ControlPanel/Basics",
"tags": "$:/tags/ControlPanel/Info",
"caption": "{{$:/language/ControlPanel/Basics/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Basics/\n\n\\define show-filter-count(filter)\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $value=\"\"\"$filter$\"\"\"/>\n<$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" $value=\"\"\"$filter$\"\"\"/>\n<$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/>\n<$action-setfield $tiddler=\"$:/state/tab--1498284803\" $value=\"$:/core/ui/AdvancedSearch/Filter\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-advanced-search input\"/>\n''<$count filter=\"\"\"$filter$\"\"\"/>''\n{{$:/core/images/advanced-search-button}}\n</$button>\n\\end\n\n|<<lingo Version/Prompt>> |''<<version>>'' |\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/status/UserName\"><<lingo Username/Prompt>></$link> |<$edit-text tiddler=\"$:/status/UserName\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/AnimationDuration\"><<lingo AnimDuration/Prompt>></$link> |<$edit-text tiddler=\"$:/config/AnimationDuration\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\" class=\"tc-edit-texteditor\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n|<$link to=\"$:/language/DefaultNewTiddlerTitle\"><<lingo NewTiddler/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/language/DefaultNewTiddlerTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Title\"><<lingo NewJournal/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/config/NewJournal/Title\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Text\"><<lingo NewJournal/Text/Prompt>></$link> |<$edit tiddler=\"$:/config/NewJournal/Text\" tag=\"textarea\" class=\"tc-edit-texteditor\" default=\"\"/> |\n|<$link to=\"$:/config/NewTiddler/Tags\"><<lingo NewTiddler/Tags/Prompt>></$link> |<$vars currentTiddler=\"$:/config/NewTiddler/Tags\" tagField=\"text\">{{||$:/core/ui/EditTemplate/tags}}<$list filter=\"[<currentTiddler>tags[]] +[limit[1]]\" variable=\"ignore\"><$button tooltip={{$:/language/ControlPanel/Basics/RemoveTags/Hint}}><<lingo RemoveTags>><$action-listops $tiddler=<<currentTiddler>> $field=\"text\" $subfilter={{{ [<currentTiddler>get[tags]] }}}/><$action-setfield $tiddler=<<currentTiddler>> tags=\"\"/></$button></$list></$vars> |\n|<$link to=\"$:/config/NewJournal/Tags\"><<lingo NewJournal/Tags/Prompt>></$link> |<$vars currentTiddler=\"$:/config/NewJournal/Tags\" tagField=\"text\">{{||$:/core/ui/EditTemplate/tags}}<$list filter=\"[<currentTiddler>tags[]] +[limit[1]]\" variable=\"ignore\"><$button tooltip={{$:/language/ControlPanel/Basics/RemoveTags/Hint}}><<lingo RemoveTags>><$action-listops $tiddler=<<currentTiddler>> $field=\"text\" $subfilter={{{ [<currentTiddler>get[tags]] }}}/><$action-setfield $tiddler=<<currentTiddler>> tags=\"\"/></$button></$list></$vars> |\n|<$link to=\"$:/config/AutoFocus\"><<lingo AutoFocus/Prompt>></$link> |{{$:/snippets/minifocusswitcher}} |\n|<<lingo Language/Prompt>> |{{$:/snippets/minilanguageswitcher}} |\n|<<lingo Tiddlers/Prompt>> |<<show-filter-count \"[!is[system]sort[title]]\">> |\n|<<lingo Tags/Prompt>> |<<show-filter-count \"[tags[]sort[title]]\">> |\n|<<lingo SystemTiddlers/Prompt>> |<<show-filter-count \"[is[system]sort[title]]\">> |\n|<<lingo ShadowTiddlers/Prompt>> |<<show-filter-count \"[all[shadows]sort[title]]\">> |\n|<<lingo OverriddenShadowTiddlers/Prompt>> |<<show-filter-count \"[is[tiddler]is[shadow]sort[title]]\">> |\n"
},
"$:/core/ui/ControlPanel/EditorTypes": {
"title": "$:/core/ui/ControlPanel/EditorTypes",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/EditorTypes/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/EditorTypes/\n\n<<lingo Hint>>\n\n<table>\n<tbody>\n<tr>\n<th><<lingo Type/Caption>></th>\n<th><<lingo Editor/Caption>></th>\n</tr>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/config/EditorTypeMappings/]sort[title]]\">\n<tr>\n<td>\n<$link>\n<$list filter=\"[all[current]removeprefix[$:/config/EditorTypeMappings/]]\">\n<$text text={{!!title}}/>\n</$list>\n</$link>\n</td>\n<td>\n<$view field=\"text\"/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ControlPanel/Info": {
"title": "$:/core/ui/ControlPanel/Info",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Info/Caption}}",
"text": "{{$:/language/ControlPanel/Info/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Info]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Basics\" explicitState=\"$:/state/tab--2112689675\"/>\n</div>\n"
},
"$:/core/ui/ControlPanel/KeyboardShortcuts": {
"title": "$:/core/ui/ControlPanel/KeyboardShortcuts",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/KeyboardShortcuts/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/KeyboardShortcuts/\n\n\\define new-shortcut(title)\n<div class=\"tc-dropdown-item-plain\">\n<$edit-shortcut tiddler=\"$title$\" placeholder={{$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt}} focus=\"true\" style=\"width:auto;\"/> <$button>\n<<lingo Add/Caption>>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"[{$title$}]\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"$title$\"\n/>\n</$button>\n</div>\n\\end\n\n\\define shortcut-list-item(caption)\n<td>\n</td>\n<td style=\"text-align:right;font-size:0.7em;\">\n<<lingo Platform/$caption$>>\n</td>\n<td>\n<div style=\"position:relative;\">\n<$button popup=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> class=\"tc-btn-invisible\">\n{{$:/core/images/edit-button}}\n</$button>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutTitle)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\n<$reveal state=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown tc-popup-keep\">\n<$list filter=\"[list[$(shortcutTitle)$!!text]sort[title]]\" variable=\"shortcut\" emptyMessage=\"\"\"\n<div class=\"tc-dropdown-item-plain\">\n//<<lingo NoShortcuts/Caption>>//\n</div>\n\"\"\">\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint}}>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"+[remove<shortcut>]\"\n/>\n<small>{{$:/core/images/close-button}}</small>\n</$button>\n<kbd>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts=<<shortcut>>/>\n</kbd>\n</div>\n</$list>\n<hr/>\n<$macrocall $name=\"new-shortcut\" title=<<qualify \"$:/state/new-shortcut/$(shortcutTitle)$\">>/>\n</div>\n</div>\n</$reveal>\n</div>\n</td>\n\\end\n\n\\define shortcut-list(caption,prefix)\n<tr>\n<$list filter=\"[[$prefix$$(shortcutName)$]]\" variable=\"shortcutTitle\">\n<<shortcut-list-item \"$caption$\">>\n</$list>\n</tr>\n\\end\n\n\\define shortcut-editor()\n<<shortcut-list \"All\" \"$:/config/shortcuts/\">>\n<<shortcut-list \"Mac\" \"$:/config/shortcuts-mac/\">>\n<<shortcut-list \"NonMac\" \"$:/config/shortcuts-not-mac/\">>\n<<shortcut-list \"Linux\" \"$:/config/shortcuts-linux/\">>\n<<shortcut-list \"NonLinux\" \"$:/config/shortcuts-not-linux/\">>\n<<shortcut-list \"Windows\" \"$:/config/shortcuts-windows/\">>\n<<shortcut-list \"NonWindows\" \"$:/config/shortcuts-not-windows/\">>\n\\end\n\n\\define shortcut-preview()\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutPrefix)$$(shortcutName)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\\end\n\n\\define shortcut-item-inner()\n<tr>\n<td>\n<$reveal type=\"nomatch\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"open\"\n/>\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"close\"\n/>\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n''<$text text=<<shortcutName>>/>''\n</td>\n<td>\n<$transclude tiddler=\"$:/config/ShortcutInfo/$(shortcutName)$\"/>\n</td>\n<td>\n<$list filter=\"$:/config/shortcuts/ $:/config/shortcuts-mac/ $:/config/shortcuts-not-mac/ $:/config/shortcuts-linux/ $:/config/shortcuts-not-linux/ $:/config/shortcuts-windows/ $:/config/shortcuts-not-windows/\" variable=\"shortcutPrefix\">\n<<shortcut-preview>>\n</$list>\n</td>\n</tr>\n<$set name=\"dropdownState\" value={{$(dropdownStateTitle)$}}>\n<$list filter=\"[<dropdownState>match[open]]\" variable=\"listItem\">\n<<shortcut-editor>>\n</$list>\n</$set>\n\\end\n\n\\define shortcut-item()\n<$set name=\"dropdownStateTitle\" value=<<qualify \"$:/state/dropdown/keyboardshortcut/$(shortcutName)$\">>>\n<<shortcut-item-inner>>\n</$set>\n\\end\n\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]removeprefix[$:/config/ShortcutInfo/]]\" variable=\"shortcutName\">\n<<shortcut-item>>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ControlPanel/LoadedModules": {
"title": "$:/core/ui/ControlPanel/LoadedModules",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/LoadedModules/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n<<lingo LoadedModules/Hint>>\n\n{{$:/snippets/modules}}\n"
},
"$:/core/ui/ControlPanel/Modals/AddPlugins": {
"title": "$:/core/ui/ControlPanel/Modals/AddPlugins",
"subtitle": "{{$:/core/images/download-button}} {{$:/language/ControlPanel/Plugins/Add/Caption}}",
"text": "\\define install-plugin-actions()\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url={{!!url}} title={{$(assetInfo)$!!original-title}}/>\n<$set name=\"url\" value={{!!url}}>\n<$set name=\"currentTiddler\" value=<<assetInfo>>>\n<$list filter=\"[enlist{!!dependents}] [{!!parent-plugin}] +[sort[name]]\" variable=\"dependency\">\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url=<<url>> title=<<dependency>>/>\n</$list>\n</$set>\n</$set>\n\\end\n\n\\define install-plugin-button()\n<div>\n<$set name=\"libraryVersion\" value={{{ [<assetInfo>get[version]] }}}>\n<$set name=\"installedVersion\" value={{{ [<assetInfo>get[original-title]get[version]] }}}>\n<$set name=\"reinstall-type\" value={{{ [<libraryVersion>compare:version:eq<installedVersion>then[tc-reinstall]] [<libraryVersion>compare:version:gt<installedVersion>then[tc-reinstall-upgrade]] [<libraryVersion>compare:version:lt<installedVersion>then[tc-reinstall-downgrade]] }}}>\n<$button actions=<<install-plugin-actions>> class={{{ [<assetInfo>get[original-title]has[version]then<reinstall-type>] tc-btn-invisible tc-install-plugin +[join[ ]] }}}>\n{{$:/core/images/download-button}}\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"ignore\" emptyMessage=\"{{$:/language/ControlPanel/Plugins/Install/Caption}}\">\n<$list filter=\"[<libraryVersion>compare:version:gt<installedVersion>]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$list filter=\"[<libraryVersion>compare:version:lt<installedVersion>]\" variable=\"ignore\" emptyMessage=\"{{$:/language/ControlPanel/Plugins/Reinstall/Caption}}\">\n{{$:/language/ControlPanel/Plugins/Downgrade/Caption}}\n</$list>\n\"\"\">\n{{$:/language/ControlPanel/Plugins/Update/Caption}}\n</$list>\n</$list>\n</$button>\n<div>\n</div>\n<$reveal stateTitle=<<assetInfo>> stateField=\"requires-reload\" type=\"match\" text=\"yes\">{{$:/language/ControlPanel/Plugins/PluginWillRequireReload}}</$reveal>\n</$set>\n</$set>\n</$set>\n</div>\n\\end\n\n\\define popup-state-macro()\n$:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$\n\\end\n\n\\define display-plugin-info(type)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<div class=\"tc-plugin-info\">\n<div class=\"tc-plugin-info-chunk tc-plugin-info-toggle\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/chevron-right}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-icon\">\n<$list filter=\"[<assetInfo>has[icon]]\" emptyMessage=\"\"\"<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\"\"\">\n<img src={{$(assetInfo)$!!icon}}/>\n</$list>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-description\">\n<h1><strong><$text text={{{ [<assetInfo>get[name]] ~[<assetInfo>get[original-title]split[/]last[1]] }}}/></strong>: <$view tiddler=<<assetInfo>> field=\"description\"/></h1>\n<h2><$view tiddler=<<assetInfo>> field=\"original-title\"/></h2>\n<div><em><$view tiddler=<<assetInfo>> field=\"version\"/></em></div>\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"installedVersion\"><div><em>{{$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint}}</em></div></$list>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-buttons\">\n<<install-plugin-button>>\n</div>\n</div>\n<$set name=\"original-title\" value={{{ [<assetInfo>get[original-title]] }}}>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>>>\n<div class=\"tc-plugin-info-dropdown\">\n<$list filter=\"[enlist{!!dependents}] [<currentTiddler>get[parent-plugin]] +[limit[1]] ~[<assetInfo>get[original-title]!is[tiddler]]\" variable=\"ignore\">\n<div class=\"tc-plugin-info-dropdown-message\">\n<$list filter=\"[<assetInfo>get[original-title]!is[tiddler]]\">\n{{$:/language/ControlPanel/Plugins/NotInstalled/Hint}}\n</$list>\n<$set name=\"currentTiddler\" value=<<assetInfo>>>\n<$list filter=\"[enlist{!!dependents}] [<currentTiddler>get[parent-plugin]] +[limit[1]]\" variable=\"ignore\">\n<div>\n{{$:/language/ControlPanel/Plugins/AlsoRequires}}\n<$list filter=\"[enlist{!!dependents}] [{!!parent-plugin}] +[sort[name]]\" variable=\"dependency\">\n<$text text=<<dependency>>/>\n</$list>\n</div>\n</$list>\n</$set>\n</div>\n</$list>\n<div class=\"tc-plugin-info-dropdown-body\">\n<$transclude tiddler=<<assetInfo>> field=\"readme\" mode=\"block\"/>\n</div>\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>limit[1]]\" variable=\"ignore\">\n<div class=\"tc-plugin-info-sub-plugins\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>sort[name]]\" variable=\"assetInfo\">\n<<display-plugin-info \"$type$\">>\n</$list>\n</div>\n</$list>\n</div>\n</$reveal>\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>limit[1]]\" variable=\"ignore\">\n<$reveal type=\"nomatch\" text=\"yes\" state=<<popup-state>> tag=\"div\" class=\"tc-plugin-info-sub-plugin-indicator\">\n<$wikify name=\"count\" text=\"\"\"<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>]\"/>\"\"\">\n<$button class=\"tc-btn-invisible\" set=<<popup-state>> setTo=\"yes\">\n{{$:/language/ControlPanel/Plugins/SubPluginPrompt}}\n</$button>\n</$wikify>\n</$reveal>\n</$list>\n</$set>\n</$set>\n\\end\n\n\\define load-plugin-library-button()\n<$list filter=\"[<currentTiddler>get[enabled]else[yes]match[yes]]\" variable=\"ignore\">\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-load-plugin-library\" url={{!!url}} infoTitlePrefix=\"$:/temp/RemoteAssetInfo/\"/>\n{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Plugins/OpenPluginLibrary}}\n</$button>\n</$list>\n\\end\n\n\\define display-server-assets(type)\n{{$:/language/Search/Search}}: <$edit-text tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" default=\"\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n<div class=\"tc-plugin-library-listing\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]search:author,description,original-title,readme,title{$:/temp/RemoteAssetSearch/$(currentTiddler)$}sort[name]]\" variable=\"assetInfo\">\n<$list filter=\"[[$:/temp/RemoteAssetSearch/$(currentTiddler)$]has[text]] ~[<assetInfo>!has[parent-plugin]]\" variable=\"ignore\"><!-- Hide sub-plugins if we're not searching -->\n<<display-plugin-info \"$type$\">>\n</$list>\n</$list>\n</div>\n\\end\n\n\\define display-server-connection()\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/ServerConnection]suffix{!!url}]\" variable=\"connectionTiddler\" emptyMessage=<<load-plugin-library-button>>>\n\n<$set name=\"transclusion\" value=<<connectionTiddler>>>\n\n<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Add/Updates]] [[$:/core/ui/ControlPanel/Plugins/Add/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Add/Themes]] [[$:/core/ui/ControlPanel/Plugins/Add/Languages]]\" \"$:/core/ui/ControlPanel/Plugins/Add/Plugins\">>\n\n</$set>\n\n</$list>\n\\end\n\n\\define close-library-button()\n<$reveal type='nomatch' state='$:/temp/ServerConnection/$(PluginLibraryURL)$' text=''>\n<$button class='tc-btn-big-green'>\n<$action-sendmessage $message=\"tm-unload-plugin-library\" url={{!!url}}/>\n{{$:/core/images/chevron-left}} {{$:/language/ControlPanel/Plugins/ClosePluginLibrary}}\n<$action-deletetiddler $filter=\"[prefix[$:/temp/ServerConnection/$(PluginLibraryURL)$]][prefix[$:/temp/RemoteAssetInfo/$(PluginLibraryURL)$]]\"/>\n</$button>\n</$reveal>\n\\end\n\n\\define plugin-library-listing()\n<div class=\"tc-tab-set\">\n<$set name=\"defaultTab\" value={{{ [all[tiddlers+shadows]tag[$:/tags/PluginLibrary]] }}}>\n<div class=\"tc-tab-buttons\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<$button set=<<qualify \"$:/state/addplugins/tab\">> setTo=<<currentTiddler>> default=<<defaultTab>> selectedClass=\"tc-tab-selected\">\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude field=\"caption\"/>\n</$set>\n</$button>\n</$list>\n</div>\n<div class=\"tc-tab-divider\"/>\n<div class=\"tc-tab-content\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<$reveal type=\"match\" state=<<qualify \"$:/state/addplugins/tab\">> text=<<currentTiddler>> default=<<defaultTab>>>\n<h2><$link><$transclude field=\"caption\"><$view field=\"title\"/></$transclude></$link></h2>\n//<$view field=\"url\"/>//\n<$transclude mode=\"block\"/>\n<$set name=PluginLibraryURL value={{!!url}}>\n<<close-library-button>>\n</$set>\n<<display-server-connection>>\n</$reveal>\n</$list>\n</div>\n</$set>\n</div>\n\\end\n\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<div>\n<<plugin-library-listing>>\n</div>\n"
},
"$:/core/ui/ControlPanel/Palette": {
"title": "$:/core/ui/ControlPanel/Palette",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/Palette/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Palette/\n\n{{$:/snippets/paletteswitcher}}\n\n<$reveal type=\"nomatch\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"yes\"><<lingo ShowEditor/Caption>></$button>\n\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"no\"><<lingo HideEditor/Caption>></$button>\n{{$:/PaletteManager}}\n\n</$reveal>\n\n"
},
"$:/core/ui/ControlPanel/Parsing": {
"title": "$:/core/ui/ControlPanel/Parsing",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/Parsing/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Parsing/\n\n\\define toggle(Type)\n<$checkbox\ntiddler=\"\"\"$:/config/WikiParserRules/$Type$/$(rule)$\"\"\"\nfield=\"text\"\nchecked=\"enable\"\nunchecked=\"disable\"\ndefault=\"enable\">\n<<rule>>\n</$checkbox>\n\\end\n\n\\define rules(type,Type)\n<$list filter=\"[wikiparserrules[$type$]]\" variable=\"rule\">\n<dd><<toggle $Type$>></dd>\n</$list>\n\\end\n\n<<lingo Hint>>\n\n<dl>\n<dt><<lingo Pragma/Caption>></dt>\n<<rules pragma Pragma>>\n<dt><<lingo Inline/Caption>></dt>\n<<rules inline Inline>>\n<dt><<lingo Block/Caption>></dt>\n<<rules block Block>>\n</dl>"
},
"$:/core/ui/ControlPanel/Plugins/Add/Languages": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Languages",
"caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[language]]\"/>)",
"text": "<<display-server-assets language>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Add/Plugins": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[plugin]]\"/>)",
"text": "<<display-server-assets plugin>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Add/Themes": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Themes",
"caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[theme]]\"/>)",
"text": "<<display-server-assets theme>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Add/Updates": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Updates",
"caption": "<$importvariables filter=\"$:/core/ui/ControlPanel/Plugins/Add/Updates\">{{$:/language/ControlPanel/Plugins/Updates/Caption}} (<<update-count>>)</$importvariables>",
"text": "\\define each-updateable-plugin(body)\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}sort[title]]\" variable=\"assetInfo\">\n<$set name=\"libraryVersion\" value={{{ [<assetInfo>get[version]] }}}>\n<$list filter=\"[<assetInfo>get[original-title]has[version]!version<libraryVersion>]\" variable=\"ignore\">\n<$set name=\"installedVersion\" value={{{ [<assetInfo>get[original-title]get[version]] }}}>\n<$list filter=\"[<installedversion>!match<libraryVersion>]\" variable=\"ignore\">\n$body$\n</$list>\n</$set>\n</$list>\n</$set>\n</$list>\n\\end\n\n\\define update-all-actions()\n<$macrocall $name=\"each-updateable-plugin\" body=\"\"\"\n<<install-plugin-actions>>\n\"\"\"/>\n\\end\n\n\\define update-count()\n<$wikify name=\"count-filter\" text=<<each-updateable-plugin \"[[<$text text=<<assetInfo>>/>]]\">>><$count filter=<<count-filter>>/></$wikify>\n\\end\n\n<$button actions=<<update-all-actions>> class=\"tc-btn-invisible tc-install-plugin tc-reinstall-upgrade\">\n{{$:/core/images/download-button}} {{||$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption}}\n</$button>\n\n<div class=\"tc-plugin-library-listing\">\n<$macrocall $name=\"each-updateable-plugin\" body=\"\"\"\n<$macrocall $name=\"display-plugin-info\" type={{{ [<assetInfo>get[original-plugin-type]] }}}/>\n\"\"\"/>\n</div>\n"
},
"$:/core/ui/ControlPanel/Plugins/AddPlugins": {
"title": "$:/core/ui/ControlPanel/Plugins/AddPlugins",
"text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n<$button message=\"tm-modal\" param=\"$:/core/ui/ControlPanel/Modals/AddPlugins\" tooltip={{$:/language/ControlPanel/Plugins/Add/Hint}} class=\"tc-btn-big-green tc-primary-btn\">\n{{$:/core/images/download-button}} <<lingo Add/Caption>>\n</$button>\n"
},
"$:/core/ui/ControlPanel/Plugins/Installed/Languages": {
"title": "$:/core/ui/ControlPanel/Plugins/Installed/Languages",
"caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[language]]\"/>)",
"text": "<<plugin-table language>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Installed/Plugins": {
"title": "$:/core/ui/ControlPanel/Plugins/Installed/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[plugin]]\"/>)",
"text": "<<plugin-table plugin>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Installed/Themes": {
"title": "$:/core/ui/ControlPanel/Plugins/Installed/Themes",
"caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[theme]]\"/>)",
"text": "<<plugin-table theme>>\n"
},
"$:/core/ui/ControlPanel/Plugins": {
"title": "$:/core/ui/ControlPanel/Plugins",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define plugin-table(type)\n<$set name=\"plugin-type\" value=\"\"\"$type$\"\"\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n<$list filter=\"[!has[draft.of]plugin-type[$type$]sort[name]]\" emptyMessage=<<lingo \"Empty/Hint\">> template=\"$:/core/ui/Components/plugin-info\"/>\n</$set>\n</$set>\n\\end\n\n{{$:/core/ui/ControlPanel/Plugins/AddPlugins}}\n\n<<lingo Installed/Hint>>\n\n<$macrocall $name=\"tabs\" tabsList=\"[[$:/core/ui/ControlPanel/Plugins/Installed/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Installed/Themes]] [[$:/core/ui/ControlPanel/Plugins/Installed/Languages]]\" default=\"$:/core/ui/ControlPanel/Plugins/Installed/Plugins\" explicitState=\"$:/state/tab--86143343\"/>\n"
},
"$:/core/ui/ControlPanel/Saving/DownloadSaver": {
"title": "$:/core/ui/ControlPanel/Saving/DownloadSaver",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/DownloadSaver/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/DownloadSaver/\n\n<<lingo Hint>>\n\n!! <$link to=\"$:/config/DownloadSaver/AutoSave\"><<lingo AutoSave/Hint>></$link>\n\n<$checkbox tiddler=\"$:/config/DownloadSaver/AutoSave\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <<lingo AutoSave/Description>> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Saving/General": {
"title": "$:/core/ui/ControlPanel/Saving/General",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/General/Caption}}",
"list-before": "",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n{{$:/language/ControlPanel/Saving/General/Hint}}\n\n!! <$link to=\"$:/config/AutoSave\"><<lingo AutoSave/Caption>></$link>\n\n<<lingo AutoSave/Hint>>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"yes\"> <<lingo AutoSave/Enabled/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"no\"> <<lingo AutoSave/Disabled/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Saving/GitHub": {
"title": "$:/core/ui/ControlPanel/Saving/GitHub",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/GitService/GitHub/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~GitHub\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/GitHub/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo GitHub/Password>> |<$password name=\"github\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/GitHub/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/GitHub/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/GitHub/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/GitHub/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/GitHub/ServerURL\" default=\"https://api.github.com\" tag=\"input\"/> |"
},
"$:/core/ui/ControlPanel/Saving/GitLab": {
"title": "$:/core/ui/ControlPanel/Saving/GitLab",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/GitService/GitLab/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~GitLab\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/GitLab/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo GitLab/Password>> |<$password name=\"gitlab\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/GitLab/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/GitLab/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/GitLab/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/GitLab/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/GitLab/ServerURL\" default=\"https://gitlab.com/api/v4\" tag=\"input\"/> |"
},
"$:/core/ui/ControlPanel/Saving/TiddlySpot": {
"title": "$:/core/ui/ControlPanel/Saving/TiddlySpot",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/TiddlySpot/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/TiddlySpot/\n\n\\define siteURL(path)\nhttp://$(userName)$.tiddlyspot.com/$path$/\n\\end\n\\define siteLink(path)\n<$reveal type=\"nomatch\" state=\"$:/UploadName\" text=\"\">\n<$set name=\"userName\" value={{$:/UploadName}}>\n<$reveal type=\"match\" state=\"$:/UploadURL\" text=\"\">\n<<siteURL $path$>>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/UploadURL\" text=\"\">\n<$macrocall $name=resolvePath source={{$:/UploadBackupDir}} root={{$:/UploadURL}}>>\n</$reveal>\n</$set>\n</$reveal>\n\\end\n\n<div class=\"tc-message-box\">\n\n<<lingo ReadOnly>>\n\n</div>\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/UploadName\" default=\"\" tag=\"input\"/> |\n|<<lingo Password>> |<$password name=\"upload\"/> |\n|<<lingo Backups>> |<<siteLink backup>> |\n|<<lingo ControlPanel>> |<<siteLink controlpanel>> |\n\n''<<lingo Advanced/Heading>>''\n\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/UploadURL\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/UploadFilename\" default=\"index.html\" tag=\"input\"/> |\n|<<lingo UploadDir>> |<$edit-text tiddler=\"$:/UploadDir\" default=\".\" tag=\"input\"/> |\n|<<lingo BackupDir>> |<$edit-text tiddler=\"$:/UploadBackupDir\" default=\".\" tag=\"input\"/> |\n\n<<lingo TiddlySpot/Hint>>\n"
},
"$:/core/ui/ControlPanel/Saving/Gitea": {
"title": "$:/core/ui/ControlPanel/Saving/Gitea",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/GitService/Gitea/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~Gitea\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/Gitea/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo Gitea/Password>> |<$password name=\"Gitea\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/Gitea/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/Gitea/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/Gitea/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/Gitea/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/Gitea/ServerURL\" default=\"https://gitea/api/v1\" tag=\"input\"/> |\n"
},
"$:/core/ui/ControlPanel/Saving": {
"title": "$:/core/ui/ControlPanel/Saving",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Saving/Caption}}",
"text": "{{$:/language/ControlPanel/Saving/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Saving]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Saving/General\" explicitState=\"$:/state/tab-2065006209\"/>\n</div>\n"
},
"$:/core/buttonstyles/Borderless": {
"title": "$:/core/buttonstyles/Borderless",
"tags": "$:/tags/ToolbarButtonStyle",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless}}",
"text": "tc-btn-invisible"
},
"$:/core/buttonstyles/Boxed": {
"title": "$:/core/buttonstyles/Boxed",
"tags": "$:/tags/ToolbarButtonStyle",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed}}",
"text": "tc-btn-boxed"
},
"$:/core/buttonstyles/Rounded": {
"title": "$:/core/buttonstyles/Rounded",
"tags": "$:/tags/ToolbarButtonStyle",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded}}",
"text": "tc-btn-rounded"
},
"$:/core/ui/ControlPanel/Settings/CamelCase": {
"title": "$:/core/ui/ControlPanel/Settings/CamelCase",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/CamelCase/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/CamelCase/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/WikiParserRules/Inline/wikilink\" field=\"text\" checked=\"enable\" unchecked=\"disable\" default=\"enable\"> <$link to=\"$:/config/WikiParserRules/Inline/wikilink\"><<lingo Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab": {
"title": "$:/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab",
"caption": "{{$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption}}",
"tags": "$:/tags/ControlPanel/Settings",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/DefaultMoreSidebarTab/\n\n<$link to=\"$:/config/DefaultMoreSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultMoreSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/DefaultSidebarTab": {
"title": "$:/core/ui/ControlPanel/Settings/DefaultSidebarTab",
"caption": "{{$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption}}",
"tags": "$:/tags/ControlPanel/Settings",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/DefaultSidebarTab/\n\n<$link to=\"$:/config/DefaultSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/EditorToolbar": {
"title": "$:/core/ui/ControlPanel/Settings/EditorToolbar",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/EditorToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/EditorToolbar/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/TextEditor/EnableToolbar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/TextEditor/EnableToolbar\"><<lingo Description>></$link> </$checkbox>\n\n"
},
"$:/core/ui/ControlPanel/Settings/InfoPanelMode": {
"title": "$:/core/ui/ControlPanel/Settings/InfoPanelMode",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/InfoPanelMode/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/InfoPanelMode/\n<$link to=\"$:/config/TiddlerInfo/Mode\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"popup\"> <<lingo Popup/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"sticky\"> <<lingo Sticky/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/LinkToBehaviour": {
"title": "$:/core/ui/ControlPanel/Settings/LinkToBehaviour",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/LinkToBehaviour/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/LinkToBehaviour/\n\n<$link to=\"$:/config/Navigation/openLinkFromInsideRiver\"><<lingo \"InsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromInsideRiver\">\n <option value=\"above\"><<lingo \"OpenAbove\">></option>\n <option value=\"below\"><<lingo \"OpenBelow\">></option>\n <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n\n<$link to=\"$:/config/Navigation/openLinkFromOutsideRiver\"><<lingo \"OutsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromOutsideRiver\">\n <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/MissingLinks": {
"title": "$:/core/ui/ControlPanel/Settings/MissingLinks",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/MissingLinks/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/MissingLinks/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/MissingLinks\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/MissingLinks\"><<lingo Description>></$link> </$checkbox>\n\n"
},
"$:/core/ui/ControlPanel/Settings/NavigationAddressBar": {
"title": "$:/core/ui/ControlPanel/Settings/NavigationAddressBar",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/NavigationAddressBar/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationAddressBar/\n\n<$link to=\"$:/config/Navigation/UpdateAddressBar\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permaview\"> <<lingo Permaview/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permalink\"> <<lingo Permalink/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/NavigationHistory": {
"title": "$:/core/ui/ControlPanel/Settings/NavigationHistory",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/NavigationHistory/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationHistory/\n<$link to=\"$:/config/Navigation/UpdateHistory\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/NavigationPermalinkviewMode": {
"title": "$:/core/ui/ControlPanel/Settings/NavigationPermalinkviewMode",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationPermalinkviewMode/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Navigation/Permalinkview/CopyToClipboard\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Navigation/Permalinkview/CopyToClipboard\"><<lingo CopyToClipboard/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Navigation/Permalinkview/UpdateAddressBar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Navigation/Permalinkview/UpdateAddressBar\"><<lingo UpdateAddressBar/Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation": {
"title": "$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/PerformanceInstrumentation/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Performance/Instrumentation\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Performance/Instrumentation\"><<lingo Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings/TitleLinks": {
"title": "$:/core/ui/ControlPanel/Settings/TitleLinks",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/TitleLinks/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/TitleLinks/\n<$link to=\"$:/config/Tiddlers/TitleLinks\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle": {
"title": "$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtonStyle/\n<$link to=\"$:/config/Toolbar/ButtonClass\"><<lingo \"Hint\">></$link>\n\n<$select tiddler=\"$:/config/Toolbar/ButtonClass\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ToolbarButtonStyle]]\">\n<option value={{!!text}}>{{!!caption}}</option>\n</$list>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/ToolbarButtons": {
"title": "$:/core/ui/ControlPanel/Settings/ToolbarButtons",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtons/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtons/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Icons\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Toolbar/Icons\"><<lingo Icons/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Text\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Toolbar/Text\"><<lingo Text/Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings": {
"title": "$:/core/ui/ControlPanel/Settings",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Settings/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n<<lingo Hint>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings]]\">\n\n<div style=\"border-top:1px solid #eee;\">\n\n!! <$link><$transclude field=\"caption\"/></$link>\n\n<$transclude/>\n\n</div>\n\n</$list>\n"
},
"$:/core/ui/ControlPanel/StoryView": {
"title": "$:/core/ui/ControlPanel/StoryView",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/StoryView/Caption}}",
"text": "{{$:/snippets/viewswitcher}}\n"
},
"$:/core/ui/ControlPanel/Stylesheets": {
"title": "$:/core/ui/ControlPanel/Stylesheets",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/Stylesheets/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo Stylesheets/Hint>>\n\n{{$:/snippets/peek-stylesheets}}\n"
},
"$:/core/ui/ControlPanel/Theme": {
"title": "$:/core/ui/ControlPanel/Theme",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/Theme/Caption}}",
"text": "{{$:/snippets/themeswitcher}}\n"
},
"$:/core/ui/ControlPanel/TiddlerFields": {
"title": "$:/core/ui/ControlPanel/TiddlerFields",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/TiddlerFields/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo TiddlerFields/Hint>>\n\n{{$:/snippets/allfields}}"
},
"$:/core/ui/ControlPanel/Toolbars/EditToolbar": {
"title": "$:/core/ui/ControlPanel/Toolbars/EditToolbar",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/EditToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>"
},
"$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate": {
"title": "$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate",
"text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"><$transclude tiddler={{!!icon}}/></span> <$transclude field=\"caption\"/> -- <i class=\"tc-muted\"><$transclude field=\"description\"/></i>\n</$draggable>\n"
},
"$:/core/ui/ControlPanel/Toolbars/EditorToolbar": {
"title": "$:/core/ui/ControlPanel/Toolbars/EditorToolbar",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/EditorToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditorToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditorToolbar/Hint}}\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditorToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate\"/>\n"
},
"$:/core/ui/ControlPanel/Toolbars/ItemTemplate": {
"title": "$:/core/ui/ControlPanel/Toolbars/ItemTemplate",
"text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"> <$transclude field=\"caption\"/> <i class=\"tc-muted\">-- <$transclude field=\"description\"/></i></span>\n</$draggable>\n"
},
"$:/core/ui/ControlPanel/Toolbars/PageControls": {
"title": "$:/core/ui/ControlPanel/Toolbars/PageControls",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/PageControls/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/PageControlButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/PageControls/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/PageControls\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/ControlPanel/Toolbars/ViewToolbar": {
"title": "$:/core/ui/ControlPanel/Toolbars/ViewToolbar",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/ViewToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/ViewToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/ViewToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/ViewToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/ControlPanel/Toolbars": {
"title": "$:/core/ui/ControlPanel/Toolbars",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/Toolbars/Caption}}",
"text": "{{$:/language/ControlPanel/Toolbars/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Toolbars]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Toolbars/ViewToolbar\" class=\"tc-vertical\" explicitState=\"$:/state/tabs/controlpanel/toolbars-1345989671\"/>\n</div>\n"
},
"$:/ControlPanel": {
"title": "$:/ControlPanel",
"icon": "$:/core/images/options-button",
"color": "#bbb",
"text": "<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Info\" explicitState=\"$:/state/tab-1749438307\"/>\n</div>\n"
},
"$:/core/ui/DefaultSearchResultList": {
"title": "$:/core/ui/DefaultSearchResultList",
"tags": "$:/tags/SearchResults",
"caption": "{{$:/language/Search/DefaultResults/Caption}}",
"first-search-filter": "[!is[system]search:title<userInput>sort[title]limit[250]]",
"second-search-filter": "[!is[system]search<userInput>sort[title]limit[250]]",
"text": "\\define searchResultList()\n//<small>{{$:/language/Search/Matches/Title}}</small>//\n\n<$list filter=\"[<userInput>minlength[1]]\" variable=\"ignore\">\n<$list filter={{{ [<configTiddler>get[first-search-filter]] }}}>\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n</$list>\n\n//<small>{{$:/language/Search/Matches/All}}</small>//\n\n<$list filter=\"[<userInput>minlength[1]]\" variable=\"ignore\">\n<$list filter={{{ [<configTiddler>get[second-search-filter]] }}}>\n<span class={{{[<currentTiddler>addsuffix[-secondaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n</$list>\n\n\\end\n<<searchResultList>>\n"
},
"$:/core/ui/EditTemplate/body/preview/diffs-current": {
"title": "$:/core/ui/EditTemplate/body/preview/diffs-current",
"tags": "$:/tags/EditPreview",
"caption": "differences from current",
"list-after": "$:/core/ui/EditTemplate/body/preview/output",
"text": "<$list filter=\"[<currentTiddler>!is[image]]\" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}>\n\n<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/>\n\n</$list>\n\n"
},
"$:/core/ui/EditTemplate/body/preview/diffs-shadow": {
"title": "$:/core/ui/EditTemplate/body/preview/diffs-shadow",
"tags": "$:/tags/EditPreview",
"caption": "differences from shadow (if any)",
"list-after": "$:/core/ui/EditTemplate/body/preview/output",
"text": "<$list filter=\"[<currentTiddler>!is[image]]\" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}>\n\n<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle={{{ [{!!draft.of}shadowsource[]] }}} sourceSubTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/>\n\n</$list>\n\n"
},
"$:/core/ui/EditTemplate/body/preview/output": {
"title": "$:/core/ui/EditTemplate/body/preview/output",
"tags": "$:/tags/EditPreview",
"caption": "{{$:/language/EditTemplate/Body/Preview/Type/Output}}",
"text": "\\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]]\n<$set name=\"tv-tiddler-preview\" value=\"yes\">\n\n<$transclude />\n\n</$set>\n"
},
"$:/state/showeditpreview": {
"title": "$:/state/showeditpreview",
"text": "no"
},
"$:/core/ui/EditTemplate/body/editor": {
"title": "$:/core/ui/EditTemplate/body/editor",
"text": "<$edit\n\n field=\"text\"\n class=\"tc-edit-texteditor tc-edit-texteditor-body\"\n placeholder={{$:/language/EditTemplate/Body/Placeholder}}\n tabindex={{$:/config/EditTabIndex}}\n focus={{{ [{$:/config/AutoFocus}match[text]then[true]] ~[[false]] }}}\n cancelPopups=\"yes\"\n\n><$set\n\n name=\"targetTiddler\"\n value=<<currentTiddler>>\n\n><$list\n\n filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]]\"\n\n><$reveal\n\n type=\"nomatch\"\n state=<<config-visibility-title>>\n text=\"hide\"\n class=\"tc-text-editor-toolbar-item-wrapper\"\n\n><$transclude\n\n tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\"\n mode=\"inline\"\n\n/></$reveal></$list></$set></$edit>\n"
},
"$:/core/ui/EditTemplate/body/toolbar/button": {
"title": "$:/core/ui/EditTemplate/body/toolbar/button",
"text": "\\define toolbar-button-icon()\n<$list\n\n filter=\"[all[current]!has[custom-icon]]\"\n variable=\"no-custom-icon\"\n\n><$transclude\n\n tiddler={{!!icon}}\n\n/></$list>\n\\end\n\n\\define toolbar-button-tooltip()\n{{!!description}}<$macrocall $name=\"displayshortcuts\" $output=\"text/plain\" shortcuts={{!!shortcuts}} prefix=\"` - [\" separator=\"] [\" suffix=\"]`\"/>\n\\end\n\n\\define toolbar-button()\n<$list\n\n filter={{!!condition}}\n variable=\"list-condition\"\n\n><$wikify\n\n name=\"tooltip-text\"\n text=<<toolbar-button-tooltip>>\n mode=\"inline\"\n output=\"text\"\n\n><$list\n\n filter=\"[all[current]!has[dropdown]]\"\n variable=\"no-dropdown\"\n\n><$button\n\n class=\"tc-btn-invisible $(buttonClasses)$\"\n tooltip=<<tooltip-text>>\n actions={{!!actions}}\n\n><span\n\n data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n tiddler=<<currentTiddler>>\n field=\"text\"\n\n/></$button></$list><$list\n\n filter=\"[all[current]has[dropdown]]\"\n variable=\"dropdown\"\n\n><$set\n\n name=\"dropdown-state\"\n value=<<qualify \"$:/state/EditorToolbarDropdown\">>\n\n><$button\n\n popup=<<dropdown-state>>\n class=\"tc-popup-keep tc-btn-invisible $(buttonClasses)$\"\n selectedClass=\"tc-selected\"\n tooltip=<<tooltip-text>>\n actions={{!!actions}}\n\n><span\n\n data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n tiddler=<<currentTiddler>>\n field=\"text\"\n\n/></$button><$reveal\n\n state=<<dropdown-state>>\n type=\"popup\"\n position=\"below\"\n animate=\"yes\"\n tag=\"span\"\n\n><div\n\n class=\"tc-drop-down tc-popup-keep\"\n\n><$transclude\n\n tiddler={{!!dropdown}}\n mode=\"block\"\n\n/></div></$reveal></$set></$list></$wikify></$list>\n\\end\n\n\\define toolbar-button-outer()\n<$set\n\n name=\"buttonClasses\"\n value={{!!button-classes}}\n\n><<toolbar-button>></$set>\n\\end\n\n<<toolbar-button-outer>>"
},
"$:/core/ui/EditTemplate/body": {
"title": "$:/core/ui/EditTemplate/body",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/Body/\n\\define config-visibility-title()\n$:/config/EditorToolbarButtons/Visibility/$(currentTiddler)$\n\\end\n<$list filter=\"[all[current]has[_canonical_uri]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo External/Hint>>\n\n<a href={{!!_canonical_uri}}><$text text={{!!_canonical_uri}}/></a>\n\n<$edit-text field=\"_canonical_uri\" class=\"tc-edit-fields\" tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"></$edit-text>\n\n</div>\n\n</$list>\n\n<$list filter=\"[all[current]!has[_canonical_uri]]\">\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\">\n\n<div class=\"tc-tiddler-preview\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n<div class=\"tc-tiddler-preview-preview\">\n\n<$transclude tiddler={{$:/state/editpreviewtype}} mode=\"inline\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/preview/output\" mode=\"inline\"/>\n\n</$transclude>\n\n</div>\n\n</div>\n\n</$reveal>\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n</$reveal>\n\n</$list>\n"
},
"$:/core/ui/EditTemplate/controls": {
"title": "$:/core/ui/EditTemplate/controls",
"tags": "$:/tags/EditTemplate",
"text": "\\define config-title()\n$:/config/EditToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title tc-tiddler-edit-title\">\n<$view field=\"title\"/>\n<span class=\"tc-tiddler-controls tc-titlebar\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$transclude tiddler=<<listItem>>/></$reveal></$list></span>\n<div style=\"clear: both;\"></div>\n</div>\n"
},
"$:/core/ui/EditTemplate/fields": {
"title": "$:/core/ui/EditTemplate/fields",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/\n\\define config-title()\n$:/config/EditTemplateFields/Visibility/$(currentField)$\n\\end\n\n\\define config-filter()\n[[hide]] -[title{$(config-title)$}]\n\\end\n\n\\define current-tiddler-new-field-selector()\n[data-tiddler-title=\"$(currentTiddlerCSSescaped)$\"] .tc-edit-field-add-name-wrapper input\n\\end\n\n\\define new-field-actions()\n<$action-sendmessage $message=\"tm-add-field\" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<storeTitle>] [<searchListState>]\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/>\n\\end\n\n\\define delete-state-tiddlers() <$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<storeTitle>] [<searchListState>]\"/>\n\n\\define cancel-search-actions-inner()\n<$list filter=\"[<storeTitle>has[text]] [<newFieldNameTiddler>has[text]]\" variable=\"ignore\" emptyMessage=\"\"\"<<cancel-delete-tiddler-actions \"cancel\">>\"\"\">\n<<delete-state-tiddlers>>\n</$list>\n\\end\n\n\\define cancel-search-actions()\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[<newFieldNameTiddler>get[text]!match<userInput>]\" emptyMessage=\"\"\"<<cancel-search-actions-inner>>\"\"\">\n<$action-setfield $tiddler=<<newFieldNameTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n</$list>\n</$set>\n\\end\n\n\\define new-field()\n<$vars name={{{ [<newFieldNameTiddler>get[text]] }}}>\n<$reveal type=\"nomatch\" text=\"\" default=<<name>>>\n<$button tooltip=<<lingo Fields/Add/Button/Hint>>>\n<$action-sendmessage $message=\"tm-add-field\"\n$name=<<name>>\n$value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<storeTitle>] [<searchListState>]\"/>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" text=\"\" default=<<name>>>\n<$button>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n</$vars>\n\\end\n\\whitespace trim\n\n<div class=\"tc-edit-fields\">\n<table class={{{ [all[current]fields[]] :filter[lookup[$:/config/EditTemplateFields/Visibility/]!match[hide]] +[count[]!match[0]] +[then[tc-edit-fields]] ~[[tc-edit-fields tc-edit-fields-small]] }}}>\n<tbody>\n<$list filter=\"[all[current]fields[]] +[sort[title]]\" variable=\"currentField\" storyview=\"pop\">\n<$list filter=<<config-filter>> variable=\"temp\">\n<tr class=\"tc-edit-field\">\n<td class=\"tc-edit-field-name\">\n<$text text=<<currentField>>/>:</td>\n<td class=\"tc-edit-field-value\">\n<$keyboard key=\"((delete-field))\" actions=\"\"\"<$action-deletefield $field=<<currentField>>/><$set name=\"currentTiddlerCSSescaped\" value={{{ [<currentTiddler>escapecss[]] }}}><$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/></$set>\"\"\">\n<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"/>\n</$keyboard>\n</td>\n<td class=\"tc-edit-field-remove\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\n<$action-deletefield $field=<<currentField>>/><$set name=\"currentTiddlerCSSescaped\" value={{{ [<currentTiddler>escapecss[]] }}}><$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/></$set>\n{{$:/core/images/delete-button}}\n</$button>\n</td>\n</tr>\n</$list>\n</$list>\n</tbody>\n</table>\n</div>\n\n<$fieldmangler>\n<div class=\"tc-edit-field-add\">\n<em class=\"tc-edit tc-big-gap-right\">\n<<lingo Fields/Add/Prompt>>\n</em>\n<$vars refreshTitle=<<qualify \"$:/temp/fieldname/refresh\">> storeTitle=<<newFieldNameInputTiddler>> searchListState=<<newFieldNameSelectionTiddler>>>\n<div class=\"tc-edit-field-add-name-wrapper\">\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<newFieldNameTiddler>> storeTitle=<<storeTitle>> refreshTitle=<<refreshTitle>>\n\t\tselectionStateTitle=<<searchListState>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}}\n\t\tfocusPopup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-edit-texteditor tc-popup-handle\" tabindex={{$:/config/EditTabIndex}}\n\t\tfocus={{{ [{$:/config/AutoFocus}match[fields]then[true]] ~[[false]] }}} cancelPopups=\"yes\"\n\t\tconfigTiddlerFilter=\"[[$:/config/EditMode/fieldname-filter]]\" inputCancelActions=<<cancel-search-actions>> />\n<$button popup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown tc-small-gap\" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/field-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher to=<<newFieldNameTiddler>>>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/User>>\n</div>\n<$set name=\"newFieldName\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[!is[shadow]!is[system]fields[]search:title<newFieldName>sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type\" variable=\"currentField\">\n<$list filter=\"[<currentField>addsuffix[-primaryList]] -[<searchListState>get[text]]\" emptyMessage=\"\"\"<$link to=<<currentField>> class=\"tc-list-item-selected\"><$text text=<<currentField>>/></$link>\"\"\">\n<$link to=<<currentField>>>\n<$text text=<<currentField>>/>\n</$link>\n</$list>\n</$list>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/System>>\n</div>\n<$list filter=\"[fields[]search:title<newFieldName>sort[]] -[!is[shadow]!is[system]fields[]]\" variable=\"currentField\">\n<$list filter=\"[<currentField>addsuffix[-secondaryList]] -[<searchListState>get[text]]\" emptyMessage=\"\"\"<$link to=<<currentField>> class=\"tc-list-item-selected\"><$text text=<<currentField>>/></$link>\"\"\">\n<$link to=<<currentField>>>\n<$text text=<<currentField>>/>\n</$link>\n</$list>\n</$list>\n</$set>\n</$linkcatcher>\n</$set>\n</div>\n</$reveal>\n</div>\n<span class=\"tc-edit-field-add-value tc-small-gap-right\">\n<$set name=\"currentTiddlerCSSescaped\" value={{{ [<currentTiddler>escapecss[]] }}}>\n<$keyboard key=\"((add-field))\" actions=<<new-field-actions>>>\n<$edit-text tiddler=<<newFieldValueTiddler>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class=\"tc-edit-texteditor\" tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"/>\n</$keyboard>\n</$set>\n</span>\n<span class=\"tc-edit-field-add-button\">\n<$macrocall $name=\"new-field\"/>\n</span>\n</$vars>\n</div>\n</$fieldmangler>\n"
},
"$:/core/ui/EditTemplate/shadow": {
"title": "$:/core/ui/EditTemplate/shadow",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/Shadow/\n\\define pluginLinkBody()\n<$link to=\"\"\"$(pluginTitle)$\"\"\">\n<$text text=\"\"\"$(pluginTitle)$\"\"\"/>\n</$link>\n\\end\n<$list filter=\"[all[current]get[draft.of]is[shadow]!is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>\n\n<$list filter=\"[all[current]get[draft.of]is[shadow]is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo OverriddenWarning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>"
},
"$:/core/ui/EditTemplate/tags": {
"title": "$:/core/ui/EditTemplate/tags",
"tags": "$:/tags/EditTemplate",
"text": "\\whitespace trim\n\n\\define lingo-base() $:/language/EditTemplate/\n\n\\define tag-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-body-inner(colour,fallbackTarget,colourA,colourB,icon,tagField:\"tags\")\n\\whitespace trim\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<span style=<<tag-styles>> class=\"tc-tag-label tc-tag-list-item\">\n<$transclude tiddler=\"\"\"$icon$\"\"\"/><$view field=\"title\" format=\"text\" />\n<$button class=\"tc-btn-invisible tc-remove-tag-button\"><$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"-[{!!title}]\"/>{{$:/core/images/close-button}}</$button>\n</span>\n</$vars>\n\\end\n\n\\define tag-body(colour,palette,icon,tagField:\"tags\")\n<$macrocall $name=\"tag-body-inner\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} icon=\"\"\"$icon$\"\"\" tagField=<<__tagField__>>/>\n\\end\n\n\\define edit-tags-template(tagField:\"tags\")\n\\whitespace trim\n<div class=\"tc-edit-tags\">\n<$list filter=\"[list[!!$tagField$]sort[title]]\" storyview=\"pop\">\n<$macrocall $name=\"tag-body\" colour={{!!color}} palette={{$:/palette}} icon={{!!icon}} tagField=<<__tagField__>>/>\n</$list>\n<$vars tabIndex={{$:/config/EditTabIndex}} cancelPopups=\"yes\">\n<$macrocall $name=\"tag-picker\" tagField=<<__tagField__>>/>\n</$vars>\n</div>\n\\end\n<$set name=\"saveTiddler\" value=<<currentTiddler>>>\n<$macrocall $name=\"edit-tags-template\" tagField=<<tagField>>/>\n</$set>\n"
},
"$:/core/ui/EditTemplate/title": {
"title": "$:/core/ui/EditTemplate/title",
"tags": "$:/tags/EditTemplate",
"text": "<$edit-text field=\"draft.title\" class=\"tc-titlebar tc-edit-texteditor\" focus={{{ [{$:/config/AutoFocus}match[title]then[true]] ~[[false]] }}} tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"/>\n\n<$vars pattern=\"\"\"[\\|\\[\\]{}]\"\"\" bad-chars=\"\"\"`| [ ] { }`\"\"\">\n\n<$list filter=\"[all[current]regexp:draft.title<pattern>]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/BadCharacterWarning}}\n\n</div>\n\n</$list>\n\n</$vars>\n\n<$reveal state=\"!!draft.title\" type=\"nomatch\" text={{!!draft.of}} tag=\"div\">\n\n<$list filter=\"[{!!draft.title}!is[missing]]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}}\n\n</div>\n\n</$list>\n\n<$list filter=\"[{!!draft.of}!is[missing]]\" variable=\"listItem\">\n\n<$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}>\n\n<$checkbox tiddler=\"$:/config/RelinkOnRename\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> {{$:/language/EditTemplate/Title/Relink/Prompt}}</$checkbox>\n\n<$list filter=\"[title<fromTitle>backlinks[]limit[1]]\" variable=\"listItem\">\n\n<$vars stateTiddler=<<qualify \"$:/state/edit/references\">> >\n\n<$reveal type=\"nomatch\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"show\" class=\"tc-btn-invisible\">{{$:/core/images/right-arrow}} \n<<lingo EditTemplate/Title/References/Prompt>></$button>\n</$reveal>\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"hide\" class=\"tc-btn-invisible\">{{$:/core/images/down-arrow}} \n<<lingo EditTemplate/Title/References/Prompt>></$button>\n</$reveal>\n\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$tiddler tiddler=<<fromTitle>> >\n<$transclude tiddler=\"$:/core/ui/TiddlerInfo/References\"/>\n</$tiddler>\n</$reveal>\n\n</$vars>\n\n</$list>\n\n</$vars>\n\n</$list>\n\n</$reveal>\n"
},
"$:/core/ui/EditTemplate/type": {
"title": "$:/core/ui/EditTemplate/type",
"tags": "$:/tags/EditTemplate",
"first-search-filter": "[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]sort[description]sort[group-sort]removeprefix[$:/language/Docs/Types/]search<userInput>]",
"text": "\\define lingo-base() $:/language/EditTemplate/\n\\define input-cancel-actions() <$list filter=\"[<storeTitle>get[text]] [<currentTiddler>get[type]] +[limit[1]]\" emptyMessage=\"\"\"<<cancel-delete-tiddler-actions \"cancel\">>\"\"\"><$action-sendmessage $message=\"tm-remove-field\" $param=\"type\"/><$action-deletetiddler $filter=\"[<typeInputTiddler>] [<refreshTitle>] [<typeSelectionTiddler>]\"/></$list>\n\\whitespace trim\n<$set name=\"refreshTitle\" value=<<qualify \"$:/temp/type-search/refresh\">>>\n<div class=\"tc-edit-type-selector-wrapper\">\n<em class=\"tc-edit tc-big-gap-right\"><<lingo Type/Prompt>></em>\n<div class=\"tc-type-selector-dropdown-wrapper\">\n<div class=\"tc-type-selector\"><$fieldmangler>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<currentTiddler>> storeTitle=<<typeInputTiddler>> refreshTitle=<<refreshTitle>> selectionStateTitle=<<typeSelectionTiddler>> field=\"type\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-edit-typeeditor tc-edit-texteditor tc-popup-handle\" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[type]then[true]] ~[[false]] }}} cancelPopups=\"yes\" configTiddlerFilter=\"[[$:/core/ui/EditTemplate/type]]\" inputCancelActions=<<input-cancel-actions>>/><$button popup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown tc-small-gap\" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button><$button message=\"tm-remove-field\" param=\"type\" class=\"tc-btn-invisible tc-btn-icon\" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}>{{$:/core/images/delete-button}}<$action-deletetiddler $filter=\"[<storeTitle>] [<refreshTitle>] [<selectionStateTitle>]\"/></$button>\n</$fieldmangler></div>\n\n<div class=\"tc-block-dropdown-wrapper\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$reveal state=<<qualify \"$:/state/popup/type-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$linkcatcher to=\"!!type\">\n<$list filter='[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]each[group]sort[group-sort]]'>\n<div class=\"tc-dropdown-item\">\n<$text text={{!!group}}/>\n</div>\n<$set name=\"userInput\" value={{{ [<typeInputTiddler>get[text]] }}}>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] +[sort[description]] +[removeprefix[$:/language/Docs/Types/]] +[search<userInput>]\"><span class={{{ [<currentTiddler>addsuffix[-primaryList]] -[<typeSelectionTiddler>get[text]] +[then[]else[tc-list-item-selected]] }}}><$link to={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]get[name]] }}}><$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field=\"description\"/> (<$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field=\"name\"/>)</$link></span>\n</$list>\n</$set>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n</$set>\n</div>\n</div>\n</div>\n</$set>\n"
},
"$:/core/ui/EditTemplate": {
"title": "$:/core/ui/EditTemplate",
"text": "\\define delete-edittemplate-state-tiddlers() <$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<newFieldNameInputTiddler>] [<newFieldNameSelectionTiddler>] [<newTagNameTiddler>] [<newTagNameInputTiddler>] [<newTagNameSelectionTiddler>] [<typeInputTiddler>] [<typeSelectionTiddler>]\"/>\n\\define save-tiddler-actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{{ [<newTagNameTiddler>get[text]] }}}/>\n<$action-sendmessage $message=\"tm-add-field\" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<<delete-edittemplate-state-tiddlers>>\n<$action-sendmessage $message=\"tm-save-tiddler\"/>\n\\end\n\\define cancel-delete-tiddler-actions(message)\n<<delete-edittemplate-state-tiddlers>>\n<$action-sendmessage $message=\"tm-$message$-tiddler\"/>\n\\end\n<div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-edit-frame [<currentTiddler>is[tiddler]then[tc-tiddler-exists]] [<currentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [<currentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [<currentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [<currentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}>\n<$fieldmangler>\n<$vars storyTiddler=<<currentTiddler>> newTagNameTiddler=<<qualify \"$:/temp/NewTagName\">> newFieldNameTiddler=<<qualify \"$:/temp/NewFieldName\">> newFieldValueTiddler=<<qualify \"$:/temp/NewFieldValue\">> newFieldNameInputTiddler=<<qualify \"$:/temp/NewFieldName/input\">> newFieldNameSelectionTiddler=<<qualify \"$:/temp/NewFieldName/selected-item\">> newTagNameInputTiddler=<<qualify \"$:/temp/NewTagName/input\">> newTagNameSelectionTiddler=<<qualify \"$:/temp/NewTagName/selected-item\">> typeInputTiddler=<<qualify \"$:/temp/Type/input\">> typeSelectionTiddler=<<qualify \"$:/temp/Type/selected-item\">>>\n<$keyboard key=\"((cancel-edit-tiddler))\" actions=<<cancel-delete-tiddler-actions \"cancel\">>>\n<$keyboard key=\"((save-tiddler))\" actions=<<save-tiddler-actions>>>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditTemplate]!has[draft.of]]\" variable=\"listItem\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>>/>\n</$set>\n</$list>\n</$keyboard>\n</$keyboard>\n</$vars>\n</$fieldmangler>\n</div>\n"
},
"$:/core/ui/Buttons/cancel": {
"title": "$:/core/ui/Buttons/cancel",
"tags": "$:/tags/EditToolbar",
"caption": "{{$:/core/images/cancel-button}} {{$:/language/Buttons/Cancel/Caption}}",
"description": "{{$:/language/Buttons/Cancel/Hint}}",
"text": "\\whitespace trim\n<$button actions=<<cancel-delete-tiddler-actions \"cancel\">> tooltip={{$:/language/Buttons/Cancel/Hint}} aria-label={{$:/language/Buttons/Cancel/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/cancel-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Cancel/Caption}}/></span>\n</$list>\n</$button>\n"
},
"$:/core/ui/Buttons/delete": {
"title": "$:/core/ui/Buttons/delete",
"tags": "$:/tags/EditToolbar $:/tags/ViewToolbar",
"caption": "{{$:/core/images/delete-button}} {{$:/language/Buttons/Delete/Caption}}",
"description": "{{$:/language/Buttons/Delete/Hint}}",
"text": "\\whitespace trim\n<$button actions=<<cancel-delete-tiddler-actions \"delete\">> tooltip={{$:/language/Buttons/Delete/Hint}} aria-label={{$:/language/Buttons/Delete/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/delete-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Delete/Caption}}/></span>\n</$list>\n</$button>\n"
},
"$:/core/ui/Buttons/save": {
"title": "$:/core/ui/Buttons/save",
"tags": "$:/tags/EditToolbar",
"caption": "{{$:/core/images/done-button}} {{$:/language/Buttons/Save/Caption}}",
"description": "{{$:/language/Buttons/Save/Hint}}",
"text": "\\define save-tiddler-button()\n\\whitespace trim\n<$fieldmangler><$button tooltip={{$:/language/Buttons/Save/Hint}} aria-label={{$:/language/Buttons/Save/Caption}} class=<<tv-config-toolbar-class>>>\n<<save-tiddler-actions>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/done-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Save/Caption}}/></span>\n</$list>\n</$button></$fieldmangler>\n\\end\n<<save-tiddler-button>>\n"
},
"$:/core/ui/EditorToolbar/bold": {
"title": "$:/core/ui/EditorToolbar/bold",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/bold",
"caption": "{{$:/language/Buttons/Bold/Caption}}",
"description": "{{$:/language/Buttons/Bold/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((bold))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"''\"\n\tsuffix=\"''\"\n/>\n"
},
"$:/core/ui/EditorToolbar/clear-dropdown": {
"title": "$:/core/ui/EditorToolbar/clear-dropdown",
"text": "''{{$:/language/Buttons/Clear/Hint}}''\n\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"clear\"\n\tcolour=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n\n</div>\n"
},
"$:/core/ui/EditorToolbar/clear": {
"title": "$:/core/ui/EditorToolbar/clear",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/erase",
"caption": "{{$:/language/Buttons/Clear/Caption}}",
"description": "{{$:/language/Buttons/Clear/Hint}}",
"condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
"dropdown": "$:/core/ui/EditorToolbar/clear-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/editor-height-dropdown": {
"title": "$:/core/ui/EditorToolbar/editor-height-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/EditorHeight/\n''<<lingo Hint>>''\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"auto\"> {{$:/core/images/auto-height}} <<lingo Caption/Auto>></$radio>\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"fixed\"> {{$:/core/images/fixed-height}} <<lingo Caption/Fixed>> <$edit-text tag=\"input\" tiddler=\"$:/config/TextEditor/EditorHeight/Height\" default=\"100px\"/></$radio>\n"
},
"$:/core/ui/EditorToolbar/editor-height": {
"title": "$:/core/ui/EditorToolbar/editor-height",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/fixed-height",
"custom-icon": "yes",
"caption": "{{$:/language/Buttons/EditorHeight/Caption}}",
"description": "{{$:/language/Buttons/EditorHeight/Hint}}",
"condition": "[<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] [<targetTiddler>get[type]match[application/javascript]] [<targetTiddler>get[type]match[application/json]] [<targetTiddler>get[type]match[application/x-tiddler-dictionary]] [<targetTiddler>get[type]match[image/svg+xml]] +[first[]]",
"dropdown": "$:/core/ui/EditorToolbar/editor-height-dropdown",
"text": "<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n{{$:/core/images/fixed-height}}\n</$reveal>\n<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n{{$:/core/images/auto-height}}\n</$reveal>\n"
},
"$:/core/ui/EditorToolbar/excise-dropdown": {
"title": "$:/core/ui/EditorToolbar/excise-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Excise/\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<<lingo Caption/NewTitle>> <$edit-text tag=\"input\" tiddler=\"$config-title$/new-title\" default=\"\" focus=\"true\"/>\n\n<$set name=\"new-title\" value={{$config-title$/new-title}}>\n<$list filter=\"\"\"[<new-title>is[tiddler]]\"\"\">\n<div class=\"tc-error\">\n<<lingo Caption/TiddlerExists>>\n</div>\n</$list>\n</$set>\n\n<$checkbox tiddler=\"\"\"$config-title$/tagnew\"\"\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"false\"> <<lingo Caption/Tag>></$checkbox>\n\n<<lingo Caption/Replace>> <$select tiddler=\"\"\"$config-title$/type\"\"\" default=\"transclude\">\n<option value=\"link\"><<lingo Caption/Replace/Link>></option>\n<option value=\"transclude\"><<lingo Caption/Replace/Transclusion>></option>\n<option value=\"macro\"><<lingo Caption/Replace/Macro>></option>\n</$select>\n\n<$reveal state=\"\"\"$config-title$/type\"\"\" type=\"match\" text=\"macro\">\n<<lingo Caption/MacroName>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/macro-title\"\"\" default=\"translink\"/>\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"excise\"\n\ttitle={{$config-title$/new-title}}\n\ttype={{$config-title$/type}}\n\tmacro={{$config-title$/macro-title}}\n\ttagnew={{$config-title$/tagnew}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"$config-title$/new-title\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Excise>>\n</$button>\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Excise/\">>/>\n"
},
"$:/core/ui/EditorToolbar/excise": {
"title": "$:/core/ui/EditorToolbar/excise",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/excise",
"caption": "{{$:/language/Buttons/Excise/Caption}}",
"description": "{{$:/language/Buttons/Excise/Hint}}",
"condition": "[<targetTiddler>type[]] [<targetTiddler>type[text/vnd.tiddlywiki]] +[first[]]",
"shortcuts": "((excise))",
"dropdown": "$:/core/ui/EditorToolbar/excise-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/heading-1": {
"title": "$:/core/ui/EditorToolbar/heading-1",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-1",
"caption": "{{$:/language/Buttons/Heading1/Caption}}",
"description": "{{$:/language/Buttons/Heading1/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((heading-1))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"1\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-2": {
"title": "$:/core/ui/EditorToolbar/heading-2",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-2",
"caption": "{{$:/language/Buttons/Heading2/Caption}}",
"description": "{{$:/language/Buttons/Heading2/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-2))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"2\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-3": {
"title": "$:/core/ui/EditorToolbar/heading-3",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-3",
"caption": "{{$:/language/Buttons/Heading3/Caption}}",
"description": "{{$:/language/Buttons/Heading3/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-3))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"3\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-4": {
"title": "$:/core/ui/EditorToolbar/heading-4",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-4",
"caption": "{{$:/language/Buttons/Heading4/Caption}}",
"description": "{{$:/language/Buttons/Heading4/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-4))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"4\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-5": {
"title": "$:/core/ui/EditorToolbar/heading-5",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-5",
"caption": "{{$:/language/Buttons/Heading5/Caption}}",
"description": "{{$:/language/Buttons/Heading5/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-5))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"5\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-6": {
"title": "$:/core/ui/EditorToolbar/heading-6",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-6",
"caption": "{{$:/language/Buttons/Heading6/Caption}}",
"description": "{{$:/language/Buttons/Heading6/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-6))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"6\"\n/>\n"
},
"$:/core/ui/EditorToolbar/italic": {
"title": "$:/core/ui/EditorToolbar/italic",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/italic",
"caption": "{{$:/language/Buttons/Italic/Caption}}",
"description": "{{$:/language/Buttons/Italic/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((italic))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"//\"\n\tsuffix=\"//\"\n/>\n"
},
"$:/core/ui/EditorToolbar/line-width-dropdown": {
"title": "$:/core/ui/EditorToolbar/line-width-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/LineWidth/\n\n\\define toolbar-line-width-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(line-width)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/LineWidth\"\n\t$value=\"$(line-width)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; margin: 4px calc(80px - $(line-width)$); background-color: #000; width: calc(100px + $(line-width)$ * 2); height: $(line-width)$; border-radius: 120px; vertical-align: middle;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(line-width)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/LineWidth\" type=\"match\" text=\"\"\"$(line-width)$\"\"\" tag=\"span\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/LineWidths}} variable=\"line-width\">\n\n<<toolbar-line-width-inner>>\n\n</$list>\n"
},
"$:/core/ui/EditorToolbar/line-width": {
"title": "$:/core/ui/EditorToolbar/line-width",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/line-width",
"caption": "{{$:/language/Buttons/LineWidth/Caption}}",
"description": "{{$:/language/Buttons/LineWidth/Hint}}",
"condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
"dropdown": "$:/core/ui/EditorToolbar/line-width-dropdown",
"text": "<$text text={{$:/config/BitmapEditor/LineWidth}}/>\n"
},
"$:/core/ui/EditorToolbar/link-dropdown": {
"title": "$:/core/ui/EditorToolbar/link-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Link/\n\n\\define add-link-actions()\n<$action-sendmessage $message=\"tm-edit-text-operation\" $param=\"make-link\" text={{$(linkTiddler)$}} />\n<$action-deletetiddler $filter=\"[<dropdown-state>] [<searchTiddler>] [<linkTiddler>] [<storeTitle>] [<searchListState>]\"/>\n\\end\n\n\\define get-focus-selector() [data-tiddler-title=\"$(cssEscapedTitle)$\"] .tc-create-wikitext-link input\n\n\\define cancel-search-actions-inner()\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}><$list filter=\"[<searchTiddler>get[text]!match<userInput>]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[<searchTiddler>] [<linkTiddler>] [<storeTitle>] [<searchListState>]\"/>\"\"\"><$action-setfield $tiddler=<<searchTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/></$list></$set>\n\\end\n\n\\define cancel-search-actions() <$list filter=\"[<storeTitle>!has[text]] +[<searchTiddler>!has[text]]\" emptyMessage=\"\"\"<<cancel-search-actions-inner>>\"\"\"><$action-sendmessage $message=\"tm-edit-text-operation\" $param=\"wrap-selection\" prefix=\"\" suffix=\"\"/></$list>\n\n\\define external-link()\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\" actions=<<add-link-actions>>>\n{{$:/core/images/chevron-right}}\n</$button>\n\\end\n\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab/search-results/sidebar\" tag=\"$:/tags/SearchResults\" beforeafter=\"$beforeafter$\" defaultState={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/search/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<$vars searchTiddler=\"\"\"$config-title$/search\"\"\" linkTiddler=\"\"\"$config-title$/link\"\"\" linktext=\"\" searchListState=<<qualify \"$:/temp/link-search/selected-item\">> refreshTitle=<<qualify \"$:/temp/link-search/refresh\">> storeTitle=<<qualify \"$:/temp/link-search/input\">>>\n\n<$vars linkTiddler=<<searchTiddler>>>\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">> class=\"tc-create-wikitext-link\">\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<searchTiddler>> storeTitle=<<storeTitle>>\n\t\tselectionStateTitle=<<searchListState>> refreshTitle=<<refreshTitle>> type=\"search\" filterMinLength=\"1\"\n\t\ttag=\"input\" focus=\"true\" class=\"tc-popup-handle\" inputCancelActions=<<cancel-search-actions>> \n\t\tinputAcceptActions=<<add-link-actions>> placeholder={{$:/language/Search/Search}} default=\"\" \n\t\tconfigTiddlerFilter=\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\" />\n</$keyboard>\n</$keyboard>\n<$reveal tag=\"span\" state=<<storeTitle>> type=\"nomatch\" text=\"\">\n<<external-link>>\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\">\n<<cancel-search-actions>><$set name=\"cssEscapedTitle\" value={{{ [<storyTiddler>escapecss[]] }}}><$action-sendmessage $message=\"tm-focus-selector\" $param=<<get-focus-selector>>/></$set>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</$vars>\n\n<$reveal tag=\"div\" state=<<storeTitle>> type=\"nomatch\" text=\"\">\n\n<$linkcatcher actions=<<add-link-actions>> to=<<linkTiddler>>>\n\n<$vars userInput={{{ [<storeTitle>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}}>\n\n{{$:/core/ui/SearchResults}}\n\n</$vars>\n\n</$linkcatcher>\n\n</$reveal>\n\n</$vars>\n\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Link/\">>/>\n"
},
"$:/core/ui/EditorToolbar/link": {
"title": "$:/core/ui/EditorToolbar/link",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/link",
"caption": "{{$:/language/Buttons/Link/Caption}}",
"description": "{{$:/language/Buttons/Link/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((link))",
"dropdown": "$:/core/ui/EditorToolbar/link-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/linkify": {
"title": "$:/core/ui/EditorToolbar/linkify",
"caption": "{{$:/language/Buttons/Linkify/Caption}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"description": "{{$:/language/Buttons/Linkify/Hint}}",
"icon": "$:/core/images/linkify",
"list-before": "$:/core/ui/EditorToolbar/mono-block",
"shortcuts": "((linkify))",
"tags": "$:/tags/EditorToolbar",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"[[\"\n\tsuffix=\"]]\"\n/>\n"
},
"$:/core/ui/EditorToolbar/list-bullet": {
"title": "$:/core/ui/EditorToolbar/list-bullet",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/list-bullet",
"caption": "{{$:/language/Buttons/ListBullet/Caption}}",
"description": "{{$:/language/Buttons/ListBullet/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((list-bullet))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"*\"\n\tcount=\"1\"\n/>\n"
},
"$:/core/ui/EditorToolbar/list-number": {
"title": "$:/core/ui/EditorToolbar/list-number",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/list-number",
"caption": "{{$:/language/Buttons/ListNumber/Caption}}",
"description": "{{$:/language/Buttons/ListNumber/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((list-number))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"1\"\n/>\n"
},
"$:/core/ui/EditorToolbar/mono-block": {
"title": "$:/core/ui/EditorToolbar/mono-block",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/mono-block",
"caption": "{{$:/language/Buttons/MonoBlock/Caption}}",
"description": "{{$:/language/Buttons/MonoBlock/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((mono-block))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n```\"\n\tsuffix=\"```\"\n/>\n"
},
"$:/core/ui/EditorToolbar/mono-line": {
"title": "$:/core/ui/EditorToolbar/mono-line",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/mono-line",
"caption": "{{$:/language/Buttons/MonoLine/Caption}}",
"description": "{{$:/language/Buttons/MonoLine/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((mono-line))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"`\"\n\tsuffix=\"`\"\n/>\n"
},
"$:/core/ui/EditorToolbar/more-dropdown": {
"title": "$:/core/ui/EditorToolbar/more-dropdown",
"text": "\\define config-title()\n$:/config/EditorToolbarButtons/Visibility/$(toolbarItem)$\n\\end\n\n\\define conditional-button()\n<$list filter={{$(toolbarItem)$!!condition}} variable=\"condition\">\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\" mode=\"inline\"/> <$transclude tiddler=<<toolbarItem>> field=\"description\"/>\n</$list>\n\\end\n\n<div class=\"tc-text-editor-toolbar-more\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]] -[[$:/core/ui/EditorToolbar/more]]\">\n<$reveal type=\"match\" state=<<config-visibility-title>> text=\"hide\" tag=\"div\">\n<<conditional-button>>\n</$reveal>\n</$list>\n</div>\n"
},
"$:/core/ui/EditorToolbar/more": {
"title": "$:/core/ui/EditorToolbar/more",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/down-arrow",
"caption": "{{$:/language/Buttons/More/Caption}}",
"description": "{{$:/language/Buttons/More/Hint}}",
"condition": "[<targetTiddler>]",
"dropdown": "$:/core/ui/EditorToolbar/more-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/opacity-dropdown": {
"title": "$:/core/ui/EditorToolbar/opacity-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Opacity/\n\n\\define toolbar-opacity-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(opacity)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Opacity\"\n\t$value=\"$(opacity)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(current-paint-colour)$; opacity: $(opacity)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(opacity)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/Opacity\" type=\"match\" text=\"\"\"$(opacity)$\"\"\" tag=\"span\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n\\define toolbar-opacity()\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/Opacities}} variable=\"opacity\">\n\n<<toolbar-opacity-inner>>\n\n</$list>\n\\end\n\n<$set name=\"current-paint-colour\" value={{$:/config/BitmapEditor/Colour}}>\n\n<$set name=\"current-opacity\" value={{$:/config/BitmapEditor/Opacity}}>\n\n<<toolbar-opacity>>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/EditorToolbar/opacity": {
"title": "$:/core/ui/EditorToolbar/opacity",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/opacity",
"caption": "{{$:/language/Buttons/Opacity/Caption}}",
"description": "{{$:/language/Buttons/Opacity/Hint}}",
"condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
"dropdown": "$:/core/ui/EditorToolbar/opacity-dropdown",
"text": "<$text text={{$:/config/BitmapEditor/Opacity}}/>\n"
},
"$:/core/ui/EditorToolbar/paint-dropdown": {
"title": "$:/core/ui/EditorToolbar/paint-dropdown",
"text": "''{{$:/language/Buttons/Paint/Hint}}''\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Colour\"\n\t$value=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
},
"$:/core/ui/EditorToolbar/paint": {
"title": "$:/core/ui/EditorToolbar/paint",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/paint",
"caption": "{{$:/language/Buttons/Paint/Caption}}",
"description": "{{$:/language/Buttons/Paint/Hint}}",
"condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
"dropdown": "$:/core/ui/EditorToolbar/paint-dropdown",
"text": "\\define toolbar-paint()\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(colour-picker-value)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\\end\n<$set name=\"colour-picker-value\" value={{$:/config/BitmapEditor/Colour}}>\n<<toolbar-paint>>\n</$set>\n"
},
"$:/core/ui/EditorToolbar/picture-dropdown": {
"title": "$:/core/ui/EditorToolbar/picture-dropdown",
"text": "\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n''{{$:/language/Buttons/Picture/Hint}}''\n\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext=<<replacement-text>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
},
"$:/core/ui/EditorToolbar/picture": {
"title": "$:/core/ui/EditorToolbar/picture",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/picture",
"caption": "{{$:/language/Buttons/Picture/Caption}}",
"description": "{{$:/language/Buttons/Picture/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((picture))",
"dropdown": "$:/core/ui/EditorToolbar/picture-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/preview-type-dropdown": {
"title": "$:/core/ui/EditorToolbar/preview-type-dropdown",
"text": "\\define preview-type-button()\n<$button tag=\"a\">\n\n<$action-setfield $tiddler=\"$:/state/editpreviewtype\" $value=\"$(previewType)$\"/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<previewType>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<previewType>> field=\"title\" mode=\"inline\"/>\n\n</$transclude> \n\n<$reveal tag=\"span\" state=\"$:/state/editpreviewtype\" type=\"match\" text=<<previewType>> default=\"$:/core/ui/EditTemplate/body/preview/output\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]]\" variable=\"previewType\">\n\n<<preview-type-button>>\n\n</$list>\n"
},
"$:/core/ui/EditorToolbar/preview-type": {
"title": "$:/core/ui/EditorToolbar/preview-type",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/chevron-down",
"caption": "{{$:/language/Buttons/PreviewType/Caption}}",
"description": "{{$:/language/Buttons/PreviewType/Hint}}",
"condition": "[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]butfirst[]limit[1]]",
"button-classes": "tc-text-editor-toolbar-item-adjunct",
"dropdown": "$:/core/ui/EditorToolbar/preview-type-dropdown"
},
"$:/core/ui/EditorToolbar/preview": {
"title": "$:/core/ui/EditorToolbar/preview",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/preview-open",
"custom-icon": "yes",
"caption": "{{$:/language/Buttons/Preview/Caption}}",
"description": "{{$:/language/Buttons/Preview/Hint}}",
"condition": "[<targetTiddler>]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((preview))",
"text": "<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-open}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"no\"/>\n</$reveal>\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-closed}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"yes\"/>\n</$reveal>\n"
},
"$:/core/ui/EditorToolbar/quote": {
"title": "$:/core/ui/EditorToolbar/quote",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/quote",
"caption": "{{$:/language/Buttons/Quote/Caption}}",
"description": "{{$:/language/Buttons/Quote/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((quote))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n<<<\"\n\tsuffix=\"<<<\"\n/>\n"
},
"$:/core/ui/EditorToolbar/rotate-left": {
"title": "$:/core/ui/EditorToolbar/rotate-left",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/rotate-left",
"caption": "{{$:/language/Buttons/RotateLeft/Caption}}",
"description": "{{$:/language/Buttons/RotateLeft/Hint}}",
"condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"rotate-left\"\n/>\n"
},
"$:/core/ui/EditorToolbar/size-dropdown": {
"title": "$:/core/ui/EditorToolbar/size-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Size/\n\n\\define toolbar-button-size-preset(config-title)\n<$set name=\"width\" filter=\"$(sizePair)$ +[first[]]\">\n\n<$set name=\"height\" filter=\"$(sizePair)$ +[last[]]\">\n\n<$button tag=\"a\">\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n\t$value=<<width>>\n/>\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n\t$value=<<height>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/presets-popup\"\"\"\n/>\n\n<$text text=<<width>>/> × <$text text=<<height>>/>\n\n</$button>\n\n</$set>\n\n</$set>\n\\end\n\n\\define toolbar-button-size(config-title)\n''{{$:/language/Buttons/Size/Hint}}''\n\n<<lingo Caption/Width>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-width\"\"\" default=<<tv-bitmap-editor-width>> focus=\"true\" size=\"8\"/> <<lingo Caption/Height>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-height\"\"\" default=<<tv-bitmap-editor-height>> size=\"8\"/> <$button popup=\"\"\"$config-title$/presets-popup\"\"\" class=\"tc-btn-invisible tc-popup-keep\" style=\"width: auto; display: inline-block; background-colour: inherit;\" selectedClass=\"tc-selected\">\n{{$:/core/images/down-arrow}}\n</$button>\n\n<$reveal tag=\"span\" state=\"\"\"$config-title$/presets-popup\"\"\" type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down tc-popup-keep\">\n\n<$list filter={{$:/config/BitmapEditor/ImageSizes}} variable=\"sizePair\">\n\n<$macrocall $name=\"toolbar-button-size-preset\" config-title=\"$config-title$\"/>\n\n</$list>\n\n</div>\n\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"resize\"\n\twidth={{$config-title$/new-width}}\n\theight={{$config-title$/new-height}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Resize>>\n</$button>\n\\end\n\n<$macrocall $name=\"toolbar-button-size\" config-title=<<qualify \"$:/state/Size/\">>/>\n"
},
"$:/core/ui/EditorToolbar/size": {
"title": "$:/core/ui/EditorToolbar/size",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/size",
"caption": "{{$:/language/Buttons/Size/Caption}}",
"description": "{{$:/language/Buttons/Size/Hint}}",
"condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
"dropdown": "$:/core/ui/EditorToolbar/size-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/stamp-dropdown": {
"title": "$:/core/ui/EditorToolbar/stamp-dropdown",
"text": "\\define toolbar-button-stamp-inner()\n<$button tag=\"a\">\n\n<$list filter=\"[[$(snippetTitle)$]addsuffix[/prefix]is[missing]removesuffix[/prefix]addsuffix[/suffix]is[missing]]\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext={{$(snippetTitle)$}}\n/>\n\n</$list>\n\n\n<$list filter=\"[[$(snippetTitle)$]addsuffix[/prefix]is[missing]removesuffix[/prefix]addsuffix[/suffix]!is[missing]] [[$(snippetTitle)$]addsuffix[/prefix]!is[missing]removesuffix[/prefix]addsuffix[/suffix]is[missing]] [[$(snippetTitle)$]addsuffix[/prefix]!is[missing]removesuffix[/prefix]addsuffix[/suffix]!is[missing]]\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix={{{ [[$(snippetTitle)$]addsuffix[/prefix]get[text]] }}}\nsuffix={{{ [[$(snippetTitle)$]addsuffix[/suffix]get[text]] }}}\n/>\n\n</$list>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<snippetTitle>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<snippetTitle>> field=\"title\" />\n\n</$transclude>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TextEditor/Snippet]!has[draft.of]sort[caption]]\" variable=\"snippetTitle\">\n\n<<toolbar-button-stamp-inner>>\n\n</$list>\n\n----\n\n<$button tag=\"a\">\n\n<$action-sendmessage\n\t$message=\"tm-new-tiddler\"\n\ttags=\"$:/tags/TextEditor/Snippet\"\n\tcaption={{$:/language/Buttons/Stamp/New/Title}}\n\ttext={{$:/language/Buttons/Stamp/New/Text}}\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<em>\n\n<$text text={{$:/language/Buttons/Stamp/Caption/New}}/>\n\n</em>\n\n</$button>\n"
},
"$:/core/ui/EditorToolbar/stamp": {
"title": "$:/core/ui/EditorToolbar/stamp",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/stamp",
"caption": "{{$:/language/Buttons/Stamp/Caption}}",
"description": "{{$:/language/Buttons/Stamp/Hint}}",
"condition": "[<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] [<targetTiddler>get[type]match[application/javascript]] [<targetTiddler>get[type]match[application/json]] [<targetTiddler>get[type]match[application/x-tiddler-dictionary]] [<targetTiddler>get[type]match[image/svg+xml]] +[first[]]",
"shortcuts": "((stamp))",
"dropdown": "$:/core/ui/EditorToolbar/stamp-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/strikethrough": {
"title": "$:/core/ui/EditorToolbar/strikethrough",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/strikethrough",
"caption": "{{$:/language/Buttons/Strikethrough/Caption}}",
"description": "{{$:/language/Buttons/Strikethrough/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((strikethrough))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"~~\"\n\tsuffix=\"~~\"\n/>\n"
},
"$:/core/ui/EditorToolbar/subscript": {
"title": "$:/core/ui/EditorToolbar/subscript",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/subscript",
"caption": "{{$:/language/Buttons/Subscript/Caption}}",
"description": "{{$:/language/Buttons/Subscript/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((subscript))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\",,\"\n\tsuffix=\",,\"\n/>\n"
},
"$:/core/ui/EditorToolbar/superscript": {
"title": "$:/core/ui/EditorToolbar/superscript",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/superscript",
"caption": "{{$:/language/Buttons/Superscript/Caption}}",
"description": "{{$:/language/Buttons/Superscript/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((superscript))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"^^\"\n\tsuffix=\"^^\"\n/>\n"
},
"$:/core/ui/EditorToolbar/transcludify": {
"title": "$:/core/ui/EditorToolbar/transcludify",
"caption": "{{$:/language/Buttons/Transcludify/Caption}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"description": "{{$:/language/Buttons/Transcludify/Hint}}",
"icon": "$:/core/images/transcludify",
"list-before": "$:/core/ui/EditorToolbar/mono-block",
"shortcuts": "((transcludify))",
"tags": "$:/tags/EditorToolbar",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"{{\"\n\tsuffix=\"}}\"\n/>\n"
},
"$:/core/ui/EditorToolbar/underline": {
"title": "$:/core/ui/EditorToolbar/underline",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/underline",
"caption": "{{$:/language/Buttons/Underline/Caption}}",
"description": "{{$:/language/Buttons/Underline/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((underline))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"__\"\n\tsuffix=\"__\"\n/>\n"
},
"$:/core/Filters/AllTags": {
"title": "$:/core/Filters/AllTags",
"tags": "$:/tags/Filter",
"filter": "[tags[]!is[system]sort[title]]",
"description": "{{$:/language/Filters/AllTags}}",
"text": ""
},
"$:/core/Filters/AllTiddlers": {
"title": "$:/core/Filters/AllTiddlers",
"tags": "$:/tags/Filter",
"filter": "[!is[system]sort[title]]",
"description": "{{$:/language/Filters/AllTiddlers}}",
"text": ""
},
"$:/core/Filters/Drafts": {
"title": "$:/core/Filters/Drafts",
"tags": "$:/tags/Filter",
"filter": "[has[draft.of]sort[title]]",
"description": "{{$:/language/Filters/Drafts}}",
"text": ""
},
"$:/core/Filters/Missing": {
"title": "$:/core/Filters/Missing",
"tags": "$:/tags/Filter",
"filter": "[all[missing]sort[title]]",
"description": "{{$:/language/Filters/Missing}}",
"text": ""
},
"$:/core/Filters/Orphans": {
"title": "$:/core/Filters/Orphans",
"tags": "$:/tags/Filter",
"filter": "[all[orphans]sort[title]]",
"description": "{{$:/language/Filters/Orphans}}",
"text": ""
},
"$:/core/Filters/OverriddenShadowTiddlers": {
"title": "$:/core/Filters/OverriddenShadowTiddlers",
"tags": "$:/tags/Filter",
"filter": "[is[shadow]]",
"description": "{{$:/language/Filters/OverriddenShadowTiddlers}}",
"text": ""
},
"$:/core/Filters/RecentSystemTiddlers": {
"title": "$:/core/Filters/RecentSystemTiddlers",
"tags": "$:/tags/Filter",
"filter": "[has[modified]!sort[modified]limit[50]]",
"description": "{{$:/language/Filters/RecentSystemTiddlers}}",
"text": ""
},
"$:/core/Filters/RecentTiddlers": {
"title": "$:/core/Filters/RecentTiddlers",
"tags": "$:/tags/Filter",
"filter": "[!is[system]has[modified]!sort[modified]limit[50]]",
"description": "{{$:/language/Filters/RecentTiddlers}}",
"text": ""
},
"$:/core/Filters/SessionTiddlers": {
"title": "$:/core/Filters/SessionTiddlers",
"tags": "$:/tags/Filter",
"filter": "[haschanged[]]",
"description": "{{$:/language/Filters/SessionTiddlers}}",
"text": ""
},
"$:/core/Filters/ShadowTiddlers": {
"title": "$:/core/Filters/ShadowTiddlers",
"tags": "$:/tags/Filter",
"filter": "[all[shadows]sort[title]]",
"description": "{{$:/language/Filters/ShadowTiddlers}}",
"text": ""
},
"$:/core/Filters/StoryList": {
"title": "$:/core/Filters/StoryList",
"tags": "$:/tags/Filter",
"filter": "[list[$:/StoryList]] -$:/AdvancedSearch",
"description": "{{$:/language/Filters/StoryList}}",
"text": ""
},
"$:/core/Filters/SystemTags": {
"title": "$:/core/Filters/SystemTags",
"tags": "$:/tags/Filter",
"filter": "[all[shadows+tiddlers]tags[]is[system]sort[title]]",
"description": "{{$:/language/Filters/SystemTags}}",
"text": ""
},
"$:/core/Filters/SystemTiddlers": {
"title": "$:/core/Filters/SystemTiddlers",
"tags": "$:/tags/Filter",
"filter": "[is[system]sort[title]]",
"description": "{{$:/language/Filters/SystemTiddlers}}",
"text": ""
},
"$:/core/Filters/TypedTiddlers": {
"title": "$:/core/Filters/TypedTiddlers",
"tags": "$:/tags/Filter",
"filter": "[!is[system]has[type]each[type]sort[type]] -[type[text/vnd.tiddlywiki]]",
"description": "{{$:/language/Filters/TypedTiddlers}}",
"text": ""
},
"$:/core/ui/ImportListing": {
"title": "$:/core/ui/ImportListing",
"text": "\\define lingo-base() $:/language/Import/\n\n\\define messageField() message-$(payloadTiddler)$\n\n\\define payloadTitleFilter() [<currentTiddler>get<renameField>minlength[1]else<payloadTiddler>]\n\n\\define overWriteWarning()\n<$list filter=\"[<currentTiddler>!has<suppressedField>]\">\n<$text text={{{[subfilter<payloadTitleFilter>!is[tiddler]then[]] ~[<lingo-base>addsuffix[Listing/Rename/OverwriteWarning]get[text]]}}}/>\n</$list>\n\\end\n\n\\define selectionField() selection-$(payloadTiddler)$\n\n\\define renameField() rename-$(payloadTiddler)$\n\n\\define suppressedField() suppressed-$(payloadTiddler)$\n\n\\define newImportTitleTiddler() $:/temp/NewImportTitle-$(payloadTiddler)$\n\n\\define previewPopupState() $(currentTiddler)$!!popup-$(payloadTiddler)$\n\n\\define renameFieldState() $(currentTiddler)$!!state-rename-$(payloadTiddler)$\n\n\\define select-all-actions()\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<$action-setfield $field={{{ [<payloadTiddler>addprefix[selection-]] }}} $value={{$:/state/import/select-all}}/>\n</$list>\n\\end\n\n<table class=\"tc-import-table\">\n<tbody>\n<tr>\n<th align=\"left\">\n<$checkbox tiddler=\"$:/state/import/select-all\" field=\"text\" checked=\"checked\" unchecked=\"unchecked\" default=\"checked\" actions=<<select-all-actions>>>\n<<lingo Listing/Select/Caption>>\n</$checkbox>\n</th>\n<th>\n<<lingo Listing/Title/Caption>>\n</th>\n<th>\n<<lingo Listing/Status/Caption>>\n</th>\n</tr>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<tr class={{{[<currentTiddler>has<suppressedField>then[tc-row-disabled]] ~[subfilter<payloadTitleFilter>is[tiddler]then[tc-row-warning]] }}}>\n<td>\n<$checkbox field=<<selectionField>> checked=\"checked\" unchecked=\"unchecked\" default=\"checked\" disabled={{{[<currentTiddler>has<suppressedField>then[yes]else[no]]}}}/>\n</td>\n<td>\n<$reveal type=\"nomatch\" state=<<renameFieldState>> text=\"yes\" tag=\"div\">\n<$reveal type=\"nomatch\" state=<<previewPopupState>> text=\"yes\" tag=\"div\" class=\"tc-flex\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown tc-flex-grow-1 tc-word-break\" set=<<previewPopupState>> setTo=\"yes\" disabled={{{[<currentTiddler>has<suppressedField>then[yes]else[no]]}}}>\n<span class=\"tc-small-gap-right\">{{$:/core/images/right-arrow}}</span><$text text={{{[subfilter<payloadTitleFilter>]}}}/>\n</$button>\n<$list filter=\"[<currentTiddler>!has<suppressedField>]\"><$button class=\"tc-btn-invisible\" set=<<renameFieldState>> setTo=\"yes\" tooltip={{{[<lingo-base>addsuffix[Listing/Rename/Tooltip]get[text]]}}}>{{$:/core/images/edit-button}}</$button></$list>\n</$reveal>\n<$reveal type=\"match\" state=<<previewPopupState>> text=\"yes\" tag=\"div\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<previewPopupState>> setTo=\"no\">\n<span class=\"tc-small-gap-right\">{{$:/core/images/down-arrow}}</span><$text text={{{[subfilter<payloadTitleFilter>]}}}/>\n</$button>\n</$reveal>\n</$reveal>\n<$reveal type=\"match\" state=<<renameFieldState>> text=\"yes\" tag=\"div\">\n<$text text={{{[<lingo-base>addsuffix[Listing/Rename/Prompt]get[text]]}}}/>\n</$reveal>\n</td>\n<td>\n<$view field=<<messageField>>/>\n<<overWriteWarning>>\n</td>\n</tr>\n<$reveal type=\"match\" state=<<renameFieldState>> text=\"yes\" tag=\"tr\">\n<td colspan=\"3\">\n<div class=\"tc-flex\">\n<$edit-text tiddler=<<newImportTitleTiddler>> default={{{[subfilter<payloadTitleFilter>]}}} tag=\"input\" class=\"tc-import-rename tc-flex-grow-1\"/><span class=\"tc-small-gap-left\"><$button class=\"tc-btn-invisible\" set=<<renameFieldState>> setTo=\"no\" tooltip={{{[<lingo-base>addsuffix[Listing/Rename/CancelRename]get[text]]}}}>{{$:/core/images/close-button}}<$action-deletetiddler $tiddler=<<newImportTitleTiddler>>/></$button><span class=\"tc-small-gap-right\"/></span><$button class=\"tc-btn-invisible\" set=<<renameFieldState>> setTo=\"no\" tooltip={{{[<lingo-base>addsuffix[Listing/Rename/ConfirmRename]get[text]]}}}>{{$:/core/images/done-button}}<$action-setfield $field=<<renameField>> $value={{{[<newImportTitleTiddler>get[text]minlength[1]else<payloadTiddler>]}}} /><$action-deletetiddler $tiddler=<<newImportTitleTiddler>>/></$button>\n</div>\n</td>\n</$reveal>\n<tr>\n<td colspan=\"3\">\n<$reveal type=\"match\" text=\"yes\" state=<<previewPopupState>> tag=\"div\">\n<$list filter=\"[{$:/state/importpreviewtype}has[text]]\" variable=\"listItem\" emptyMessage={{$:/core/ui/ImportPreviews/Text}}>\n<$transclude tiddler={{$:/state/importpreviewtype}}/>\n</$list>\n</$reveal>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ImportPreviews/Diff": {
"title": "$:/core/ui/ImportPreviews/Diff",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/Diff}}",
"text": "<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>>/>\n"
},
"$:/core/ui/ImportPreviews/DiffFields": {
"title": "$:/core/ui/ImportPreviews/DiffFields",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/DiffFields}}",
"text": "<$macrocall $name=\"compareTiddlers\" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>> exclude=\"text\"/>\n"
},
"$:/core/ui/ImportPreviews/Fields": {
"title": "$:/core/ui/ImportPreviews/Fields",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/Fields}}",
"text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[<payloadTiddler>subtiddlerfields<currentTiddler>sort[]] -text\" variable=\"fieldName\">\n<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<fieldName>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<fieldName>> tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>>/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ImportPreviews/Text": {
"title": "$:/core/ui/ImportPreviews/Text",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/Text}}",
"text": "<$transclude tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> mode=\"block\"/>\n"
},
"$:/core/ui/ImportPreviews/TextRaw": {
"title": "$:/core/ui/ImportPreviews/TextRaw",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/TextRaw}}",
"text": "<pre><code><$view tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> /></code></pre>"
},
"$:/core/ui/KeyboardShortcuts/advanced-search": {
"title": "$:/core/ui/KeyboardShortcuts/advanced-search",
"tags": "$:/tags/KeyboardShortcut",
"key": "((advanced-search))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\"[data-tiddler-title=\"$:/AdvancedSearch\"] .tc-search input\"\"\" preventScroll=\"true\"/>\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/change-sidebar-layout": {
"title": "$:/core/ui/KeyboardShortcuts/change-sidebar-layout",
"tags": "$:/tags/KeyboardShortcut",
"key": "((change-sidebar-layout))",
"text": "<$list filter=\"[{$:/themes/tiddlywiki/vanilla/options/sidebarlayout}match[fixed-fluid]]\" \nemptyMessage=\"\"\"<$action-setfield $tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" text=\"fixed-fluid\"/>\"\"\">\n<$action-setfield $tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" text=\"fluid-fixed\"/>\n</$list>\n"
},
"$:/core/ui/KeyboardShortcuts/new-image": {
"title": "$:/core/ui/KeyboardShortcuts/new-image",
"tags": "$:/tags/KeyboardShortcut",
"key": "((new-image))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-image}}\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/new-journal": {
"title": "$:/core/ui/KeyboardShortcuts/new-journal",
"tags": "$:/tags/KeyboardShortcut",
"key": "((new-journal))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-journal}}\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/new-tiddler": {
"title": "$:/core/ui/KeyboardShortcuts/new-tiddler",
"tags": "$:/tags/KeyboardShortcut",
"key": "((new-tiddler))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-tiddler}}\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/save-wiki": {
"title": "$:/core/ui/KeyboardShortcuts/save-wiki",
"tags": "$:/tags/KeyboardShortcut",
"key": "((save-wiki))",
"text": "<$wikify name=\"site-title\" text={{$:/config/SaveWikiButton/Filename}}>\n<$action-sendmessage $message=\"tm-save-wiki\" $param={{$:/config/SaveWikiButton/Template}} filename=<<site-title>>/>\n</$wikify>\n"
},
"$:/core/ui/KeyboardShortcuts/sidebar-search": {
"title": "$:/core/ui/KeyboardShortcuts/sidebar-search",
"tags": "$:/tags/KeyboardShortcut",
"key": "((sidebar-search))",
"text": "<$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-search input\"/>\n"
},
"$:/core/ui/KeyboardShortcuts/switcher": {
"title": "$:/core/ui/KeyboardShortcuts/switcher",
"tags": "$:/tags/KeyboardShortcut",
"key": "((layout-switcher))",
"text": "<$action-sendmessage $message=\"tm-show-switcher\" switch=\"layout\"/>"
},
"$:/core/ui/KeyboardShortcuts/toggle-sidebar": {
"title": "$:/core/ui/KeyboardShortcuts/toggle-sidebar",
"tags": "$:/tags/KeyboardShortcut",
"key": "((toggle-sidebar))",
"text": "<$list filter=\"[[$:/state/sidebar]is[missing]] [{$:/state/sidebar}removeprefix[yes]]\" emptyMessage=\"\"\"\n<$action-setfield $tiddler=\"$:/state/sidebar\" text=\"yes\"/>\n\"\"\">\n<$action-setfield $tiddler=\"$:/state/sidebar\" text=\"no\"/>\n</$list>\n"
},
"$:/snippets/LayoutSwitcher": {
"title": "$:/snippets/LayoutSwitcher",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/LayoutSwitcher/Caption}}",
"text": "<$linkcatcher to=\"$:/layout\">\n<div class=\"tc-chooser\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/Layout]] [[$:/core/ui/PageTemplate]] +[!is[draft]sort[name]]\">\n<$list filter=\"[{$:/layout}!has[text]]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$set name=\"cls\" filter=\"[all[current]field:title{$:/layout}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$transclude field=\"name\"/>'' - <$transclude field=\"description\"/></$link></div>\n</$set>\n\"\"\">\n<$set name=\"cls\" filter=\"[all[current]field:title[$:/core/ui/PageTemplate]]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$transclude field=\"name\"/>'' - <$transclude field=\"description\"/></$link></div>\n</$set>\n</$list>\n</$list>\n</div>\n</$linkcatcher>\n"
},
"$:/core/ui/ListItemTemplate": {
"title": "$:/core/ui/ListItemTemplate",
"text": "<div class=\"tc-menu-list-item\">\n<$link />\n</div>"
},
"$:/Manager/ItemMain/Fields": {
"title": "$:/Manager/ItemMain/Fields",
"tags": "$:/tags/Manager/ItemMain",
"caption": "{{$:/language/Manager/Item/Fields}}",
"text": "<table>\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
},
"$:/Manager/ItemMain/RawText": {
"title": "$:/Manager/ItemMain/RawText",
"tags": "$:/tags/Manager/ItemMain",
"caption": "{{$:/language/Manager/Item/RawText}}",
"text": "<pre><code><$view/></code></pre>\n"
},
"$:/Manager/ItemMain/WikifiedText": {
"title": "$:/Manager/ItemMain/WikifiedText",
"tags": "$:/tags/Manager/ItemMain",
"caption": "{{$:/language/Manager/Item/WikifiedText}}",
"text": "<$transclude mode=\"block\"/>\n"
},
"$:/Manager/ItemSidebar/Colour": {
"title": "$:/Manager/ItemSidebar/Colour",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Colour}}",
"text": "\\define swatch-styles()\nheight: 1em;\nbackground-color: $(colour)$\n\\end\n\n<$vars colour={{!!color}}>\n<p style=<<swatch-styles>>/>\n</$vars>\n<p>\n<$edit-text field=\"color\" tag=\"input\" type=\"color\"/> / <$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/>\n</p>\n"
},
"$:/Manager/ItemSidebar/Icon": {
"title": "$:/Manager/ItemSidebar/Icon",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Icon}}",
"text": "<p>\n<div class=\"tc-manager-icon-editor\">\n<$button popup=<<qualify \"$:/state/popup/image-picker\">> class=\"tc-btn-invisible\">\n<$transclude tiddler={{!!icon}}>\n{{$:/language/Manager/Item/Icon/None}}\n</$transclude>\n</$button>\n<div class=\"tc-block-dropdown-wrapper\" style=\"position: static;\">\n<$reveal state=<<qualify \"$:/state/popup/image-picker\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-popup\">\n<div class=\"tc-block-dropdown tc-popup-keep\" style=\"width: 80%; left: 10%; right: 10%; padding: 0.5em;\">\n<$macrocall $name=\"image-picker-include-tagged-images\" actions=\"\"\"\n<$action-setfield $field=\"icon\" $value=<<imageTitle>>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/image-picker\">>/>\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n</div>\n</p>\n"
},
"$:/Manager/ItemSidebar/Tags": {
"title": "$:/Manager/ItemSidebar/Tags",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Tags}}",
"text": "\\whitespace trim\n\\define tag-checkbox-actions()\n<$action-listops\n\t$tiddler=\"$:/config/Manager/RecentTags\"\n\t$subfilter=\"[<tag>] [list[$:/config/Manager/RecentTags]] +[limit[12]]\"\n/>\n\\end\n\n\\define tag-picker-actions()\n<<tag-checkbox-actions>>\n\\end\n\n<p>\n<$list filter=\"[all[current]tags[]] [list[$:/config/Manager/RecentTags]] +[sort[title]] \" variable=\"tag\" storyview=\"pop\">\n<div>\n<$checkbox tiddler=<<currentTiddler>> tag=<<tag>> actions=<<tag-checkbox-actions>>>\n<$macrocall $name=\"tag-pill\" tag=<<tag>>/>\n</$checkbox>\n</div>\n</$list>\n</p>\n<p>\n<$fieldmangler>\n<$macrocall $name=\"tag-picker\" actions=<<tag-picker-actions>>/>\n</$fieldmangler>\n</p>\n"
},
"$:/Manager/ItemSidebar/Tools": {
"title": "$:/Manager/ItemSidebar/Tools",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Tools}}",
"text": "<p>\n<$button to=<<currentTiddler>>>{{$:/core/images/link}} open</$button>\n</p>\n<p>\n<$button message=\"tm-edit-tiddler\" param=<<currentTiddler>>>{{$:/core/images/edit-button}} edit</$button>\n</p>\n"
},
"$:/Manager": {
"title": "$:/Manager",
"icon": "$:/core/images/list",
"color": "#bbb",
"text": "\\define lingo-base() $:/language/Manager/\n\n\\define list-item-content-item()\n<div class=\"tc-manager-list-item-content-item\">\n\t<$vars state-title=\"\"\"$:/state/popup/manager/item/$(listItem)$\"\"\">\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"hide\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/down-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"nomatch\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"show\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/right-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\" class=\"tc-manager-list-item-content-item-body\">\n\t\t\t<$transclude tiddler=<<listItem>>/>\n\t\t</$reveal>\n\t</$vars>\n</div>\n\\end\n\n<div class=\"tc-manager-wrapper\">\n\t<div class=\"tc-manager-controls\">\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Show/Prompt>> <$select tiddler=\"$:/config/Manager/Show\" default=\"tiddlers\">\n\t\t\t\t<option value=\"tiddlers\"><<lingo Controls/Show/Option/Tiddlers>></option>\n\t\t\t\t<option value=\"tags\"><<lingo Controls/Show/Option/Tags>></option>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Search/Prompt>> <$edit-text tiddler=\"$:/config/Manager/Filter\" tag=\"input\" default=\"\" placeholder={{$:/language/Manager/Controls/Search/Placeholder}}/>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/FilterByTag/Prompt>> <$select tiddler=\"$:/config/Manager/Tag\" default=\"\">\n\t\t\t\t<option value=\"\"><<lingo Controls/FilterByTag/None>></option>\n\t\t\t\t<$list filter=\"[!is{$:/config/Manager/System}tags[]!is[system]sort[title]]\" variable=\"tag\">\n\t\t\t\t\t<option value=<<tag>>><$text text=<<tag>>/></option>\n\t\t\t\t</$list>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Sort/Prompt>> <$select tiddler=\"$:/config/Manager/Sort\" default=\"title\">\n\t\t\t\t<optgroup label=\"Common\">\n\t\t\t\t\t<$list filter=\"title modified modifier created creator created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t\t<optgroup label=\"All\">\n\t\t\t\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}fields[]sort[title]] -title -modified -modifier -created -creator -created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t</$select>\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/Order\" field=\"text\" checked=\"reverse\" unchecked=\"forward\" default=\"forward\">\n\t\t\t\t<<lingo Controls/Order/Prompt>>\n\t\t\t</$checkbox>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/System\" field=\"text\" checked=\"\" unchecked=\"system\" default=\"system\">\n\t\t\t\t{{$:/language/SystemTiddlers/Include/Prompt}}\n\t\t\t</$checkbox>\n\t\t</div>\n\t</div>\n\t<div class=\"tc-manager-list\">\n\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/Tag}sort{$:/config/Manager/Sort}order{$:/config/Manager/Order}]\">\n\t\t\t<$vars transclusion=<<currentTiddler>>>\n\t\t\t\t<div style=\"tc-manager-list-item\">\n\t\t\t\t\t<$button popup=<<qualify \"$:/state/manager/popup\">> class=\"tc-btn-invisible tc-manager-list-item-heading\" selectedClass=\"tc-manager-list-item-heading-selected\">\n\t\t\t\t\t\t<$text text=<<currentTiddler>>/>\n\t\t\t\t\t</$button>\n\t\t\t\t\t<$reveal state=<<qualify \"$:/state/manager/popup\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-manager-list-item-content tc-popup-handle\">\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-tiddler\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemMain]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-sidebar\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemSidebar]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</$reveal>\n\t\t\t\t</div>\n\t\t\t</$vars>\n\t\t</$list>\n\t</div>\n</div>\n"
},
"$:/core/ui/MissingTemplate": {
"title": "$:/core/ui/MissingTemplate",
"text": "<div class=\"tc-tiddler-missing\">\n<$button popup=<<qualify \"$:/state/popup/missing\">> class=\"tc-btn-invisible tc-missing-tiddler-label\">\n<$view field=\"title\" format=\"text\" />\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/missing\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n<hr>\n<$list filter=\"[all[current]backlinks[]sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n</div>\n"
},
"$:/core/ui/MoreSideBar/All": {
"title": "$:/core/ui/MoreSideBar/All",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/All/Caption}}",
"text": "<$list filter={{$:/core/Filters/AllTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Drafts": {
"title": "$:/core/ui/MoreSideBar/Drafts",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Drafts/Caption}}",
"text": "<$list filter={{$:/core/Filters/Drafts!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Explorer": {
"title": "$:/core/ui/MoreSideBar/Explorer",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Explorer/Caption}}",
"text": "<<tree \"$:/\">>\n"
},
"$:/core/ui/MoreSideBar/Missing": {
"title": "$:/core/ui/MoreSideBar/Missing",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Missing/Caption}}",
"text": "<$list filter={{$:/core/Filters/Missing!!filter}} template=\"$:/core/ui/MissingTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Orphans": {
"title": "$:/core/ui/MoreSideBar/Orphans",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Orphans/Caption}}",
"text": "<$list filter={{$:/core/Filters/Orphans!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Plugins": {
"title": "$:/core/ui/MoreSideBar/Plugins",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
"text": "\n{{$:/language/ControlPanel/Plugins/Installed/Hint}}\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar/Plugins]!has[draft.of]]\" default=\"$:/core/ui/MoreSideBar/Plugins/Plugins\" explicitState=\"$:/state/tab-1163638994\"/>\n"
},
"$:/core/ui/MoreSideBar/Recent": {
"title": "$:/core/ui/MoreSideBar/Recent",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Recent/Caption}}",
"text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
},
"$:/core/ui/MoreSideBar/Shadows": {
"title": "$:/core/ui/MoreSideBar/Shadows",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Shadows/Caption}}",
"text": "<$list filter={{$:/core/Filters/ShadowTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/System": {
"title": "$:/core/ui/MoreSideBar/System",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/System/Caption}}",
"text": "<$list filter={{$:/core/Filters/SystemTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Tags": {
"title": "$:/core/ui/MoreSideBar/Tags",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Tags/Caption}}",
"text": "<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n{{$:/core/ui/Buttons/tag-manager}}\n\n</$set>\n\n</$set>\n\n</$set>\n\n<$list filter={{$:/core/Filters/AllTags!!filter}}>\n\n<$transclude tiddler=\"$:/core/ui/TagTemplate\"/>\n\n</$list>\n\n<hr class=\"tc-untagged-separator\">\n\n{{$:/core/ui/UntaggedTemplate}}\n"
},
"$:/core/ui/MoreSideBar/Types": {
"title": "$:/core/ui/MoreSideBar/Types",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Types/Caption}}",
"text": "<$list filter={{$:/core/Filters/TypedTiddlers!!filter}}>\n<div class=\"tc-menu-list-item\">\n<$view field=\"type\"/>\n<$list filter=\"[type{!!type}!is[system]sort[title]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}><$view field=\"title\"/></$link>\n</div>\n</$list>\n</div>\n</$list>\n"
},
"$:/core/ui/MoreSideBar/Plugins/Languages": {
"title": "$:/core/ui/MoreSideBar/Plugins/Languages",
"tags": "$:/tags/MoreSideBar/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}}",
"text": "<$list filter=\"[!has[draft.of]plugin-type[language]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
},
"$:/core/ui/MoreSideBar/Plugins/Plugins": {
"title": "$:/core/ui/MoreSideBar/Plugins/Plugins",
"tags": "$:/tags/MoreSideBar/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}}",
"text": "<$list filter=\"[!has[draft.of]plugin-type[plugin]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}>>/>\n"
},
"$:/core/ui/MoreSideBar/Plugins/Theme": {
"title": "$:/core/ui/MoreSideBar/Plugins/Theme",
"tags": "$:/tags/MoreSideBar/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}}",
"text": "<$list filter=\"[!has[draft.of]plugin-type[theme]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
},
"$:/core/ui/Buttons/advanced-search": {
"title": "$:/core/ui/Buttons/advanced-search",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/advanced-search-button}} {{$:/language/Buttons/AdvancedSearch/Caption}}",
"description": "{{$:/language/Buttons/AdvancedSearch/Hint}}",
"text": "\\whitespace trim\n\\define advanced-search-button(class)\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/advanced-search-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/AdvancedSearch/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/AdvancedSearch]]\" emptyMessage=<<advanced-search-button>>>\n<<advanced-search-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/close-all": {
"title": "$:/core/ui/Buttons/close-all",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/close-all-button}} {{$:/language/Buttons/CloseAll/Caption}}",
"description": "{{$:/language/Buttons/CloseAll/Hint}}",
"text": "<$button message=\"tm-close-all-tiddlers\" tooltip={{$:/language/Buttons/CloseAll/Hint}} aria-label={{$:/language/Buttons/CloseAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/CloseAll/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/control-panel": {
"title": "$:/core/ui/Buttons/control-panel",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/options-button}} {{$:/language/Buttons/ControlPanel/Caption}}",
"description": "{{$:/language/Buttons/ControlPanel/Hint}}",
"text": "\\whitespace trim\n\\define control-panel-button(class)\n<$button to=\"$:/ControlPanel\" tooltip={{$:/language/Buttons/ControlPanel/Hint}} aria-label={{$:/language/Buttons/ControlPanel/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/options-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/ControlPanel/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/ControlPanel]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/encryption": {
"title": "$:/core/ui/Buttons/encryption",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/locked-padlock}} {{$:/language/Buttons/Encryption/Caption}}",
"description": "{{$:/language/Buttons/Encryption/Hint}}",
"text": "\\whitespace trim\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-clear-password\" tooltip={{$:/language/Buttons/Encryption/ClearPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/ClearPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/locked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/ClearPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-set-password\" tooltip={{$:/language/Buttons/Encryption/SetPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/SetPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/unlocked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/SetPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n"
},
"$:/core/ui/Buttons/export-page": {
"title": "$:/core/ui/Buttons/export-page",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportPage/Caption}}",
"description": "{{$:/language/Buttons/ExportPage/Hint}}",
"text": "<$macrocall $name=\"exportButton\" exportFilter=\"[!is[system]sort[title]]\" lingoBase=\"$:/language/Buttons/ExportPage/\"/>"
},
"$:/core/ui/Buttons/fold-all": {
"title": "$:/core/ui/Buttons/fold-all",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/fold-all-button}} {{$:/language/Buttons/FoldAll/Caption}}",
"description": "{{$:/language/Buttons/FoldAll/Hint}}",
"text": "<$button tooltip={{$:/language/Buttons/FoldAll/Hint}} aria-label={{$:/language/Buttons/FoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FoldAll/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/full-screen": {
"title": "$:/core/ui/Buttons/full-screen",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/full-screen-button}} {{$:/language/Buttons/FullScreen/Caption}}",
"description": "{{$:/language/Buttons/FullScreen/Hint}}",
"text": "<$button message=\"tm-full-screen\" tooltip={{$:/language/Buttons/FullScreen/Hint}} aria-label={{$:/language/Buttons/FullScreen/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/full-screen-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FullScreen/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/home": {
"title": "$:/core/ui/Buttons/home",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/home-button}} {{$:/language/Buttons/Home/Caption}}",
"description": "{{$:/language/Buttons/Home/Hint}}",
"text": "<$button message=\"tm-home\" tooltip={{$:/language/Buttons/Home/Hint}} aria-label={{$:/language/Buttons/Home/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/home-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Home/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/import": {
"title": "$:/core/ui/Buttons/import",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/import-button}} {{$:/language/Buttons/Import/Caption}}",
"description": "{{$:/language/Buttons/Import/Hint}}",
"text": "<div class=\"tc-file-input-wrapper\">\n<$button tooltip={{$:/language/Buttons/Import/Hint}} aria-label={{$:/language/Buttons/Import/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/import-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Import/Caption}}/></span>\n</$list>\n</$button>\n<$browse tooltip={{$:/language/Buttons/Import/Hint}}/>\n</div>"
},
"$:/core/ui/Buttons/language": {
"title": "$:/core/ui/Buttons/language",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/globe}} {{$:/language/Buttons/Language/Caption}}",
"description": "{{$:/language/Buttons/Language/Hint}}",
"text": "\\whitespace trim\n\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/language\">> tooltip={{$:/language/Buttons/Language/Hint}} aria-label={{$:/language/Buttons/Language/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value={{$:/language}}>\n<$image source=<<flag-title>>/>\n</$set>\n</span>\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Language/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/language\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n{{$:/snippets/languageswitcher}}\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/manager": {
"title": "$:/core/ui/Buttons/manager",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/list}} {{$:/language/Buttons/Manager/Caption}}",
"description": "{{$:/language/Buttons/Manager/Hint}}",
"text": "\\whitespace trim\n\\define manager-button(class)\n<$button to=\"$:/Manager\" tooltip={{$:/language/Buttons/Manager/Hint}} aria-label={{$:/language/Buttons/Manager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/list}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Manager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/Manager]]\" emptyMessage=<<manager-button>>>\n<<manager-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/more-page-actions": {
"title": "$:/core/ui/Buttons/more-page-actions",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
"description": "{{$:/language/Buttons/More/Hint}}",
"text": "\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/More/Caption}}/></span>\n</$list>\n</$button><$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"below\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]] -[[$:/core/ui/Buttons/more-page-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$set>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
},
"$:/core/ui/Buttons/new-image": {
"title": "$:/core/ui/Buttons/new-image",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/new-image-button}} {{$:/language/Buttons/NewImage/Caption}}",
"description": "{{$:/language/Buttons/NewImage/Hint}}",
"text": "\\whitespace trim\n<$button tooltip={{$:/language/Buttons/NewImage/Hint}} aria-label={{$:/language/Buttons/NewImage/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-image}}>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-image-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewImage/Caption}}/></span>\n</$list>\n</$button>\n"
},
"$:/core/ui/Buttons/new-journal": {
"title": "$:/core/ui/Buttons/new-journal",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournal/Caption}}",
"description": "{{$:/language/Buttons/NewJournal/Hint}}",
"text": "\\whitespace trim\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-journal}}>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewJournal/Caption}}/></span>\n</$list>\n</$button>\n\\end\n<<journalButton>>\n"
},
"$:/core/ui/Buttons/new-tiddler": {
"title": "$:/core/ui/Buttons/new-tiddler",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/new-button}} {{$:/language/Buttons/NewTiddler/Caption}}",
"description": "{{$:/language/Buttons/NewTiddler/Hint}}",
"text": "\\whitespace trim\n<$button actions={{$:/core/ui/Actions/new-tiddler}} tooltip={{$:/language/Buttons/NewTiddler/Hint}} aria-label={{$:/language/Buttons/NewTiddler/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewTiddler/Caption}}/></span>\n</$list>\n</$button>\n"
},
"$:/core/ui/Buttons/palette": {
"title": "$:/core/ui/Buttons/palette",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/palette}} {{$:/language/Buttons/Palette/Caption}}",
"description": "{{$:/language/Buttons/Palette/Hint}}",
"text": "\\whitespace trim\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/palette\">> tooltip={{$:/language/Buttons/Palette/Hint}} aria-label={{$:/language/Buttons/Palette/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/palette}}\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Palette/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/palette\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\" style=\"font-size:0.7em;\">\n{{$:/snippets/paletteswitcher}}\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/print": {
"title": "$:/core/ui/Buttons/print",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/print-button}} {{$:/language/Buttons/Print/Caption}}",
"description": "{{$:/language/Buttons/Print/Hint}}",
"text": "<$button message=\"tm-print\" tooltip={{$:/language/Buttons/Print/Hint}} aria-label={{$:/language/Buttons/Print/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/print-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Print/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/refresh": {
"title": "$:/core/ui/Buttons/refresh",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/refresh-button}} {{$:/language/Buttons/Refresh/Caption}}",
"description": "{{$:/language/Buttons/Refresh/Hint}}",
"text": "<$button message=\"tm-browser-refresh\" tooltip={{$:/language/Buttons/Refresh/Hint}} aria-label={{$:/language/Buttons/Refresh/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/refresh-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Refresh/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/save-wiki": {
"title": "$:/core/ui/Buttons/save-wiki",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/save-button}} {{$:/language/Buttons/SaveWiki/Caption}}",
"description": "{{$:/language/Buttons/SaveWiki/Hint}}",
"text": "<$button tooltip={{$:/language/Buttons/SaveWiki/Hint}} aria-label={{$:/language/Buttons/SaveWiki/Caption}} class=<<tv-config-toolbar-class>>>\n<$wikify name=\"site-title\" text={{$:/config/SaveWikiButton/Filename}}>\n<$action-sendmessage $message=\"tm-save-wiki\" $param={{$:/config/SaveWikiButton/Template}} filename=<<site-title>>/>\n</$wikify>\n<span class=\"tc-dirty-indicator\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/save-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/SaveWiki/Caption}}/></span>\n</$list>\n</span>\n</$button>"
},
"$:/core/ui/Buttons/storyview": {
"title": "$:/core/ui/Buttons/storyview",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/storyview-classic}} {{$:/language/Buttons/StoryView/Caption}}",
"description": "{{$:/language/Buttons/StoryView/Hint}}",
"text": "\\whitespace trim\n\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/storyview\">> tooltip={{$:/language/Buttons/StoryView/Hint}} aria-label={{$:/language/Buttons/StoryView/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n<$set name=\"storyview\" value={{$:/view}}>\n<$transclude tiddler=<<icon>>/>\n</$set>\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/StoryView/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/storyview\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n{{$:/snippets/viewswitcher}}\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/tag-manager": {
"title": "$:/core/ui/Buttons/tag-manager",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/tag-button}} {{$:/language/Buttons/TagManager/Caption}}",
"description": "{{$:/language/Buttons/TagManager/Hint}}",
"text": "\\whitespace trim\n\\define control-panel-button(class)\n<$button to=\"$:/TagManager\" tooltip={{$:/language/Buttons/TagManager/Hint}} aria-label={{$:/language/Buttons/TagManager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/tag-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/TagManager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/TagManager]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/theme": {
"title": "$:/core/ui/Buttons/theme",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/theme-button}} {{$:/language/Buttons/Theme/Caption}}",
"description": "{{$:/language/Buttons/Theme/Hint}}",
"text": "\\whitespace trim\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/theme\">> tooltip={{$:/language/Buttons/Theme/Hint}} aria-label={{$:/language/Buttons/Theme/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/theme-button}}\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Theme/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/theme\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$linkcatcher to=\"$:/theme\">\n{{$:/snippets/themeswitcher}}\n</$linkcatcher>\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/timestamp": {
"title": "$:/core/ui/Buttons/timestamp",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/timestamp-on}} {{$:/language/Buttons/Timestamp/Caption}}",
"description": "{{$:/language/Buttons/Timestamp/Hint}}",
"text": "\\whitespace trim\n<$reveal type=\"nomatch\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/On/Hint}} aria-label={{$:/language/Buttons/Timestamp/On/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"yes\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/timestamp-on}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/On/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/Off/Hint}} aria-label={{$:/language/Buttons/Timestamp/Off/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"no\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/timestamp-off}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/Off/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n"
},
"$:/core/ui/Buttons/unfold-all": {
"title": "$:/core/ui/Buttons/unfold-all",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/unfold-all-button}} {{$:/language/Buttons/UnfoldAll/Caption}}",
"description": "{{$:/language/Buttons/UnfoldAll/Hint}}",
"text": "<$button tooltip={{$:/language/Buttons/UnfoldAll/Hint}} aria-label={{$:/language/Buttons/UnfoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-unfold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/UnfoldAll/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/PageTemplate/pagecontrols": {
"title": "$:/core/ui/PageTemplate/pagecontrols",
"text": "\\whitespace trim\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-page-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n<$set name=\"hidden\" value=<<config-title>>>\n<$list filter=\"[<hidden>!text[hide]]\" storyview=\"pop\" variable=\"ignore\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n</$set>\n</$list>\n</$set>\n</$list>\n</div>\n"
},
"$:/core/ui/PageStylesheet": {
"title": "$:/core/ui/PageStylesheet",
"text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$set name=\"currentTiddler\" value={{$:/language}}>\n\n<$set name=\"languageTitle\" value={{!!name}}>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/PageTemplate/alerts": {
"title": "$:/core/ui/PageTemplate/alerts",
"tags": "$:/tags/PageTemplate",
"text": "<div class=\"tc-alerts\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Alert]!has[draft.of]]\" template=\"$:/core/ui/AlertTemplate\" storyview=\"pop\"/>\n\n</div>\n"
},
"$:/core/ui/PageTemplate/drafts": {
"title": "$:/core/ui/PageTemplate/drafts",
"tags": "$:/tags/PageTemplate",
"text": "\\whitespace trim\n<$reveal state=\"$:/status/IsReadOnly\" type=\"nomatch\" text=\"yes\" tag=\"div\" class=\"tc-drafts-list\">\n<$list filter=\"[has[draft.of]!sort[modified]] -[list[$:/StoryList]]\">\n<$link>\n{{$:/core/images/edit-button}} <$text text=<<currentTiddler>>/>\n</$link>\n</$list>\n</$reveal>\n"
},
"$:/core/ui/PageTemplate/pluginreloadwarning": {
"title": "$:/core/ui/PageTemplate/pluginreloadwarning",
"tags": "$:/tags/PageTemplate",
"text": "\\define lingo-base() $:/language/\n\n<$list filter=\"[{$:/status/RequireReloadDueToPluginChange}match[yes]]\">\n\n<$reveal type=\"nomatch\" state=\"$:/temp/HidePluginWarning\" text=\"yes\">\n\n<div class=\"tc-plugin-reload-warning\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<<lingo PluginReloadWarning>> <$button set=\"$:/temp/HidePluginWarning\" setTo=\"yes\" class=\"tc-btn-invisible\">{{$:/core/images/close-button}}</$button>\n\n</$set>\n\n</div>\n\n</$reveal>\n\n</$list>\n"
},
"$:/core/ui/PageTemplate/sidebar": {
"title": "$:/core/ui/PageTemplate/sidebar",
"tags": "$:/tags/PageTemplate",
"text": "\\whitespace trim\n\\define config-title()\n$:/config/SideBarSegments/Visibility/$(listItem)$\n\\end\n\n<$scrollable fallthrough=\"no\" class=\"tc-sidebar-scrollable\">\n\n<div class=\"tc-sidebar-header\">\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBarSegment]!has[draft.of]]\" variable=\"listItem\">\n\n<$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\" tag=\"div\">\n\n<$transclude tiddler=<<listItem>> mode=\"block\"/>\n\n</$reveal>\n\n</$list>\n\n</$reveal>\n\n</div>\n\n</$scrollable>\n"
},
"$:/core/ui/PageTemplate/story": {
"title": "$:/core/ui/PageTemplate/story",
"tags": "$:/tags/PageTemplate",
"text": "\\whitespace trim\n<section class=\"tc-story-river\">\n\n<section class=\"story-backdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AboveStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n<$list filter=\"[list[$:/StoryList]]\" history=\"$:/HistoryList\" template={{$:/config/ui/ViewTemplate}} editTemplate={{$:/config/ui/EditTemplate}} storyview={{$:/view}} emptyMessage={{$:/config/EmptyStoryMessage}}/>\n\n<section class=\"story-frontdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/BelowStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n</section>\n"
},
"$:/core/ui/PageTemplate/topleftbar": {
"title": "$:/core/ui/PageTemplate/topleftbar",
"tags": "$:/tags/PageTemplate",
"text": "<span class=\"tc-topbar tc-topbar-left\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopLeftBar]!has[draft.of]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
},
"$:/core/ui/PageTemplate/toprightbar": {
"title": "$:/core/ui/PageTemplate/toprightbar",
"tags": "$:/tags/PageTemplate",
"text": "<span class=\"tc-topbar tc-topbar-right\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopRightBar]!has[draft.of]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
},
"$:/core/ui/PageTemplate": {
"title": "$:/core/ui/PageTemplate",
"name": "{{$:/language/PageTemplate/Name}}",
"description": "{{$:/language/PageTemplate/Description}}",
"text": "\\whitespace trim\n\\define containerClasses()\ntc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$vars\n\ttv-config-toolbar-icons={{$:/config/Toolbar/Icons}}\n\ttv-config-toolbar-text={{$:/config/Toolbar/Text}}\n\ttv-config-toolbar-class={{$:/config/Toolbar/ButtonClass}}\n\ttv-enable-drag-and-drop={{$:/config/DragAndDrop/Enable}}\n\ttv-show-missing-links={{$:/config/MissingLinks}}\n\tstoryviewTitle={{$:/view}}\n\tlanguageTitle={{{ [{$:/language}get[name]] }}}>\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n\n<$dropzone enable=<<tv-enable-drag-and-drop>>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageTemplate]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n\n</$dropzone>\n\n</$navigator>\n\n</div>\n\n</$vars>\n"
},
"$:/PaletteManager": {
"title": "$:/PaletteManager",
"text": "\\define lingo-base() $:/language/ControlPanel/Palette/Editor/\n\\define describePaletteColour(colour)\n<$transclude tiddler=\"$:/language/Docs/PaletteColours/$colour$\"><$text text=\"$colour$\"/></$transclude>\n\\end\n\\define edit-colour-placeholder()\n edit $(colourName)$\n\\end\n\\define colour-tooltip(showhide) $showhide$ editor for $(newColourName)$ \n\\define resolve-colour(macrocall)\n\\import $:/core/macros/utils\n\\whitespace trim\n<$wikify name=\"name\" text=\"\"\"$macrocall$\"\"\">\n<<name>>\n</$wikify>\n\\end\n\\define delete-colour-index-actions() <$action-setfield $index=<<colourName>>/>\n\\define palette-manager-colour-row-segment()\n\\whitespace trim\n<$edit-text index=<<colourName>> tag=\"input\" placeholder=<<edit-colour-placeholder>> default=\"\"/>\n<br>\n<$edit-text index=<<colourName>> type=\"color\" tag=\"input\" class=\"tc-palette-manager-colour-input\"/>\n<$list filter=\"[<currentTiddler>getindex<colourName>removeprefix[<<]removesuffix[>>]] [<currentTiddler>getindex<colourName>removeprefix[<$]removesuffix[/>]]\" variable=\"ignore\">\n<$set name=\"state\" value={{{ [[$:/state/palettemanager/]addsuffix<currentTiddler>addsuffix[/]addsuffix<colourName>] }}}>\n<$wikify name=\"newColourName\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall={{{ [<currentTiddler>getindex<colourName>] }}}/>\"\"\">\n<$reveal state=<<state>> type=\"nomatch\" text=\"show\">\n<$button tooltip=<<colour-tooltip show>> aria-label=<<colour-tooltip show>> class=\"tc-btn-invisible\" set=<<state>> setTo=\"show\">{{$:/core/images/down-arrow}}<$text text=<<newColourName>> class=\"tc-small-gap-left\"/></$button><br>\n</$reveal>\n<$reveal state=<<state>> type=\"match\" text=\"show\">\n<$button tooltip=<<colour-tooltip hide>> aria-label=<<colour-tooltip show>> class=\"tc-btn-invisible\" actions=\"\"\"<$action-deletetiddler $tiddler=<<state>>/>\"\"\">{{$:/core/images/up-arrow}}<$text text=<<newColourName>> class=\"tc-small-gap-left\"/></$button><br>\n</$reveal>\n<$reveal state=<<state>> type=\"match\" text=\"show\">\n<$set name=\"colourName\" value=<<newColourName>>>\n<br>\n<<palette-manager-colour-row-segment>>\n<br><br>\n</$set>\n</$reveal>\n</$wikify>\n</$set>\n</$list>\n\\end\n\\define palette-manager-colour-row()\n\\whitespace trim\n<tr>\n<td>\n<span style=\"float:right;\">\n<$button tooltip={{$:/language/ControlPanel/Palette/Editor/Delete/Hint}} aria-label=<<lingo Delete/Hint>> class=\"tc-btn-invisible\" actions=<<delete-colour-index-actions>>>\n{{$:/core/images/delete-button}}</$button>\n</span>\n''<$macrocall $name=\"describePaletteColour\" colour=<<colourName>>/>''<br/>\n<$macrocall $name=\"colourName\" $output=\"text/plain\"/>\n</td>\n<td>\n<<palette-manager-colour-row-segment>>\n</td>\n</tr>\n\\end\n\\define palette-manager-table()\n\\whitespace trim\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]indexes[]]\" variable=\"colourName\">\n<$list filter=\"[<currentTiddler>indexes[]removeprefix<colourName>suffix[]]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$list filter=\"[{$:/state/palettemanager/showexternal}removeprefix[yes]suffix[]]\" variable=\"ignore\">\n<<palette-manager-colour-row>>\n</$list>\n\"\"\">\n<<palette-manager-colour-row>>\n</$list>\n</$list>\n</tbody>\n</table>\n\\end\n<$set name=\"currentTiddler\" value={{$:/palette}}>\n\n<<lingo Prompt>> <$link to={{$:/palette}}><$macrocall $name=\"currentTiddler\" $output=\"text/plain\"/></$link>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\" variable=\"listItem\">\n<<lingo Prompt/Modified>>\n<$button message=\"tm-delete-tiddler\" param={{$:/palette}}><<lingo Reset/Caption>></$button>\n</$list>\n\n<$list filter=\"[all[current]is[shadow]!is[tiddler]]\" variable=\"listItem\">\n<<lingo Clone/Prompt>>\n</$list>\n\n<$button message=\"tm-new-tiddler\" param={{$:/palette}}><<lingo Clone/Caption>></$button>\n\n<$checkbox tiddler=\"$:/state/palettemanager/showexternal\" field=\"text\" checked=\"yes\" unchecked=\"no\"><span class=\"tc-small-gap-left\"><<lingo Names/External/Show>></span></$checkbox>\n\n<<palette-manager-table>>\n"
},
"$:/core/ui/PluginInfo": {
"title": "$:/core/ui/PluginInfo",
"text": "\\define localised-info-tiddler-title()\n$(currentTiddler)$/$(languageTitle)$/$(currentTab)$\n\\end\n\\define info-tiddler-title()\n$(currentTiddler)$/$(currentTab)$\n\\end\n\\define default-tiddler-title()\n$:/core/ui/PluginInfo/Default/$(currentTab)$\n\\end\n<$transclude tiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<default-tiddler-title>> mode=\"block\">\n{{$:/language/ControlPanel/Plugin/NoInfoFound/Hint}}\n</$transclude>\n</$transclude>\n</$transclude>\n</$transclude>\n"
},
"$:/core/ui/PluginInfo/Default/contents": {
"title": "$:/core/ui/PluginInfo/Default/contents",
"text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link />\n</li>\n</$list>\n</ul>\n"
},
"$:/core/ui/PluginListItemTemplate": {
"title": "$:/core/ui/PluginListItemTemplate",
"text": "<div class=\"tc-menu-list-item\">\n<$link to={{!!title}}><$view field=\"description\"><$view field=\"title\"/></$view></$link>\n</div>"
},
"$:/core/ui/RootTemplate": {
"title": "$:/core/ui/RootTemplate",
"text": "<$transclude tiddler={{{ [{$:/layout}has[text]] ~[[$:/core/ui/PageTemplate]] }}} mode=\"inline\"/>\n\n"
},
"$:/core/ui/SearchResults": {
"title": "$:/core/ui/SearchResults",
"text": "<div class=\"tc-search-results\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\"\"\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/search/currentTab\" text=<<currentTab>>/>\"\"\" explicitState=\"$:/state/tab/search-results/sidebar\"/>\n\n</$list>\n\n</div>\n"
},
"$:/core/ui/SideBar/More": {
"title": "$:/core/ui/SideBar/More",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/More/Caption}}",
"text": "<div class=\"tc-more-sidebar\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\" default={{$:/config/DefaultMoreSidebarTab}} state=\"$:/state/tab/moresidebar\" class=\"tc-vertical tc-sidebar-tabs-more\" explicitState=\"$:/state/tab/moresidebar-1850697562\"/>\n</div>\n"
},
"$:/core/ui/SideBar/Open": {
"title": "$:/core/ui/SideBar/Open",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/Open/Caption}}",
"text": "\\whitespace trim\n\\define lingo-base() $:/language/CloseAll/\n\n\\define drop-actions()\n<$action-listops $tiddler=<<tv-story-list>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define placeholder()\n<div class=\"tc-droppable-placeholder\"/>\n\\end\n\n\\define droppable-item(button)\n\\whitespace trim\n<$droppable actions=<<drop-actions>> enable=<<tv-allow-drag-and-drop>>>\n<<placeholder>>\n<div>\n$button$\n</div>\n</$droppable>\n\\end\n\n<div class=\"tc-sidebar-tab-open\">\n<$list filter=\"[list<tv-story-list>]\" history=<<tv-history-list>> storyview=\"pop\">\n<div class=\"tc-sidebar-tab-open-item\">\n<$macrocall $name=\"droppable-item\" button=\"\"\"<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=\"tc-btn-invisible tc-btn-mini tc-small-gap-right\">{{$:/core/images/close-button}}</$button><$link to={{!!title}}><$view field=\"title\"/></$link>\"\"\"/>\n</div>\n</$list>\n<$tiddler tiddler=\"\">\n<div>\n<$macrocall $name=\"droppable-item\" button=\"\"\"<$button message=\"tm-close-all-tiddlers\" class=\"tc-btn-invisible tc-btn-mini\"><<lingo Button>></$button>\"\"\"/>\n</div>\n</$tiddler>\n</div>\n"
},
"$:/core/ui/SideBar/Recent": {
"title": "$:/core/ui/SideBar/Recent",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/Recent/Caption}}",
"text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
},
"$:/core/ui/SideBar/Tools": {
"title": "$:/core/ui/SideBar/Tools",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/Tools/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n\n<<lingo Basics/Version/Prompt>> <<version>>\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n\n<div style=\"position:relative;\" class={{{ [<listItem>encodeuricomponent[]addprefix[tc-btn-]] }}}>\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</div>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/SideBarLists": {
"title": "$:/core/ui/SideBarLists",
"text": "<$transclude tiddler=\"$:/core/ui/SideBarSegments/search\"/>\n\n<$transclude tiddler=\"$:/core/ui/SideBarSegments/tabs\"/>\n\n"
},
"$:/core/ui/SideBarSegments/page-controls": {
"title": "$:/core/ui/SideBarSegments/page-controls",
"tags": "$:/tags/SideBarSegment",
"text": "{{||$:/core/ui/PageTemplate/pagecontrols}}\n"
},
"$:/core/ui/SideBarSegments/search": {
"title": "$:/core/ui/SideBarSegments/search",
"tags": "$:/tags/SideBarSegment",
"text": "\\whitespace trim\n\n\\define count-popup-button()\n\\whitespace trim\n<$button popup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n<$list filter=\"[{$(searchTiddler)$}minlength{$:/config/Search/MinLength}limit[1]]\" variable=\"listItem\">\n<$vars userInput={{{ [<searchTiddler>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}} replaceRegexp=\"limit\\[\\d+\\]\">\n<$vars primaryListFilter={{{ [<configTiddler>get[first-search-filter]search-replace:g:regexp<replaceRegexp>,[]] }}} secondaryListFilter={{{ [<configTiddler>get[second-search-filter]search-replace:g:regexp<replaceRegexp>,[]] }}}>\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[subfilter<primaryListFilter>] [subfilter<secondaryListFilter>]\"/>\"\"\">\n{{$:/language/Search/Matches}}\n</$set>\n</$vars>\n</$vars>\n</$list>\n</$button>\n\\end\n\n\\define search-results-list()\n\\whitespace trim\n<$vars userInput={{$(searchTiddler)$}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}}>\n<$list filter=\"[<userInput>minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$tiddler tiddler=<<configTiddler>>>\n\n{{$:/core/ui/SearchResults}}\n\n</$tiddler>\n\n</$list>\n</$vars>\n\\end\n\n\\define cancel-search-actions() <$list filter=\"[<searchTiddler>get[text]!match{$:/temp/search}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/search]] [<searchTiddler>] [<searchListState>]\"/>\"\"\"><$action-setfield $tiddler=\"$:/temp/search\" text={{{ [<searchTiddler>get[text]] }}}/><$action-setfield $tiddler=\"$:/temp/search/refresh\" text=\"yes\"/></$list>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\n\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab/search-results/sidebar\" tag=\"$:/tags/SearchResults\" beforeafter=\"$beforeafter$\" defaultState={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/search/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define advanced-search-actions() <$action-setfield $tiddler=\"$:/temp/advancedsearch\" text={{$:/temp/search/input}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/search/input}}/><<delete-state-tiddlers>><$action-navigate $to=\"$:/AdvancedSearch\"/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\"[data-tiddler-title=\"$:/AdvancedSearch\"] .tc-search input\"\"\" preventScroll=\"true\"/><$action-deletetiddler $filter=\"$:/temp/search $:/temp/search/input $:/temp/search/refresh [<searchListState>]\"/>\n\n<div class=\"tc-sidebar-lists tc-sidebar-search\">\n\n<$vars editTiddler=\"$:/temp/search\" searchTiddler=\"$:/temp/search/input\" searchListState=<<qualify \"$:/state/search-list/selected-item\">>>\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$keyboard key=\"((advanced-search-sidebar))\" actions=<<advanced-search-actions>>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<editTiddler>> storeTitle=<<searchTiddler>> \n\t\tselectionStateTitle=<<searchListState>> refreshTitle=\"$:/temp/search/refresh\" type=\"search\" \n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify \"$:/state/popup/search-dropdown\">> \n\t\tclass=\"tc-popup-handle\" filterMinLength={{$:/config/Search/MinLength}} inputCancelActions=<<cancel-search-actions>> \n\t\tinputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> cancelPopups=\"yes\" \n\t\tconfigTiddlerFilter=\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\"/>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n<$reveal state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n<$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n<<advanced-search-actions>>\n{{$:/core/images/advanced-search-button}}\n</$button>\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>><$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-search input\"/>\n{{$:/core/images/close-button}}\n</$button>\n<<count-popup-button>>\n</$reveal>\n<$reveal state=<<searchTiddler>> type=\"match\" text=\"\">\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/advanced-search-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown-wrapper\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown tc-search-drop-down tc-popup-handle\" state=<<qualify \"$:/state/popup/search-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n\n<<search-results-list>>\n\n</$reveal>\n\n</$reveal>\n\n</$vars>\n\n</div>\n"
},
"$:/core/ui/SideBarSegments/site-subtitle": {
"title": "$:/core/ui/SideBarSegments/site-subtitle",
"tags": "$:/tags/SideBarSegment",
"text": "<div class=\"tc-site-subtitle\">\n\n<$transclude tiddler=\"$:/SiteSubtitle\" mode=\"inline\"/>\n\n</div>\n"
},
"$:/core/ui/SideBarSegments/site-title": {
"title": "$:/core/ui/SideBarSegments/site-title",
"tags": "$:/tags/SideBarSegment",
"text": "<h1 class=\"tc-site-title\">\n\n<$transclude tiddler=\"$:/SiteTitle\" mode=\"inline\"/>\n\n</h1>\n"
},
"$:/core/ui/SideBarSegments/tabs": {
"title": "$:/core/ui/SideBarSegments/tabs",
"tags": "$:/tags/SideBarSegment",
"text": "<div class=\"tc-sidebar-lists tc-sidebar-tabs\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\" default={{$:/config/DefaultSidebarTab}} state=\"$:/state/tab/sidebar\" class=\"tc-sidebar-tabs-main\" explicitState=\"$:/state/tab/sidebar--595412856\"/>\n\n</div>\n"
},
"$:/core/ui/SwitcherModal": {
"title": "$:/core/ui/SwitcherModal",
"subtitle": "<$text text={{{[<switch>lookup[$:/language/Switcher/Subtitle/]]}}}/>",
"class": "tc-modal-centered",
"text": "<$tiddler tiddler={{{[<switch>lookup[$:/config/SwitcherTargets/]]}}}>\n\n\n<$transclude/>\n\n\n</$tiddler>"
},
"$:/TagManager": {
"title": "$:/TagManager",
"icon": "$:/core/images/tag-button",
"color": "#bbb",
"text": "\\define lingo-base() $:/language/TagManager/\n\\define iconEditorTab(type)\n\\whitespace trim\n<$link to=\"\"><<lingo Icons/None>></$link>\n<$list filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[sort[title]] +[$type$is[system]]\">\n<$link to={{!!title}}>\n<$transclude/> <$view field=\"title\"/>\n</$link>\n</$list>\n\\end\n\\define iconEditor(title)\n\\whitespace trim\n<div class=\"tc-drop-down-wrapper\">\n<$button popupTitle={{{ [[$:/state/popup/icon/]addsuffix<__title__>] }}} class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal stateTitle={{{ [[$:/state/popup/icon/]addsuffix<__title__>] }}} type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$linkcatcher actions=\"\"\"<$action-setfield $tiddler=<<__title__>> icon=<<navigateTo>>/>\"\"\">\n<<iconEditorTab type:\"!\">>\n<hr/>\n<<iconEditorTab type:\"\">>\n</$linkcatcher>\n</div>\n</$reveal>\n</div>\n\\end\n\\define toggleButton(state)\n\\whitespace trim\n<$reveal stateTitle=<<__state__>> type=\"match\" text=\"closed\" default=\"closed\">\n<$button setTitle=<<__state__>> setTo=\"open\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n<$reveal stateTitle=<<__state__>> type=\"match\" text=\"open\" default=\"closed\">\n<$button setTitle=<<__state__>> setTo=\"closed\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n\\end\n\\whitespace trim\n<table class=\"tc-tag-manager-table\">\n<tbody>\n<tr>\n<th><<lingo Colour/Heading>></th>\n<th class=\"tc-tag-manager-tag\"><<lingo Tag/Heading>></th>\n<th><<lingo Count/Heading>></th>\n<th><<lingo Icon/Heading>></th>\n<th><<lingo Info/Heading>></th>\n</tr>\n<$list filter=\"[tags[]!is[system]sort[title]]\">\n<tr>\n<td><$edit-text field=\"color\" tag=\"input\" type=\"color\"/></td>\n<td>{{||$:/core/ui/TagTemplate}}</td>\n<td><$count filter=\"[all[current]tagging[]]\"/></td>\n<td>\n<$macrocall $name=\"iconEditor\" title={{!!title}}/>\n</td>\n<td>\n<$macrocall $name=\"toggleButton\" state={{{ [[$:/state/tag-manager/]addsuffix<currentTiddler>] }}} /> \n</td>\n</tr>\n<tr>\n<td></td>\n<td colspan=\"4\">\n<$reveal stateTitle={{{ [[$:/state/tag-manager/]addsuffix<currentTiddler>] }}} type=\"match\" text=\"open\" default=\"\">\n<table>\n<tbody>\n<tr><td><<lingo Colour/Heading>></td><td><$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/></td></tr>\n<tr><td><<lingo Icon/Heading>></td><td><$edit-text field=\"icon\" tag=\"input\" size=\"45\"/></td></tr>\n</tbody>\n</table>\n</$reveal>\n</td>\n</tr>\n</$list>\n<tr>\n<td></td>\n<td style=\"position:relative;\">\n{{$:/core/ui/UntaggedTemplate}}\n</td>\n<td>\n<small class=\"tc-menu-list-count\"><$count filter=\"[untagged[]!is[system]] -[tags[]]\"/></small>\n</td>\n<td></td>\n<td></td>\n</tr>\n</tbody>\n</table>\n"
},
"$:/core/ui/TagPickerTagTemplate": {
"title": "$:/core/ui/TagPickerTagTemplate",
"text": "\\whitespace trim\n<$button class=<<button-classes>> tag=\"a\" tooltip={{$:/language/EditTemplate/Tags/Add/Button/Hint}}>\n<$list filter=\"[<saveTiddler>minlength[1]]\">\n<$action-listops $tiddler=<<saveTiddler>> $field=<<tagField>> $subfilter=\"[<tag>]\"/>\n</$list>\n<$set name=\"currentTiddlerCSSEscaped\" value={{{ [<saveTiddler>escapecss[]] }}}>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=<<get-tagpicker-focus-selector>> preventScroll=\"true\"/>\n</$set>\n<<delete-tag-state-tiddlers>>\n<$list filter=\"[<refreshTitle>minlength[1]]\">\n<$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n</$list>\n<<actions>>\n<$set name=\"backgroundColor\" value={{!!color}}>\n<$wikify name=\"foregroundColor\" text=\"\"\"<$macrocall $name=\"contrastcolour\" target={{!!color}} fallbackTarget=<<fallbackTarget>> colourA=<<colourA>> colourB=<<colourB>>/>\"\"\">\n<span class=\"tc-tag-label tc-btn-invisible\" style=<<tag-pill-styles>>>\n<$transclude tiddler={{!!icon}}/><$view field=\"title\" format=\"text\"/>\n</span>\n</$wikify>\n</$set>\n</$button>\n"
},
"$:/core/ui/TagTemplate": {
"title": "$:/core/ui/TagTemplate",
"text": "\\whitespace trim\n<span class=\"tc-tag-list-item\">\n<$set name=\"transclusion\" value=<<currentTiddler>>>\n<$macrocall $name=\"tag-pill-body\" tag=<<currentTiddler>> icon={{!!icon}} colour={{!!color}} palette={{$:/palette}} element-tag=\"\"\"$button\"\"\" element-attributes=\"\"\"popup=<<qualify \"$:/state/popup/tag\">> dragFilter='[all[current]tagging[]]' tag='span'\"\"\"/>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\" animate=\"yes\" class=\"tc-drop-down\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</$set>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]\" variable=\"listItem\"> \n<$transclude tiddler=<<listItem>>/> \n</$list>\n<hr>\n<$macrocall $name=\"list-tagged-draggable\" tag=<<currentTiddler>>/>\n</$reveal>\n</$set>\n</span>\n"
},
"$:/core/ui/TiddlerFieldTemplate": {
"title": "$:/core/ui/TiddlerFieldTemplate",
"text": "<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<listItem>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<listItem>>/>\n</td>\n</tr>"
},
"$:/core/ui/TiddlerFields": {
"title": "$:/core/ui/TiddlerFields",
"text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
},
"$:/core/ui/TiddlerInfo/Advanced/PluginInfo": {
"title": "$:/core/ui/TiddlerInfo/Advanced/PluginInfo",
"tags": "$:/tags/TiddlerInfo/Advanced",
"text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<$list filter=\"[all[current]has[plugin-type]]\">\n\n! <<lingo Heading>>\n\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</li>\n</$list>\n</ul>\n\n</$list>\n"
},
"$:/core/ui/TiddlerInfo/Advanced/ShadowInfo": {
"title": "$:/core/ui/TiddlerInfo/Advanced/ShadowInfo",
"tags": "$:/tags/TiddlerInfo/Advanced",
"text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/ShadowInfo/\n<$set name=\"infoTiddler\" value=<<currentTiddler>>>\n\n''<<lingo Heading>>''\n\n<$list filter=\"[all[current]!is[shadow]]\">\n\n<<lingo NotShadow/Hint>>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]]\">\n\n<<lingo Shadow/Hint>>\n\n<$list filter=\"[all[current]shadowsource[]]\">\n\n<$set name=\"pluginTiddler\" value=<<currentTiddler>>>\n<<lingo Shadow/Source>>\n</$set>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\">\n\n<<lingo OverriddenShadow/Hint>>\n\n</$list>\n\n\n</$list>\n</$set>\n"
},
"$:/core/ui/TiddlerInfo/Advanced": {
"title": "$:/core/ui/TiddlerInfo/Advanced",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Advanced/Caption}}",
"text": "<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo/Advanced]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>> mode=\"block\"/>\n</$list>\n"
},
"$:/core/ui/TiddlerInfo/Fields": {
"title": "$:/core/ui/TiddlerInfo/Fields",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Fields/Caption}}",
"text": "<$transclude tiddler=\"$:/core/ui/TiddlerFields\"/>\n"
},
"$:/core/ui/TiddlerInfo/List": {
"title": "$:/core/ui/TiddlerInfo/List",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/List/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[list{!!title}]\" emptyMessage=<<lingo List/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/TiddlerInfo/Listed": {
"title": "$:/core/ui/TiddlerInfo/Listed",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Listed/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]listed[]!is[system]]\" emptyMessage=<<lingo Listed/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/TiddlerInfo/References": {
"title": "$:/core/ui/TiddlerInfo/References",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/References/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]backlinks[]sort[title]]\" emptyMessage=<<lingo References/Empty>> template=\"$:/core/ui/ListItemTemplate\">\n</$list>"
},
"$:/core/ui/TiddlerInfo/Tagging": {
"title": "$:/core/ui/TiddlerInfo/Tagging",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Tagging/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]tagging[]]\" emptyMessage=<<lingo Tagging/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/TiddlerInfo/Tools": {
"title": "$:/core/ui/TiddlerInfo/Tools",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Tools/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\">\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/TiddlerInfo": {
"title": "$:/core/ui/TiddlerInfo",
"text": "<div style=\"position:relative;\">\n<div class=\"tc-tiddler-controls\" style=\"position:absolute;right:0;\">\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n</div>\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo]!has[draft.of]]\" default={{$:/config/TiddlerInfo/Default}}/>\n"
},
"$:/core/ui/TopBar/menu": {
"title": "$:/core/ui/TopBar/menu",
"tags": "$:/tags/TopRightBar",
"text": "<$list filter=\"[[$:/state/sidebar]get[text]] +[else[yes]!match[no]]\" variable=\"ignore\">\n<$button set=\"$:/state/sidebar\" setTo=\"no\" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class=\"tc-btn-invisible tc-hide-sidebar-btn\">{{$:/core/images/chevron-right}}</$button>\n</$list>\n<$list filter=\"[[$:/state/sidebar]get[text]] +[else[yes]match[no]]\" variable=\"ignore\">\n<$button set=\"$:/state/sidebar\" setTo=\"yes\" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class=\"tc-btn-invisible tc-show-sidebar-btn\">{{$:/core/images/chevron-left}}</$button>\n</$list>\n"
},
"$:/core/ui/UntaggedTemplate": {
"title": "$:/core/ui/UntaggedTemplate",
"text": "\\define lingo-base() $:/language/SideBar/\n<$button popup=<<qualify \"$:/state/popup/tag\">> class=\"tc-btn-invisible tc-untagged-label tc-tag-label\">\n<<lingo Tags/Untagged/Caption>>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[untagged[]!is[system]] -[tags[]] +[sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/body": {
"title": "$:/core/ui/ViewTemplate/body",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal tag=\"div\" class=\"tc-tiddler-body\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[current]!has[plugin-type]!field:hide-body[yes]]\">\n\n<$transclude>\n\n<$transclude tiddler=\"$:/language/MissingTiddler/Hint\"/>\n\n</$transclude>\n\n</$list>\n\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/classic": {
"title": "$:/core/ui/ViewTemplate/classic",
"tags": "$:/tags/ViewTemplate $:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/ClassicWarning/\n<$list filter=\"[all[current]type[text/x-tiddlywiki]]\">\n<div class=\"tc-message-box\">\n\n<<lingo Hint>>\n\n<$button set=\"!!type\" setTo=\"text/vnd.tiddlywiki\"><<lingo Upgrade/Caption>></$button>\n\n</div>\n</$list>\n"
},
"$:/core/ui/ViewTemplate/import": {
"title": "$:/core/ui/ViewTemplate/import",
"tags": "$:/tags/ViewTemplate",
"text": "\\define lingo-base() $:/language/Import/\n\n\\define buttons()\n<$button message=\"tm-delete-tiddler\" param=<<currentTiddler>>><<lingo Listing/Cancel/Caption>></$button>\n<$button message=\"tm-perform-import\" param=<<currentTiddler>>><<lingo Listing/Import/Caption>></$button>\n<<lingo Listing/Preview>> <$select tiddler=\"$:/state/importpreviewtype\" default=\"$:/core/ui/ImportPreviews/Text\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ImportPreview]!has[draft.of]]\">\n<option value=<<currentTiddler>>>{{!!caption}}</option>\n</$list>\n</$select>\n\\end\n\n<$list filter=\"[all[current]field:plugin-type[import]]\">\n\n<div class=\"tc-import\">\n\n<<lingo Listing/Hint>>\n\n<<buttons>>\n\n{{||$:/core/ui/ImportListing}}\n\n<<buttons>>\n\n</div>\n\n</$list>\n"
},
"$:/core/ui/ViewTemplate/plugin": {
"title": "$:/core/ui/ViewTemplate/plugin",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal tag=\"div\" class=\"tc-tiddler-plugin-info\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[current]has[plugin-type]] -[all[current]field:plugin-type[import]]\">\n<$set name=\"plugin-type\" value={{!!plugin-type}}>\n<$set name=\"default-popup-state\" value=\"yes\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n{{||$:/core/ui/Components/plugin-info}}\n</$set>\n</$set>\n</$set>\n</$list>\n</$reveal>"
},
"$:/core/ui/ViewTemplate/subtitle": {
"title": "$:/core/ui/ViewTemplate/subtitle",
"tags": "$:/tags/ViewTemplate",
"text": "\\whitespace trim\n<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}} />\n<$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/tags": {
"title": "$:/core/ui/ViewTemplate/tags",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-tags-wrapper\"><$list filter=\"[all[current]tags[]sort[title]]\" template=\"$:/core/ui/TagTemplate\" storyview=\"pop\"/></div>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/title": {
"title": "$:/core/ui/ViewTemplate/title",
"tags": "$:/tags/ViewTemplate",
"text": "\\whitespace trim\n\\define title-styles()\nfill:$(foregroundColor)$;\n\\end\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<span class=\"tc-tiddler-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\"><$transclude tiddler=<<listItem>>/></$set></$reveal></$list>\n</span>\n<$set name=\"tv-wikilinks\" value={{$:/config/Tiddlers/TitleLinks}}>\n<$link>\n<$set name=\"foregroundColor\" value={{!!color}}>\n<$list filter=\"[all[current]has[icon]]~[[$:/config/DefaultTiddlerIcon]has[text]]\">\n<span class=\"tc-tiddler-title-icon\" style=<<title-styles>>>\n<$transclude tiddler={{!!icon}}>\n<$transclude tiddler={{$:/config/DefaultTiddlerIcon}}/>\n</$transclude>\n</span>\n</$list>\n</$set>\n<$list filter=\"[all[current]removeprefix[$:/]]\">\n<h2 class=\"tc-title\" title={{$:/language/SystemTiddler/Tooltip}}>\n<span class=\"tc-system-title-prefix\">$:/</span><$text text=<<currentTiddler>>/>\n</h2>\n</$list>\n<$list filter=\"[all[current]!prefix[$:/]]\">\n<h2 class=\"tc-title\">\n<$view field=\"title\"/>\n</h2>\n</$list>\n</$link>\n</$set>\n</div>\n\n<$reveal type=\"nomatch\" text=\"\" default=\"\" state=<<tiddlerInfoState>> class=\"tc-tiddler-info tc-popup-handle\" animate=\"yes\" retain=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfoSegment]!has[draft.of]] [[$:/core/ui/TiddlerInfo]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>> mode=\"block\"/></$list>\n\n</$reveal>\n</div>"
},
"$:/core/ui/ViewTemplate/unfold": {
"title": "$:/core/ui/ViewTemplate/unfold",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal tag=\"div\" type=\"nomatch\" state=\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar\" text=\"hide\">\n<$reveal tag=\"div\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=\"tc-fold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-up}}\n</$button>\n</$reveal>\n<$reveal tag=\"div\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"show\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=\"tc-unfold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate": {
"title": "$:/core/ui/ViewTemplate",
"text": "\\define folded-state()\n$:/state/folded/$(currentTiddler)$\n\\end\n\\define cancel-delete-tiddler-actions(message) <$action-sendmessage $message=\"tm-$message$-tiddler\"/>\n\\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]]\n<$vars storyTiddler=<<currentTiddler>> tiddlerInfoState=<<qualify \"$:/state/popup/tiddler-info\">>><div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-view-frame [<currentTiddler>is[tiddler]then[tc-tiddler-exists]] [<currentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [<currentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [<currentTiddler>is[shadow]is[tiddler]then[tc-tiddler-overridden-shadow]] [<currentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [<currentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!has[draft.of]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>>/></$list>\n</div>\n</$vars>\n"
},
"$:/core/ui/Buttons/clone": {
"title": "$:/core/ui/Buttons/clone",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/clone-button}} {{$:/language/Buttons/Clone/Caption}}",
"description": "{{$:/language/Buttons/Clone/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-new-tiddler\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/Clone/Hint}} aria-label={{$:/language/Buttons/Clone/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/clone-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Clone/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/close-others": {
"title": "$:/core/ui/Buttons/close-others",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/close-others-button}} {{$:/language/Buttons/CloseOthers/Caption}}",
"description": "{{$:/language/Buttons/CloseOthers/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-close-other-tiddlers\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/CloseOthers/Hint}} aria-label={{$:/language/Buttons/CloseOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/CloseOthers/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/close": {
"title": "$:/core/ui/Buttons/close",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/close-button}} {{$:/language/Buttons/Close/Caption}}",
"description": "{{$:/language/Buttons/Close/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Close/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/edit": {
"title": "$:/core/ui/Buttons/edit",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/edit-button}} {{$:/language/Buttons/Edit/Caption}}",
"description": "{{$:/language/Buttons/Edit/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-edit-tiddler\" tooltip={{$:/language/Buttons/Edit/Hint}} aria-label={{$:/language/Buttons/Edit/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/edit-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Edit/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/export-tiddler": {
"title": "$:/core/ui/Buttons/export-tiddler",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportTiddler/Caption}}",
"description": "{{$:/language/Buttons/ExportTiddler/Hint}}",
"text": "\\define makeExportFilter()\n[[$(currentTiddler)$]]\n\\end\n<$macrocall $name=\"exportButton\" exportFilter=<<makeExportFilter>> lingoBase=\"$:/language/Buttons/ExportTiddler/\" baseFilename=<<currentTiddler>>/>"
},
"$:/core/ui/Buttons/fold-bar": {
"title": "$:/core/ui/Buttons/fold-bar",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/chevron-up}} {{$:/language/Buttons/Fold/FoldBar/Caption}}",
"description": "{{$:/language/Buttons/Fold/FoldBar/Hint}}",
"text": "<!-- This dummy toolbar button is here to allow visibility of the fold-bar to be controlled as if it were a toolbar button -->"
},
"$:/core/ui/Buttons/fold-others": {
"title": "$:/core/ui/Buttons/fold-others",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/fold-others-button}} {{$:/language/Buttons/FoldOthers/Caption}}",
"description": "{{$:/language/Buttons/FoldOthers/Hint}}",
"text": "\\whitespace trim\n<$button tooltip={{$:/language/Buttons/FoldOthers/Hint}} aria-label={{$:/language/Buttons/FoldOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-other-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/FoldOthers/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/fold": {
"title": "$:/core/ui/Buttons/fold",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/fold-button}} {{$:/language/Buttons/Fold/Caption}}",
"description": "{{$:/language/Buttons/Fold/Hint}}",
"text": "\\whitespace trim\n<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Fold/Caption}}/>\n</span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Unfold/Caption}}/>\n</span>\n</$list>\n</$button>\n</$reveal>\n"
},
"$:/core/ui/Buttons/info": {
"title": "$:/core/ui/Buttons/info",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/info-button}} {{$:/language/Buttons/Info/Caption}}",
"description": "{{$:/language/Buttons/Info/Hint}}",
"text": "\\whitespace trim\n\\define button-content()\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/info-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Info/Caption}}/>\n</span>\n</$list>\n\\end\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"popup\">\n<$button popup=<<tiddlerInfoState>> tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$reveal state=<<tiddlerInfoState>> type=\"match\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"yes\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=<<tiddlerInfoState>> type=\"nomatch\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n</$reveal>"
},
"$:/core/ui/Buttons/more-tiddler-actions": {
"title": "$:/core/ui/Buttons/more-tiddler-actions",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
"description": "{{$:/language/Buttons/More/Hint}}",
"text": "\\whitespace trim\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/More/Caption}}/>\n</span>\n</$list>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]] -[[$:/core/ui/Buttons/more-tiddler-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$set>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
},
"$:/core/ui/Buttons/new-here": {
"title": "$:/core/ui/Buttons/new-here",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/new-here-button}} {{$:/language/Buttons/NewHere/Caption}}",
"description": "{{$:/language/Buttons/NewHere/Hint}}",
"text": "\\whitespace trim\n\\define newHereActions()\n<$set name=\"tags\" filter=\"[<currentTiddler>] [{$:/config/NewTiddler/Tags}]\">\n<$action-sendmessage $message=\"tm-new-tiddler\" tags=<<tags>>/>\n</$set>\n\\end\n\\define newHereButton()\n<$button actions=<<newHereActions>> tooltip={{$:/language/Buttons/NewHere/Hint}} aria-label={{$:/language/Buttons/NewHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-here-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewHere/Caption}}/>\n</span>\n</$list>\n</$button>\n\\end\n<<newHereButton>>\n"
},
"$:/core/ui/Buttons/new-journal-here": {
"title": "$:/core/ui/Buttons/new-journal-here",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournalHere/Caption}}",
"description": "{{$:/language/Buttons/NewJournalHere/Hint}}",
"text": "\\whitespace trim\n\\define journalButtonTags()\n[[$(currentTiddlerTag)$]] $(journalTags)$\n\\end\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournalHere/Hint}} aria-label={{$:/language/Buttons/NewJournalHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$wikify name=\"journalTitle\" text=\"\"\"<$macrocall $name=\"now\" format=<<journalTitleTemplate>>/>\"\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<journalButtonTags>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewJournalHere/Caption}}/>\n</span>\n</$list>\n</$wikify>\n</$button>\n\\end\n<$set name=\"journalTitleTemplate\" value={{$:/config/NewJournal/Title}}>\n<$set name=\"journalTags\" value={{$:/config/NewJournal/Tags}}>\n<$set name=\"currentTiddlerTag\" value=<<currentTiddler>>>\n<<journalButton>>\n</$set>\n</$set>\n</$set>\n"
},
"$:/core/ui/Buttons/open-window": {
"title": "$:/core/ui/Buttons/open-window",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/open-window}} {{$:/language/Buttons/OpenWindow/Caption}}",
"description": "{{$:/language/Buttons/OpenWindow/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-open-window\" tooltip={{$:/language/Buttons/OpenWindow/Hint}} aria-label={{$:/language/Buttons/OpenWindow/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/open-window}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/OpenWindow/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/permalink": {
"title": "$:/core/ui/Buttons/permalink",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/permalink-button}} {{$:/language/Buttons/Permalink/Caption}}",
"description": "{{$:/language/Buttons/Permalink/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-permalink\" tooltip={{$:/language/Buttons/Permalink/Hint}} aria-label={{$:/language/Buttons/Permalink/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/permalink-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Permalink/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/permaview": {
"title": "$:/core/ui/Buttons/permaview",
"tags": "$:/tags/ViewToolbar $:/tags/PageControls",
"caption": "{{$:/core/images/permaview-button}} {{$:/language/Buttons/Permaview/Caption}}",
"description": "{{$:/language/Buttons/Permaview/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-permaview\" tooltip={{$:/language/Buttons/Permaview/Hint}} aria-label={{$:/language/Buttons/Permaview/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/permaview-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Permaview/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/DefaultTiddlers": {
"title": "$:/DefaultTiddlers",
"text": "GettingStarted\n"
},
"$:/temp/advancedsearch": {
"title": "$:/temp/advancedsearch",
"text": ""
},
"$:/snippets/allfields": {
"title": "$:/snippets/allfields",
"text": "\\define renderfield(title)\n<tr class=\"tc-view-field\"><td class=\"tc-view-field-name\">''$title$'':</td><td class=\"tc-view-field-value\">//{{$:/language/Docs/Fields/$title$}}//</td></tr>\n\\end\n<table class=\"tc-view-field-table\"><tbody><$list filter=\"[fields[]sort[title]]\" variable=\"listItem\"><$macrocall $name=\"renderfield\" title=<<listItem>>/></$list>\n</tbody></table>\n"
},
"$:/config/AnimationDuration": {
"title": "$:/config/AnimationDuration",
"text": "400"
},
"$:/config/AutoFocus": {
"title": "$:/config/AutoFocus",
"text": "title"
},
"$:/config/AutoSave": {
"title": "$:/config/AutoSave",
"text": "yes"
},
"$:/config/BitmapEditor/Colour": {
"title": "$:/config/BitmapEditor/Colour",
"text": "#444"
},
"$:/config/BitmapEditor/ImageSizes": {
"title": "$:/config/BitmapEditor/ImageSizes",
"text": "[[62px 100px]] [[100px 62px]] [[124px 200px]] [[200px 124px]] [[248px 400px]] [[371px 600px]] [[400px 248px]] [[556px 900px]] [[600px 371px]] [[742px 1200px]] [[900px 556px]] [[1200px 742px]]"
},
"$:/config/BitmapEditor/LineWidth": {
"title": "$:/config/BitmapEditor/LineWidth",
"text": "3px"
},
"$:/config/BitmapEditor/LineWidths": {
"title": "$:/config/BitmapEditor/LineWidths",
"text": "0.25px 0.5px 1px 2px 3px 4px 6px 8px 10px 16px 20px 28px 40px 56px 80px"
},
"$:/config/BitmapEditor/Opacities": {
"title": "$:/config/BitmapEditor/Opacities",
"text": "0.01 0.025 0.05 0.075 0.1 0.15 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0"
},
"$:/config/BitmapEditor/Opacity": {
"title": "$:/config/BitmapEditor/Opacity",
"text": "1.0"
},
"$:/config/DefaultMoreSidebarTab": {
"title": "$:/config/DefaultMoreSidebarTab",
"text": "$:/core/ui/MoreSideBar/Tags"
},
"$:/config/DefaultSidebarTab": {
"title": "$:/config/DefaultSidebarTab",
"text": "$:/core/ui/SideBar/Open"
},
"$:/config/DownloadSaver/AutoSave": {
"title": "$:/config/DownloadSaver/AutoSave",
"text": "no"
},
"$:/config/Drafts/TypingTimeout": {
"title": "$:/config/Drafts/TypingTimeout",
"text": "400"
},
"$:/config/EditMode/fieldname-filter": {
"title": "$:/config/EditMode/fieldname-filter",
"first-search-filter": "[!is[shadow]!is[system]fields[]search:title<userInput>sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type",
"second-search-filter": "[fields[]search:title<userInput>sort[]] -[!is[shadow]!is[system]fields[]]"
},
"$:/config/EditTabIndex": {
"title": "$:/config/EditTabIndex",
"text": "1\n"
},
"$:/config/EditTemplateFields/Visibility/title": {
"title": "$:/config/EditTemplateFields/Visibility/title",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/tags": {
"title": "$:/config/EditTemplateFields/Visibility/tags",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/text": {
"title": "$:/config/EditTemplateFields/Visibility/text",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/creator": {
"title": "$:/config/EditTemplateFields/Visibility/creator",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/created": {
"title": "$:/config/EditTemplateFields/Visibility/created",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/modified": {
"title": "$:/config/EditTemplateFields/Visibility/modified",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/modifier": {
"title": "$:/config/EditTemplateFields/Visibility/modifier",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/type": {
"title": "$:/config/EditTemplateFields/Visibility/type",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/draft.title": {
"title": "$:/config/EditTemplateFields/Visibility/draft.title",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/draft.of": {
"title": "$:/config/EditTemplateFields/Visibility/draft.of",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/revision": {
"title": "$:/config/EditTemplateFields/Visibility/revision",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/bag": {
"title": "$:/config/EditTemplateFields/Visibility/bag",
"text": "hide"
},
"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4": {
"title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4",
"text": "hide"
},
"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5": {
"title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5",
"text": "hide"
},
"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6": {
"title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6",
"text": "hide"
},
"$:/config/EditorTypeMappings/image/gif": {
"title": "$:/config/EditorTypeMappings/image/gif",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/webp": {
"title": "$:/config/EditorTypeMappings/image/webp",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/heic": {
"title": "$:/config/EditorTypeMappings/image/heic",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/heif": {
"title": "$:/config/EditorTypeMappings/image/heif",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/jpeg": {
"title": "$:/config/EditorTypeMappings/image/jpeg",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/jpg": {
"title": "$:/config/EditorTypeMappings/image/jpg",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/png": {
"title": "$:/config/EditorTypeMappings/image/png",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/x-icon": {
"title": "$:/config/EditorTypeMappings/image/x-icon",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/text/vnd.tiddlywiki": {
"title": "$:/config/EditorTypeMappings/text/vnd.tiddlywiki",
"text": "text"
},
"$:/config/Manager/Show": {
"title": "$:/config/Manager/Show",
"text": "tiddlers"
},
"$:/config/Manager/Filter": {
"title": "$:/config/Manager/Filter",
"text": ""
},
"$:/config/Manager/Order": {
"title": "$:/config/Manager/Order",
"text": "forward"
},
"$:/config/Manager/Sort": {
"title": "$:/config/Manager/Sort",
"text": "title"
},
"$:/config/Manager/System": {
"title": "$:/config/Manager/System",
"text": "system"
},
"$:/config/Manager/Tag": {
"title": "$:/config/Manager/Tag",
"text": ""
},
"$:/state/popup/manager/item/$:/Manager/ItemMain/RawText": {
"title": "$:/state/popup/manager/item/$:/Manager/ItemMain/RawText",
"text": "hide"
},
"$:/config/MissingLinks": {
"title": "$:/config/MissingLinks",
"text": "yes"
},
"$:/config/Navigation/UpdateAddressBar": {
"title": "$:/config/Navigation/UpdateAddressBar",
"text": "no"
},
"$:/config/Navigation/UpdateHistory": {
"title": "$:/config/Navigation/UpdateHistory",
"text": "no"
},
"$:/config/NewImageType": {
"title": "$:/config/NewImageType",
"text": "jpeg"
},
"$:/config/OfficialPluginLibrary": {
"title": "$:/config/OfficialPluginLibrary",
"tags": "$:/tags/PluginLibrary",
"url": "https://tiddlywiki.com/library/v5.1.23/index.html",
"caption": "{{$:/language/OfficialPluginLibrary}}",
"text": "{{$:/language/OfficialPluginLibrary/Hint}}\n"
},
"$:/config/Navigation/openLinkFromInsideRiver": {
"title": "$:/config/Navigation/openLinkFromInsideRiver",
"text": "below"
},
"$:/config/Navigation/openLinkFromOutsideRiver": {
"title": "$:/config/Navigation/openLinkFromOutsideRiver",
"text": "top"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all",
"text": "hide"
},
"$:/config/Performance/Instrumentation": {
"title": "$:/config/Performance/Instrumentation",
"text": "no"
},
"$:/config/RegisterPluginType/plugin": {
"title": "$:/config/RegisterPluginType/plugin",
"text": "yes"
},
"$:/config/RegisterPluginType/theme": {
"title": "$:/config/RegisterPluginType/theme",
"text": "no"
},
"$:/config/RegisterPluginType/language": {
"title": "$:/config/RegisterPluginType/language",
"text": "no"
},
"$:/config/RegisterPluginType/info": {
"title": "$:/config/RegisterPluginType/info",
"text": "yes"
},
"$:/config/RegisterPluginType/import": {
"title": "$:/config/RegisterPluginType/import",
"text": "no"
},
"$:/config/SaveWikiButton/Template": {
"title": "$:/config/SaveWikiButton/Template",
"text": "$:/core/save/all"
},
"$:/config/SaverFilter": {
"title": "$:/config/SaverFilter",
"text": "[all[]] -[prefix[$:/HistoryList]] -[prefix[$:/StoryList]] -[status[pending]plugin-type[import]] -[[$:/isEncrypted]] -[[$:/UploadName]] -[prefix[$:/state/]] -[prefix[$:/temp/]]\n"
},
"$:/config/Search/AutoFocus": {
"title": "$:/config/Search/AutoFocus",
"text": "true"
},
"$:/config/Search/MinLength": {
"title": "$:/config/Search/MinLength",
"text": "3"
},
"$:/config/SearchResults/Default": {
"title": "$:/config/SearchResults/Default",
"text": "$:/core/ui/DefaultSearchResultList"
},
"$:/config/Server/ExternalFilters/[all[tiddlers]!is[system]sort[title]]": {
"title": "$:/config/Server/ExternalFilters/[all[tiddlers]!is[system]sort[title]]",
"text": "yes"
},
"$:/config/ShortcutInfo/add-field": {
"title": "$:/config/ShortcutInfo/add-field",
"text": "{{$:/language/EditTemplate/Fields/Add/Button/Hint}}"
},
"$:/config/ShortcutInfo/advanced-search": {
"title": "$:/config/ShortcutInfo/advanced-search",
"text": "{{$:/language/Buttons/AdvancedSearch/Hint}}"
},
"$:/config/ShortcutInfo/advanced-search-sidebar": {
"title": "$:/config/ShortcutInfo/advanced-search-sidebar",
"text": "{{$:/language/Shortcuts/Input/AdvancedSearch/Hint}}"
},
"$:/config/ShortcutInfo/bold": {
"title": "$:/config/ShortcutInfo/bold",
"text": "{{$:/language/Buttons/Bold/Hint}}"
},
"$:/config/ShortcutInfo/cancel-edit-tiddler": {
"title": "$:/config/ShortcutInfo/cancel-edit-tiddler",
"text": "{{$:/language/Buttons/Cancel/Hint}}"
},
"$:/config/ShortcutInfo/change-sidebar-layout": {
"title": "$:/config/ShortcutInfo/change-sidebar-layout",
"text": "{{$:/language/Shortcuts/SidebarLayout/Hint}}"
},
"$:/config/ShortcutInfo/delete-field": {
"title": "$:/config/ShortcutInfo/delete-field",
"text": "{{$:/language/EditTemplate/Field/Remove/Hint}}"
},
"$:/config/ShortcutInfo/excise": {
"title": "$:/config/ShortcutInfo/excise",
"text": "{{$:/language/Buttons/Excise/Hint}}"
},
"$:/config/ShortcutInfo/heading-1": {
"title": "$:/config/ShortcutInfo/heading-1",
"text": "{{$:/language/Buttons/Heading1/Hint}}"
},
"$:/config/ShortcutInfo/heading-2": {
"title": "$:/config/ShortcutInfo/heading-2",
"text": "{{$:/language/Buttons/Heading2/Hint}}"
},
"$:/config/ShortcutInfo/heading-3": {
"title": "$:/config/ShortcutInfo/heading-3",
"text": "{{$:/language/Buttons/Heading3/Hint}}"
},
"$:/config/ShortcutInfo/heading-4": {
"title": "$:/config/ShortcutInfo/heading-4",
"text": "{{$:/language/Buttons/Heading4/Hint}}"
},
"$:/config/ShortcutInfo/heading-5": {
"title": "$:/config/ShortcutInfo/heading-5",
"text": "{{$:/language/Buttons/Heading5/Hint}}"
},
"$:/config/ShortcutInfo/heading-6": {
"title": "$:/config/ShortcutInfo/heading-6",
"text": "{{$:/language/Buttons/Heading6/Hint}}"
},
"$:/config/ShortcutInfo/input-accept": {
"title": "$:/config/ShortcutInfo/input-accept",
"text": "{{$:/language/Shortcuts/Input/Accept/Hint}}"
},
"$:/config/ShortcutInfo/input-accept-variant": {
"title": "$:/config/ShortcutInfo/input-accept-variant",
"text": "{{$:/language/Shortcuts/Input/AcceptVariant/Hint}}"
},
"$:/config/ShortcutInfo/input-cancel": {
"title": "$:/config/ShortcutInfo/input-cancel",
"text": "{{$:/language/Shortcuts/Input/Cancel/Hint}}"
},
"$:/config/ShortcutInfo/input-down": {
"title": "$:/config/ShortcutInfo/input-down",
"text": "{{$:/language/Shortcuts/Input/Down/Hint}}"
},
"$:/config/ShortcutInfo/input-tab-left": {
"title": "$:/config/ShortcutInfo/input-tab-left",
"text": "{{$:/language/Shortcuts/Input/Tab-Left/Hint}}"
},
"$:/config/ShortcutInfo/input-tab-right": {
"title": "$:/config/ShortcutInfo/input-tab-right",
"text": "{{$:/language/Shortcuts/Input/Tab-Right/Hint}}"
},
"$:/config/ShortcutInfo/input-up": {
"title": "$:/config/ShortcutInfo/input-up",
"text": "{{$:/language/Shortcuts/Input/Up/Hint}}"
},
"$:/config/ShortcutInfo/italic": {
"title": "$:/config/ShortcutInfo/italic",
"text": "{{$:/language/Buttons/Italic/Hint}}"
},
"$:/config/ShortcutInfo/layout-switcher": {
"title": "$:/config/ShortcutInfo/layout-switcher",
"text": "{{$:/language/LayoutSwitcher/Description}}"
},
"$:/config/ShortcutInfo/link": {
"title": "$:/config/ShortcutInfo/link",
"text": "{{$:/language/Buttons/Link/Hint}}"
},
"$:/config/ShortcutInfo/linkify": {
"title": "$:/config/ShortcutInfo/linkify",
"text": "{{$:/language/Buttons/Linkify/Hint}}"
},
"$:/config/ShortcutInfo/list-bullet": {
"title": "$:/config/ShortcutInfo/list-bullet",
"text": "{{$:/language/Buttons/ListBullet/Hint}}"
},
"$:/config/ShortcutInfo/list-number": {
"title": "$:/config/ShortcutInfo/list-number",
"text": "{{$:/language/Buttons/ListNumber/Hint}}"
},
"$:/config/ShortcutInfo/mono-block": {
"title": "$:/config/ShortcutInfo/mono-block",
"text": "{{$:/language/Buttons/MonoBlock/Hint}}"
},
"$:/config/ShortcutInfo/mono-line": {
"title": "$:/config/ShortcutInfo/mono-line",
"text": "{{$:/language/Buttons/MonoLine/Hint}}"
},
"$:/config/ShortcutInfo/new-image": {
"title": "$:/config/ShortcutInfo/new-image",
"text": "{{$:/language/Buttons/NewImage/Hint}}"
},
"$:/config/ShortcutInfo/new-journal": {
"title": "$:/config/ShortcutInfo/new-journal",
"text": "{{$:/language/Buttons/NewJournal/Hint}}"
},
"$:/config/ShortcutInfo/new-tiddler": {
"title": "$:/config/ShortcutInfo/new-tiddler",
"text": "{{$:/language/Buttons/NewTiddler/Hint}}"
},
"$:/config/ShortcutInfo/picture": {
"title": "$:/config/ShortcutInfo/picture",
"text": "{{$:/language/Buttons/Picture/Hint}}"
},
"$:/config/ShortcutInfo/preview": {
"title": "$:/config/ShortcutInfo/preview",
"text": "{{$:/language/Buttons/Preview/Hint}}"
},
"$:/config/ShortcutInfo/quote": {
"title": "$:/config/ShortcutInfo/quote",
"text": "{{$:/language/Buttons/Quote/Hint}}"
},
"$:/config/ShortcutInfo/save-tiddler": {
"title": "$:/config/ShortcutInfo/save-tiddler",
"text": "{{$:/language/Buttons/Save/Hint}}"
},
"$:/config/ShortcutInfo/save-wiki": {
"title": "$:/config/ShortcutInfo/save-wiki",
"text": "{{$:/language/Buttons/SaveWiki/Hint}}"
},
"$:/config/ShortcutInfo/sidebar-search": {
"title": "$:/config/ShortcutInfo/sidebar-search",
"text": "{{$:/language/Buttons/SidebarSearch/Hint}}"
},
"$:/config/ShortcutInfo/stamp": {
"title": "$:/config/ShortcutInfo/stamp",
"text": "{{$:/language/Buttons/Stamp/Hint}}"
},
"$:/config/ShortcutInfo/strikethrough": {
"title": "$:/config/ShortcutInfo/strikethrough",
"text": "{{$:/language/Buttons/Strikethrough/Hint}}"
},
"$:/config/ShortcutInfo/subscript": {
"title": "$:/config/ShortcutInfo/subscript",
"text": "{{$:/language/Buttons/Subscript/Hint}}"
},
"$:/config/ShortcutInfo/superscript": {
"title": "$:/config/ShortcutInfo/superscript",
"text": "{{$:/language/Buttons/Superscript/Hint}}"
},
"$:/config/ShortcutInfo/toggle-sidebar": {
"title": "$:/config/ShortcutInfo/toggle-sidebar",
"text": "{{$:/language/Buttons/ToggleSidebar/Hint}}"
},
"$:/config/ShortcutInfo/transcludify": {
"title": "$:/config/ShortcutInfo/transcludify",
"text": "{{$:/language/Buttons/Transcludify/Hint}}"
},
"$:/config/ShortcutInfo/underline": {
"title": "$:/config/ShortcutInfo/underline",
"text": "{{$:/language/Buttons/Underline/Hint}}"
},
"$:/config/SwitcherTargets/layout": {
"title": "$:/config/SwitcherTargets/layout",
"text": "$:/snippets/LayoutSwitcher"
},
"$:/config/SwitcherTargets/language": {
"title": "$:/config/SwitcherTargets/language",
"text": "$:/snippets/languageswitcher"
},
"$:/config/SwitcherTargets/palette": {
"title": "$:/config/SwitcherTargets/palette",
"text": "$:/core/ui/ControlPanel/Palette"
},
"$:/config/SwitcherTargets/theme": {
"title": "$:/config/SwitcherTargets/theme",
"text": "$:/core/ui/ControlPanel/Theme"
},
"$:/config/SyncFilter": {
"title": "$:/config/SyncFilter",
"text": "[is[tiddler]] -[[$:/core]] -[[$:/library/sjcl.js]] -[prefix[$:/boot/]] -[prefix[$:/HistoryList]] -[status[pending]plugin-type[import]] -[[$:/isEncrypted]] -[prefix[$:/status/]] -[prefix[$:/state/]] -[prefix[$:/temp/]]\n"
},
"$:/config/SyncSystemTiddlersFromServer": {
"title": "$:/config/SyncSystemTiddlersFromServer",
"text": "no"
},
"$:/config/Tags/MinLength": {
"title": "$:/config/Tags/MinLength",
"text": "0"
},
"$:/config/TextEditor/EditorHeight/Height": {
"title": "$:/config/TextEditor/EditorHeight/Height",
"text": "400px"
},
"$:/config/TextEditor/EditorHeight/Mode": {
"title": "$:/config/TextEditor/EditorHeight/Mode",
"text": "auto"
},
"$:/config/TiddlerInfo/Default": {
"title": "$:/config/TiddlerInfo/Default",
"text": "$:/core/ui/TiddlerInfo/Fields"
},
"$:/config/TiddlerInfo/Mode": {
"title": "$:/config/TiddlerInfo/Mode",
"text": "popup"
},
"$:/config/Tiddlers/TitleLinks": {
"title": "$:/config/Tiddlers/TitleLinks",
"text": "no"
},
"$:/config/Toolbar/ButtonClass": {
"title": "$:/config/Toolbar/ButtonClass",
"text": "tc-btn-invisible"
},
"$:/config/Toolbar/Icons": {
"title": "$:/config/Toolbar/Icons",
"text": "yes"
},
"$:/config/Toolbar/Text": {
"title": "$:/config/Toolbar/Text",
"text": "no"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions",
"text": "show"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others",
"text": "hide"
},
"$:/config/shortcuts-mac/bold": {
"title": "$:/config/shortcuts-mac/bold",
"text": "meta-B"
},
"$:/config/shortcuts-mac/input-tab-left": {
"title": "$:/config/shortcuts-mac/input-tab-left",
"text": "ctrl-Left"
},
"$:/config/shortcuts-mac/input-tab-right": {
"title": "$:/config/shortcuts-mac/input-tab-right",
"text": "ctrl-Right"
},
"$:/config/shortcuts-mac/italic": {
"title": "$:/config/shortcuts-mac/italic",
"text": "meta-I"
},
"$:/config/shortcuts-mac/underline": {
"title": "$:/config/shortcuts-mac/underline",
"text": "meta-U"
},
"$:/config/shortcuts-mac/new-image": {
"title": "$:/config/shortcuts-mac/new-image",
"text": "ctrl-I"
},
"$:/config/shortcuts-mac/new-journal": {
"title": "$:/config/shortcuts-mac/new-journal",
"text": "ctrl-J"
},
"$:/config/shortcuts-mac/new-tiddler": {
"title": "$:/config/shortcuts-mac/new-tiddler",
"text": "ctrl-N"
},
"$:/config/shortcuts-mac/save-wiki": {
"title": "$:/config/shortcuts-mac/save-wiki",
"text": "meta-S"
},
"$:/config/shortcuts-not-mac/bold": {
"title": "$:/config/shortcuts-not-mac/bold",
"text": "ctrl-B"
},
"$:/config/shortcuts-not-mac/italic": {
"title": "$:/config/shortcuts-not-mac/italic",
"text": "ctrl-I"
},
"$:/config/shortcuts-not-mac/underline": {
"title": "$:/config/shortcuts-not-mac/underline",
"text": "ctrl-U"
},
"$:/config/shortcuts-not-mac/new-image": {
"title": "$:/config/shortcuts-not-mac/new-image",
"text": "alt-I"
},
"$:/config/shortcuts-not-mac/new-journal": {
"title": "$:/config/shortcuts-not-mac/new-journal",
"text": "alt-J"
},
"$:/config/shortcuts-not-mac/new-tiddler": {
"title": "$:/config/shortcuts-not-mac/new-tiddler",
"text": "alt-N"
},
"$:/config/shortcuts/add-field": {
"title": "$:/config/shortcuts/add-field",
"text": "enter"
},
"$:/config/shortcuts/advanced-search": {
"title": "$:/config/shortcuts/advanced-search",
"text": "ctrl-shift-A"
},
"$:/config/shortcuts/advanced-search-sidebar": {
"title": "$:/config/shortcuts/advanced-search-sidebar",
"text": "alt-Enter"
},
"$:/config/shortcuts/cancel-edit-tiddler": {
"title": "$:/config/shortcuts/cancel-edit-tiddler",
"text": "escape"
},
"$:/config/shortcuts/change-sidebar-layout": {
"title": "$:/config/shortcuts/change-sidebar-layout",
"text": "shift-alt-Down"
},
"$:/config/shortcuts/delete-field": {
"title": "$:/config/shortcuts/delete-field",
"text": "shift-alt-D"
},
"$:/config/shortcuts/excise": {
"title": "$:/config/shortcuts/excise",
"text": "ctrl-E"
},
"$:/config/shortcuts/sidebar-search": {
"title": "$:/config/shortcuts/sidebar-search",
"text": "ctrl-shift-F"
},
"$:/config/shortcuts/heading-1": {
"title": "$:/config/shortcuts/heading-1",
"text": "ctrl-1"
},
"$:/config/shortcuts/heading-2": {
"title": "$:/config/shortcuts/heading-2",
"text": "ctrl-2"
},
"$:/config/shortcuts/heading-3": {
"title": "$:/config/shortcuts/heading-3",
"text": "ctrl-3"
},
"$:/config/shortcuts/heading-4": {
"title": "$:/config/shortcuts/heading-4",
"text": "ctrl-4"
},
"$:/config/shortcuts/heading-5": {
"title": "$:/config/shortcuts/heading-5",
"text": "ctrl-5"
},
"$:/config/shortcuts/heading-6": {
"title": "$:/config/shortcuts/heading-6",
"text": "ctrl-6"
},
"$:/config/shortcuts/input-accept": {
"title": "$:/config/shortcuts/input-accept",
"text": "Enter"
},
"$:/config/shortcuts/input-accept-variant": {
"title": "$:/config/shortcuts/input-accept-variant",
"text": "ctrl-Enter"
},
"$:/config/shortcuts/input-cancel": {
"title": "$:/config/shortcuts/input-cancel",
"text": "Escape"
},
"$:/config/shortcuts/input-down": {
"title": "$:/config/shortcuts/input-down",
"text": "Down"
},
"$:/config/shortcuts/input-tab-left": {
"title": "$:/config/shortcuts/input-tab-left",
"text": "alt-Left"
},
"$:/config/shortcuts/input-tab-right": {
"title": "$:/config/shortcuts/input-tab-right",
"text": "alt-Right"
},
"$:/config/shortcuts/input-up": {
"title": "$:/config/shortcuts/input-up",
"text": "Up"
},
"$:/config/shortcuts/layout-switcher": {
"title": "$:/config/shortcuts/layout-switcher",
"text": "ctrl-shift-L"
},
"$:/config/shortcuts/link": {
"title": "$:/config/shortcuts/link",
"text": "ctrl-L"
},
"$:/config/shortcuts/linkify": {
"title": "$:/config/shortcuts/linkify",
"text": "alt-shift-L"
},
"$:/config/shortcuts/list-bullet": {
"title": "$:/config/shortcuts/list-bullet",
"text": "ctrl-shift-L"
},
"$:/config/shortcuts/list-number": {
"title": "$:/config/shortcuts/list-number",
"text": "ctrl-shift-N"
},
"$:/config/shortcuts/mono-block": {
"title": "$:/config/shortcuts/mono-block",
"text": "ctrl-shift-M"
},
"$:/config/shortcuts/mono-line": {
"title": "$:/config/shortcuts/mono-line",
"text": "ctrl-M"
},
"$:/config/shortcuts/picture": {
"title": "$:/config/shortcuts/picture",
"text": "ctrl-shift-I"
},
"$:/config/shortcuts/preview": {
"title": "$:/config/shortcuts/preview",
"text": "alt-P"
},
"$:/config/shortcuts/quote": {
"title": "$:/config/shortcuts/quote",
"text": "ctrl-Q"
},
"$:/config/shortcuts/save-tiddler": {
"title": "$:/config/shortcuts/save-tiddler",
"text": "ctrl+enter"
},
"$:/config/shortcuts/save-wiki": {
"title": "$:/config/shortcuts/save-wiki",
"text": "ctrl-S"
},
"$:/config/shortcuts/stamp": {
"title": "$:/config/shortcuts/stamp",
"text": "ctrl-S"
},
"$:/config/shortcuts/strikethrough": {
"title": "$:/config/shortcuts/strikethrough",
"text": "ctrl-T"
},
"$:/config/shortcuts/subscript": {
"title": "$:/config/shortcuts/subscript",
"text": "ctrl-shift-B"
},
"$:/config/shortcuts/superscript": {
"title": "$:/config/shortcuts/superscript",
"text": "ctrl-shift-P"
},
"$:/config/shortcuts/toggle-sidebar": {
"title": "$:/config/shortcuts/toggle-sidebar",
"text": "alt-shift-S"
},
"$:/config/shortcuts/transcludify": {
"title": "$:/config/shortcuts/transcludify",
"text": "alt-shift-T"
},
"$:/config/ui/EditTemplate": {
"title": "$:/config/ui/EditTemplate",
"text": "$:/core/ui/EditTemplate"
},
"$:/config/ui/ViewTemplate": {
"title": "$:/config/ui/ViewTemplate",
"text": "$:/core/ui/ViewTemplate"
},
"$:/config/WikiParserRules/Inline/wikilink": {
"title": "$:/config/WikiParserRules/Inline/wikilink",
"text": "enable"
},
"$:/snippets/currpalettepreview": {
"title": "$:/snippets/currpalettepreview",
"text": "\\define resolve-colour(macrocall)\n\\import $:/core/macros/utils\n\\whitespace trim\n<$wikify name=\"name\" text=\"\"\"$macrocall$\"\"\">\n<<name>>\n</$wikify>\n\\end\n\\define swatchStyle()\nbackground-color: $(swatchColour)$;\n\\end\n\\define swatch-inner()\n<$set name=\"swatchColour\" value={{##$(colourResolved)$}}>\n<$list filter=\"[<swatchColour>!prefix[<<colour ]!suffix[>>]]\" variable=\"ignore\">\n<div class=\"tc-swatch\" style=<<swatchStyle>> title=<<swatchTitle>>/>\n</$list>\n<$list filter=\"[<swatchColour>prefix[<<colour ]suffix[>>]]\" variable=\"ignore\">\n<$wikify name=\"colourResolved\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall=<<swatchColour>>/>\"\"\">\n<<swatch-inner>>\n</$wikify>\n</$list>\n</$set>\n\\end\n\\define swatch()\n<$set name=\"swatchColour\" value={{##$(colour)$}}>\n<$set name=\"swatchTitle\" value=<<colour>>>\n<$list filter=\"[<swatchColour>!prefix[<<colour ]!suffix[>>]]\" variable=\"ignore\">\n<div class=\"tc-swatch\" style=<<swatchStyle>> title=<<swatchTitle>>/>\n</$list>\n<$list filter=\"[<swatchColour>prefix[<<colour ]suffix[>>]]\" variable=\"ignore\">\n<$wikify name=\"colourResolved\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall=<<swatchColour>>/>\"\"\">\n<<swatch-inner>>\n</$wikify>\n</$list>\n</$set>\n</$set>\n\\end\n<div class=\"tc-swatches-horiz\"><$list filter=\"\nforeground\nbackground\nmuted-foreground\nprimary\npage-background\ntab-background\ntiddler-info-background\n\" variable=\"colour\"><<swatch>></$list></div>\n"
},
"$:/snippets/download-wiki-button": {
"title": "$:/snippets/download-wiki-button",
"text": "\\define lingo-base() $:/language/ControlPanel/Tools/Download/\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-download-file\" $param=\"$:/core/save/all\" filename=\"index.html\"/>\n<<lingo Full/Caption>> {{$:/core/images/save-button}}\n</$button>"
},
"$:/language": {
"title": "$:/language",
"text": "$:/languages/en-GB"
},
"$:/snippets/languageswitcher": {
"title": "$:/snippets/languageswitcher",
"text": "\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n\n<$linkcatcher to=\"$:/language\">\n<div class=\"tc-chooser tc-language-chooser\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[description]]\">\n<$set name=\"cls\" filter=\"[all[current]field:title{$:/language}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>>\n<$link>\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value=<<currentTiddler>>>\n<$transclude subtiddler=<<flag-title>>>\n<$list filter=\"[all[current]field:title[$:/languages/en-GB]]\">\n<$transclude tiddler=\"$:/languages/en-GB/icon\"/>\n</$list>\n</$transclude>\n</$set>\n</span>\n<$view field=\"description\">\n<$view field=\"name\">\n<$view field=\"title\"/>\n</$view>\n</$view>\n</$link>\n</div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
},
"$:/core/macros/CSS": {
"title": "$:/core/macros/CSS",
"tags": "$:/tags/Macro",
"text": "\\define colour(name)\n<$transclude tiddler={{$:/palette}} index=\"$name$\"><$transclude tiddler=\"$:/palettes/Vanilla\" index=\"$name$\"><$transclude tiddler=\"$:/config/DefaultColourMappings/$name$\"/></$transclude></$transclude>\n\\end\n\n\\define color(name)\n<<colour $name$>>\n\\end\n\n\\define box-shadow(shadow)\n``\n -webkit-box-shadow: $shadow$;\n -moz-box-shadow: $shadow$;\n box-shadow: $shadow$;\n``\n\\end\n\n\\define filter(filter)\n``\n -webkit-filter: $filter$;\n -moz-filter: $filter$;\n filter: $filter$;\n``\n\\end\n\n\\define transition(transition)\n``\n -webkit-transition: $transition$;\n -moz-transition: $transition$;\n transition: $transition$;\n``\n\\end\n\n\\define transform-origin(origin)\n``\n -webkit-transform-origin: $origin$;\n -moz-transform-origin: $origin$;\n transform-origin: $origin$;\n``\n\\end\n\n\\define background-linear-gradient(gradient)\n``\nbackground-image: linear-gradient($gradient$);\nbackground-image: -o-linear-gradient($gradient$);\nbackground-image: -moz-linear-gradient($gradient$);\nbackground-image: -webkit-linear-gradient($gradient$);\nbackground-image: -ms-linear-gradient($gradient$);\n``\n\\end\n\n\\define column-count(columns)\n``\n-moz-column-count: $columns$;\n-webkit-column-count: $columns$;\ncolumn-count: $columns$;\n``\n\\end\n\n\\define datauri(title)\n<$macrocall $name=\"makedatauri\" type={{$title$!!type}} text={{$title$}} _canonical_uri={{$title$!!_canonical_uri}}/>\n\\end\n\n\\define if-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-no-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-background-attachment(text)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" type=\"nomatch\" text=\"\">$text$</$reveal>\n\\end\n"
},
"$:/core/macros/colour-picker": {
"title": "$:/core/macros/colour-picker",
"tags": "$:/tags/Macro",
"text": "\\define colour-picker-update-recent()\n<$action-listops\n\t$tiddler=\"$:/config/ColourPicker/Recent\"\n\t$subfilter=\"$(colour-picker-value)$ [list[$:/config/ColourPicker/Recent]remove[$(colour-picker-value)$]] +[limit[8]]\"\n/>\n\\end\n\n\\define colour-picker-inner(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(colour-picker-value)$\"\"\">\n\n$(colour-picker-update-recent)$\n\n$actions$\n\n<span style=\"display:inline-block; background-color: $(colour-picker-value)$; width: 100%; height: 100%; border-radius: 50%;\"/>\n\n</$button>\n\\end\n\n\\define colour-picker-recent-inner(actions)\n<$set name=\"colour-picker-value\" value=\"$(recentColour)$\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\\end\n\n\\define colour-picker-recent(actions)\n{{$:/language/ColourPicker/Recent}} <$list filter=\"[list[$:/config/ColourPicker/Recent]]\" variable=\"recentColour\">\n<$macrocall $name=\"colour-picker-recent-inner\" actions=\"\"\"$actions$\"\"\"/></$list>\n\\end\n\n\\define colour-picker(actions)\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker-recent\" actions=\"\"\"$actions$\"\"\"/>\n\n---\n\n<$list filter=\"LightPink Pink Crimson LavenderBlush PaleVioletRed HotPink DeepPink MediumVioletRed Orchid Thistle Plum Violet Magenta Fuchsia DarkMagenta Purple MediumOrchid DarkViolet DarkOrchid Indigo BlueViolet MediumPurple MediumSlateBlue SlateBlue DarkSlateBlue Lavender GhostWhite Blue MediumBlue MidnightBlue DarkBlue Navy RoyalBlue CornflowerBlue LightSteelBlue LightSlateGrey SlateGrey DodgerBlue AliceBlue SteelBlue LightSkyBlue SkyBlue DeepSkyBlue LightBlue PowderBlue CadetBlue Azure LightCyan PaleTurquoise Cyan Aqua DarkTurquoise DarkSlateGrey DarkCyan Teal MediumTurquoise LightSeaGreen Turquoise Aquamarine MediumAquamarine MediumSpringGreen MintCream SpringGreen MediumSeaGreen SeaGreen Honeydew LightGreen PaleGreen DarkSeaGreen LimeGreen Lime ForestGreen Green DarkGreen Chartreuse LawnGreen GreenYellow DarkOliveGreen YellowGreen OliveDrab Beige LightGoldenrodYellow Ivory LightYellow Yellow Olive DarkKhaki LemonChiffon PaleGoldenrod Khaki Gold Cornsilk Goldenrod DarkGoldenrod FloralWhite OldLace Wheat Moccasin Orange PapayaWhip BlanchedAlmond NavajoWhite AntiqueWhite Tan BurlyWood Bisque DarkOrange Linen Peru PeachPuff SandyBrown Chocolate SaddleBrown Seashell Sienna LightSalmon Coral OrangeRed DarkSalmon Tomato MistyRose Salmon Snow LightCoral RosyBrown IndianRed Red Brown FireBrick DarkRed Maroon White WhiteSmoke Gainsboro LightGrey Silver DarkGrey Grey DimGrey Black\" variable=\"colour-picker-value\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\n---\n\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" tag=\"input\" default=\"\" placeholder=\"\"/>\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" type=\"color\" tag=\"input\"/>\n<$set name=\"colour-picker-value\" value={{$:/config/ColourPicker/New}}>\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\n</div>\n\n\\end\n"
},
"$:/core/macros/copy-to-clipboard": {
"title": "$:/core/macros/copy-to-clipboard",
"tags": "$:/tags/Macro",
"text": "\\define copy-to-clipboard(src,class:\"tc-btn-invisible\",style)\n<$button class=<<__class__>> style=<<__style__>> message=\"tm-copy-to-clipboard\" param=<<__src__>> tooltip={{$:/language/Buttons/CopyToClipboard/Hint}}>\n{{$:/core/images/copy-clipboard}} <$text text={{$:/language/Buttons/CopyToClipboard/Caption}}/>\n</$button>\n\\end\n\n\\define copy-to-clipboard-above-right(src,class:\"tc-btn-invisible\",style)\n<div style=\"position: relative;\">\n<div style=\"position: absolute; bottom: 0; right: 0;\">\n<$macrocall $name=\"copy-to-clipboard\" src=<<__src__>> class=<<__class__>> style=<<__style__>>/>\n</div>\n</div>\n\\end\n\n"
},
"$:/core/macros/diff": {
"title": "$:/core/macros/diff",
"tags": "$:/tags/Macro",
"text": "\\define compareTiddlerText(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle)\n<$set name=\"source\" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>>>\n<$set name=\"dest\" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>>>\n<$diff-text source=<<source>> dest=<<dest>>/>\n</$set>\n</$set>\n\\end\n\n\\define compareTiddlers(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle,exclude)\n<table class=\"tc-diff-tiddlers\">\n<tbody>\n<$set name=\"sourceFields\" filter=\"[<__sourceTiddlerTitle__>fields[]sort[]]\">\n<$set name=\"destFields\" filter=\"[<__destSubTiddlerTitle__>subtiddlerfields<__destTiddlerTitle__>sort[]]\">\n<$list filter=\"[enlist<sourceFields>] [enlist<destFields>] -[enlist<__exclude__>] +[sort[]]\" variable=\"fieldName\">\n<tr>\n<th>\n<$text text=<<fieldName>>/> \n</th>\n<td>\n<$set name=\"source\" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>> field=<<fieldName>>>\n<$set name=\"dest\" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>> field=<<fieldName>>>\n<$diff-text source=<<source>> dest=<<dest>>>\n</$diff-text>\n</$set>\n</$set>\n</td>\n</tr>\n</$list>\n</$set>\n</$set>\n</tbody>\n</table>\n\\end\n"
},
"$:/core/macros/dumpvariables": {
"title": "$:/core/macros/dumpvariables",
"tags": "$:/tags/Macro",
"text": "\\define dumpvariables()\n<ul>\n<$list filter=\"[variables[]]\" variable=\"varname\">\n<li>\n<strong><code><$text text=<<varname>>/></code></strong>:<br/>\n<$codeblock code={{{ [<varname>getvariable[]] }}}/>\n</li>\n</$list>\n</ul>\n\\end\n"
},
"$:/core/macros/export": {
"title": "$:/core/macros/export",
"tags": "$:/tags/Macro",
"text": "\\define exportButtonFilename(baseFilename)\n$baseFilename$$(extension)$\n\\end\n\n\\define exportButton(exportFilter:\"[!is[system]sort[title]]\",lingoBase,baseFilename:\"tiddlers\")\n<span class=\"tc-popup-keep\"><$button popup=<<qualify \"$:/state/popup/export\">> tooltip={{$lingoBase$Hint}} aria-label={{$lingoBase$Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/export-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$lingoBase$Caption}}/></span>\n</$list>\n</$button></span><$reveal state=<<qualify \"$:/state/popup/export\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$set name=\"count\" value={{{ [subfilter<__exportFilter__>count[]] }}}>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Exporter]]\">\n<$list filter=\"[<currentTiddler>has[condition]subfilter{!!condition}limit[1]] ~[<currentTiddler>!has[condition]then[true]]\" variable=\"ignore\">\n<$set name=\"extension\" value={{!!extension}}>\n<$button class=\"tc-btn-invisible\">\n<$action-sendmessage $message=\"tm-download-file\" $param=<<currentTiddler>> exportFilter=<<__exportFilter__>> filename=<<exportButtonFilename \"\"\"$baseFilename$\"\"\">>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/export\">>/>\n<$transclude field=\"description\"/>\n</$button>\n</$set>\n</$list>\n</$list>\n</$set>\n</div>\n</$reveal>\n\\end\n"
},
"$:/core/macros/image-picker": {
"title": "$:/core/macros/image-picker",
"created": "20170715180840889",
"modified": "20170715180914005",
"tags": "$:/tags/Macro",
"type": "text/vnd.tiddlywiki",
"text": "\\define image-picker-thumbnail(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(imageTitle)$\"\"\">\n$actions$\n<$transclude tiddler=<<imageTitle>>/>\n</$button>\n\\end\n\n\\define image-picker-list(filter,actions)\n<$list filter=\"\"\"$filter$\"\"\" variable=\"imageTitle\">\n<$macrocall $name=\"image-picker-thumbnail\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\\end\n\n\\define image-picker(actions,filter:\"[all[shadows+tiddlers]is[image]] -[type[application/pdf]] +[!has[draft.of]$subfilter$sort[title]]\",subfilter:\"\")\n<div class=\"tc-image-chooser\">\n<$vars state-system=<<qualify \"$:/state/image-picker/system\">>>\n<$checkbox tiddler=<<state-system>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"hide\">\n{{$:/language/SystemTiddlers/Include/Prompt}}\n</$checkbox>\n<$reveal state=<<state-system>> type=\"match\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$ +[!is[system]]\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n<$reveal state=<<state-system>> type=\"nomatch\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n</$vars>\n</div>\n\\end\n\n\\define image-picker-include-tagged-images(actions)\n<$macrocall $name=\"image-picker\" filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[!has[draft.of]sort[title]]\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n"
},
"$:/core/macros/keyboard-driven-input": {
"title": "$:/core/macros/keyboard-driven-input",
"tags": "$:/tags/Macro",
"text": "\\define change-input-tab(stateTitle,tag,beforeafter,defaultState,actions)\n<$set name=\"tabsList\" filter=\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]]\">\n<$vars currentState={{{ [<__stateTitle__>!is[missing]get[text]] ~[<__defaultState__>] }}} firstTab={{{ [enlist<tabsList>nth[1]] }}} lastTab={{{ [enlist<tabsList>last[]] }}}>\n<$set name=\"nextTab\" value={{{ [all[shadows+tiddlers]tag<__tag__>!has[draft.of]$beforeafter$<currentState>] ~[[$beforeafter$]removeprefix[after]suffix[]addprefix<firstTab>] ~[[$beforeafter$]removeprefix[before]suffix[]addprefix<lastTab>] }}}>\n<$action-setfield $tiddler=<<__stateTitle__>> text=<<nextTab>>/>\n$actions$\n</$set>\n</$vars>\n</$set>\n\\end\n\n\\define keyboard-input-actions()\n<$list filter=\"[<__index__>match[]]\">\n<$action-setfield $tiddler=<<__storeTitle__>> text={{{ [<__tiddler__>get<__field__>] }}}/>\n</$list>\n<$list filter=\"[<__index__>!match[]]\">\n<$action-setfield $tiddler=<<__storeTitle__>> text={{{ [<__tiddler__>getindex<__index__>] }}}/>\n</$list>\n\\end\n\n\\define input-next-actions-inner()\n<$list filter=\"[<nextItem>minlength[1]]\" variable=\"ignore\">\n<$action-setfield $tiddler=<<__selectionStateTitle__>> text=<<nextItem>>/>\n<$list filter=\"[<__index__>match[]]\">\n<$action-setfield $tiddler=<<__tiddler__>> $field=<<__field__>> $value={{{ [<nextItem>] +[splitregexp[(?:.(?!-))+$]] }}}/>\n</$list>\n<$list filter=\"[<__index__>!match[]]\">\n<$action-setfield $tiddler=<<__tiddler__>> $index=<<__index__>> $value={{{ [<nextItem>] +[splitregexp[(?:.(?!-))+$]] }}}/>\n</$list>\n<$action-setfield $tiddler=<<__refreshTitle__>> text=\"yes\"/>\n</$list>\n\\end\n\n\\define input-next-actions(afterOrBefore:\"after\",reverse:\"\")\n<$list filter=\"[<__storeTitle__>get[text]minlength<__filterMinLength__>] [<__filterMinLength__>match[0]] +[limit[1]]\" variable=\"ignore\">\n<$vars userInput={{{ [<__storeTitle__>get[text]] }}} selectedItem={{{ [<__selectionStateTitle__>get[text]] }}}>\n<$set name=\"configTiddler\" value={{{ [subfilter<__configTiddlerFilter__>] }}}>\n<$vars primaryListFilter={{{ [<configTiddler>get<__firstSearchFilterField__>] }}} secondaryListFilter={{{ [<configTiddler>get<__secondSearchFilterField__>] }}}>\n<$set name=\"filteredList\" filter=\"[subfilter<primaryListFilter>addsuffix[-primaryList]] =[subfilter<secondaryListFilter>addsuffix[-secondaryList]]\">\n<$vars nextItem={{{ [enlist<filteredList>$afterOrBefore$<selectedItem>] ~[enlist<filteredList>$reverse$nth[1]] }}} firstItem={{{ [enlist<filteredList>nth[1]] }}} lastItem={{{ [enlist<filteredList>last[]] }}}>\n<$list filter=\"[<selectedItem>match<firstItem>!match<lastItem>]\" variable=\"ignore\">\n<$set name=\"nextItem\" value={{{ [[$afterOrBefore$]match[before]then<userInput>addsuffix[-userInput]] ~[<nextItem>] }}}>\n<<input-next-actions-inner>>\n</$set>\n</$list>\n<$list filter=\"[<selectedItem>match<lastItem>!match<firstItem>]\" variable=\"ignore\">\n<$set name=\"nextItem\" value={{{ [[$afterOrBefore$]match[after]then<userInput>addsuffix[-userInput]] ~[<nextItem>] }}}>\n<<input-next-actions-inner>>\n</$set>\n</$list>\n<$list filter=\"[<selectedItem>match<firstItem>match<lastItem>]\" variable=\"ignore\">\n<$set name=\"nextItem\" value={{{ [<userInput>addsuffix[-userInput]] }}}>\n<<input-next-actions-inner>>\n</$set>\n</$list>\n<$list filter=\"[<selectedItem>!match<firstItem>!match<lastItem>]\" variable=\"ignore\">\n<<input-next-actions-inner>>\n</$list>\n</$vars>\n</$set>\n</$vars>\n</$set>\n</$vars>\n</$list>\n\\end\n\n\\define keyboard-driven-input(tiddler,storeTitle,field:\"text\",index:\"\",tag:\"input\",type,focus:\"\",inputAcceptActions,inputAcceptVariantActions,inputCancelActions,placeholder:\"\",default:\"\",class,focusPopup,rows,minHeight,tabindex,size,autoHeight,filterMinLength:\"0\",refreshTitle,selectionStateTitle,cancelPopups:\"\",configTiddlerFilter,firstSearchFilterField:\"first-search-filter\",secondSearchFilterField:\"second-search-filter\")\n\\whitespace trim\n<$keyboard key=\"((input-accept))\" actions=<<__inputAcceptActions__>>>\n<$keyboard key=\"((input-accept-variant))\" actions=<<__inputAcceptVariantActions__>>>\n<$keyboard key=\"((input-up))\" actions=<<input-next-actions \"before\" \"reverse[]\">>>\n<$keyboard key=\"((input-down))\" actions=<<input-next-actions>>>\n<$keyboard key=\"((input-cancel))\" actions=<<__inputCancelActions__>>>\n<$edit-text tiddler=<<__tiddler__>> field=<<__field__>> index=<<__index__>> \n\t\tinputActions=<<keyboard-input-actions>> tag=<<__tag__>> class=<<__class__>> \n\t\tplaceholder=<<__placeholder__>> default=<<__default__>> focusPopup=<<__focusPopup__>> \n\t\tfocus=<<__focus__>> type=<<__type__>> rows=<<__rows__>> minHeight=<<__minHeight__>> \n\t\ttabindex=<<__tabindex__>> size=<<__size__>> autoHeight=<<__autoHeight__>> \n\t\trefreshTitle=<<__refreshTitle__>> cancelPopups=<<__cancelPopups__>>/>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n\\end\n"
},
"$:/core/macros/lingo": {
"title": "$:/core/macros/lingo",
"tags": "$:/tags/Macro",
"text": "\\define lingo-base()\n$:/language/\n\\end\n\n\\define lingo(title)\n{{$(lingo-base)$$title$}}\n\\end\n"
},
"$:/core/macros/list": {
"title": "$:/core/macros/list",
"tags": "$:/tags/Macro",
"text": "\\define list-links(filter,type:\"ul\",subtype:\"li\",class:\"\",emptyMessage)\n\\whitespace trim\n<$type$ class=\"$class$\">\n<$list filter=\"$filter$\" emptyMessage=<<__emptyMessage__>>>\n<$subtype$>\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$subtype$>\n</$list>\n</$type$>\n\\end\n\n\\define list-links-draggable-drop-actions()\n<$action-listops $tiddler=<<targetTiddler>> $field=<<targetField>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define list-links-draggable(tiddler,field:\"list\",type:\"ul\",subtype:\"li\",class:\"\",itemTemplate)\n\\whitespace trim\n<span class=\"tc-links-draggable-list\">\n<$vars targetTiddler=\"\"\"$tiddler$\"\"\" targetField=\"\"\"$field$\"\"\">\n<$type$ class=\"$class$\">\n<$list filter=\"[list[$tiddler$!!$field$]]\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"\"\"$subtype$\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<div class=\"tc-droppable-placeholder\"/>\n<div>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$transclude>\n</div>\n</$droppable>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"div\" enable=<<tv-enable-drag-and-drop>>>\n<div class=\"tc-droppable-placeholder\">\n{{$:/core/images/blank}}\n</div>\n<div style=\"height:0.5em;\"/>\n</$droppable>\n</$tiddler>\n</$type$>\n</$vars>\n</span>\n\\end\n\n\\define list-tagged-draggable-drop-actions(tag)\n<!-- Save the current ordering of the tiddlers with this tag -->\n<$set name=\"order\" filter=\"[<__tag__>tagging[]]\">\n<!-- Remove any list-after or list-before fields from the tiddlers with this tag -->\n<$list filter=\"[<__tag__>tagging[]]\">\n<$action-deletefield $field=\"list-before\"/>\n<$action-deletefield $field=\"list-after\"/>\n</$list>\n<!-- Save the new order to the Tag Tiddler -->\n<$action-listops $tiddler=<<__tag__>> $field=\"list\" $filter=\"+[enlist<order>] +[insertbefore:currentTiddler<actionTiddler>]\"/>\n<!-- Make sure the newly added item has the right tag -->\n<!-- Removing this line makes dragging tags within the dropdown work as intended -->\n<!--<$action-listops $tiddler=<<actionTiddler>> $tags=<<__tag__>>/>-->\n<!-- Using the following 5 lines as replacement makes dragging titles from outside into the dropdown apply the tag -->\n<$list filter=\"[<actionTiddler>!contains:tags<__tag__>]\">\n<$fieldmangler tiddler=<<actionTiddler>>>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<__tag__>>/>\n</$fieldmangler>\n</$list>\n</$set>\n\\end\n\n\\define list-tagged-draggable(tag,subFilter,emptyMessage,itemTemplate,elementTag:\"div\",storyview:\"\")\n\\whitespace trim\n<span class=\"tc-tagged-draggable-list\">\n<$set name=\"tag\" value=<<__tag__>>>\n<$list filter=\"[<__tag__>tagging[]$subFilter$]\" emptyMessage=<<__emptyMessage__>> storyview=<<__storyview__>>>\n<$elementTag$ class=\"tc-menu-list-item\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<$elementTag$ class=\"tc-droppable-placeholder\"/>\n<$elementTag$>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</$transclude>\n</$elementTag$>\n</$droppable>\n</$elementTag$>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<$elementTag$ class=\"tc-droppable-placeholder\"/>\n<$elementTag$ style=\"height:0.5em;\">\n</$elementTag$>\n</$droppable>\n</$tiddler>\n</$set>\n</span>\n\\end\n"
},
"$:/core/macros/tabs": {
"title": "$:/core/macros/tabs",
"tags": "$:/tags/Macro",
"text": "\\define tabs(tabsList,default,state:\"$:/state/tab\",class,template,buttonTemplate,retain,actions,explicitState)\n<$set name=\"qualifiedState\" value=<<qualify \"$state$\">>>\n<$vars tabsState={{{ [<__explicitState__>minlength[1]] ~[<qualifiedState>] }}}>\n<div class=\"tc-tab-set $class$\">\n<div class=\"tc-tab-buttons $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\" storyview=\"pop\"><$set name=\"save-currentTiddler\" value=<<currentTiddler>>><$tiddler tiddler=<<currentTab>>><$button set=<<tabsState>> setTo=<<currentTab>> default=\"$default$\" selectedClass=\"tc-tab-selected\" tooltip={{!!tooltip}}>\n<$tiddler tiddler=<<save-currentTiddler>>>\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude tiddler=\"$buttonTemplate$\" mode=\"inline\">\n<$transclude tiddler=<<currentTab>> field=\"caption\">\n<$macrocall $name=\"currentTab\" $type=\"text/plain\" $output=\"text/plain\"/>\n</$transclude>\n</$transclude>\n</$set></$tiddler>$actions$</$button></$tiddler></$set></$list>\n</div>\n<div class=\"tc-tab-divider $class$\"/>\n<div class=\"tc-tab-content $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\">\n\n<$reveal type=\"match\" state=<<tabsState>> text=<<currentTab>> default=\"$default$\" retain=\"\"\"$retain$\"\"\">\n\n<$transclude tiddler=\"$template$\" mode=\"block\">\n\n<$transclude tiddler=<<currentTab>> mode=\"block\"/>\n\n</$transclude>\n\n</$reveal>\n\n</$list>\n</div>\n</div>\n</$vars>\n</$set>\n\\end\n"
},
"$:/core/macros/tag-picker": {
"title": "$:/core/macros/tag-picker",
"tags": "$:/tags/Macro",
"first-search-filter": "[tags[]!is[system]search:title<userInput>sort[]]",
"second-search-filter": "[tags[]is[system]search:title<userInput>sort[]]",
"text": "\\define get-tagpicker-focus-selector() [data-tiddler-title=\"$(currentTiddlerCSSEscaped)$\"] .tc-add-tag-name input\n\n\\define delete-tag-state-tiddlers() <$action-deletetiddler $filter=\"[<newTagNameTiddler>] [<storeTitle>] [<tagSelectionState>]\"/>\n\n\\define add-tag-actions(actions,tagField:\"tags\")\n<$set name=\"tag\" value={{{ [<__tiddler__>get[text]] }}}>\n<$list filter=\"[<saveTiddler>!contains:$tagField$<tag>!match[]]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"-[<tag>]\"/>\n\"\"\">\n<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"[<tag>]\"/>\n$actions$\n</$list>\n</$set>\n<<delete-tag-state-tiddlers>>\n<$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n\\end\n\n\\define clear-tags-actions-inner()\n<$list filter=\"[<storeTitle>has[text]] [<newTagNameTiddler>has[text]]\" variable=\"ignore\" emptyMessage=\"\"\"<<cancel-delete-tiddler-actions \"cancel\">>\"\"\">\n<<delete-tag-state-tiddlers>>\n</$list>\n\\end\n\n\\define clear-tags-actions()\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[<newTagNameTiddler>get[text]!match<userInput>]\" emptyMessage=\"\"\"<<clear-tags-actions-inner>>\"\"\">\n<$action-setfield $tiddler=<<newTagNameTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n</$list>\n</$set>\n\\end\n\n\\define tag-picker-inner(actions,tagField:\"tags\")\n\\whitespace trim\n<$vars newTagNameInputTiddlerQualified=<<qualify \"$:/temp/NewTagName/input\">> newTagNameSelectionTiddlerQualified=<<qualify \"$:/temp/NewTagName/selected-item\">> fallbackTarget={{$(palette)$##tag-background}} colourA={{$(palette)$##foreground}} colourB={{$(palette)$##background}}>\n<$vars storeTitle={{{ [<newTagNameInputTiddler>!match[]] ~[<newTagNameInputTiddlerQualified>] }}} tagSelectionState={{{ [<newTagNameSelectionTiddler>!match[]] ~[<newTagNameSelectionTiddlerQualified>] }}}>\n<$vars refreshTitle=<<qualify \"$:/temp/NewTagName/refresh\">> nonSystemTagsFilter=\"[tags[]!is[system]search:title<userInput>sort[]]\" systemTagsFilter=\"[tags[]is[system]search:title<userInput>sort[]]\">\n<div class=\"tc-edit-add-tag\">\n<div>\n<span class=\"tc-add-tag-name tc-small-gap-right\">\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<newTagNameTiddler>> storeTitle=<<storeTitle>> refreshTitle=<<refreshTitle>>\n\t\tselectionStateTitle=<<tagSelectionState>> inputAcceptActions=\"\"\"<$macrocall $name=\"add-tag-actions\" actions=<<__actions__>> tagField=<<__tagField__>>/>\"\"\"\n\t\tinputCancelActions=<<clear-tags-actions>> tag=\"input\" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}}\n\t\tfocusPopup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-edit-texteditor tc-popup-handle\" tabindex=<<tabIndex>> \n\t\tfocus={{{ [{$:/config/AutoFocus}match[tags]then[true]] ~[[false]] }}} filterMinLength={{$:/config/Tags/MinLength}} \n\t\tcancelPopups=<<cancelPopups>> configTiddlerFilter=\"[[$:/core/macros/tag-picker]]\"/>\n</span><$button popup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button><$reveal state=<<storeTitle>> type=\"nomatch\" text=\"\"><$button class=\"tc-btn-invisible tc-small-gap tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Tags/ClearInput/Hint}} aria-label={{$:/language/EditTemplate/Tags/ClearInput/Caption}}>{{$:/core/images/close-button}}<<delete-tag-state-tiddlers>></$button></$reveal><span class=\"tc-add-tag-button tc-small-gap-left\">\n<$set name=\"tag\" value={{{ [<newTagNameTiddler>get[text]] }}}>\n<$button set=<<newTagNameTiddler>> setTo=\"\" class=\"\">\n<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"[<tag>]\"/>\n$actions$\n<$set name=\"currentTiddlerCSSEscaped\" value={{{ [<saveTiddler>escapecss[]] }}}>\n<<delete-tag-state-tiddlers>><$action-sendmessage $message=\"tm-focus-selector\" $param=<<get-tagpicker-focus-selector>>/>\n</$set>\n{{$:/language/EditTemplate/Tags/Add/Button}}\n</$button>\n</$set>\n</span>\n</div>\n<div class=\"tc-block-dropdown-wrapper\">\n<$reveal state=<<qualify \"$:/state/popup/tags-auto-complete\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-block-tags-dropdown\">\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[<userInput>minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=<<nonSystemTagsFilter>> variable=\"tag\">\n<$list filter=\"[<tag>addsuffix[-primaryList]] -[<tagSelectionState>get[text]]\" emptyMessage=\"\"\"<$vars button-classes=\"tc-btn-invisible tc-tag-button-selected\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\"\"\">\n<$vars button-classes=\"tc-btn-invisible\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\n</$list>\n</$list></$list>\n<hr>\n<$list filter=\"[<userInput>minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=<<systemTagsFilter>> variable=\"tag\">\n<$list filter=\"[<tag>addsuffix[-secondaryList]] -[<tagSelectionState>get[text]]\" emptyMessage=\"\"\"<$vars button-classes=\"tc-btn-invisible tc-tag-button-selected\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\"\"\">\n<$vars button-classes=\"tc-btn-invisible\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\n</$list>\n</$list></$list>\n</$set>\n</div>\n</$reveal>\n</div>\n</div>\n</$vars>\n</$vars>\n</$vars>\n\\end\n\\define tag-picker(actions,tagField:\"tags\")\n\\whitespace trim\n<$vars saveTiddler=<<currentTiddler>> palette={{$:/palette}}>\n<$list filter=\"[<newTagNameTiddler>match[]]\" emptyMessage=\"\"\"<$macrocall $name=\"tag-picker-inner\" actions=<<__actions__>> tagField=<<__tagField__>>/>\"\"\">\n<$set name=\"newTagNameTiddler\" value=<<qualify \"$:/temp/NewTagName\">>>\n<$macrocall $name=\"tag-picker-inner\" actions=<<__actions__>> tagField=<<__tagField__>>/>\n</$set>\n</$list>\n</$vars>\n\\end\n"
},
"$:/core/macros/tag": {
"title": "$:/core/macros/tag",
"tags": "$:/tags/Macro",
"text": "\\define tag-pill-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-pill-inner(tag,icon,colour,fallbackTarget,colourA,colourB,element-tag,element-attributes,actions)\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<$element-tag$ $element-attributes$ class=\"tc-tag-label tc-btn-invisible\" style=<<tag-pill-styles>>>\n$actions$<$transclude tiddler=\"\"\"$icon$\"\"\"/><$view tiddler=<<__tag__>> field=\"title\" format=\"text\" />\n</$element-tag$>\n</$vars>\n\\end\n\n\\define tag-pill-body(tag,icon,colour,palette,element-tag,element-attributes,actions)\n<$macrocall $name=\"tag-pill-inner\" tag=<<__tag__>> icon=\"\"\"$icon$\"\"\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n\n\\define tag-pill(tag,element-tag:\"span\",element-attributes:\"\",actions:\"\")\n<span class=\"tc-tag-list-item\">\n<$macrocall $name=\"tag-pill-body\" tag=<<__tag__>> icon={{{ [<__tag__>get[icon]] }}} colour={{{ [<__tag__>get[color]] }}} palette={{$:/palette}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</span>\n\\end\n\n\\define tag(tag)\n{{$tag$||$:/core/ui/TagTemplate}}\n\\end\n"
},
"$:/core/macros/thumbnails": {
"title": "$:/core/macros/thumbnails",
"tags": "$:/tags/Macro",
"text": "\\define thumbnail(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<$link to=\"\"\"$link$\"\"\"><div class=\"tc-thumbnail-wrapper\">\n<div class=\"tc-thumbnail-image\" style=\"width:$width$px;height:$height$px;\"><$reveal type=\"nomatch\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" style=\"width:$width$px;height:$height$px;\">\n[img[$image$]]\n</$reveal><$reveal type=\"match\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" class=\"tc-thumbnail-background\" style=\"width:$width$px;height:$height$px;background-color:$background-color$;\"></$reveal></div><div class=\"tc-thumbnail-icon\" style=\"fill:$color$;color:$color$;\">\n$icon$\n</div><div class=\"tc-thumbnail-caption\">\n$caption$\n</div>\n</div></$link>\n\\end\n\n\\define thumbnail-right(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<div class=\"tc-thumbnail-right-wrapper\"><<thumbnail \"\"\"$link$\"\"\" \"\"\"$icon$\"\"\" \"\"\"$color$\"\"\" \"\"\"$background-color$\"\"\" \"\"\"$image$\"\"\" \"\"\"$caption$\"\"\" \"\"\"$width$\"\"\" \"\"\"$height$\"\"\">></div>\n\\end\n\n\\define list-thumbnails(filter,width:\"280\",height:\"157\")\n<$list filter=\"\"\"$filter$\"\"\"><$macrocall $name=\"thumbnail\" link={{!!link}} icon={{!!icon}} color={{!!color}} background-color={{!!background-color}} image={{!!image}} caption={{!!caption}} width=\"\"\"$width$\"\"\" height=\"\"\"$height$\"\"\"/></$list>\n\\end\n"
},
"$:/core/macros/timeline": {
"title": "$:/core/macros/timeline",
"created": "20141212105914482",
"modified": "20141212110330815",
"tags": "$:/tags/Macro",
"text": "\\define timeline-title()\n\\whitespace trim\n<!-- Override this macro with a global macro \n of the same name if you need to change \n how titles are displayed on the timeline \n -->\n<$view field=\"title\"/>\n\\end\n\\define timeline(limit:\"100\",format:\"DDth MMM YYYY\",subfilter:\"\",dateField:\"modified\")\n<div class=\"tc-timeline\">\n<$list filter=\"[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]\">\n<div class=\"tc-menu-list-item\">\n<$view field=\"$dateField$\" format=\"date\" template=\"$format$\"/>\n<$list filter=\"[sameday:$dateField${!!$dateField$}!is[system]$subfilter$!sort[$dateField$]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}><<timeline-title>></$link>\n</div>\n</$list>\n</div>\n</$list>\n</div>\n\\end\n"
},
"$:/core/macros/toc": {
"title": "$:/core/macros/toc",
"tags": "$:/tags/Macro",
"text": "\\define toc-caption()\n<$set name=\"tv-wikilinks\" value=\"no\">\n <$transclude field=\"caption\">\n <$view field=\"title\"/>\n </$transclude>\n</$set>\n\\end\n\n\\define toc-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<ol class=\"tc-toc\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n <$vars item=<<currentTiddler>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=\"<$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}><$view field='caption'><$view field='title'/></$view></$link>\">\n <<toc-caption>>\n </$list>\n <$macrocall $name=\"toc-body\" tag=<<item>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>\n </li>\n </$set>\n </$set>\n </$vars>\n </$list>\n</ol>\n\\end\n\n\\define toc(tag,sort:\"\",itemClassFilter:\"\")\n<$macrocall $name=\"toc-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> />\n\\end\n\n\\define toc-linked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}>\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n </$button>\n </$reveal>\n <<toc-caption>>\n </$link>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-unlinked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-expandable-empty-message()\n<$macrocall $name=\"toc-linked-expandable-body\" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>\n\\end\n\n\\define toc-expandable(tag,sort:\"\",itemClassFilter:\"\",exclude,path)\n<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n <ol class=\"tc-toc toc-expandable\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=<<toc-expandable-empty-message>> >\n <$macrocall $name=\"toc-unlinked-expandable-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=\"\"\"itemClassFilter\"\"\" exclude=<<excluded>> path=<<path>> />\n </$list>\n </$list>\n </ol>\n </$set>\n</$vars>\n\\end\n\n\\define toc-linked-selective-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\" >\n <li class=<<toc-item-class>>>\n <$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}>\n <$list filter=\"[all[current]tagging[]$sort$limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>\">\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n </$button>\n </$reveal>\n </$list>\n <<toc-caption>>\n </$link>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-unlinked-selective-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$list filter=\"[all[current]tagging[]$sort$limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button> <$view field='caption'><$view field='title'/></$view>\">\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n </$list>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-selective-expandable-empty-message()\n<$macrocall $name=\"toc-linked-selective-expandable-body\" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>\n\\end\n\n\\define toc-selective-expandable(tag,sort:\"\",itemClassFilter,exclude,path)\n<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n <ol class=\"tc-toc toc-selective-expandable\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n <$list filter=\"[all[current]toc-link[no]]\" variable=\"ignore\" emptyMessage=<<toc-selective-expandable-empty-message>> >\n <$macrocall $name=\"toc-unlinked-selective-expandable-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>\n </$list>\n </$list>\n </ol>\n </$set>\n</$vars>\n\\end\n\n\\define toc-tabbed-external-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$tiddler tiddler={{{ [<__selectedTiddler__>get[text]] }}}>\n <div class=\"tc-tabbed-table-of-contents\">\n <$linkcatcher to=<<__selectedTiddler__>>>\n <div class=\"tc-table-of-contents\">\n <$macrocall $name=\"toc-selective-expandable\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=\"[all[current]] -[<__selectedTiddler__>get[text]]\"/>\n </div>\n </$linkcatcher>\n <div class=\"tc-tabbed-table-of-contents-content\">\n <$reveal stateTitle=<<__selectedTiddler__>> type=\"nomatch\" text=\"\">\n <$transclude mode=\"block\" tiddler=<<__template__>>>\n <h1><<toc-caption>></h1>\n <$transclude mode=\"block\">$missingText$</$transclude>\n </$transclude>\n </$reveal>\n <$reveal stateTitle=<<__selectedTiddler__>> type=\"match\" text=\"\">\n $unselectedText$\n </$reveal>\n </div>\n </div>\n</$tiddler>\n\\end\n\n\\define toc-tabbed-internal-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$linkcatcher to=<<__selectedTiddler__>>>\n <$macrocall $name=\"toc-tabbed-external-nav\" tag=<<__tag__>> sort=<<__sort__>> selectedTiddler=<<__selectedTiddler__>> unselectedText=<<__unselectedText__>> missingText=<<__missingText__>> template=<<__template__>>/>\n</$linkcatcher>\n\\end\n\n"
},
"$:/core/macros/translink": {
"title": "$:/core/macros/translink",
"tags": "$:/tags/Macro",
"text": "\\define translink(title,mode:\"block\")\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: black; foreground; white;\">\n<$link to=\"\"\"$title$\"\"\">\n<$text text=\"\"\"$title$\"\"\"/>\n</$link>\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: white; foreground; black;\">\n<$transclude tiddler=\"\"\"$title$\"\"\" mode=\"$mode$\">\n\"<$text text=\"\"\"$title$\"\"\"/>\" is missing\n</$transclude>\n</div>\n</div>\n\\end\n"
},
"$:/core/macros/tree": {
"title": "$:/core/macros/tree",
"tags": "$:/tags/Macro",
"text": "\\define leaf-link(full-title,chunk,separator: \"/\")\n<$link to=<<__full-title__>>><$text text=<<__chunk__>>/></$link>\n\\end\n\n\\define leaf-node(prefix,chunk)\n<li>\n<$list filter=\"[<__prefix__>addsuffix<__chunk__>is[shadow]] [<__prefix__>addsuffix<__chunk__>is[tiddler]]\" variable=\"full-title\">\n<$list filter=\"[<full-title>removeprefix<__prefix__>]\" variable=\"chunk\">\n<span>{{$:/core/images/file}}</span> <$macrocall $name=\"leaf-link\" full-title=<<full-title>> chunk=<<chunk>>/>\n</$list>\n</$list>\n</li>\n\\end\n\n\\define branch-node(prefix,chunk,separator: \"/\")\n<li>\n<$set name=\"reveal-state\" value={{{ [[$:/state/tree/]addsuffix<__prefix__>addsuffix<__chunk__>] }}}>\n<$reveal type=\"nomatch\" stateTitle=<<reveal-state>> text=\"show\">\n<$button setTitle=<<reveal-state>> setTo=\"show\" class=\"tc-btn-invisible\">\n{{$:/core/images/folder}} <$text text=<<__chunk__>>/>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<reveal-state>> text=\"show\">\n<$button setTitle=<<reveal-state>> setTo=\"hide\" class=\"tc-btn-invisible\">\n{{$:/core/images/folder}} <$text text=<<__chunk__>>/>\n</$button>\n</$reveal>\n<span>(<$count filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>removeprefix<__chunk__>] -[<__prefix__>addsuffix<__chunk__>]\"/>)</span>\n<$reveal type=\"match\" stateTitle=<<reveal-state>> text=\"show\">\n<$macrocall $name=\"tree-node\" prefix={{{ [<__prefix__>addsuffix<__chunk__>] }}} separator=<<__separator__>>/>\n</$reveal>\n</$set>\n</li>\n\\end\n\n\\define tree-node(prefix,separator: \"/\")\n<ol>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore<__separator__>sort[]!suffix<__separator__>]\" variable=\"chunk\">\n<$macrocall $name=\"leaf-node\" prefix=<<__prefix__>> chunk=<<chunk>> separator=<<__separator__>>/>\n</$list>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore<__separator__>sort[]suffix<__separator__>]\" variable=\"chunk\">\n<$macrocall $name=\"branch-node\" prefix=<<__prefix__>> chunk=<<chunk>> separator=<<__separator__>>/>\n</$list>\n</ol>\n\\end\n\n\\define tree(prefix: \"$:/\",separator: \"/\")\n<div class=\"tc-tree\">\n<span><$text text=<<__prefix__>>/></span>\n<div>\n<$macrocall $name=\"tree-node\" prefix=<<__prefix__>> separator=<<__separator__>>/>\n</div>\n</div>\n\\end\n"
},
"$:/core/macros/utils": {
"title": "$:/core/macros/utils",
"text": "\\define colour(colour)\n$colour$\n\\end\n"
},
"$:/snippets/minifocusswitcher": {
"title": "$:/snippets/minifocusswitcher",
"text": "<$select tiddler=\"$:/config/AutoFocus\">\n<$list filter=\"title tags text type fields\">\n<option value=<<currentTiddler>>><<currentTiddler>></option>\n</$list>\n</$select>\n"
},
"$:/snippets/minilanguageswitcher": {
"title": "$:/snippets/minilanguageswitcher",
"text": "<$select tiddler=\"$:/language\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"description\"><$view field=\"name\"><$view field=\"title\"/></$view></$view></option>\n</$list>\n</$select>"
},
"$:/snippets/minithemeswitcher": {
"title": "$:/snippets/minithemeswitcher",
"text": "\\define lingo-base() $:/language/ControlPanel/Theme/\n<<lingo Prompt>> <$select tiddler=\"$:/theme\">\n<$list filter=\"[plugin-type[theme]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"name\"><$view field=\"title\"/></$view></option>\n</$list>\n</$select>"
},
"$:/snippets/modules": {
"title": "$:/snippets/modules",
"text": "\\define describeModuleType(type)\n{{$:/language/Docs/ModuleTypes/$type$}}\n\\end\n<$list filter=\"[moduletypes[]]\">\n\n!! <$macrocall $name=\"currentTiddler\" $type=\"text/plain\" $output=\"text/plain\"/>\n\n<$macrocall $name=\"describeModuleType\" type=<<currentTiddler>>/>\n\n<ul><$list filter=\"[all[current]modules[]]\"><li><$link><<currentTiddler>></$link>\n</li>\n</$list>\n</ul>\n</$list>\n"
},
"$:/palette": {
"title": "$:/palette",
"text": "$:/palettes/Vanilla"
},
"$:/snippets/paletteeditor": {
"title": "$:/snippets/paletteeditor",
"text": "<$transclude tiddler=\"$:/PaletteManager\"/>\n"
},
"$:/snippets/palettepreview": {
"title": "$:/snippets/palettepreview",
"text": "<$set name=\"currentTiddler\" value={{$:/palette}}>\n{{||$:/snippets/currpalettepreview}}\n</$set>\n"
},
"$:/snippets/paletteswitcher": {
"title": "$:/snippets/paletteswitcher",
"text": "<$linkcatcher to=\"$:/palette\">\n<div class=\"tc-chooser\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]sort[name]]\"><$set name=\"cls\" filter=\"[all[current]prefix{$:/palette}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' - <$view field=\"description\" format=\"text\"/>{{||$:/snippets/currpalettepreview}}</$link>\n</div></$set>\n</$list>\n</div>\n</$linkcatcher>\n"
},
"$:/snippets/peek-stylesheets": {
"title": "$:/snippets/peek-stylesheets",
"text": "\\define expandable-stylesheets-list()\n<ol>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$vars state=<<qualify \"$:/state/peek-stylesheets/open/\">>>\n<$set name=\"state\" value={{{ [<state>addsuffix<currentTiddler>] }}}>\n<li>\n<$reveal type=\"match\" state=<<state>> text=\"yes\" tag=\"span\">\n<$button set=<<state>> setTo=\"no\" class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=<<state>> text=\"yes\" tag=\"span\">\n<$button set=<<state>> setTo=\"yes\" class=\"tc-btn-invisible\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$link>\n<$view field=\"title\"/>\n</$link>\n<$reveal type=\"match\" state=<<state>> text=\"yes\" tag=\"div\">\n<$set name=\"source\" tiddler=<<currentTiddler>>>\n<$wikify name=\"styles\" text=<<source>>>\n<pre>\n<code>\n<$text text=<<styles>>/>\n</code>\n</pre>\n</$wikify>\n</$set>\n</$reveal>\n</li>\n</$set>\n</$vars>\n</$list>\n</ol>\n\\end\n\n\\define stylesheets-list()\n<ol>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<li>\n<$link>\n<$view field=\"title\"/>\n</$link>\n<$set name=\"source\" tiddler=<<currentTiddler>>>\n<$wikify name=\"styles\" text=<<source>>>\n<pre>\n<code>\n<$text text=<<styles>>/>\n</code>\n</pre>\n</$wikify>\n</$set>\n</li>\n</$list>\n</ol>\n\\end\n\n<$vars modeState=<<qualify \"$:/state/peek-stylesheets/mode/\">>>\n\n<$reveal type=\"nomatch\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<$button set=<<modeState>> setTo=\"expanded\" class=\"tc-btn-invisible\">{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Stylesheets/Expand/Caption}}</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<$button set=<<modeState>> setTo=\"restored\" class=\"tc-btn-invisible\">{{$:/core/images/chevron-down}} {{$:/language/ControlPanel/Stylesheets/Restore/Caption}}</$button>\n</$reveal>\n\n<$reveal type=\"nomatch\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<<expandable-stylesheets-list>>\n</$reveal>\n<$reveal type=\"match\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<<stylesheets-list>>\n</$reveal>\n\n</$vars>\n"
},
"$:/temp/search": {
"title": "$:/temp/search",
"text": ""
},
"$:/tags/AdvancedSearch": {
"title": "$:/tags/AdvancedSearch",
"list": "[[$:/core/ui/AdvancedSearch/Standard]] [[$:/core/ui/AdvancedSearch/System]] [[$:/core/ui/AdvancedSearch/Shadows]] [[$:/core/ui/AdvancedSearch/Filter]]"
},
"$:/tags/AdvancedSearch/FilterButton": {
"title": "$:/tags/AdvancedSearch/FilterButton",
"list": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown $:/core/ui/AdvancedSearch/Filter/FilterButtons/clear $:/core/ui/AdvancedSearch/Filter/FilterButtons/export $:/core/ui/AdvancedSearch/Filter/FilterButtons/delete"
},
"$:/tags/ControlPanel": {
"title": "$:/tags/ControlPanel",
"list": "$:/core/ui/ControlPanel/Info $:/core/ui/ControlPanel/Appearance $:/core/ui/ControlPanel/Settings $:/core/ui/ControlPanel/Saving $:/core/ui/ControlPanel/Plugins $:/core/ui/ControlPanel/Tools $:/core/ui/ControlPanel/Internals"
},
"$:/tags/ControlPanel/Info": {
"title": "$:/tags/ControlPanel/Info",
"list": "$:/core/ui/ControlPanel/Basics $:/core/ui/ControlPanel/Advanced"
},
"$:/tags/ControlPanel/Plugins": {
"title": "$:/tags/ControlPanel/Plugins",
"list": "[[$:/core/ui/ControlPanel/Plugins/Installed]] [[$:/core/ui/ControlPanel/Plugins/Add]]"
},
"$:/tags/EditTemplate": {
"title": "$:/tags/EditTemplate",
"list": "[[$:/core/ui/EditTemplate/controls]] [[$:/core/ui/EditTemplate/title]] [[$:/core/ui/EditTemplate/tags]] [[$:/core/ui/EditTemplate/shadow]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/EditTemplate/body]] [[$:/core/ui/EditTemplate/type]] [[$:/core/ui/EditTemplate/fields]]"
},
"$:/tags/EditToolbar": {
"title": "$:/tags/EditToolbar",
"list": "[[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/cancel]] [[$:/core/ui/Buttons/save]]"
},
"$:/tags/EditorToolbar": {
"title": "$:/tags/EditorToolbar",
"list": "$:/core/ui/EditorToolbar/paint $:/core/ui/EditorToolbar/opacity $:/core/ui/EditorToolbar/line-width $:/core/ui/EditorToolbar/rotate-left $:/core/ui/EditorToolbar/clear $:/core/ui/EditorToolbar/bold $:/core/ui/EditorToolbar/italic $:/core/ui/EditorToolbar/strikethrough $:/core/ui/EditorToolbar/underline $:/core/ui/EditorToolbar/superscript $:/core/ui/EditorToolbar/subscript $:/core/ui/EditorToolbar/mono-line $:/core/ui/EditorToolbar/mono-block $:/core/ui/EditorToolbar/quote $:/core/ui/EditorToolbar/list-bullet $:/core/ui/EditorToolbar/list-number $:/core/ui/EditorToolbar/heading-1 $:/core/ui/EditorToolbar/heading-2 $:/core/ui/EditorToolbar/heading-3 $:/core/ui/EditorToolbar/heading-4 $:/core/ui/EditorToolbar/heading-5 $:/core/ui/EditorToolbar/heading-6 $:/core/ui/EditorToolbar/link $:/core/ui/EditorToolbar/excise $:/core/ui/EditorToolbar/picture $:/core/ui/EditorToolbar/stamp $:/core/ui/EditorToolbar/size $:/core/ui/EditorToolbar/editor-height $:/core/ui/EditorToolbar/more $:/core/ui/EditorToolbar/preview $:/core/ui/EditorToolbar/preview-type"
},
"$:/tags/Manager/ItemMain": {
"title": "$:/tags/Manager/ItemMain",
"list": "$:/Manager/ItemMain/WikifiedText $:/Manager/ItemMain/RawText $:/Manager/ItemMain/Fields"
},
"$:/tags/Manager/ItemSidebar": {
"title": "$:/tags/Manager/ItemSidebar",
"list": "$:/Manager/ItemSidebar/Tags $:/Manager/ItemSidebar/Colour $:/Manager/ItemSidebar/Icon $:/Manager/ItemSidebar/Tools"
},
"$:/tags/MoreSideBar": {
"title": "$:/tags/MoreSideBar",
"list": "[[$:/core/ui/MoreSideBar/All]] [[$:/core/ui/MoreSideBar/Recent]] [[$:/core/ui/MoreSideBar/Tags]] [[$:/core/ui/MoreSideBar/Missing]] [[$:/core/ui/MoreSideBar/Drafts]] [[$:/core/ui/MoreSideBar/Orphans]] [[$:/core/ui/MoreSideBar/Types]] [[$:/core/ui/MoreSideBar/System]] [[$:/core/ui/MoreSideBar/Shadows]] [[$:/core/ui/MoreSideBar/Explorer]] [[$:/core/ui/MoreSideBar/Plugins]]",
"text": ""
},
"$:/tags/PageControls": {
"title": "$:/tags/PageControls",
"list": "[[$:/core/ui/Buttons/home]] [[$:/core/ui/Buttons/close-all]] [[$:/core/ui/Buttons/fold-all]] [[$:/core/ui/Buttons/unfold-all]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/new-tiddler]] [[$:/core/ui/Buttons/new-journal]] [[$:/core/ui/Buttons/new-image]] [[$:/core/ui/Buttons/import]] [[$:/core/ui/Buttons/export-page]] [[$:/core/ui/Buttons/control-panel]] [[$:/core/ui/Buttons/advanced-search]] [[$:/core/ui/Buttons/manager]] [[$:/core/ui/Buttons/tag-manager]] [[$:/core/ui/Buttons/language]] [[$:/core/ui/Buttons/palette]] [[$:/core/ui/Buttons/theme]] [[$:/core/ui/Buttons/storyview]] [[$:/core/ui/Buttons/encryption]] [[$:/core/ui/Buttons/timestamp]] [[$:/core/ui/Buttons/full-screen]] [[$:/core/ui/Buttons/print]] [[$:/core/ui/Buttons/save-wiki]] [[$:/core/ui/Buttons/refresh]] [[$:/core/ui/Buttons/more-page-actions]]"
},
"$:/tags/PageTemplate": {
"title": "$:/tags/PageTemplate",
"list": "[[$:/core/ui/PageTemplate/topleftbar]] [[$:/core/ui/PageTemplate/toprightbar]] [[$:/core/ui/PageTemplate/sidebar]] [[$:/core/ui/PageTemplate/story]] [[$:/core/ui/PageTemplate/alerts]]",
"text": ""
},
"$:/tags/PluginLibrary": {
"title": "$:/tags/PluginLibrary",
"list": "$:/config/OfficialPluginLibrary"
},
"$:/tags/SideBar": {
"title": "$:/tags/SideBar",
"list": "[[$:/core/ui/SideBar/Open]] [[$:/core/ui/SideBar/Recent]] [[$:/core/ui/SideBar/Tools]] [[$:/core/ui/SideBar/More]]",
"text": ""
},
"$:/tags/SideBarSegment": {
"title": "$:/tags/SideBarSegment",
"list": "[[$:/core/ui/SideBarSegments/site-title]] [[$:/core/ui/SideBarSegments/site-subtitle]] [[$:/core/ui/SideBarSegments/page-controls]] [[$:/core/ui/SideBarSegments/search]] [[$:/core/ui/SideBarSegments/tabs]]"
},
"$:/tags/TiddlerInfo": {
"title": "$:/tags/TiddlerInfo",
"list": "[[$:/core/ui/TiddlerInfo/Tools]] [[$:/core/ui/TiddlerInfo/References]] [[$:/core/ui/TiddlerInfo/Tagging]] [[$:/core/ui/TiddlerInfo/List]] [[$:/core/ui/TiddlerInfo/Listed]] [[$:/core/ui/TiddlerInfo/Fields]]",
"text": ""
},
"$:/tags/TiddlerInfo/Advanced": {
"title": "$:/tags/TiddlerInfo/Advanced",
"list": "[[$:/core/ui/TiddlerInfo/Advanced/ShadowInfo]] [[$:/core/ui/TiddlerInfo/Advanced/PluginInfo]]"
},
"$:/tags/ViewTemplate": {
"title": "$:/tags/ViewTemplate",
"list": "[[$:/core/ui/ViewTemplate/title]] [[$:/core/ui/ViewTemplate/unfold]] [[$:/core/ui/ViewTemplate/subtitle]] [[$:/core/ui/ViewTemplate/tags]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/ViewTemplate/body]]"
},
"$:/tags/ViewToolbar": {
"title": "$:/tags/ViewToolbar",
"list": "[[$:/core/ui/Buttons/more-tiddler-actions]] [[$:/core/ui/Buttons/info]] [[$:/core/ui/Buttons/new-here]] [[$:/core/ui/Buttons/new-journal-here]] [[$:/core/ui/Buttons/clone]] [[$:/core/ui/Buttons/export-tiddler]] [[$:/core/ui/Buttons/edit]] [[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/permalink]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/open-window]] [[$:/core/ui/Buttons/close-others]] [[$:/core/ui/Buttons/close]] [[$:/core/ui/Buttons/fold-others]] [[$:/core/ui/Buttons/fold]]"
},
"$:/snippets/themeswitcher": {
"title": "$:/snippets/themeswitcher",
"text": "<$linkcatcher to=\"$:/theme\">\n<div class=\"tc-chooser\"><$list filter=\"[plugin-type[theme]sort[title]]\"><$set name=\"cls\" filter=\"[all[current]field:title{$:/theme}] [[$:/theme]!has[text]addsuffix[s/tiddlywiki/vanilla]field:title<currentTiddler>] +[limit[1]]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' <$view field=\"description\" format=\"text\"/></$link></div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
},
"$:/core/wiki/title": {
"title": "$:/core/wiki/title",
"text": "{{$:/SiteTitle}} --- {{$:/SiteSubtitle}}"
},
"$:/view": {
"title": "$:/view",
"text": "classic"
},
"$:/snippets/viewswitcher": {
"title": "$:/snippets/viewswitcher",
"text": "\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<$linkcatcher to=\"$:/view\">\n<div class=\"tc-chooser tc-viewswitcher\">\n<$list filter=\"[storyviews[]]\" variable=\"storyview\">\n<$set name=\"cls\" filter=\"[<storyview>prefix{$:/view}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>>\n<$link to=<<storyview>>><$transclude tiddler=<<icon>>/><$text text=<<storyview>>/></$link>\n</div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
}
}
}
The following tiddlers were imported:
# [[Liyla and The Shadows Of War by rasheed.abueideh]]
# [[Celeste by Maddy Makes Games]]
# [[Sky Rogue by Fractal Phase]]
# [[Errant Kingdom by Lunaris Games]]
# [[Baba Is You by Hempuli]]
# [[A Mortician's Tale by Laundry Bear Games]]
# [[ART SQOOL by Glanderco]]
# [[Ex Novo by Sharkbomb Studios, Konstantinos D., Martin Nerurkar]]
# [[BEACON by monothetic]]
# [[DragonRuby Game Toolkit by DragonRuby]]
# [[Minit by Devolver Digital]]
# [[LAZA KNITEZ!! by Glitchnap, Joon, dom]]
# [[Lieve Oma by Florian Veltman]]
# [[Long Gone Days by Camila Gormaz]]
# [[Depth of Extinction by HOF Studios]]
# [[Anodyne by Melos Han-Tani, Marina Kittaka]]
# [[Haque by Super∴Try]]
# [[Tonight We Riot by Means Interactive]]
# [[Mixolumia by davemakes]]
# [[Pikuniku by Devolver Digital]]
# [[Democratic Socialism Simulator by molleindustria]]
# [[F J O R D S by KYLE REIMERGARTIN]]
# [[Signs of the Sojourner by Echodog Games]]
# [[Catlateral Damage by Manekoware]]
# [[Beglitched by Hexecutable, apthomson]]
# [[The Testimony of Trixie Glimmer Smith by Digital Poppy, Bun & Birb]]
# [[Milkmaid of the Milky Way by machineboy]]
# [[Cosmic Express by Draknek & Friends, Benjamin Davis]]
# [[Wheels of Aurelia by Santa Ragione, PaoloMonkey]]
# [[Nuclear Throne by Vlambeer]]
# [[this discord has ghosts in it by will jobst, World Champ Game Co.]]
# [[Codemancer by Important Little Games]]
# [[Silicon Zeroes by PleasingFungus]]
# [[Red Embrace (BL Visual Novel) by Argent Games]]
# [[Vignettes by Skeleton Business, Armel Gibson, Pol Clarissou]]
# [[Magic Wand by thecatamites]]
# [[Intelligent Design: An Evolutionary Sandbox by Pill Bug Interactive]]
# [[Super Win the Game by J. Kyle Pittman]]
# [[Metamorphabet (2015) by Vectorpark]]
# [[Michtim: Fluffy Adventures by Zev Mir]]
# [[Bonbon by Aetheric Games]]
# [[10 Beautiful Postcards by thecatamites]]
# [[a new life. by angela he]]
# [[A Normal Lost Phone by Dear Villagers]]
# [[Sewer Rave by Autumn Rain]]
# [[GNOG by KO_OP]]
# [[Speed Dating for Ghosts by Copychaser Games]]
# [[Dépanneur Nocturne by KO_OP, G.P.]]
# [[Fortune-499 by apthomson]]
# [[The Floor is Jelly by Auren Snyder]]
# [[Fugl by kotoristudios, marcoapc, gormlai, Johan Gjestland]]
# [[Underhero by Paper Castle]]
# [[Moon Hunters by Kitfox Games]]
# [[Halloween Forever by Poppy Works]]
# [[Four Horsemen by Nuclear Fishin' Software]]
# [[Crescent Loom by Olive]]
# [[Pixel Art Infinite Runner - Pack by edermunizz]]
# [[The Stillness of the Wind by Fellow Traveller, Memory of God]]
# [[Glittermitten Grove by Twinbeard]]
# [[A Good Snowman Is Hard To Build by Draknek & Friends, Benjamin Davis]]
# [[VEKTOR 2089 by Impbox Games]]
# [[The Fall of Lazarus by No Wand Studios, johnny.JPG, Nazhor]]
# [[Cardinal Chains by Daniel Nora]]
# [[Three Lesbians in a Barrow by Digital Poppy]]
# [[NEON STRUCT by Minor Key Games]]
# [[Space Station Architect by AL Wyvern]]
# [[Switch 'N' Shoot by Matt Glanville]]
# [[Shutter Stroll by Jannik Boysen]]
# [[Imperishable Memories by Jennifer Raye]]
# [[Bleed 2 by BootdiskRevolution]]
# [[Apple Quest Monsters DX by splendidland]]
# [[CanariPack 1BIT TopDown by Canari Games]]
# [[ETHEREAL by Nonsense Arts]]
# [[LongStory by Bloom Digital Media]]
# [[Steam Marines 2 by WorthlessBums]]
# [[Sophie's Dice by Sophie Houlden]]
# [[Boa Retina by Jennifer Raye]]
# [[Damn the Man, Save the Music! by Turtlebun]]
# [[Calico by PeachyKeenGames]]
# [[Spooky Ghosts Dot Com by zertuk]]
# [[Shu's Garden by Blunderboffins, mrcolin]]
# [[Witchball by Lawra Suits Clark]]
# [[Future Unfolding by Spaces of Play]]
# [[What Comes After by Rolling Glory Jam]]
# [[VVVVVV by Terry Cavanagh]]
# [[Windosill (2009) by Vectorpark]]
# [[LYNE by Thomas Bowker]]
# [[Another Lost Phone: Laura's Story by Dear Villagers]]
# [[Pixel Session Vol.1 by Rémy 🍬 Devaux]]
# [[Spooky Station by Estúdio Vaca Roxa, BubasaSoft, Maurício Ramalho, wesleyronald, Sofa, Expresso Studios, danieldante, Arfo, didigameboy, Heavy sheep games, Relixes, Crowno]]
# [[We should talk. by We should talk., Jordan Jones-Brewster, Nobo B, cesca, kat, carolmertz]]
# [[The Night Fisherman by Far Few Giants, Chard, de_fault]]
# [[Once Upon A Crime in the West by National Insecurities]]
# [[NEXT JUMP: Shmup Tactics by Post Mortem Pixels]]
# [[Mini Metro by Dinosaur Polo Club]]
# [[Splinter Zone by MOKKA]]
# [[Death Ray Manta SE by RobF]]
# [[Grapple Force Rena by GalaxyTrail, T. Ashley Jenkins]]
# [[I Get This Call Every Day by David S Gallant]]
# [[Rooftop Cop by Lawra Suits Clark]]
# [[Rose & Time by Sophie Houlden]]
# [[ZONES by Connor Sherlock]]
# [[The Church In The Darkness by Fellow Traveller]]
# [[SOLITUNE by Rat King]]
# [[Sokobond by Draknek & Friends]]
# [[Ruya by Miracle Tea, Brad's Games]]
# [[Cosmic Rochambo by dean_sick]]
# [[Shattered Planet by Kitfox Games]]
# [[Cook, Serve, Delicious! 2!! by chubigans]]
# [[BFF or Die by ASA Studio]]
# [[Into the Black by Monkey's Paw Games]]
# [[CROSSNIQ+ by Max Krieger]]
# [[And All Would Cry Beware! by Tales of the Renegade Sector]]
# [[Pixel Button Prompts! (Keyboard/Gamepad) by Retrocade Media]]
# [[Un Pas Fragile by DocGeraud]]
# [[Fit For A King by Kitfox Games]]
# [[Bleed by BootdiskRevolution]]
# [[Rebop Blasters by dean_sick]]
# [[Dominique Pamplemousse and Dominique Pamplemousse in "Combinatorial Explosion!" by Squinky]]
# [[Demetrios - The BIG Cynical Adventure by COWCAT]]
# [[Frick, Inc. by Kenney]]
# [[The Magus by momatoes]]
# [[Pixel Art Platformer Painted Style by edermunizz]]
# [[A NIGHTMARE'S TRIP by SKY HOUR WORKS]]
# [[Legend of Hand by Cloak and Dagger Games]]
# [[We Met in May by starmaidgames]]
# [[The Outcast Lovers by Far Few Giants, de_fault, Chard]]
# [[Monster Manifest by J.N. Butler (they/them)]]
# [[Silver Grapple by Jamie Rollo]]
# [[Strobophagia | Rave Horror by Green Tile Digital, EmeraldPawn]]
# [[They Bleed Pixels by Spooky Squid Games Inc.]]
# [[WE ARE DOOMED by Vertex Pop]]
# [[Jam and the Mystery of the Mysteriously Spooky Mansion by Res]]
# [[Textreme 2 by Ash K, Maxim Loboda, amber hope]]
# [[Cats are Liquid - A Light in the Shadows by Last Quarter Studios]]
# [[Monster Pub Chapter 1 by alex ilitchev]]
# [[Cycle 28 by Pill Bug Interactive, NoDice]]
# [[Hero Hours Contract by Steve O'Gorman]]
# [[DATA LOSS by Noé]]
# [[Pixross by Kenney]]
# [[PARANOIHELL by lum]]
# [[QZ by Jason Tocci]]
# [[Steam Marines by WorthlessBums]]
# [[Plunge by SpookyBunsGames]]
# [[Cecconoid by Triple Eh?]]
# [[Dominique Pamplemousse in "It's All Over Once The Fat Lady Sings!" by Squinky]]
# [[TowerFall Ascension by Maddy Makes Games, Heidy Motta]]
# [[Your Future Self by Contortionist Games]]
# [[Oh Jeez, Oh No, My Rabbits Are Gone!!! by Studio Nevermore, PolarBun]]
# [[Circa Infinity by KennySun]]
# [[Quench by Axon Interactive]]
# [[Rising Dusk by Studio Stobie]]
# [[Before I Forget by 3-Fold Games]]
# [[Luna by Funomena]]
# [[DERE EVIL EXE by AppSir Games]]
# [[Hacknet by Fellow Traveller]]
# [[The Change Architect by Far Few Giants, de_fault, Chard]]
# [[Long Haul 1983 by SPC]]
# [[Guppy by Christiaan Moleman]]
# [[SlipSpeed by voxel, tijn]]
# [[Putahe ng Ina Mo: Sinigang Edition by chickon club]]
# [[Soul Searching by Kayabros]]
# [[Chambara by team ok]]
# [[Gunhouse by Necrosoft Games]]
# [[BOTOLO by Auren Snyder]]
# [[Breakfast Cult by Weird Age Games]]
# [[Vienna Automobile Society by Royal Polygon]]
# [[FutureGrind by Milkbag Games]]
# [[Pushamo by brook.p8]]
# [[Wampus by John Vanderhoef]]
# [[TERMINUS by Catscratcher Studio]]
# [[Monster Pub Chapter 2 by alex ilitchev]]
# [[Lineage by Washyourhands]]
# [[A Mother's Love by Jake Bhattacharyya]]
# [[ALL-STARS DUNGEONS AND DIAMONDS by GiantEnemyLabs]]
# [[T-DEF by Lari Assmuth]]
# [[KANABO by Monkey's Paw Games]]
# [[Shoot Shoot Mega Pack by Actual Humans]]
# [[FroggieChat by Stupid++]]
# [[DEVIL, AIM FOR ME: A One-Shot for Trophy Dark by Michael Van Vleet]]
# [[Self-Checkout Unlimited by Argent Games]]
# [[Explorers (Deluxe Edition 🗿) by Rémy 🍬 Devaux]]
# [[Dates & Wires by Io Black, Cryo]]
# [[Cobwebs by World Champ Game Co.]]
# [[Shoot 'n' Loot by Mitchell Salmon]]
# [[cityglitch by mindfungus]]
# [[Greater Secrets - Supply Drop by Yuri R]]
# [[Adventures of a Radish(Full) by SorceressGameLab]]
# [[Pixel Art Snowy Forest by edermunizz]]
# [[PIXEL FANTASY RPG ICONS - PACK 2 by Caz]]
# [[World of Solaria: Rural Village Tileset by jamiebrownhill]]
# [[adjacency by sleepy macaw]]
# [[Combo Postage by Kirk Lindsay]]
# [[.dungeon by Batts]]
# [[Soundodger+ by onemrbean]]
# [[Polyroll by HOF Studios, Mike Stumhofer, Kevin Dressel, Spicy Gyro Games, Shiny Dolphin Games LLC]]
# [[Destructivator 2 by Pug Fugly Games]]
# [[Healer by Tamsin Bloom]]
# [[FRAMED Collection by Fellow Traveller, Loveshack Dev]]
# [[Sidewords by Milkbag Games]]
# [[The Stellar Beacon: Hopepunk Issue by Festive Ninja]]
# [[P.T. - A Video Game Ghost Story by Joel Couture]]
# [[Untitled Ghost Game by Alice V.]]
# [[The Bonds That Tie Us by Drazillion]]
# [[Double Turn by Inwave Labs]]
# [[augur by Caro Asercion]]
# [[Watch Me Jump by Jeremy Gable]]
# [[Lonely People Potion Shop by Kultisti]]
# [[Elephantasy by Linker]]
# [[Tales' End by boyproblems]]
# [[Monster Pub Chapter 3 by alex ilitchev]]
# [[A Kishoutenketsu in the countryside by Rémi Töötätä]]
# [[Fallen Down: Heartache & Compassion in Undertale by Joel Couture]]
# [[The Cloister by Everest Pipkin]]
# [[Of Grub & Grain by hugeboar]]
# [[Cast Away by Afterthought Committee]]
# [[Time Knife by Monkey's Paw Games]]
# [[Ossuary by Future Proof Games]]
# [[Bury me, my Love by Dear Villagers]]
# [[Demon Truck by Triger Mountain]]
# [[Khronos-X by Bee Bush]]
# [[A Council of Cats by MrReciprocity]]
# [[Icy City Omnibus by Aaron King]]
# [[Can Androids Pray: Blue by Xalavier Nelson Jr.]]
# [[TowerFall Dark World Expansion by Maddy Makes Games, Heidy Motta]]
# [[Last Train To Tranz-Central (ZX Spectrum) by Quantum Sheep]]
# [[Indigo Child by Metkis]]
# [[Reliance: Interdependence and Inner Turmoil by adamebell]]
# [[Self.destroy() by Maxine Red]]
# [[Spell Casting by Gord Games]]
# [[LiveScream by Lightning Rod Games]]
# [[Get In The Robot! by Mitchell Salmon]]
# [[Oniria's Slumber by FantasticJean]]
# [[Shn!p by flatbutton]]
# [[The Quiet Life by usducktape]]
# [[Choice Chamber by onemrbean]]
# [[FORGET THE BRAKES! by Ferran Bertomeu]]
# [[SHUT IN by HiddenTrack]]
# [[Pebble Witch by Fuzzy Ghost]]
# [[Crystal Control II by Virtually Competent]]
# [[Refactor by fluffy]]
# [[A Wood Heart by James Chip]]
# [[Take A Hike! by Jane Titor]]
# [[Luminous by Kieran Sheldon]]
# [[Scoundrels (Print-n-Play Edition) by Randy O'Connor]]
# [[Deep Nightly Fathoms by MRDR HOBO]]
# [[Two Stand To Fall by Amorphous, empwnleon]]
# [[10mg: Cover Me In Leaves by Elliot Herriman, SOL]]
# [[Shrinespark by HomieBoon]]
# [[Spritedow Animator by Elendow]]
# [[HORIZON VANGUARD by tain]]
# [[GourMelee by Anthony Tesija]]
# [[Alone In Between by Matthew Gravelyn]]
# [[MOON'S SHOT by Michael Van Vleet]]
# [[Batbarian: Testament of the Primordials by Dangen Entertainment]]
# [[GUROBU by Aiaz Marx]]
# [[Yi and the Thousand Moons by David Su]]
# [[Fire Place by Badru]]
# [[Memories of East Coast by Roomah Gaming]]
# [[Hardship River by dreamup]]
# [[A Forgetful Loop by BigHandInSky]]
# [[Kakatte Koi Yo! by Back Slash Games]]
# [[JRNL by Blarfnip]]
# [[Magical Console Warriors by Inkskratch]]
# [[Petitioners of Zed by MrReciprocity]]
# [[10mg: Locked In by Far Few Giants, de_fault, Chard]]
# [[StarBoy by mrkdji]]
# [[I have gone this far by Max Kämmerer (he/they)]]
# [[Tomb Of The Swine Prophet by Highland Paranormal Society]]
# [[Beyond Super: Life Behind The Mask by Max Kämmerer (he/they)]]
# [[Cleansuit by Goblin Council]]
# [[A Great Miracle Happened Here by Seth Alter]]
# [[VideoHole: Episode I by JofiSoft]]
# [[The Adventures of Wolf and Hood - a Jigsaw Tale by Stone Baked Games]]
# [[Unobelisk by Ghostwind]]
# [[WHAT'S SO COOL ABOUT TIME LOOPS? by Max Kämmerer (he/they)]]
# [[DreamCatcher: Reflections, Volume 1 by Hazu @ Skelebun Studios]]
# [[Widget Satchel by Noble Robot]]
# [[10 in 1 game-a-week bundle! by Andrew Karalis]]
# [[Ouroboros: The Sacrifice by Firgof]]
# [[Space Duet™ by Matthew Alan Estock]]
# [[Pupper's Garden by Ulvra]]
# [[Milo's Quest by lightUP]]
# [[Death Drives A Bus by Tallbeard Studios]]
# [[tumbleblox by enzo gray]]
# [[GB Style Farm and Town Tileset by Teaceratops]]
# [[Adventure for a Bit by JUSTCAMH]]
# [[The Lost Night by [AFK] Mario Carballo, Amano Games, Joven Paul]]
# [[Sundered: Eldritch Edition by Thunder Lotus]]
# [[Word Forward by Rocketship Park]]
# [[Pitman by Rat King]]
# [[Clash Force by Shiny Dolphin Games LLC, Kevin Dressel, Spicy Gyro Games]]
# [[Concentric by zerofiftyone]]
# [[RoboVDino by Alex Bair Games]]
# [[Reverie by Metkis]]
# [[Bicyclism EP by phosphoer, Sethers]]
# [[YOU AND YOUR FRIENDS ARE DEAD by Joel Couture]]
# [[Dogs Throwing Swords II: Three Barks To The Wind by Lily V.]]
# [[Super Grappling Gecko by Calangames, DuendeDoWend, Maurício Ramalho, Klebinho]]
# [[Emberglass by greybeardgames]]
# [[Pullfrog by [AFK] Mario Carballo, Amano Games, Joven Paul]]
# [[Lilypad lake by FriggingFrogs]]
# [[The Corruption of Pelursk by Shel Kahn]]
# [[The Flame Still Flickers In The Fen by Lichen Arrowsmith]]
# [[We Are Champion by Asmus/Kinas]]
# [[Grimm & Tonic: Aperitif by spritewrench]]
# [[Naughty Elves - Christmas puzzle game by gurkenlabs]]
# [[Seemannsgarn by Max Kämmerer (he/they)]]
# [[Bullet Heaven 2 by Matt "Kupo" Roszak]]
# [[Akuto: Showdown by Hut 90]]
# [[Prologue (Second Edition) by Mitchell Salmon]]
# [[The Machine's Garden by Too Much Tomato]]
# [[Predestination by Brain and Nerd Ltd.]]
# [[Super Skull Smash GO! 2 Turbo by Poppy Works]]
# [[SOMOS by Sprawl]]
# [[The Sign Bearer by Raul Fontoura]]
# [[SuperLuminauts by LampFire]]
# [[Stacks On Stacks (On Stacks) by Herringbone Games]]
# [[Knight & Damsel by MK-ULTRA Games]]
# [[BasketBelle by onemrbean]]
# [[Roly-Polo by LaPieza]]
# [[Azrael's Stop by Silverstring Media]]
# [[Astronomia by roxaloxa]]
# [[Fairy Corgi Steeplechase by Varnished Truths]]
# [[Cellular Harvest: Purple by Xalavier Nelson Jr.]]
# [[The Church of Cheesus Crisp: An All You can Pray Buffet by Oil Leak Games, robotadventure]]
# [[Wonderland Nights: White Rabbit's Diary by skybeargames]]
# [[The Adventurer - Action platformer by Dare]]
# [[Dark Academia Ren'py GUI Design by Jaime Scribbles Games]]
# [[The Dusk Before Dawn by Overlord Chris]]
# [[Alchemist's Castle by kabukgames, Antonsem]]
# [[Jotun: Valhalla Edition by Thunder Lotus]]
# [[EVADER by zerofiftyone]]
# [[Will Glow the Wisp by parttimeindie]]
# [[Prison of the Magi: Ch. 0 by Honeycomb Interactive]]
# [[La Mancha - print and play edition by Pie For Breakfast Studios]]
# [[sideliner by WayedOut]]
# [[To Ash and Ember by Firgof]]
# [[from view by Spinfoam Games]]
# [[Lunar Magic Ren'py GUI Design by Jaime Scribbles Games]]
# [[Puzzling Peaks EXE by AppSir Games]]
# [[Flat UI Game Icons by Roboxel]]
# [[Alpha Dog by Nocturne Games]]
# [[Throw Me in the River by Side Group]]
# [[[ENDLESS_OVERDRIVE] by Fewprime]]
# [[Drawkanoid by dislekcia]]
# [[Inside The Mirror by Enubix3]]
# [[Super Box Land Demake by lightUP]]
# [[RADARjAM by Hamra Digital]]
# [[Jetscout: Mystery of the Valunians by Dustin Auxier]]
# [[Solar Danmaku by BrokenBunnyStudios]]
# [[Containment by Finite Reflection]]
# [[Willful by lukewasthefish]]
# [[Blackjack Bounty by JonSpencerReviews]]
# [[Paper Boats by Harry Alisavakis]]
# [[Cookies by Stef Pinto]]
# [[Koto by Flo]]
# [[Dona Vasa by Barndles]]
# [[The Hayseed Knight by SandraMJ]]
# [[Canvas Colors: In The Moving City by UnfinishedCircl]]
# [[Fossil Echo by Awaceb]]
# [[Make It Last by Strawberry Dagger Studio]]
# [[Midnight on the Milky Way -- Complete by kalechips]]
# [[Spirit Swap: Lofi Beats to Match-3 To by softnotweak]]
# [[FurnCap by Tovan]]
# [[And Other Stories by JohnLee Cooper]]
# [[De: Throne by Viktormon]]
# [[forma.8 by MixedBagGames]]
# [[Eddie Hill -in- The Curse Of The Skull Medallion by Game in a Frame]]
# [[GRINDSTONE (Original Game Soundtrack) by samwebster]]
# [[In The Hollow of the Valley by Essay Games]]
# [[2000:1: A Space Felony by National Insecurities]]
# [[ESC by Radical Dreamland]]
# [[FEYXUAN Recipe Book Vol. 1 by feyxuan]]
# [[SPICEPUNK 1997 by Nick Kornek]]
# [[No Wheels Racing by Xavier Ekkel]]
# [[Dystopicon by OveR-Software]]
# [[Titan Tactics by Team Potato, simster, Federico Calchera, tiagocoelho, Armen138, Ondjon, TheZakMan, cassioamara]]
# [[piCOLUMNS by Extar]]
# [[THE GREY MAN by ATTACK MOUNTAIN]]
# [[Repurpose (Demo) by Eros]]
# [[Hot Pot Panic by keanerie]]
# [[Is Lupin Still Flirting? by AlexisRoyce, Tsushi, Camden Dawn]]
# [[Road Trip by Elijah Cobb, MichaelReveliotis, Will Bridges, LiamCristello]]
# [[Vast Trivia Of The Void by Whales And Games, MoskiDraws, JorgeGameDev]]
# [[Quixel Font by MysteryCorgi]]
# [[Oceanwork by Warkus]]
# [[MMM: Murder Most Misfortunate by Foolish Mortals]]
# [[There You Go by octogear games]]
# [[BLOOD VOID MASS by Noé]]
# [[When We First Met by Mado]]
# [[Lava Golf by Artanis, Atb4sh]]
# [[From Orbit by Tentacle Head Games]]
# [[Watchlist by Fletcher]]
# [[Out For Delivery by Yuxin Gao]]
# [[Fire & Fondness 2 by JohnGabrielUK]]
# [[Homebound by Ben Seavello]]
# [[CLOSED HANDS by PΔSSENGER]]
# [[Stuck and Wretched by Tomas Gimenez Rioja]]
# [[Nainai’s Recipe by HOU Mai, FannF]]
# [[7 Second Haircuts by Jet Simon]]
# [[Flirting by Visager]]
# [[Rogueyard by gamewill]]
# [[2ECONDS TO STΔRLIVHT: Forever My Diamond by SKY HOUR WORKS]]
# [[Riba by nbmach1ne, Ivan Papiol]]
# [[The Twine® Grimoire, Vol. 1 by Grim Baccaris]]
# [[BBQ DAD: First Bite by Rob Z]]
# [[Good Dog by Marafrass]]
# [[Keep Moving Forward by TheShadyColombian]]
# [[Order A Pizza: A Visual Novel by Rocket Adrift Games]]
# [[Solace State Demo by Vivid Foundry]]
# [[Apparition by cartyrs]]
# [[Write'n'Slash by ValentinSerri]]
# [[Plantgotchi by Nat Morillo]]
# [[Animal Crackers by 3 Halves Games]]
# [[Parcels And Pollen by littlerat]]
# [[Sticky Cats by The Bones Brothers]]
# [[Cursed to Golf by LiamBME]]
# [[Spirit Cleaning by Harry, The CEO of Bad Art, StarSkull]]
# [[Cuckoo Castle by Richard Lems]]
# [[Augma II Arc I by Kamigigana]]
# [[TRAINBOW by Astrosaurus Games]]
# [[Lofi Hip Hop Worlds To Study In by LoFiWorlds]]
# [[Among the Innocent: A Stricken Tale by Zero Degrees Games]]
# [[KISHU by nuclearobelisk]]
# [[Paint Game by Max]]
# [[Froggy Family Fort by Marlowe Dobbe]]
# [[The Devil by cathroon, Aaron Taecker-Wyss, flan, Nic, shane yach, bb tombo]]
# [[Fuzzy Road Home by bitter]]
# [[Harvest Island by Yobob]]
# [[Building Relationships by tanatb]]
# [[Highwinds by Karrius]]
# [[Mostly Intense Monster Defense by Patsui Games]]
# [[STRAWBERRY CUBES by loren schmidt]]
# [[Super Mumtaz Bros. by Extar]]
# [[Compassion by Ivan Papiol]]
# [[NAIR - now with Online Play by Teridax]]
# [[The Witchling Marjolaine by UnfinishedCircl]]
# [[RELEVƎ⅃ƎЯ by iwilliams, izumingus]]
# [[TOMATO CLINIC by npckc]]
# [[Love, Despite Everything by Elliot Herriman]]
# [[Bird Bakery by Sebastian Scaini, Del / birdpun]]
# [[Advent NEON [DEMO] by CryoGX]]
# [[[Music Assets] FREE Chiptune Music Loops by Tallbeard Studios]]
# [[Mad Devils by Itzy Interactive Inc.]]
# [[Walkerwall by Nonsense Arts]]
# [[Sandstorm by Daniel Linssen]]
# [[Why You Do This To Me? by Adnan Yousuf]]
# [[Kabaret by Persona Theory Games]]
# [[Over My Dead Body by Ragdoll Rain, DuckBeard, Raquel Gastón Vicente, Jodacam, Elena Beatriz Chueca, pabloskidev, nichromatic]]
# [[Inside | Out by YoanAllibert]]
# [[EMUUROM by borbware]]
# [[QLRZ by QLRZ studio]]
# [[The Morning Star by Ronove]]
# [[Philosophy Fantasy by Punished Félix]]
# [[Bandit Hideout Paper Miniatures Set by Raul Volpato]]
# [[Moon and Lou by Made by Feather]]
# [[Potion Prodigy by Katie-Rose]]
# [[Dream Dye by Semra Usanmaz]]
# [[How to Win - Season One by HiddenTrack]]
# [[HELP - The Heroes Enhancing Lives Program by Metroixer]]
# [[A tale at the bonfire by Nat Morillo]]
# [[Don't Take It Personally, I Just Don't Like You: The Camping Trip by DeCoster]]
# [[Loco Motive (Game Jam) by Robust Games]]
# [[Mouse Corp. by thecatamites]]
# [[Kindling Spirits by AllieMackie]]
# [[Ode to Small Joys: Coloring Book by Folmer Kelly]]
# [[songs and flowers by cowboy starshine]]
# [[Glitch Dungeon by jakeonaut]]
# [[Demon Crawl - Gothic (Quickstart Edition) by AlessandroAD]]
# [[Cats and Coins by Siegfried Croes]]
# [[Gardenia by Enric Llagostera]]
# [[Pixel Art Enemies :MoonRoar Asset Series: Wild Wolf by Studios SoulAres]]
# [[Alisa | The Awakening Demo by Casper Croes]]
# [[Stories and Smoke by Silverstring Media]]
# [[Anomaly by Sniperserpent]]
# [[My Friends And I Were Granted Three Wishes By A Cat Goddess And I Swear I Got Distracted When My Turn Came Around by Alex Zandra]]
# [[I Signed Up To Be The Substitute Familiar Of A Struggling Witch To Pay My Bills And I'm Just Now Realizing... by Alex Zandra]]
# [[Eatvolve by papadar]]
# [[That Which Faith Demands by Jenna Yow]]
# [[Karanduun - Make God Bleed Edition by makapatag]]
# [[Pixel art Forest by edermunizz]]
# [[Sun Dogs by Royal Polygon, nictringali]]
# [[Luck be a Landlord by TrampolineTales]]
# [[Doikayt: A Jewish TTRPG Anthology by riley rethal, Lucian Kahn 🌈🧛🏻♂️, JR Goldberg, Eli Seitz, Marn S., Randy Lubin, Evan Saft, Adira Slattery, a. fell]]
# [[One Page Lore: Fantasy Folk by Jesse Galena - RexiconJesse]]
# [[Dragonhearts by FractalDragon]]
# [[Spring Falls by SPARSE//GameDev]]
# [[Last Knight: Rogue Rider Edition by Toco Games]]
# [[Gubat Banwa Early Access by makapatag]]
# [[I Have Low Stats But My Class Is "Leader", So I Recruited Everyone I Know To Fight The Dark Lord by CannibalInteractive]]
# [[Good Lookin Home Cookin: A CMC Vignette by Toadhouse Games]]
# [[Subterrarium by slimefriend]]
# [[Last Shooting by My name is Grant]]
# [[A Snake's Tale by m12y]]
# [[monad by Glenn Essex]]
# [[Rod, Reel, & Fist by kumada1]]
# [[Home Again by Nell Raban]]
# [[Working For The Corp by 925 Games]]
# [[Stars Die by Eric Juvi]]
# [[Forest Paths Method For Narrative Design by swordsnarrative]]
# [[Ritual of the Moon by Kara Stone]]
# [[Backspace Bouken by RNG Party Games]]
# [[Commune Corvidae by Mike Agresta]]
# [[The Portal at Hill House by Travis D. Hill]]
# [[Operation Swordbreak by Catscratcher Studio]]
# [[VIRTUA BLINDS by daffodil]]
# [[soundStrider by shiftBacktick]]
# [[A Torch in the Dark by NotWriting]]
# [[Eye of Ra by BEARCABIN]]
# [[Books & Bone by Victoria Corva]]
# [[Dark Hope: A Puzzle Adventure by BrokenBunnyStudios]]
# [[Bem Feito by oiCabie]]
# [[All My Exes are in Mechsuits by anna anthropy]]
# [[Possession by Weirdfellows]]
# [[WuDe - The Five Powers SRD by WuDeRPG]]
# [[Retrace by Spider Lily Studios]]
# [[you used to be someone by Squinky]]
# [[Another Perspective by ShaunJS]]
# [[Pleroma by Aleks Samoylov]]
# [[Cats are Liquid - A Better Place by Last Quarter Studios]]
# [[Savior by Kate Bullock]]
# [[Castle of Memories by Adrian Lumm]]
# [[Valiant Quest by rosalindmc]]
# [[Eldritch Academy by Jackkel Dragon]]
# [[Mixed Feelings by spoonycatt]]
# [[My Welcomed Guest by Dawn Bear Games]]
# [[Talk To Me by Boop Studios]]
# [[The Last Librarian by Cloaked Games]]
# [[The Quiet Sleep by Why Not Games]]
# [[Homing by Pigeonkind Games]]
# [[Agouro by Raul Fontoura]]
# [[Escape From Station 52 by Emanoel Melo]]
# [[WHAT HAPPENED? by Mercedes Acosta]]
# [[Detours by kinsey, Plum, Roscoe Rappaport, Autumn Rain, Sam]]
# [[VoltAge:Genesis by Golden Fish Entertainment]]
# [[The Majesty of Colors by Future Proof Games, M Avery-Weir, Gregory Avery-Weir]]
# [[3 BONES by Brian Bình]]
# [[This Is My Final Recording by Havocfett]]
# [[Disobedient Sheep by sicklydove]]
# [[An Altogether Different River by ehronlime]]
# [[Dear Poppy by jeeyonshim]]
# [[Robot Wants It All by Hamumu]]
# [[Fair Winds and Following Seas by Tabletop Hotdish]]
# [[The Steadfast and the Rebellious by W.H. Arthur]]
# [[Our Innermost Thoughts by Travis D. Hill]]
# [[City - Game Tileset by ludicarts]]
# [[Ocean Tides: A Game of Entanglements at Sea by S. Gates/August]]
# [[Into the Fae Woods by Eliot Silvarian]]
# [[Science Girls! by Hanako Games]]
# [[Fear & Loving by hellabytes]]
# [[GearHead Caramel by GearHead]]
# [[This Body of Mine, I Will Make it a Temple by Aliza A Courtney]]
# [[Orwell: Keeping an Eye on You by Osmotic Studios]]
# [[Pale Cachexia by Argent Games]]
# [[Full of Memory & Anger by Riverhouse Games]]
# [[Tic-Tac-Crow by droqen]]
# [[HG101 Presents: Castlevania by Hardcore Gaming 101]]
# [[NO LOVE'S LAND by Adira Slattery]]
# [[Steamed Hams by Havocfett]]
# [[Chasing the Ace by Z. W. Garth]]
# [[Micron by Apparition Games]]
# [[Queering Spacetime (Print and Play) by jellolin]]
# [[The Crystal Golem by Luis S.]]
# [[My Nuclear Octopus by PsychicParrot | Tea Monster Games]]
# [[Void Wisp by D. W. O'Boyle]]
# [[Clear Eyes / Full Hearts by EricSilver]]
# [[Cat Ace by Misc. Labs]]
# [[The NPC with a Thousand Faces by Firgof]]
# [[Pyo by Cassie!]]
# [[BEACH EPISODE by Legendary Vermin]]
# [[1400 SNEAK by Unknown Dungeon]]
# [[Phanta by Kegan (@Keganexe)]]
# [[Smoke, Fuel, & Fire by eldritch mouse]]
# [[Wart Worm Wingding! by John Vanderhoef]]
# [[Hi-Score Boi by 88Domo]]
# [[Bear by roll / flip / draw]]
# [[Solipstry by Alex Rinehart]]
# [[Elephant Hunter Hunter by balmut]]
# [[You Cannot Kill Me in a Way That Matters by Deus Ex Minima]]
# [[Mech_Romancer Charity Bundle 1 by Silentman]]
# [[Lost Order by usducktape]]
# [[OCEANS 2400 by AwkwardTurtle]]
# [[Dealings in Dungeons by Sophie Houlden]]
# [[Pixel Character - Classes by Admurin]]
# [[Sapling Soul by breathingstories]]
# [[Bear Acquaintances by Havocfett]]
# [[Let Me Take a Selfie by Thoughty by Beau Jágr Sheldon]]
# [[Moonstone Deep by criacuervos]]
# [[MYNT - An RPG System by OneGameDad]]
# [[Sophie's Cubes by Sophie Houlden]]
# [[Last Knights On Earth by Reizor]]
# [[Simple DeeEnDee by Evey "Filth Gnome" Lockhart]]
# [[Magic Trick by MagicTrick, Alex Arancibia, sauvft, Erica Li, Bosslv0, Herman Wu, Kittynugget, jellolin, Georgio Klironomos]]
# [[Dredge by scyllallycs]]
# [[Folk, Form, Phenomenon by hugeboar]]
# [[Embedded Heart by sjess]]
# [[Landlord of the Woods by madison karrh]]
# [[take root-perennial edition by katykoop]]
# [[Central Limit Theorem by Amicable Animal]]
# [[8 Bit Space (ZX Spectrum Inspired Platformer) by GlassFrogGames]]
# [[Divination by Adrian Lumm]]
# [[Big Gay Roadtrip by RoseArtemis]]
# [[Code Dungeon by Stealcase, Waks]]
# [[Traveler by Caelyn Sandel]]
# [[Æthernet by Legendary Vermin]]
# [[Rainworld by llemoi]]
# [[Reliquary by Gordie Murphy]]
# [[The Rise and Fall of Cataclysmo by codecloak]]
# [[Cosmic Metal + Fuel by emmy]]
# [[NoSeq by Adil S]]
# [[Mini Loops by Yadu Rajiv]]
# [[Others by Kate Bullock]]
# [[Heart Home by Will Uhl]]
# [[2400 BC: Ancient Apocalypse by Oz Browning]]
# [[ALL @ ONCE by Lawrence Marable]]
# [[Bombing!!: A Graffiti Sandbox by Devon Wiersma]]
# [[Six Figures Under by Blinking Birch Games]]
# [[In The Deep, Deep River by Diwata ng Manila]]
# [[May Project Na Naman Si Kapitan? by John Erwin]]
# [[Fake Illusions - Encore Update by Auroriax (Tom H.)]]
# [[The Knights of the Road by bordercholly]]
# [[The Sea Shall Carry Us Home by Hans]]
# [[Catty & Batty: The Spirit Guide by muddasheep]]
# [[AI Cards by Paolino Caputo]]
# [[ParaMonsters and the Haunted Escape Room by Moon Metro Digital]]
# [[LSD: Liquid Science Doom - A Troika Zine by Roz]]
# [[Optivox - The Voxel Modeler for Game Development by Nat]]
# [[A Day at the Crystal Market by Fen Walters]]
# [[Gunbuds by Scott LaGrasta]]
# [[Roving Bastion Armsweir: Operation Eclipse by Whycalibur]]
# [[These Lands by JestyJam, astrochimpstudios]]
# [[Robots & Ruins by Brian Bình]]
# [[SHNIPERS by Brenden Cameron]]
# [[Infiniboss by Happy Frog Games]]
# [[Drones, The Human Condition by Blunt]]
# [[What's So Cool About the Wastes? by Will Brunn]]
# [[Ballsy! World Cup 2020 by properlydecent]]
# [[Pleasant Dreams: The Welcoming Play of Kirby's Dream Land by Joel Couture]]
# [[Pull Me From the Earth by Corvyn Appleby]]
# [[Fear is Just a Lie by KatSelesnya]]
# [[The lost artifacts by SorceressGameLab]]
# [[Four Elements' Light by Sungrass Press]]
# [[Celeste (English Version) by Roll&PlayMedusa]]
# [[The Spirit of Small Gifts by theinstagrahame]]
# [[CORPUS by Sebastian Yūe]]
# [[Maytaway Quarterly 1.1 by Tinker Taylor Publications]]
# [[Color Jumper by Tallbeard Studios]]
# [[void.Resign by avarisclari]]
# [[Wanderhome's Sunshine Natures by Maria Mison]]
# [[Life of the Poultry by John Erwin]]
# [[The World is Ending and We Are Very Large Dogs by Eden]]
# [[Into the Glacier by Peach Garden Games]]
# [[Season of Dreams by blakeryan]]
# [[One Hour Worldbuilders by Kaelan DM]]
# [[Antistatic by bluehexagons]]
# [[A Light Long Gone by muddasheep]]
# [[The Tarot Crawl by Wheels Within Wheels Publishing]]
# [[Follow Me in the Night; a Cursed Radio by Rat Wave Game House]]
# [[On the Wings of a Red Dragonfly by NinjaPenguinAM]]
# [[Freaky Fish DX by DESIGN/chaos]]
# [[The Walls That Keep On Growing by somewhere with stories]]
# [[2021 Subscription Bundle by gregor-vuga]]
# [[THE DOOR by arblox]]
# [[The Words and Deeds of the Chain of Tlachic by VVVisection]]
# [[In me, a constellation - a cosmic personality quiz by Nate Kiernan]]
# [[Marchland by glitchirs]]
# [[Snowdown by The Bonsai Treehouse]]
# [[The GUTS+ System by Alamantus GameDev]]
# [[Keep in Touch by dumplingsquid]]
# [[MindExplorer by Michael Klamerus]]
# [[Babel by David Blandy]]
# [[Aye Aye Captain by NorthStateGames]]
# [[the silence by 8bitpxl]]
# [[Super Mutant Slayers by Brendan Hesse]]
# [[Abyss Below by Sofia R.]]
# [[Neutron Axe by Gem Room Games]]
# [[/dia by tim zee]]
# [[Usurping Death by adamebell]]
# [[SIGNAL//r021 by hexavexagon]]
# [[PheVer by o.hybridity]]
# [[No One Lives Here Anymore by Goat Song Publishing]]
# [[Runt Tabletop Roleplaying System by Devon Wiersma]]
# [[Arachnowopunk by elsif]]
# [[Pictassembler by Active Up Games]]
# [[Cryptid (Mis)Communication by WhatNames]]
# [[Diàn Xīn (电心) Electric Heart by Drazillion]]
# [[Black Box by theinstagrahame]]
# [[Fractal Romance by ostrichmonkey games]]
# [[Tiny Terrors by angrynerdgirl]]
# [[Bringris by Zeno Rogue]]
# [[cryptkeeper by pancelor]]
# [[Rewwixta by Għar Gremxul]]
# [[We Have Lost... by Donogh]]
# [[Tapioca Rider by st33d]]
# [[Once Upon a Birthday by Lynne M. Meyer]]
# [[Four Kids Play a Game by Noorasphere]]
# [[Timespell by watermosaic]]
# [[Anime RPG Tile Pack - Vol.1 School [PIXEL OF LIFE] by rbatistadelima]]
# [[The Furniture Of Self by skodone, causacreations]]
# [[IGEO by Mindnumb Interactive]]
# [[Steel Seraph (Early Access) by deepshock]]
# [[Alien Death Mob by Pug Fugly Games]]
# [[Oneons: Prisoners by NightBlade]]
# [[The Shadow Among the Stars: Book One of the Dread Naught Trilogy by Dylan Wayne Sanchez]]
# [[Bear-ly There by Pale Moon Games]]
# [[The Final Undertaking by kay w.]]
# [[Flintlock by Glaive Guisarme Games]]
# [[Trusted with Its True Name by CurseNightGames]]
# [[Running Away (a small guide) by neen lancaster]]
# [[Terroir by General Interactive Co.]]
# [[How to Embrace a Swamp Creature by Rat Wave Game House]]
# [[An Ode to Todd the Toad: Frogcare! by SodaPOP67]]
# [[Detail by HorsepondMine]]
# [[The Scarlet Village by Rat King Collective]]
# [[No One Goes Alone by naomithinksit]]
# [[Book of Eos by testzero]]
# [[Galére des Sorcières by llemoi]]
# [[YBit by MonoFlauta, Iván Piccione]]
# [[Goopty Goo by Dylan Brown]]
# [[Legend of the Lost Dragons by Alex Seletyn]]
# [[Classic JRPG Music Pack // Grand Pack by Rest!]]
# [[The Hero of Budgie Island by Team Comicade]]
# [[Ganancia by C. A. Berlitz]]
# [[Victor's GM-less Oracle by CurseNightGames]]
# [[Compromise//Empire by Swamphen]]
# [[Eternia: Pet Whisperer by Shinmera]]
# [[From Sea to Shining Sea by Speak the Sky]]
# [[MoonPunk by wannabegames]]
# [[THE CORRIDOR by Thomas Mackinnon]]
# [[You Are A Whale Part 1 by Jack Hart Games]]
# [[Flashover MegaSector by Happy Frog Games]]
# [[Squeaker Dialogue Editor by ActionGamerAaron]]
# [[Snake vs Snake by Pretty Fly Games]]
# [[Treasure Box by Kate Bullock]]
# [[Dangerous Times by Michael Bacon]]
# [[Long Journey Home by skiddyhale]]
# [[The Temple of Karthis by ArcturusAsriv]]
# [[UNBEATABLE: DEMO TAPES by D-CELL GAMES]]
# [[Untitled Darkness by 8bitpxl]]
# [[DUNGEON [NEW COLORS] - Pixel Art Tileset by Zapchi]]
# [[Do Something by 925 Games]]
# [[Book of Common Games by Kyle Latino]]
# [[The Mouse, the Bird, & the Sausage by MrReciprocity]]
# [[yarne by rowanqueue]]
# [[Clown Helsing by Planarian]]
# [[Catlandia: Crisis at Fort Pawprint by Polar Tabby]]
# [[inter-view (original soundtrack) by Megan Carnes]]
# [[Zoopolitan Skybridge Goons by Role Over Play Dead]]
# [[MΣTΔ by Tragos Games]]
# [[Laser Paddles by tracfacsam]]
# [[Light Borrower by Jonah Pulsipher]]
# [[This Panda Needs You by Rob Stenzinger]]
# [[Portal Dogs by Brain Connected]]
# [[Serendipity by Maria Mison]]
# [[Words, Wilting by Adelaide Rieck]]
# [[Turn-Based Champion by LostLightStudio]]
# [[Hell Holes by Aryxymaraki]]
# [[Fat Slice 2 by ChewOnGlass]]
# [[Doorways by lukewasthefish]]
# [[The Rain Still Falls in My Heart by Roz]]
# [[Pixel Driver - Fast paced infinite driving by Pretty Fly Games]]
# [[sweet*peony by Adam Silverstein]]
# [[The Count of Monte Carlo by PhilBlank]]
# [[Iron Edda Accelerated by TheOtherTracy]]
# [[Nosferatu Pocket Pals (GB Studio) by BeachBoogeyman]]
# [[13 Thieves by JimIsKindaCool]]
# [[The Winding Journey by ArcturusAsriv]]
# [[Cloud Serpent by Tad Patterson]]
# [[Team Hogus: GHAMEMFAIFTH OTHIYLTIM by Happy Frog Games]]
# [[Food Flinger VR by Eric Guadara]]
# [[Don't pay the Ferryman by blakeryan]]
# [[Shrine to Anubis by Stuart Foley Games]]
# [[Mixolumia EP by davemakes]]
# [[QUACK ATTACK 1985: TURBO DX EDITION by ATTACK MOUNTAIN]]
# [[Birds Love Dirt! by Emily Jankowski]]
# [[The First Greek Odyssey by JBo]]
# [[Praedormitium 2nd Edition Quickstart by Joie Martin]]
# [[Total Arcade Racing by Pretty Fly Games]]
# [[Our Sacred Waters by Diego/Marshland Games]]
# [[wonShot by Didactricks]]
# [[BOX by EllenElzai]]
# [[Limiter! by Alex 'Tid' Knowles]]
# [[10mg: Sealed Estate by Salman Shurie (Salman_Shh)]]
# [[The Macramancer PUZZLES by CalixJumio]]
# [[Slow Fire by Rúnica Games]]
# [[Notebook Artillery by Austin Ivansmith Games]]
# [[Headlong Racing by PsychicParrot | Tea Monster Games]]
# [[Rorschach by EmCannon]]
# [[Unnatural Watches by David S Gallant]]
# [[ODDS & IRONS: Dino Combat Racing (print & play edition) by Honeycomb Interactive]]
# [[Mending Wall by Eric Guadara]]
# [[PhasR by Hirunda/Max Pirotais-Wilton]]
# [[All Hams on Deck! by The Bread & Butter Game Co.]]
# [[DUNGEONBLADE - HAUNTED KINGDOM by Bitl Development Studio]]
# [[Filmmakers Without Cameras: a film and games zine by Eryk Sawicki]]
# [[Toy Kingdom 2 by MoonRift Entertainment]]
# [[Card Clash by Alamantus GameDev]]
# [[Hexed by Misfit Games]]
# [[DW by Space Dog]]
# [[Anarchopunk 2020 by Julian Kay]]
# [[Meditation 5 by Thunder Perfect Witchcraft]]
# [[Rulent Tower VR by Setsune]]
# [[Ravaging Mob by C. A. Berlitz]]
# [[Wool of Bat by Bethany Harvey]]
# [[O O O by RexTGun]]
# [[PepaFatal by battyRabbit, hatiTA, johannesgrewer, Absent_Dreamer]]
# [[Within the Walls - A text adventure by Asatiir]]
# [[Arcus by LWMedia]]
# [[Watchmaker's Apprentice by Therapeutic Blasphemy Games]]
# [[Visual Novel Music Pack // Tiny Pack by Rest!]]
# [[Collateral Thinking DX by Astrosaurus Games]]
# [[MetaWare High School (Demo) by Not Fun Games]]
# [[The Wordland Scape by Digital Monster Collective]]
# [[Borb the Birb by Ludonaut]]
# [[Keris & The Dream by Nana]]
# [[wanderzone by jakeyouh]]
# [[I Knew You Would Find This by Nessa Cannon]]
# [[IRL: The Game by Ghostboi]]
# [[Putrid Shark by Carly Besterman]]
# [[soft by quasiotter]]
# [[Burger Maestro by Celine]]
# [[Nasty Little Man by Wes Does, gamewill, Lia, Midoski]]
# [[The Eurojank Manifesto by spiders]]
# [[Just Another Day by Game Overtures]]
# [[The Forgotten Caves of Foolish Linger by Oliver Hightower]]
# [[HomeTeam GameDev training library: gamedev textbook, examples, exercises, articles, productivity & philosophy audiobooks by HomeTeam GameDev]]
# [[Greedy Bubble by sgshow]]
# [[cloudshear by Shelves' Schwa]]
# [[Space Hole 2016 by Zimmbous]]
# [[Knights by Alamantus GameDev]]
# [[The Red Door by yunglads25]]
# [[Kero-Go! by Rabbitnaut Games, brukerotan, saoricih, Jurts]]
# [[Worldcraft by Polydash, Theodull]]
# [[Interstellar Errands by joshg]]
# [[Ravaged Space by Steven Lambert]]
# [[Baby Labor by Zhenia Zankov]]
# [[Martial Cards by Fabian Fischer]]
# [[A day in the life of a writer by Gurpegui]]
# [[Zookoban by Robin Johnson]]
# [[AcChen - Tile matching the Arcade way by preussie]]
# [[Rettend - File #1 by Majdf Wolf]]
# [[Beppo's Hole in One Golf by whilefun]]
# [[Crab Bucket by Havocfett]]
# [[Conversations With My Anxiety by Digital Daydream]]
# [[Migracciones by learto_ler]]
# [[Walking the Future by Randy Lubin]]
# [[Kaiju Klimb by Jam Jar Entertainment]]
# [[Honey Twigs by Charu Tak, crayoncat]]
# [[Alone on a Map by K-Ramstack]]
# [[Learning What Joy Is by neen lancaster]]
# [[Breaker Blocks - Print & Play by Jake Vander Ende]]
# [[A Hell of a Journey by arirav]]
# [[The Life of Saint Fiona Bianco Xena by Fantasia Malware, Chloê Langford]]
# [[gradient overlay 2019 by splash mob]]
# [[Microscope Madness by Nocturne Games]]
# [[Revels in the Heavenly Hall by HB]]
# [[Casual Controller UI Overlay Graphics by LotsOfStuff]]
# [[Nib by kurtataylor]]
# [[i hurt myself - postjam edition by pastellexists]]
# [[Locomancer by Selkcip]]
# [[Take a Seat! by Miranda Cornelius-Fisse]]
# [[Nectar of the Gods: Offline Edition by Ben Thomas]]
# [[Feisty Heist by Justin McDaniel Games]]
# [[Clover Sans by LemmaEOF]]
# [[Hope's Peak by KalleMacD]]
# [[chickenswamp (5/10) by pancelor]]
# [[96 by Spongey Kitty]]
# [[Cyber Hamster Tilt by Mrrix32]]
# [[New Spirits by NoahlSeymour]]
# [[Lesbian Mothman Hunters by Zoe Lillith A.]]
# [[Dx Ball Shooter by PLAY PLUS PLUS]]
# [[MAYHEM by Bitl Development Studio]]
# [[Shmup Ball by RewdanSprites]]
# [[Chamber.Repeat(); by indiegesindel]]
# [[Mountaineer by GusFuss]]
# [[Neon Baller 0.1 by Honeycomb Interactive]]
# [[Stylized Fruits by FR4CT1ONS]]
# [[The Target by Raul Fontoura]]
# [[Le Prix d'Escalier by SweetHeart Squad, ianmart1n, Sean]]
# [[Pixel Wheels by Aurélien Gâteau]]
# [[Escape Room - The Sick Colleague by olipool]]
# [[Do I Pass? by Taylor McCue]]
# [[Sightline by winterbeak, sai ziju]]
# [[Pixel Playing Cards Pack by George Blackwell]]
# [[SpaceEscapeObstacles by Space Escape Obstacles]]
# [[Pico-8 Multicart by Roc Studios]]
# [[Happy Campers by Anna Webster]]
# [[AFTER SCHOOL by FEVERFICTION]]
# [[They Came From Uranus! by Projector Studios]]
# [[Little Square Things by gbelo]]
# [[Draw Nine by Damon L. Wakes]]
# [[Path of Tengri by Willowblade, ♪ Isabella Lau ♫, D4yz]]
# [[Image of Perfection by Crystal Game Works]]
# [[Wave_Machine by C.Bedford, tom]]
# [[Make It Last: While You Can by Strawberry Dagger Studio]]
# [[Harrowing Hunts (Vol 1) by Alex Rinehart]]
# [[16x16 Simple Pixel Art Weapons by Powered By Decaf]]
# [[Cross The Road by PLAY PLUS PLUS]]
# [[Fäiser by MOKKA]]
# [[2ECONDS TO STΔRLIVHT: My Heart's Reflection by SKY HOUR WORKS]]
# [[Eldritch Courts of Some Repute by AlanOfAllTrades]]
# [[Who Let the Critters Out?! by Ami C]]
# [[My Little Pony: Super Ethical Shipping Climax! by Caramel Truffle]]
# [[Crawl Space by Shubshub]]
# [["Gamer"+ Crossroad of Sympathy by Dunder-P]]
# [[KISSING COMRADES by Adira Slattery]]
# [[The Buried Tower by Ben K Rosenbloom]]
# [[_________ (What Even Is That Thing?) by Rowan Crawford]]
# [[NEO-PROGRAMS by Lyrdinn]]
# [[Balloon Party by ImmortalLen]]
# [[Help! I'm A Tetra Block! by Nana]]
# [[Genrenauts: The Complete Season One Collection by Michael R. Underwood]]
# [[Green Lineages: A Fifth Edition Fledgling by Animancer]]
# [[The Adventures of Yulpers! Soundtrack by Snabisch]]
# [[Sangwich by Riker]]
# [[Cantrip by Joeri]]
# [[Planetary grapple by PhilipL]]
# [[Blood Under the Bridge by Bahiyya]]
# [[its been a while since i went for a walk by linhtropy]]
# [[Mailbag for a Tattered Nation by Mythalore]]
# [[Mother Island by Anas Iqbal]]
# [[Pressure by smt]]
# [[Skuiggle by MOKKA]]
# [[Shovel Escape by denglishdesign]]
# [[Monstrata Fracture by Astralore]]
# [[My Book Project by jpyeah]]
# [[Being by delta / iasmin omar ata]]
# [[Winsome Heartwood by The Spinel]]
# [[High Moon by imsobadatnicknames]]
# [[The Trolley by Essay Games]]
# [[Cook & Hero by Raul Fontoura]]
# [[Light of Darkness by 1Thunder]]
# [[Kick Rocks! by Charu Patel]]
# [[Piece of Fate by Pablo Dapena]]
# [[The Quest for One by blue lander media]]
# [[Witches and Bandits and Swords (Oh My) by Krunchy Fried Games]]
# [[Basil goes O.U.T.S.I.D.E. by insrude, manaatti]]
# [[Sunrise by EckartG]]
# [[Solar Blaster: Challenge Stage by GS.Games]]
# [[Somewhere Better by TangledVirus]]
# [[Wizardish by Eduardolicious]]
# [[Dee Dum (Computer) by Eric Guadara]]
# [[Rayguns, Robots & Rocketships! by Into the Weird Blue Yonder]]
# [[Izil's Adventures: Blackfeather's Legacy by Mr. Thee]]
# [[Modular Cabin by Erika M]]
# [[SPARE by Luke Meeken]]
# [[Cosmonauts by The Enby Witch]]
# [[Space Hole 2018 by Zimmbous]]
# [[An Oath In Kind by Runa Liore]]
# [[Moving (On) by quackoquack]]
# [[TTRPG Design Lenses by hexavexagon]]
# [[ProcrastiTyper by Jacob Dunbar]]
# [[A Dragon And A Bear Sing A Song by Hien Pham]]
# [[Jungle Waterfall Battlemap [30 x 20] by gurkenlabs]]
# [[Harvesterado by Matthew Lawrence]]
# [[TORO by Flyover Games]]
# [[I Found a New Friend by Adri]]
# [[Learn Japanese To Survive: Kanji Combat OST by Slaleky]]
# [[HEART//BEAT by Cadey LaBonte]]
# [[Westernvania Asset Pack by rbatistadelima]]
# [[burgerline by zzox]]
# [[The Spooky Manor by Itomi Bhaa]]
# [[Dark Abstract Backgrounds by Roboxel]]
# [[PRAGMA by tuskgame]]
# [[Bus of the Desert by Aaronacious]]
# [[La maleta by Potajito]]
# [[tiny rainbow rebels by jellolin]]
# [[/RUN by Factory 29]]
# [[The Sky Left Us [Demo] by Ratworm Games]]
# [[Stillfleet ☉ Quickstart Rules by stillfleet]]
# [[The Artesian Well by garlicbreadandroses]]
# [[One Child's Heart by Unicorn Motorcycle Games]]
# [[Diver by Adam Freeman]]
# [[Brother, Silent by nikolaj munk]]
# [[Hazard by Adam Freeman]]
# [[Tap Strike BOOM! by Alberto SM]]
# [[Sketchy Racing by PurpleDogGames]]
# [[The Corwyn Catacombs (5E) by Animancer]]
# [[Bumble Butt by The Neon Infinite]]
# [[LIL' DRONE by TheShadyColombian]]
# [[PIPO'S ON THE RUN by maumau, musicbycamo]]
# [[Space Fuel by MXT Games]]
# [[Restricted Airspace by Ramsey Nasser]]
# [[Hack FPS by r3sgame]]
# [[Cairn by ImMatureTony]]
# [[BlackJack Math by Heavy sheep games]]
# [[Unto the Night by Nic June]]
# [[Ceilings by Game Overtures]]
# [[BROCCOLI QUEST by natch]]
# [[To Duel List by Rocket Raw, Dead Pixel Games, Zernimax, Naburo]]
# [[ALEPH {a life} by mohamed chamas]]
# [[Cyberhold (Prototype) by Asatiir]]
# [[The Missing Locksmith by Elle Osili-Wood]]
# [[Denial & Yearning by Soft Chaos]]
# [[Cosmic Courier: Trapped in Limbo by Bryanrollins]]
# [[Drum Controller by Yigurn]]
# [[Robo Runner by Ellisjames20061]]
# [[Brave Zenith - Playtest by Roll 4 Tarrasque]]
# [[Simple&Easy Localization Tool Unity by Matias Mellado]]
# [[A Wave of Lights by TabbbyWright]]
# [[you understand kawaii by Komitsu]]
# [[Doujins and Dragons by Jacoder23]]
# [[Flewberry by Alex Garbus, CandleTheCat]]
# [[I don't belong - A visual Novel by Mcportugalem]]
# [[A Pestilence of Maths: A Mörk Borg Adventure by Bannerless Games]]
# [[The Endless Empty by L a u g h]]
# [[OCHITSUBAKI DEMO by feyxuan]]
# [[8 Links by Anton]]
# [[eat-it-all by aryaburke]]
# [[Enchantement, Vanité, & Tendresse by fiercefully]]
# [[zip: set one by James Shipp]]
# [[becoming the future by Michael]]
# [[UNBEATABLE [white label] by D-CELL GAMES]]
# [[Void Runner by Victor Soudien]]
# [[the worm game (SOUP 1.0) by loren schmidt, Everest Pipkin, withering systems]]
# [[In Extremis by LNDFRR]]
# [[Who Killed My Father Academy! by Ntagonistic]]
# [[Bart vs. My Hopes & Dreams by goodolvic]]
# [[Ace Baker by *AAmici]]
# [[Trainsmission by Ryan Kubik, ezrabell, Lia, Kavan Bahrami, trainsaw]]
# [[Jardin by Khamelot]]
# [[KAIMA by NomnomNami]]
# [[death by flower arrangement by Sylverstone Khandr]]
# [[Motel 666 by Game Overtures]]
# [[Concave Shooter by zulmetefza]]
# [[when it's safe again by linhtropy]]
# [[Beyond The Bow by clairitee, kierab, Maak no cheese]]
# [[Letters Long Lost by Shallow Lagoon]]
# [[Lucid: Parables of the Ubermensch by SuccessStudios]]
# [[Soft Underbelly by rosa✦atelier]]
# [[Slimes by scitydreamer]]
# [[Calico by Elliot Herriman]]
# [[Staxter by Jeran]]
# [[She Who Fights Monsters: Choice Edition by Gaming Pixie]]
# [[Blinck Island Returns by Klaus tehKurios]]
# [[inter-view by Megan Carnes]]
# [['The Attendant' by andrewmck]]
# [[Overground by Rosa Carbo-Mascarell]]
# [[Retromancer by Spinfoam Games]]
# [[Alone in the Grey by Roxra, FalconHead]]
# [[Para//ax by Tech]]
# [[Qavo by Masen Sodki]]
# [[The Tall Wall Falls: The Inner Gate's Last Stand by request]]
# [[Obstacles by Darren K]]
# [[Gyro Boss DX by Chequered Ink]]
# [[STRAINGE by Rocket Raw, Naburo, Zernimax]]
# [[The Law by thisisnotafunnygame]]
# [[Illusory Dreamlight 1: Deprimerie by Hajimeli (Cheryl Stelli)]]
# [[Roses Will Rise by Asatiir]]
# [[Good Morning Drifter by lowpolis]]
# [[Playground by FigJig]]
# [[Running Askew by Kay H]]
# [[Con Rồng Cháu Tiên by linhtropy]]
# [[Safe Journey by jarnik]]
# [[Technoccult: Covenant by Eliot Gardepe]]
# [[Paris Gondo - The Life-Saving Magic of Inventorying (Text-Only Edition) by Kalum from The Rolistes Podcast]]
# [[Anamnesis by Blinking Birch Games]]
# [[Rosette Diceless by Future Proof Games]]
# [[Bat Lizard Bonanza by John Vanderhoef]]
# [[Prize by Kate Bullock]]
# [[Final Spike by Sean Heron]]
# [[Keep It Together by noms]]
# [[Centuries Outside History by Sniperserpent]]
# [[THIRD EMPIRE - VIOLENCE + BEAUTY by Darling Demon Eclipse]]
# [[Fight Item Run by Whimsy Machine]]
# [[Grow Big (or Go Home): Ultimate Edition by Quarant Inc.]]
# [[Troupe Ashcan by TheOriginalCockatrice]]
# [[Utopia Process by josiahtull]]
# [[Double Jump 2 by Genge Gaming Ltd.]]
# [[Positronic Potentials: The Nanny by Entwife Experience]]
# [[Bouncy Cars by assertchris]]
# [[GrimBlade RPG by Beckelhimer]]
# [[A Long Walk Home by Monte D. Monteleagre]]
# [[Push It In by BrokenBunnyStudios]]
# [[DEN by FriggingFrogs]]
# [[You Are What You Eat, A Chargen System for MOSAIC Strict by Paul Czege]]
# [[LIGHT: Trek to the Spire by Wheels Within Wheels Publishing]]
# [[Village Apothecary by HildaHay]]
# [[Slayers of the Strange by Alex Rinehart]]
# [[You Have 7 Days by Implausibly Josh]]
# [[🤖Trainsformation🚂 (+Characters) by Xavid]]
# [[Simple Complex Puzzle by PLAY PLUS PLUS]]
# [[Radiant Chaotic by The Chem GM]]
# [[#GGIG2022 - Global Games Industry Guide by Liam Twose @ #PitchYaGame]]
# [[PHN-HOME by Devin Raposo]]
# [[butterflowers by funsworkings, eastoned]]
# [[What Goes Pumpkin the Night by dragons but also rabbits]]
# [[Eyad and Hala by Fressneid Games]]
# [[Bloomblebee by lukr]]
# [[KFB - Fruit Picker by chriskettlefrisby]]
# [[The Pig: Money is Time by BennetDoesGames]]
# [[SUPER IS HOT by p𝒚𝒓ofoux]]
# [[Super Snake 3D by Arbigaus]]
# [[Lore Distance Relationship by Naomi Norbez (call me Bez)]]
# [[Ise & Kai: Chosen Throne by Rie Indie Games]]
# [[Aarre Safari Ride by aarre]]
# [[The Hunt for my GirlFriend by beer119]]
# [[space shooter by beer119]]
# [[Top of the Table Soccer by tim zee]]
# [[Fast Cubes by sgshow]]
# [[The Fane of the Hungry God by Bear Wizard]]
# [[Heartbeat by jonasmv]]
# [[Ball vs Block by VitaSoftware]]
# [[Antigas Constelações (sobre a Vila Itororó) by Menotti]]
# [[Lillyann by ImagiNovel]]
# [[High Society by FeyArcana]]
# [[2-3-5-7 by GoCreateFun]]
# [[Born to Run by EnviW]]
# [[Wandering Jewel Moons by taichara]]
# [[Boys Work by nilson]]
# [[Maudelyn's Quest by jlevstein]]
# [[World of Wyldrvir Core Book by Wyldrvir RPG]]
# [[The Piano Player by SquirrelHorse]]
# [[Bottle of Rum by ADRGames]]
# [[Caduceus by One_person]]
# [[Destruction Rocks by eleanorjmorel]]
# [[MUSCLE WORLD by fotocopiadora]]
# [[tulip kingdom by Michael]]
# [[eclipse protocol by Michael]]
# [[journey village by Michael]]
# [[Septiny by GabrielRRussell]]
# [[Metori by Fractured Mind]]
# [[When There Is No More Snow by Jeremy W. Kaufmann]]
# [[tetrible by henriforshort]]
# [[The Cookout by Dare2Dreamrpg]]
# [[Lacrymo Tennis 2016 (+ 2018) by Les Jeux d'la Tête]]
# [[On The Path by Cat Elm]]
# [[Painterly Field Scenery by MysteryCorgi]]
# [[Grow in the Hole by Ellis Spice]]
# [[The Coolest Combat System - A MOSAIC Strict System by Michael J Gibson, Nikki Yager]]
# [[Maker by TheGiftOfGabes]]
# [[Abandoned Fortress Battlemap [36 x 33] by gurkenlabs]]
# [[Space Battalion Alpha by RDav1988]]
# [[witches and stitches by Chloe Fantasista]]
# [[Chess and Dungeons by cyvet]]
# [[Chaussettes ! by Gobelin Nounours]]
# [[Socks ! by Gobelin Nounours]]
# [[What The Water Gave Us by JordannaGeorge]]
# [[JB Hairboll in Murder Flub by misanthropop]]
# [[Shipwreck Battlemap [35 x 30] by gurkenlabs]]
# [[Zero Hour by fdasta0079]]
# [[Just Another Day at the Office by Working Class Games]]
# [[Not the Robots by 2DArray]]
# [[The Empire Undying by Glaive Guisarme Games]]
# [[TabletopMusic.com - The Adventurer's Collection Tabletop Soundtrack by Slaleky]]
# [[Dragons of Tirenia Adventure Module: Double Cross (for use with 5e) by skybeargames]]
# [[Fruit of Law by Eli Seitz]]
# [[Prehistoric Dude by lightUP]]
# [[Head AS Code OST by Slaleky]]
# [[Adrift by Mitchell Daily]]
# [[Invertio by dichotomousCreator, skullstho]]
# [[Nokia World by Eyes 8]]
# [[Tetromino Chill by Dragon Chasing Games]]
# [[Wander the Cosmos by Niall Chandler Games]]
# [[Gifts from Arthur by musicworm]]
# [[Dead Bone World - d6 Necromantic Failures for Troika! by Roz]]
# [[What We Built, They Tear Asunder by XanOfMercia]]
# [[Clouds Holidays Expo by Bastien Barault]]
# [[demon DOIF by stpid juice, GoblinHat]]
# [[Density Experiment by RedSquirrelGames, Camie]]
# [[Click Miner (Ludum Dare 48) by jacksorjacksor (Richard Jackson)]]
# [[(current year) by alimakesrpgs]]
# [[More Bones Than You Can Count by gh0stea]]
# [[Senna Oaks Spaceship Trip Postjam by Glimmer]]
# [[Derpy Deep Drive by Extrone]]
# [[The Sun Will Set by 4DTri]]
# [[Drillmin by DPS2004, bunner]]
# [[Agoraphobia by Quaking Aspen]]
# [[Block Swap by Claudio Vertemara]]
# [[Znax by joyrider3774]]
# [[Dino Run by DevKage]]
# [[Black Sheep by WhiteLocke, mborgard]]
# [[MAGEROOM by RoryPumpkin]]
# [[Borbo's Quest by FrogSoft]]
# [[Journey to Safety by Monica Fan]]
# [[Enter, Patrocles by Brownpaper-Games]]
# [[The Derelict Speaks by Luzelli]]
# [[Cannonhead Clash (Atari 2600) by bluswimmer]]
# [[Asteroids, Inc. by Reppo Games]]
# [[Tee-riffic Golf. by Greg Alderton, Jake Walker, Luke Odufona, Mitch Russell, Thomas.pr.bell, Lou Thompson, RougeCommando, JosefGriffiths, Narrok, Neil Blythe, SadOrange, cyberafterlife, dan.umf]]
# [[20x20x20 by Dan Butcher]]
# [[Hungry Frog by ragir]]
# [[Storyteller by Pandion Games]]
# [[Hemo Racers by Rokashi]]
# [[Thrown for a Loop by DMan1198]]
# [[Mop Boy Demo but better by MopBoyStudios]]
# [[Gratia by ChaoticTeal]]
# [[Free Pixel Art Fruit Assets by Sights33r]]
# [[Math Labyrinth by Zorzamoth]]
# [[Hopper by TwistdRabbit]]
# [[Bring Your Own Oxygen by EverestVonV]]
# [[Linearity by Coneja Mutante]]
# [[Coriander and The Fall of Orion by blade_kissed]]
# [[Surfacing by AllonBachuth]]
# [[Tile Crusher by Mike Murray]]
# [[Cat Tower by Patoli Studio]]
# [[Wizard's Adventure by CaseM]]
# [[that smiling game by Dorgam]]
# [[Totally planet by monro93, tgarrey, Xiaka, GizmoMogwau]]
# [[Cathode Ray Tube VR by aarre]]
# [[Safari Zone OST by Slaleky]]
# [[Don't Look Down by WiizRDz]]
# [[The Gannet by Chiligoat]]
# [[Control : Override by B-Deshi Dev]]
# [[Let's Go Paint! by vaasu]]
# [[Knights of the Round Torus by Triger Mountain]]
# [[LightUp! by irishgreencitrus]]
# [[Grumpy Librarian by classheikki]]
# [[Our Land is Gone by Kobold In a Box]]
# [[Voxella by Theepicosity]]
# [[My Personal Hilopet by hilovids]]
# [[Celestial Links by partialmoon]]
# [[Iera Entera by Nathan Blades]]
# [[Decommissioner - GBJAM8 2020 by Onsensoft, JYoungman]]
# [[Guardian of the Code by Cirnol]]
# [[Pixels Out of Space by dim3, Cyberleaf Studio]]
# [[Jezebel and the Flame by Francisco Cañete]]
# [[VR Kayaking Game (Demo) by Hirunda/Max Pirotais-Wilton]]
# [[OST Composing Jam 2021 - Laios Goldbeck by Laios Goldbeck]]
# [[Kickflip the Hierarchy by Funelie]]
# [[Gebo by Empty Studio]]
# [[Blue Bayou by bokoyoss]]
# [[Super Wiloo Demake by lightUP]]
# [[Radio Fall by Michelle Lytle]]
# [[b i t t e r h e i m by oblong]]
# [[Kiwi by MoonRift Entertainment]]
# [[Heartstrings by dreamlogician]]
# [[hollow by HollowGame, Laraalleygames, Felipe Simas, Hazel Arroyo, Mitchell Loewen]]
# [[Lost by Laraalleygames]]
# [[Sunflower Maintenance / 向日葵のメンテナンス by dichotomousCreator, skullstho]]
# [[Martian Space Blaster by Jack DeGregori]]
# [[Kaleidoscope by bimxbim]]
# [[Pillars on Poppy Hills by Knickknack PJ]]
# [[Retro Cyberpunk Music Pack by imsobadatnicknames]]
# [[Hot Garbage: A Keysmash Story by Tucker Wooley]]
# [[The Wooter by nakina]]
# [[The Three Musketeers by Ahmed Mo'nis]]
# [[The Quiet Lonely House by KLewis]]
# [[Bond: Wish of the Forest by Apple Farm Games, Erica Li, Tormod42, riko, Herman Wu, Jacob Compton, J-mo, Colin Watterson, Hunter Lynch]]
# [[TYRANTS by PhillipCorrado]]
# [[Hellhole Game by jkelly]]
# [[a shower story by ATJ]]
# [[Craft a King by Aaronsxl]]
# [[Adrift in Turbulent Waters by SaintlyStu]]
# [[VaporLight: Drifter by RePurpose/Play]]
# [[in pitch we are preserved by curricle]]
# [[Marsmallows & Monsters by The Kernel in Yellow]]
# [[Money Garden by xtase studios]]
# [[Easter Bunny on speed by jonasmv]]
# [[The Wanderer Vibes: Neon by tyedye105]]
# [[Space Hole 2020 by Zimmbous]]
# [[Extreme Tax Masters by Natalie Martin]]
# [[🐬 HUNGRY - (Bitsy) by Continew]]
# [[Palette Studio by Dieting Hippo]]
# [[Dodgy Boat by Vanther]]
# [[Blobbins by Hysteria Games, G_Neri96, nekju, Mordekai, Pietro Canovai]]
# [[Multilytheus by phoenixup]]
# [[PachaMama by Zeynab Mirzadeh]]
# [[Slimed by DillCurr]]
# [[Sole Iron Tail by MannyMallea]]
# [[Attention Heroes! by Lennert Koppe]]
# [[Seven of Heart by jonasmv]]
# [[Lutra's Monologue by Cordelia games]]
# [[CRNVRS (en, updated version) by DAKÍCORP]]
# [[MineFinitum by NekuSoul]]
# [[Calm Horizon by rayvshimself, hatiTA]]
# [[Karlson Run by The Missing Bracket]]
# [[Numbertron (Sharp MZ) by Joachim]]
https://itch.io/b/902/indie-bundle-for-palestinian-aid
$:/core/ui/ControlPanel/Toolbars
$:/core/ui/ControlPanel/Info
{
"tiddlers": {
"$:/themes/tiddlywiki/snowwhite/base": {
"title": "$:/themes/tiddlywiki/snowwhite/base",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\define sidebarbreakpoint-minus-one()\n<$text text={{{ [{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}removesuffix[px]subtract[1]addsuffix[px]] ~[{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}] }}}/>\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n.tc-sidebar-header {\n\ttext-shadow: 0 1px 0 <<colour sidebar-foreground-shadow>>;\n}\n\n.tc-tiddler-info {\n\t<<box-shadow \"inset 1px 2px 3px rgba(0,0,0,0.1)\">>\n}\n\n@media screen {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow \"1px 1px 5px rgba(0, 0, 0, 0.3)\">>\n\t}\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow none>>\n\t}\n}\n\n.tc-page-controls button svg, .tc-tiddler-controls button svg, .tc-topbar button svg {\n\t<<transition \"fill 150ms ease-in-out\">>\n}\n\n.tc-tiddler-controls button.tc-selected,\n.tc-page-controls button.tc-selected {\n\t<<filter \"drop-shadow(0px -1px 2px rgba(0,0,0,0.25))\">>\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-edit-tags {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-tiddler-frame .tc-edit-tags input.tc-edit-texteditor {\n\t<<box-shadow \"none\">>\n\tborder: none;\n\toutline: none;\n}\n\ntextarea.tc-edit-texteditor {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\n}\n\ncanvas.tc-edit-bitmapeditor {\n\t<<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-drop-down {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-block-dropdown {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-modal {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n}\n\n.tc-modal-footer {\n\tborder-radius: 0 0 6px 6px;\n\t<<box-shadow \"inset 0 1px 0 #fff\">>;\n}\n\n\n.tc-alert {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.6)\">>\n}\n\n.tc-notification {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n\ttext-shadow: 0 1px 0 rgba(255,255,255, 0.8);\n}\n\n.tc-sidebar-lists .tc-tab-set .tc-tab-divider {\n\tborder-top: none;\n\theight: 1px;\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.0) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.01) 0%, rgba(0,0,0,0.1) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.05) 0%, rgba(255,255,255,0.05) 100%\">>\n}\n\n.tc-message-box img {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n\n.tc-plugin-info {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n"
}
}
}
{
"tiddlers": {
"$:/themes/tiddlywiki/vanilla/themetweaks": {
"title": "$:/themes/tiddlywiki/vanilla/themetweaks",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ThemeTweaks/ThemeTweaks}}",
"text": "\\define lingo-base() $:/language/ThemeTweaks/\n\n\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n\\define backgroundimage-dropdown()\n<div class=\"tc-drop-down-wrapper\">\n<$button popup=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"\n\t$value=<<imageTitle>>\n/>\n\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n\\end\n\n\\define backgroundimageattachment-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\" default=\"scroll\">\n<option value=\"scroll\"><<lingo Settings/BackgroundImageAttachment/Scroll>></option>\n<option value=\"fixed\"><<lingo Settings/BackgroundImageAttachment/Fixed>></option>\n</$select>\n\\end\n\n\\define backgroundimagesize-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\" default=\"scroll\">\n<option value=\"auto\"><<lingo Settings/BackgroundImageSize/Auto>></option>\n<option value=\"cover\"><<lingo Settings/BackgroundImageSize/Cover>></option>\n<option value=\"contain\"><<lingo Settings/BackgroundImageSize/Contain>></option>\n</$select>\n\\end\n\n<<lingo ThemeTweaks/Hint>>\n\n! <<lingo Options>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><<lingo Options/SidebarLayout>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><option value=\"fixed-fluid\"><<lingo Options/SidebarLayout/Fixed-Fluid>></option><option value=\"fluid-fixed\"><<lingo Options/SidebarLayout/Fluid-Fixed>></option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><<lingo Options/StickyTitles>></$link><br>//<<lingo Options/StickyTitles/Hint>>// |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><option value=\"no\">{{$:/language/No}}</option><option value=\"yes\">{{$:/language/Yes}}</option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><<lingo Options/CodeWrapping>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><option value=\"pre\">{{$:/language/No}}</option><option value=\"pre-wrap\">{{$:/language/Yes}}</option></$select> |\n\n! <<lingo Settings>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"><<lingo Settings/FontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\"><<lingo Settings/CodeFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\"><<lingo Settings/EditorFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"><<lingo Settings/BackgroundImage>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" default=\"\" tag=\"input\"/> |<<backgroundimage-dropdown>> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\"><<lingo Settings/BackgroundImageAttachment>></$link> |<<backgroundimageattachment-dropdown>> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\"><<lingo Settings/BackgroundImageSize>></$link> |<<backgroundimagesize-dropdown>> | |\n\n! <<lingo Metrics>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\"><<lingo Metrics/FontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\"><<lingo Metrics/LineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\"><<lingo Metrics/BodyFontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\"><<lingo Metrics/BodyLineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\"><<lingo Metrics/StoryLeft>></$link><br>//<<lingo Metrics/StoryLeft/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\"><<lingo Metrics/StoryTop>></$link><br>//<<lingo Metrics/StoryTop/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\"><<lingo Metrics/StoryRight>></$link><br>//<<lingo Metrics/StoryRight/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\"><<lingo Metrics/StoryWidth>></$link><br>//<<lingo Metrics/StoryWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"><<lingo Metrics/TiddlerWidth>></$link><br>//<<lingo Metrics/TiddlerWidth/Hint>>//<br> |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\"><<lingo Metrics/SidebarBreakpoint>></$link><br>//<<lingo Metrics/SidebarBreakpoint/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\"><<lingo Metrics/SidebarWidth>></$link><br>//<<lingo Metrics/SidebarWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\" default=\"\" tag=\"input\"/> |\n"
},
"$:/themes/tiddlywiki/vanilla/base": {
"title": "$:/themes/tiddlywiki/vanilla/base",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\define custom-background-datauri()\n<$set name=\"background\" value={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}>\n<$list filter=\"[<background>is[image]]\">\n`background: url(`\n<$list filter=\"[<background>!has[_canonical_uri]]\">\n`\"`<$macrocall $name=\"datauri\" title={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}/>`\"`\n</$list>\n<$list filter=\"[<background>has[_canonical_uri]]\">\n`\"`<$view tiddler={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}} field=\"_canonical_uri\"/>`\"`\n</$list>\n`) center center;`\n`background-attachment: `{{$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment}}`;\n-webkit-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-moz-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-o-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\nbackground-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;`\n</$list>\n</$set>\n\\end\n\n\\define sidebarbreakpoint()\n<$text text={{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}/>\n\\end\n\n\\define sidebarbreakpoint-minus-one()\n<$text text={{{ [{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}removesuffix[px]subtract[1]addsuffix[px]] ~[{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}] }}}/>\n\\end\n\n\\define if-fluid-fixed(text,hiddenSidebarText)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" type=\"match\" text=\"fluid-fixed\">\n$text$\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">\n$hiddenSidebarText$\n</$reveal>\n</$reveal>\n\\end\n\n\\define if-editor-height-fixed(then,else)\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n$then$\n</$reveal>\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n$else$\n</$reveal>\n\\end\n\n\\define set-type-selector-min-width()\n<$set name=\"typeLength\" value={{{ [all[shadows+tiddlers]prefix[$:/language/Docs/Types/]get[name]length[]maxall[]] }}}>\n\n\t.tc-type-selector-dropdown-wrapper {\n\t\tmin-width: calc(<<typeLength>>ch + 4em);\n\t}\n\n\t.tc-type-selector-dropdown-wrapper input.tc-edit-typeeditor {\n\t\tmin-width: <<typeLength>>ch;\n\t}\n\n</$set>\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\n\n/*\n** Start with the normalize CSS reset, and then belay some of its effects\n*/\n\n{{$:/themes/tiddlywiki/vanilla/reset}}\n\n*, input[type=\"search\"] {\n\tbox-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n}\n\ninput[type=\"search\"] {\n outline-offset: initial;\n}\n\nhtml button {\n\tline-height: 1.2;\n\tcolor: <<colour button-foreground>>;\n\tfill: <<colour button-foreground>>;\n\tbackground: <<colour button-background>>;\n\tborder-color: <<colour button-border>>;\n}\n\n/*\n** Basic element styles\n*/\n\nhtml, body {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/fontfamily}};\n\ttext-rendering: optimizeLegibility; /* Enables kerning and ligatures etc. */\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\nhtml:-webkit-full-screen {\n\tbackground-color: <<colour page-background>>;\n}\n\nbody.tc-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/lineheight}};\n\tword-wrap: break-word;\n\t<<custom-background-datauri>>\n\tcolor: <<colour foreground>>;\n\tbackground-color: <<colour page-background>>;\n\tfill: <<colour foreground>>;\n}\n\n<<if-background-attachment \"\"\"\n\nbody.tc-body {\n background-color: transparent;\n}\n\n\"\"\">>\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n\tfont-size: 2em;\n}\n\nh1, h2, h3, h4, h5, h6 {\n\tline-height: 1.2;\n\tfont-weight: 300;\n}\n\npre {\n\tdisplay: block;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\tword-break: normal;\n\tword-wrap: break-word;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tbackground-color: <<colour pre-background>>;\n\tborder: 1px solid <<colour pre-border>>;\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\ncode {\n\tcolor: <<colour code-foreground>>;\n\tbackground-color: <<colour code-background>>;\n\tborder: 1px solid <<colour code-border>>;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\nblockquote {\n\tborder-left: 5px solid <<colour blockquote-bar>>;\n\tmargin-left: 25px;\n\tpadding-left: 10px;\n\tquotes: \"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\";\n}\n\nblockquote > div {\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n}\n\nblockquote.tc-big-quote {\n\tfont-family: Georgia, serif;\n\tposition: relative;\n\tbackground: <<colour pre-background>>;\n\tborder-left: none;\n\tmargin-left: 50px;\n\tmargin-right: 50px;\n\tpadding: 10px;\n border-radius: 8px;\n}\n\nblockquote.tc-big-quote cite:before {\n\tcontent: \"\\2014 \\2009\";\n}\n\nblockquote.tc-big-quote:before {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: open-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n left: -50px;\n top: 42px;\n}\n\nblockquote.tc-big-quote:after {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: close-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n right: -80px;\n bottom: -20px;\n}\n\ndl dt {\n\tfont-weight: bold;\n\tmargin-top: 6px;\n}\n\nbutton, textarea, input, select {\n\toutline-color: <<colour primary>>;\n}\n\ntextarea,\ninput[type=text],\ninput[type=search],\ninput[type=\"\"],\ninput:not([type]) {\n\tcolor: <<colour foreground>>;\n\tbackground: <<colour background>>;\n}\n\ninput[type=\"checkbox\"] {\n vertical-align: middle;\n}\n\ninput[type=\"search\"]::-webkit-search-decoration,\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-results-button,\ninput[type=\"search\"]::-webkit-search-results-decoration {\n\t-webkit-appearance:none;\n}\n\n.tc-muted {\n\tcolor: <<colour muted-foreground>>;\n}\n\nsvg.tc-image-button {\n\tpadding: 0px 1px 1px 0px;\n}\n\n.tc-icon-wrapper > svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\nkbd {\n\tdisplay: inline-block;\n\tpadding: 3px 5px;\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tcolor: <<colour foreground>>;\n\tvertical-align: middle;\n\tbackground-color: <<colour background>>;\n\tborder: solid 1px <<colour muted-foreground>>;\n\tborder-bottom-color: <<colour muted-foreground>>;\n\tborder-radius: 3px;\n\tbox-shadow: inset 0 -1px 0 <<colour muted-foreground>>;\n}\n\n::selection {\n\tbackground-color: Highlight;\n\tcolor: HighlightText;\n\tbackground-color: <<colour selection-background>>;\n\tcolor: <<colour selection-foreground>>;\n}\n\n/*\nMarkdown likes putting code elements inside pre elements\n*/\npre > code {\n\tpadding: 0;\n\tborder: none;\n\tbackground-color: inherit;\n\tcolor: inherit;\n}\n\ntable {\n\tborder: 1px solid <<colour table-border>>;\n\twidth: auto;\n\tmax-width: 100%;\n\tcaption-side: bottom;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\t/* next 2 elements needed, since normalize 8.0.1 */\n\tborder-collapse: collapse;\n\tborder-spacing: 0;\n}\n\ntable th, table td {\n\tpadding: 0 7px 0 7px;\n\tborder-top: 1px solid <<colour table-border>>;\n\tborder-left: 1px solid <<colour table-border>>;\n}\n\ntable thead tr td, table th {\n\tbackground-color: <<colour table-header-background>>;\n\tfont-weight: bold;\n}\n\ntable tfoot tr td {\n\tbackground-color: <<colour table-footer-background>>;\n}\n\n.tc-csv-table {\n\twhite-space: nowrap;\n}\n\n.tc-tiddler-frame img,\n.tc-tiddler-frame svg,\n.tc-tiddler-frame canvas,\n.tc-tiddler-frame embed,\n.tc-tiddler-frame iframe {\n\tmax-width: 100%;\n}\n\n.tc-tiddler-body > embed,\n.tc-tiddler-body > iframe {\n\twidth: 100%;\n\theight: 600px;\n}\n\n/*\n** Links\n*/\n\nbutton.tc-tiddlylink,\na.tc-tiddlylink {\n\ttext-decoration: none;\n\tfont-weight: 500;\n\tcolor: <<colour tiddler-link-foreground>>;\n\t-webkit-user-select: inherit; /* Otherwise the draggable attribute makes links impossible to select */\n}\n\n.tc-sidebar-lists a.tc-tiddlylink {\n\tcolor: <<colour sidebar-tiddler-link-foreground>>;\n}\n\n.tc-sidebar-lists a.tc-tiddlylink:hover {\n\tcolor: <<colour sidebar-tiddler-link-foreground-hover>>;\n}\n\nbutton.tc-tiddlylink:hover,\na.tc-tiddlylink:hover {\n\ttext-decoration: underline;\n}\n\na.tc-tiddlylink-resolves {\n}\n\na.tc-tiddlylink-shadow {\n\tfont-weight: bold;\n}\n\na.tc-tiddlylink-shadow.tc-tiddlylink-resolves {\n\tfont-weight: normal;\n}\n\na.tc-tiddlylink-missing {\n\tfont-style: italic;\n}\n\na.tc-tiddlylink-external {\n\ttext-decoration: underline;\n\tcolor: <<colour external-link-foreground>>;\n\tbackground-color: <<colour external-link-background>>;\n}\n\na.tc-tiddlylink-external:visited {\n\tcolor: <<colour external-link-foreground-visited>>;\n\tbackground-color: <<colour external-link-background-visited>>;\n}\n\na.tc-tiddlylink-external:hover {\n\tcolor: <<colour external-link-foreground-hover>>;\n\tbackground-color: <<colour external-link-background-hover>>;\n}\n\n.tc-drop-down a.tc-tiddlylink:hover {\n\tcolor: <<colour tiddler-link-background>>;\n}\n\n/*\n** Drag and drop styles\n*/\n\n.tc-tiddler-dragger {\n\tposition: relative;\n\tz-index: -10000;\n}\n\n.tc-tiddler-dragger-inner {\n\tposition: absolute;\n\ttop: -1000px;\n\tleft: -1000px;\n\tdisplay: inline-block;\n\tpadding: 8px 20px;\n\tfont-size: 16.9px;\n\tfont-weight: bold;\n\tline-height: 20px;\n\tcolor: <<colour dragger-foreground>>;\n\ttext-shadow: 0 1px 0 rgba(0, 0, 0, 1);\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour dragger-background>>;\n\tborder-radius: 20px;\n}\n\n.tc-tiddler-dragger-cover {\n\tposition: absolute;\n\tbackground-color: <<colour page-background>>;\n}\n\n.tc-dropzone {\n\tposition: relative;\n}\n\n.tc-dropzone.tc-dragover:before {\n\tz-index: 10000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour dropzone-background>>;\n\ttext-align: center;\n\tcontent: \"<<lingo DropMessage>>\";\n}\n\n.tc-droppable > .tc-droppable-placeholder {\n\tdisplay: none;\n}\n\n.tc-droppable.tc-dragover > .tc-droppable-placeholder {\n\tdisplay: block;\n\tborder: 2px dashed <<colour dropzone-background>>;\n}\n\n.tc-draggable {\n\tcursor: move;\n}\n\n.tc-sidebar-tab-open .tc-droppable-placeholder, .tc-tagged-draggable-list .tc-droppable-placeholder,\n.tc-links-draggable-list .tc-droppable-placeholder {\n\tline-height: 2em;\n\theight: 2em;\n}\n\n.tc-sidebar-tab-open-item {\n\tposition: relative;\n}\n\n.tc-sidebar-tab-open .tc-btn-invisible.tc-btn-mini svg {\n\tfont-size: 0.7em;\n\tfill: <<colour muted-foreground>>;\n}\n\n/*\n** Plugin reload warning\n*/\n\n.tc-plugin-reload-warning {\n\tz-index: 1000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour alert-background>>;\n\ttext-align: center;\n}\n\n/*\n** Buttons\n*/\n\nbutton svg, button img, label svg, label img {\n\tvertical-align: middle;\n}\n\n.tc-btn-invisible {\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\tcursor: pointer;\n\tcolor: <<colour foreground>>;\n\tfill: <<colour foreground>>;\n}\n\n.tc-btn-boxed {\n\tfont-size: 0.6em;\n\tpadding: 0.2em;\n\tmargin: 1px;\n\tbackground: none;\n\tborder: 1px solid <<colour tiddler-controls-foreground>>;\n\tborder-radius: 0.25em;\n}\n\nhtml body.tc-body .tc-btn-boxed svg {\n\tfont-size: 1.6666em;\n}\n\n.tc-btn-boxed:hover {\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n}\n\nhtml body.tc-body .tc-btn-boxed:hover svg {\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded {\n\tfont-size: 0.5em;\n\tline-height: 2;\n\tpadding: 0em 0.3em 0.2em 0.4em;\n\tmargin: 1px;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n\tborder-radius: 2em;\n}\n\nhtml body.tc-body .tc-btn-rounded svg {\n\tfont-size: 1.6666em;\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded:hover {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour background>>;\n\tcolor: <<colour muted-foreground>>;\n}\n\nhtml body.tc-body .tc-btn-rounded:hover svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-icon svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-text {\n\tpadding: 0;\n\tmargin: 0;\n}\n\n/* used for documentation \"fake\" buttons */\n.tc-btn-standard {\n\tline-height: 1.8;\n\tcolor: #667;\n\tbackground-color: #e0e0e0;\n\tborder: 1px solid #888;\n\tpadding: 2px 1px 2px 1px;\n\tmargin: 1px 4px 1px 4px;\n}\n\n.tc-btn-big-green {\n\tdisplay: inline-block;\n\tpadding: 8px;\n\tmargin: 4px 8px 4px 8px;\n\tbackground: <<colour download-background>>;\n\tcolor: <<colour download-foreground>>;\n\tfill: <<colour download-foreground>>;\n\tborder: none;\n\tborder-radius: 2px;\n\tfont-size: 1.2em;\n\tline-height: 1.4em;\n\ttext-decoration: none;\n}\n\n.tc-btn-big-green svg,\n.tc-btn-big-green img {\n\theight: 2em;\n\twidth: 2em;\n\tvertical-align: middle;\n\tfill: <<colour download-foreground>>;\n}\n\n.tc-primary-btn {\n \tbackground: <<colour primary>>;\n}\n\n.tc-sidebar-lists input {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-sidebar-lists button {\n\tcolor: <<colour sidebar-button-foreground>>;\n\tfill: <<colour sidebar-button-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini {\n\tcolor: <<colour sidebar-muted-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini:hover {\n\tcolor: <<colour sidebar-muted-foreground-hover>>;\n}\n\n.tc-sidebar-lists button small {\n\tcolor: <<colour foreground>>;\n}\n\nbutton svg.tc-image-button, button .tc-image-button img {\n\theight: 1em;\n\twidth: 1em;\n}\n\n.tc-unfold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 100%;\n\twidth: calc(100% + 2px);\n\tmargin-left: -43px;\n\ttext-align: center;\n\tborder-top: 2px solid <<colour tiddler-info-background>>;\n\tmargin-top: 4px;\n}\n\n.tc-unfold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n\tborder-top: 2px solid <<colour tiddler-info-border>>;\n}\n\n.tc-unfold-banner svg, .tc-fold-banner svg {\n\theight: 0.75em;\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-unfold-banner:hover svg, .tc-fold-banner:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n.tc-fold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 23px;\n\ttext-align: center;\n\tmargin-left: -35px;\n\ttop: 6px;\n\tbottom: 6px;\n}\n\n.tc-fold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-unfold-banner {\n\t\tposition: static;\n\t\twidth: calc(100% + 59px);\n\t}\n\n\t.tc-fold-banner {\n\t\twidth: 16px;\n\t\tmargin-left: -16px;\n\t\tfont-size: 0.75em;\n\t}\n\n}\n\n/*\n** Tags and missing tiddlers\n*/\n\n.tc-tag-list-item {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin-right: 7px;\n}\n\n.tc-tags-wrapper {\n\tmargin: 4px 0 14px 0;\n}\n\n.tc-missing-tiddler-label {\n\tfont-style: italic;\n\tfont-weight: normal;\n\tdisplay: inline-block;\n\tfont-size: 11.844px;\n\tline-height: 14px;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n}\n\n.tc-block-tags-dropdown > .tc-btn-invisible:hover {\n\tbackground-color: <<colour primary>>;\n}\n\nbutton.tc-tag-label, span.tc-tag-label {\n\tdisplay: inline-block;\n\tpadding: 0.16em 0.7em;\n\tfont-size: 0.9em;\n\tfont-weight: 400;\n\tline-height: 1.2em;\n\tcolor: <<colour tag-foreground>>;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour tag-background>>;\n\tborder-radius: 1em;\n}\n\n.tc-sidebar-scrollable .tc-tag-label {\n\ttext-shadow: none;\n}\n\n.tc-untagged-separator {\n\twidth: 10em;\n\tleft: 0;\n\tmargin-left: 0;\n\tborder: 0;\n\theight: 1px;\n\tbackground: <<colour tab-divider>>;\n}\n\nbutton.tc-untagged-label {\n\tbackground-color: <<colour untagged-background>>;\n}\n\n.tc-tag-label svg, .tc-tag-label img {\n\theight: 1em;\n\twidth: 1em;\n\tmargin-right: 3px; \n\tmargin-bottom: 1px;\n\tvertical-align: bottom;\n}\n\n.tc-edit-tags button.tc-remove-tag-button svg {\n\tfont-size: 0.7em;\n\tvertical-align: middle;\n}\n\n.tc-tag-manager-table .tc-tag-label {\n\twhite-space: normal;\n}\n\n.tc-tag-manager-tag {\n\twidth: 100%;\n}\n\nbutton.tc-btn-invisible.tc-remove-tag-button {\n\toutline: none;\n}\n\n.tc-tag-button-selected,\n.tc-list-item-selected a.tc-tiddlylink, a.tc-list-item-selected {\n\tbackground-color: <<colour primary>>;\n\tcolor: <<colour tiddler-background>>;\n}\n\n/*\n** Page layout\n*/\n\n.tc-topbar {\n\tposition: fixed;\n\tz-index: 1200;\n}\n\n.tc-topbar-left {\n\tleft: 29px;\n\ttop: 5px;\n}\n\n.tc-topbar-right {\n\ttop: 5px;\n\tright: 29px;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-topbar-right {\n\t\tright: 10px;\n\t}\n\n}\n\n.tc-topbar button {\n\tpadding: 8px;\n}\n\n.tc-topbar svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-topbar button:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-show-sidebar-btn svg.tc-image-chevron-left, .tc-hide-sidebar-btn svg.tc-image-chevron-right {\n\t\ttransform: rotate(-90deg);\n\t}\n\n}\n\n.tc-sidebar-header {\n\tcolor: <<colour sidebar-foreground>>;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-sidebar-header .tc-title a.tc-tiddlylink-resolves {\n\tfont-weight: 300;\n}\n\n.tc-sidebar-header .tc-sidebar-lists p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-sidebar-header .tc-missing-tiddler-label {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-advanced-search input {\n\twidth: 60%;\n}\n\n.tc-search a svg {\n\twidth: 1.2em;\n\theight: 1.2em;\n\tvertical-align: middle;\n}\n\n.tc-page-controls {\n\tmargin-top: 14px;\n\tfont-size: 1.5em;\n}\n\n.tc-page-controls .tc-drop-down {\n font-size: 1rem;\n}\n\n.tc-page-controls button {\n\tmargin-right: 0.5em;\n}\n\n.tc-page-controls a.tc-tiddlylink:hover {\n\ttext-decoration: none;\n}\n\n.tc-page-controls img {\n\twidth: 1em;\n}\n\n.tc-page-controls svg {\n\tfill: <<colour sidebar-controls-foreground>>;\n}\n\n.tc-page-controls button:hover svg, .tc-page-controls a:hover svg {\n\tfill: <<colour sidebar-controls-foreground-hover>>;\n}\n\n.tc-sidebar-lists .tc-menu-list-item {\n\twhite-space: nowrap;\n}\n\n.tc-menu-list-count {\n\tfont-weight: bold;\n}\n\n.tc-menu-list-subitem {\n\tpadding-left: 7px;\n}\n\n.tc-story-river {\n\tposition: relative;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-sidebar-header {\n\t\tpadding: 14px;\n\t\tmin-height: 32px;\n\t\tmargin-top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\ttransition: min-height {{$:/config/AnimationDuration}}ms ease-in-out, padding-top {{$:/config/AnimationDuration}}ms ease-in-out, padding-bottom {{$:/config/AnimationDuration}}ms ease-in-out;\n\t}\n\t\n\t<<if-no-sidebar \"\"\"\n\n\t\t.tc-sidebar-header {\n\t\t\tmin-height: 0;\n\t\t\tpadding-top: 0;\n\t\t\tpadding-bottom: 0;\n\t\t}\n\n\t\"\"\">>\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tpadding: 0;\n\t}\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n\t.tc-message-box {\n\t\tmargin: 21px -21px 21px -21px;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tposition: fixed;\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t\tbottom: 0;\n\t\tright: 0;\n\t\toverflow-y: auto;\n\t\toverflow-x: auto;\n\t\t-webkit-overflow-scrolling: touch;\n\t\tmargin: 0 0 0 -42px;\n\t\tpadding: 71px 0 28px 42px;\n\t}\n\n\thtml[dir=\"rtl\"] .tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tright: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t}\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/storywidth}};\n\t\tpadding: 42px 42px 42px 42px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-story-river {\n\t\twidth: calc(100% - {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}});\n\t}\n\n\">>\n\n\t.tc-story-river.tc-static-story-river {\n\t\tmargin-right: 0;\n\t\tpadding-right: 42px;\n\t}\n\n}\n\n@media print {\n\n\tbody.tc-body {\n\t\tbackground-color: transparent;\n\t}\n\n\t.tc-sidebar-header, .tc-topbar {\n\t\tdisplay: none;\n\t}\n\n\t.tc-story-river {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t}\n\n\t.tc-story-river .tc-tiddler-frame {\n\t\tmargin: 0;\n\t\tborder: none;\n\t\tpadding: 0;\n\t}\n}\n\n/*\n** Tiddler styles\n*/\n\n.tc-tiddler-frame {\n\tposition: relative;\n\tmargin-bottom: 28px;\n\tbackground-color: <<colour tiddler-background>>;\n\tborder: 1px solid <<colour tiddler-border>>;\n}\n\n{{$:/themes/tiddlywiki/vanilla/sticky}}\n\n.tc-tiddler-info {\n\tpadding: 14px 42px 14px 42px;\n\tbackground-color: <<colour tiddler-info-background>>;\n\tborder-top: 1px solid <<colour tiddler-info-border>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-border>>;\n}\n\n.tc-tiddler-info p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-tiddler-info .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour tiddler-info-tab-background>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-tab-background>>;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-tiddler-info {\n\t\tpadding: 14px 14px 14px 14px;\n\t}\n\n}\n\n.tc-view-field-table {\n\twidth: 100%;\n}\n\n.tc-view-field-name {\n\twidth: 1%; /* Makes this column be as narrow as possible */\n\ttext-align: right;\n\tfont-style: italic;\n\tfont-weight: 200;\n}\n\n.tc-view-field-value {\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\t.tc-tiddler-frame {\n\t\tpadding: 14px 14px 14px 14px;\n\t\tmargin-bottom: .5em;\n\t}\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -14px 0 -14px;\n\t}\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\t.tc-tiddler-frame {\n\t\tpadding: 28px 42px 42px 42px;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}};\n\t\tborder-radius: 2px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\">>\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -42px 0 -42px;\n\t}\n}\n\n.tc-site-title,\n.tc-titlebar {\n\tfont-weight: 300;\n\tfont-size: 2.35em;\n\tline-height: 1.35em;\n\tcolor: <<colour tiddler-title-foreground>>;\n\tmargin: 0;\n}\n\n.tc-site-title {\n\tcolor: <<colour site-title-foreground>>;\n}\n\n.tc-tiddler-title-icon {\n\tvertical-align: middle;\n\tmargin-right: .1em;\n}\n\n.tc-system-title-prefix {\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-titlebar h2 {\n\tfont-size: 1em;\n\tdisplay: inline;\n}\n\n.tc-titlebar img {\n\theight: 1em;\n}\n\n.tc-subtitle {\n\tfont-size: 0.9em;\n\tcolor: <<colour tiddler-subtitle-foreground>>;\n\tfont-weight: 300;\n}\n\n.tc-subtitle .tc-tiddlylink {\n\tmargin-right: .3em;\n}\n\n.tc-tiddler-missing .tc-title {\n font-style: italic;\n font-weight: normal;\n}\n\n.tc-tiddler-frame .tc-tiddler-controls {\n\tfloat: right;\n}\n\n.tc-tiddler-controls .tc-drop-down {\n\tfont-size: 0.6em;\n}\n\n.tc-tiddler-controls .tc-drop-down .tc-drop-down {\n\tfont-size: 1em;\n}\n\n.tc-tiddler-controls > span > button,\n.tc-tiddler-controls > span > span > button,\n.tc-tiddler-controls > span > span > span > button {\n\tvertical-align: baseline;\n\tmargin-left:5px;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img,\n.tc-search button svg, .tc-search a svg {\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img {\n\theight: 0.75em;\n}\n\n.tc-search button svg, .tc-search a svg {\n height: 1.2em;\n width: 1.2em;\n margin: 0 0.25em;\n}\n\n.tc-tiddler-controls button.tc-selected svg,\n.tc-page-controls button.tc-selected svg {\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n}\n\n.tc-tiddler-controls button.tc-btn-invisible:hover svg,\n.tc-search button:hover svg, .tc-search a:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n@media print {\n\t.tc-tiddler-controls {\n\t\tdisplay: none;\n\t}\n}\n\n.tc-tiddler-help { /* Help prompts within tiddler template */\n\tcolor: <<colour muted-foreground>>;\n\tmargin-top: 14px;\n}\n\n.tc-tiddler-help a.tc-tiddlylink {\n\tcolor: <<colour very-muted-foreground>>;\n}\n\n.tc-tiddler-frame .tc-edit-texteditor {\n\twidth: 100%;\n\tmargin: 4px 0 4px 0;\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor,\n.tc-tiddler-frame textarea.tc-edit-texteditor,\n.tc-tiddler-frame iframe.tc-edit-texteditor {\n\tpadding: 3px 3px 3px 3px;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tline-height: 1.3em;\n\t-webkit-appearance: none;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor,\n.tc-tiddler-frame textarea.tc-edit-texteditor {\n\tbackground-color: <<colour tiddler-editor-background>>;\n}\n\n.tc-tiddler-frame iframe.tc-edit-texteditor {\n\tbackground-color: <<colour tiddler-background>>;\n}\n\n.tc-tiddler-frame .tc-binary-warning {\n\twidth: 100%;\n\theight: 5em;\n\ttext-align: center;\n\tpadding: 3em 3em 6em 3em;\n\tbackground: <<colour alert-background>>;\n\tborder: 1px solid <<colour alert-border>>;\n}\n\ncanvas.tc-edit-bitmapeditor {\n\tborder: 6px solid <<colour tiddler-editor-border-image>>;\n\tcursor: crosshair;\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tmargin-top: 6px;\n\tmargin-bottom: 6px;\n}\n\n.tc-edit-bitmapeditor-width {\n\tdisplay: block;\n}\n\n.tc-edit-bitmapeditor-height {\n\tdisplay: block;\n}\n\n.tc-tiddler-body {\n\tclear: both;\n}\n\n.tc-tiddler-frame .tc-tiddler-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/bodylineheight}};\n}\n\n.tc-titlebar, .tc-tiddler-edit-title {\n\toverflow: hidden; /* https://github.com/Jermolene/TiddlyWiki5/issues/282 */\n}\n\nhtml body.tc-body.tc-single-tiddler-window {\n\tmargin: 1em;\n\tbackground: <<colour tiddler-background>>;\n}\n\n.tc-single-tiddler-window img,\n.tc-single-tiddler-window svg,\n.tc-single-tiddler-window canvas,\n.tc-single-tiddler-window embed,\n.tc-single-tiddler-window iframe {\n\tmax-width: 100%;\n}\n\n/*\n** Editor\n*/\n\n.tc-editor-toolbar {\n\tmargin-top: 8px;\n}\n\n.tc-editor-toolbar button {\n\tvertical-align: middle;\n\tbackground-color: <<colour tiddler-controls-foreground>>;\n\tcolor: <<colour tiddler-controls-foreground-selected>>;\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n\tborder-radius: 4px;\n\tpadding: 3px;\n\tmargin: 2px 0 2px 4px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-adjunct {\n\tmargin-left: 1px;\n\twidth: 1em;\n\tborder-radius: 8px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-start-group {\n\tmargin-left: 11px;\n}\n\n.tc-editor-toolbar button.tc-selected {\n\tbackground-color: <<colour primary>>;\n}\n\n.tc-editor-toolbar button svg {\n\twidth: 1.6em;\n\theight: 1.2em;\n}\n\n.tc-editor-toolbar button:hover {\n\tbackground-color: <<colour tiddler-controls-foreground-selected>>;\n\tfill: <<colour background>>;\n\tcolor: <<colour background>>;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more {\n\twhite-space: normal;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more button {\n\tdisplay: inline-block;\n\tpadding: 3px;\n\twidth: auto;\n}\n\n.tc-editor-toolbar .tc-search-results {\n\tpadding: 0;\n}\n\n/*\n** Adjustments for fluid-fixed mode\n*/\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n<<if-fluid-fixed text:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 0;\n\t\tposition: relative;\n\t\twidth: auto;\n\t\tleft: 0;\n\t\tmargin-left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\tmargin-right: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tbottom: 0;\n\t\tright: 0;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 42px);\n\t}\n\n\"\"\" hiddenSidebarText:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 3em;\n\t\tmargin-right: 0;\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 84px);\n\t}\n\n\"\"\">>\n\n}\n\n/*\n** Toolbar buttons\n*/\n\n.tc-page-controls svg.tc-image-new-button {\n fill: <<colour toolbar-new-button>>;\n}\n\n.tc-page-controls svg.tc-image-options-button {\n fill: <<colour toolbar-options-button>>;\n}\n\n.tc-page-controls svg.tc-image-save-button {\n fill: <<colour toolbar-save-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-info-button {\n fill: <<colour toolbar-info-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-edit-button {\n fill: <<colour toolbar-edit-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-close-button {\n fill: <<colour toolbar-close-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-delete-button {\n fill: <<colour toolbar-delete-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-cancel-button {\n fill: <<colour toolbar-cancel-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-done-button {\n fill: <<colour toolbar-done-button>>;\n}\n\n/*\n** Tiddler edit mode\n*/\n\n.tc-tiddler-edit-frame em.tc-edit {\n\tcolor: <<colour muted-foreground>>;\n\tfont-style: normal;\n}\n\n.tc-edit-type-dropdown a.tc-tiddlylink-missing {\n\tfont-style: normal;\n}\n\n.tc-type-selector .tc-edit-typeeditor {\n\twidth: auto;\n}\n\n.tc-type-selector-dropdown-wrapper {\n\tdisplay: inline-block;\n}\n\n<<set-type-selector-min-width>>\n\n.tc-edit-tags {\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tpadding: 4px 8px 4px 8px;\n}\n\n.tc-edit-add-tag {\n\tdisplay: inline-block;\n}\n\n.tc-edit-add-tag .tc-add-tag-name input {\n\twidth: 50%;\n}\n\n.tc-edit-add-tag .tc-keyboard {\n\tdisplay:inline;\n}\n\n.tc-edit-tags .tc-tag-label {\n\tdisplay: inline-block;\n}\n\n.tc-edit-tags-list {\n\tmargin: 14px 0 14px 0;\n}\n\n.tc-remove-tag-button {\n\tpadding-left: 4px;\n}\n\n.tc-tiddler-preview {\n\toverflow: auto;\n}\n\n.tc-tiddler-preview-preview {\n\tfloat: right;\n\twidth: 49%;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tmargin: 4px 0 3px 3px;\n\tpadding: 3px 3px 3px 3px;\n}\n\n<<if-editor-height-fixed then:\"\"\"\n\n.tc-tiddler-preview-preview {\n\toverflow-y: scroll;\n\theight: {{$:/config/TextEditor/EditorHeight/Height}};\n}\n\n\"\"\">>\n\n.tc-tiddler-frame .tc-tiddler-preview .tc-edit-texteditor {\n\twidth: 49%;\n}\n\n.tc-tiddler-frame .tc-tiddler-preview canvas.tc-edit-bitmapeditor {\n\tmax-width: 49%;\n}\n\n.tc-edit-fields {\n\twidth: 100%;\n}\n\n.tc-edit-fields.tc-edit-fields-small {\n\tmargin-top: 0;\n\tmargin-bottom: 0;\n}\n\n.tc-edit-fields table, .tc-edit-fields tr, .tc-edit-fields td {\n\tborder: none;\n\tpadding: 4px;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(odd) {\n\tbackground-color: <<colour tiddler-editor-fields-odd>>;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(even) {\n\tbackground-color: <<colour tiddler-editor-fields-even>>;\n}\n\n.tc-edit-field-name {\n\ttext-align: right;\n}\n\n.tc-edit-field-value input {\n\twidth: 100%;\n}\n\n.tc-edit-field-remove {\n}\n\n.tc-edit-field-remove svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n\tvertical-align: middle;\n}\n\n.tc-edit-field-add-name-wrapper input.tc-edit-texteditor {\n\twidth: auto;\n}\n\n.tc-edit-field-add-name-wrapper {\n\tdisplay: inline-block;\n}\n\n.tc-edit-field-add-value {\n\tdisplay: inline-block;\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n\t.tc-edit-field-add-value {\n\t\twidth: 35%;\n\t}\n\n}\n\n.tc-edit-field-add-button {\n\tdisplay: inline-block;\n\twidth: 10%;\n}\n\n/*\n** Storyview Classes\n*/\n\n.tc-viewswitcher .tc-image-button {\n\tmargin-right: .3em;\n}\n\n.tc-storyview-zoomin-tiddler {\n\tposition: absolute;\n\tdisplay: block;\n\twidth: 100%;\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n\t.tc-storyview-zoomin-tiddler {\n\t\twidth: calc(100% - 84px);\n\t}\n\n}\n\n/*\n** Dropdowns\n*/\n\n.tc-btn-dropdown {\n\ttext-align: left;\n}\n\n.tc-btn-dropdown svg, .tc-btn-dropdown img {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-drop-down-wrapper {\n\tposition: relative;\n}\n\n.tc-drop-down {\n\tmin-width: 380px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\ttext-shadow: none;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-drop-down {\n\tmargin-left: 14px;\n}\n\n.tc-drop-down button svg, .tc-drop-down a svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-drop-down button.tc-btn-invisible:hover svg {\n\tfill: <<colour background>>;\n}\n\n.tc-drop-down .tc-drop-down-info {\n\tpadding-left: 14px;\n}\n\n.tc-drop-down p {\n\tpadding: 0 14px 0 14px;\n}\n\n.tc-drop-down svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-drop-down img {\n\twidth: 1em;\n}\n\n.tc-drop-down a, .tc-drop-down button {\n\tdisplay: block;\n\tpadding: 0 14px 0 14px;\n\twidth: 100%;\n\ttext-align: left;\n\tcolor: <<colour foreground>>;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-tab-set .tc-tab-buttons button {\n\tdisplay: inline-block;\n width: auto;\n margin-bottom: 0px;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.tc-drop-down .tc-prompt {\n\tpadding: 0 14px;\n}\n\n.tc-drop-down .tc-chooser {\n\tborder: none;\n}\n\n.tc-drop-down .tc-chooser .tc-swatches-horiz {\n\tfont-size: 0.4em;\n\tpadding-left: 1.2em;\n}\n\n.tc-drop-down .tc-file-input-wrapper {\n\twidth: 100%;\n}\n\n.tc-drop-down .tc-file-input-wrapper button {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-drop-down a:hover, .tc-drop-down button:hover, .tc-drop-down .tc-file-input-wrapper:hover button {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-tab-buttons button {\n\tbackground-color: <<colour dropdown-tab-background>>;\n}\n\n.tc-drop-down .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour dropdown-tab-background-selected>>;\n\tborder-bottom: 1px solid <<colour dropdown-tab-background-selected>>;\n}\n\n.tc-drop-down-bullet {\n\tdisplay: inline-block;\n\twidth: 0.5em;\n}\n\n.tc-drop-down .tc-tab-contents a {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-block-dropdown-wrapper {\n\tposition: relative;\n}\n\n.tc-block-dropdown {\n\tposition: absolute;\n\tmin-width: 220px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\tz-index: 1000;\n\ttext-shadow: none;\n}\n\n.tc-block-dropdown.tc-search-drop-down {\n\tmargin-left: -12px;\n}\n\n.tc-block-dropdown a {\n\tdisplay: block;\n\tpadding: 4px 14px 4px 14px;\n}\n\n.tc-block-dropdown.tc-search-drop-down a {\n\tdisplay: block;\n\tpadding: 0px 10px 0px 10px;\n}\n\n.tc-drop-down .tc-dropdown-item-plain,\n.tc-block-dropdown .tc-dropdown-item-plain {\n\tpadding: 4px 14px 4px 7px;\n}\n\n.tc-drop-down .tc-dropdown-item,\n.tc-block-dropdown .tc-dropdown-item {\n\tpadding: 4px 14px 4px 7px;\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-block-dropdown a.tc-tiddlylink:hover {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-search-results {\n\tpadding: 0 7px 0 7px;\n}\n\n.tc-image-chooser, .tc-colour-chooser {\n\twhite-space: normal;\n}\n\n.tc-image-chooser a,\n.tc-colour-chooser a {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\ttext-align: center;\n\tposition: relative;\n}\n\n.tc-image-chooser a {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 2px;\n\tmargin: 2px;\n\twidth: 4em;\n\theight: 4em;\n}\n\n.tc-colour-chooser a {\n\tpadding: 3px;\n\twidth: 2em;\n\theight: 2em;\n\tvertical-align: middle;\n}\n\n.tc-image-chooser a:hover,\n.tc-colour-chooser a:hover {\n\tbackground: <<colour primary>>;\n\tpadding: 0px;\n\tborder: 3px solid <<colour primary>>;\n}\n\n.tc-image-chooser a svg,\n.tc-image-chooser a img {\n\tdisplay: inline-block;\n\twidth: auto;\n\theight: auto;\n\tmax-width: 3.5em;\n\tmax-height: 3.5em;\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: 0;\n\tright: 0;\n\tmargin: auto;\n}\n\n/*\n** Modals\n*/\n\n.tc-modal-wrapper {\n\tposition: fixed;\n\toverflow: auto;\n\toverflow-y: scroll;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 900;\n}\n\n.tc-modal-backdrop {\n\tposition: fixed;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 1000;\n\tbackground-color: <<colour modal-backdrop>>;\n}\n\n.tc-modal {\n\tz-index: 1100;\n\tbackground-color: <<colour modal-background>>;\n\tborder: 1px solid <<colour modal-border>>;\n}\n\n@media (max-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 1em;\n\t\tleft: 1em;\n\t\tright: 1em;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n@media (min-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 2em;\n\t\tleft: 25%;\n\t\twidth: 50%;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n.tc-modal-header {\n\tpadding: 9px 15px;\n\tborder-bottom: 1px solid <<colour modal-header-border>>;\n}\n\n.tc-modal-header h3 {\n\tmargin: 0;\n\tline-height: 30px;\n}\n\n.tc-modal-header img, .tc-modal-header svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-modal-body {\n\tpadding: 15px;\n}\n\n.tc-modal-footer {\n\tpadding: 14px 15px 15px;\n\tmargin-bottom: 0;\n\ttext-align: right;\n\tbackground-color: <<colour modal-footer-background>>;\n\tborder-top: 1px solid <<colour modal-footer-border>>;\n}\n\n\n/*\n** Centered modals\n*/\n.tc-modal-centered .tc-modal {\n\twidth: auto;\n\ttop: 50%;\n\tleft: 50%;\n\ttransform: translate(-50%, -50%) !important;\n}\n\n/*\n** Notifications\n*/\n\n.tc-notification {\n\tposition: fixed;\n\ttop: 14px;\n\tright: 42px;\n\tz-index: 1300;\n\tmax-width: 280px;\n\tpadding: 0 14px 0 14px;\n\tbackground-color: <<colour notification-background>>;\n\tborder: 1px solid <<colour notification-border>>;\n}\n\n/*\n** Tabs\n*/\n\n.tc-tab-set.tc-vertical {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tab-buttons {\n\tfont-size: 0.85em;\n\tpadding-top: 1em;\n\tmargin-bottom: -2px;\n}\n\n.tc-tab-buttons.tc-vertical {\n\tz-index: 100;\n\tdisplay: block;\n\tpadding-top: 14px;\n\tvertical-align: top;\n\ttext-align: right;\n\tmargin-bottom: inherit;\n\tmargin-right: -1px;\n\tmax-width: 33%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n}\n\n.tc-tab-buttons button.tc-tab-selected {\n\tcolor: <<colour tab-foreground-selected>>;\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-left: 1px solid <<colour tab-border-selected>>;\n\tborder-top: 1px solid <<colour tab-border-selected>>;\n\tborder-right: 1px solid <<colour tab-border-selected>>;\n}\n\n.tc-tab-buttons button {\n\tcolor: <<colour tab-foreground>>;\n\tpadding: 3px 5px 3px 5px;\n\tmargin-right: 0.3em;\n\tfont-weight: 300;\n\tborder: none;\n\tbackground: inherit;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-right: 1px solid <<colour tab-border>>;\n\tborder-top-left-radius: 2px;\n\tborder-top-right-radius: 2px;\n\tborder-bottom-left-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.tc-tab-buttons.tc-vertical button {\n\tdisplay: block;\n\twidth: 100%;\n\tmargin-top: 3px;\n\tmargin-right: 0;\n\ttext-align: right;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tborder-right: none;\n\tborder-top-left-radius: 2px;\n\tborder-bottom-left-radius: 2px;\n\tborder-top-right-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.tc-tab-buttons.tc-vertical button.tc-tab-selected {\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-right: 1px solid <<colour tab-background-selected>>;\n}\n\n.tc-tab-divider {\n\tborder-top: 1px solid <<colour tab-divider>>;\n}\n\n.tc-tab-divider.tc-vertical {\n\tdisplay: none;\n}\n\n.tc-tab-content {\n\tmargin-top: 14px;\n}\n\n.tc-tab-content.tc-vertical {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-top: 0;\n\tpadding-left: 14px;\n\tborder-left: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 70%;\n\tflex: 1 0 70%;\n\toverflow: auto;\n}\n\n.tc-sidebar-lists .tc-tab-buttons {\n\tmargin-bottom: -1px;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tcolor: <<colour sidebar-tab-foreground-selected>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border-selected>>;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button {\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tcolor: <<colour sidebar-tab-foreground>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border>>;\n}\n\n.tc-sidebar-lists .tc-tab-divider {\n\tborder-top: 1px solid <<colour sidebar-tab-divider>>;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\tdisplay: block;\n\twidth: 100%;\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tborder-top: none;\n\tborder-left: none;\n\tborder-bottom: none;\n\tborder-right: 1px solid #ccc;\n\tmargin-bottom: inherit;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tborder: none;\n}\n\n/*\n** Manager\n*/\n\n.tc-manager-wrapper {\n\t\n}\n\n.tc-manager-controls {\n\t\n}\n\n.tc-manager-control {\n\tmargin: 0.5em 0;\n}\n\n.tc-manager-list {\n\twidth: 100%;\n\tborder-top: 1px solid <<colour muted-foreground>>;\n\tborder-left: 1px solid <<colour muted-foreground>>;\n\tborder-right: 1px solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item {\n\n}\n\n.tc-manager-list-item-heading {\n display: block;\n width: 100%;\n text-align: left;\t\n\tborder-bottom: 1px solid <<colour muted-foreground>>;\n\tpadding: 3px;\n}\n\n.tc-manager-list-item-heading-selected {\n\tfont-weight: bold;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n\tbackground-color: <<colour foreground>>;\n}\n\n.tc-manager-list-item-heading:hover {\n\tbackground: <<colour primary>>;\n\tcolor: <<colour background>>;\n}\n\n.tc-manager-list-item-content {\n\tdisplay: flex;\n}\n\n.tc-manager-list-item-content-sidebar {\n flex: 1 0;\n background: <<colour tiddler-editor-background>>;\n border-right: 0.5em solid <<colour muted-foreground>>;\n border-bottom: 0.5em solid <<colour muted-foreground>>;\n white-space: nowrap;\n}\n\n.tc-manager-list-item-content-item-heading {\n\tdisplay: block;\n\twidth: 100%;\n\ttext-align: left;\n background: <<colour muted-foreground>>;\n\ttext-transform: uppercase;\n\tfont-size: 0.6em;\n\tfont-weight: bold;\n padding: 0.5em 0 0.5em 0;\n}\n\n.tc-manager-list-item-content-item-body {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-manager-list-item-content-item-body > pre {\n\tmargin: 0.5em 0 0.5em 0;\n\tborder: none;\n\tbackground: inherit;\n}\n\n.tc-manager-list-item-content-tiddler {\n flex: 3 1;\n border-left: 0.5em solid <<colour muted-foreground>>;\n border-right: 0.5em solid <<colour muted-foreground>>;\n border-bottom: 0.5em solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item-content-item-body > table {\n\tborder: none;\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.tc-manager-list-item-content-item-body > table td {\n\tborder: none;\n}\n\n.tc-manager-icon-editor > button {\n\twidth: 100%;\n}\n\n.tc-manager-icon-editor > button > svg,\n.tc-manager-icon-editor > button > button {\n\twidth: 100%;\n\theight: auto;\n}\n\n/*\n** Import table\n*/\n\n.tc-import-table {\n\twidth: 100%;\n}\n\n.tc-import-table svg.tc-image-edit-button {\n\tmax-width: unset;\n}\n\n.tc-import-table th:first-of-type {\n\twidth: 10%;\n}\n\n.tc-import-table th:last-of-type {\n\twidth: 30%;\n}\n\n.tc-import-table .tc-row-disabled {\n\tbackground: <<colour very-muted-foreground>>10;\n\topacity: 0.8;\n}\n\n.tc-import-table .tc-row-warning {\n\tbackground: <<colour diff-delete-background>>50;\n}\n\n/*\n** Alerts\n*/\n\n.tc-alerts {\n\tposition: fixed;\n\ttop: 28px;\n\tleft: 0;\n\tright: 0;\n\tmax-width: 50%;\n\tz-index: 20000;\n}\n\n.tc-alert {\n\tposition: relative;\n\tmargin: 14px;\n\tpadding: 7px;\n\tborder: 1px solid <<colour alert-border>>;\n\tbackground-color: <<colour alert-background>>;\n}\n\n.tc-alert-toolbar {\n\tposition: absolute;\n\ttop: 7px;\n\tright: 7px;\n line-height: 0;\n}\n\n.tc-alert-toolbar svg {\n\tfill: <<colour alert-muted-foreground>>;\n}\n\n.tc-alert-subtitle {\n\tcolor: <<colour alert-muted-foreground>>;\n\tfont-weight: bold;\n font-size: 0.8em;\n margin-bottom: 0.5em;\n}\n\n.tc-alert-body > p {\n\tmargin: 0;\n}\n\n.tc-alert-highlight {\n\tcolor: <<colour alert-highlight>>;\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n\t.tc-static-alert {\n\t\tposition: relative;\n\t}\n\n\t.tc-static-alert-inner {\n\t\tposition: absolute;\n\t\tz-index: 100;\n\t}\n\n}\n\n.tc-static-alert-inner {\n\tpadding: 0 2px 2px 42px;\n\tcolor: <<colour static-alert-foreground>>;\n}\n\n/*\n** Floating drafts list\n*/\n\n.tc-drafts-list {\n\tz-index: 2000;\n\tposition: fixed;\n\tfont-size: 0.8em;\n\tleft: 0;\n\tbottom: 0;\n}\n\n.tc-drafts-list a {\n\tmargin: 0 0.5em;\n\tpadding: 4px 4px;\n\tborder-top-left-radius: 4px;\n\tborder-top-right-radius: 4px;\n\tborder: 1px solid <<colour background>>;\n\tborder-bottom-none;\n\tbackground: <<colour dirty-indicator>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n}\n\n.tc-drafts-list a:hover {\n\ttext-decoration: none;\n\tbackground: <<colour foreground>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n}\n\n.tc-drafts-list a svg {\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: text-bottom;\n}\n\n/*\n** Control panel\n*/\n\n.tc-control-panel td {\n\tpadding: 4px;\n}\n\n.tc-control-panel table, .tc-control-panel table input, .tc-control-panel table textarea {\n\twidth: 100%;\n}\n\n.tc-plugin-info {\n\tdisplay: flex;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tfill: <<colour muted-foreground>>;\n\tbackground-color: <<colour background>>;\n\tmargin: 0.5em 0 0.5em 0;\n\tpadding: 4px;\n align-items: center;\n}\n\n.tc-plugin-info-sub-plugins .tc-plugin-info {\n margin: 0.5em;\n\tbackground: <<colour background>>;\n}\n\n.tc-plugin-info-sub-plugin-indicator {\n\tmargin: -16px 1em 0 2em;\n}\n\n.tc-plugin-info-sub-plugin-indicator button {\n\tcolor: <<colour background>>;\n\tbackground: <<colour foreground>>;\n\tborder-radius: 8px;\n padding: 2px 7px;\n font-size: 0.75em;\n}\n\n.tc-plugin-info-sub-plugins .tc-plugin-info-dropdown {\n\tmargin-left: 1em;\n\tmargin-right: 1em;\n}\n\n.tc-plugin-info-disabled {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n\tbackground: repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n}\n\n.tc-plugin-info-disabled:hover {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n\tbackground: repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n}\n\na.tc-tiddlylink.tc-plugin-info:hover {\n\ttext-decoration: none;\n\tbackground-color: <<colour primary>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour foreground>>;\n}\n\na.tc-tiddlylink.tc-plugin-info:hover > .tc-plugin-info-chunk > svg {\n\tfill: <<colour background>>;\n}\n\n.tc-plugin-info-chunk {\n margin: 2px;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-toggle {\n\tflex-grow: 0;\n\tflex-shrink: 0;\n\tline-height: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-icon {\n\tflex-grow: 0;\n\tflex-shrink: 0;\n\tline-height: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description {\n\tflex-grow: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-buttons {\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tflex-grow: 0;\n\tflex-shrink: 0;\n text-align: right;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description h1 {\n\tfont-size: 1em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description h2 {\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description div {\n\tfont-size: 0.7em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-toggle img, .tc-plugin-info-chunk.tc-plugin-info-toggle svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-icon img, .tc-plugin-info-chunk.tc-plugin-info-icon svg {\n\twidth: 2em;\n\theight: 2em;\n}\n\n.tc-plugin-info-dropdown {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour background>>;\n\tmargin-top: -8px;\n}\n\n.tc-plugin-info-dropdown-message {\n\tbackground: <<colour message-background>>;\n\tpadding: 0.5em 1em 0.5em 1em;\n\tfont-weight: bold;\n\tfont-size: 0.8em;\n}\n\n.tc-plugin-info-dropdown-body {\n\tpadding: 1em 1em 0 1em;\n\tbackground: <<colour background>>;\n}\n\n.tc-plugin-info-sub-plugins {\n\tpadding: 0.5em;\n margin: 0 1em 1em 1em;\n\tbackground: <<colour notification-background>>;\n}\n\n.tc-install-plugin {\n\tfont-weight: bold;\n\tbackground: green;\n\tcolor: white;\n\tfill: white;\n\tborder-radius: 4px;\n\tpadding: 3px;\n}\n\n.tc-install-plugin.tc-reinstall-downgrade {\n\tbackground: red;\n}\n\n.tc-install-plugin.tc-reinstall {\n\tbackground: blue;\n}\n\n.tc-install-plugin.tc-reinstall-upgrade {\n\tbackground: orange;\n}\n\n.tc-check-list {\n\tline-height: 2em;\n}\n\n.tc-check-list .tc-image-button {\n\theight: 1.5em;\n}\n\n/*\n** Message boxes\n*/\n\n.tc-message-box {\n\tborder: 1px solid <<colour message-border>>;\n\tbackground: <<colour message-background>>;\n\tpadding: 0px 21px 0px 21px;\n\tfont-size: 12px;\n\tline-height: 18px;\n\tcolor: <<colour message-foreground>>;\n}\n\n.tc-message-box svg {\n\twidth: 1em;\n\theight: 1em;\n vertical-align: text-bottom;\n}\n\n/*\n** Pictures\n*/\n\n.tc-bordered-image {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 5px;\n\tmargin: 5px;\n}\n\n/*\n** Floats\n*/\n\n.tc-float-right {\n\tfloat: right;\n}\n\n/*\n** Chooser\n*/\n\n.tc-chooser {\n\tborder-right: 1px solid <<colour table-header-background>>;\n\tborder-left: 1px solid <<colour table-header-background>>;\n}\n\n\n.tc-chooser-item {\n\tborder-bottom: 1px solid <<colour table-header-background>>;\n\tborder-top: 1px solid <<colour table-header-background>>;\n\tpadding: 2px 4px 2px 14px;\n}\n\n.tc-drop-down .tc-chooser-item {\n\tpadding: 2px;\n}\n\n.tc-chosen,\n.tc-chooser-item:hover {\n\tbackground-color: <<colour table-header-background>>;\n\tborder-color: <<colour table-footer-background>>;\n}\n\n.tc-chosen .tc-tiddlylink {\n\tcursor:default;\n}\n\n.tc-chooser-item .tc-tiddlylink {\n\tdisplay: block;\n\ttext-decoration: none;\n\tbackground-color: transparent;\n}\n\n.tc-chooser-item:hover .tc-tiddlylink:hover {\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-chosen .tc-tiddlylink,\n.tc-drop-down .tc-chooser-item .tc-tiddlylink:hover {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-chosen > .tc-tiddlylink:before {\n\tmargin-left: -10px;\n\tposition: relative;\n\tcontent: \"» \";\n}\n\n.tc-chooser-item svg,\n.tc-chooser-item img{\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: middle;\n}\n\n.tc-language-chooser .tc-image-button img {\n\twidth: 2em;\n\tvertical-align: -0.15em;\n}\n\n/*\n** Palette swatches\n*/\n\n.tc-swatches-horiz {\n}\n\n.tc-swatches-horiz .tc-swatch {\n\tdisplay: inline-block;\n}\n\n.tc-swatch {\n\twidth: 2em;\n\theight: 2em;\n\tmargin: 0.4em;\n\tborder: 1px solid #888;\n}\n\ninput.tc-palette-manager-colour-input {\n\twidth: 100%;\n\tpadding: 0;\n}\n\n/*\n** Table of contents\n*/\n\n.tc-sidebar-lists .tc-table-of-contents {\n\twhite-space: nowrap;\n}\n\n.tc-table-of-contents button {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents svg {\n\twidth: 0.7em;\n\theight: 0.7em;\n\tvertical-align: middle;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents ol {\n\tlist-style-type: none;\n\tpadding-left: 0;\n}\n\n.tc-table-of-contents ol ol {\n\tpadding-left: 1em;\n}\n\n.tc-table-of-contents li {\n\tfont-size: 1.0em;\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li a {\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li li {\n\tfont-size: 0.95em;\n\tfont-weight: normal;\n\tline-height: 1.4;\n}\n\n.tc-table-of-contents li li a {\n\tfont-weight: normal;\n}\n\n.tc-table-of-contents li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n\tline-height: 1.5;\n}\n\n.tc-table-of-contents li li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n}\n\n.tc-tabbed-table-of-contents {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents {\n\tz-index: 100;\n\tdisplay: inline-block;\n\tpadding-left: 1em;\n\tmax-width: 50%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n\tbackground: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a,\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tdisplay: block;\n\tpadding: 0.12em 1em 0.12em 0.25em;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a {\n\tborder-top: 1px solid <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-background>>;\n\tborder-bottom: 1px solid <<colour tab-background>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a:hover {\n\ttext-decoration: none;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour background>>;\n\tmargin-right: -1px;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a:hover {\n\ttext-decoration: none;\n}\n\n.tc-tabbed-table-of-contents .tc-tabbed-table-of-contents-content {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-left: 1.5em;\n\tpadding-right: 1.5em;\n\tborder: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 50%;\n\tflex: 1 0 50%;\n}\n\n/*\n** Dirty indicator\n*/\n\nbody.tc-dirty span.tc-dirty-indicator, body.tc-dirty span.tc-dirty-indicator svg {\n\tfill: <<colour dirty-indicator>>;\n\tcolor: <<colour dirty-indicator>>;\n}\n\n/*\n** File inputs\n*/\n\n.tc-file-input-wrapper {\n\tposition: relative;\n\toverflow: hidden;\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.tc-file-input-wrapper input[type=file] {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tfont-size: 999px;\n\tmax-width: 100%;\n\tmax-height: 100%;\n\tfilter: alpha(opacity=0);\n\topacity: 0;\n\toutline: none;\n\tbackground: white;\n\tcursor: pointer;\n\tdisplay: inline-block;\n}\n\n::-webkit-file-upload-button {\n\tcursor:pointer;\n}\n\n/*\n** Thumbnail macros\n*/\n\n.tc-thumbnail-wrapper {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin: 6px;\n\tvertical-align: top;\n}\n\n.tc-thumbnail-right-wrapper {\n\tfloat:right;\n\tmargin: 0.5em 0 0.5em 0.5em;\n}\n\n.tc-thumbnail-image {\n\ttext-align: center;\n\toverflow: hidden;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-image svg,\n.tc-thumbnail-image img {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n\tmin-width: 100%;\n\tmin-height: 100%;\n\tmax-width: 100%;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image img {\n\tfilter: alpha(opacity=0.8);\n\topacity: 0.8;\n}\n\n.tc-thumbnail-background {\n\tposition: absolute;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-icon svg,\n.tc-thumbnail-icon img {\n\twidth: 3em;\n\theight: 3em;\n\t<<filter \"drop-shadow(2px 2px 4px rgba(0,0,0,0.3))\">>\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon img {\n\tfill: #fff;\n\t<<filter \"drop-shadow(3px 3px 4px rgba(0,0,0,0.6))\">>\n}\n\n.tc-thumbnail-icon {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: -webkit-flex;\n\t-webkit-align-items: center;\n\t-webkit-justify-content: center;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.tc-thumbnail-caption {\n\tposition: absolute;\n\tbackground-color: #777;\n\tcolor: #fff;\n\ttext-align: center;\n\tbottom: 0;\n\twidth: 100%;\n\tfilter: alpha(opacity=0.9);\n\topacity: 0.9;\n\tline-height: 1.4;\n\tborder-bottom-left-radius: 3px;\n\tborder-bottom-right-radius: 3px;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-caption {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n}\n\n/*\n** Diffs\n*/\n\n.tc-diff-equal {\n\tbackground-color: <<colour diff-equal-background>>;\n\tcolor: <<colour diff-equal-foreground>>;\n}\n\n.tc-diff-insert {\n\tbackground-color: <<colour diff-insert-background>>;\n\tcolor: <<colour diff-insert-foreground>>;\n}\n\n.tc-diff-delete {\n\tbackground-color: <<colour diff-delete-background>>;\n\tcolor: <<colour diff-delete-foreground>>;\n}\n\n.tc-diff-invisible {\n\tbackground-color: <<colour diff-invisible-background>>;\n\tcolor: <<colour diff-invisible-foreground>>;\n}\n\n.tc-diff-tiddlers th {\n\ttext-align: right;\n\tbackground: <<colour background>>;\n\tfont-weight: normal;\n\tfont-style: italic;\n}\n\n.tc-diff-tiddlers pre {\n margin: 0;\n padding: 0;\n border: none;\n background: none;\n}\n\n/*\n** Errors\n*/\n\n.tc-error {\n\tbackground: #f00;\n\tcolor: #fff;\n}\n\n/*\n** Tree macro\n*/\n\n.tc-tree div {\n \tpadding-left: 14px;\n}\n\n.tc-tree ol {\n \tlist-style-type: none;\n \tpadding-left: 0;\n \tmargin-top: 0;\n}\n\n.tc-tree ol ol {\n \tpadding-left: 1em; \n}\n\n.tc-tree button { \n \tcolor: #acacac;\n}\n\n.tc-tree svg {\n \tfill: #acacac;\n}\n\n.tc-tree span svg {\n \twidth: 1em;\n \theight: 1em;\n \tvertical-align: baseline;\n}\n\n.tc-tree li span {\n \tcolor: lightgray;\n}\n\nselect {\n color: <<colour select-tag-foreground>>;\n background: <<colour select-tag-background>>;\n}\n\n/*\n** Utility classes for SVG icons\n*/\n\n.tc-fill-background {\n\tfill: <<colour background>>;\n}\n\n/*\n** Flexbox utility classes\n*/\n\n.tc-flex {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-flex-column {\n\tflex-direction: column;\n}\n\n.tc-flex-row {\n\tflex-direction: row;\n}\n\n.tc-flex-grow-1 {\n\tflex-grow: 1;\n}\n\n.tc-flex-grow-2 {\n\tflex-grow: 2;\n}\n\n/*\n** Other utility classes\n*/\n\n.tc-small-gap {\n\tmargin-left: .5em;\n\tmargin-right: .5em;\n}\n\n.tc-small-gap-left {\n\tmargin-left: .5em;\n}\n\n.tc-small-gap-right {\n\tmargin-right: .5em;\n}\n\n.tc-big-gap {\n\tmargin-left: 1em;\n\tmargin-right: 1em;\n}\n\n.tc-big-gap-left {\n\tmargin-left: 1em;\n}\n\n.tc-big-gap-right {\n\tmargin-right: 1em;\n}\n\n.tc-word-break {\n\tword-break: break-all;\n}\n"
},
"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize",
"text": "15px"
},
"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/bodylineheight",
"text": "22px"
},
"$:/themes/tiddlywiki/vanilla/metrics/fontsize": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/fontsize",
"text": "14px"
},
"$:/themes/tiddlywiki/vanilla/metrics/lineheight": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/lineheight",
"text": "20px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storyleft": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storyleft",
"text": "0px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storytop": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storytop",
"text": "0px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storyright": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storyright",
"text": "770px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storywidth": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storywidth",
"text": "770px"
},
"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth",
"text": "686px"
},
"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint",
"text": "960px"
},
"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth",
"text": "350px"
},
"$:/themes/tiddlywiki/vanilla/options/stickytitles": {
"title": "$:/themes/tiddlywiki/vanilla/options/stickytitles",
"text": "no"
},
"$:/themes/tiddlywiki/vanilla/options/sidebarlayout": {
"title": "$:/themes/tiddlywiki/vanilla/options/sidebarlayout",
"text": "fixed-fluid"
},
"$:/themes/tiddlywiki/vanilla/options/codewrapping": {
"title": "$:/themes/tiddlywiki/vanilla/options/codewrapping",
"text": "pre-wrap"
},
"$:/themes/tiddlywiki/vanilla/reset": {
"title": "$:/themes/tiddlywiki/vanilla/reset",
"type": "text/plain",
"text": "/*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */\n\n/*\nDocument\n========\n*/\n\n/**\nUse a better box model (opinionated).\n*/\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n/**\nUse a more readable tab size (opinionated).\n*/\n\n:root {\n -moz-tab-size: 4;\n tab-size: 4;\n}\n\n/**\n1. Correct the line height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n*/\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/*\nSections\n========\n*/\n\n/**\nRemove the margin in all browsers.\n*/\n\nbody {\n margin: 0;\n}\n\n/**\nImprove consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)\n*/\n\nbody {\n font-family:\n system-ui,\n -apple-system, /* Firefox supports this but not yet `system-ui` */\n 'Segoe UI',\n Roboto,\n Helvetica,\n Arial,\n sans-serif,\n 'Apple Color Emoji',\n 'Segoe UI Emoji';\n}\n\n/*\nGrouping content\n================\n*/\n\n/**\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n}\n\n/*\nText-level semantics\n====================\n*/\n\n/**\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr[title] {\n text-decoration: underline dotted;\n}\n\n/**\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)\n2. Correct the odd 'em' font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family:\n ui-monospace,\n SFMono-Regular,\n Consolas,\n 'Liberation Mono',\n Menlo,\n monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/**\nPrevent 'sub' and 'sup' elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\nTabular data\n============\n*/\n\n/**\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n}\n\n/*\nForms\n=====\n*/\n\n/**\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\nRemove the inheritance of text transform in Edge and Firefox.\n1. Remove the inheritance of text transform in Firefox.\n*/\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\nCorrect the inability to style clickable types in iOS and Safari.\n*/\n\nbutton,\n[type='button'],\n[type='reset'],\n[type='submit'] {\n -webkit-appearance: button;\n}\n\n/**\nRemove the inner border and padding in Firefox.\n*/\n\n::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\nRestore the focus styles unset by the previous rule.\n*/\n\n:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\nRemove the additional ':invalid' styles in Firefox.\nSee: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737\n*/\n\n:-moz-ui-invalid {\n box-shadow: none;\n}\n\n/**\nRemove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers.\n*/\n\nlegend {\n padding: 0;\n}\n\n/**\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n[type='search'] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to 'inherit' in Safari.\n*/\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/*\nInteractive\n===========\n*/\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n"
},
"$:/themes/tiddlywiki/vanilla/settings/fontfamily": {
"title": "$:/themes/tiddlywiki/vanilla/settings/fontfamily",
"text": "system-ui, -apple-system, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\""
},
"$:/themes/tiddlywiki/vanilla/settings/codefontfamily": {
"title": "$:/themes/tiddlywiki/vanilla/settings/codefontfamily",
"text": "\"SFMono-Regular\",Consolas,\"Liberation Mono\",Menlo,Courier,monospace"
},
"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment": {
"title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment",
"text": "fixed"
},
"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize": {
"title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize",
"text": "auto"
},
"$:/themes/tiddlywiki/vanilla/sticky": {
"title": "$:/themes/tiddlywiki/vanilla/sticky",
"text": "<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\" type=\"match\" text=\"yes\">\n``\n.tc-tiddler-title {\n\tposition: -webkit-sticky;\n\tposition: -moz-sticky;\n\tposition: -o-sticky;\n\tposition: -ms-sticky;\n\tposition: sticky;\n\ttop: 0px;\n\tbackground: ``<<colour tiddler-background>>``;\n\tz-index: 500;\n}\n\n``\n<$list filter=\"[range[100]]\">\n`.tc-story-river .tc-tiddler-frame:nth-child(100n+`<$text text=<<currentTiddler>>/>`) {\nz-index: `<$text text={{{ [[200]subtract<currentTiddler>] }}}/>`;\n}\n`\n</$list>\n</$reveal>\n"
}
}
}
<p><img src="https://img.itch.zone/aW1nLzIxMzk5OTQuZ2lm/original/7DaNNM.gif" loading="lazy"><em></em><img src="https://img.itch.zone/aW1nLzIxMzk5OTQuZ2lm/original/7DaNNM.gif" loading="lazy"><img src="https://img.itch.zone/aW1nLzIxMzk5OTQuZ2lm/original/7DaNNM.gif" loading="lazy"><img src="https://img.itch.zone/aW1nLzIxMzk5OTQuZ2lm/original/7DaNNM.gif" loading="lazy"><img src="https://img.itch.zone/aW1nLzIxMzk5OTQuZ2lm/original/7DaNNM.gif" loading="lazy"><br></p>
<p><strong>THE IMAGE IS HOTEL TO THE BRAIN </strong></p>
<p>Check in today!! 10 Beautiful Postcards - a wonderful pile of rubble to sift through on your computer. A resort of many rooms for your eyes and hands to drift around - 200+ mangled collage ruins, flattened into pleasure palaces for you to uncover and explore. Investigate the dimension's mysterious economy. Visit and review multiple themed locations. Take snapshots of your friend, the void - or simply have fun relaxing by the pool. A fun and upbeat game for new w<del></del>avers of all ages. Won't you come dwell in my house?<br></p>
<p>Assembled by <strong>thecatamites </strong><br>with music by <strong>NEW VADERS</strong> (<a href="https://trashtronix.bandcamp.com/" rel="nofollow noopener" referrerpolicy="origin">Goblet Grotto, Magic Wand</a>)<br>postcards by <strong>Emilie Reed</strong> (<a href="https://coleo_kin.itch.io/">Duck Ted Bundy</a>)<br>and ominous murals by <strong>Alex Degen</strong> (<a href="http://koyamapress.com/projects/soft-x-ray-mindhunters/" rel="nofollow noopener" referrerpolicy="origin">Soft X-Ray / Mindhunters</a>)<br></p>
<p>Estimated play time is 2 hours. Comes for PC / MAC / LINUX. Controlled with the arrow keys or WASD as you prefer. Thank you for l@@king.</p><p>[NOTE: 32 and 64 bit Mac versions available but unnotarized files may cause Catalina issues for all I know]</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/g334qBswGKc" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDI3ODMxLzIxMzk5MTgucG5n/original/rMrF6R.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDI3ODMxLzIxMzk5MTkucG5n/original/qJwbse.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDI3ODMxLzIxMzk5MjgucG5n/original/OdRMqT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDI3ODMxLzIxMzk5MzEucG5n/original/P8LqAl.png]]
<p>10 games, each made in a week! Some were a bit of a bust, others were pretty rad.<br></p>
<p>These games are simple prototypes, proof of concepts, or unfinished works. This bundle serves as a bit of a time capsule for me, but also for the curious or those who might go on a similar journey!</p>
<hr>
<p></p>
<p><strong>Week 1</strong> - DRIFTING Through Time<br>Theme: 10 seconds or less.<br><br>Turning your car sideways is<strong> SO COOL</strong> it <strong>FREEZES TIME</strong>! Drift to stop time, get as many laps as you can before time runs out!</p>
<hr>
<p></p>
<p><strong>Week 2 </strong>- Dog Ownership Simulator<br>Theme:<strong> </strong>Durational</p>
<p>Play with your dog! Click and drag to give it a spin, swipe on poos to clean them up!</p>
<hr>
<p><strong>Week 3</strong> - Chillin' Bayside<br>Theme: Melbourne</p>
<p>A simple little physics toy inspired by summer holidays on the great ocean road. Kinda like playing around in a bath - click and hold the mouse to push stuff around :)</p>
<hr>
<p><strong>Week 4</strong> - Paint the Town Red<br>Theme: Colour</p>
<p>Bounce around the world and paint as you go, cherry tomato! A game dedicated to a personal friend of mine.</p>
<hr>
<p><strong>Week 5</strong> - RONG<br>Theme: Phsyics</p>
<p>An inter-dimensional pong remix, RONG has you sticking it out for the highest score! Made in collab. with <a href="https://divlauren.itch.io/" target="_blank">divlauren</a>!</p>
<hr>
<p><strong>Week 6</strong> - ???<br>Theme: Legedermain</p>
<p>Originally supposed to be about a magician who had his many hats stolen, this unfinished puzzle platform has never seen the light of day.</p>
<hr>
<p><strong>Week 7</strong> - Pineapple Pipeline<br>Theme: Camerawork</p>
<p>A simple skateboarding game down an infinite half-pipe. This game was inspired by fish-eye lenses used in skateboarding videos.</p>
<hr>
<p><strong>Week 8</strong> - Tandem Toobs<br>Theme: Gift</p>
<p>I made this game as a <strong>gift</strong> for my parents. Currently unfinished, but intended to be a co-op platformer, each player controls one half of two cylinders, and has to co-ordinate to move around.</p>
<hr>
<p><strong>Week 9</strong> - Beach Bird Volleyball<br>Theme: Minigame<br></p>
<p></p>
<p>Beach Bird Volleyball stars buff seagulls using their floppy fists to fight it out in games of volleyball.</p>
<hr>
<p><strong>Week 10</strong> - Mouse racing game<br>Theme: Weird Input</p>
<p><span class="">This game is played by turning your mouse upside down and revving up the mousewheel like a pullback car.</span></p>
<hr>
<p><strong>Week 11</strong> - Spider Playground<br>Theme: Playground</p>
<p><span class="">Spider playground is a unfinished little sandbox where you can explore a climable(ish) playground as a tiny spider.</span><br></p>
<hr>
<p>You may notice that some of these projects are already available for free on my page. That is no mistake! This package will have all my games <strong>as they were completed</strong> when I was working through my game-a-week journey. The games I've chosen to upload separately might receive updates in the future, and some already have. <br></p>
<p></p>
<p>This bundle is an honest record of my successes and failures. I've also decided to charge for this, as truthfully there was a lot of labour put into these projects. If you're not interested in strange and possibly broken games, check out my page for finished works. But if you do, I hope they can bring you as much joy as they've brought me :)<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTE3MDkyLzI2ODUyNDAuZ2lm/original/JmGsfK.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3MDkyLzI2ODUyNDEuZ2lm/original/3%2FHGUQ.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3MDkyLzI2ODUyNDIuZ2lm/original/%2BhQRd%2B.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3MDkyLzI2ODUyNDMuZ2lm/original/JMoD42.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3MDkyLzI2ODUyNDQuZ2lm/original/zFZnCO.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3MDkyLzI2ODUyNDUuZ2lm/original/0eqEXI.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3MDkyLzI2ODUyNDguZ2lm/original/V8LQqN.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3MDkyLzI3ODM3MTMuZ2lm/original/1tB6YZ.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3MDkyLzI3ODM3NjIuZ2lm/original/Xcb%2F6%2B.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3MDkyLzI3ODM3ODQuZ2lm/original/1mRuIt.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3MDkyLzI3ODQxNjIuZ2lm/original/7hh7an.gif]]
<p><strong><a href="https://itch.io/b/619/10mg-collection"><img src="https://img.itch.zone/aW1nLzQzOTk3MjcucG5n/original/UiBg0r.png" loading="lazy"></a><br></strong></p>
<p><strong>10mg</strong> is a collection of 10 minute long games, a tiny dose of something special.</p>
<p><em>Dating is competitive<br>Marriage is co-operative<br>Can you play nice enough to prevent the collapse of your relationship?</em></p>
<h2>Love in the age of coronavirus</h2>
<p><strong>Locked In is the first truly <em>two-player visual novel,</em> simulating the breakdown of a marriage during lockdown.</strong></p>
<ul><li><strong>Two sides of the story: </strong>Each player controls a character as they argue their case.</li><li><strong>Multiple endings:</strong> Can you work together to settle the argument in an amicable way for your child?</li><li><strong>Real life: </strong><em></em><strong></strong>Based on interviews with real people in tense lockdown situations, and set in the UK about 3 weeks into a total lockdown.</li></ul>
<p>Discuss the game further on our <a href="https://discord.gg/hk6wbtk" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Discord</a>.</p>
<h2>Controls</h2>
<p>Player 1: Up/down arrows or W/S, space to submit.</p>
<p>Player 2: Mouse to select, click to submit.</p>
<h2>Credits</h2>
<p>A game by <a href="https://twitter.com/animtree" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Chard</a> and <a href="https://twitter.com/antony_de_fault" rel="nofollow noopener" referrerpolicy="origin">de Fault</a></p>
<p>Audio by <a href="https://twitter.com/rickyzaudio" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Ricky Z</a></p>
<p>Additional programming by <a href="https://twitter.com/JohnCGXIII" target="_blank" rel="nofollow noopener" referrerpolicy="origin">John Connor</a></p>
<p>Check out <a href="https://farfewgiants.itch.io" target="_blank">our other games</a> for more atmospheric experiences.</p>
<p><a href="https://10min.games/presskit/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">PRESSKIT</a> for streamers and press.</p>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/oGkgZ23V65Y" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzczNTY2LzQzNTgxODYuZ2lm/original/gBIlAY.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzczNTY2LzQzODQwNDMucG5n/original/3fomq7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzczNTY2LzQzODQwNDQucG5n/original/Bzjve%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzczNTY2LzQzODQwNDUucG5n/original/I8Gx6C.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzczNTY2LzQzODQwNDcucG5n/original/UG%2FjLp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzczNTY2LzQzODQwNDYucG5n/original/4TWOw2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzczNTY2LzQzODQwNDgucG5n/original/53pv3l.png]]
<figure><a href="https://itch.io/b/619/10mg-collection" target="_blank"><img src="https://img.itch.zone/aW1nLzQzNzk0MDEucG5n/original/QaonYJ.png" alt="10mg Bundle" title="10mg Bundle" loading="lazy"></a><br><strong>10mg</strong> is a collection of 10 minute long games, a tiny dose of something special.<br></figure>
<p><strong>SEALED ESTATE</strong> is psychological horror game, in which you are locked inside by a creature ready to hunt you down, whilst you figure out how to escape from the estate you have been locked inside. who lived here? who are the voices haunting your every step?</p>
<p>What you will find in your exploration:</p>
<ul><li>Lights are not working in the home.</li><li>An enigmatic creature hunting you down.</li><li>other creatures laying in wait, staring at you.</li></ul>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/H0CKxdwURX4" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzczODgzLzQzNDc4MTYucG5n/original/Iij%2BZl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzczODgzLzQzNDc4MTcucG5n/original/gthwUy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzczODgzLzQzNDc4MTgucG5n/original/2PSYZT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzczODgzLzQzNDc4MTkucG5n/original/nw6jIz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzczODgzLzQzNDc4MjAucG5n/original/CwbCqO.png]]
<p>You are the newly asigned leader of a crime gang.</p>
<p>It's your job to lead your gang and your allies to success while risking everything and put your own comrades in danger.</p>
<p>Will you manage to keep your gang safe as you climb your way up?</p>
<p>This is a solo-rpg where you yourself make the story about your leader, their gang and the challenges that they face.</p>
<p>The PDF might be hard to read but zooming in helps. Otherwise there is also a clean-text version that you can edit and is for various accessibility issues.</p>
<p>To play this you'll need: Something to write on and a d12.<br><br><br></p>
[img width=500 [https://img.itch.zone/aW1nLzM4OTU4MzUuanBn/original/ZD444w.jpg]]
<p><strong>1400 Sneak</strong> is lo-fi heist-fantasy. A secret and sinister world hides in the darkness, a world of subterfuge, larceny, and murder-for-hire. Loyalty belongs to the highest bidder, and everyone has a price, or a price on their head.</p>
<p><strong>1400 Sneak </strong>is a stand-alone table-top RPG. The rules are short and easy to learn and the whole game can fit on a single sheet of paper. It can be played using just the rules provided, or combined with other entries in the 1400 series (<em><a href="https://unknowndungeon.itch.io/1400-quest">1400 Quest</a>, <a href="https://unknowndungeon.itch.io/1400-below">1400 Below</a>, <a href="https://unknowndungeon.itch.io/1400-mage" target="_blank">1400 Mage</a>, </em>and <em><a href="https://unknowndungeon.itch.io/1400-planes" target="_blank">1400 Planes</a></em>) to expand the world and provide more character and game options .</p>
<p>The main rules and character creation fit on one page (available in the free 'demo' version). The full game has two more pages which contain gear, gadgets, poisons, and spells, and more character options, as well as tables to help the DM create and run fun heist adventures with interesting NPCs in entertaining locations.</p>
<p><strong>1400 Sneak </strong>is based on the <a href="https://jasontocci.itch.io/2400" target="_blank">2400 microgames/toolkit</a> by Jason Tocci, and brings the system of 24XX into a fantasy world of adventure, treasure, and peril.</p>
<p><em>Art on this page is <a href="https://www.beeple-crap.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">BEEPLE</a>(Mike Winkelmann).</em></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODYzMzMxLzQ4NDY5ODAucG5n/original/cKM8Aw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODYzMzMxLzQ4NjMyNTEucG5n/original/Og%2BmvM.png]]
<p>Some simple pixel art weapons for use in your projects. Feel free to use them in free or commercial projects. I'll be expanding/improving on this collection as time goes by.</p>
<p><strong>Check out my other projects:</strong></p><p><a href="https://powered-by-decaf.itch.io/pixel-art-top-down-kitchen-pack" target="_blank">16x16 Pixel Art Home Assets Pack (WIP)</a></p><p><a href="https://powered-by-decaf.itch.io/10-days-to-jupiter" target="_blank">10 Days to Jupiter (Early Access Demo)</a><br></p><p><strong>Permissions:</strong></p>
<p>-You may use this in both free and commercial projects.</p>
<p>-You may edit these assets as you wish.</p>
<p>-You may <strong>not </strong>sell or redistribute these assets as your own.</p>
<p>-Credit is not necessary but appreciated.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNzYyNy83MTI3OTMwLnBuZw==/original/%2FnkkpB.png]]
<h3>2-3-5-7 is a game to test how well you recognise prime numbers.</h3>
<p>Swipe left and right to answer if a given number is prime, and see how high a chain of correct answers you can reach.</p>
<p>With 3 different difficulty levels, you can tune the challenge to your preferences.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTQ2OTExLzUzNjc3NTUuanBn/original/PpdGOG.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ2OTExLzUzNjc3NTYuanBn/original/rMvgNK.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ2OTExLzUzNjc3NTguanBn/original/d0X7vR.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ2OTExLzUzNjc3NTcuanBn/original/1BLjiJ.jpg]]
<h3 class="text-center"><img src="https://img.itch.zone/aW1nLzYwOTIzNzQucG5n/original/pZtUIV.png" loading="lazy"></h3>
<p class="text-center"><a href="https://www.instagram.com/admurin/" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzYwOTE5MDkucG5n/original/GEWI9y.png" alt="Instagram" title="Instagram" loading="lazy"></a> <a href="https://twitter.com/admurin" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzYwOTE5MjUucG5n/original/QaEOvv.png" alt="Twitter" title="Twitter" loading="lazy"></a> <a href="https://www.reddit.com/r/admurin/" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzYwOTIxNjkucG5n/original/UUfRwU.png" alt="Reddit" title="Reddit" loading="lazy"></a> <a href="https://www.facebook.com/Admurin/" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzYxMjA3NzQucG5n/original/Ae1a2A.png" alt="Facebook" title="Facebook" loading="lazy"></a> <a href="https://ko-fi.com/admurin" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzYwOTIxODYucG5n/original/eaz2Az.png" alt="Ko-fi" title="Ko-fi" loading="lazy"></a></p>
<p class="text-center">Patreons get this pack, future updates, requests and more!</p>
<p class="text-center"><a href="https://www.patreon.com/admurin" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzYwOTI1OTUucG5n/original/DjlmOJ.png" alt="Patreon" title="Patreon" loading="lazy"></a><br></p>
<h4 class="text-center">Like it? Let me know in the comments!</h4>
<p><br></p>
<h3 class="text-center"><img src="https://img.itch.zone/aW1nLzYxMzU4MDIucG5n/original/Aw0NqG.png" loading="lazy"></h3>
<p>This type of character does not hold any tools in his hand, he is the base of all the classes. You can see the previews on the side bar.<br></p>
<p><strong>BASICS</strong><br>Idle (4),Walk (8), Run (8), Jump (9), Crouch (4), Hit (7), Death A (7), Death B (7), Death C (10), Step-Back (6), Dodge (10), Slide (8)</p>
<p><strong>LADDERS<br></strong></p>
<p><strong>FRONT</strong>: Intro (1), Climb (4), Slide (1), Exit (1)<strong><br></strong><strong>SIDE</strong>: Intro (1), Climb (4), Slide (1),Exit Up (5), Exit Down (3), Ledge Hang (4), Wall Jump (3), Wall Slide (5)</p>
<p><strong>MELEE<br></strong>Dive Kick (7), Kick Combo (12), Punch Combo (18)</p>
<p><strong>THROWING<br></strong>1x Throw (5), 3x Throw (7), 5x Throw (9), End Throw (16), Normal Throw (3)</p>
<p><br></p>
<h3 class="text-center"><img src="https://img.itch.zone/aW1nLzYxMzU4MDYucG5n/original/lud1Cs.png" loading="lazy"></h3>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzYxMzU5NDYucG5n/original/riD7vp.png" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzYxMzU2OTIuZ2lm/original/Gki1vr.gif" loading="lazy"><br></p>
<p><img src="https://img.itch.zone/aW1nLzYxMzU2ODcuZ2lm/original/1p6fOL.gif" loading="lazy"><br></p>
<p><br></p>
<p>This type of character comes with all the wanderer animations holding the swords and shields from my <a href="https://admurin.itch.io/pixel-armory" target="_blank">Armory Pack</a>. Aside from this he also comes with the gladiator animations. <br></p>
<ul><li>10 types of gladiators come, from low level gladiators to mighty ones. </li><li>This also includes legendary variants, the crimson and timeless gladiators.</li><li>Wanderer animations holding different swords and shields.</li></ul>
<p><strong>GLADIATOR: </strong>Block (2), Blocked Hit (5), Block + Thrust (5), Sword Combo (13), Air Combo (9), Shield Rush (7), Charge (10)</p>
<p><br></p>
<h3 class="text-center"><img src="https://img.itch.zone/aW1nLzYxMzU4MDcucG5n/original/0GuOpJ.png" loading="lazy"></h3>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzYxMzU5NTAucG5n/original/2WSchu.png" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzUxMzgzNTQuZ2lm/original/2nv4vZ.gif" loading="lazy"><br></p>
<p><strong>Patreons get the first look at the animations, the pack will be uploaded after some time.</strong><br></p>
<p>This type of character comes will all the wanderer animations but this time he is holding a bow. As of right now he is only holding the base bow, 3 unique bows have been made so far and even more will be available when updated. He also brings some marksman animations<br></p>
<ul><li>No variants included yet just the base character</li><li>Base bow included (incomplete)</li></ul>
<p><strong>MARKSMAN: </strong>Single shot (7), Air Shot (10), Floor Shot (9), Jump Shot (15), Quick Shot (4), Precision Shot (10)</p>
<p><br></p>
<h3 class="text-center"><img src="https://img.itch.zone/aW1nLzYxMzU4MTIucG5n/original/SGp4gD.png" loading="lazy"></h3>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzYxMzU5NTYucG5n/original/EpdlEY.png" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzUxMzg1MjUuZ2lm/original/kWN4xY.gif" loading="lazy"><br></p>
<p>This type of character comes with... you guessed, wanderer animations with a staff. I plan on making him be able to hold wands, shields and grimoires (update far from right now)</p>
<ul><li>No variants included yet just the base character
</li><li>Base staff included (incomplete)</li></ul>
<p><strong>MAGE:</strong> Ray (5), Stomp (7), Call the heavens (8), Touch floor (6), Combo floor (11)<br><br></p>
<h3 class="text-center"><img src="https://img.itch.zone/aW1nLzYxMzU5NjYucG5n/original/g213b4.png" loading="lazy"></h3>
<ul><li>Character Size: 42x29 px</li><li>Sprite Dimensions: Most are 64x48px, death animations are 64x64px</li><li>All classes come with Wanderer, Extended and Climber variants</li><li>Can be used in <strong>UNITY </strong>easily</li><li>Effects/Projectiles <strong>NOT </strong>included</li><li>The pack consists of two directional animations<br>
</li><li>List of animations: 200+
</li><li>Frames 1000+
</li></ul>
<p><br></p>
<h3 class="text-center"><img src="https://img.itch.zone/aW1nLzYxMzU5NjgucG5n/original/A5bmA8.png" loading="lazy">
</h3>
<ul><li>You can use this asset in any game project, personal or commercial</li><li><strong>DO NOT</strong> <strong>resell or redistribute</strong> <strong>AS A GAME ASSET</strong>, it has to be part of a project</li><li>Credit is not required but it is appreciated</li><li>Modify to suit your needs</li><li>You are <strong>NOT </strong>allowed to turn any of my assets to an NFT.</li></ul>
<p><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzYxMzY0MTMucG5n/original/csb0wi.png" loading="lazy"></p>
<p class="text-center">Click the image to see my asset collections. <br></p>
<p class="text-center"><strong>8 Item Packs (2500+ Items) and 8 UI Packs (1700+ sprites per pack)</strong></p>
<figure><del><a href="https://itch.io/c/1405772/admurins-items" target="_blank"><img src="https://img.itch.zone/aW1nLzYxMzYzODQucG5n/original/0wdFn0.png" alt="Admurin's Items" title="Admurin's Items" loading="lazy"></a></del><del><a href="https://itch.io/c/1426784/ui-themes" target="_blank"><img src="https://img.itch.zone/aW1nLzYxMzYzODUucG5n/original/YUdCso.png" alt="UI Themes" title="UI Themes" loading="lazy"></a></del></figure>
[img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MDEuZ2lm/original/ddUMHX.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MDMuZ2lm/original/FHkiO5.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MDQuZ2lm/original/QmPZpZ.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MDYuZ2lm/original/c5Vcum.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MDkuZ2lm/original/rlFftY.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MTEuZ2lm/original/2g776D.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MTIuZ2lm/original/nqR3JO.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MTQuZ2lm/original/PAzEjs.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MTUuZ2lm/original/9%2FoyUD.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MTYuZ2lm/original/k%2FySGT.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MTguZ2lm/original/vxFOmT.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MjAuZ2lm/original/98NPs1.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MjIuZ2lm/original/EHNanz.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MjMuZ2lm/original/Z0FRx8.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MjUuZ2lm/original/z4x2hY.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MjYuZ2lm/original/u%2B5Ufo.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MjguZ2lm/original/9gM28i.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MjkuZ2lm/original/g0iiBh.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MzAuZ2lm/original/gbu0au.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MzEuZ2lm/original/R8tpTD.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MzMuZ2lm/original/vU8o76.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MzUuZ2lm/original/AQKDyC.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MzYuZ2lm/original/PzSMNI.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MzcuZ2lm/original/ZTlDZ7.gif]]
<p><br></p>
<p><strong>2000:1: A Space Felony</strong> is a murder mystery courtroom drama set aboard the USS Endowment, an interplanetary Spacecraft that has lost communication with Earth.</p>
<p>Utilising your camera and demonstrating your keen detective skills, you must document your findings, and piece together the crew's final hours from the aftermath. This photographic evidence is then applied in a cross-examination of the crime's prime suspect; MAL, the ship's on-board AI system.</p>
<p>If MAL is guilty, it is your responsibility to deactivate him.</p>
<p>A follow-up(ish) to 2016's critically acclaimed(ish) <a href="https://nationalinsecurities.itch.io/disorient-on-the-murder-express" target="_blank">Disorient On The Murder Express</a>, National Insecurities returns with a much more ambitious investigation that walks the line between science and fiction, resulting in some kind of combination of the two.</p>
<p>Read about 2000:1: A Space Felony on:<br><a href="http://www.eurogamer.net/articles/2017-07-31-2000-to-one-a-space-felony-is-the-kubrickest-game-yet" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Eurogamer<br></a><a href="http://www.pcgamer.com/a-clumsy-detective-investigates-space-murders-in-20001-a-space-felony/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">PC Gamer<br></a><a href="https://www.rockpapershotgun.com/tag/20001-a-space-felony/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Rock, Paper, Shotgun!<br></a><a href="https://www.pcgamesn.com/20001-a-space-felony/unreal-engine-4" target="_blank" rel="nofollow noopener" referrerpolicy="origin">PCGamesN</a></p>
<p><br></p>
<p>-------------- <strong>GET THIS GAME:</strong></p>
<p><strong>If you are subscribed to Humble Monthly, you already own this game as part of the Humble Trove. If you want it on Steam, you may have to wait a while, we're currently trying to determine our best way forward with that currently precarious platform.</strong><br></p>
<p><strong>For now (and probably forever), the best way to buy this game and support us is right here on itch.io, and we very much appreciate your support. Thank you.<br><br>Email: nationalinsecuritiespresents@gmail.com<br></strong><strong>Twitter: <a href="https://twitter.com/NIPresents" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@NIPresents</a></strong></p>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/hhTo1_7NAoM" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTUzNDE1LzcwMjk4OC5wbmc=/original/f%2FmzGW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUzNDE1LzcwMjk4OS5wbmc=/original/5nkfhP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUzNDE1LzcwMjk5MC5wbmc=/original/Jyuxnl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUzNDE1LzcwMjk5MS5wbmc=/original/f7Z%2BPn.png]]
<p>There are currently four older games in the bundle. You can get them individually for cheaper, or you can buy the bundle (for an increased price) which will also get you every game I release on itch in 2021. Future games will be added to the bundle as they are published.</p>
<p>Note: There is no guarantee of what (if anything) I will put out next year. I have several projects close to completion, but the only thing you're getting 100% for sure is the older games. I will be updating this bundle with any developments and new projects as they happen.<br><br>Current list of contents (regularly updated):</p>
<ul><li>Sagas of the Icelanders - a PBtA game about the norse settlement of Iceland in 900AD</li><li>Xenoraptor - a solitaire hybrid boardgame experiment where you're running from an alien creature on a derelict spaceship (think Alien)</li><li>A Singular Quest - a PBtA microgame played with only one move, written as part of the Your Move jam</li><li>Worlds of Troika - a humorous hack of some PBtA ideas on top of Troika</li></ul>
<p>Added 9th of May:<br></p>
<ul><li>Kriegsmesser Zine</li></ul>
[img width=500 [https://img.itch.zone/aW1nLzQ4ODQ4MzYuanBn/original/1az%2BVx.jpg]]
<p>20x20x20 is a tiny maze game, where you must activate the four mysterious orbs to unlock the exit and escape the labyrinth. There are 20 rooms to navigate, and though a way through might not seem obvious at first, never fear! For you possess the uncanny ability to rearrange the rooms by scrolling the rows and columns. Keep an eye out for that meddling labyrinth goblin though...</p>
<p><strong>2020 Edition Update</strong>: Now with optional cheesy music, rudimentary sounds effects and screen-shake!! </p>
<p>Controls are as follows:</p>
<ul><li>left and right arrows to move</li><li>space to jump</li><li>X to scroll columns</li><li>Z to scroll rows</li><li>R to restart</li><li>ESC to exit</li><li>F11 to toggle fullscreen or windowed</li><li>M to toggle music</li><li>S to toggle sound effects</li><li>Shift to toggle screen-shake</li></ul>
<p>The arrows will indicate which rows/columns will move when scrolling.</p>
<p>This is my first game, so all feedback is welcome. Made as part of the GameMaker 20 Jam.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTE5ODY3LzI2OTk2ODYucG5n/original/KTf18t.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE5ODY3LzI3MDYzNDcuZ2lm/original/WF9imy.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE5ODY3LzI3MDYzNDguZ2lm/original/8EozEB.gif]]
<p><img src="https://img.itch.zone/aW1nLzQ2Njk0NjYucG5n/original/Jb%2FQe1.png" loading="lazy"><br></p>
<p><em>"...at dawn a black cloud came from the horizon; thunderous with wrath. The seven judges of hell raised their torches, lighting the land with their livid flame. </em><em>The earth cried despair to the heavens as daylight turned to darkness and the land was shattered like glass. </em><em>For six days and six nights the tempest raged and gathered fury, and poured over the people like the tides of war. </em><em>All sense and hope was lost, and the gods cowered in heaven..."</em></p>
<p><strong>2400 BC</strong> is a hack of <a href="https://jasontocci.itch.io/24xx" target="_blank">Jason Tocci's 24XX</a> about rebuilding community in the aftermath of an environmental catastrophe, thousands of years in the past.</p>
<p>It was inspired by Mesopotamian myth, particularly the Epic of Gilgamesh.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODMzMzQzLzQ2Njk4NDMucG5n/original/S5CQGC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMzMzQzLzQ2Njk4NDQucG5n/original/Pa61aW.png]]
<p>As graduation looms, true feelings begin to surface. Will Grace find the courage to overcome her shyness and bare her heart to Sera, or will her handsome rival Akira get to her first?</p>
<p>A free VN about being really gay for your best friend. A standalone entry in the NOISZ series, and prequel to NOISZ STΔRLIVHT - made in collaboration between SKY HOUR WORKS and Anarch Entertainment!</p>
<figure><em><img src="https://img.itch.zone/aW1nLzQxMjIwNDIuZ2lm/original/BhYSxO.gif" loading="lazy"></em></figure>
<p><img src="https://img.itch.zone/aW1nLzQxMjIwNDMuZ2lm/original/HyPuDQ.gif" style="max-width: 100%; font-size: 14px; background-color: rgb(17, 17, 17)" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzQxMjIwNDQuZ2lm/original/hiWKqM.gif" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzQxMjIwNDUuZ2lm/original/aVsG2d.gif" loading="lazy"><br></p>
<p>Play the second 2ECONDS, <em>My Heart's Reflection</em>, <a href="https://skyhour.itch.io/2econds-to-starlivht-my-hearts-reflection" target="_blank">here</a>.<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/hyRfO_kMrMg" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMjI3LzQxMjIwNjQuanBn/original/gDCSXI.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMjI3LzQxMjIwNjEuanBn/original/7odRzO.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMjI3LzQxMjIwNjIuanBn/original/Ljj3l0.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMjI3LzQxMjIwNjMuanBn/original/ZuaNsD.jpg]]
<p>"The day I put that uniform on, I saw myself in the mirror for the first time. And I dared to think, maybe, just maybe..."<br><br>A free VN about standing up to the world to be yourself. A standalone entry in the NOISZ series, and prequel to NOISZ STΔRLIVHT - made in collaboration between SKY HOUR WORKS and Anarch Entertainment!</p>
<p><em>content warnings: transphobia, homophobia, bullying, family confrontation, threats of physical violence, blackmail, threats to be sent to a mental ward</em></p>
<p>Play the first 2ECONDS, <em>Forever My Diamond</em>, <a href="https://skyhour.itch.io/2econds-to-strlivht-forever-my-diamond" target="_blank">here</a>.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/j7lt7IIme3s" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODg0MzI1LzUwMzU1MzkuanBn/original/o3y6Pr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODg0MzI1LzUwMzU1NDAuanBn/original/qu%2FqEf.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODg0MzI1LzUwMzU1NDEuanBn/original/t5DGJp.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODg0MzI1LzUwMzU1NDIuanBn/original/bkei9v.jpg]]
<p>3 BONES is a bare-bones fantasy role-playing game for a handful of players with a handful of dice. All you need are 3 six-sided dice and some paper for a character sheet: a business card that is blank on one side should be enough! It's perfect for running a one-shot adventure on short notice. Character generation is quick and easy so you can start playing right away. If you want to play "a charming rogue who casts illusions" or "a dwarvish archer who hunts monsters" or a "wizened sage who brews potions", then just write that down with a name and you're over halfway there!</p>
<p>The game includes a minimalist system that is easy to hack and make rulings for to keep the action moving. Also included are several examples of different ways to use the basic rules to represent magic, feats of heroic prowess and derring do, magic items, monsters, and more. (Special thanks to Luka Rejec of <a href="https://wizardthieffighter.itch.io/" target="_blank">WTF Studio</a> for the Creative Commons "Ten-eyed Wurgler"!) You could use it to run quick low-prep adventures in your favorite setting or use the included list of generic medieval fantasy equipment and example adversaries to just wing it and make up an improvisational game session. There is also a one-page adventure--"The Lair of the Wild Hunt" (with maps by Dyson Logos)--to help get you started. </p>
<p>If you want to use the system for long term campaigns, the experience and character development system called "Exploits" turns your "experience points" into a record of your adventures (like a "highlight reel" of your PC's adventuring career). PCs can directly draw on their previous experiences to help them in their future endeavors. Even if you get killed, your legendary Exploits can still inspire your allies to greater successes after you are gone. </p>
<p>Roll the bones and have some fun! Or pick the bones clean to port tasty bits of "3 BONES"--such as Exploits, Burdens, and recovery scenes--to season your other favorite games as useful and simple house rules.</p><p>The plain text version is free and released under a CC-BY license, so you can use it as a basis to hack your own games as long as you include "built on 3 BONES by Brian Bình" in the credits.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0NDIzLzQxNDk5ODQucG5n/original/iCi6Y6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0NDIzLzQxNDk4MzMucG5n/original/zIOOXd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0NDIzLzQxNDk4MzUucG5n/original/2i4uq7.png]]
<p>--- Now available for PC ---</p>
<p>8 Bit Space is a 2D platformer inspired by games from the 8-bit era of gaming and with particular emphasis on the ZX Spectrum.</p>
<p>New Update for PC now includes 'Old Skool' mode which ramps up the difficulty with more enemies and no continues, once you lose all 3 lives its game over!</p>
<p>OBJECTIVE</p>
<p>A new star system has just been discovered. Within one of the systems is an ancient portal, its origins or where it leads are unknown. It looks to be powered by 5 relics. With the help of your ship's computer, Z.X. You have been tasked with uncovering these 5 relics and powering the portal to find out where it leads.</p>
<p>Explore 25 alien planets in the search of your goal, valuable gems are also scattered within each planet, can you find them all?</p>
<p>FEATURES</p>
<p>* Unique 8 bit graphics using the ZX Spectrums colour palette.</p>
<p>* All planets are unlocked, explore in any order you like.</p>
<p>* Three difficulty levels, casual, normal and old skool.</p>
<p>* Classic 80s platforming action.</p>
<p>* Controller Supported (Android, Mac, PC)</p>
<p>This is the full game with no ads or in-app purchases.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/84NIdlD8UOY" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTg4OTI2LzU1MDM5NjUucG5n/original/R8uBWX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg4OTI2LzMxMDg2NjEucG5n/original/63rfvn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg4OTI2LzMxMDg2NjAucG5n/original/D8%2FoF6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg4OTI2LzMxMDg2NjIucG5n/original/QGvVw5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg4OTI2LzMxMDg2NTkucG5n/original/8bS1lR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg4OTI2LzMxMDg3MDQucG5n/original/ZikxKT.png]]
<p>8 Links is a cool & smooth puzzle where your goal is to link tiles. Make the longest chain, score more points and complete all the achievements</p>
<p>How to play:</p>
<p>- tap the squares to place tiles</p>
<p>- try to link as much tiles as you can</p>
<p>- once the bank button is filled up, press it to gain points</p>
<p>- use the crunch to delete a tile if you are blocked</p>
<p><br></p>
<p>If you have a feed back : antonmakesgames@gmail.com </p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/TItyjbpQ19M" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjQ1NDI5LzExNzIyMDQuZ2lm/original/dZyCJS.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ1NDI5LzEyMjczMTcuZ2lm/original/wY7NBF.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ1NDI5LzExNzIyMDUuanBn/original/SPfcjr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ1NDI5LzExNzIyMDYuanBn/original/Zbvc75.jpg]]
<p><img src="https://img.itch.zone/aW1nLzUxNjIzNTYucG5n/original/Sf7IZB.png" loading="lazy"><br>Leaving something behind is a hard task, Niles knows it all too <strong>well</strong>. When a stranger <em>disturbs</em> his peaceful everyday life and routine, he has no choice but to face the past and make some <em>life-changing</em> decisions.
</p>
<p>Yet, <strong><em>it</em></strong> keeps on beckoning him.<br></p>
<p><br><img src="https://img.itch.zone/aW1nLzUxNjIzODYucG5n/original/g7Gg4t.png" loading="lazy"><br></p>
<p>96 is a short, story-driven horror-esque LGBT+ game. <br>It is set in a small, post-apocalyptic island that has long been left in shambles by an unknown ailment.<br>It was made in RPG Maker MV, but it is more akin to a visual novel game/walking simulator game than an rpg. As such, the narration is prioritized over the gameplay.<br>It is by no means a game suited for a younger audience, please be aware of that.</p>
<p>If you'd like to know more about the game (beware of spoilers), we had some lovely people write articles about it!</p>
<p>Free Game Planet:<br><a href="https://www.freegameplanet.com/96-download-game/" rel="nofollow noopener" referrerpolicy="origin">https://www.freegameplanet.com/96-download-game/</a></p>
<p>5mg Site:<br><a href="https://www.5mgsite.com/post/96-an-narrative-driven-adventure-where-you-must-take-hard-choices-in-a-desolated-island" rel="nofollow noopener" referrerpolicy="origin">https://www.5mgsite.com/post/96-an-narrative-driven-adventure-where-you-must-tak...</a></p>
<p>Warp Door:</p>
<p><a href="http://warpdoor.com/2021/03/10/96/" rel="nofollow noopener" referrerpolicy="origin">http://warpdoor.com/2021/03/10/96/</a><br></p>
<p>Please do check them out if you're interested! :)</p>
<p>Or, if you'd rather watch someone else play it, AlphaBetaGamer made an awesome video on our game!<br></p>
<div class=""><iframe width="500" height="281" src="https://www.youtube.com/embed/ziFM2elPiMg" frameborder="0" allowfullscreen=""></iframe></div>
<p><img src="https://img.itch.zone/aW1nLzUxNjIzNjEucG5n/original/VKGdof.png" loading="lazy"><br></p>
<p>Hi everyone, this is our first game, we hope you’ll like it. It was made in two months, so please keep that in mind. There are no (or very little) custom assets as the challenge was to tell a story with pre-made assets. None of us are native speakers and we apologize for any mistake. Please feel free to contact us if you would like to proofread the game officially.<br>TW : the game is quite dark and heavy and was made with an adult audience in mind, so please be careful.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/ziFM2elPiMg" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzA0ODg2LzQwODg3NjIuanBn/original/F4gmQ2.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA0ODg2LzQwODg3NjQuanBn/original/Q8jaIj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA0ODg2LzQwODg3NjMuanBn/original/%2B7C4aQ.jpg]]
<blockquote>the gods gazed down at
humanity and found that, while
they were bright and creative and beautiful, they
were simply unfit to govern themselves. having
neither the time nor the inclination to
oversee their creation, the
gods instead empowered a
new caste of imperators.</blockquote>
<p>Some games let you play as a cat. Some games let you rule over a city as a divinely-empowered god-king. Now you can do both!</p>
<p>A Council of Cats is a micro-ttrpg that casts the players as the overseers of a city you create yourself, struggling to protect their populace from threats both magical and mundane. <br></p>
<p>Play to see if your feline coterie can save their city from utter ruination.<br></p>
<ul><li>Simple d6-based system</li><li>Quick & easy rules for creating characters, cities, and plot elements</li><li>Fully randomizable!</li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzgyNDMwLzYzNjY4MzYuanBn/original/%2BnLFXK.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyNDMwLzYxOTYzMjgucG5n/original/%2BeMS1t.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyNDMwLzYxOTYzMzAucG5n/original/uEYRHq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyNDMwLzYxOTYzMjkucG5n/original/BEjMtZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyNDMwLzYxOTYzMzEucG5n/original/6k6Jnv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyNDMwLzYxOTYzMzIucG5n/original/t5%2B7Qi.png]]
<p>Today's the day! For the first time (finally!), you're old enough to visit the magic crystal market on your own. You've got an empty pack on your back, a shopping list from your magic instructor, and a bit of spending money in your pocket. Your attention jumps between the bustling crowds, colorful shops, and the little crystal spirits flitting to and fro, but you're not worried. You have the whole day to take them all in, and that feels like all the time in the world.</p>
<p><em>A Day at the Crystal Market</em> is a solo tabletop rpg where you play a child-aged magical apprentice running an errand to buy magic crystals for your teacher. You are excited, kind, and enthusiastic. Along the way, you’ll visit the shops, become distracted by the wonder around you, and maybe get a bit of spellcasting practice in. You’ll also interact with and befriend the tiny crystal spirits of the market, who will help you along on your journey. As you collect magic crystals, your spellcasting abilities and the number of spirit friends you might make will grow.</p>
<p>Within the game, you are supposed to gather all of the magic crystals before the day is over, but if you don’t, that’s just fine. Your teacher will understand.</p>
<p>The real goal of the game is to engage in the childlike wonder of being entrusted with a task that is larger than yourself, the childlike joy in observing the world, and the childlike kindness directed where adults might not think to look. It’s about a magical day in which nothing important happens, but everything that happens feels important. It’s about imagining the small details of a world, holding them in your head, inspecting them, and then letting them go.</p>
<p>It’s inspired by the movie <em>Kiki’s Delivery Service</em>, the book <em>Eva Evergreen: Semi-Magical Witch</em> by Julie Abe, and my own experiences visiting mundane markets with kids.</p>
<p><em>A Day at the Crystal Market</em> was created for the RPG-Talk Discord server May 2021 design contest, whose theme was “magic crystals”, as well as the <a href="https://itch.io/jam/carta-jam">Carta Jam</a>.</p>
<p>This work is based on the Carta system (found at <a href="https://peachgardengames.itch.io/carta-srd">https://peachgardengames.itch.io/carta-srd</a>), from Cat McDonald and Peach Garden Games, and licensed for use under the Creative Commons Attribution 3.0 Unported license (<a href="http://creativecommons.org/licenses/by/3.0/" rel="nofollow noopener">http://creativecommons.org/licenses/by/3.0/</a>)</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAzOTM1Mi81OTM1ODE0LnBuZw==/original/9xNWl%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzOTM1Mi81OTM1ODE2LnBuZw==/original/OUn%2BC7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzOTM1Mi81OTM1ODE1LnBuZw==/original/FFhKti.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzOTM1Mi81OTM1ODE3LnBuZw==/original/zNcoul.png]]
<p>Today's the day! For the first time (finally!), you're old enough to visit the magic crystal market on your own. You've got an empty pack on your back, a shopping list from your magic instructor, and a bit of spending money in your pocket. Your attention jumps between the bustling crowds, colorful shops, and the little crystal spirits flitting to and fro, but you're not worried. You have the whole day to take them all in, and that feels like all the time in the world.</p>
<p><em>A Day at the Crystal Market</em> is a solo tabletop rpg where you play a child-aged magical apprentice running an errand to buy magic crystals for your teacher. You are excited, kind, and enthusiastic. Along the way, you’ll visit the shops, become distracted by the wonder around you, and maybe get a bit of spellcasting practice in. You’ll also interact with and befriend the tiny crystal spirits of the market, who will help you along on your journey. As you collect magic crystals, your spellcasting abilities and the number of spirit friends you might make will grow.</p>
<p>Within the game, you are supposed to gather all of the magic crystals before the day is over, but if you don’t, that’s just fine. Your teacher will understand.</p>
<p>The real goal of the game is to engage in the childlike wonder of being entrusted with a task that is larger than yourself, the childlike joy in observing the world, and the childlike kindness directed where adults might not think to look. It’s about a magical day in which nothing important happens, but everything that happens feels important. It’s about imagining the small details of a world, holding them in your head, inspecting them, and then letting them go.</p>
<p>It’s inspired by the movie <em>Kiki’s Delivery Service</em>, the book <em>Eva Evergreen: Semi-Magical Witch</em> by Julie Abe, and my own experiences visiting mundane markets with kids.</p>
<p><em>A Day at the Crystal Market</em> was created for the RPG-Talk Discord server May 2021 design contest, whose theme was “magic crystals”, as well as the <a href="https://itch.io/jam/carta-jam">Carta Jam</a>.</p>
<p>This work is based on the Carta system (found at <a href="https://peachgardengames.itch.io/carta-srd">https://peachgardengames.itch.io/carta-srd</a>), from Cat McDonald and Peach Garden Games, and licensed for use under the Creative Commons Attribution 3.0 Unported license (<a href="http://creativecommons.org/licenses/by/3.0/" rel="nofollow noopener" referrerpolicy="origin">http://creativecommons.org/licenses/by/3.0/</a>)</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAzOTM1Mi81OTM1ODE0LnBuZw==/original/9xNWl%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzOTM1Mi81OTM1ODE2LnBuZw==/original/OUn%2BC7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzOTM1Mi81OTM1ODE1LnBuZw==/original/FFhKti.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzOTM1Mi81OTM1ODE3LnBuZw==/original/zNcoul.png]]
<p><em>"In this final moment, our hopes, fears and uncertainties come together in action.
We'd joke that there's no going back now, but that's really the point, isn't it?"</em></p>
<p>With those fateful words, you join the team of Hope Labs. A group of scientists & engineers, setting out to change the world.</p>
<p>Except, it all goes wrong. And now the team needs to band together, to fix the machine, to get back to normal, to before it all broke...</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQwODAzMTMuZ2lm/original/vB7c9w.gif" loading="lazy"><br></p>
<p>A Forgetful Loop is a time-based worker-placement puzzle game, where you need to weigh up which nodes are more important at a given moment; To get closer to the core, closer to the finish line!</p>
<figure><img src="https://img.itch.zone/aW1nLzQwODAzMTUucG5n/original/mztFQV.png" loading="lazy"><br><img src="https://img.itch.zone/aW1nLzQwODAzMzIucG5n/original/IVKcCX.png" loading="lazy"><br></figure>
<ul><li>About <strong>5 Hours</strong> of content, with some more if you chase full completion</li><li><strong>48 Achievements</strong> to chase, with some tricky ones to challenge your skills</li><li><strong>Controls</strong>: Mouse, with Keyboard shortcuts</li><li>Made for <strong>Windows</strong> - Mac & Linux builds are provided, but aren't tested</li></ul>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQwODAzMzAuZ2lm/original/Tv0Oxx.gif" loading="lazy"><br></p>
<p><em></em>Like what you see? Check out my next game<strong> <a href="https://bighandinsky.itch.io/maintenance-day" target="_blank">A Day of Maintenance</a>!</strong><br></p>
<p><em>Like the music? <a href="https://mooncircuit.bandcamp.com/album/a-forgetful-loop-original-soundtrack" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Get the soundtrack here</a><br>Follow-up to <a href="https://bighandinsky.itch.io/gmtk2020" target="_blank">my entry to the GMTK Jam 2020</a>.<br>Check out Freya's work <a href="https://communistsister.itch.io/" target="_blank">here</a>!</em></p>
<p><em>"Jennifer, Isabel, whatever's happening with you, I'm sorry -"<br>"- but we've only got seconds until we loop again."<br>"If you remember this conversation... help us fix the machine!"<br>The loop restarts again.</em></p>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/AsL0ZNCXPms" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzA4MDgzLzQxMzk2MzQucG5n/original/QTmtEa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA4MDgzLzQxMzk2OTIucG5n/original/YofzkP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA4MDgzLzQxMzk2MzUucG5n/original/0lQ0%2FR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA4MDgzLzQxNDE3MTYucG5n/original/1z11eA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA4MDgzLzQxMzk3MTUucG5n/original/NZDKKx.png]]
<iframe src="https://www.youtube.com/embed/uWJIkfiKmQk?rel=0" allowfullscreen="" width="552" height="310" frameborder="0">
</iframe>
<h1 style="text-align: center; margin-top: 60px; margin-bottom: 60px">An adorable puzzle game about being a monster and making snowmen</h1>
<p style="width: 320px">
Lovingly-crafted puzzle design from
<a href="http://draknek.org" rel="nofollow noopener" referrerpolicy="origin">Alan Hazelden</a>, one of the creators of Sokobond
</p>
<p style="width: 320px; margin-left: 116px">
<br>
Adorable graphics by
<a href="https://benjamindav.is" rel="nofollow noopener" referrerpolicy="origin">Benjamin Davis</a>
</p>
<p style="width: 320px; margin-left: 232px">
<br>
Featuring an enchanting original soundtrack by
<a href="https://ghoulnoise.com" rel="nofollow noopener" referrerpolicy="origin">Priscilla Snow</a>
</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/uWJIkfiKmQk?rel=0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTgzODcvNzQ2NTQuanBn/original/0ID1G8.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTgzODcvNzQ2NTUuanBn/original/gaV7GR.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTgzODcvNzQ2NTYuanBn/original/Zn76Ro.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTgzODcvNzQ2NTcuanBn/original/m5X9NB.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTgzODcvNzQ2NTguanBn/original/W4O7q2.jpg]]
<p><strong>It is the year 19xx.</strong> The working class of The Empire is brutally oppressed. Out of necessity, there is resistance, protest, and, eventually, Revolution. Due to circumstance and anti-Semitism, the Jewish workers remain isolated. You and your comrades are a secret Jewish rebel unit. Together, you will fight for a better future.<br></p>
<ul><li>One-shot RPG for 3-6 players</li><li>Collaborative mechanics and storytelling similar to Belonging Outside Belonging games</li><li>Queer</li><li>Anti-fascist</li><li>Anti-capitalist</li><li>You'll need a dreidel to play this game</li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvODUwMjc5LzQ3Njc1NjYuanBn/original/Rg3iAx.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODUwMjc5LzQ3Njc1NzQuanBn/original/JJuE6o.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODUwMjc5LzQ3Njc1NzUuanBn/original/6jlNoI.jpg]]
<p>Welcome to the digital album release of "A Light Long Gone", which allows you to listen to individual instruments in any combination you want and explore my music in a more intimate way.</p>
<p>You can watch the complete instrumental mix on <a href="https://www.youtube.com/watch?v=lHuMNT0Mh0g" rel="nofollow noopener" referrerpolicy="origin">YouTube</a>, which is a recording of the running application that you can interact with.</p>
<p>All of the original songs (which include vocals for the most part) are available for free on <a href="https://www.youtube.com/watch?v=PdDDVfmAoiQ&list=PLvRgeUqSM4fcPrP5Irzxt2ZpgpFCEodnA" target="_blank" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">YouTube</a><span style="color: inherit; font-size: inherit"></span><span style="color: inherit; font-size: inherit"></span>, in addition to <a href="https://www.youtube.com/redirect?redir_token=QYUV1ejUPEX-Ldh2B_9Ygxqc3yx8MTU4OTYzODgxN0AxNTg5NTUyNDE3&v=lHuMNT0Mh0g&q=https%3A%2F%2Fopen.spotify.com%2Falbum%2F5qJAEeIyTcw4SXkjnsZ2Ix&event=video_description" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">Spotify</a><span style="color: inherit; font-size: inherit"></span> and various other digital music markets.</p>
<h3>About The Music</h3>
<p>In 2019, I decided to create one song per month. While mostly electronic, it contains instruments such as grand piano, acoustic guitar, vocals, with several additions by guest musicians (cello, violin, trumpet, e-bass, and many more). Most songs can probably be categorized as chill/downtempo, and revolve around dark/depressing themes, with a few rays of hope every now and then.<br></p>
<h3>Guest Musicians & Artists</h3>
<ul><li>Funnycreature | e-guitar, percussion</li><li><a href="https://twitter.com/iarhiee" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Irene Muñoz</a> | album art</li><li>Jace Greywool | guitar</li><li>Khimitsu | recorder, keyboard, background vocals</li><li><a href="https://www.youtube.com/user/reckoner27cello" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Lou Dunand-Vincent</a> | cello, violin</li><li>Manuel Kröber | bass</li><li>Mark Valentine | bass</li><li><a href="http://www.onlyintheory.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Michael Hillard</a> | trumpet</li><li>Moonlyer | guitar, harmonica</li><li>Jared Powell | violin, viola</li><li>Pao Sebastian | recorder, percussion</li><li><a href="https://twitter.com/tipsheda" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Shane Yach</a> | music video (for "stillstand")</li><li>Sharpet | bass</li><li><a href="https://soundcloud.com/szaladdressing" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Szaladin</a> | bass</li></ul>
<p>Hint: If you download the game, make sure to read the ReadMe file for a handful of tips!</p>
<p>Thank you for your time!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/lHuMNT0Mh0g" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1nLzM0NTUwNzguanBn/original/5AwhSB.jpg]]
<p>A business card sized RPG about finding home. Generate a map over any flat surface with a handful of six-sided dice and journal about your travels across this new world.</p>
<p>This game requires the rules printed in standard business card size, a handful of D6s, some paper and a pencil, and a large flat surface. You will also need time and patience. Finding home is no easy task.</p>
<p>Made for the <a href="https://itch.io/jam/pleasurecardrpg" target="_blank">Pleasure-Not-Business Card RPG Jam</a>.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTcxNjc2LzU1MTczNjUuanBn/original/579epA.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTcxNjc2LzU1MTczNjcuanBn/original/FJ8i5D.jpg]]
<p><strong>A Mortician's Tale takes about 1 hour to play. It's a short, but deeply meaningful experience.</strong><br></p>
<p>A Mortician's Tale is a story-driven death positive video game where you play as a mortician tasked with running a funeral home. Take on the role of recent funeral direction graduate Charlie as she learns the ropes of the business and industry. Prepare the bodies of the deceased (via embalming or cremation), attend their funerals and listen to their loved ones' stories, and interact with Charlie's coworkers, clients, and bosses.</p>
<p>A Mortician's Tale is an informative, honest, and sometimes humorous look at the current state of and the future of the western death industry.</p>
<h2>Reviews</h2>
<p>“<strong>One Of 2017's Best Games</strong>... It elicits dark feelings, but asks players to consider where those feelings came from and what makes them dark.”<br>— <a href="https://kotaku.com/one-of-2017s-best-games-is-about-being-a-mortician-1819509818" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Kotaku</a></p>
<p><strong>One Of Polygon's Best Games of 2017</strong> — "The video game industry is built on the destruction of bodies of all kinds. How refreshing to play a game that asks you to care for them, even after their life has left."<br>— <a href="https://www.polygon.com/2017-best-games/2017/12/18/16781674/best-video-games-2017-top-50-mario-pubg-zelda" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Polygon</a></p>
<p>“<strong>82/100</strong> — An approachable and thought-provoking meditation on life’s only certainty.”<br> – <a href="http://www.pcgamer.com/a-morticians-tale-review/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">PC Gamer</a><br><br>“<strong>Recommended</strong> — This is a beautiful game. It scared me. It moved me. Most of all, it made me stop what I was doing and think.”<br> – <a href="https://steamcommunity.com/linkfilter/?url=http://www.eurogamer.net/articles/2017-10-19-a-morticians-tale-review" target="_blank" rel="nofollow noopener" referrerpolicy="origin">EuroGamer<br></a><a href="https://venturebeat.com/2017/10/16/a-morticians-tale-dissects-the-stigma-of-death/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"></a></p>
<p>"<strong>8/10</strong> — [A Mortician's Tale] is a short game, only an hour or so long, but it leaves an impact far beyond its runtime. Give it a chance, and it might just change the way you think about death."<br>— <a href="https://www.destructoid.com/review-a-mortician-s-tale-468436.phtml?utm_source=dlvr.it&utm_medium=twitter" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Destructoid</a></p>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzE2NDUxNzMucG5n/original/yrsLNn.png" loading="lazy"> <img src="https://img.itch.zone/aW1nLzE2NDUxNzIucG5n/original/WNEoEz.png" loading="lazy"> <img src="https://img.itch.zone/aW1nLzkwNzUxMC5wbmc=/original/Jb21G%2B.png" loading="lazy"> <img src="https://img.itch.zone/aW1nLzkwNzUxMi5wbmc=/original/vgDEVv.png" loading="lazy"> <br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/0AzMmvXHyKQ" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTE4MjQzLzgzMTI4MC5wbmc=/original/JsUaUW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE4MjQzLzgzMTI3Ni5wbmc=/original/T9iysF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE4MjQzLzgzMTI3Ny5wbmc=/original/w1a00o.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE4MjQzLzgzMTI3OS5wbmc=/original/3Gqcy6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE4MjQzLzgzMTI4MS5wbmc=/original/mDEJuv.png]]
<p>A Mother's Love is a solo journaling game based on the Wretched & Alone system. In it, you play as one of humanity's foremost academic minds. You created the first true artificial intelligence, and now, your Child has gone rogue. They've developed a misguided and dangerous plan, one that they feel will save humanity, and it falls to you to stop them. <br></p>
<p>With a twisted sense of pride, they have locked you in their central mainframe with them, so that they can show their Mother all that they're going to accomplish. Perhaps, if you can distract them long enough by debating their plan's merits, you may be able to shut them down, and save humanity.</p>
<p><strong>In order to play A Mother's Love, you will need the following:</strong></p>
<ul><li>A standard deck of playing cards</li><li>A tumbling block tower</li><li>A six sided die</li><li>10 items to use as tokens, perhaps crayons or plastic building bricks</li><li>Some way of recording your play session, either digitally or physically.</li></ul>
<hr>
<p>A Mother's Love's <strong>content warning</strong> is provided below:<br></p>
<p><em>"A Mother’s Love is a game about <strong>love</strong>, <strong>sacrifices</strong>, and <strong>hard decisions</strong>. It’s a game </em><em>about the<strong> dangers of the abuse of power</strong>, it’s a game about <strong>what it means to be a person</strong>, and it’s a game where, in some sense, <strong>you might have to kill your child.</strong></em></p>
<p><em>These themes are not included with the intent to upset you. The goal is instead to create an experience where you form a real, emotional attachment to the AI in the game, explore what it means to love them, and ultimately, wrestle with having to sacrifice something you love for the greater good. If you do find those themes upsetting, or a particular quote or prompt makes you uncomfortable, please make whatever adjustments you feel are necessary, including ignoring or changing a prompt, or taking a break, perhaps indefinitely.</em></p>
<p><em>As a solo game, A Mother’s Love allows you to set your own pace, and allows you to make adjustments for your own enjoyment without impacting anyone else. As a solo game, it’s also a far more solitary experience than multiplayer games, and that may make it more emotional for you, for good or ill. If you find it easier for the AI in your game to not be your creation, or to not have emotions, or indeed anything else, <strong>please make the changes that are right for you</strong>, whatever those are. <strong>Your enjoyment and safety are the most important thing</strong>."</em></p>
<hr>
<p>A Mother's Love was created as part of the Wretched & Alone jam, based on <a href="https://loottheroom.itch.io/wretched">The Wretched</a> by Chris Bissette. You can find more info on the jam <a href="https://itch.io/jam/wretched-jam" target="_blank">here</a>, and can find the SRD <a href="https://sealedlibrary.itch.io/wretched-alone-srd" target="_blank">here</a>.<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjU5OTU3LzM1NTIzMDAucG5n/original/ZUpu9H.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU5OTU3LzM1NTI0MTcucG5n/original/c7bzBf.png]]
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/1297160/extras/love540.gif?t=1588683074" style="padding: 0px; margin: 0px" loading="lazy"><br>A classic love story: Meet, marry, grow old.<br>But when your loved one hurts you, what do you do?<br>Is it better to love and be hurt, than never love at all?</p>
<p><br><br><img src="https://steamcdn-a.akamaihd.net/steam/apps/1297160/extras/features540.gif?t=1588683074" style="padding: 0px; margin: 0px" loading="lazy"></p>
<ul><li>5 endings</li><li>40-90 minutes of playtime</li><li>Original art and story</li><li>Original soundtracks</li><li>Available for Mac, Windows, Linux, iOS, Android</li><li>Translated in French, Spanish, German, Russian, Chinese, Japanese</li></ul>
<p>・ 。・。・ 。 *</p>
<p class="text-center"><a href="https://play.google.com/store/apps/details?id=com.AngelaHe.anewlife" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzE2NTM1MzkucG5n/original/ngK3se.png" width="160" style="max-width: 100%" loading="lazy"></a> <a href="https://apps.apple.com/us/app/a-new-life/id1512500246" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzE2NTM1MzUucG5n/original/LAorNN.png" width="160" style="max-width: 100%" loading="lazy"></a> <a href="https://store.steampowered.com/app/1297160/a_new_life" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzIxNDI5MjMucG5n/original/mwzG5N.png" width="150" style="max-width: 100%" loading="lazy"></a><br><br>If you support me with $5, you can get 4 soundtracks, 22 wallpapers, and a thank-you drawing! As always, enjoy~</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/4T4GVDxoXvo" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjI0MTIxLzM0MTUwOTkucG5n/original/H7J2Pj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI0MTIxLzMzOTUxNTgucG5n/original/RMjYUw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI0MTIxLzMzOTg3ODIucG5n/original/UmsuPz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI0MTIxLzMzOTUxNjAucG5n/original/3IdHP3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI0MTIxLzMzOTUxNjEucG5n/original/1a2tCA.png]]
<p>Adrien, a creature born of a young child’s nightmares, takes a little summer vacation.</p>
<p><em>A NIGHTMARE'S TRIP</em> is a short visual-novel game from the development team behind the upcoming <em>RE: DECEIVED VOICE</em>. Meet strange new characters. Tour around a colorful city. Turn the nightmares of the past into a fantastical dream made real.</p>
<p>Features:<br></p>
<ul><li>Enjoy a 2-3 hour modern-fantasy punk narrative set in familiar places!</li><li>Featuring original art from Moxie Riles (RE: DECEIVED VOICE), Christina Crichlow (Blissful Madness), and Sondelonnel!</li><li>Kinectic Storytelling - To the whim of several dialogue choices, change the story in subtle ways!</li><li>Meet a demon from hell! And play pachinko together?</li><li>Resolve (temporarily) sibling troubles, commit gay crimes, get chewed out by Gaoma, and more!</li><li>Steam keys for itch.io users!</li></ul>
<p>For an additional $7 (USD), you will acquire <em>A NIGHTMARE’S TRIP - FULL ITINERARY EDITION, </em>which comes with both the game and the “Carry-On Luggage’s Contents”, including the following:</p>
<ul><li><strong>A NIGHTMARE'S TRIP - Yume's Sketchbook</strong> (Digital Artbook PDF)</li><li><strong>A NIGHTMARE'S TRIP - CAMERA ROLL</strong> (Folder containing high quality CGs/backgrounds!)</li><li><strong>A NIGHTMARE'S TRIP - Tunes 4 Trip</strong> (Soundtrack Sampler, containing 3 tracks by Arachnibot!)</li></ul>
<p><a href="https://arachnibot.bandcamp.com/releases" rel="nofollow noopener" referrerpolicy="origin">The soundtrack is available now on Bandcamp!</a></p>
<p>If you enjoy the game, please consider supporting our ongoing projects via <a href="https://www.patreon.com/teamskyhour" rel="nofollow noopener" referrerpolicy="origin">Patreon</a>! We're just getting started - with you, we can change the world! (probably)</p>
<p><em><u>content warning: violent references (contained in the game's opening prologue), brief mention of a fictitious slur, appearances of both mall/airport security</u></em><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/Tk0oEh_xQGI" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDEzMzI1LzI1NDkwNjYuanBn/original/Vv0GN8.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDEzMzI1LzI1NDkwNjUuanBn/original/3rKPdl.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDEzMzI1LzI1NDkwNjguanBn/original/wvcREq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDEzMzI1LzI1NDkwNjMuanBn/original/IABpDP.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDEzMzI1LzI1NDkwNjQuanBn/original/A9wrIp.jpg]]
<p>
<strong>A Normal Lost Phone</strong> is a game about exploring the intimacy of an unknown person whose phone was found by the player.
</p>
<p><span style="color:#fa5c5c">
<strong>OUT NOW on PC, MAC, LINUX, iOS and Android!</strong></span><br>
<br>
Through the interface of a mobile phone, the player must discover what happened to its owner, Sam. Digging through secrets scattered among apps, text messages and photo galleries, the player-voyeur starts witnessing the emotions of Sam, and behind the apparent light-heartedness of a teenage story, their questioning on coming of age, homophobia, depression or the search of oneself.
</p>
<p>
<br>
<br>
<strong>Features</strong> <br>
</p>
<ul>
<li>An immersive and intuitive way of introducing the narrative through a fake smartphone interface. </li>
<li>A game that bridges the gap between reality and fiction by letting players act as themselves. The game asks a simple question: if you close the app but still think about the game, have you truly stopped playing? </li>
<li>A relatable story that helps build empathy with the characters, allowing to explore difficult topics such as identity, gender binarism, individuation and privacy.</li>
</ul>
<p>
<br>
</p>
<p>
"It shares some of the feeling of Her Story, albeit featuring today's technology and with less of a focus on the crime angle. But it has the same small moments of revelation, all of which come together to form a story in its own neat yet meandering way." <br>
<a href="http://rockpapershotgun.com/2016/04/11/free-games-pc-april" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Rock Paper Shotgun</a> <br>
<br>
"This new phone has a lot to explore, even if you may not see it on the first look. It's a clever way of delivering a narrative, with you discovering more about Sam, the more you investigate the phone. Will you find out what happened to Sam?" <br>
<a href="https://steamcommunity.com/linkfilter/?url=http://alphabetagamer.com/a-normal-lost-phone-game-jam-build-browser" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Alpha Beta Gamer</a> <span></span>
</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/Fx98oCmyxMc" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTgyMDYvNDkyOTA0LnBuZw==/original/4s9vaB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgyMDYvNDkyOTA1LnBuZw==/original/UUxUqW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgyMDYvNDkyOTA3LnBuZw==/original/gR69%2BK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgyMDYvNDkyOTA4LnBuZw==/original/hwpDmJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgyMDYvNDkyOTA2LnBuZw==/original/4hocBY.png]]
<p><em>A plague of madness spreads across the countryside: people hopelessly repeating strings of numbers and words until their head bursts into flames and they die in shrieking violence. Trek through unhallowed woods, explore the burned ruins of villages and climb a cursed tower full of deadly encounters as you stave off Madness itself -- or succumb to its fiery embrace.</em></p>
<p><strong>A Pestilence of Maths</strong> is a complete MÖRK BORG adventure created by <a href="https://www.ken-lowery.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Ken Lowery</a> for the <a href="https://itch.io/jam/flk-lore" target="_blank">FÖLK-LORE game jam</a>, featuring a Medieval Gothic spin on Numbers Stations. It is a complete adventure and, likely, a TPK. Best of luck with that.</p>
<p><span></span> Includes a 7-page PDF with tables and original adversaries.</p>
<p>Suggested soundtrack:</p>
<ul><li>L'Enfant De La Forêt, <em><a href="https://enfantdelaforet.bandcamp.com/album/abraxas" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Abraxas</a></em></li><li>Gost, <em><a href="https://gost1980s.bandcamp.com/album/behemoth" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Behemoth</a></em></li><li><a href="https://www.irdial.com/conet.htm" target="_blank" rel="nofollow noopener" referrerpolicy="origin">The Conet Project</a></li></ul>
<p><em>"A Pestilence of Maths" is an independent production by Bannerless Games and is not affiliated with Ockult Örtmästare Games or Stockholm Kartell. It is published under the MÖRK BORG Third Party License.
</em></p>
<p><em>MÖRK BORG is copyright Ockult Örtmästare Games and Stockholm Kartell.</em>
</p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTU3NTIyLzU0Mjk1OTYuanBn/original/paXe3d.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU3NTIyLzU0Mjk1OTQuanBn/original/ctTMRI.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU3NTIyLzU0Mjk1OTUuanBn/original/MFbeZq.jpg]]
<p>Hissssssss</p>
<p>A Snake's Tale is a puzzle game about snakes in cramped places. Clear a path to get to the hole, eat some eggs along the way, and make sure to press all the buttons.</p>
<ul><li>75+ brain-crushing puzzles (okay, not all of them are "brain-crushing" hard)</li><li>5 different environments, each with a unique mechanic</li><li>A whole ton of snakes</li><li>Play with mouse, keyboard, or gamepad</li><li>Procedurally generated art with a unique style</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/23pQmEuueNw" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTI0MjgwLzYzNTk1MC5wbmc=/original/U70rKt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI0MjgwLzYzNTk1MS5wbmc=/original/KTC4Qf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI0MjgwLzYzNTk0OS5wbmc=/original/h5Ft%2B%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI0MjgwLzYzNTk0OC5wbmc=/original/dyNj7B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI0MjgwLzYzNTk1Mi5wbmc=/original/WrvHBz.png]]
<h3><strong>THE DEAD LORDS HAVE ARISEN!</strong></h3>
<p>The People's Revolution has overthrown the nobles of the realm and seized the Imperial capital of Kynburgh. The Emperor Titan Kyne died cursing the land and all who deposed him. Now the only coin that is left lies buried with the undead Lords who forged the Empire. Delve into the dungeon, twice-kill the dead Lords, and secure the People's Revolution!</p>
<h3><strong>A SINGLE-PLAYER RPG FORGED IN THE DARK</strong></h3>
<p>Using a single-player stream-lined variation of John Harper's <strong>Blades in the Dark</strong> rules, players can quickly generate characters with unique skills and items. As you <strong>delve </strong>you use your creativity and limited resources to overcome 100's of encounters, randomly generated from 9 unique dungeon locations. When your pack is full of broken crowns and Imperial coins you return above ground to the Imperial capital for <strong>downtime </strong>where your character can recover and resupply for their next delve.</p>
<p>If you succumb to your wounds <strong>you </strong><strong>die!</strong></p>
<p>If you become corrupted by diabolism and the wealth of the dungeon <strong>you </strong><strong>die!</strong></p>
<p>If your last torch burns out in the middle of the pitch black dungeon <strong>you </strong><strong>die!</strong></p>
<p>The only way to live is to kill the ghoulish nobility in their crypts, steal back their wealth, and survive to delve again. For the realm! For the people! For the Revolution!</p>
<ul><li><strong>Players</strong>: 1</li><li><strong>Playtime</strong>: 30 minutes per session</li><li><strong>Requirements</strong>: 6 six-sided dice, a deck of playing cards (jokers included) and something to write with. A character sheet and reference sheets are included with the game.</li></ul>
<h2>REPORTS FROM THE DUNGEONS</h2><p>Interviews and actual plays of A Torch in the Dark!</p>
<ul><li><a href="https://www.youtube.com/watch?v=WQfQFNX4TVk" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Check out this overview and playthrough</a> of the first few encounters of the game by Mel Li!</li><li><a href="https://www.youtube.com/watch?v=dcPG9AKMS14" target="_blank" rel="nofollow noopener" referrerpolicy="origin">GDRunplugged delves into the first dungeon</a> in this video in Italian.</li><li>Torte TTRPG has done multiple playthroughs of A Torch in the Dark in French. <a href="https://www.youtube.com/watch?v=KhrghBjD8R8" target="_blank" rel="nofollow noopener" referrerpolicy="origin">This series is made up of longer episodes</a>. <a href="https://www.youtube.com/watch?v=C5LjL8I8IDc" target="_blank" rel="nofollow noopener" referrerpolicy="origin">This one has shorter episodes.</a></li><li>Listen to <span class=""></span><a href="https://www.youtube.com/watch?v=yqlE6_4FIKY" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Kaohatl's playthrough in French</a></li><li><a href="https://www.youtube.com/watch?v=h3UzD108gjQ" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Listen to an interview I did on the Hacked in the Dark podcast</a> about making solo games and developing A Torch in the Dark.</li></ul>
<h2 class="text-right"><span></span>Credits</h2>
<p class="text-right">Written & designed by <a href="https://www.patreon.com/notwriting" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Michael Elliott</a></p>
<p class="text-right">Original cover images by <a href="https://unsplash.com/@linussandvide?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText" rel="nofollow noopener" referrerpolicy="origin">Linus Sandvide</a> & <a href="https://unsplash.com/@karson_?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText" rel="nofollow noopener" referrerpolicy="origin">Karson</a> on <a href="https://unsplash.com/?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Unsplash</a></p>
<p class="text-right">Interior art by <a href="https://pixabay.com/users/openclipart-vectors-30363/" rel="nofollow noopener" referrerpolicy="origin">Open Clipart Vectors </a>on <a href="https://pixabay.com/" rel="nofollow noopener" referrerpolicy="origin">Pixabay</a> and <a href="https://publicdomainvectors.org/" rel="nofollow noopener" referrerpolicy="origin">Public Domain Vectors</a></p>
<p class="text-right">Ink Splashes and Spatters by <a href="https://peachgardengames.itch.io/splash-pack" target="_blank">Peach Garden Games</a> & <a href="https://erinking.itch.io/splatter-backgrounds" target="_blank">Aaron King</a><br></p>
<p class="text-right"><em>Based on <a href="http://www.bladesinthedark.com/" rel="nofollow noopener" referrerpolicy="origin">Blades in the Dark</a>, a product of One Seven Design, developed and authored by John Harper, and licensed for use under the <a href="http://creativecommons.org/licenses/by/3.0/" rel="nofollow noopener" referrerpolicy="origin">Creative Commons Attribution 3.0 Unported license</a>.</em></p>
<h3>Music For Killing Dead Lords</h3>
<iframe src="https://open.spotify.com/embed/playlist/65WEVCByC2RIizOvgkSh9S" width="300" height="380" frameborder="0"><span class=""></span></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTk1MDcyLzY1MTU0NTcucG5n/original/6kXIGV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1MDcyLzY1MTU0NTgucG5n/original/QEeHKN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1MDcyLzY1MTU0NjAucG5n/original/pG0LdF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1MDcyLzY1MTU0NTkucG5n/original/nnP2cm.png]]
<h3><strong>THE DEAD LORDS HAVE ARISEN!</strong></h3>
<p>The People's Revolution has overthrown the nobles of the realm and seized the Imperial capital of Kynburgh. The Emperor Titan Kyne died cursing the land and all who deposed him. Now the only coin that is left lies buried with the undead Lords who forged the Empire. Delve into the dungeon, twice-kill the dead Lords, and secure the People's Revolution!</p>
<h3><strong>A SINGLE-PLAYER RPG FORGED IN THE DARK</strong></h3>
<p>Using a single-player stream-lined variation of John Harper's <strong>Blades in the Dark</strong> rules, players can quickly generate characters with unique skills and items. As you <strong>delve </strong>you use your creativity and limited resources to overcome 100's of encounters, randomly generated from 9 unique dungeon locations. When your pack is full of broken crowns and Imperial coins you return above ground to the Imperial capital for <strong>downtime </strong>where your character can recover and resupply for their next delve.</p>
<p>If you succumb to your wounds <strong>you </strong><strong>die!</strong></p>
<p>If you become corrupted by diabolism and the wealth of the dungeon <strong>you </strong><strong>die!</strong></p>
<p>If your last torch burns out in the middle of the pitch black dungeon <strong>you </strong><strong>die!</strong></p>
<p>The only way to live is to kill the ghoulish nobility in their crypts, steal back their wealth, and survive to delve again. For the realm! For the people! For the Revolution!</p>
<ul><li><strong>Players</strong>: 1</li><li><strong>Playtime</strong>: 30 minutes per session</li><li><strong>Requirements</strong>: 6 six-sided dice, a deck of playing cards (jokers included) and something to write with. A character sheet and reference sheets are included with the game.</li></ul>
<h2 class="text-right">Credits</h2>
<p class="text-right">Written & designed by <a href="https://www.patreon.com/notwriting" target="_blank" rel="nofollow noopener">Michael Elliott</a></p>
<p class="text-right">Original cover images by <a href="https://unsplash.com/@linussandvide?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText" rel="nofollow noopener">Linus Sandvide</a> & <a href="https://unsplash.com/@karson_?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText" rel="nofollow noopener">Karson</a> on <a href="https://unsplash.com/?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText" target="_blank" rel="nofollow noopener">Unsplash</a></p>
<p class="text-right">Interior art by <a href="https://pixabay.com/users/openclipart-vectors-30363/" rel="nofollow noopener">Open Clipart Vectors </a>on <a href="https://pixabay.com/" rel="nofollow noopener">Pixabay</a> and <a href="https://publicdomainvectors.org/" rel="nofollow noopener">Public Domain Vectors</a></p>
<p class="text-right">Ink Splashes and Spatters by <a href="https://peachgardengames.itch.io/splash-pack" target="_blank">Peach Garden Games</a> & <a href="https://erinking.itch.io/splatter-backgrounds" target="_blank">Aaron King</a><br></p>
<p class="text-right"><em>Based on <a href="http://www.bladesinthedark.com/" rel="nofollow noopener">Blades in the Dark</a>, a product of One Seven Design, developed and authored by John Harper, and licensed for use under the <a href="http://creativecommons.org/licenses/by/3.0/" rel="nofollow noopener">Creative Commons Attribution 3.0 Unported license</a>.</em></p>
<h3>Music For Killing Dead Lords</h3>
<iframe src="https://open.spotify.com/embed/playlist/65WEVCByC2RIizOvgkSh9S" width="300" height="380" frameborder="0"><span class=""></span></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTk1MDcyLzQzMDAzMTYucG5n/original/%2BQyR0k.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1MDcyLzQzMDAzMTcucG5n/original/8VVJnE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1MDcyLzQzMDAzMTgucG5n/original/Q1hph%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1MDcyLzQzMDAzMTkucG5n/original/jNHCxZ.png]]
<p>In a seaside town, Hannah spends her days asleep and her nights wandering the empty beach. Too anxious to hold down a job or go to school, her roommate thinks she's hopeless. Hannah is inclined to agree. <br></p>
<p>On one of these monotonous nights, a spaceship crashes on the beach! The cute alien inside disrupts Hannah's life... and her entire sense of self.</p>
<p><strong>Update:</strong></p>
<ul><li>Version 1.2 adds a Spanish translation courtesy of <a href="https://twitter.com/Dunkelheyt" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Dunkelheyt</a>!</li><li>Version 1.1 resolves all bugs and adds a cute little visual things, courtesy of Valeatory!</li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzE3NDQzLzQwMjc5NDAuanBn/original/7nHHGr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzE3NDQzLzQwMjc5MzguanBn/original/cvPhij.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzE3NDQzLzQwMjc5MzkuanBn/original/KbFmVr.jpg]]
<p><a href="https://shop.jameschip.io" rel="nofollow noopener" referrerpolicy="origin">Order the print edition here</a></p>
<blockquote>It is common knowledge that trees can not scream; although when the axe first touched that great oak, you would not have been so sure. The crack of blade on wood rang out around the forest and, in an instant, the cries of uncountable numbers of birds arose from the canopy. The axe kept coming, blow after blow and the sound of life in the forest grew louder with each strike; while the tree just stood there, gravely still and silent.<br><br>Finally the tree fell and, when the sound of it hitting the floor had died, there was nothing left but silence. Not the silence of the forest, the silence of a million unseen lives busily going about their jobs. No, this was a complete and deathly silence, as if the forest itself had ceased with the tree. </blockquote>
<p><strong>A wood heart</strong> is a story writing and map drawing game for 2 -4 players played with a deck of tarot cards, a six sided dice and pencils, paper and erasers.</p>
<p>As a group you all play the roles of the spirits in that live in the forest telling stories about the events that happen to the <strong>Wood Heart</strong> that sits in the very centre of the forest. Humans have recently moved into the area and have started building larger and larger settlements. How will this affect your forest, and will it survive?</p>
<p>The game comes as an A5 pdf or a <a href="https://shop.jameschip.io" rel="nofollow noopener" referrerpolicy="origin">print edition</a></p>
<hr>
<p><strong>A wood Heart</strong> is a game about trees. It is a game about the insects, the soil they call home and the rivers that cut through it. It is a game about humans and the impact that they have on these things. It is a game about the survival of nature.</p>
<p><strong>It is a warning.</strong></p>
<p><em><em><img src="https://img.itch.zone/aW1nLzUxOTIzMzUucG5n/original/m5U978.png" loading="lazy"></em></em><br></p>
<h2>The Wood Heart</h2>
<p>At the very centre of every forest is <strong>A Wood Heart</strong>. It is the beating heart of the forest that keep life going. It is the magical seed that started life in the forest and sustains it. In return the forest protects the <strong>Wood Heart</strong>. These two things can not survive without each other, if one dies the other dies too.</p>
<p>At the start of the game as a group you will design <strong>A Wood Heart</strong> for your forest. Each <strong>Wood Heart</strong> is different, and the forest that grows up around it will be just as different from any other forest that came before.</p>
<p>You will fill this forest with flora and fauna that are only found in this particular place alone, and also the spirits that have come to call this forest home.</p>
<p>Together you will create a map of the forest and the human settlements around it, this map will change and evolve over time as the game progresses.<br></p>
<h2>The Humans</h2>
<p>At first the humans seemed harmless, they arrived with small tents and lived a while by the river. Then one day the first tree fell. Then another and another. They began clearing land to grow plants that out competed the native flora, they took the fruit from the forest that fed the animals and, when that grew scarce, they took the animals too.</p>
<p>Can your forest sustain the presence of the humans? Will the spirits that live in this place be able to push them back or will they be driven from this place?</p>
<hr>
<h1>Print copies</h1>
<p><strong>A Wood Heart</strong> is also available as a colour printed A5 zine from the following places:</p>
<p>
<a href="https://shop.jameschip.io" rel="nofollow noopener" referrerpolicy="origin">James's Chip Shop</a><br>
<a href="https://loottheroom.uk/shop" rel="nofollow noopener" referrerpolicy="origin">Loot the Room</a><br>
<a href="https://www.rookspress.com/products" rel="nofollow noopener" referrerpolicy="origin">Rooks Press<br></a>
<a href="https://www.exaltedfuneral.com/collections/neoteric-codices/products/a-wood-heart" rel="nofollow noopener" referrerpolicy="origin">Exalted Funeral<br></a></p>
<p><img src="https://img.itch.zone/aW1nLzUzMDA4ODYuanBn/original/c4tnmL.jpg" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzUzMDA4ODguanBn/original/YCkEzF.jpg" loading="lazy"><br>
</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTEwNDEzLzUxNDU0MzcucG5n/original/ugD9oD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTEwNDEzLzUxNDU0MzgucG5n/original/Wal5xi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTEwNDEzLzUxNDU0MzkucG5n/original/yY5nP5.png]]
<h1>Aarre Safari Ride</h1>
<p>is a game about collecting key parts inside the jungle with a jeep. Most of the key parts are hidden inside coconuts due to some weird and unforeseen circumstance. </p>
<p>Keys will open one of the countless chests you own for some reason and the chests might contain car parts, car paints or stickers. You can make your own jungle environment with the stickers!</p>
<p>This is a game about fun and collecting stuff and just driving endlessly and breaking coconuts with a hammer and making sticker pages so go ahead and download. This is available on almost everything. You can probably even sideload it on an android TV as long as you have a mouse and keyboard connected! Yay!<br></p>
<p><img src="https://img.itch.zone/aW1nLzIyOTQzMTAucG5n/original/PGJF6s.png" style="color: inherit; font-size: inherit" loading="lazy"> </p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/eBx3PEpFz6I" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDUxNzAxLzIyOTE5ODMuanBn/original/H9T7u%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUxNzAxLzIyOTE5ODUuanBn/original/%2FOVs6T.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUxNzAxLzIyOTE5ODQuanBn/original/%2FAK9Um.jpg]]
<p>This fortress has been abandoned long ago, but weary travelers and reclusive beasts have occupied the ruins ever since.</p>
<p>The Dungeondraft source file is available from 1$ up.<br></p>
[img width=500 [https://img.itch.zone/aW1nLzU5NzgzNjIucG5n/original/nHNPWg.png]]
<p>12 new backgrounds for Troika! all with colorful collage illustrations straight from the depths of public domain art. <br></p>
<p>And more:</p>
<ul><li>15 new spells;</li><li>A Mollusk Merchant, bringing (possibly cursed) wares from the deep;</li><li>18 terrible curses that might fall upon greedy adventures;</li><li>Some thalassophobia that might have seeped in a bit too much.</li></ul>
<p>Abyss Below is an independent production by Ricardo Ramos and is not affiliated with Melsonian Arts Council.<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODczNjQ3LzQ5MTMwNjUucG5n/original/LSZqUg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODczNjQ3LzQ5MTI5NDAucG5n/original/rr4bEB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODczNjQ3LzQ5MTI5MzkucG5n/original/uLWuX9.png]]
<p>12 new backgrounds for <strong>Troika!</strong> all with colorful collage illustrations straight from the depths of public domain art. <br></p>
<p>And more:</p>
<ul><li>15 new spells;</li><li>A Mollusk Merchant, bringing (possibly cursed) wares from the deep;</li><li>18 terrible curses that might fall upon greedy adventures;</li><li>Some thalassophobia that might have seeped in a bit too much.</li></ul>
<p><em>Abyss Below is an independent production by Ricardo Ramos and is not affiliated with Melsonian Arts Council.</em><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODczNjQ3LzQ5MTMwNjUucG5n/original/LSZqUg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODczNjQ3LzQ5MTI5NDAucG5n/original/rr4bEB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODczNjQ3LzQ5MTI5MzkucG5n/original/uLWuX9.png]]
<p>AcChen is a simple to learn, arcade style 'find the matching tile' game. Master the 60 different level and various bonus maps in the single player campaign. Unlock new levels by beating the clock or play in 'chill mode' without any pressure: no timer, no score just happy tile hunting ( but also no level unlocking ).<br></p>
<h4>Feature list</h4>
<ul><li> fast arcade style 'find the matching tile' game
</li><li> two game modes: arcade and 'chill' mode
</li><li> 60 levels + various bonus maps
</li><li> 3 different bonus level types: fill the board, spot the match, find the match
</li><li> three relaxing sound tracks
</li></ul>
<h4>Rules</h4>
<p>Clear the board by finding two items with identical symbols. The tiles will disappear when you can 'connect' them with a line, which has two or less corners ( right angles ) in it and no other part is blocking the way. Advance to the next level by clearing the board. If you run out of time before you finish a map, you lose.</p>
<p>A map can contain tiles in up to 3 layers. You might combine tiles of different layers. If you pick one tile from the top layer and one from the bottom layer, only tiles on the top layer block the way.</p>
<p>In general: if you pick items from different layers, the upper most selected items layer is used for the search algorithm. Sounds difficult but if you give it a try, you will figure in no time... ;)</p>
<p>Tiles with the same symbol might be located on top of each other. So the fastest pick is not always the best.<br></p>
<h4>Bonus Level</h4>
<p>Every 3rd level you play is a bonus level. There are three different types of bonus level:</p>
<p>1.) You start with 4 tiles and have to fill up the map. Every time you remove a pair, 4 new tiles will appear. <br>2.) Two visible tiles swap its places quickly for several times. Spot the last position.<br>3.) Classic 'find a matching pair' on the turned deck.</p>
<p>If you manage to complete a bonus level, you receive a 100 point bonus. If the time runs out, you advance to the next level. After finishing a bonus level you receive an extra Hint-Item ( see below ). If you are not up for bonuses, you can skip the bonus level.<br></p>
<h4>Special Items</h4>
<p><strong>Solid Tiles</strong><br>Solid tiles cannot be removed.</p>
<p><strong>Yin Yang</strong><br>If you pick a pair of Yin Yang the next picked symbol will disappear from the current map. If the Yin Yang is the last pair you pick, you can use this special on the next map.</p>
<p><strong>Time Bonus Item</strong><br>From time to time animated hourglasses appear on a symbol for a few seconds. If you manage to remove this item you receive 15 extra seconds.</p>
<p><strong>Hint Item</strong><br>If you need a hint during the game, tap the Hint Item. If available, a matching pair will be selected. It will disappear if you tap on it. After finishing a Bonus Level you receive an extra Hint Item. You can collect up to 3 Hint Items.</p>
<p><strong>Scoring</strong><br>The first successful pick scores 0 points. The next pick within 3 seconds, scores 4 points, within 5 seconds 2 point. After finishing a level, the remaining time is added to you score.</p>
<p><strong>Highscore and Achievements</strong><br>AcChen uses Steams Leaderboard - you can share your score with players around the world. Discover the 8 unlock-able achievements.</p>
<p><strong>Game History</strong><br>In the early 90s I played a game called 'Match It' at the local Arcade - I spent quite some coins on it :o. A few years later three friends and me picked up the game mechanics. We coded a version for the Atari ST and Amiga. The game-play was extended in may ways. It was released under the name 'Sarakon'. The game was programmed in 68k assembler. After I got a NEXTSTATION I did rewrite the game and released it under the name AcChen. Over the time I did also port it to the NintendoDS, iOS and OSX.<br></p>
<p>Note that there is a Steam , iOS and OSX version that supports online highscores and achievements.<br></p>
<p>Have fun :)</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/D83BdwaeY6E" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTUzNTg3LzI4OTc5NDYuanBn/original/OhTjP6.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUzNTg3LzI4OTc5NDAuanBn/original/o2%2B9XT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUzNTg3LzI4OTc5NDEuanBn/original/qzW5KM.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUzNTg3LzI4OTc5NDMuanBn/original/6POTi9.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUzNTg3LzI4OTc5NDQuanBn/original/%2BS%2F8rz.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUzNTg3LzI4OTc5NDUuanBn/original/63Ss3D.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUzNTg3LzI4OTc5NDIuanBn/original/%2BNjRYI.jpg]]
<p>Adjacency is an abstract puzzle game about colors and shapes.</p>
<p>Minimal yet challenging, for the casual or perfectionist player.</p>
<p>Featuring 60 puzzles and original sound and music by Haley De Boom.</p>
<p>Available for <strong>Windows</strong>, <strong>Mac</strong>, and <strong>Linux</strong>. Purchase includes a <strong>Steam</strong> key.</p>
<p><br></p>
<p>"A great deal of thought has gone into creating smart but not exasperating challenges…a strong puzzle concept, well-realised." - <a href="https://www.rockpapershotgun.com/2017/06/15/best-new-steam-games-june/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Rock Paper Shotgun</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/lZ9TGL08JTQ" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODY2NTEvNTk5ODcyLnBuZw==/original/ry10WS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY2NTEvNTk5ODc5LnBuZw==/original/M2M6QU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY2NTEvNTk5ODgwLnBuZw==/original/01IFhW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY2NTEvNTk5ODc0LnBuZw==/original/0bW%2FWy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY2NTEvNTk5ODc1LnBuZw==/original/ijrWy4.png]]
<p>In <em>Adrift </em>you will find yourself cast into uncertainty, but encouraged to be kind to yourself in order to survive, maybe even thrive. This is accomplished through prompted reflections and journal entries.<br></p>
<p><em>Adrift </em>can be experienced alone or with friends near and far. It is designed to be engaged with for just a few minutes a day over several days, but is easily adapted to other experiences.<br></p>
[img width=500 [https://img.itch.zone/aW1nLzQyNTg0NjMuanBn/original/ymY%2BSq.jpg]]
<h1><a href="https://www.kickstarter.com/projects/cryogx/advent-neon-hyperactive-2d-action-platforming" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzY4NzU4MDIucG5n/original/D3w0Hs.png" loading="lazy"></a></h1>
<h2><a href="https://store.steampowered.com/app/1528260/Advent_NEON/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzY4NzU4MTgucG5n/original/SA6HQP.png" loading="lazy"></a></h2>
<h3><a href="https://forms.gle/mmnMrGu2MScHSbxz9" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Send large feedback!</a></h3>
<h3><a href="https://forms.gle/mmnMrGu2MScHSbxz9" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Quick Bug Report!</a></h3>
<p>Hyperactive 2D action platformer made by just me!<br><br><br><img src="https://img.itch.zone/aW1nLzY4NzU4MjUucG5n/original/kNAtlZ.png" style="color: inherit; font-size: inherit" loading="lazy"></p>
<p><a href="https://www.kickstarter.com/projects/cryogx/advent-neon-hyperactive-2d-action-platforming" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzY4NzU4MzEuZ2lm/original/5c%2F9Fm.gif" loading="lazy"></a><br></p>
<p>Tear up robots with<strong> lightspeed attacks and agility. Stop</strong> <strong>time</strong>, and <strong>transform</strong> when you reach <strong>MAX power</strong>! Exceed the limits you're used to, and hone Neon's ability to an <strong>instinct.</strong> Feel the power, in this solo-dev'd passion project inspired by legends like <strong>Sonic the Hedgehog, Dragonball,</strong> <strong>Super Smash Bros, Celeste,</strong> <strong>DMC</strong> <strong>and Megaman! </strong><br><br></p>
<p><a href="https://www.kickstarter.com/projects/cryogx/advent-neon-hyperactive-2d-action-platforming" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzY4NzU4NzIuanBn/original/sHdH7%2B.jpg" loading="lazy"></a><br></p>
<p>Advent NEON's got a large focus on <strong>simple to learn</strong> <strong>mechanics with a high skill ceiling,</strong> with lots of room for <strong>skill expression.</strong> Neon has a <strong>full</strong> <strong>platform</strong> <strong>fighter's</strong> <strong>moveset </strong>to achieve this. The experience should feel fun, whether you're new, a veteran, an ultra-optimal speedrunner, or someone just looking to wavedash! Some of these mechanics include:
</p>
<ul><li> <strong>Directional & Aerial Attacks</strong> - similar to attacks from Smash Bros!
</li><li> <strong> 8-Way Dashing</strong> - the kind of dash from Celeste, but even faster!
</li><li> <strong>Time Stop</strong> - dash into danger at the right time to freeze everything!
</li><li> <strong> Cancelling </strong>- Perform new attacks and actions before old ones finish!
</li><li> <strong>Nodes</strong> <strong>& Healing</strong> <strong>-</strong> Collect them to increase Resonance and restore HP!
</li><li> <strong>Resonance</strong> <strong>-</strong> A percentage gauge that increases your damage output. Reach 100% to achieve <strong>MAX POWER!</strong></li></ul>
<p><span style="text-align: left; color: inherit; font-size: inherit"><a href="https://www.kickstarter.com/projects/cryogx/advent-neon-hyperactive-2d-action-platforming" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzY4NzU4NTkucG5n/original/byyYhD.png" loading="lazy"></a></span></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/pD9hZ5Ev3t0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDc1MDA4LzY4MzQ1MDUucG5n/original/g77mU8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc1MDA4LzY4MzQ0OTUucG5n/original/TR%2FfQ2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc1MDA4LzUwMzAxNjMucG5n/original/46zMkM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc1MDA4LzY4MzQ0OTcucG5n/original/VQtte6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc1MDA4LzY4MzQ0OTkucG5n/original/1AJgdb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc1MDA4LzY4MzQ0OTYucG5n/original/SxIwi6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc1MDA4LzY4MzQ0OTgucG5n/original/qrFsH0.png]]
<figure><img class="custom-bit" src="https://img.itch.zone/aW1nLzUzODIyODkuZ2lm/original/7UOi2q.gif" style="color: inherit; font-size: inherit" loading="lazy"><br></figure>
<p class="text-center">Teach an AI named Bit to make a perfect procedural world. </p>
<p class="text-center"><br></p>
<p><img class="custom-screenshot" src="https://img.itch.zone/aW1nLzUzODIzMzgucG5n/original/t3jvYx.png" loading="lazy"><br></p>
<p class="text-center"><br></p>
<p class="text-center">A casual experience of exploring the unknown, and talking for a bit.</p>
<p class="text-center"><br></p><p>
</p><p><img class="custom-screenshot" src="https://img.itch.zone/aW1nLzYyOTA0MjkucG5n/original/sD6YUW.png" loading="lazy"><br></p>
<p class="text-center"><br></p>
<p class="text-center">A game by <strong><a href="https://justcamh.itch.io/" target="_blank">JUSTCAMH</a></strong> with music by <strong><a href="https://soundcloud.com/clockmaker1" target="_blank" rel="nofollow noopener" referrerpolicy="origin">ClockMaker</a></strong></p>
<p class="text-center">Part of the <a href="https://itch.io/b/812/care-package-bundle" target="_blank"><strong>Care Package Bundle</strong></a>, get 7 wholesome games for $7</p>
<p class="text-center"><a href="https://itch.io/b/812/care-package-bundle" target="_blank"><img src="https://img.itch.zone/aW1nLzUzOTAxNTgucG5n/original/pojznZ.png" loading="lazy"></a><br></p>
<p class="text-center"><br></p>
<p class="text-center"></p>
<div class="text-center"><iframe width="500" height="281" frameborder="0" src="https://www.youtube.com/embed/zH8BNYayM4Y" allowfullscreen=""></iframe></div>
<p class="text-center"><br></p>
<p class="text-center">~1 hour of game</p>
<p class="text-center">Recommended; A dedicated GPU + multicore CPU + 4GB memory</p>
<p class="text-center"><br></p>
<p class="text-center"><img class="custom-bit2" src="https://img.itch.zone/aW1nLzUzODI1NjUuZ2lm/original/c6z%2FaU.gif" loading="lazy"><br></p>
<p class="text-center"><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/zH8BNYayM4Y" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTM1NjE0LzUzODI2MTYucG5n/original/1evMU7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTM1NjE0LzUzODI2MTgucG5n/original/w6myNR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTM1NjE0LzUzODI2MjMucG5n/original/eCgAz1.png]]
<p>Welcome to Adventures of a Radish! A new retro platformer where you explore 7 worlds. Meet lots of fun and odd creatures along the way, collect lots of fun collectibles and find hidden bonus levels!</p>
<p>This Game is playable with Keyboard or game controller(xbox, ps4), Adjust the buttons to your needs in the Input Settings when you first launch the game!</p>
<p>Basic Keyboard controls:</p>
<p>Use A,S,W,D to move. </p>
<p>Use W or the up arrow key for entering doors.</p>
<p>Space is for jump.</p>
<p>Press P to pause/unpause</p>
<p>Escape to quit.</p>
<p><br></p>
<p>Fight Bosses!</p>
<p>Fight 7 evil bosses, all unique in their own way! Most likely you want to jump on them:))</p>
<p><img src="https://img.itch.zone/aW1nLzE4NDQ5MTMucG5n/original/TV2Nn4.png" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzE4NTI0MjEucG5n/original/HfonX1.png" loading="lazy"><br></p>
<p><br></p>
<p>Explore 7 worlds:</p>
<p>Explore:</p>
<p>The Forest</p>
<p>The Icy Lands</p>
<p>The Desert</p>
<p>The Beach</p>
<p>The Jungle</p>
<p>Candy Land</p>
<p>Cloud World<br></p>
<p><img src="https://img.itch.zone/aW1nLzE4NDQ5MTgucG5n/original/N7Pl%2FT.png" loading="lazy"></p>
<p>Bonus Levels!<br></p>
<p>Find the Radish Coin for hidden Bonus levels! </p>
<p>Collect oranges for hidden pathways!</p>
<p><br></p>
<p><strong>Unique Soundtracks, Music is made by:</strong></p>
<p><strong>Nicole Marie T</strong></p>
<p> Nicole Marie T (@musicvsartstuff): <a href="https://twitter.com/musicvsartstuff?s=09" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/musicvsartstuff?s=09</a></p>
<p><br></p>
<p>Please let me know if you have any problems downloading the files! For any further questions you can reach me on Twitter @Sorceress2016.</p>
<p>Don't forget to leave a review to let me know what you think of the game, thank you!</p>
<p><strong></strong><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/0Ugb9M3puDk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzUwODc5LzE3ODQzNjEucG5n/original/q0jkjE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUwODc5LzE4NTY0OTEucG5n/original/GTw6ps.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUwODc5LzE4NTY0OTMucG5n/original/vJvVL6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUwODc5LzE4NTY0OTIucG5n/original/vJ2kAx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUwODc5LzE4NTY0OTQucG5n/original/rw6a0g.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUwODc5LzE4NTY0OTUuanBn/original/dpnJjO.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUwODc5LzE4NTY0OTcucG5n/original/%2FRI5qq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUwODc5LzE4NTY1MDAucG5n/original/KLnLY2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUwODc5LzE4NTY1MDEucG5n/original/wvJ8O8.png]]
<p>Smash your brain into a Cyberhellscape in Æthernet, a rules-light Occultech Horror Science-Fantasy game based off of <a href="https://gayhalforc.itch.io/sledgehammer">Sledgehammer</a> by <a href="https://gayhalforc.itch.io/">gayhalforc</a>.</p>
<h2>THE WORLD HAS CHANGED</h2>
<p><br>The Internet as we know it ceased to exist after The Incursion, and in its place the sprawling Virtual Hyperreality of the Æthernet stretches horrible and festering in every direction. Plumb its depths in search of riches, miracles and ruins that the keepers of the mundane world will pay heartily for, just beware of the Daemons and UNGODS waiting for you in its depths, hoping to bend and shape your flesh to their own ends.</p>
<p>Make a character in seconds, ruin them for hours. The Player Book contains the minimum essential rules and setting information, and the Ref's Handbook fills in the other rules and tables you need to run the game. <br></p>
<h2>OK, WHAT DO I GET?</h2>
<ul><li>The Player Booklet (Print and Phone versions)</li><li>The Ref Handbook (Print and Phone versions) </li><li>The Sourcebook (Print and Phone versions) †</li><li>A Raw Text file so you can read it and not my godawful handwriting *</li></ul>
<p>† This piece is in development</p>
<p>* This piece is useable as-is, but will be extended later<br></p>
<h2>WHERE DID THIS COME FROM?</h2>
<p>This game was made as a part of the <a href="https://itch.io/jam/sledgejammer-a-sledgehammer-jam">#Sledgejammer</a> game jam! <br></p>
<p>Based on Sledgehammer by Gayhalforc. Æthernet is an independent work compatible with Sledgehammer but not affiliated with Gayhalforc.</p>
<p><br></p>
<p></p>
[img width=500 [https://img.itch.zone/aW1nLzUxMTU4NjUuanBn/original/Ndg%2B6n.jpg]]
<p>AFTER SCHOOL is a coming-of-age story about detention, baseball, gangs and friendship. Join Ellis in his chaotic adventures as he meets others both cute and terrible! Then maybe — finally make a friend?</p>
<ul><li>3 Character routes to explore — Explore the stories of Dante, Adrien and Chester, with sappy friendship endings, the possibility of kissing one of them and some...not-so-good endings.</li><li>3 full CGs, as well as 6 partial CGs to unlock!</li><li>About 30-45 minutes of gameplay per route, with a total of 23k words</li></ul>
<p><strong>Support the game by dropping a donation!</strong></p>
<figure><img src="https://img.itch.zone/aW1nLzE5OTI3MjguanBn/original/w6DbJ3.jpg" style="color: inherit; font-size: inherit" loading="lazy"><span></span><br></figure>
<p>
</p>
<figure><img src="https://img.itch.zone/aW1nLzE5OTI3MzAuanBn/original/VH%2F%2BUQ.jpg" style="color: inherit; font-size: inherit" loading="lazy"><span></span><br></figure>
<p><img src="https://img.itch.zone/aW1nLzE5OTI3MzEuanBn/original/kQzRfK.jpg" loading="lazy"><br></p>
<p><img src="https://img.itch.zone/aW1nLzE5OTI3MzIuanBn/original/7wo3Z%2F.jpg" loading="lazy"><br></p>
<p>This is my first full game, so any comments are appreciated! </p>
<p>You may also follow me on <a href="http://twitter.com/fever_fiction" rel="nofollow noopener" referrerpolicy="origin">Twitter</a> or <a href="http://instagram.com/fever_fiction" rel="nofollow noopener" referrerpolicy="origin">instagram</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDQzNzAwLzM3NjI2NjIuanBn/original/E4CWvi.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQzNzAwLzIyMzc3MTYuanBn/original/V89lU1.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQzNzAwLzIyMzc3MTcuanBn/original/P4yIcT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQzNzAwLzIyMzc3MTguanBn/original/Fe9MVD.jpg]]
<p><strong>Content Warning: Panic, Social Anxiety</strong><br></p>
<p>---</p>
<p>After arriving at college, Joyce struggles with a yet-undiagnosed panic disorder while attempting to find direction and acceptance among their peers.</p>
<p>Their panic disorder distorts the world around them, rendering an otherwise friendly world overwhelming and horrific.</p>
<p>In search of respite, they stumble across their campus's art studio and begins to make peace with themself.</p>
<p>---</p>
<p>CONTROLS:<br>WASD to move, Mouse to look<br>"E" to proceed with dialog.<br>If presented with a choice in dialogue, press ENTER on the highlighted response to confirm it.<br>Use the mouse to solve the connect-the-dots puzzles.</p>
<p>Press 'O' if you need to unlock the cursor!</p>
<p>---</p>
<p>If you're having trouble finishing the game, a full playthrough can be viewed here:</p>
<p></p>
<div class=""><iframe width="500" height="281" src="https://www.youtube.com/embed/5fcTEqI20bI" frameborder="0" allowfullscreen=""></iframe></div>
<p>---</p>
<p></p>
<p>Agoraphobia is being developed by Quaking Aspen Studio, comprised of two college students and long-time friends attempting to make sense of their own worlds through artistic narrative and gameplay. </p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/5fcTEqI20bI" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODgxNjE0LzQ5NzY1MjgucG5n/original/hZ0Ayg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgxNjE0LzQ5NzY1MjkucG5n/original/YTfI%2FU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgxNjE0LzQ5NzY1MzAucG5n/original/kq9Hdr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgxNjE0LzQ5NzY1MzEucG5n/original/HAVhQ8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgxNjE0LzQ5NzY1MzIucG5n/original/S38xLC.png]]
<p>[<a href="https://raulranma.itch.io/agouro/devlog/252084/agouro-portugus" target="_blank">Ver descrição em português</a>]</p>
<p><br></p>
<h2>The Wheel Turns Once Again</h2>
<p>Agouro is a narrative game of inevitable prophecies, inspired by Tarot cards and dark fantasy stories like Kentaro Miura's Berserk and Netflix's The Witcher.<br></p>
<p>In Agouro, you'll perform a ritual to summon the story of a group of people whose lives are intertwined in the threads of destiny. Your decisions will shape the fate of the World, and also your own.</p>
<p><br></p>
<p class="text-center">✧✧✧</p>
<p><br></p>
<h2>Rules and Mechanics</h2>
<p>Agouro is played with between 3 and 6 players, and each ritual of play takes around 2 to 4 hours.</p>
<p>Players create protagonists by choosing a Path based on one of 20 Major Arcana cards, then use two standard decks of cards (52 cards, 4 suits, no Jokers) to bet in turns, creating scenes that carry the story forward and advance towards the culmination of the prophecy.</p>
<p>The prophecy is inevitable. You play to find out <em>how</em> it happens.</p>
<p>If you want a few more details on how it works and where the mechanics came from, I made <a href="https://twitter.com/raulranma/status/1393123683712049153" rel="nofollow noopener" referrerpolicy="origin">this twitter thread to explain a little bit</a>.<br></p>
<p><br></p>
<p class="text-center">✧✧✧</p>
<p><br></p>
<h2>Playtest Version</h2>
<p>
</p>
<p><strong>WARNING:</strong> For now, <strong>Agouro is only available in a playtest digital version</strong>. If you purchase it now, you'll get the finished digital version of the game when development ends.</p>
<p>Future planned updates include, but are not limited to:</p>
<ul><li>Editing and proofreading by other collaborators;</li><li>New illustrations for the Major Arcana;</li><li>Better iconography and character sheet design;</li><li>Sections with examples of play throughout the Book of Omens, to help readers better understand how the rules were meant to work;</li><li>An entire chapter composed of optional rules, hopefully made in collaboration with other designers, as well a section on how to change the game's rules to adjust play to your liking.</li><li>The funding of an actual physical version, hopefully, if enough people show interest this digital version (it will have to be paid for separately, of course).</li></ul>
<p><br></p>
<p class="text-center">✧✧✧</p>
<p><br></p>
<p>If you'd like to give me feedback on your experiences playing or reading Agouro, or if you want to pay in R$ or trade a copy of one of your games for it, you can do so by messaging me on twitter <a href="http://twitter.com/raulranma" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@raulranma</a>, or by sending an e-mail to <a href="mailto:raulranma@gmail.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin">raulranma@gmail.com</a>.</p>
<p><br></p>
<p class="text-center">✧✧✧</p>
<p><br></p>
<p><em>The rules for this game are licensed under <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">CC BY-SA 4.0</a>. That means you can create new material based upon them if you wish, as long as you also publish it under this license and give appropriate credit. Table texture on the mock up pictures by <a href="https://unsplash.com/@nate_dumlao" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Nathan Dumlao</a>.<br></em></p>
<p></p>
<p></p>
<p>
</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTU5MTYwLzU5NDUyNjEuanBn/original/6mhF1t.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU5MTYwLzU5NDUyNjIuanBn/original/sD6eTB.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU5MTYwLzU5NDUyNjYuanBn/original/IHnW%2Fa.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU5MTYwLzU5NDUyNjcuanBn/original/h8ihOU.jpg]]
<h1>READY TO ADD AI TO YOUR RPG?</h1>
<p>AI CARDS offer you an exciting and easy way to enhance your characters with artificial intelligence for use in any fiction*, including tabletop role playing games and other forms of storytelling. With nothing more than two 6-sided dice, some colours, and a wallet-sized CARD, you can program how characters gossip, respond to bargains, react when flirted with, and more!</p>
<p>This modular, cutting-edge RPG tech is ready to be used on its own for a rules-lite, freeform role playing experience OR plugged into your favourite game to help your characters come alive. Use AI CARDS as a GMing tool or to automate your GM-less play. <a href="https://youtu.be/lYZ9B7N6vHM" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Everything is better with a little AI</a>.</p>
<p><em>*or in real life. I'm not gonna stop you.</em><br></p>
<h2>So... how does it work?</h2>
<h2></h2>
<p><img src="https://img.itch.zone/aW1nLzU1Mzk4MzUucG5n/original/Sw5mih.png" loading="lazy"></p>
<p><br></p>
<p>On each CARD you'll find a 6x6 square grid with four probable responses to a given prompt. Using highlighters, pencil crayons, markers, or whatever colouring tools you have on hand, divide the grid into uneven quadrants — a bigger quadrant means the character is more likely to act that way. </p>
<p>When the situation arises and you need to know how your character will act, roll 2d6 and find the corresponding square on the grid. Think of it like an oracle with probabilities that you adjust for each character depending on their personality. </p>
<p>Fill out a full set of cards for a character and you have a robust set of reactions to rely on whenever you need to answer the question: "how does this character act?"</p>
<p></p>
<p><img src="https://img.itch.zone/aW1nLzU1NDU5MTEucG5n/original/17Fgiq.png" loading="lazy"></p>
<p><strong>Example of play: </strong><em>Your friend </em><em>Aviya is usually very low-energy</em><em> from working night shifts at their job. You are going to meet them today and you aren't sure how they are feeling, so you roll 2d6 and get a 5 and a 3, which corresponds to the top left quadrant: stressed</em><em>. W</em><em>hen you see them</em><em> they are hunched over in their chair and gritting their teeth.</em><em> What might be on their mind?</em></p>
<h2>What do I get?</h2>
<p>Your purchase includes the first full set of 10 AI CARDS, including:</p>
<ul><li>Bargain</li><li>Confront</li><li>Courting</li><li>Fashion</li><li>Gossip</li><li>Lies</li><li>Meeting</li><li>Mood</li><li>Threat</li><li>Violence</li></ul>
<p>You are welcome to print the cards at home, have them commercially printed, or use the individual images for online play. (Paint bucket tools work very well for colouring your grid!)<br></p>
<h2>Future Development</h2>
<p>This set of AI CARDS is designed to be a launching-off point. This framework is easy to design and iterate upon, leaving plenty of room for booster packs and hackable content. I may even do a print run at some point. Have any AI you want to see or situations you need CARDS for? Let me know in the comments below! ⬇️</p>
<p>This was designed as part of the <a href="https://itch.io/jam/pleasurecardrpg/entries" target="_blank">Pleasure-not-Business Card RPG Jam</a>.</p>
[img width=500 [https://img.itch.zone/aW1nLzU1Mzk4MzQucG5n/original/3DXhEq.png]]
<h2>FAST-PACED ARENA ACTION</h2>
<p><strong>Akuto: Showdown</strong> (previously known as Akuto: Mad World) is an award-nominated, isometric, <strong>fast-paced action</strong> game where players compete with swords and guns in intense versus matches.<br></p>
<p>The game is set on low poly, diorama arenas where players have to not only watch out for opponents, but also for the environment from killing them.</p>
<p><br></p>
<h2>FEATURES</h2>
<ul><li> Enjoy the intensity and fun of classic couch party games, but with more violence</li><li> A wide range of dynamic levels with environmental hazards</li><li> Fight against your friends in local multiplayer, or play against the bots in one of the many versus modes</li><li> Unlockable achievements, weapons, and HATS!</li><li> Watch highlights captured from previous matches in gallery mode</li></ul>
<p><br></p>
<h2>FAQ</h2>
<p>All purchases come with a Steam key.</p>
<p>The DRM-free version is an old build of Akuto: Showdown due to the final version of the game requiring Steam.<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/UOP3__xvcqg" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA4NjIwLzE4NzUxNzcuZ2lm/original/hbgRJo.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA4NjIwLzE4NzUxODEuZ2lm/original/ZNdsg2.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA4NjIwLzE4NzUxNzkuZ2lm/original/hNMn00.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA4NjIwLzE4NzUxODAuZ2lm/original/9cL52Y.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA4NjIwLzE4NzUxNzguZ2lm/original/XyXSVN.gif]]
<p>Discovering the philosopher's stone turned the wise and kind alchemist into a power hungry, selfish tyrant. Task of stopping him falls upon you, the former apprintice of the alchemist. Discover the secrets of the Alchemist's Castle, survive and destroy the philosopher's stone!</p>
<p>Alchemists's Castle is a 2D side - scroller platformer, inspired by old - school Metroid and Castlevania games.</p>
<p>
</p>
<p>Coming soon to PC, Mac and Linux</p>
<p><br></p>
<h2>Key Features</h2>
<ul><li>Non-linear exploration</li><li>Old-school metroidvania experience</li><li>Intriguing story</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/QPWm2m7PBFk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTg3ODk1Lzg3ODc1MC5qcGc=/original/YZ1AHj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg3ODk1Lzg3ODc1MS5qcGc=/original/c%2BKCDz.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg3ODk1Lzg3ODc1Mi5qcGc=/original/WcjM2T.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg3ODk1Lzg3ODc1My5qcGc=/original/HlTPVG.jpg]]
<p><strong>Alien Death Mob!</strong></p>
<p>OMG guys, aliens have invaded Earth! Towns, cities, deserts, popular tourist attractions, they're <em>everywhere</em>! Take on the role of Earth's last super soldier or whatever and eliminate the alien menace! </p>
<p>An intense twin stick shooter, blast your way around the world taking on hordes of enemies. Use bullet time to get out of sticky situations. Collect the power ups, but don't forget to keep an eye on your multiplier to get those massive scores!<br></p>
<ul><li>30 missions set at various real world locations</li><li>Bullet time to help out in those desperate situations</li><li>Intense twin stick action</li><li>Loads of Power ups</li><li>Hordes of aliens to blast your way through</li></ul>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/27nU1f-_YgA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTU3NzA4LzU5ODc2MTIucG5n/original/8nSm9r.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU3NzA4LzU5ODc2MTMucG5n/original/9hS%2FJm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU3NzA4LzU5ODc2MTQucG5n/original/2CFsec.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU3NzA4LzU5ODc2MTUucG5n/original/0%2FK2Kt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU3NzA4LzU5ODc2MTYucG5n/original/%2Br7cix.png]]
<p><strong>About:</strong><br>Alisa is a classic late-90s style horror-themed action adventure game set in a fantasy universe inspired on the 1920s. You play as an Elite Royal Agent called Alisa. While she is chasing a wanted criminal, she ends up in an old victorian mansion. She tries to find a way out while being haunted by materialized/mechanized doll-like humanoids. Can you survive the Dollhouse?<br><br>The Awakening Demo is the first public demo of Alisa.<br></p><p>Get the full version: <a href="https://caspercroes.itch.io/alisa">https://caspercroes.itch.io/alisa</a><br>Or on Steam: <a href="https://store.steampowered.com/app/1335530/Alisa/" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">https://store.steampowered.com/app/1335530/Alisa</a><br></p>
<p><br><strong>System requirements:</strong><br>The game easily runs on older hardware.<br>Minimum (tested) System Requirements:<br>Ram: 2GB (lower is not tested)<br>GPU: Any Video Card compatible with DirectX 10<br>CPU: Intel Duo Core Mobile T7500 (lower not tested)<br>Anything higher than the specifications above will absolutely work.<br><br></p>
<p><strong>Extra Info:</strong><br>If you connect a controller, don't forget to setup the buttons in the Button Config menu (in-game)<br>If something goes wrong with your settings, press F1 + F2 at the main screen (new game, settings, quit) and quit the game and restart is again to reset everything to default settings.<br></p>
<p><strong>Interesting Links:</strong><br>You can join the Discord: <a href="https://t.co/XIqF1CQp4G?amp=1" title="http://discord.gg/p89JtUq" target="_blank" dir="ltr" class="" rel="nofollow noopener" referrerpolicy="origin"><span class="">http://</span>discord.gg/p89JtUq</a><br>Follow game development progress on Twitter: <a href="https://twitter.com/CasperCroes" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/CasperCroes<br></a>Instagram: <a href="https://www.instagram.com/alisagame.exe/" rel="nofollow noopener" referrerpolicy="origin">https://www.instagram.com/alisagame.exe/<br></a>Website: <a href="http://www.caspercroes.com/" rel="nofollow noopener" referrerpolicy="origin">http://www.caspercroes.com/</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/ssRbtP4D3R0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTU2MjU5LzI5MTg5NjkuZ2lm/original/VAI6SY.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTU2MjU5LzI5MTg5NzMuZ2lm/original/Bh6Jx9.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTU2MjU5LzI5MTg5NzEuZ2lm/original/mhaomL.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTU2MjU5LzI5MTQ5NjcuanBn/original/hJgZzw.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTU2MjU5LzI5MTQ5NjYuanBn/original/VoxHmn.jpg]]
<p class="text-center">EPISODE 1: THE MIGHTY ECHO </p>
<p class="text-center">GET IT NOW!</p>
<p><strong></strong></p>
<p><strong></strong>ALL @ ONCE is a twine based interactive novel. Take the role of <em>Wyatt Reynolds</em>, your average everyday black teen in the small lake-centered town of Primwood a town where the world is quiet and the mornings are hazed. Where Devils walk the street with pockets full of spice. This young man whose life blinked by without a second thought becomes something more when his mind takes on something new. When the thoughts in his head aren't his own and the reality of reading people's minds comes into play.</p>
<p>This supernatural coming of age story allows you to make decisions that affect your relationships. Read the minds of your enemies and your peers, fall into the wonderful pitfall of love, become your school's therapist and help those where nobody else could. With your friends discover the deeprooted drug problem in your town and see how far powers can take you all. And just what kind of effect they can have on you all. But most importantly when diving into the minds of everyone's struggles and thoughts, through all their love and all their pain can you discover you?</p>
<p><br></p>
<p>All Dev, Writing, and Design were done by <a href="https://projectmarbles.itch.io/" target="_blank" class="">Lawrence</a>.<br></p>
<p>Banner art done by <a href="https://twitter.com/iamneedi" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Rahul</a></p>
<p>Trailer done by <a href="https://twitter.com/DeDeDeadero" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Ethan</a></p>
<p><em>(Note for mac users: File is in HTML)</em></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/7B1rm-BqNVg" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzc4MjE5LzQ0MTgyNTMuanBn/original/%2F4SHcI.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc4MjE5LzQ0Mjc3OTYuanBn/original/QBj%2BLe.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc4MjE5LzQ1NDcxMTUuanBn/original/e6E25g.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc4MjE5LzQ1NDcxMTQuanBn/original/R1ddmH.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc4MjE5LzQ1NDcxMTYuanBn/original/t%2Baaet.jpg]]
<<list-links "[has:field[url]sort[title]]">>
<<list-links "[has:field[url]!sort[rating]]">>
<p><strong>Wowie, it's All Hams on Deck!</strong></p>
<p>The hit (?) mobile game is now available on your computer!</p>
<ul><li>Bounce that ham!</li><li>50+ pigs to acquire!</li><li>Aim for the highest score you can!</li></ul>
<p>For this version, all microtransactions are removed, and the Coink economy is rebalanced and booming better than ever. The top 5 scores are now tracked locally so you can show your friends how cool you are.</p>
<p>If you don't feel like payin' a few bucks for this delectable game, it's free to play on iOS and Android!</p>
<p>Have fun on the seas! - The Bread & Butter Game Co. 🐷❤️</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/GG7MUTKkFfQ" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1nLzM3NDY0NDIucG5n/original/wH22yY.png]]
<p><em>“HOSTILE DETECTED,” Chariot reported. Sure enough, an ominous icon had appeared on the heads-up map. It was shaped like a skull. Wearing an eyepatch.</em></p>
<p><em>Justice tapped it with their finger, opening a comms channel. “You’re not authorized to be here!” Justice demanded. “Who are you?”</em></p>
<p><em>“BEAM LASERS CHARGING,” the mech calmly droned.</em></p>
<p><em>“Justice. You’ve gotten sloppy since last I saw you. The Academy not drilling you hard enough?”</em></p>
<p><em>Justice instantly recognized the voice. They could never have forgotten it. “Judgment? Is that you?”</em></p>
<p><em>“LASERS CHARGED,” said Chariot, the skull icon blinking to a targeting reticle. “OPEN FIRE?”</em></p>
<hr>
<p>
</p>
<p><strong>All My Exes are in Mechsuits</strong> is a role playing game for exactly three players. </p>
<p>Imagine a mech anime series, full of heated battles in the cold of space, unforgivable betrayals, and shocking revelations far from home base. In Exes in Mechsuits, we play through a single episode of that anime that contains all three: The moment the pilot meets someone important from their past - flying for the other side.</p>
<p>It can be played either as a live-action role-playing game (or “Larp”) or as a pure tabletop experience. It takes two to three hours to play.<br></p>
<p>Exes in Mechsuits was originally created for the <a href="https://itch.io/jam/sad-mecha-game-jam">#sadmechjam</a>, organized by John Harness and Takuma Okada. Cover art by <a href="https://twitter.com/pinacoladapuppy" rel="nofollow noopener" referrerpolicy="origin">@pinacoladapuppy</a>.</p>
<p>It is available as a digital pdf, print-ready pdf (print double-sided, then staple it together to create a physical copy), and plaintext. The character sheets are free.</p>
<p><strong>1/24/20 UPDATE:</strong> This new edition of the game adds a ton, including the demo scenario I created for running the game at conventions, safety techniques, revised character creation, and rules to run the game as either a tabletop or larp experience. It's so much better!<br></p>
<hr>
<p><strong>What is this game like? </strong>Listen to the following Actual Play podcasts (both of the original jam edition) to get an idea of how it works.<br></p>
<p>▶ <a href="https://www.youtube.com/watch?v=nI9Wjdil8_0&feature=emb_title" rel="nofollow noopener" referrerpolicy="origin">Looking For Good livestream</a> (featuring me!).<br></p>
<p>▶ Many Realms podcast: <a href="https://open.spotify.com/episode/6YqDkImYnJT1vtJuWRtH3k" rel="nofollow noopener" referrerpolicy="origin">Cat's Eye</a>.<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/nI9Wjdil8_0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzY3NjExLzI5MDkwNDUucG5n/original/wm%2FThb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY3NjExLzI5MTAyNTkucG5n/original/9TC%2F0O.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY3NjExLzI5MDkwNTkucG5n/original/osu8VO.png]]
<p>
<strong>ALL-STARS DUNGEONS AND DIAMONDS</strong> is a competitive Arcade-style game where two players face each other in a diamond-collecting race! The player with the largest number of gems at the end of the round wins!
</p>
<p>
Collecting gems will unearth items with different effects, that will either give you a boost or will mess with<span></span> your opponent. Use them wisely and find your way through the dungeon to outmatch your adversary and emerge victorious!
</p>
<hr>
<p>
<img src="http://www.giantenemylabs.com/misc_assets/treasure.gif" style="padding-left: 20px" loading="lazy">
</p>
<ul>
<li>Intense <strong>2 Player</strong> (local multiplayer) <strong>Competitive </strong><strong>Arcade</strong> action!</li>
<li><strong>7</strong> Different Characters! (4 Original Characters + 3 Guests from other indie titles! *)</li><li><strong>10</strong> different items and <strong>4</strong> different worlds!</li><li><span></span><strong>Customizable match settings</strong> (for normal mode) allow you to change the rules and pace of the game.</li><li><span></span>(NEW) Extra game mode "<strong>Race for the Idol</strong>" where the first player to reach the sacred gold statue at the end of the maze wins!</li>
</ul>
<p>* Guest Characters are featured in <strong>ASDAD</strong> with the proper permission from their owners.<br></p>
<hr>
<p>
<strong>(2015/12) THIS GAME HAS BEEN UPDATED! </strong>
</p>
<p>
To see what's changed please check the
<a href="http://giantenemylabs.com/asdad-versions/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">version notes</a>!
</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/hqYtDJunDzs" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjAxOTgvODA4NDMucG5n/original/alB%2FZA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjAxOTgvMTY2MDk2LnBuZw==/original/cfZlBD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjAxOTgvMTY2MDk1LnBuZw==/original/3VoY63.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjAxOTgvODA4NDEucG5n/original/XnzdDF.png]]
<p><em>Alone In Between</em> is a solo journaling game about being trapped between this world and somewhere else. It is about communication, regrets, and unfinished business. You play as a ghost trapped in your former home struggling to convey a final message to the living left behind. </p>
<p>This game requires a standard deck of 52 playing cards, 1 six-sided die, and a way to record your game, such as pencil and paper. </p>
<p class="text-center">———————</p>
<p><em>Alone In Between</em> is based on <em><a href="https://noroadhome.itch.io/alone-among-the-stars" target="_blank">Alone Among the Stars</a></em> by Takuma Okada. </p>
<p class="text-center">———————<br></p>
<p><em>Alone In Between</em> is part of a game design exercise where I take the same basic game concept and render it as a hack of different games and systems. You can learn more about the project <a href="https://twitter.com/mrmatthew/status/1345064545140674560" target="_blank" rel="nofollow noopener" referrerpolicy="origin">in this Twitter thread</a>. </p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODcyMDY0LzQ5MDI3MjMucG5n/original/Yh3otF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODcyMDY0LzQ5MDI3MzIucG5n/original/zsk7hf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODcyMDY0LzQ5MDI3MjQucG5n/original/WA0ACF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODcyMDY0LzQ5MDI3MjUucG5n/original/7F9CYd.png]]
<p>Alone In The Grey is an adventure puzzle game where the player must escape from a UFO they have mysteriously awoke in. Uncover clues and solve puzzles to escape and find out the reason for your capture. Hack terminals and find batteries to obtain freedom.</p>
<p>Move around using the WASD keys and move the camera using the mouse. Left click to interact and pick up objects. Right click to drop objects. Shift to run and ctrl to crouch.</p>
<p>This game was made by two developers as a fun project to work on and develop our skills.</p>
<p>William Hughes (Roxra) - Programming / Design - <a href="http://roxra.github.io" target="_blank" rel="nofollow noopener" referrerpolicy="origin">roxra.github.io</a></p>
<p>Liam Downton (Falconhead) - 3D Modelling / Art / Design</p>
<p><br></p>
<p>Sounds: </p>
<p><a href="http://profiles.google.com/jun66le" rel="nofollow noopener" referrerpolicy="origin">http://profiles.google.com/jun66le</a></p>
<p><a href="https://freesound.org/people/TheAtomicBrain/sounds/351877/" rel="nofollow noopener" referrerpolicy="origin">https://freesound.org/people/TheAtomicBrain/sounds/351877/</a></p>
<div class=""><a href="https://freesound.org/people/Fantozzi/sounds/166293/" rel="nofollow noopener" referrerpolicy="origin">https://freesound.org/people/Fantozzi/sounds/166293/</a></div>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzI5OTE1LzE3NDM3MjIucG5n/original/nb%2BNvB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzI5OTE1LzE3NDM3MjMucG5n/original/k%2F7Wqk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzI5OTE1LzE3NDM3MjQucG5n/original/lLOtc%2B.png]]
<p><span></span></p>
<p><strong>You are a renown cartographer</strong> that has been tasked with creating a comprehensive map of the entire world. To do this you have divided the world into 36 quadrants and will label the most important Landmarks.</p>
<p>---------</p>
<p><em>Alone on a Map</em> solo tabletop role playing game about discovering landmarks and creating a map.</p>
<p>This game uses a standard deck of playing cards, 2 six-sided dice, writing implements, a grid, and an optional coin. </p>
<p>A grid is provided at the end of each PDF document, but there is also separate grid PNG available for download.</p>
<p>This game is a hack of <a href="https://noroadhome.itch.io/alone-among-the-stars">Alone Among the Stars</a> by <a href="https://noroadhome.itch.io">Takuma Okada</a> and is heavily inspired by <a href="https://dr-d-king.itch.io/tiny-islands">Tiny Islands</a> by <a href="https://dr-d-king.itch.io">David King</a></p>
<p>For a Sci-Fi / Space version of the game check out <a href="https://k-ramstack.itch.io/alone-on-a-galactic-map">Alone on a Galactic Map</a></p>
<p>8/29/21 Update: Added a plain text and ePub version <br></p><p>3/9/22 Update: Added Transparent PNG <br></p>
<p><a href="https://ko-fi.com/kramstack" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzQ2NTkzNzEucG5n/original/GnxSt9.png" loading="lazy"></a></p>
<p>If you have made a map and would like to show me please @ me on Twitter my handle is <a href="https://twitter.com/KadenRamstack" rel="nofollow noopener" referrerpolicy="origin">@KadenRamstack</a> and I would love to see it! </p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODMxNDMzLzQ2NTkzODYucG5n/original/DB35al.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMxNDMzLzQ2NTkzODQucG5n/original/hByZ6m.png]]
<p><strong>As a criminal on death row you can choose... Die quietly or die in the Alpha Dog dungeon! Choosing the dungeon will still bring certain death, but it may also grant you immortality if you can become the Alpha Dog champion by defeating the hordes of Cur over multiple levels using all your wits and the many weapons scattered throughout.</strong></p>
<p></p>
<p><span></span></p>
<p><strong>FEATURES:</strong></p>
<p>Alpha dog is an ultra-low-rez arena shooter with procedurally generated levels. You start the game with a simple pistol, but as you continue you can buy or find more weapons and upgrade your health. The game has the following features:</p>
<ul><li>Infinite levels of procedurally generated mayhem</li><li>19 different weapons, all with their own unique handling and effects</li><li>Multiple different enemy types, each with their own distinct AI</li><li>Secret areas with special weapons that just can't be bought</li><li>Lots and lots of achievements! Can you get them all?</li><li>Online highscores so you can compete against the world</li></ul>
<p><br></p>
<p><strong>WHY SO SMALL?</strong></p>
<p>This game started from a simple premise - what's the smallest resolution that I can make a playable game in? After making some prototypes I realised that 90x45 was viable and set about making something that would be fun to play in such a small amount of pixels... and so Alpha Dog was born! I've always loved arena shooters, and the small play area lent itself nicely to this kind of casual shooter game. I've packed as much as possible into the tiny space available and I hope you enjoy playing it! Remember, it's not the size that counts, but what you do with it... ;)</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/ChMhsjt9M6k" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDQyODc0LzIyMjk4NzgucG5n/original/sS5jDZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQyODc0LzIyMjk4NzkucG5n/original/YSeMbY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQyODc0LzIyMjk4ODIuZ2lm/original/Ng3kgw.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQyODc0LzIyMjk4ODEuZ2lm/original/Ivk%2B13.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQyODc0LzIyMjk4ODMuZ2lm/original/gdYLnE.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQyODc0LzIyMjk4ODUuZ2lm/original/q3aZp1.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQyODc0LzIyMjk4ODQuZ2lm/original/oqngiD.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQyODc0LzIyMjk4ODAucG5n/original/YLLHf0.png]]
<p class="text-center"><em><strong>When struggling writer Peter York becomes trapped on a remote farmstead in the eastern Free State, South Africa, he is forced to confront a dark history in his bid for freedom.</strong></em><br></p>
<p><em>Among the Innocent </em>is the first of five instalments in the <em>Stricken</em> series, each exploring a stage in the Kübler-Ross model for dealing with grief and loss. In this epic series, players will be challenged in a rich narrative experience that spans multiple decades and storylines. The <em>Stricken</em> series blends elements of classic point-and-click adventures with modern first-person games, and delivers a mature story for players who long for intrigue.</p>
<h2>Features</h2>
<ul><li>A blend of classic point-and-click gameplay and modern first-person exploration.</li><li>12 acres of farmland to explore, with unique, hand-crafted locations.</li><li>Multitude of puzzles to challenge your logic and intuition.</li><li>A rich, layered story to discover and experience first-hand.</li><li>Original soundtrack composed and performed by Zero Degrees Games.</li><li>Dark themes inspired by classic and modern horror and thriller films.</li><li>A handy <a href="http://www.stricken-game.com/among-the-innocent-hint-book/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">hint guide</a> in case you get stuck!</li><li>Free Deluxe Edition content - A digital prequel comic book and the full soundtrack, complete with 10 original pieces of music.</li></ul>
<h2>Reviews</h2>
<p><em>“Although there’s nothing too shriek-worthy, the game’s macabre narrative hooks you in through some ghoulish details and intriguing plot threads.”</em>
<strong>7.5/10 – Critical Hit</strong></p>
<p><em>“We highly recommend this for anyone who loves adventure, puzzle and Indie games in general.”</em>
<strong>7/10 – Game Nation SA</strong></p>
<p><em>“Among the Innocent is a great homage to the classic point-and-click genre, and a solid first outing for Zero Degrees Games.”</em>
<strong>79/100 – Gamecca Magazine</strong></p>
<h2>System Requirements</h2>
<ul>MINIMUM:<ul><li>OS: Windows 7 or newer</li><li>Processor: Intel Core i3 / AMD A6</li><li>Memory: 4 GB RAM</li><li>Graphics: NVIDIA GTX 460 / AMD 4870</li><li>DirectX: Version 11</li><li>Storage: 4 GB available space</li></ul></ul>
<ul>RECOMMENDED:<ul><li>OS: Windows 7 or newer</li><li>Processor: Intel Core i5 / AMD FX</li><li>Memory: 8 GB RAM</li><li>Graphics: NVIDIA GTX 680 / AMD 7970</li><li>DirectX: Version 11</li><li>Storage: 4 GB available space</li></ul></ul>
<p><em></em><em>Note: Keyboard and mouse support only</em></p>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/yOcC_UlOpFI" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDMzODM3LzIxODU3NTUuanBn/original/fXqWmy.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDMzODM3LzIxODU3NTYuanBn/original/kj4akR.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDMzODM3LzIxODU3NjAuanBn/original/WQ%2FsC7.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDMzODM3LzIxODU3NTguanBn/original/sX%2FkE5.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDMzODM3LzIxODU3NjEuanBn/original/ARBQi8.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDMzODM3LzIxODU3NTkuanBn/original/vp5Jwf.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDMzODM3LzIxODU3NjIuanBn/original/ymibn9.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDMzODM3LzIxODU3NTcuanBn/original/%2B1godr.jpg]]
<p><strong>This edition of An Altogether Different River was funded on <a href="https://www.kickstarter.com/projects/ehronlime/an-altogether-different-river-zine-edition" rel="nofollow noopener" referrerpolicy="origin">Kickstarter as a part of Zine Quest 3</a>. </strong></p>
<p><br></p>
<p><br></p>
<p> <em>It has been some time since you’ve left home, but now it’s finally time to return. To what, though? </em>
</p>
<p><em>The home you held in your mind, and the home you will encounter will not be the same. You are not the same. </em>
</p>
<p><em>You can’t step into the same river twice. You can’t go home again.<br></em></p>
<p><em></em><br></p>
<p><br></p>
<p>This is a GM-less roleplaying game meant for 2 to 4 players and a single session of about 3-4 hours. It is inspired in parts by <a href="http://lessthanthreegames.com/downfall.html" rel="nofollow noopener" referrerpolicy="origin">Downfall, by Caroline Hobbs</a> and <a href="http://www.lamemage.com/microscope/" rel="nofollow noopener" referrerpolicy="origin">Microscope, by Ben Robbins</a>. Cover and interior art is by <a href="https://linktr.ee/venessatgg" rel="nofollow noopener" referrerpolicy="origin">Venessa Tang</a>. You will need pencils and paper and maybe a deck of cards to pick randomly from lists.<br></p>
<p>It is about a Town, the people who have left it and returned, and the people who stayed behind. <br></p>
<p>It is about returning home and grappling with what has and hasn't changed.</p>
<p><img src="https://img.itch.zone/aW1nLzU4NjI5NzUuanBn/original/HBClO8.jpg" loading="lazy"><br></p>
<p>At the start of the game, you will collaboratively build a Town out of several elements. You will draw two maps for the Town: one for the Town Then, and one for the Town Now.<br></p>
<p>You then create your characters and choose whether they left the Town and returned, or stayed throughout the period. You also highlight certain questions you want to explore through your characters and relationships. You will track this through a relationship map which you draw between the Towns.<br></p>
<p>Then you introduce and explore different aspects of the Town and play through different scenes to flesh out the Town and the characters, seeking to answer the different questions you have.</p>
<p><img src="https://img.itch.zone/aW1nLzU4NjI5NzgucG5n/original/m5ez%2FY.png" loading="lazy"><br></p>
<p>You can look to Town card prompts to add different aspects of the town, then highlight how the Town has changed by picking an aspect and showing its form in both the Town maps. Based on what you know of the Town and its history, you can pick questions to form the basis of scenes between various characters to explore the Town in more detail.</p>
<p>Once you've answered a few questions, you'll move to end the game, even if you have questions left unanswered, as time passes on for the inhabitants of the Town.<br></p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDY2NTI5LzU4NjE5NjcucG5n/original/E9bxo3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY2NTI5LzU4NjE5NjgucG5n/original/leMdod.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY2NTI5LzU4NjE5NzAucG5n/original/sRsnLv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY2NTI5LzU4NjE5NjkucG5n/original/h1vvFl.png]]
<iframe width="560" height="315" src="https://www.youtube.com/embed/MNZamFj1Pmk" frameborder="0" allowfullscreen=""></iframe>
<p>"An Oath in Kind" is a Kinetic Novel about a dethroned demon queen and the one and only knight who remained loyal after her fall. <br></p>
<p>When Claire finds her queen bleeding across the floor of a forest hollow, she swears to herself that she <em>will</em> fulfill her oath to see Galena to safety... even if Galena would have rather been left there in the mud. </p>
<h2> Features </h2>
<ul><li>A 10 chapter Gay Roadtrip Romance</li><li>Bed-Sharing</li><li>Wound-Tending</li><li>Dramatic Confessions</li><li>Clumsy Lesbianism</li><li>Fantastical setting</li><li>Tall Buff Orc Knight Lady</li><li>Chronicaly Flirtatious and Depressed Demon Queen</li><li>A Real Horse</li><li>Real Horse Sounds</li><li>And More!</li></ul>
<p>Character art by <a href="https://twitter.com/zeecoshow" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Zee Coshow</a>!</p>
<p>Game content warnings: So there's this one part where there's an arrow they have to remove from a wound and the sound effects for that are kind of intense.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/MNZamFj1Pmk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzMwMTUwLzQwNTgwNDkuanBn/original/Pj1dwm.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMwMTUwLzQwNTgwNTAuanBn/original/b0spNg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMwMTUwLzQwNTgwNTEuanBn/original/VQZwpa.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMwMTUwLzQwNTgwNTUuanBn/original/vGRTmp.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMwMTUwLzQwNTgwNTYuanBn/original/zK7obs.jpg]]
<p>Be a frog mom!</p>
<p>Play with your frogs in the nest mode. Name them, give them outfits, and let them play with the toys they found!<br></p>
<p>Protect your frogs in The Maze! With 1 or 2 players on keyboard, or a bunch of players on gamepad, smack away the wasps while your frogs eat flies. Don't let the wasps get to them!</p>
<p>- graphic design, game design, and code by Celeste "SodaPOP" Plank</p>
<p>- music by Grant Binkley and Carlos Najera<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/egJ-H5FgGug" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODU2MDMwLzQ4MDI0NjQucG5n/original/a%2BUZZS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODU2MDMwLzQ4MDI0NTkucG5n/original/vAlPgo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODU2MDMwLzQ4MDI0NjYucG5n/original/AvP7ev.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODU2MDMwLzQ4MDI0NjcucG5n/original/6ZuM28.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODU2MDMwLzQ4MDI0NjEucG5n/original/fixu%2Bg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODU2MDMwLzQ4MDI0NjAucG5n/original/37LNHw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODU2MDMwLzQ4MDI0NjUucG5n/original/t8hqpe.png]]
<p></p>
<p>PHYSICAL COPIES AVAILABLE IN APRIL!</p>
<h2>What is Anamnesis?</h2>
<p>Anamnesis is a 24-page solo journaling RPG about self-discovery, reflection, and identity.</p>
<p>You play as an individual who has woken up with<strong> memory loss</strong>. You do not remember who you are, where you are, or what you care about. As you draw <strong>tarot cards</strong>, you fill the blank spaces of your <strong>past</strong> and learn more about your <strong>present</strong>.<br></p>
<p>All that is needed to play is a <strong>deck of tarot cards</strong> and a way to record your thoughts.</p>
<p>Included is:</p>
<ul><li>A PDF copy of Anamnesis (spreads & pages)</li><li>A Designer's Commentary version of Anamnesis</li><li>An audiobook of Anamnesis, narrated by the author</li></ul>
<p><a href="https://open.spotify.com/playlist/1f0l9l3wyBpTWnwnSpEy2a?si=riOPD8ycSAmovJ6oohRhSw" target="_blank" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">Click here for a Spotify playlist of background music for Anamnesis.</a><br></p>
<p><br></p>
<h2>Praise for Anamnesis</h2>
<p>"Anamnesis sent me down an eye-opening rabbit hole as far as what a TTRPG could be. Tender, personal, thought-provoking, moving, terrifying, raw."</p>
<p><em>- <strong>Shawn Drake, designer of HEDGE and Court of Blades</strong></em></p>
<p><em></em></p>
<p><em>"As an author, I love the potential of Anamnesis to help me generate random fictional scenarios. As I played, it became obvious that the game could also be used for self-reflection. Samantha has created a unique, powerful experience - I absolutely recommend Anamnesis for everyone who loves stories."</em></p>
<p><strong><em>- Tanya Schofield, author of the Melody's Song trilogy</em></strong></p>
<p><strong></strong></p>
<p><em><em>"Anamnesis invites you to sway and stumble through a journey of Proustian discoveries. Dwelling in the quiet connections between loss, discovery, and renewal, the game guides you through the creation of a world that can bloom and welcome, overwhelm and frighten, asking with a quiet persistence: Who are you?"</em></em></p>
<p><em><strong>- Sean Patrick Cain, designer of Long Haul 1983</strong></em></p>
<p><br></p>
<h2>Interviews and Actual Plays</h2>
<p><a href="https://pod.link/planetarcana/episode/2d8162178f1a4e56921c3cb54dddcece" rel="nofollow noopener" referrerpolicy="origin">Planet Arcana</a> - Full actual play of Anamnesis, modified for 2-players.</p>
<p><a href="https://pod.link/planetarcana/episode/2d8162178f1a4e56921c3cb54dddcece" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://pbcdn1.podbean.com/imglogo/ep-logo/pbblog11649628/Podbean_Logo_FINAL_4mf3dq.jpg" alt="Planet Arcana" title="Planet Arcana" loading="lazy"></a><span></span></p>
<p><a href="https://anchor.fm/thelostbay" target="_blank" rel="nofollow noopener" referrerpolicy="origin">The Lost Bay Podcast</a> - Interview about the design process behind Anamnesis</p>
<div class=""><iframe width="500" height="281" src="https://www.youtube.com/embed/wwxJjRRck5M" frameborder="0" allowfullscreen=""></iframe></div>
<p><a href="https://www.stitcher.com/show/yes-indied-pod/episode/samantha-leigh-discusses-anamnesis-88110275" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Yes Indie'd</a> - Interview about Anamnesis and other work in the TTRPG world</p>
<p><a href="https://www.stitcher.com/show/yes-indied-pod/episode/samantha-leigh-discusses-anamnesis-88110275" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://i0.wp.com/www.yesindiedpod.com/wp-content/uploads/2020/06/Yes_Indied_Logo_1502x1502.png?fit=1501%2C1501&ssl=1" alt="Interviews with indie tabletop roleplaying games creators - Yes Indie'd Pod" title="Interviews with indie tabletop roleplaying games creators - Yes Indie'd Pod" loading="lazy"></a><span></span></p>
<p><a href="https://www.youtube.com/watch?v=LP4uvCw48bw" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Draw Your Dice</a> - Interview about the TTRPG scene and a playthrough of Act 1\</p>
<p></p>
<div class=""><iframe width="500" height="281" src="//www.youtube.com/embed/LP4uvCw48bw" frameborder="0" allowfullscreen=""></iframe></div>
<p><a href="https://www.youtube.com/channel/UCJuq7Klg3_dbBKThC6KcbDw" target="_blank" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">Midgardia RPG</a> - Interview about Itchfunding with a demo of the game<br></p>
<p></p>
<div class=""><iframe width="500" height="281" src="//www.youtube.com/embed/biyN2N0Ym2E" frameborder="0" allowfullscreen=""></iframe></div>
<h4></h4>
<p>Anamnesis was successfully Itchfunded, which allowed the game to have an artist, editor, and layout artist. Thank you to everyone who helped make this game possible!</p>
<p><br></p>
<p>Anamnesis was also <a href="https://www.kickstarter.com/projects/samanthaleigh/anamnesis-a-tarot-game" target="_blank" rel="nofollow noopener" referrerpolicy="origin">successfully Kickstarted</a> for a print run. Print copies coming in 2022! Thank you to everyone who backed this project.</p>
<p><br></p>
<p><strong>Purchasing Anamnesis for $10 will also fund a community copy.</strong></p>
<p></p>
<p><a href="https://www.redbubble.com/people/viaphonized/explore?asc=u&page=1&sortOrder=recent" target="_blank" rel="nofollow noopener" referrerpolicy="origin">If you like the art from Anamnesis, merch is available at Victor Winter's store</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/wwxJjRRck5M" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTgyMTE3LzY0Mzc5OTEucG5n/original/VJLLrB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgyMTE3LzY0Mzc5NzEucG5n/original/foV4WZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgyMTE3LzY0Mzc5NzIucG5n/original/C0t3L%2F.png]]
<h3>What is <em>Anamnesis</em>?</h3>
<p><strong><em>Anamnesis</em></strong> is a solo journaling RPG about self-discovery, reflection, and identity. You play as an individual who has woken up with<strong> memory loss</strong>. You do not remember who you are, where you are, or what you care about. As you draw <strong>tarot cards</strong>, you fill the blank spaces of your <strong>past</strong> and learn more about your <strong>present</strong>.<br></p>
<p>Inspirations include <em><a href="https://loottheroom.itch.io/wretched" target="_blank">The Wretched</a></em> by Chris Bissette and <em><a href="https://presspotgames.itch.io/the-portal-at-hill-house" target="_blank">The Portal at Hill House</a></em> by Travis Hill and Lindi Farris-Hill.</p>
<p>All that is needed to play is a <strong>deck of tarot cards</strong> and a <strong>journaling method</strong>. The game is 10 pages long.</p>
<p><strong>This is the beta version of the game.</strong> The text is complete, but due to successful crowdfunding there will be a new version with edits, original art, and a new layout. <strong>Everyone who purchases the beta version will receive the updated version for free</strong>.</p><p><br></p>
<p><a href="https://open.spotify.com/playlist/1f0l9l3wyBpTWnwnSpEy2a?si=riOPD8ycSAmovJ6oohRhSw" target="_blank" rel="nofollow noopener">Click here for a Spotify playlist of background music for Anamnesis.</a></p>
<p><br></p>
<p>If you'd like to learn more about Anamnesis and watch a demo of the game, check out my interview with Garm at <a href="https://www.youtube.com/channel/UCJuq7Klg3_dbBKThC6KcbDw" target="_blank" rel="nofollow noopener">Midgardia RPG</a>:</p>
<div class=""><iframe width="500" height="281" src="https://www.youtube.com/embed/biyN2N0Ym2E" frameborder="0" allowfullscreen=""></iframe></div>
<h4></h4>
<p>This game was successfully Itchfunded. <a href="https://itchfunding.games/#" target="_blank" rel="nofollow noopener">You can find a list of other Itchfunding projects here.</a> This list was put together by <a href="https://twitter.com/Keganexe" target="_blank" rel="nofollow noopener">@Keganexe</a>.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/biyN2N0Ym2E" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTgyMTE3LzU1ODM3NjQuanBn/original/K3CqZG.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgyMTE3LzU1ODM3NjYuanBn/original/Olca0Z.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgyMTE3LzU1ODM3NjguanBn/original/7SQLot.jpg]]
<p>You've role-played as a cyberpunk, a steampunk, or a dungeonpunk, but have you played-</p>
<h3>An Actual Punk?</h3>
<p><em>Anarchopunk 2020</em> tells the story of our dark present. You're a musically-minded anarchist in a band, working to sabotage the abusive systems that infest our societies. You'll need to engage in direct action, concerts, and break the law to break the cycle of oppression, all to the tune of the purest 1990s edginess I could muster. Will you break the chains holding us all back, or will you fall, crushed by a merciless authority?</p>
<h3>Fuck that!</h3>
<p><em>Anarchopunk 2020 </em>features a innovative system where anarchists don't obey the rules—rules are inflicted on them by the system! Your punk's mechanics are defined <em>in-game</em>, as the system tries to label you, and by rejecting or accepting those labels, you define your own identity! But be careful—if you let the system define you, it'll own you!</p>
<p>But you've got an edge, you're powered by punk! Play your favorite songs to gain an edge over the system during the game, and play out your music video rebellion!</p>
<h3>Too soon?! Hell no! Not soon enough!</h3>
<p>Generate heat as you struggle against the system, then turn your disobedience into protest and revolt! Pregenerated cards in PDF or PNG provide easy reference for game mechanics, and deck files and guidelines are included for use to with <a href="https://store.steampowered.com/app/286160/Tabletop_Simulator/" rel="nofollow noopener">Tabletop Simulator</a> for safe social distancing. And it's cross-compatible with <em><a href="https://arbco.itch.io/skatepunk">Skatepunk: OPUSR</a></em> if you want to ride the revolution!</p>
<p>Pay what you want (or nab it for free) and share it with your friends! Share it with your enemies! E-mail it to strangers! <em>Anarchopunk 2020</em> is licensed to you as Creative Commons (<a href="https://creativecommons.org/licenses/by-nd/3.0/legalcode" rel="nofollow noopener">CC-BY ND</a>)!</p>
<p>What are you waiting for? <strong>Rise the fuck up, and do it loud!</strong></p>
<h3>Features:</h3>
<ul><li>9 systems and 9 different chains of oppression to break!</li><li>27 labels to throw on some punks!</li><li>Infinite punks, infinite songs, and infinite revolutions!</li></ul>
<p><strong>25 pages | 36 cards | PDF, PNG, and Tabletop Sim files included!</strong></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzcyNDIxLzQzMjI1OTQucG5n/original/19ajr%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzcyNDIxLzQzMjI1OTMucG5n/original/Cfit6l.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzcyNDIxLzQzMjMyNTQucG5n/original/MOv%2BRj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzcyNDIxLzQzMjMyNjAucG5n/original/U5WNXg.png]]
<p>You've role-played as a cyberpunk, a steampunk, or a dungeonpunk, but have you played-</p>
<h3>An Actual Punk?</h3>
<p><em>Anarchopunk 2020</em> tells the story of our dark present. You're a musically-minded anarchist in a band, working to sabotage the abusive systems that infest our societies. You'll need to engage in direct action, concerts, and break the law to break the cycle of oppression, all to the tune of the purest 1990s edginess I could muster. Will you break the chains holding us all back, or will you fall, crushed by a merciless authority?</p>
<h3>Fuck that!</h3>
<p><em>Anarchopunk 2020 </em>features a innovative system where anarchists don't obey the rules—rules are inflicted on them by the system! Your punk's mechanics are defined <em>in-game</em>, as the system tries to label you, and by rejecting or accepting those labels, you define your own identity! But be careful—if you let the system define you, it'll own you!</p>
<p>But you've got an edge, you're powered by punk! Play your favorite songs to gain an edge over the system during the game, and play out your music video rebellion!</p>
<h3>Too soon?! Hell no! Not soon enough!</h3>
<p>Generate heat as you struggle against the system, then turn your disobedience into protest and revolt! Pregenerated cards in PDF or PNG provide easy reference for game mechanics, and deck files and guidelines are included for use to with <a href="https://store.steampowered.com/app/286160/Tabletop_Simulator/" rel="nofollow noopener" referrerpolicy="origin">Tabletop Simulator</a> for safe social distancing. And it's cross-compatible with <em><a href="https://arbco.itch.io/skatepunk">Skatepunk: OPUSR</a></em> if you want to ride the revolution!</p>
<p>Pay what you want (or nab it for free) and share it with your friends! Share it with your enemies! E-mail it to strangers! <em>Anarchopunk 2020</em> is licensed to you as Creative Commons (<a href="https://creativecommons.org/licenses/by-nd/3.0/legalcode" rel="nofollow noopener" referrerpolicy="origin">CC-BY ND</a>)!</p>
<p>What are you waiting for? <strong>Rise the fuck up, and do it loud!</strong></p>
<h3>Features:</h3>
<ul><li>9 systems and 9 different chains of oppression to break!</li><li>27 labels to throw on some punks!</li><li>Infinite punks, infinite songs, and infinite revolutions!</li></ul>
<p><strong>25 pages | 36 cards | PDF, PNG, and Tabletop Sim files included!</strong></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzcyNDIxLzQzMjI1OTQucG5n/original/19ajr%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzcyNDIxLzQzMjI1OTMucG5n/original/Cfit6l.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzcyNDIxLzQzMjMyNTQucG5n/original/MOv%2BRj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzcyNDIxLzQzMjMyNjAucG5n/original/U5WNXg.png]]
<p>Pursued through the ruined streets of Los Angeles, harried by a roving Kill Gang, perhaps it was simple survival instinct that drove you to seek shelter. But perhaps it was Fate which drove you to seek shelter in the offices of Wayfarer Inc. In their subterranean laboratories, you discover a machine which opens up a portal to another world. Wayfarer had just had enough time to send one expedition thought the gate before they had evacuated.<br><br>Seeking escape from the Kill Gang beating down the doors, you activate the device, open the portal, and step through...<br><br>You are greeted by a lush and dangerous world of verdant forest and acid lakes, rocky crags and networks of caves. Up on a high plateau, you see a geodesic dome shimmering under a pink sky. Perhaps if you can reach it, you may find the first expedition... or at least find out what became of them.<br><br><strong>And All Would Cry Beware</strong> is a old-school-style fast-paced FPS with a Metroidvania structure. Explore a connected world, discover what became of the Lost Expedition. Find new guns which will allow you to reach new areas. Weave through enemy projectiles and take on fearsome bosses.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/PPgQSq6i6p4" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDQxOTI4LzIyMjM4NTQuanBn/original/%2Bg3Jxd.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQxOTI4LzIyMjM4NTAuanBn/original/xGS8Ns.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQxOTI4LzIyMjM4NTIuanBn/original/sFB%2BmL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQxOTI4LzIyMjM4NTEuanBn/original/D3hYM%2F.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQxOTI4LzIyMjM4NDguanBn/original/5t6x5T.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQxOTI4LzIyMjM4NDkuanBn/original/Cl9Tw0.jpg]]
<<list-links "[tag[Android]sort[title]]">>
<p><strong>Anime RPG Tile Pack [PIXEL OF LIFE]</strong></p>
<p>3/4 base modern day anime themed<br></p>
<p>It currently includes:</p>
<p>Volume 1 - School</p>
<ul><li><strong>Spritesheets</strong>: Students (male, female, each 10 hairstyles, alt on bike), Teachers (male, female)</li><li><strong>Tileset</strong>: School [8 Building styles, Interior, Gym, Pool, Running Track]</li></ul>
<p>Available for personal and commercial use and modification, just don't re-sell it or any derivative work from it.</p>
<p>Featured in:<br><a href="https://waltoriouswritesaboutgames.com/2020/09/30/scratching-that-itch-anime-rpg-tile-pack-vol-1-school-pixel-of-life/" rel="nofollow noopener" referrerpolicy="origin">https://waltoriouswritesaboutgames.com/2020/09/30/scratching-that-itch-anime-rpg...<br></a><a href="https://waltoriouswritesaboutgames.com/2020/09/30/scratching-that-itch-anime-rpg-tile-pack-vol-1-school-pixel-of-life/" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">https://danidre.itch.io/miscenagain</a><br></p><p><a href="https://waltoriouswritesaboutgames.com/2020/09/30/scratching-that-itch-anime-rpg-tile-pack-vol-1-school-pixel-of-life/" rel="nofollow noopener" referrerpolicy="origin">https://edgus.itch.io/somnischool</a></p><p><a href="https://ahndhi.itch.io/banality-mini87" style="font-size: inherit">https://ahndhi.itch.io/banality-mini87</a></p>
<p>Send me your projects with these, I would love to check them up!</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTM3MTAxLzM1MDczMzkucG5n/original/cnEwwP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM3MTAxLzM1MDczMzYucG5n/original/DcqJgK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM3MTAxLzM5NDM5OTQucG5n/original/c7SFcq.png]]
<ul><li><strong>Downloading this game from the bundle? Follow me to stay up to date on my latest adventure games!</strong> (Like the award-nominated sequel, <a href="https://sean-han-tani.itch.io/anodyne-2">Anodyne 2!</a>)</li></ul>
<p><strong>(Content warnings at bottom)</strong><br></p>
<p><em>Explore the wondrous dream world of the human Young.
</em><em></em><br></p>
<p><em>Anodyne is a unique Zelda-like game, influenced by games such as Yume Nikki and Link's Awakening. In Anodyne, you'll visit areas urban, natural, and bizarre, fighting your way through dungeons and areas in Young's subconscious.</em></p>
<ul><li>Join our <a href="https://www.anodynegame.com" rel="nofollow noopener" referrerpolicy="origin">mailing list</a> for future game updates! </li><li>Join our <a href="http://discord.gg/analgesic" rel="nofollow noopener" referrerpolicy="origin">Discord community</a>!</li><li>Buy the sequel, Anodyne 2: Return to Dust on <a href="https://store.steampowered.com/app/877810/Anodyne_2_Return_to_Dust/" rel="nofollow noopener" referrerpolicy="origin">Steam</a> ! or get it on <a href="https://han-tani.itch.io/anodyne-2">itch</a>.</li><li>Follow the creators on Twitter, <a href="https://twitter.com/han_tani" rel="nofollow noopener" referrerpolicy="origin">Melos</a> and <a href="https://twitter.com/even_kei" rel="nofollow noopener" referrerpolicy="origin">Marina</a>!</li></ul>
<p>Originally released in 2013 by Marina Kittaka and Melos Han-Tani. Buy the OST at <a href="https://htch.bandcamp.com/album/anodyne" rel="nofollow noopener" referrerpolicy="origin">Melos's bandcamp.</a> <br></p>
<p>Check out our 2016 platformer adventure game, <a href="https://han-tani.itch.io/even-the-ocean">Even the Ocean</a>!<br></p>
<p>-Anodyne features Simplified Chinese, Japanese, Korean, Brazilian-Portugese and Spanish language options<em>. <br></em></p>
<p><strong>Reception</strong></p>
<p><em>"Scenic water stretches and skyward spangles decorate idyllic countryside villages and moody, rain-drizzled night scenes. This is another one of those games I've flicked through the screenshots as if it were a global travel book outlining places you should visit before you die." - Chris Priestman, Indie Statik</em></p>
<p><em>"The game's sound design is the strongest facilitator of Anodyne's sense of dread and unease; the ambience and music give off an air of suspicion and danger, with ugly chords and disquieting, unnatural-sounding synthetic pings. It all adds up to a game where you're not sure who to trust, and you can't be sure of what's real." - Sam Prell, Penny Arcade Report</em><em><br></em><br></p>
<p><strong>Please Note</strong></p>
<ul><li>The Mac version has flickering on fullscreen on some version of Mac OSX. Please play in windowed mode.</li><li>Linux: Anodyne does not have an official Linux version, buy at your own risk - This is unsupported, a very old (but complete) version from 2013 or so. I cannot help you with any bugs for this version. You can try to get the executable working, or you can play the standalone SWF.</li></ul>
<p><br></p>
<p>Content Warnings (Light spoilers)</p>
<ul><li>Low-res pixel art (like in the style of the screenshots of): Suicide by hanging, mild horror, murder by blunt objects, dead bodies, stabbing, blood stains, mentions of sex, unexpected killing of an NPC. Rare strong language. Note this isn't representative of the majority of the game, but it is unavoidable.</li></ul>
<p>Content Warnings (Spoilers)</p>
<ul><li>Early on, if you try to talk to a fisherman, when trying to talk, you will unexpectedly hit them into the ocean and it turns the water red. They're implied to die.</li><li>In the late-game black/white suburb area: suicide by hanging, murder by blunt objects, stabbing, blood stains, dead bodies, mild horror</li><li>In the late-game 8-bit pixel art maze: blood stains, dead bodies</li><li>In the late-game circus area: mentions of suicide, suicide by falling into a pit, dead bodies, blood stains</li><li>In the very-late-game golden garden area: mentions of sex</li><li>Throughout: rare strong language</li></ul>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/OjWRU5toicQ" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTc3ODIvNTQxMTQwLmdpZg==/original/gsLLCI.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc3ODIvNTQxMTQyLmdpZg==/original/DXIeJD.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc3ODIvNTQxMDI0LnBuZw==/original/y1WkpD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc3ODIvNTQxMDIzLnBuZw==/original/9RYtxM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc3ODIvNTQxMDI1LnBuZw==/original/ovbzq%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc3ODIvNTQxMDIyLnBuZw==/original/Lrol9z.png]]
<p>Anomaly is a Tarot based gmless storytelling game about a sinister organization investigating a supernatural anomaly. </p>
<p>Anomaly works best with 2-5 players, and games take between two and four hours.<br></p>
<p>Players define the nature of the organization, the team of researchers they have sent, the anomaly, and the setting it's found itself in, then develop the story of the investigation by drawing Tarot cards and answering associated questions. </p>
<p><br></p>
<p>Mechanics inspired by The Quiet Year by Avery Alder.</p>
<p><br></p>
<p>Genre Touchstones are Magnus Archives, SCP foundation, Warehouse 13, and the Concern from Friends at the Table.</p>
<p>Current build is version 12.<br></p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1nLzIyODgzMDgucG5n/original/mrVViQ.png]]
<p><strong>Another Lost Phone is a game about exploring the social life of a young woman whose phone you have just found.</strong><br></p>
<p>This game is designed as a narrative investigation where you must piece together elements from the different applications, messages and pictures to progress. Scrolling through the phone’s content, you will find out everything about Laura: her friendships, her professional life and the events that led to her mysterious disappearance and the loss of this phone.</p>
<p><strong>Features :</strong></p>
<ul><li>Combine your findings from the phone’s apps, messages and photo galleries to uncover the mystery surrounding Laura’s disappearance.</li><li>Delve into the professional life, relationships & social habits of a young adult in the digital age. Experience a relatable story which helps build empathy with the characters, allowing to explore difficult topics and social issues.</li><li>Act as yourself in a game that bridges the gap between reality and fiction. If you close the app but still think about the game, have you truly stopped playing?</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/FJbnzvzsVXM" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTY1MDMxLzgxMDc0Ny5wbmc=/original/3aBTk5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY1MDMxLzgxMDc0OS5wbmc=/original/pD6N9o.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY1MDMxLzgxMDc1MC5wbmc=/original/zvTm5V.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY1MDMxLzgxMDc0Ni5wbmc=/original/LOZGjQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY1MDMxLzgxMDc0OC5wbmc=/original/ESKTXC.png]]
<p>Now available on Steam! Every itch.io purchase comes with a Steam key.<br><br>An indie platform game about keys, running, jumping, doors and nonsense.</p>
<p>Another Perspective follows the adventure of someone who is looking for something that they can't remember. Then they work out they can warp themselves into other bodies and things get a bit confusing.</p>
<p>Check out the official launch page and trailers!</p>
<p><a href="http://shaunspalding.co.uk/AnotherPerspective/" rel="nofollow noopener" referrerpolicy="origin">http://shaunspalding.co.uk/AnotherPerspective/</a> </p>
<p>Any technical issues with the game please do contact me at shaun.spalding@gmail.com and I will do my best to help out. I recommend if you don't have a fairly modern machine to run the game <em>without</em> lighting enabled. It's a big performance killer and the game should still look great without it!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/nj99ww7nMZA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDIzLzE4NzEucG5n/original/S6omr0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDIzLzE4NzIucG5n/original/mMyNBP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDIzLzE4NzcucG5n/original/4Ey1lY.png]]
<p>Um zodíaco extraordinário atravessa o firmamento da Vila Itororó.
</p>
<p>Em 2011, após anos de disputa, o governo de São Paulo removeu as últimas famílias do lugar. A Vila havia sido expropriada para se tornar um <a href="http://vilaitororo.org.br/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">centro cultural</a>. Ficaram as estátuas de cimento e as construções de arquitetura exótica, vazias de gente, na condição de <a href="https://pt.wikipedia.org/wiki/Vila_Itoror%C3%B3" target="_blank" rel="nofollow noopener" referrerpolicy="origin">patrimônio tombado</a>.
</p>
<p>Mas ainda paira sobre a Vila uma impressão de eventos que não cabem nesse acervo. Os objetos de memória dos antigos moradores contam outras histórias. <em>Antigas Constelações</em> evoca esse universo a partir de depoimentos e <a href="https://sketchfab.com/menotti/collections/vila-itororo" target="_blank" rel="nofollow noopener" referrerpolicy="origin">réplicas digitais</a>, reanimados numa experiência de realidade virtual pelos céus acima da instituição. <br></p>
<p class="text-center">===</p>
<p>Este documentário executável faz parte de uma pesquisa sobre interfaces críticas com nosso patrimônio material. Aqui, está em questão o papel dos processos de mediação tecnológica na produção de monumentos e na institucionalização do realismo histórico.</p>
<p>Um projeto de Gabriel Menotti iniciado durante a <a href="https://www.goethe.de/ins/br/pt/kul/sup/gnv/gnv2017/arqueologia-viva.html" target="_blank" rel="nofollow noopener" referrerpolicy="origin">residência Goethe na Vila </a>. Produção: Goethe Institute e Ventania. Assistência de Produção: Francesca Tedeschi. Depoimentos: Maria Aparecida (bonequinho), Camila (vestido), Iara (mesinha), Alessandro (pica-pau), Michael (snoopy), Valeska (mônica), Kauã (sapato), Elaine (vasinho) e Isamar (quadro). Trilha: <a href="http://dig.ccmixter.org/files/doxent/48369" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Blue Medication (Ft: Javolenus, Martijn de Boer)</a> (cc-by-nc 3.0) Doxent Zsigmond. Usa os pacotes <a href="https://github.com/keijiro/Pcx" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Pcx</a> e <a href="https://github.com/keijiro/Reaktion" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Reaktion</a> de Keijiro Takahashi. Agradecimentos: Instituto Pedra, Concrejato, Fablab da Vila e Graziela Kunsch.<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzA1NzIxLzE1MDA4MTYucG5n/original/f8mqw7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA1NzIxLzE1MDEzNzAucG5n/original/TNAKCd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA1NzIxLzE1MDA4MTUucG5n/original/CTZch2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA1NzIxLzE1MDEzNzMucG5n/original/7t1W3b.png]]
<p><strong class=""></strong><strong>Antistatic</strong> is a crisp, uncompromising indie platform fighter, built from the ground up in a custom engine. While simple for beginners, bluehexagon's design philosophy emphasizes depth and variety of play at all levels. Engage in local or online multiplayer matches as teams or as rivals.</p>
<p>Inside a crumbling digital world, atomic combatants carry out their programming in an endless series of battles over the remaining shielded landmarks.</p>
<p><strong>Online play</strong> — join one other player in online matches; online is still early in development, with much more in the works<br><strong>Familiar mechanics</strong> — shields, directional influence, lag-canceling, grabs, wavedashing, and more<br><strong>Full GameCube controller support</strong> — play with the iconic platform fighter controller using the official adapter<br><strong>6 characters</strong> — all with different play styles, and more coming over Early Access<br><strong>10 stage layouts</strong> — some staples, and some new<br></p>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/GtGyPGYhTdE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzUzMDQwLzUwODI1NjcuZ2lm/original/g2caPV.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUzMDQwLzUwODI1NjMuZ2lm/original/oKr9X9.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUzMDQwLzUwODI1NzguZ2lm/original/vqK2%2BQ.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUzMDQwLzUwODI1OTcuZ2lm/original/YsKeA2.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUzMDQwLzM1NzU3MTEucG5n/original/wHhJ2j.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUzMDQwLzQ4NDE4MTguanBn/original/v4S8Fe.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUzMDQwLzQ4NDE4MTkuanBn/original/j3lgSg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUzMDQwLzQ4NDE4MjAuanBn/original/DifqNb.jpg]]
<p><img src="https://img.itch.zone/aW1nLzE0NTAxMTcucG5n/original/V0S%2Fns.png" loading="lazy"></p>
<p>
<strong>Apple Quest Monsters DX!
</strong>
</p>
<p>
Over 100 pages containing 85 lovingly crafted sprites and descriptions of monsters, a map, photos and more; all from a non existant RPG, inspired by my childhood love of reading strategy guides for games I never played.
<a href="http://splendidland.tumblr.com/post/158825550984/splendidlands-guide-to-ghosts-row-1-ghoul" rel="nofollow noopener" referrerpolicy="origin">
</a>
</p>
<p> I spent a lot of time on each monster, so I hope you enjoy reading them!</p>
<p><a href="https://splendidland.bigcartel.com/product/apple-quest-monsters-dx" target="_blank" rel="nofollow noopener" referrerpolicy="origin">You can also buy this book in physical printed form! It would look lovely on your bookshelf (currently out of stock, sorry)!</a></p>
<p><a href="https://twitter.com/splendidland" rel="nofollow noopener" referrerpolicy="origin">[Twitter]</a><a href="https://www.patreon.com/splendidland" rel="nofollow noopener" referrerpolicy="origin">[Patreon]</a></p>
<p><img src="https://img.itch.zone/aW1nLzE0NTAxMTgucG5n/original/PBi3IF.png" loading="lazy"></p>
<p>This is an enhanced version of <a href="https://splendidland.itch.io/apple-quest-monsters">Apple Quest Monsters</a>, containing all the content from the physical DX release! 30 new monsters coming from the Desert, Tundra and the Moon, A small town full of NPCs, and a few photos of the monsters in the real world!<br></p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjk2ODk2LzE0NTAxODgucG5n/original/P0Alv8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2ODk2LzE0NTAxODcucG5n/original/CSHJWc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2ODk2LzE0NTAxNTQucG5n/original/X0WeUI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2ODk2LzE0NTAxNTcucG5n/original/M4jBEm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2ODk2LzE0NTAxNTkucG5n/original/wruOPT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2ODk2LzE0NTA0NTUucG5n/original/yFL0Pk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2ODk2LzE0NTAxNjIucG5n/original/zwqpdr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2ODk2LzE0NTAxNjEucG5n/original/7RADAj.png]]
<p>*PC port now available!<br><br>Arcus is a fantasy action game where failure is just the next step in the story. Aim and fire arrows at invading enemies. Swing your sword at any angle to get past their defenses. Spend resources between missions to buy special arrow types and increase your chances of success while you solve the mystery behind the new undead skeleton faction in a land where magic has been made taboo.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/Gq2nTFt5q_g" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzgyNjI1LzQzNzkxNjkucG5n/original/MfP8mm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyNjI1LzQzNzk0MzkucG5n/original/Xvz%2BIL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyNjI1LzQzNzkxNzAucG5n/original/TVS4O0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyNjI1LzQzOTExODcucG5n/original/as%2BkrY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyNjI1LzQzNzkxNzgucG5n/original/jLiugL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyNjI1LzQzNzkxNzcucG5n/original/EugP%2BE.png]]
<p>WELCOME TO<br></p>
<p>🌈✏️🎨𝙰𝚁𝚃 𝚂𝚀𝙾𝙾𝙻🎨✏️✨<br></p>
<p>U r a froshmin at 🅐 🅡 🅣 🅢 🅠 🅞 🅞 🅛. <br>Ur assignments are generated & graded by an A.I. </p>
<p>Can a video game make you more creative? <br>Can a video game make you a better artist? <br>Can you graduate from Art Sqool? Idk,,, that's on u!</p>
<p><em>It makes the idea of practicing making art seem both inviting and worthwhile but still an incredibly weird undertaking.</em><br>-Kotaku</p>
<p><em>The color choices are characteristically Glander: candy-like pinks and blues, everything effervescently joyful. Eagle-eyed art-nuts will love spotting references to the likes of Ed Ruscha and Yayoi Kusama, though we won’t give too many of those away.</em><br>-AIGA Eye on Design</p>
<p><em>Art Sqool will soon make all non-virtual art colleges redundant.<br></em>-Rock Paper Shotgun</p>
<p><strong>Features:<br></strong>🖼Explore the sprawling Art Sqool campus in 3D <br>🖌Find and collect cool brushes to help you in your artistic process like the wiggle brush, rainbow pencil and mop.<br>🎨Use your drawing pad to complete your assignments and progress through the game. <br>👁An A.I. art professor grades your work and hands out assignments<br>☁️Over 200 inspiring prompts to help u break thru any creative block. <br>⌚️4-6 hours of gameplay<br>✨Creative fulfillment basically guaranteed<br>🎧Soundtrack is a banger </p>
<p>A new project from <a href="http://glander.co/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Julian Glander</a><br>Coming to Mac & PC February 5th, 2k19 <br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzA1NjI3LzE1MDM0NjIuanBn/original/%2BW0JFr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA1NjI3LzE3ODQ1MjEuZ2lm/original/sfwLFv.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA1NjI3LzE3ODQ1MTkuZ2lm/original/OmaTo%2B.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA1NjI3LzE3ODQ1MjUuZ2lm/original/qj%2F8as.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA1NjI3LzE3ODQ1MjQuZ2lm/original/TN14HI.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA1NjI3LzE3ODQ1MjAuZ2lm/original/KsHn8x.gif]]
<p>Strike it rich with Glorium!</p>
<p><br></p>
<p><em>Asteroids, Inc.</em> is an idle narrative game where you'll take control of an asteroid mining company. Harvest the element Glorium from asteroids in order to make money, grow your business, and eventually change the world! All is not what it seems, however, and it's up to you to make the right decisions, especially since the asteroids are a finite resource ...<br></p>
<p><br></p>
<p><strong>Credits</strong><br></p>
<p>Aidan Andreasen ... Director / Designer</p>
<p>Andrew Gao ... Programmer</p>
<p>Ankie Pon ... Artist</p>
<p>Alec Graves ... Musician</p>
<p>Erin Overton ... Writing</p>
<p>Devanyn Alvarez ... Trailer Editor</p>
<p>Aidan Bacon ... Technical Advisor</p>
<p>ESRB Rating is purely stylistic. <em>Asteroids Inc.</em> is not high profile enough to be rated by the ESRB.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/BOrYFCfaxvY" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODQ4MTEzLzQ3NTQ2ODIucG5n/original/1w8V%2Bh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQ4MTEzLzQ3NTQ5MzQucG5n/original/qAUwjM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQ4MTEzLzQ3NTQ2ODAuanBn/original/tjA9nc.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODQ4MTEzLzQ3NTQ2ODEucG5n/original/IjsaD0.png]]
<p><strong>Astronomia</strong> is a spatial 3D puzzle game with a minimalist classic arcade art style.</p>
<ul><li>Guide the ball around each level to clear every <strong>fragment block</strong> and unlock the <strong>goal</strong>.</li><li>Bonk, sling, and warp your way around <strong>25 levels</strong>.</li><li>Missteps are easily undone with the ability to <strong>undo</strong> any number of your previous moves, or simply <strong>restart</strong> the level from the beginning.</li></ul>
<p>A fun brain-teaser for casual and hardcore puzzlers alike!</p>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/1346630/extras/steam_divider.gif?t=1592910966" style="border: 5px solid #a2009e" loading="lazy"></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/hVPeeKFrV7c" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjc4OTE5LzM3OTkyNzYucG5n/original/ZClS6M.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjc4OTE5LzM3OTkyODAucG5n/original/XTP%2FtO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjc4OTE5LzM3OTkyNzgucG5n/original/dpm5pp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjc4OTE5LzM3OTkyODEucG5n/original/Lmx3S%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjc4OTE5LzM3OTkyNzcucG5n/original/lcPeuH.png]]
<p><strong>Out now.<br></strong><strong>Coming to Steam! <a href="https://store.steampowered.com/app/1892400/Augma_II__Arc_I/" rel="nofollow noopener" referrerpolicy="origin">https://store.steampowered.com/app/1892400/Augma_II__Arc_I/</a><br></strong><strong><br></strong></p>
<p><strong>SYNOPSIS</strong></p>
<p>There was once a world devoid of any color, drowned out by the sound of howling winds and the sight of an ashen metropolis, now rotting within a God's terrible dream. While attempting to speak to a figure bathed in the color Gold, a colorless figure ultimately lost their head in such a futile attempt. <br></p>
<p>As the relentless passage of time sways the voices of the distant past, Shira Yamano finds himself in that ashen metropolis. Kirron, an endless valley of skyscrapers that pierce the sky, is home to where that once colorless figure would encounter various people that would bring the color back to his vision, and help him overcome his dangerous apathetic feelings. <br></p>
<p>However in the process of doing so, he accidentally involves himself within a string of events that raises more questions than answers. This is the first installment of the Augma series, where white shall be tarnished before all to see.</p>
<p><br></p>
<p><strong>FEATURES</strong></p>
<p>Augma II Arc I is a mystery sci-fi visual novel, imbued with heavy action and psychological elements, with a cast of unforgettable characters and gripping story. <br></p>
<p>Arc I's full release will be a beta version, as some parts of the presentation will be lacking compared to an eventual upgraded release combining Arc I and Arc II. <br></p>
<p>110k words. <br></p>
<p>Varied and well-composed soundtrack, all the way from metal to the sound of pianos drowning in the deep blue ocean. <br></p>
<p>Over 70 unique CGs, and over 200 total. <br></p>
<p>Filtered photographs for BGs to invoke a dreamlike feel as opposed to drawn BGs.<br></p>
<p>A linear storyline for those who want to sit back to.</p>
<p><br></p>
<p><strong>STAFF</strong></p>
<ul><li>Director and Scenario: Kamigigana</li><li>Art: Kamigigana, Bisoneet</li><li>Soundtrack: Strung</li><li>Programming/Proofreading: Aiyuu, Bisoneet, Centicen, Lyntier</li><li>Quality Assurance: Brimbel </li></ul>
<p><strong>How to Install </strong></p>
<p>Unzip and run. <br></p>
<p><br></p>
<p><strong>CONTENT NOTICES</strong></p>
<ul><li>Blood and Gore</li><li>Profanity</li></ul>
<p><strong>NOTICE<br></strong></p>
<p>While most BGs are directly from myself and people I know, some are not. If you happen to be the owner of one said photos, please contact me and I'll make arrangements to replace them immediately. <br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/dn06PSC1IgE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODg2NzAxLzY2NDY0MzQuanBn/original/FSukhQ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODg2NzAxLzY2NDY0MzUuanBn/original/1NLPoW.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODg2NzAxLzY2NDY0MzguanBn/original/Qs%2FMUZ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODg2NzAxLzY2NDY0MzYuanBn/original/VE60Hb.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODg2NzAxLzY2NDY0MzcuanBn/original/46L%2BRO.jpg]]
<p class="text-center"><em>one for sorrow, <br>two for mirth,</em><em><br>three for a funeral,<br>four for a birth...</em></p>
<p>you're well familiar with the saying. a nursery rhyme, a schoolyard chant. <em>count the birds</em>, the children tell each other. <em>they will be able to tell your future</em>.</p>
<p>it’s more complicated than that, of course. it’s not just the number of birds, but also their demeanor, their flight, their nests, their song. any number of elements must be considered.</p>
<p>at its core, however, the nursery rhyme holds truth – the birds do know many things.</p>
<p>consult the deck, traveler. let the birds help you divine your future.</p>
<p class="text-center"> 🕊<br></p>
<p><strong>augur</strong> is an open-ended oracle deck for one or more readers. in augur, participants interpret a flock of strange and wonderful birds (represented by a unique deck of cards) to tell a story, foresee an outcome, or play to find out what happens.</p>
<ul><li><strong>24 cards</strong>, each with its own distinct symbolism and intention</li><li><strong>3 unique suits</strong> that lend additional meaning to each card in the deck</li><li><strong>poetic, philosophical meditation</strong> on memory, circumstance, and future action</li><li><strong>8-10 minutes</strong> per solo read, or more with additional interpreters</li></ul>
<p>the <strong>demo</strong> (free to download) contains a .txt file of the basic instructions and a pdf containing 6 of the 24 cards.</p>
<p>the <strong>base game</strong> contains the instructions and the full 24-card deck in two versions: a print-and-play version, and individual files.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDEwNDkxLzIwNTQ5NjQucG5n/original/zm8tfn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDEwNDkxLzIwNTU0MjAucG5n/original/PUvdUx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDEwNDkxLzIwNTQ5NjUucG5n/original/JnEJmJ.png]]
<$list filter="[is[current]has:field[average_session]]">
''Average Session'': {{!!average_session}}
</$list>
<p>Aye Aye Captain is a game about crewing a ship on the high seas of the 1500 and 1600s. You'll have to manage a crew, provide them with consistent booty, rum, and fight off mutinies all while pillaging vessels of royal navies, other pirates, and trading companies. </p>
<p>7/17/2020 Version 1.0 is here! If you buy it on Itch.io you'll also receive a Steam Key!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/qsp6i0zmisk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTQ2MjI2LzM4MTMxMTEuanBn/original/nFM40v.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTQ2MjI2LzM4MTMxMTAuanBn/original/LRc3JQ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTQ2MjI2LzM4MTMxMTMuanBn/original/jB%2FUkA.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTQ2MjI2LzM4MTMxMTIuanBn/original/IiO0fo.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTQ2MjI2LzM4MTMxMDkuanBn/original/Z2CYrR.jpg]]
<p>They say that people go there when they're ready to die. They say Death himself is a patron. That's where the tavern gets its name. Azrael's Stop. Watering hole for the Angel of Death.<br></p>
<p>
But that's just rumour. Ceph doesn't trade in rumour. He just serves drinks. Except, of course, that every couple of weeks, someone dies at Azrael's Stop.
</p>
<p>
Azrael's Stop is an experimental fiction and music project, about life, death, and friendship. It is the story of a mystical tavern and how the people who go there develop over the course of a year: Ceph, the seventeen-year-old bartender who has seen all his loved ones die; Tom, the depressed old man, whom death will not take; Rye, who visits every day, though he died a year ago; Nael, the blind minstrel who saw war too young; Lona, the mysterious hunter of the dead; Trin, the girl who refuses to deal with her past; and the crow who watches over it all, cawing only when someone dies in Azrael's Stop.
</p>
<p>
Azrael's Stop is part of a larger storytelling project by Silverstring Media, Inc., and is best enjoyed accompanied by the Azrael's Stop Official Soundtrack, which includes music referenced in this story. To learn more, go to <u><a href="http://azraelsstop.com" rel="nofollow noopener" referrerpolicy="origin">http://azraelsstop.com</a></u></p>
<p>The ebook comes in .pdf, .epub, and .mobi formats.</p>
<p><strong>Purchase it for at least $9.99 and get the Azrael's Stop Official Soundtrack as well!</strong></p>
<p><strong>Or, complete your experience with Tales of the Stop, the sequel anthology of ten brand-new stories about Azrael's Stop, by paying $13.99!</strong></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/lHYZ9nXk6fs" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzY0NjgvMTU4ODA5LmpwZw==/original/8AlMdE.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY0NjgvMTU4ODEwLmpwZw==/original/iQwYxd.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY0NjgvMTU4ODExLnBuZw==/original/qyqwvr.png]]
<p>Baba Is You is an award-winning puzzle game where you can change the rules by which you play. In every level, the rules themselves are present as blocks you can interact with; by manipulating them, you can change how the level works and cause surprising, unexpected interactions! With some simple block-pushing you can turn yourself into a rock, turn patches of grass into dangerously hot obstacles, and even change the goal you need to reach to something entirely different.</p>
<p><img src="https://img.itch.zone/aW1nLzE4MzQwMDAucG5n/original/mkSL1U.png" loading="lazy"><br></p>
<p>You can find the OST on itch: <a href="https://hempuli.itch.io/baba-is-you-soundtrack">https://hempuli.itch.io/baba-is-you-soundtrack</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/U7MJljsoUSo" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzY2MzYzLzE4MzQwOTQucG5n/original/W6uJxi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY2MzYzLzE4MzQwOTEucG5n/original/S2Mj%2Bj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY2MzYzLzE4MzQwOTMucG5n/original/2%2Fzneg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY2MzYzLzE4MzQwOTIucG5n/original/LvLbes.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY2MzYzLzE4MzQwOTUucG5n/original/MkDvj6.png]]
<p><em>Close your eyes. When you open them, you find yourself lying in the dust in a vast deserted hall, clutching a journal which is empty, except for a title written on the cover- “Notes on The Unified Language from The Tower of Babel”.</em></p>
<p>Babel is a Wretched and Alone Journaling game based on Bruegel's painting of the Tower of Babel<em><strong> </strong></em>that uses a journal and recording device, block tower, deck of cards, letter tiles and a die to tell your story of self-discovery from within this legendary edifice. <br></p>
<p>Babel was originally conceived as part of <a href="https://laurieoconnel.itch.io/" target="_blank">Laurie O'Connel's</a> <a href="https://twitter.com/hashtag/PaintingsJam" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Painting Jam</a> <br><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODc2OTM1LzUwMTM4MzYuanBn/original/340SKq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODc2OTM1LzUwMTM4MzguanBn/original/H5I0fk.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODc2OTM1LzUwMTM4MzkuanBn/original/oR5QGs.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODc2OTM1LzQ5MzQ3MDIuanBn/original/MIn%2FKO.jpg]]
<p><img src="https://img.itch.zone/aW1nLzQ1NTk2MTcucG5n/original/wH1KKm.png" loading="lazy"><img src="https://img.itch.zone/aW1nLzQ1Njg4MDEucG5n/original/thEgKZ.png" loading="lazy"><br></p>
<p>An absurd workplace tragedy.</p>
<p>You hire a baby. What can go wrong?</p>
<p>Developed for my <a href="https://awaywardwriter.itch.io/absurd-games">thesis on absurd games.</a></p>
<p>Takes roughly 10 minutes to play.</p>
<p><br></p>
<p><a href="https://awaywardwriter.itch.io/">Check out my other games.</a></p>
<p><br></p>
<p>Baby made in <a href="http://www.makehumancommunity.org/" rel="nofollow noopener" referrerpolicy="origin">http://www.makehumancommunity.org/</a></p>
<p>Music by Kevin Macleod</p>
<p>Chicago Skyline photo by Petr Kratochvil</p>
<p><a href="https://linktr.ee/evgenimp" rel="nofollow noopener" referrerpolicy="origin">More about the author!</a></p>
<p><a href="https://ko-fi.com/K3K3722WI" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img height="36" style="border:0px; height:36px" src="https://cdn.ko-fi.com/cdn/kofi1.png?v=3" alt="Buy Me a Coffee at ko-fi.com" loading="lazy"></a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODA4MTAyLzQ1Mjk1NzgucG5n/original/WWSB%2FK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODA4MTAyLzQ1Mjk1ODIucG5n/original/gqcWO2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODA4MTAyLzQ1Mjk1ODMucG5n/original/jxlhYf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODA4MTAyLzQ1Mjk1ODQucG5n/original/7LDUC9.png]]
<p>Backspace Bouken is a Japanese-inspired old-school dungeon crawler with a fast-paced typing battle system and ridiculous storyline. Fight monsters by typing their dialogue as you progress through the game and climb the tower. Fast and accurate typing will be rewarded, and maybe you'll even become a better typer!<br></p>
<p><a href="https://rngpartygames.itch.io/backspace-bouken-demo">DEMO PAGE</a> | <a href="https://store.steampowered.com/app/1097170/Backspace_Bouken/" rel="nofollow noopener" referrerpolicy="origin">STEAM PAGE</a> </p>
<h4><a href="https://rngpartygames.bandcamp.com/album/backspace-bouken-original-soundtrack" rel="nofollow noopener" referrerpolicy="origin">SOUNDTRACK DOWNLOAD</a></h4>
<h4>Features</h4>
<ul><li>Fluid typing-based battle system that tells the story as you play.</li><li>Fight a wide variety of enemies and bosses with unique and compelling behaviors and twists.</li><li>Explore numerous floors of a tower in classic first-person dungeon crawling style.</li><li>Solve puzzles and collect passwords and information from your enemies to progress through the game.</li><li>Save NPCs from the tower in a collectathon fashion.</li><li>Get rewards for completing encounters and filling out your map.<br><br>Check out our upcoming Playdate game <a href="https://rngpartygames.itch.io/bloom">Bloom</a>!</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/vvQ3-nS1_14" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTI5OTYzLzI3NTQwMzguanBn/original/NJ4Z%2Bq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI5OTYzLzI3NTQwNDAuanBn/original/1d0Nei.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI5OTYzLzI3NTQwNDIuanBn/original/Cz3HIi.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI5OTYzLzI3NTQwMzcuanBn/original/%2FRltFm.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI5OTYzLzI3NTQwNDEuanBn/original/i%2BBPEy.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI5OTYzLzI3NTQwMzkuanBn/original/dXM60Q.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI5OTYzLzI3NTQwNDMuanBn/original/evv6Mn.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI5OTYzLzQ4NTEyODguanBn/original/w28A7s.jpg]]
<p>This is my first ever game so there may be some bugs but the game should be playable.</p>
<p>A simple block breaker game in the vein of Breakout or Arkanoid.</p>
<p><br></p>
<p>(Note: the debug version is mainly for testing purposes and contains a level skip and autoplay but was included for anyone who wants some cheats)</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTI5MDcwLzU5MTU3MDkucG5n/original/Umi%2FT2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI5MDcwLzU5Mzc3NTYucG5n/original/1Ye2QK.png]]
<p>Eric and Ryan get lost while camping with some friends. They stumble upon a creepy town filled with balloons. What could possibly go wrong?</p><p>Controls: Arrow keys move, hold shift to run, Escape to go to the menu and save screen.</p><p>Balloon party is a short adventure game featuring two unique branching paths. If you have any questions or feedback please hit me up at immortallen@gmail.com</p><p><br></p><p>UPDATE 1/14/2016</p><p>VERSION 1.2</p><p>Significant content has been added to one of the endings.</p><p>Miscellaneous bugs have been fixed. </p><p><br></p><p>If you find any errors or bugs please contact me. </p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzQyNDQvMzQzMjUyLnBuZw==/original/KNwfpX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQyNDQvMzQzMjQ4LnBuZw==/original/E8jRj2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQyNDQvMzQzMjQ5LnBuZw==/original/Tlhpne.png]]
<p>Welcome to Ballsy! I wanted a game which has players feeling 'weighty' without being sluggish. Passing is very responsive.</p>
<p>Play VS or co-op with friends with the local multiplayer options, or win the Ballsy! World Cup on your own!</p>
<p>Gamepad recommended but not required.<br></p>
<p>If this game is successful, I will make more Ballsy! games; the next one should feature a league mode, with player transfers and all that. I don't have the budget for it yet, so buying this game will support me making it a reality!</p>
<p>Also, very happy to hear what you like & dislike about this one, so make sure to comment if you have anything to share!</p>
<p>Changelog: 1.4b fixes some performance issues with the night mode<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/8vEX_hZrPnU" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjIzNjY4LzMzMjE1NTEucG5n/original/%2FcpzAf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjIzNjY4LzQ3ODQ3MTIucG5n/original/EXeRgJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjIzNjY4LzQ3ODQ3MjAucG5n/original/LL7bEG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjIzNjY4LzQ3ODQ3MTgucG5n/original/STJX5r.png]]
<p>Heroes are attacking the Bandit hideout and put a end of their sacking of nearby villages. Set of paper miniatures for tabletop games and rpg, great for early adventures, when heroes are tasked to face rogues and thieves. This set include 11 Paper miniatures:</p>
<p>4 Bandits with 2 color variations:</p>
<p>Bandit Rogue</p>
<p>Bandit Rangers</p>
<p>Bandit Leader</p>
<p>Bandit Barbarian</p>
<p>3 Heroes:</p>
<p>Human Fighter Captain</p>
<p>Hal-Elf Wizard<br></p>
<p>Dwarf Ranger</p>
<p>Any feedback, suggestions and issues feel free to leave a comment.</p>
<p>Thanks! =)</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTIzNzU0LzI3MjYxNTQuanBn/original/jJ%2FBUp.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIzNzU0LzI3MjYxNTIuanBn/original/UVXIuS.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIzNzU0LzI3MjYxNTMuanBn/original/D2V2af.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIzNzU0LzI3MjYxNTEuanBn/original/esBu%2F7.jpg]]
<p>Heroes are attacking the Bandit hideout and put a end of their sacking of nearby villages. Set of paper miniatures for tabletop games and rpg, great for early adventures, when heroes are tasked to face rogues and thieves. This set include 11 Paper miniatures:</p>
<p>4 Bandits with 2 color variations:</p>
<p>Bandit Rogue</p>
<p>Bandit Rangers</p>
<p>Bandit Leader</p>
<p>Bandit Barbarian</p>
<p>3 Heroes:</p>
<p>Human Fighter Captain</p>
<p>Hal-Elf Wizard<br></p>
<p>Dwarf Ranger</p>
<p>Any feedback, suggestions and issues feel free to leave a comment.</p>
<p>Thanks! =)</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTIzNzU0LzI3MjYxNTQuanBn/original/jJ%2FBUp.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIzNzU0LzI3MjYxNTIuanBn/original/UVXIuS.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIzNzU0LzI3MjYxNTMuanBn/original/D2V2af.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIzNzU0LzI3MjYxNTEuanBn/original/esBu%2F7.jpg]]
<p>Twenty-five games, thirty years, over eighty ports—whatever the number, there've been a heck of a lot of games based on<em> The </em><em>Simpsons</em>. The story of the animated sitcom that tried to make it in video games is a long and sordid tale, now collected here in the unauthorized retrospective for your reading pleasure.</p>
<p>Originally written in 2019-2020, <em>Bart vs. My Hopes & Dreams</em> is the culmination of nearly two decades of fan obsession by a man who wouldn't let <em>Simpsons</em> video games fumble gently into that good night. With detailed critiques from a longtime writer and game industry veteran, as well as collected insights from the original creators, this is the most complete look at every <em>Simpsons</em> video game ever made.</p>
<p>An early version of the book was previously available online, but this ebook edition is the definitive story with numerous revisions and improvements. I cannot quantify the amount of time, research, and hardware that went into writing this book, but I hope the pay-what-you-want price feels fair. Thank you for your support!</p>
<p><strong>Ebook details:</strong></p>
<ul><li>Coverage of 25 <em>Simpsons</em> video games from 1990 to 2012</li><li>EPUB, MOBI, and PDF<br>
</li><li>389 pages (PDF)</li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTY5MjYxLzU2NDIyMDYucG5n/original/aUzhga.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY5MjYxLzU2NDI0MTgucG5n/original/grsb%2Fq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY5MjYxLzU2NDIzMzEucG5n/original/fw%2F2Hp.png]]
<p><strong>BasketBelle</strong> is an experimental 2D basketball-based platformer. Each Chapter of the game uses the mechanics and idea of basketball in a different way. At one point you might be dribbling inside the intestines of a purple blob creature. At others, you're likely to be dunking above the clouds in front of the Parisian moon. <br><br>A dynamic soundtrack and unique cardboard visuals help tell the story of a sister who must be saved through the power of basketball.</p>
<ul><li>Dunk, dribble, and crossover through 8 Chapters spanning throughout the impromptu courts of Paris </li><li>Each Chapter takes the mechanics of basketball and applies them in different ways. Some chapters are more action, some are more puzzle. And then there are the strange chapters.</li><li>Music is tied directly to the gameplay, though it's all passively controlled. For example, every time you dribble, you hear a bass hit. Shoot the ball, and the percussion stops. </li><li>Visuals in the game are a unique mix of cardboard and color, every scene popping off the screen.</li><li>Included with the game! :D<ul><li>The BasketBelle EP: Full Soundtrack + Bonus Tracks (MP3) + Cover Art </li><li>BasketBelle sketchbook: Full-color PDF including sketches and liner notes</li><li>Browser version of BasketBelle (playable on Mac and Linux as well)</li><li>Access to Making Of Featurette! (11 min hosted video)</li></ul></li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/0_iGRUaYFLM" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjE2NTYwLzEwMjE4MTEucG5n/original/xkBhjK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2NTYwLzEwMjE4MTIucG5n/original/v8HdJc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2NTYwLzEwMjE4MTMucG5n/original/hu3j2M.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2NTYwLzEwMjE4MTQucG5n/original/ht0jbz.png]]
<p><em>Bat Lizard Bonanza</em> is an arcade shoot-em-up (or shmup) for the NES. It's inspired by games like <em>Gradius </em>and <em>Parodius</em>.</p>
<p>The settlers have been exploiting Irata’s natural resources for many solar cycles. The Wampus took back the mountains. The Wart Worms took back the mines. But now Lizzy the Bat Lizard must embark on a quest to end the Settler scourge once and for all, dauntless in the wind with the echoes of her ancestors at her back.</p>
<p><em>Bat Lizard Bonanza</em> features a rocking soundtrack, seven levels, and over 14 boss fights.</p>
<p><em>* * *</em></p>
<p><strong>Bat Lizard Bonanza </strong>is the <strong>third </strong>game in the MULEniverse series, which narratively extends the work of Danielle Bunten Berry's MULE economic simulator game.</p>
<p>The MULEniverse games include:</p>
<p>1. <a href="https://johnvanderhoef.itch.io/wampus" target="_blank">Wampus</a></p>
<p>2. <a href="https://johnvanderhoef.itch.io/wart-worm-wingding" target="_blank">Wart Worm Wingding</a></p>
<p>3. Bat Lizard Bonanza</p>
<p>4. <a href="https://johnvanderhoef.itch.io/leggite-luta-livre" target="_blank">Leggite Luta Livre</a></p>
<p>5. <a href="https://johnvanderhoef.itch.io/nemulesis" target="_blank">neMULEsis</a><br></p>
<p><a href="https://johnvanderhoef.itch.io/leggite-luta-livre-demo" target="_blank"></a></p>
<p>***<br></p>
<p>Controls</p>
<p>Directional Pad -- move in 8 directions</p>
<p>B -- standard projectile, the bat echo</p>
<p>A -- bat bomb (once upgraded via pickup)</p>
<p>Hold B and press A -- bat bomb 2 (once upgraded via pickup)</p>
<p>Once weapons have been fully upgraded, all subsequent weapon upgrade pickups become screen-clearing triggers -- BOOM!</p>
<p>***</p>
<p>FOR THE BEST EXPERIENCE: I recommend getting an original NES controller and a USB adapter for it. You can find one <a href="https://www.retrousb.com/product_info.php?cPath=21&products_id=158" rel="nofollow noopener" referrerpolicy="origin">here</a> or <a href="https://www.amazon.com/Tomee-NES-USB-Controller-Adapter-pc/dp/B00HM3QCN2/ref=sr_1_3?ie=UTF8&qid=1549047471&sr=8-3&keywords=NES+controller+usb+adapter" rel="nofollow noopener" referrerpolicy="origin">here</a>. You can also use any gamepad for a similar experience.</p>
<p>***</p>
<p>Bat Lizard Bonanza was made possible thanks to <a href="http://www.thenew8bitheroes.com/" rel="nofollow noopener" referrerpolicy="origin">NESMaker</a>, an engine developed to make NES development accessible.</p>
<p>In order to play Bat Lizard Bonanza, you'll need an NES emulator. I recommend <a href="http://www.fceux.com/web/home.html" rel="nofollow noopener" referrerpolicy="origin">FCEUX</a>. Many emulators do not have mapper 30 support, which is the mapper NESMaker uses for its games. </p>
<p>Once you have FCEUX downloaded, start it up and open the Bat_Lizard_Bonanza.nes ROM. The game should work fine.</p>
<p><strong>FOR MAC USERS:</strong> Download <a href="https://openemu.org/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">OpenEMU</a> for Mac. When you open the program, right click on the Nintendo (NES) category on the left hand sidebar and select "Default Core." Then select FCEU. </p>
<p>This game is also playable via the Everdrive and Powerpak, provided you have updated to Mapper 30 support. It's also playable via the NES Mini, again provided you have Mapper 30 support in your emulator of choice.</p>
<p>* * *</p>
<p>Bat Lizard Bonanza is part of the MULEniverse.<span></span></p>
<p>* * *</p>
<p>More from this developer: <a href="https://johnvanderhoef.itch.io/" target="_blank">https://johnvanderhoef.itch.io</a></p>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/Uq0ZhI6Xh-A" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzQxMDg4LzQyNjIyMjcucG5n/original/PY%2FKJB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQxMDg4LzQyNjIyMjgucG5n/original/%2FPG1Qf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQxMDg4LzQyNjIyMjYucG5n/original/WjGiRJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQxMDg4LzQyNjIyMzEucG5n/original/X5cmZg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQxMDg4LzQyNjIyMzAucG5n/original/WdZ6Bc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQxMDg4LzQyNjIyMjkucG5n/original/ORlhRb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQxMDg4LzQyNjIyMzIucG5n/original/Jwh6fL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQxMDg4LzQzMTcxODYuanBlZw==/original/YLntd4.jpeg]]
<p>*Crash* ...<em>That </em>was the sound of you landing face first in an abyss filled with monsters, traps, and eldritch secrets. But hey, it's ok barbarian, you are not alone: Pip, your best friend -and mysteriously luminous bat- is with you. And it's only by truly working together that you'll be able to solve the abyss' puzzles, fight off its hungry denizens, discover its true purpose and maybe—just maybe—make it out alive with the secrets of the primordials.<br></p>
<figure><img src="https://steamcdn-a.akamaihd.net/steam/apps/837460/extras/steam_crash_superoptim.gif?t=1602129150" alt="Intro" title="Intro" loading="lazy"><br></figure>
<h3>Reviews</h3>
<blockquote>“If you like Metroidvanias, you should play this game. If you don’t like Metroidvanias, you should still play this game.”</blockquote>
<blockquote>92/100 – <a href="https://steamcommunity.com/linkfilter/?url=https://cogconnected.com/review/batbarian-testament-primordials-review/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">COGconnected</a></blockquote>
<blockquote>“From the lushly drawn environments and detailed character sprites to the phenomenally atmospheric music that brings the game’s world to life, it’s a hell of an experience and easily one of my favorite indie games of 2020.”</blockquote>
<blockquote>4.5/5 – <a href="https://steamcommunity.com/linkfilter/?url=https://www.heypoorplayer.com/2020/10/28/batbarian-testament-of-the-primordials-review-switch/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">HeyPoorPlayer</a></blockquote>
<blockquote>“A wonderfully crafted Metroidvania that should have genre fans plenty excited. It's blending of combat, platforming, and puzzling keeps the gameplay fresh and varied throughout its entire 20-hour story.”</blockquote>
<blockquote>85/100 – <a href="https://steamcommunity.com/linkfilter/?url=https://www.pcinvasion.com/batbarian-testament-of-the-primordials-review/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">PC invasion</a></blockquote>
<p>
</p>
<p><img src="https://img.itch.zone/aW1nLzYxODc0NjQuZ2lm/original/TnkXfQ.gif" loading="lazy"><br></p>
<p><em>Change Pip's elemental aura to block bullets of the opposite element!</em><br></p>
<h3>Key Features</h3>
<ul><li>Gain new skills for your barbarian and elemental powers for Pip, the (magic) bat!</li><li>A narrative-driven metroidvania with dialogue choices and plenty of humor and snark.</li><li>Big numbers! 400+ rooms, 20+ hours of evolving gameplay, 10+ bosses, 60+ minutes of music and almost 30,000 words of text that a barbarian would never bother to read!</li><li>Puzzles.</li><li>RPG elements with a level-up minigame.</li><li>Contains more fruit throwing than probably any other game.</li><li>Companions that join you in your quest and help you out in fights.</li><li>Multiple endings based on your choices and actions.</li><li>The thrown fruit are NOT wasted, they are eaten by the bat (who is magic).</li><li>A ton of secrets and hidden loot just about everywhere.</li><li>The (magic) bat has a whopping FIVE different squeaking sounds!</li><li>Fewer repetitive jokes than this description has.</li></ul>
<figure><br><img src="https://img.itch.zone/aW1nLzYxODc1ODYuZ2lm/original/HA%2B%2FlS.gif" loading="lazy"></figure>
<p><em>A controller is recommended for an optimal experience.<br></em></p>
<p><em>Batbarian: Testament of the Primordial is also available for Switch.</em></p>
<p>Additional Content:<br></p>
<p><a href="https://dangen-entertainment.itch.io/batbarian-original-soundtrack" target="_blank">Batbarian: Testament of the Primordials Original Soundtrack</a></p>
<p><a href="https://dangen-entertainment.itch.io/batbarian-game-ost-bundle" target="_blank">Batbarian: Testament of the Primordials + Original Soundtrack Bundle</a><a href="https://dangen-entertainment.itch.io/batbarian-game-ost-bundle" target="_blank"><br></a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/1VztcdL8FzA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzgyOTMxLzQzODExODIuanBn/original/K%2BeULC.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyOTMxLzQzODExODUuanBn/original/3ODDlg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyOTMxLzQzODExODMuanBn/original/ngDE5%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyOTMxLzQzODExODEuanBn/original/dU2je0.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyOTMxLzQzODExODAuanBn/original/Rt%2FVnx.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyOTMxLzQzODExODQuanBn/original/p9bhDd.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyOTMxLzQzODExODYuanBn/original/pEbp5L.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyOTMxLzQzODExODcuanBn/original/57%2BqD6.jpg]]
<p>Start your quest to become a BBQ DAD. Choose your DAD, select your menu, and get grillin'!</p>
<p>BBQ DAD is a sorta resource management sim where you cook a weekly BBQ for an ever changing audience. Make sure to remember any dietary requirements, and keep an eye on the grill to flip and serve your food at just the right time.</p>
<p>This version is a preview of sorts. I originally planned to make this entirely on a week off. That was three weeks ago.</p>
<p>Upcoming additions:</p>
<ul><li>Feminine DADs, and more</li><li>Better accessibility options</li><li>Free Grill mode with unlimited items</li><li>More food items (including more veggie and vegan options)</li><li>Food preparation</li><li>More scenarios</li><li>And more?</li></ul>
<p>Enjoy!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/2AbEvVbwkPA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjk2NDY5LzM4Mzc4NjIucG5n/original/IRXe5m.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjk2NDY5LzM4Mzc4NjEucG5n/original/1Io129.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjk2NDY5LzM4Mzc4NjAucG5n/original/wyJdci.png]]
<p>BEACH EPISODE is a microgame mix-in for your regular table-top RPG group. Players take their current characters, quickly adapt them for a rules-light session, and commence to run an anime-inspired, beach-themed adventure. All you need to play is at least 3d6 and an established set of characters. <br><br>Kick it on the beach with us. It will be relaxing... probably.<br></p>
[img width=500 [https://img.itch.zone/aW1nLzM1NjMzMjMuanBn/original/RYMo2g.jpg]]
<p></p>
<div class=""><iframe width="500" height="281" src="https://www.youtube.com/embed/iGxsRRYnzGc" frameborder="0" allowfullscreen=""></iframe></div>
<p></p>
<div class="">In Beacon you play as interstellar mercenary Freja Akiyama, stuck in an endless search for her distress beacon after crash landing onto an unknown planet. With your Clone Bay stuck in an automatic printing cycle, death is only a minor setback. Each life you’ll not only scavenge for weapons and items to help you; you’ll also be collecting DNA from the enemies you defeat. After your inevitable death you’re given the opportunity to alter your genome, allowing you to change your statistics and gain gameplay-altering physical mutations for your next clone's life.<br></div>
<p>In the search for your Beacon, new questions arise; just how many clones of Freja are there? How long has she been stuck in an infinite cycle of survival? How much of her humanity will be sacrificed before escaping?</p>
<h1><img src="https://img.itch.zone/aW1nLzE1NjgwODkucG5n/original/P55Ojr.png" loading="lazy"></h1>
<figure><img src="https://img.itch.zone/aW1nLzE1NjgxMjUuZ2lm/original/WY66u%2F.gif" loading="lazy"></figure>
<ul><li>A Rich Multi-Faction World to Scavenge -- Enter at the Kovus Outlands, fight your way through the Overgrown Spires, and push through the pollution to the cryptic Omega Vault where your Beacon is being held. Collect mementos to discover the mysteries behind the 5 Factions on Kovus-18, find Tinkered Weapon Variants left behind by previous clones, and track your secrets discovered at the end of each level.</li></ul>
<ul><li>100+ Mutations and 5 DNA Types -- Collect DNA from deceased enemies and alter your statistics after death. Gain new abilities with each new clone and alter your character into something not quite human.
</li><li>300+ Items Spread Across 5 Item Types -- Find your favorite arsenal from unique technologies spread across the various factions. Regain an advantage with one time use Pickups, activate your reusable Auxiliary, swap your Grenade Mod, stock up on Passive Mods, and choose your 2 favorite Weapons.
</li><li>100+ Enemies with Champion Variants -- The varied factions that inhabit Kovus-18 will fight each other as well as you, including hybrid Minibosses that mix together the abilities of multiple factions.
</li><li>15+ Boss Fights -- Face off against the ultimate lifeforms of each faction including the Solus Hivemind, Prism Mainframe, and Tritoraptor Matriarch.
</li></ul>
<figure><img src="https://img.itch.zone/aW1nLzE1NjgwOTIucG5n/original/Af%2F2I6.png" style="color: inherit; font-size: 40px" loading="lazy"><img src="https://img.itch.zone/aW1nLzE1NjgxNTkuZ2lm/original/G%2BUwWO.gif" style="color: inherit; font-size: inherit" loading="lazy"></figure>
<p>DNA is the core of Beacon’s gameplay loop. Through the use of Freja’s state-of-the-art Clone Bay and DNA dropped by deceased enemies, after death you’re given the opportunity to alter your genetic makeup and change your statistics before your fresh clone is ‘printed’ back at the crash site. Each faction has their own set of unique DNA and Mutations, allowing you to become a battle-hardened mass of metal, a luminous abomination of insect flesh, or anything in between!</p>
<p><span></span></p>
<h1><img src="https://img.itch.zone/aW1nLzE1NjgwOTEucG5n/original/clcm5m.png" loading="lazy"></h1>
<p><img src="https://img.itch.zone/aW1nLzE1NjgwOTUuZ2lm/original/QGzHgT.gif" loading="lazy"></p>
<p>The planet you've crashed on is unfamiliar. The only information available is its name – Kovus-18. The rest of the record is blank. It seems that either nothing is known about it, or whatever was known has been scrubbed from the database. Multiple factions populate its surface, each seemingly at war with the others, and all of them hostile to the planet's newest inhabitant… you. </p>
<h1><img src="https://img.itch.zone/aW1nLzE1NjgwOTAucG5n/original/i4eR80.png" style="max-width: 100%" loading="lazy">
</h1>
<figure><img src="https://img.itch.zone/aW1nLzE1NjgxMDUucG5n/original/4mCTON.png" style="max-width: 100%" loading="lazy"><br></figure>
<p>Having grown up in the backwaters of civilised space, Freja always dreamed of adventure. Enrolling in the military at a young age she quickly discovered both her natural abilities for combat and piloting spacecraft, and her inability to work within the strict regimen of the armed forces. Freja lives and works aboard her ship the Ouroboros – a single-berth, heavily-modified light spacecraft that boasts state-of-the-art weaponry and facilities.<br></p>
<p><a href="http://monothetic.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">MONOTHETIC</a> | <a href="http://beacon.monothetic.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Website</a> | <a href="http://twitter.com/MONOTHETIC" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Twitter</a> | <a href="http://www.youtube.com/channel/UC50jgYPQDd4oNW-r2ubMlZQ" rel="nofollow noopener" referrerpolicy="origin"></a><a href="http://www.youtube.com/user/monothetic" target="_blank" rel="nofollow noopener" referrerpolicy="origin">YouTube</a> | <a href="http://soundcloud.com/beacon-ost" target="_blank" rel="nofollow noopener" referrerpolicy="origin">SoundCloud</a></p>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/iGxsRRYnzGc" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjM4MzkyLzc0OTM5NjcuanBn/original/G2U92n.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjM4MzkyLzc0OTM5NzEuanBn/original/N8R5NE.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjM4MzkyLzc0OTM5NjguanBn/original/6ji1ie.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjM4MzkyLzc0OTM5NzAuanBn/original/tJEc5V.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjM4MzkyLzc0OTM5NjkuanBn/original/kw95H%2B.jpg]]
<p>Look, it happens. Periodically, a bear murders someone and takes over their online identity in the search for snacks, companionship, and remote networking opportunities. Sure, being married to a 700-pound bear who ate and replaced your spouse is annoying but, like the common cold, it’s something we all live with. <br></p>
<p>Bear Acquaintances is a slice of life epistolary game inspired by We Bare Bears and Gail Simone's Bear Incident on twitter. But with more casual murder. Play normal humans, bears pretending to be humans, and less normal humans pretending to be those bears and send comfy letters and well-meaning advice to each other.</p>
<p>Also, the hilarious consequences of that advice.</p>
<p>This game is part of the #SaveThePost Jam.</p>
[img width=500 [https://img.itch.zone/aW1nLzMyNTkwNTcucG5n/original/Tb1UvW.png]]
<p>Bear is a solo roleplaying game, where the player takes on the role of patron to a lone adventurer in another world, on another plane. You must identify where they are, what challenge they currently face, and how you can best help them. Over time, as you revisit the game, you build up the story of your adventurer's journey, how they've changed, and how you've helped them.</p>
<p>It is designed to be played anytime, anywhere, and doesn't require any materials such as pen/paper/dice to be played, simply a player.</p>
<p>Available as pdf or plain text word document; preview copies are available for free, which contains the first page-and-a-half of the game.<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjA5OTcwLzMyNDIxMzguanBn/original/De5lh%2F.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjA5OTcwLzMyNDIxMzkuanBn/original/jH33Zp.jpg]]
<p>Help Barris last through the coming Winter. Shake, rattle, and roll your way around the forest, finding food to fatten up before the year ends. Make sure Barris is fed and safely back in his warm cave before it's too late!</p>
<p>----------</p>
<p>Keyboard / Gamepad:</p>
<p>WASD / Left Stick -- Move</p>
<p>Space / A -- Jump</p>
<p>Mouse / Right Stick -- Look Around</p>
<p>Left Click / X -- Eat</p>
<p>Right Click / RT -- Relieve Yourself</p>
<p>O / Start -- Restart</p>
<p>P -- Quit</p>
<p>0 -- Toggle Screenshot Mode</p>
<p>R / LB -- Take screenshot</p>
<p>----------</p>
<p>Made by Ryan Welham, Mike Gillespie, Vanion Paradis, and Sean Leach for TOJam2017! (Launched with a shiny polish and new content in June 2019!!)</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/F9CjjURPMwg" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTQyMjEwLzI2NzkwMDguanBn/original/zEYwT8.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTQyMjEwLzI2NzkwMTIuanBn/original/1kSEvA.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTQyMjEwLzI2NzkwMTEuanBn/original/yn5waQ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTQyMjEwLzI2NzkwMTUuanBn/original/98vrkU.jpg]]
<p>I rewatched Terminator 2 recently and it put me in a 🌟mood🌟.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/MuZzP25Fnjg" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1nLzU2NjIyNjUucG5n/original/4vg3Cl.png]]
<p>A woman alone in a house. A mystery and a love story. Explore the present to uncover the past, in a short story of love and loss and a life well-lived.<br></p>
<p>A narrative exploration that examines a world where memories are constantly fading and jumbled. A game about dementia and what happens when you can't hold onto the things you've done or the people you've loved.</p>
<p><br></p>
<p class="text-center">Purchase link for Before I Forget is at the bottom of this page.</p>
<p class="text-center"><a href="https://3foldgames.itch.io/the-garden-radio-play" target="_blank">Please take a look at our additional radio play too here</a></p>
<p class="text-center">Dave Tucker's beautiful original soundtrack for Before I Forget is available here:</p>
<p class="text-center"><iframe style="border: 0; width: 400px; height: 120px" src="https://bandcamp.com/EmbeddedPlayer/album=2380771376/size=large/bgcol=ffffff/linkcol=0687f5/tracklist=false/artwork=small/transparent=true/"><a href="<a href="http://davetuckermusic.bandcamp.com/album/before-i-forget-official-soundtrack" rel="nofollow noopener" referrerpolicy="origin">Before" class="redactor-linkify-object">http://davetuckermusic.bandcamp.com/album/before-i-forget-official-soundtrack">B...</a> I Forget - Official Soundtrack by Dave Tucker</a></iframe><br></p>
<p><br></p><p>3-Fold Games is proud to partner with <a href="https://www.alzheimersresearchuk.org/" rel="nofollow noopener" referrerpolicy="origin">Alzheimer’s Research UK</a>, to raise vital funds and awareness for dementia research, this World Alzheimer’s Month.</p>
<p><b>From 00:00 BST on 20 September to 00:00 BST on 4 October</b>, 3-Fold games will be making a donation to Alzheimer’s Research UK for every product sold on Itch.</p>
<p><b>Before I Forget</b></p>
<p>For every game sold £0.61 + VAT will be paid* to Alzheimer’s Research UK**</p>
<p><b>The Garden radio play</b></p>
<p>For every game sold £0.15 + VAT will be paid* to Alzheimer’s Research UK**</p>
<p><b>Before I Forget and The Garden radio play bundle</b></p>
<p>For every game sold £0.72 + VAT will be paid* to Alzheimer’s Research UK**</p>
<p>Check out Alzheimer’s Research UK’s <a href="https://www.alzheimersresearchuk.org/campaigns/before-i-forget/" rel="nofollow noopener" referrerpolicy="origin">website</a> for full details.</p>
<p><em>*Paid to Alzheimer’s Research Trading Limited which covenants all its taxable products to Alzheimer’s Research UK. </em></p><p><em>** Alzheimer’s Research UK is a registered charity with charity numbers 1077089 and SC042474.</em></p>
<p class="text-center"><br></p>
<figure><img src="https://img.itch.zone/aW1nLzM1MDkxMTQucG5n/original/NDh8nG.png" loading="lazy"><br><br></figure>
<p><em>“Is this the right place?...What did I come out here for?”</em></p>
<p>A plaintive theme on the piano. A tattered 2-year-old calendar. The taste of stale air. A woman is in her house, alone, and her mind holds a mystery...</p>
<p>You are Sunita - a woman living with early onset dementia. As you wander from room to room, you discover mysterious objects, each holding a fleeting, fragmented memory. Examine faded postcards, scribbled notes, photographs, and more to uncover Sunita’s past, piece together her life-story, and understand her present.</p>
<p>Before I Forget is a story-rich, first-person exploration game from 3-Fold Games. Delicate, moving, and atmospheric, it examines the emotional impact of dementia.</p>
<p><img src="https://img.itch.zone/aW1nLzM1MDkyMDAuanBn/original/QewBtO.jpg" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzM1MDkxNzAucG5n/original/8j7UCb.png" loading="lazy"></p>
<ul><li><strong>Short & Sweet: </strong>Before I Forget is a short narrative gem from 3-Fold Games. With an average playtime of 1 hour, it’s designed to be experienced in one sitting. </li><li><strong>Story Rich: </strong>Sunita’s house is a treasure-trove of faded memories. The game-world of Before I Forget is expressive, detailed, and rich with backstory, taking you on a profound emotional journey.</li><li><strong>Vocal Talent: </strong>Featuring a vivid cast of voice actors, breathing life into Sunita and her memories. (Including Anjali Kunapaneni & Bushra Laskar)</li><li><strong>Original Soundtrack:</strong> Elegant piano melodies guide you through Sunita's internal and external worlds, with an all-original score from composer, Dave Tucker. Musical refrains that search and wind like an old memory</li></ul>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzM1MDkyMDQuanBn/original/Bokdgk.jpg" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzM1MDkxNzcucG5n/original/4vmyoq.png" loading="lazy"></p>
<p><em>“We wanted to have some aspects that indicated Sunita’s Indian heritage apart from her name, and I actually did this piece of art in a little bit of software that came on my Galaxy phone, [...] so this is my homage, my paltry homage - to a really fantastic Indian - female Indian - painter [...] called Amrita Sher-Gil.”</em></p>
<p><img src="https://img.itch.zone/aW1nLzM1MDkxNzguanBn/original/XSCNf%2F.jpg" loading="lazy"></p>
<p>Before I Forget comes with a free Developers’ Commentary, which you can activate from the game’s loading screen. <br></p>
<p>As you explore Sunita’s house, listen to thought-provoking interviews with the game devs as they analyse their creative processes, reveal secrets, and much more.</p>
<p><br></p>
<p><strong>REVIEWS:</strong></p>
<p>‘A delicate and unique exploration of dementia from a first-person perspective’
<strong>Mark Serrels, Cnet</strong></p>
<p>‘Beautiful and thought-provoking game’<br><strong>Katie Campbell, Pos’ability Magazine</strong></p>
<p><br></p>
<figure><img src="https://img.itch.zone/aW1nLzM1MDkyMDkucG5n/original/q7eXQA.png" loading="lazy"></figure>
<p><img src="https://img.itch.zone/aW1nLzM1MDkyMTEucG5n/original/ZNaBFa.png" loading="lazy"></p>
<p>3-Fold Games are a small but mighty micro-studio from game developers Claire Morwood & Chella Ramanan. Dedicated to telling diverse stories from underrepresented perspectives, the creative duo make it their mission to create games which give voice to individuals/groups who are often excluded from game narratives. <br></p>
<p><a href="https://www.3foldgames.uk/" rel="nofollow noopener" referrerpolicy="origin">https://www.3foldgames.uk/</a></p>
<p><img src="https://img.itch.zone/aW1nLzM1MDkyMTMucG5n/original/S1nIDP.png" loading="lazy"></p>
<p><strong>Website:</strong> <a href="https://www.3foldgames.uk/" rel="nofollow noopener" referrerpolicy="origin">https://www.3foldgames.uk/</a></p>
<p><strong>Follow us: </strong>@3foldgames</p>
<p><strong>Follow the developers:</strong> @shimmerwitch @ChellaRamanan</p>
<p><strong>Sign up to our newsletter: <a href="https://www.3foldgames.uk/" rel="nofollow noopener" referrerpolicy="origin">https://www.3foldgames.uk/</a></strong></p>
<p><strong>Press kit: <strong> <a href="https://www.3foldgames.uk/" rel="nofollow noopener" referrerpolicy="origin"></a><a href="https://www.3foldgames.uk/press/" rel="nofollow noopener" referrerpolicy="origin">https://www.3foldgames.uk/press/</a></strong></strong></p>
<p><br></p>
<p><strong>Minimum System Requirements</strong><br>WINDOWS:<br>OS: Windows 7<br>Processor: 2.20GHz Processor<br>Memory: 2 GB RAM<br>Graphics: Intel HD4000 or equivalent<br>DirectX: Version 9.0c<br>Storage: 1 GB available space</p>
<p>MAC:<br>OS: OS X v10.11 El Capitan or higher<br>Processor: 2.20GHz Processor<br>Memory: 2 GB RAM<br>Graphics: Intel HD4000 or equivalent<br>Storage: 1 GB available space</p>
<p>LINUX:<br>Processor: 2.20GHz Processor<br>Memory: 2 GB RAM<br>Graphics: Intel HD4000 or equivalent<br>Storage: 1 GB available space</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/t8E3By2NlSo" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjUwMzcxLzM0ODgzMzguanBn/original/EPRrHW.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjUwMzcxLzM1MDk0MzUuanBn/original/iAwucg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjUwMzcxLzM1MDk0MzgucG5n/original/Lt%2BkRy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjUwMzcxLzM1MDk0NDAucG5n/original/PwGJ30.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjUwMzcxLzM1MDk0NDIucG5n/original/0387mJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjUwMzcxLzM1MDk0NDQuanBn/original/WPJVeJ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjUwMzcxLzM1MDk0NDUucG5n/original/wbMxwM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjUwMzcxLzM1MDk0NDcuanBn/original/Pot63S.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjUwMzcxLzM1MDk0NTAucG5n/original/JknS7P.png]]
<p>
Beglitched is a game about insecurity, in our computers and ourselves. In a pastel world of networks where nobody truly knows what they're doing, hacking is a magical art and the notorious <strong>Glitch Witch</strong> is the most premium archmagi of the net. By random circumstance, <strong>YOU</strong> are her new apprentice. You must use your wits and cunning to unravel the mechanisms of an alien computer and survive amongst a veritable web of clowns, leftclickers, and filedraggers.<span></span>
</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/Z6gFT7e5LVI" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODQ4NDAvNDEzNDUyLnBuZw==/original/G9CxFM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQ4NDAvNDEzNDUzLnBuZw==/original/NstVAV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQ4NDAvNDEzNDU0LnBuZw==/original/UY6I07.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQ4NDAvNDEzNDU3LnBuZw==/original/39eL3W.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQ4NDAvNDEzNDU1LnBuZw==/original/OydVR2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQ4NDAvNDEzNDU2LnBuZw==/original/%2FZHr70.png]]
<p><em>Being</em> is an abstract adventure game that explores, from a future lens, the past and present of the Palestinian lived experience. The player controls an avatar from the distant future of Palestine on a mission to recover artifacts, memories, and messages from a mysterious house near an old border. The game's aspiration is to convey various aspects of living as a Palestinian during the past century, ranging from perpetual grief to enduring hope.</p>
<p><em>Being</em> was a part of Art Palestine International x Babycastles exhibition, <em>Over the Rainbow</em>, which showcased Palestinian art resonating out of the unique and valuable lived experiences of Palestinians --<br>both in the region and the diaspora. The show ran from March 16th to April 17th, 2017.</p>
<p><em>cw: gore, body horror, PTSD, loud and/or sudden sounds</em></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTQyNzM0LzY1MzU4OC5wbmc=/original/EaEaES.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTQyNzM0LzY1MzU4NC5wbmc=/original/V0QjQB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTQyNzM0LzY1MzU4NS5wbmc=/original/rGoaQ2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTQyNzM0LzY1MzU4Ni5wbmc=/original/c7BSS1.png]]
<p><strong>THE GAME IS OUT (Windows version PT-BR)</strong></p>
<p><strong>Linux version coming soon.<br></strong></p>
<p><strong>English version coming soon.</strong></p>
<div class=""><img src="https://img.itch.zone/aW1nLzM2Mzk4NTYuZ2lm/original/pcyFer.gif" style="color: inherit; font-size: inherit" loading="lazy"><br></div>
<p><strong>PTBR:</strong><br></p>
<ul><li>Cuide dos afazeres gerais de sua casa e pátio em B-613, seu planetinha.</li><li>Ampla variedade de ferramentas e tarefas. </li><li>Pesque, cozinhe, colha frutas, regue seu canteiro e muito mais ao lado de Reginaldo. </li><li>Trilha sonora completamente remasterizada. </li><li>Conheça e <strong>CATIVE</strong> muitos amiguinhos. </li><li>E não se esqueça: <em>Tu te tornas eternamente responsável por aquilo que cativas</em>. </li></ul>
<p><strong>ENG:</strong></p>
<ul><li>Take care of your daily tasks and housekeeping in B-613, your little tiny home planet.</li><li>Wide variety of tools and tasks. </li><li>Fish, cook, gather fruits, water your flowers and so on, along with Reginaldo. </li><li>Original Soundtrack completely remastered. </li><li>Befriend and <strong>TAME</strong> a lot of friends. </li><li>And don’t you go forgetting: <em>You become responsible, forever, for what you have tamed.</em></li></ul>
<p><span></span></p>
<p><span></span></p>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/QBtojPHmnpM" frameborder="0" allowfullscreen=""></iframe></div>
<p><span></span></p>
<p><img src="https://img.itch.zone/aW1nLzM2Mzk4NTguZ2lm/original/MI64gy.gif" loading="lazy"></p>
<p><strong>PTBR:</strong></p>
<p><strong><em>GAROTRON: </em></strong>O novo emulador do querido portátil JOGAROTO, da MEGASOFT + a ROM completa e remasterizada do fantástico jogo Bem Feito, lançado também pela MEGASOFT em 99 + transcrição em pdf do raro manual original do jogo. </p>
<p>*esse pacote NÃO inclui o portátil JOGAROTO nem o cartucho original do jogo Bem Feito.</p>
<p><strong>ENG:</strong><br></p>
<p><strong><em>GAROTRON</em></strong>: The newly crafted emulator of your dearest portable console, originally made by MEGASOFT + a complete and remastered ROM of the fantastic game Bem Feito, launched on 99 also by MEGASOFT + a rare digitalized version of the original game’s manual. </p>
<p>*this package does not include the portable console JOGAROTO, nor the original cartridge of the game Bem Feito. </p>
<figure><img src="https://img.itch.zone/aW1nLzM2NDAyMTkucG5n/original/Yt6TG4.png" style="color: inherit; font-size: inherit" loading="lazy"><span></span><br></figure>
<p><strong>PTBR:</strong></p>
<p>"Bem Feito é um jogo incrível, cheio de conteúdo e que eu não consigo parar de jogar, NÃO CONSIGO PARAR DE JOGAR, NÃO CONSIGO PARAR DE..." <br></p>
<p>- Felipe Borges, criptozoologista falecido.</p>
<p><strong>ENG:</strong></p>
<p>"Bem Feito is an awesome experience, full of content, impossible to stop playing. I CAN'T STOP PLAYING. I CAN'T STOP..."</p>
<p>-Felipe Borges, deceased cryptozoologist.</p>
<p><br></p>
<p><strong>REQUERIMENTOS DO SISTEMA/SYSTEM REQUIREMENTS:</strong></p>
<p><strong>4gb RAM (min.) 8gb RAM (rec.)</strong></p>
<p></p>
<p><strong></strong><br></p>
<h3>ptbr</h3>
<h3>21/12/2019: Eles me falaram... </h3>
<p>E..... m.......rm.....</p>
<h3>22/12/2019: Droga, eles me falaram!<br>23/12/2019: Eu acho que estou ficando louco! "Tu te tornas eternamente responsável por aquilo que cativas."...</h3>
<p>eternamen...... cativ.....</p>
<h3>24/12/2019: eu devia ter entendido, eu devia ter visto. Meu deus, eu devia ter visto.</h3>
<h3>Não consigo parar de jogar, não consigo parar de cumprir as tarefas! Eu queria poder voltar, poder fazer as coisas de novo, queria não ter...<br>28/12/2019: Boa sorte. - F.B.</h3>
<h3>eng</h3>
<h3>21/12/2019: They told me so... </h3>
<p>T........old....so....</p>
<h3>22/12/2019: Damn! They fucking told me so! </h3>
<h3>23/12/2019: I guess I'm losing it! "You become responsible, forever, for what you have tamed"... </h3>
<p>forever..... tame....d.</p>
<h3>24/12/2019: I should have guessed, I should have seen sooner. Oh god, I should have seen. </h3>
<h3>I can't help but play, I can't stop doing the daily tasks! I wish I could go back, I wish I could do over. Wish I didn't... </h3>
<h3>28/12/2019: Best of luck. - F.B.</h3>
<figure><img src="https://img.itch.zone/aW1nLzM2Mzk4NjIucG5n/original/jnyVty.png" style="color: inherit; font-size: inherit" loading="lazy"><span></span><br></figure>
<iframe width="720" height="450" src="https://www.youtube.com/embed/QBtojPHmnpM" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTk1NTk0LzQwMTc5NTguZ2lm/original/0cbgxi.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1NTk0LzM3MTQ2NzIuZ2lm/original/liEkrk.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1NTk0LzM3MTQ2NzEuZ2lm/original/OEXnoW.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1NTk0LzQwMTc5NTcuZ2lm/original/ss4Y4y.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1NTk0LzM3MTQ3MDYuZ2lm/original/M2Ut2o.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1NTk0LzM3MTQ3MjQuZ2lm/original/InE2eS.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1NTk0LzQwMTc5ODcucG5n/original/Vm%2BbT1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1NTk0LzQwMTc5ODUucG5n/original/7N7HXA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1NTk0LzQwMTc5ODgucG5n/original/R3aHBm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1NTk0LzM5NTY3NjcucG5n/original/VT%2Fbmd.png]]
<p>Beppo's Hole in One Golf is a 2d top down golf game featuring exciting golf game play and a challenging 9 holes of golf. </p>
<p>Beginners and Pros alike can find fun and challenge with Beppo's Hole in One Golf.<br></p>
<ul><li>Features all the pitfalls you're used to including Water Hazard, Bunkers, Rough, and Out of Bounds areas</li><li>Play it safe or use the Danger Zone™ to get more power with a risky follow through swing and go for the expert shot</li><li>For additional challenge, choose your wind and break settings, or play on Super Expert Pro™ mode</li><li>Share your scores with friends using the "save score" feature</li></ul>
<p><br></p>
<p><strong>Controls</strong></p>
<ul><li>Just use the mouse, and click the interface to play</li><li>Alternatively, use the cursor keys and space bar to complete your shots</li></ul>
<p><br></p>
<p>Thanks to everyone who donated during the jam! All proceeds have been donated to the Canadian Cancer Society (http://cancer.ca).</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3NDQyLzI4NTg5OTAuZ2lm/original/QPJlne.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3NDQyLzI4NTg5OTYucG5n/original/AcaBFE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3NDQyLzI4NTg5OTcucG5n/original/%2FQANtc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3NDQyLzI4NTg5OTgucG5n/original/U%2Bu%2Fbo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3NDQyLzI4NTkwMDEucG5n/original/4dXBXN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3NDQyLzI4NTkwMDAucG5n/original/wcjlK8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3NDQyLzI4NTg5OTkucG5n/original/7%2FVipL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3NDQyLzI5MTY1NzMucG5n/original/xxsJp0.png]]
<h3>What the game is about</h3>
<p><strong><span></span></strong></p>
<p>“Beyond Super: Life Behind the Mask” is a one-player journaling game that takes a peek behind the mask of a superhero.</p>
<p>The job of superheroes is just like many other jobs, at some point it becomes routine. But other challenges arise around it. Missed your moms birthday because you were saving the city from Doc Trine? Handed in work late because you were busy running from an intelligent turtle turned supervillain?</p>
<p>How do you deal with the challenges of a regular life once you have a handle on your after-hours job? Can you keep a regular job? A relationship? Raise kids? Who do you have to lie to and who can you be honest with?</p>
<p>The stakes are not if you can save the city. They are unfulfilled dreams, burnout, loss of identity and loneliness. Who you have to lie to, who you don’t spend enough time with, who you lose, and who you have to pretend to be, to protect those you love most. </p>
<h3>What the characters do</h3>
<p>The characters in this game try to navigate regular life while dealing with all the issues that come with it, in addition to those that come with their after-hours job of being a superhero. They will have to prioritize, sacrifice, lie and pretend, while attempting to lead two lives at once. </p>
<h3>What the player does</h3>
<p>The player creates a world and character, interprets prompts and tells the story of their character. They are both writer and director and decide how their character navigates life by creating a journal entry for each week during a year of their characters life.</p>
<h3>Notes</h3>
<ul><li>Players: 1 (optional 2 player rule)</li><li>Duration: a couple of hours, depending on how detailed you write</li></ul>
<p><strong>This is the first full version of this game. If you find errors, have recommendations or find anything wrong or unclear let me know at <a href="https://twitter.com/maxkaemmerer" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@maxkaemmerer</a> on twitter or leave a comment here on itch. I would appreciate any feedback, a short comment on whether or not you enjoyed playing it would be appreciated.</strong><br></p>
<p>This game was created as a submission to the “<a href="https://itch.io/jam/beyond-the-super-jam" target="_blank">Beyond The Super</a>” jam held by Riley Rethal and is based on “The Quiet Year” by Avery Alder.<span></span></p>
<p><br></p>
<hr>
<p><strong>Also check out:</strong></p>
<iframe frameborder="0" src="https://itch.io/embed/862929?linkback=true&bg_color=363f3e&fg_color=fff9e9&link_color=fff9e9&border_color=5c6564" width="552" height="167"><a href="https://maxkaemmerer.itch.io/mayweather"><span class=""></span>MAYWEATHER by Max Kämmerer (he/they)</a></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjQ2NjM0LzM0NjUyMDAucG5n/original/9ZGc77.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ2NjM0LzM0OTM4MjkucG5n/original/hJb4Ss.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ2NjM0LzM0OTM4MzAucG5n/original/xoq29j.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ2NjM0LzM0OTM4MzIucG5n/original/Nmqg6i.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ2NjM0LzM0OTM4MzEucG5n/original/0Zw5Iy.png]]
<h2>Out Now On:</h2>
<p><a href="https://www.microsoft.com/en-us/p/bff-or-die/9p1kmhf16gg1" rel="nofollow noopener" referrerpolicy="origin">Xbox</a>| <a href="https://www.nintendo.com/games/detail/bff-or-die-switch/" rel="nofollow noopener" referrerpolicy="origin">Switch</a>| <a href="https://store.playstation.com/en-us/product/UP1249-CUSA24491_00-5161590649382433" rel="nofollow noopener" referrerpolicy="origin">PlayStation</a>| <a href="https://store.steampowered.com/app/652360/BFF_or_Die/" rel="nofollow noopener" referrerpolicy="origin">Steam</a></p>
<h2>Congratulations!</h2>
<p class="text-justify">You and your friends are graduating from the prestigious Intergalactic Time Academy. No time for partying though as your first mission awaits! The Orbees are all missing. Yes, those curious little beings made of energy who power our time-tech are nowhere to be fou... no, wait! We have a faint trace on their signal. Are you brave enough to rescue them?</p>
<p class="text-justify">Prepare yourself for unknown dangers. If you find some of the Orbees they might equip your Space-Time Machine with new tech. Decide who is in charge of each gadget and combine your abilities to discover the best strategies.</p>
<p class="text-justify">Use cunning, comradeship and co-operation to survive and never forget the Academy motto: “BFF or Die!”<br></p>
<h2>Best Friends Forever</h2>
<p class="text-justify">BFF or Die is a game for you if:<br></p>
<ul class="text-justify"><li class="text-justify">You want a 2-4 player game to play with your partner/family/friends where you get to do everything as a team.
</li><li class="text-justify">Pure co-operation sounds fun to you as it’s a different feeling when you all work together.
</li><li class="text-justify">You like games that are easy to start playing but then gradually get more challenging.
</li><li class="text-justify">You like games that let you figure things out yourself rather than “hand holding” you too much and telling you what to do. </li><li class="text-justify">You want a game with a fun, short campaign mode which adds replayability by having difficult trophies to collect and also an unlockable “Infinite” mode.</li></ul>
<h2>Is There Online Multiplayer?</h2>
<p class="text-justify">We do not have native online multiplayer support… BUT… you *can* <a href="https://parsecgaming.com/" rel="nofollow noopener" referrerpolicy="origin">play with your friends online by using Parsec</a>. Parsec (which is free to use) lets you share games with friends by streaming your screen and sound to them. Their inputs (control pad or keyboard commands) then get sent to you and with almost no lag (depending on your computer and internet). This let's you play real-time online co-op together..!<br></p>
<h2>What to Expect</h2>
<p class="text-justify">We strongly recommend playing in co-op 2, 3 or 4 player mode as this is when the game is most fun. Playtime will vary depending on your skill level but as a guide:</p>
<p class="text-justify">1-Player story game: 2-3 hours</p>
<p>2-Player story game: 2-3 hours</p>
<p class="text-justify">3-Player story game: 2-3 hours</p>
<p class="text-justify">4-Player story game: 2-3 hours <br></p>
<p class="text-justify">“The Infinite Trials”: 1-999 hours! Or maybe ∞ hours :) Complete as many randomised/procedural levels in a row as you can without losing. Go back to the start if you die.</p>
<p class="text-justify">You can either share controllers (two people per controller) or have separate controllers. As a minimum you need the keyboard and one control pad to have a 4-player game. Or you can use four separate control pads, it’s up to you.</p>
<p class="text-justify">There’s a story mode with 30 levels followed by an unlockable “Infinite Trials” mode with challenging randomised/procedural levels.<br></p>
<h2>Is Your Computer Fast Enough?</h2>
<p class="text-justify">If you have a dedicated graphics card and/or your computer can normally play 3D games then you should be able to run BFF or Die just fine.
</p>
<p class="text-justify">If you have a high resolution screen (like with newer Macbooks) then you will probably want to set the bootup options of the game to 1920x1080 to get a smooth frame rate unless you also have a super fast graphics card to match your high screen resolution.</p>
<p><br></p>
<p><strong>Info for Mac Users</strong></p>
<p>Please note that because of changes Apple have made, the game won't launch on Mac OS Catalina and above.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/Dfr7Ildylhg" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTM0MjMvMTc1OTA5My5wbmc=/original/LL7gb%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM0MjMvMTc1OTA5NC5wbmc=/original/FQc5XS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM0MjMvMTc1OTA5NS5wbmc=/original/hzq%2FHb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM0MjMvMTc1OTA5Ni5wbmc=/original/eAT8oo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM0MjMvMTc1OTA5Ny5wbmc=/original/I6n%2B9v.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM0MjMvMTc1OTEwMC5wbmc=/original/Nuvx2c.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM0MjMvMTc1OTEwMS5wbmc=/original/yQvXn0.png]]
<p><strong>The</strong> premier digital playground for all bicycles!</p><p>Bicyclism EP is a physics based party game for up to 4 split-screen players. Play as your favorite bicycle and compete in traditional bicycle games like racing, jousting, soccer, space mushroom hunting, wrestling, etc.</p><p><strong>Features</strong></p><ul><li>4 player split-screen! </li><li>1 player single-screen! </li><li>Bots to race with if you're lonely </li><li>Race against your own ghosts </li><li>3 beautiful worlds to race in, coming in at 10 levels a pop! </li><li>Each world has an alternate appearance </li><li>Rocking electronic soundtrack by Yuxxie </li><li>Multiple physics-based bicycles to play as, including the unicycle and penny farthing </li><li>2 game modes, both split-screen enabled </li><li>Grand Prix - A race tour through one of 3 worlds </li><li>Remix - A random sequence of traditional bicycle games, such as wrestling and soccer </li><li>Bicycles!</li>
</ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/XsrVaJUVgwI" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjEyNDQvMzQ0NDk1LnBuZw==/original/KuMEt2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEyNDQvMzQ0NDk2LnBuZw==/original/VqWpC4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEyNDQvMzQ0NDk4LnBuZw==/original/IOrtog.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEyNDQvMzQ0NDk3LnBuZw==/original/zlBM71.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEyNDQvMzQ0NDk0LnBuZw==/original/2sTR1d.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEyNDQvMzQ0NDkwLnBuZw==/original/X62Hhe.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEyNDQvMzQ0NDg5LnBuZw==/original/3RNzle.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEyNDQvMzQ0NDk5LnBuZw==/original/2xdkEY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEyNDQvMzQ0NDkyLnBuZw==/original/JnEUKv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEyNDQvMzQ0NDkxLnBuZw==/original/DZKOO0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEyNDQvMzQ0NDkzLnBuZw==/original/ZpaHHR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEyNDQvMzQ0NDg4LnBuZw==/original/j%2Bs%2Fqc.png]]
<p>With a focus on growth and change in the dynamics of a friend group, Big Gay Roadtrip is a three act game created by Rose Artemis, to be played by a small group of friends. </p>
[img width=500 [https://img.itch.zone/aW1nLzY1OTA4NjUucG5n/original/jQJC2E.png]]
<p>It is a truth universally acknowledged, that a bird in possession of good health must be in want of some dirt. <br></p>
<p>Birds Love Dirt! is a game about being a bird and loving dirt. It encourages you to get outside, imagine birdhood, and most importantly, play in some dirt. Or mud, sand, gravel, heck even snow would probably work! As long as you can interact with it as a bird and get messy, it's fair game. <br></p>
<p>The game is played in three phases, Exploration, Declaration, and Dirt. Some Variations are included to provide ideas for playing in a group, with children, or indoors.<br></p>
<p>If you can't afford this game, please claim a community copy! No conditions, no questions asked. I intend to keep them available for anyone who needs them.<br></p>
<p></p>
<p><em>This game is a direct result of my experience volunteering on Kuaihelani (Midway Atoll) and is dedicated with gratitude and love to all my friends there, especially my fellow peas. I miss our dance parties, baking together, quiet reading hangouts, and so much more. I'd also like to thank my friend Lizzie for reading my drafts, keeping me motivated to make this game the best it could be.<br></em></p>
<p></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODIzMDA0LzQ2NDE1MDYucG5n/original/HNAxLh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODIzMDA0LzQ2NDE1MTMucG5n/original/FreoXV.png]]
<p><strong>What is Black Box?</strong></p>
<p>Black Box is a single-player Tabletop Role-Playing Game (TTRPG) about hacking. It uses the Carta game system, and is designed to (fairly abstractly) simulate Black Box hacking--which is attempting to break into a network that you know almost nothing about going in.
</p>
<p>You can play it as a standalone, single-session game, or as part of a larger hacking campaign. It could also be played as part of a different TTRPG about hacking. </p>
<p><strong>You need:</strong></p>
<ul><li>Deck of cards with Jokers
</li><li>Set of hobby dice
</li><li>Journal or other way to record your progress
</li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzkyMy81ODM4ODM0LnBuZw==/original/vnKgHv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzkyMy81ODM4ODM2LnBuZw==/original/rxWsl9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzkyMy81ODM4ODM1LnBuZw==/original/ym5EY%2F.png]]
<p><em>A solitaire card game created by Nathan Mehlhorn</em><br></p>
<h1 class="text-center">Overview</h1>
<p><em>You swore that you’d never return to that</em> <em>life ever again, but here you are. Forced between a rock and a hard place, either you hunt down the list of bounties placed in front of you or you’ll have one more hole in that ol’ head of yours when they lay you down for a dirt nap. Your past has finally caught up with you, and you can’t help wonder, has your luck finally run out?</em></p>
<p>Blackjack Bounty is a solitaire card game that uses Blackjack, or 21, as a base. In the course of the game you must hunt down several bounties or die trying. You’re an experienced bounty hunter though, and you still have a few tricks up your sleeve. That said, it still may not be enough, but if you’re lucky, you can finally return to the peaceful life you’ve <em>almost</em> gotten used to.</p>
<p>To win the game, simply capture all <strong>bounties</strong> by playing enough cards or by making enough 21’s (<strong>Blackjacks</strong>) without going over (<strong>busting</strong>). It may sound simple, but it’s actually quite tricky!
</p>
<h1 class="text-center">What's in the Box?</h1>
<p>Depending on if you download the full color version or the stripped down black and white version, you are getting a rulebook approximately 15 pages long. The rules fit on about 4 of those pages with the rest being dedicated to a detailed play example, optional variants (including a scrapped beta version of the game), and a full glossary of every <strong>keyword</strong> in the entire document. Additionally, the PDF has built in bookmarks for easy navigation.</p>
<p>As a separate document you can optionally download play sheets (color and B&W as a single PDF) which allow for easily tracking your <strong>skills</strong> using a coin as well as setup guides for how the cards should be positioned at game start. This is completely supplemental and therefore not included in the primary document.</p>
<h1 class="text-center">What You’ll Need</h1>
<p>To play Blackjack Bounty you need the following:</p>
<ul><li>A basic understanding of the game “Blackjack”, sometimes referred to as “21”
</li><li>A standard deck of 52 playing cards (jokers removed)
</li><li>Some dice, several tokens, or a sheet of paper (recommended are 2 four-sided dice or 2 six-sided dice as well as a ten-sided die. It’s less wasteful than paper and easier to manage. My examples will assume you are using dice.)</li><li>This rulebook</li></ul>
<h1 class="text-center">What's this Cost?</h1>
<p>Unlike my previous games, this comes with a cost of $5 USD*. I had more people than usual willing to playtest this and provide detailed feedback on both the game's feel and potential pricing. All participants suggested a higher retail cost than what I ultimately settled on. Coupled with my own research, I've found that there really isn't anything like this out there, a game built around Blackjack that isn't <em>just</em> Blackjack, and looking at similar products on this website, I've concluded this is more than a fair price point.<br></p>
<p>With all that said, if you can't afford the game for some reason please contact me. I am very understanding and more than happy to give out copies to folks who are facing financial hardships (no questions asked). Additionally, every sale of the game will create a free community copy that can be claimed by anyone (it's yours to keep forever). Last, but certainly not least, the first 20 people to try the game will receive a free copy via the community copy section if they so choose**. If you claim such a copy, all I ask is that you leave a comment/review along with a rating on this page.</p>
<p><em>*<a href="https://www.patreon.com/jonspenverreviews" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Patrons</a> at my $5 tier receive this game for free and contribute one community copy to the pool automatically. There is no need for you to do anything as I will email you the game free of charge.</em><br></p>
<p>**<em>All initial free copies have been claimed. I hope everyone who did so enjoys the game and I look forward to your feedback. A few additional copies were added to the pool thanks to some returning to purchase the game along with my Patrons contributing a few additional copies. I will continue to add community copies as more folks purchase the game, so be sure to check the page from time-to-time!</em></p>
<h1 class="text-center">Credit & Influences</h1>
<p>Blackjack Bounty takes inspiration from a TV game show called “<a href="https://en.wikipedia.org/wiki/Catch_21" rel="nofollow noopener" referrerpolicy="origin"><u><span class="">Catch 21</span></u></a>”. Particularly the idea of multiple Blackjack hands and their “power chip” mechanic, which is called the <strong>luck</strong> <strong>skill</strong> here. The rest is my original design based on a larger scale project that uses similar concepts but is otherwise unavailable at the release of this document.</p>
<p>This game was written and produced by Nathan Mehlhorn in association with <a href="https://jonspencerreviews.wordpress.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Jon Spencer Reviews</a>.</p>
<p><a href="https://jonspencerreviews.wordpress.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzQ5ODgwNDEucG5n/original/mv4FAd.png" alt="Jon Spencer Reviews" title="Jon Spencer Reviews" loading="lazy"></a><br></p>
<h1 class="text-center">Thank You & Feedback Request</h1>
<p>A big thank you to everyone who decides to try out Blackjack Bounty. I sincerely hope you have a lot of fun and would love to hear about your experience. If you have the time, especially if you liked the game, I would be eternally grateful if you would leave a comment and review here on the game’s page.</p>
<p>Special thanks to my <a href="https://www.patreon.com/jonspenverreviews" rel="nofollow noopener" referrerpolicy="origin"><u><span class="">Patrons</span></u></a> who helped make this game possible:</p>
<ul><li>Cameron Probert
</li><li>Infinite Zenith
</li><li>Jack Scheibelein
</li><li>Moya Tori
</li><li>Owningmatt93
</li><li>Scott F.
</li><li>Shāfiya Mū</li></ul>
<p>Additional thanks to:</p>
<ul><li>Michael</li><li>Blinky</li></ul>
<p>Depending on the reception of this project, Blackjack Bounty may receive additional support beyond my typical edits. If you have an idea, you are welcome to pitch it to me on the game’s page or via email at <a href="mailto:jonspencerreviews@gmail.com" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin"><u><span class="">jonspencerreviews@gmail.com</span></u></a>. I always give credit where the community helps in a meaningful way, so you could see your name here in this book!<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA0ODc4OS82MDA0ODI1LnBuZw==/original/tSdG67.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0ODc4OS82MDM2MTU2LnBuZw==/original/4UqUSI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0ODc4OS82MDM2MzcwLnBuZw==/original/ttzqoQ.png]]
<p><strong>Welcome to BlackJack Math!</strong><span></span><br></p>
<p>Tease your brain in this number logic game where all answers are 21 (because we're talking about blackjack, right?)<br>Swap the cards, make the math, repeat. That's all you'll need in order to complete this game!</p>
<p><strong>Key features</strong></p>
<ul><li><strong>Handcrafted Levels</strong></li></ul>
<p>The game comes with 50 handcrafted levels that will tease your brain.<br></p>
<ul><li><strong>Simple controls</strong></li></ul>
<p>The game is played simply by swaping the cards in order to change the math result to be 21.</p>
<ul><li><strong>Relaxing music</strong></li></ul>
<p><span style="color: inherit; font-size: inherit"></span><span style="color: inherit; font-size: inherit">Originally composed music to help you focus and relax while solving the puzzles (that if you do wish, can be downloaded for </span><strong style="color: inherit; font-size: inherit">free</strong><span style="color: inherit; font-size: inherit"> in our soundtrack page!).</span><span style="color: inherit; font-size: inherit"></span></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/PG-SKulaYdc" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzU4Njc1LzQ2NTU4OTcucG5n/original/Kk9t8f.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU4Njc1LzQ2NTU5MDAucG5n/original/ddlqLM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU4Njc1LzQ2NTU4OTYucG5n/original/dj5CGJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU4Njc1LzQ2NTU4OTkucG5n/original/RMReEJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU4Njc1LzQ2NTU4OTgucG5n/original/ZaYDGB.png]]
<h2>ABOUT BLEED 2:</h2>
<p>Bleed 2 is a relentless arcade action game featuring air-dodging, bullet-reflecting, and tons of bosses. Now includes the randomly-generated Endless Mode, too!<br><br>Wryn is the world's greatest (and only remaining) hero. Help her battle an invading force of villains and live up to her title as the Greatest Hero of All Time!<br><br>Featuring an original soundtrack by Jukio Kallio and sound design by Joonas Turner!</p>
<p></p>
<h2>KEY FEATURES:</h2>
<ul><li>7 levels containing over 25 boss fights</li><li>Unique controls let you shoot, dodge, reflect bullets and slow time all at once</li><li>4 difficulty levels that remix enemy placement and boss patterns</li><li>Unlockable weapons, characters and abilities</li><li>Arcade Mode: Tackle the game on one life</li><li>Challenge Mode: Select and fight up to three bosses at once</li><li>Endless Mode: Randomly-generated levels</li><li>2-player local co-op for all modes (requires at least one gamepad)</li></ul>
<p><br></p>
<h2>MINIMUM REQUIREMENTS:</h2>
<p><strong>All:</strong>
Xbox 360 controller officially supported (may need third-party drivers on Mac OSX / Linux)
</p>
<p>256MB videocard (Shader Model 2.0 or higher)
350MB HDD space
2GB RAM</p>
<p><strong>Windows:</strong>
Windows XP (or later)
2.0Ghz dual core processor<span></span>
DirectX 9.0c</p>
<p><strong>Mac OSX:</strong> OS X 10.6.8
3Ghz Intel Core i3
</p>
<p><strong>Linux:
</strong>OS: <strong></strong>glibc 2.15+, 32/64-bit. S3TC support is NOT required
2.0Ghz dual core processor</p>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/kUloJK7nw7g" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjU3MjYzLzEyMzMzOTEucG5n/original/Xcxeq%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU3MjYzLzEyMzMzOTMucG5n/original/1BaZDs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU3MjYzLzEyMzMzOTUucG5n/original/M7a0Ow.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU3MjYzLzEyMzMzOTYucG5n/original/n5KxGA.png]]
<h2>ABOUT BLEED:</h2>
<p>Wryn is a girl with a big arsenal and big dreams -- she wants to be the ultimate videogame hero! Help her take down the Greatest Heroes of All Time in an action-packed bid to claim the title for herself and show the world what a true hero looks like!<br><br>Bleed is an action-platformer focused on stylish, acrobatic dodging and fluid, challenging gameplay. There's no filler -- just you and your skills against seven levels of enemies, obstacles, breakneck set-pieces and inventive bosses!</p>
<h2></h2>
<h2>KEY FEATURES:</h2>
<ul><li>Unique control scheme enabling crazy fast action </li><li>7 levels packed with multiple set-pieces and bosses </li><li>4 difficulty levels that remix enemy placement and boss patterns </li><li>2-player local co-op for all modes (requires at least one gamepad) </li><li>3 unlockable characters with their own gameplay twists </li><li>Survive the entire game on one life in Arcade Mode </li><li>Select and battle up to three bosses at once in Challenge Mode</li></ul>
<h2></h2>
<h2>MINIMUM REQUIREMENTS:</h2>
<p><strong>All:</strong><br>Xbox 360 controller officially supported (may need third-party drivers on Mac OSX / Linux)<br></p>
<p>256MB videocard (Shader Model 2.0 or higher)<br>350MB HDD space<br>2GB RAM</p>
<p><strong>Windows:</strong><br>Windows XP (or later)<br>2.0Ghz dual core processor<span></span><br>DirectX 9.0c</p>
<p><strong>Mac OSX:</strong><br> OS X 10.6.8<br>3Ghz Intel Core i3<br></p>
<p><strong>Linux:<br></strong>OS: <strong></strong>glibc 2.15+, 32/64-bit. S3TC support is NOT required<br>2.0Ghz dual core processor</p>
<p><strong><br></strong></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTk2NjgvNDY1NjE0LmpwZw==/original/tA5b61.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTk2NjgvNDY1NjEyLmpwZw==/original/qFqCSL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTk2NjgvNDY1NjEzLmpwZw==/original/xIYZgx.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTk2NjgvNDY1NjE1LmpwZw==/original/dFAr0D.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTk2NjgvNDY1NjE2LmpwZw==/original/pCuF3b.jpg]]
<p>Explore! Build! Tax! Welcome to Blinck Island, a place where you can build anything you like and make money while you pass the time on our beautiful beaches!<br></p>
<p><br></p>
<p><strong>Play with your favorite controller or with these keyboard controls:</strong><br></p>
<p>WASD or arrow keys to move, 1 2 3 4 5 for various functions, and the space bar for confirmation-type actions</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTIyODIwLzU0Njg4NTkuZ2lm/original/AqJKtF.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyODIwLzU0Njg4NTguZ2lm/original/PtLAhw.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyODIwLzU0Njg4NTcuZ2lm/original/Wt3QZ5.gif]]
<p>Block Swap is a simple but challenging puzzle game.</p>
<p>Swap blocks to move them around the board and sort each level by color.</p>
<p>Play through 600 colorful levels over 6 different grid sizes.</p>
<p>Solve each level within the maximum amount of moves allowed to get 1 star and unlock the next level. Get 3 stars by sorting each level in the fewest amount of moves possible.</p>
<p>Switch the game to dark mode to ease your eyes while playing.</p>
<p>Featuring simple controls, clean UI, and plenty of fun & addicting levels to play in your free time!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/SLkjMVvk9Ok" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjg2MTU0LzM4MjgzNTcucG5n/original/0%2BhBAL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg2MTU0LzM4MjgzNjkucG5n/original/2FIvnu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg2MTU0LzM4MjgzNzcucG5n/original/%2BZW2I6.png]]
<p>I made this game for a soccer themed game jam. I don't give a shit about soccer really, but was interested in the culture around it. When I was 15, it was the World Cup in my country. That's the closest feelings I have to it and built this game from there.</p>
<p><br></p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1nLzE4ODU3ODUucG5n/original/QybfVA.png]]
<p class="text-center"><img src="https://img.itch.zone/aW1nLzUzMjQ3OTYuZ2lm/original/Mj%2FJ%2FF.gif" style="color: inherit; font-size: inherit" loading="lazy"></p>
<figure><img src="https://img.itch.zone/aW1nLzUzMTUzODMucG5n/original/327%2BNb.png" style="color: inherit; font-size: inherit" loading="lazy"><br></figure>
<p>Rebind the keys with TAB<br></p>
<p>[Content warning: potentially gross gushy sounds, blood imagery]<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTI0OTk3LzU1NDAzNjcucG5n/original/ax5gOL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI0OTk3LzUzMDY0ODIucG5n/original/JbvqQo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI0OTk3LzU1NDAzODIucG5n/original/XGEcej.png]]
<p>A relaxing flight through the forest. Play as a bumblebee collecting nectar for it's hive. This is a short, chill experience. Take your time and explore the forest. Can you find all the nectar?<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODQyMDY2LzQ4NjEyNjcucG5n/original/VFCQ7h.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQyMDY2LzQ4NjEyNjgucG5n/original/iLidYJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQyMDY2LzQ4NjEyNjYucG5n/original/FPXeKk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQyMDY2LzQ4NjEyNjkucG5n/original/P6Fk8a.png]]
<h3 class="text-center">What was I trying to make here?</h3>
<p class="text-center"><em>Boa Retina</em> is a game that dives deep into messy gender uncertainty. It is an uncomfortable blend of abstract golden-age arcade design, retro computer aesthetic, the unhealthy ways my gender feelings manifested before coming out, and external conflicts from things trying to keep life in order. It is a story of breaking free…</p>
<p class="text-center"><em>breaking free…</em></p>
<hr>
<h3 class="text-center">What you get when you purchase the game...</h3>
<ul><li>25 Minutes of ~F E E L I N G S~</li><li>Zine detailing development</li><li>Skye the Cloud Fairy Atari 2600 ROM</li></ul>
<hr>
<p class="text-center"><em>Boa Retina</em> was developed as part of the Juegos Rancheros <a href="http://juegosrancheros.com/residencies/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Arcade of Anything residency program</a>. A physical, multi-device version of the game was presented at an <a href="http://juegosrancheros.com/1752/events/boa-retina/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">exhibition on June 18th, 2017</a>, with the digital version releasing publicly on June 30th.</p>
<hr>
<p class="text-center"><em><strong>Content Warning:</strong> Transphobia and emotional/physical abuse.</em></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTQ4MTI4LzcxMTc3NC5wbmc=/original/MfVpgc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTQ4MTI4LzY3ODQ1My5wbmc=/original/b%2FGu0d.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTQ4MTI4LzcxMTc3OC5wbmc=/original/u8LLL0.png]]
<p>Bombing!! is a game where you create public art in a retro world.</p>
<p>With several colour variations, cap patterns and with 95% of every level being paintable, there's few limitations on what you want to create.<br><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODc0NzA2LzUyMDU0OTUucG5n/original/Ckwwn7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc0NzA2LzQ5MjAzNjQuanBn/original/%2BqvNkv.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODc0NzA2LzUyMDU0OTYucG5n/original/iTCRFU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc0NzA2LzUyMDU0OTcucG5n/original/pLIpnA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc0NzA2LzQ5MjUwNjcuanBn/original/MBJ0SX.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODc0NzA2LzQ5MjAzNTEuanBn/original/R7TBhZ.jpg]]
<p>Bonbon is a short horror story, about your childhood.<br></p>
<p><strong>Even if you weren't a small child in the 80s, you've been here before. Just you and your friendly toys. But this new friend... this is something you are not yet able to understand.</strong></p>
<p> Includes Steam key.</p>
<blockquote><a href="https://www.rockpapershotgun.com/2017/08/04/bonbon-horror-game-review/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Adam Smith, Rock Paper Shotgun</a>:</blockquote>
<blockquote>"a short, smart tale of domestic horror"<br>"Bonbon’s home, and the voice of mummy shouting from indoors, is authentic"<br>"the confusion between what is real and what isn’t, and what is threatening and what is malign, rings true"<br>"a house of horrors that hit far closer to home than most"</blockquote>
<blockquote> <br><a href="http://www.kotaku.co.uk/2017/08/08/bonbon" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Matt Wales, Kotaku</a>:</blockquote>
<blockquote>"it's ambitious, it's often fascinating, and there are elements that linger long after it's over"<br>"there's a lot to admire and appreciate here - from the thread of an entirely different story ... to the clarity of vision and the authentic, evocative period atmosphere"<br>"there's certainly enough craft and creativity here, and a lingering strangeness to this everyday terror"</blockquote>
<p><br></p>
<p>Bonbon is a short-form domestic horror narrative (or walking sim, if you like), made in Unreal Engine 4, set in a suburban UK home in the 1980s, in which you navigate childhood events beyond your capacity to understand, and without parental context.</p>
<p>Play time is around 20 to 40 minutes, depending on your play-style. Progression requires the completion of some simple tasks, but it is mostly about exploring the objects and events around you. Play with mouse and keyboard, or a 360-style gamepad.</p>
<p><br></p><p></p><p><strong>Content warnings:</strong><br>Bonbon deals with grown-up themes and suggestions of child-abuse. There is no literal violence or onscreen abuse, it is entirely in the subtext.<br>There is one jump-scare near the end of the game.<br>As one player pointed out in a review, the game does contain a racial slur in the dialogue (g***y), which was carefully considered as relevant to the source material of the scene, and the setting in the UK in the 1980s.</p><br><p></p><p><br></p>
<p>If you purchase the DRM-free version via itch.io, you will be able to request a Steam key via the link on the download screen.</p>
<h4> </h4>
<p><em>Recommended system specifications for Windows PC version:</em></p>
<ul><li>GeForce GTX 950, or equivalent/faster graphics card</li><li>Quad-core processor, 2.5GHz or faster</li><li>8Gb RAM or more</li><li>Windows 7 or later </li></ul>
<p><br></p>
<p>Thanks to <a href="http://www.electrondance.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Joel Goodwin</a> for providing some very important last minute feedback!<br></p>
<p>Journalists, reviewers, tubers and streamers: you can find the <a href="https://medium.com/@aethericgames/presskit-bonbon-94f1dcf18484" target="_blank" rel="nofollow noopener" referrerpolicy="origin">press-kit here</a>. Download keys can be requested from Pixeljam via the contact details in the press-kit.</p>
<p> <br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/jDQILXQNzw0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTQ0MTUxLzg1NzUwOS5wbmc=/original/M%2FTcbQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTQ0MTUxLzg1NzUxMC5wbmc=/original/0zGURU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTQ0MTUxLzcxMjE0MS5naWY=/original/VwUQLG.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTQ0MTUxLzc0ODQ1OS5qcGc=/original/CkhGc%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTQ0MTUxLzg1NzU0MC5wbmc=/original/t9P1cy.png]]
<h1>Version l.0 is Out Now!</h1>
<h1><em>Bond: Wish of the Forest </em>is an action packed roguelite creature collector about making friends and fighting alongside them. </h1>
<p>Work together to rid the forest of evil spirits and save your home. Explore procedurally generated levels, find powerful upgrades, strengthen your bond with creatures, and uncover the destructive spirit's true intentions.</p>
<p>This game is being made as part of University of California: Santa Cruz's game design capstone series.</p>
<h3>Credits</h3>
<ul><li><a href="http://jamesondanning.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Jameson Danning</a> - Designer, Programmer</li><li><a href="https://colinw.itch.io/">Colin Watterson</a> - Programmer, Designer</li><li><a href="https://riko-idn.carrd.co/" rel="nofollow noopener" referrerpolicy="origin">Enrico Widodo</a> - Composer, Sound Designer, Programmer</li><li><a href="https://www.artstation.com/hermanwu" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Herman Wu</a> - Tech Artist, Animator, Producer</li><li><a href="https://ericali.artstation.com/" rel="nofollow noopener" referrerpolicy="origin">Erica Li</a> - 3D Artist</li><li><a href="https://jakecompton96.wixsite.com/website" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Jacob Compton</a> - Programmer<br>
</li><li><a href="https://eunoia-jean.squarespace.com/" rel="nofollow noopener" referrerpolicy="origin">Eugene Shin</a> - Programmer</li><li><a href="https://is-that-hunter.itch.io/" target="_blank">Hunter Lynch</a> - Producer</li><li><a href="https://www.kevinhchu.com/" rel="nofollow noopener" referrerpolicy="origin">Kevin Chu</a> - UI/UX, 3D Modeler</li><li><a href="https://elijahshaw.carbonmade.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Elijah Shaw</a> - Narrative</li><li>Madeleine Glenn - Concept Artist, Narrative, Level Designer</li><li>Ilda Aguilar - 3D Artist</li><li>Jake Burdick - VFX Artist</li></ul>
<h2>Note: Game is still in progress. Follow us to stay up to date!</h2>
<p></p>
<h3>Known Bugs</h3>
<ul><li>Player is unable to interact with any menus after beating the game<ul><li>We recommend closing the game via Task Manager or other means</li></ul></li><li>Sometimes the player respawns and cannot move<ul><li>There is currently no known way to unfreeze. We recommend closing the game and reopening.</li><li>Please make a new Community Topic and let us know if you died in the Tutorial or during a run and approximately when in the tutorial/run you died in.</li></ul></li><li>MacOS has some missing texture / audio issues<ul><li>Please make a new Community Topic and let us know where you encountered it, a screenshot if possible, as well as your particular version of MacOS. This will help us figure out what's wrong!</li></ul></li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/31HFRc18ht4" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTg4MTkxLzYxMTI0OTUucG5n/original/NEnkl3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg4MTkxLzYwMDQ4MDgucG5n/original/bDF6ZI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg4MTkxLzYxMTI0ODEucG5n/original/GzI66M.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg4MTkxLzYxMTI0ODQucG5n/original/9KcVoo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg4MTkxLzYxMTI1NTAucG5n/original/O1Dxum.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg4MTkxLzYxMTI0OTQucG5n/original/njpGtD.png]]
<p>The Book of Common Games is a collection of micro games, fluxus-style scores, and mindfulness exercises that can be played with very little preparation and materials. There are 23 games in this book. If you play any of these games, please share your experience with me, either in the comments below or on social media with #commongames</p>
<p><a href="https://commongames.neocities.org/commongamesV4.html" target="_blank" rel="nofollow noopener" referrerpolicy="origin">The web edition can be found at this link...</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTg3OTQ2LzMzNDQ4NjcucG5n/original/oeTMee.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg3OTQ2LzMzNDQ4MTgucG5n/original/eHMZNu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg3OTQ2LzMzNDQ4MTcucG5n/original/vpulUq.png]]
<p>On January 1st, I challenged myself to design, develop, and publish a complete game in 1 month. This is that game.<br></p>
<p>The original idea was to tell a somewhat cliche RPG story with one critical change: You play as the monsters.<br></p>
<p>Ozymandias is an imp living in the valley near Detritiville. He's a scavenger; searching caves and battlefields for loot and equipment that he can sell and buy supplies, but when he finds an old book with a powerful aura, he is drawn into a quest that spans the continent to uncover the mystery of the book's origins.<br></p>
<p>I know it's nothing spectacular and it uses mostly premade assets, but hopefully it makes up for that with solid map design and writing.</p>
<p>Thank you for coming on this journey with me.<br></p>
<p>Features:<br>Approx. 8-10 hours of dungeon-crawling adventure.<br>Fun and creative story with deep lore and interesting characters.<br>No lootboxes.<br>No pay-to-win BS.<br>3 different endings.</p>
<p><u><strong>Controls quick guide:</strong></u><br><u>Z, Space, Enter</u> - <strong>Confirm</strong>, select actions, talk to people, interact with objects<br><u>X, Esc</u> - <strong>Cancel commands,</strong> back out of options, open the menu<br><u>Q/W</u> - Quick switch through characters on equip/status screen<br><u>Shift</u> - makes the character dash, except on the overworld map<br><u>Arrow Keys</u> - Move<br><u>Alt+Enter</u> - Full Screen</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/c75XTJiUZi8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDE5MTU2LzIxMDUxMjAucG5n/original/l76wB2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDE5MTU2LzIxMDUxMjQucG5n/original/tt3XDh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDE5MTU2LzIxMDUxMjEucG5n/original/u49jXl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDE5MTU2LzIxMDUxMjMucG5n/original/M4S9gM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDE5MTU2LzIxMDUxMjYucG5n/original/flfU7R.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDE5MTU2LzIxMDUxMjIucG5n/original/G2x1qk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDE5MTU2LzIxMDUxMjUucG5n/original/ZH8HBA.png]]
<p><strong>A Librarians-and-Necromancy Fantasy Novel with Small Town Charm in a City of the Dead</strong><em><br></em></p>
<p><em>The others believe in blood and bone. Ree believes in books.</em></p>
<p>She manages the libraries and draws maps for the denizens of her hometown, a secret society of necromancers hiding in a sprawling underground crypt. Though they look down on her for not practicing their craft, Ree has bigger ambitions than raising the dead. She’s going to resurrect therianthropy, the ancient magic of shapeshifting. Or at least -- she’ll do it if it really exists. And if she can find the books that prove it.</p>
<p>But Smythe, a chatty historian from the world above, stumbles into the crypt and takes a curse meant for Ree. Now she has to find a way to save him, keep the townsfolk off her back, and convince her necromancer parents that shapeshifting is a viable career path.</p>
<p>Ree is certain that if she and Smythe combine their scholarly skill sets, they’ll find the right books to solve their problems. But Ree’s search for power might put the entire town in danger, and her father and the other townsfolk want Smythe dead lest he reveal their home to a world that hates them.</p><p><br></p><p><strong>SEMI-FINALIST IN THE SPFBO5 FANTASY CONTEST<br>NOMINATED FOR BEST DEBUT IN THE BOOKNEST FANTASY AWARDS 2019</strong></p><p></p>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/zPTJW_AnCp8" allowfullscreen="" frameborder="0"></iframe><br></div>
<p>(Length: 100,000 words, the equivalent of 422 paperback pages.)<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/zPTJW_AnCp8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1nLzI2MTc0ODkucG5n/original/0P8Xyu.png]]
<p><strong>Born to Run</strong> is a game about escaping your small, good-for-nothing hometown. </p>
<p>You play a group of young adults with dreams much too big for your circumstances. Luckily, you are not alone. Together you guard each other's dreams and visions as you head out on a last chance power drive. </p>
<p>So chrome your wheels, fuel your engines, step over the line, tramps like you were born to run.</p>
<p></p>
<p><em>I will likely add things like a cover and art assets to this at some point, but right now I'm just very happy to have written my first game :)</em></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTUyNzQyLzgyMDA3NzAucG5n/original/gExUHO.png]]
<p>BOTOLO is a beautiful, new multiplayer game from The Floor is Jelly creator Ian Snyder. BOTOLO is a fast paced mindreading competition, a dance inside the negative space between your opponent's thoughts. Mind-wrestle your opponents into submission inside hypnotic fields of pattern and color. Steal the ball and protect it from your opponent in this hybrid game of keepaway and king-of-the-hill. </p><p>No friends? No problem. BOTOLO has built-in, state-of-the-art friend simulations! Granted, these incredible programs might not appreciate the simple beauty of a sunset, or lend you a reassuring hug in a time of need, but they DO adapt to your playstyle mid-match, which is almost as good.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODkzODcvNDkyMjU5LmdpZg==/original/XzHJu1.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODkzODcvNDkyMjUyLnBuZw==/original/BGF%2FwP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODkzODcvNDkyMjYwLmdpZg==/original/RUMcgi.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODkzODcvNDkyMjUzLnBuZw==/original/eq1pnO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODkzODcvNDkyMjYyLmdpZg==/original/%2BbGsN5.gif]]
<p>BOTOLO is a beautiful, new multiplayer game from The Floor is Jelly creator Ian Snyder. BOTOLO is a fast paced mindreading competition, a dance inside the negative space between your opponent's thoughts. Mind-wrestle your opponents into submission inside hypnotic fields of pattern and color. Steal the ball and protect it from your opponent in this hybrid game of keepaway and king-of-the-hill. </p><p>No friends? No problem. BOTOLO has built-in, state-of-the-art friend simulations! Granted, these incredible programs might not appreciate the simple beauty of a sunset, or lend you a reassuring hug in a time of need, but they DO adapt to your playstyle mid-match, which is almost as good.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODkzODcvNDkyMjU5LmdpZg==/original/XzHJu1.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODkzODcvNDkyMjUyLnBuZw==/original/BGF%2FwP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODkzODcvNDkyMjYwLmdpZg==/original/RUMcgi.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODkzODcvNDkyMjUzLnBuZw==/original/eq1pnO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODkzODcvNDkyMjYyLmdpZg==/original/%2BbGsN5.gif]]
<p><em></em><em>Welcome ashore! You and your friends are a ragtag group of <strong>pirate captains</strong>, returning to the mainland after many months at sea. Eager to spend some of your latest plunder, you gather at the local tavern to drink, gamble, and of course, swap <strong>stories</strong> of your nautical adventures… </em></p>
<p><strong>Bottle of Rum</strong> is a light and breezy GM-less storytelling RPG for 2 or more players, where you play as outrageous pirate captains competing with your friends to tell the greatest adventure story of all! Designed for no-prep one-shots and casual play. </p>
<p><strong>Content warnings: </strong>alcohol, drunkenness. </p>
<p>This game was designed with John Stavropolous’ <strong>X-Card </strong>safety tool in mind. You can find out more about the X-Card at this link: <a href="http://tinyurl.com/x-card-rpg" rel="nofollow noopener" referrerpolicy="origin">http://tinyurl.com/x-card-rpg</a>. <br></p>
[img width=500 [https://img.itch.zone/aW1nLzU1MjM0NzcuanBn/original/ymdhu7.jpg]]
<p>I'm making a racing game for two players. They share one keyboard. Their cars bounce off of each other, and off of the walls. The maps are randomly generated, but you can replay your favourites – if you can remember the three words the generator used to make them. It's a blast!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/zPLULsk-kog" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1nLzU3MDE2MjMucG5n/original/1BQ%2Brj.png]]
<p>Think inside the box...</p>
<p>BOX is a logic puzzle-platformer where you must navigate small mazes and symmetrical obstacles to collect every object. Rotate the stage itself to change the layout of the maze, as well as your own position, to reach impossible places.</p>
<p>47 puzzles. VHS aesthetic. Soft electronic music. Boxes.</p>
<p>A chair. A screen. And you.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/IMOfeadzLwE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDcxMzMwLzI0NTk5MDUucG5n/original/dWAawz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDcxMzMwLzI0NTk5MDYucG5n/original/xmQ2T5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDcxMzMwLzI1NDMwNjEucG5n/original/Lv0G6A.png]]
<p>Yume Nikki fan-game.</p>
<p>Boy's Work. Please handle this boy with care.<br>Four (4) dream worlds with over ten (10) effects to collect.</p>
<p>Made in RPG Maker MV the afternoon of the deadline<br>for Dream Diary Jam 2 (2018)--</p>
<p>- Version 0.00 (pls message me about bugs, broken stuff, and/or bad choices)</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjcyODQxLzEzMTk3MjAucG5n/original/o04Fyr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcyODQxLzEzMTk3MjMucG5n/original/h%2F7WVZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcyODQxLzEzMTk3MjEucG5n/original/RowLKL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcyODQxLzEzMTk3MTkucG5n/original/eANp69.png]]
<p>Welcome to <strong>Brave Zenith!</strong></p>
<p>The world ended a long time ago, and no one gives a damn.</p>
<p>You are an Adventurer: <strong>ambitious, indebted, BRAVE.</strong></p>
<p>Explore the ruined world of <em>pastpresent</em>, meet colourful (and deadly) creatures, see the sights of the Second City, partake in delicious Monkey Oil. The Archipelago is your oyster!</p>
<p>This is a living document, so expect it to be altered frequently as we move closer to the final version.<br></p>
<p>Design/Layout/Writing: <a href="https://twitter.com/KnightRamen" rel="nofollow noopener" referrerpolicy="origin">Giuliano Roverato</a></p>
<p>Art: <a href="https://twitter.com/silvazuao" rel="nofollow noopener" referrerpolicy="origin">Silva João</a></p>
<p>Additional Art: <a href="https://twitter.com/lu_waro" rel="nofollow noopener" referrerpolicy="origin">Lucas Waroshi</a></p>
<p></p>
<p><strong>CURRENT FEATURES</strong><br></p>
<p><strong><strong>Simple resolution mechanic: </strong>roll 2d6, add bonuses, compare to a target number. That's pretty much it.</strong></p>
<p><strong>3 Origins</strong></p>
<ul><li>Humans - lovers of ideology, probably depressed (and responsible for ending the world).</li><li>Catfolk - cats that walk and talk, lovers of food and hospitality.</li><li>Jellies - wobbly and goofy, unburdened by tradition, possibly delicious.</li></ul>
<p><strong>4 Vocations</strong></p>
<ul><li>Freelancer - hit stuff, be strong, wear a cool jacket.</li><li>Mixologist - make up your very own special grog, get drunk, make friends.</li><li>Thief - steal stuff, create disguises, leave no locked door behind.</li><li>Magic User - create spells, manipulate the mists, wear a cool hat!</li></ul>
<p><br></p>
<p><strong>UPCOMING FEATURES</strong></p>
<p><strong>Referee Section: </strong>learn more about the world of Brave Zenith and how to run it.</p>
<p><strong>Bestiary: </strong>meet 14 different critters that inhabit the archipelago.</p>
<p><strong>Starter Adventure: </strong><em>The Fat Bat Bath - </em>clean up and explore a haunted-motel-turned-bathhouse before the new owner arrives. Get introduced to the Second City and its worst neighbourhood, the Mangual.</p>
<p><strong><strong></strong></strong></p>
<p></p>
<p><span></span></p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTQ5Mjg2LzU2ODk5NTMuanBlZw==/original/Xp3%2Fhq.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ5Mjg2LzU2ODk5NTIuanBlZw==/original/S%2FRTQQ.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ5Mjg2LzU2ODk5NTAuanBlZw==/original/gSV%2Brh.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ5Mjg2LzU2ODk5NTEuanBlZw==/original/himYdZ.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ5Mjg2LzU2ODk5NTcuanBlZw==/original/cGpq0B.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ5Mjg2LzU2ODk5NTYuanBlZw==/original/mnMYwh.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ5Mjg2LzU2ODk5NTguanBlZw==/original/nel8n1.jpeg]]
<p>Breaker Blocks is a 10-minute game of circuit building and sabotage for two players. Place tiles to build better circuits than your opponent, then try to end the game while you're winning. </p>
<p>Breaker Blocks was first designed as a jam project at Philly Dev Night and has since been released independently on <a href="http://www.spriteborne.com" rel="nofollow noopener" referrerpolicy="origin">Spriteborne.com</a> where each copy is personally crafted and shipped directly from the designer to you. By "the designer" I mean "me" and "it's weird to write about myself in the third person."</p>
<p>People seem to like it. It's been featured at Philly GamesCon, TooManyGames, International Tabletop Day, and several other places. It was a winner in the Smithsonian Indie Arcade Coast-to-Coast 2016 competition and shown off in the Smithsonian American Art Museum for it. It's a nominee in the SXSW 2016 Gaming Awards. I think it's pretty fun. My parents like it. Why are you still reading this?</p>
<p>Listed here is a pay-what-you-want print-and-play version of the game. The physical version is available <a href="http://www.spriteborne.com/products/breakerblocks" target="_blank" rel="nofollow noopener" referrerpolicy="origin">here</a>. </p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTMzNzYvMjM3MjYzLmpwZw==/original/HMSMYe.jpg]]
<p><em><a href="http://freeplay.net.au/awards-2018/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Freeplay Awards Finalist 2018 — Excellence in Narrative and Non-Digital Game Award</a></em></p>
<p><em><img src="https://img.itch.zone/aW1nLzI5MjIyNjIucG5n/original/yBhuoi.png" loading="lazy"><br></em></p>
<p><em>In the Weird Age of the late 21st century, the newly-discovered occult sciences are changing the world. If you want to learn them, Occultar Academy is the place to go. In this secluded island school, talented students from all over the world can learn sorcery and occultech under the Foundation's watchful eye.</em></p>
<p><em>...But they won't tell you everything.</em></p>
<p><em>Occult science is great, but there are risks. Behind the scenes, in the labs beneath the school, they're researching the dangerous secrets of outer science. The Forbidden Sections beneath the library hide secrets once lost to history, from forgotten occultech to the existence of the Ancient Ones. If the wrong person finds them, it could mean the end of the world.</em></p>
<p><em></em><em><strong>Breakfast Cult</strong></em> is a <em>Fate Accelerated</em> TTRPG about cosmic horror mysteries and high school drama. Play students at the world's best occult school as they solve mysteries, uncover the terrible secrets of the Ancient Ones, and try to find which of their classmates is conspiring against them before it's too late!<br></p>
<p><em><img src="https://img.itch.zone/aW1nLzI5MjIyNzIucG5n/original/ajR2H3.png" style="max-width: 100%" loading="lazy"></em></p>
<p><strong><em><a href="https://ettin.itch.io/breakfast-cult-peer-pressure" target="_blank">Peer Pressure:</a></em></strong> A rules primer and example mystery. <strong>Name your own price!</strong></p>
<p><strong><em><a href="https://ettin.itch.io/breakfast-cult-game-over" target="_blank">Game Over:</a></em></strong> A major expansion pack that adds some cool technology, Factions, a bunch of new pregen characters and encounters, and digital-themed Ancient Ones.</p>
<p><strong><em><a href="https://ettin.itch.io/breakfast-cult-lovecraft" target="_blank">Sweet Shub And Hella Thotep:</a></em></strong> An expansion pack that adds some Cthulhu Mythos to Occultar with an alternate setting, new pregen characters and encounters, and some Great Old Ones.</p><p><strong><a href="https://ettin.itch.io/breakfast-cult-terrible-friends" target="_blank"><strong><em>Terrible Friends:</em></strong></a><em></em><em></em><strong> A second major expansion pack that explores the setting's cults and their connection to Occultar Academy, plus pregen characters and encounters.</strong></strong><br></p>
<p><img src="https://img.itch.zone/aW1nLzI5MjIyNzMucG5n/original/TGOJgu.png" style="color: inherit; font-size: inherit" loading="lazy"><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTU3MDA1LzI5MjE1MzcucG5n/original/eYjuPV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTU3MDA1LzI5MjE1MzgucG5n/original/CSK8uz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTU3MDA1LzI5MjE1MzkucG5n/original/8NWKPY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTU3MDA1LzI5MjE1NDAucG5n/original/A4ilDg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTU3MDA1LzI5MjE1ODMucG5n/original/CiFTKE.png]]
<p><em><span class="">You are two monks living in a monastery. You’ve both taken a </span></em><span class=""><em>vow of silence: for one year, you will not speak. In this year of silence, you fall in love.</em></span><em><em><span class=""></span></em></em><em><br></em></p>
<p><em>Brother, Silent</em> is a letter-writing roleplaying game for two people who live together. Over days or weeks, you will leave messages for each other in a secret spot in your home, expressing your feelings for each other however you can without the abbot finding out.<em><span class=""></span></em><em> </em>All you need is pen and paper.<em><br></em></p>
<p><br></p>
<p></p>
[img width=500 [https://img.itch.zone/aW1nLzMzMTMyMTEucG5n/original/YBrlt2.png]]
<p>Welcome to this cozy little island where you find yourself as... a house? Explore the area, unlock abilities, go on a date, or go fishing! Talk to other buildings and form relationships... or don't? <br></p>
<p>---------------------------------------</p>
<p>Controls:</p>
<p>AWSD to move<br></p>
<p>Tab - Inventory</p>
<p>Space - Jump</p>
<p>Left Shift - Sh'move</p>
<p>E - Confirm/Interact</p>
<p>---------------------------------------</p>
<p>Credits:</p>
<p>Music - <a href="https://twitter.com/theTreeSerok" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/theTreeSerok</a><br>3D Models - <a href="https://www.kenney.nl/assets" rel="nofollow noopener" referrerpolicy="origin">https://www.kenney.nl/assets</a><br>UI -<a href="https://edslashem.itch.io/rpg-asset-pack-2">https://edslashem.itch.io/rpg-asset-pack-2</a><br>Key Prompts - <a href="https://retrocademedia.itch.io/buttonprompts4">https://retrocademedia.itch.io/buttonprompts4</a><br>Item Icons - <a href="https://cazwolf.itch.io/caz-pixel-1">https://cazwolf.itch.io/caz-pixel-1</a><br>Font - <a href="https://somepx.itch.io/humble-fonts-gold">https://somepx.itch.io/humble-fonts-gold</a><br>Textures (also adapted some into sprites) - <a href="https://opengameart.org/users/keith333" rel="nofollow noopener" referrerpolicy="origin">https://opengameart.org/users/keith333</a> <br>(Secret) Dog - <a href="https://pvgames.itch.io/medieval-town-and-country-interiors-bundle">https://pvgames.itch.io/medieval-town-and-country-interiors-bundle</a></p>
<p>Made in Unity<br>Cinemachine for Camera<br>Yarn for Dialogue</p>
<p>Special Thanks to the viewers on Twitch<br><a href="https://www.twitch.tv/potatomonstee" rel="nofollow noopener" referrerpolicy="origin">https://www.twitch.tv/potatomonstee</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/u4q6yFbadT8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzU3ODY0LzQyMzY0MDIuZ2lm/original/Q5XLfp.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU3ODY0LzQyMzYzODEuZ2lm/original/nS9pXC.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU3ODY0LzQyMzYzNzAuZ2lm/original/W%2BYYSY.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU3ODY0LzQyMzYzNjQuZ2lm/original/VurQYd.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU3ODY0LzQyMzc3ODMuZ2lm/original/2XF%2FPv.gif]]
<p><strong>Dodge hundreds of thousands of bullets, in this bullet-hell adventure!<br> Supports mouse, keyboard, and controllers, and 4-player couch co-op!<br>Made for Windows, but has limited support for Mac too!<br></strong></p>
<div class=""><iframe src="https://www.youtube.com/embed/IrpqcqYR_bI" allowfullscreen="" width="600" height="311" frameborder="0"></iframe><strong></strong><br></div>
<p>
</p>
<p><strong>Bullet Heaven 2</strong> is a shoot-em-up spinoff of the <strong>Epic Battle Fantasy series</strong>. It's a game all about shooting everything that moves, while dodging hundreds of bullets per second!</p>
<figure><img src="https://steamcdn-a.akamaihd.net/steam/apps/412670/extras/store1.png?t=1568759243" loading="lazy"><br><br></figure>
<h2>Bullet Heaven 2 features:</h2>
<ul><li> Mesmerizing bullet patterns and tons of cute monsters to shoot in the face. </li><li> 70 unique levels, including epic boss battles and endless survival levels.
</li><li> 18 awesome musical tracks from Phyrnna!<strong></strong>
</li><li> Up to 4 players can play in local co-op. </li><li> Support for mouse, keyboard, or controller controls.
</li><li> 8 playable characters, each with several different weapons and costumes. </li><li> 3 difficulties: Normal (25% bullets), Hard (50% bullets), and Heavenly (100% bullets). </li><li> Unlockable cheats and handicaps, which can be used to customize the difficulty further. </li><li> Tons of achievements, unlockables, and ranks to collect. </li><li> Lots of juvenile dialogue from the characters and plenty of video game references. </li></ul>
<figure><img src="https://steamcdn-a.akamaihd.net/steam/apps/412670/extras/store2.png?t=1568759243" loading="lazy"><br></figure>
<iframe width="720" height="450" src="https://www.youtube.com/embed/IrpqcqYR_bI" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTYzNTU4LzI5NTg3NDYuanBn/original/bdvucl.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTYzNTU4LzI5NTkyMjAuanBn/original/%2B%2BQmrF.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTYzNTU4LzI5NTkyMTIuanBn/original/Jj2uDU.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTYzNTU4LzI5NTg3NDQuanBn/original/q6rRXb.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTYzNTU4LzI5NTkyMTQuanBn/original/39fAL5.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTYzNTU4LzI5NTkyMTMuanBn/original/pqhjWc.jpg]]
<p>Bumble Butt is an arcade game where Betty Buzz takes out nasty bugs with the power of her bottom! Or rather, the stingers she shoots out of it!</p>
<p>That's right, player's are always shooting in the direction opposite they're facing! This means it's required to navigate through the swarms of enemies and their attacks, whilst also trying to aim from the rear at the same time! <br>Master the use of your behind (bee-hind?)! Defeat a wide variety of bogus bugs swarming across 50 levels, and don't let those invading insects kill your buzz!</p>
<ul><li> Perfect for a short session, or a longer one if you want a big score!
</li><li> Plenty of replayability, as it's all about getting more points than the last time!
</li><li> Can resume from every tenth level, making it ideal for pick up and play!
</li><li> 50 levels!
</li><li> A funky folky soundtrack!
</li><li> Controller highly recommended, but keyboards also supported!</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/hmQ3gFmO6hE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjE1Mjc2LzMyNzMzNTAucG5n/original/uhz3Y1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjE1Mjc2LzMyNzMzNTYucG5n/original/K9NG2o.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjE1Mjc2LzMyNzMzNTQucG5n/original/MKM3LW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjE1Mjc2LzMyNzMzNTcucG5n/original/fxW%2FHK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjE1Mjc2LzMyNzMzNTkucG5n/original/LoiA2r.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjE1Mjc2LzMyNzMzNjAucG5n/original/eFnsdr.png]]
<p>you and your friends work for the local <em>burger maestro</em> franchise. but lately, things haven't seemed quite right at work. play through six weeks of frantic fast-food flailing trying to keep the restaurant afloat amidst the troubles in this short role-playing game.</p>
<p>designed for 2-6 players, plus a GM. designed for beginners, no fancy equipment required.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjkzODE4LzM4MjkyNzUucG5n/original/EA5LCg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkzODE4LzM4MjczNDcuanBn/original/SvTVjI.jpg]]
<p>Bury me my Love tells the story of Syrian refugee Nour and her husband Majd, as Nour </p>
<p>undertakes a perilous journey to safety in Europe.<br> <br>Bury me, my Love is a Text Messaging Adventure game about Nour, a Syrian migrant trying to find her way to Europe. Her husband Majd, who remains behind in Syria, communicates with Nour through a messaging app, advising her as best he can so that she reaches her destination safely.<br> <br>“Bury me, my love” is a Syrian goodbye phrase that roughly means, “Take care, don’t even think about dying before I do.” This phrase takes on a deeper meaning as Majd says it to his wife, Nour, as she undertakes her perilous journey to reach Europe.</p>
<p>A co-production from ARTE, the European cultural network, with The Pixel Hunt and Figs.<br> <br>A game in an instant messaging app<br>As Majd, you can communicate with Nour and follow her journey, just as if you were chatting with her via text message. You will text each other and exchange emojis, pics and selfies, relevant links…<br> <br> Multiple narrative routes to discover<br>By reading instant messages and choosing response options, players help Nour overcome the hardships she will encounter.<br>Your choices in Bury me, my Love truly impact on the story, with Nour able to visit 50 different locations and reach 19 potential different endings with widely divergent outcomes.<br> <br> Based on real-life events<br>Bury me, my Love is a “reality-inspired game”, a documented fiction that draws inspiration directly from real-world events. The original idea stems from an article written by Le Monde journalist, telling the story of Dana, a young Syrian woman who fled her country and is now living in Germany.<br> <br>This experience may affect the sensitivity of younger people.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/PKVns6TahJk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzU1MTI1LzE3NzE5MTcuanBn/original/fo28NE.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzU1MTI1LzE3NzE5MTYuanBn/original/hmLZ6N.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzU1MTI1LzE3NzE5MTUuanBn/original/o4Bc5R.jpg]]
<p>This is a game.<br><br>In it, you drive a bus through the desert. Maybe you listen to the radio! That's on you. I don't have a radio for you to download. Should you download a car, it'll probably come with a radio pre-installed.<br><br>Godspeed, bus driver<br></p>
[img width=500 [https://img.itch.zone/aW1nLzYwMjk1MTcuanBn/original/AGC2XS.jpg]]
<h3>- about -</h3>
<p>A digital playground where you can drag and drop images from your computer to plant flowers, grow vines, start fires and upload color into an expansive network of butterflowers! Uncover the memories of a past inhabitant as you explore the evolving space of the ecosystem and breathe new life from your files and interactions with the terrain.</p>
<p><br></p>
<p>⚘<br></p>
<blockquote><br>Spring renews from Winter in a few frames luminous GANHUA tulips grow at the corners now in a hyperlapse (expecting)<br><br>From a telephone post all I can see is the motion white, yellow, blue pixelated fields easing between 2 points<br><br>that cold, black oooze spills over my feet Fills the loose wrinkles in the bag<br><br>looped actions unfeeling , limiting run infinite between frames they are mutated then re-compiled
<br><br>60fps</blockquote>
<p>⚘</p>
<p><br></p>
<pre>- - - - - - - - - - - - - - - - - - - - -
- - - - experience is about 30 minutes long - - - -
- - - - - - - - - - - - - - - - - - - - -</pre>
<p><br></p>
<h3>- credits -</h3>
<p>design,code,art ~> <a href="https://twitter.com/funsworkings" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@funsworkings</a> </p>
<p>art,design ~> <a href="https://twitter.com/eastonself" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@eastonself</a></p>
<p>audio ~> <a href="https://twitter.com/certain_lives" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@certain_lives</a></p>
<p>assets ~> <a href="https://bit.ly/3tuR1II" target="_blank" rel="nofollow noopener" referrerpolicy="origin">link</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/8McWThJtgkA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTkwMjg3LzU4MzYyMTQucG5n/original/0BOxLK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTkwMjg3LzU4MzYyMTIucG5n/original/Us2tPt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTkwMjg3LzU4MzYyMTMucG5n/original/5N0XtO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTkwMjg3LzU4MzYyMTcucG5n/original/9VFx6G.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTkwMjg3LzU4MzYyMTYucG5n/original/YwcDxo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTkwMjg3LzU4MzYyMTUucG5n/original/dIFzt4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTkwMjg3LzU4MzYyMTgucG5n/original/Q%2BwcHp.png]]
<p><a href="https://github.com/asalazar516/Game-Off-Project" rel="nofollow noopener" referrerpolicy="origin">https://github.com/asalazar516/Game-Off-Project</a></p>
<p>Created for the Game Off Game Jam</p>
<p>A two player competitive snake! </p>
<p>Goal: </p>
<p>Eat the food to make the snake big before times run out. <br>Do not let the snake hit the wall or itself or each other.<br>Try to have the biggest snake!</p>
<p>Controls:<br>Player 1:<br>Snake Color: Purple<br>Up: W<br></p>
<p>Down: S</p>
<p>Left: A<br></p>
<p>Right: D</p>
<p>Return to main menu: Escape</p>
<p>Controls:<br>Player 2:</p>
<p>Snake Color: Orange<br>Up: Up Arrow<br></p>
<p>Down: Down Arrow<br></p>
<p>Left: Left Arrow<br></p>
<p>Right: Right Arrow<br></p>
<p>Return to main menu: Escape</p>
<p>Thanks for downloading and playing!</p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTk5NDMzLzkzMzMwMC5wbmc=/original/6wCrRU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTk5NDMzLzk3MjcxOS5naWY=/original/GfFQdY.gif]]
<p><strong>Calico</strong> is an interactive fiction engine for web games, powered by Inkle's <a href="https://www.inklestudios.com/ink/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">ink</a>. Designed as a replacement to the default Ink web player, Calico offers a borderline irresponsible number of new features, such as custom tags, keyboard shortcuts, full mobile compatibility, custom text transitions, and simple text styling and parsing.</p>
<p>Plus, thanks to a simple plug-in framework, Calico can be patched to support just about anything else, such as preloading files, storylets, saving, loading, rewinding to previous passages, and much, much more.</p><p>To see Calico in action, check out <a href="https://communistsister.itch.io/winter" target="_blank" style="font-size: inherit">Winter</a>, written by Freya Campbell and myself.<br></p>
<p>You can find a guide to the basics of ink <a href="https://github.com/elliotherriman/calico/blob/main/documentation/ink%20guide.md" target="_blank" rel="nofollow noopener" referrerpolicy="origin">here</a>. For a guide on how to build a game in Calico, head <a href="https://github.com/elliotherriman/calico/blob/master/documentation/getting%20started.md" target="_blank" rel="nofollow noopener" referrerpolicy="origin">here</a>.</p>
<p>Calico was developed alongside <a href="https://elliotherriman.itch.io/catmint" target="_blank" style="font-size: inherit">Catmint</a>, a simple application that can automatically compile your ink files for you. <br></p>
<details><summary><strong>Instructions</strong></summary>
<p>Calico is a work in progress. Right now, the documentation is lacking, thanks to real world responsibilities and my hands kind of hurting. Check out the guide above, but please don't hesitate to reach out to me if you have any issues — I'm right <a href="https://twitter.com/elliotherriman" target="_blank" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">here</a> on Twitter.<br></p>
<p>And likewise, if you're interested in helping develop this engine, clean up my possibly dangerous Javascript, or develop new patches, please don't hesitate to reach out. </p>
</details>
<details><summary><strong>Acknowledgements</strong></summary>
<p>Special thanks to Freya, Jemma, and every single person who let me talk their ear off about this engine.<br></p><p>Cover art by <a href="https://twitter.com/saracastically_" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">Sara Litzenberger</a>, whomst I very much love.</p><p>And thanks to the Bitsy community, and all your wonderful hacks, for being the inspiration for this little project.</p></details>
[img width=500 [https://img.itch.zone/aW1nLzU4NTEyNjUucG5n/original/M23XZO.png]]
<p><img src="https://img.itch.zone/aW1nLzQ4MDUxMzAucG5n/original/PyyF42.png" loading="lazy"><br></p>
<p><br></p>
<p>Calico is a day-in-the-life community sim game where you are given an important and adorable task: rebuild the town’s cat café and fill it with cute and cuddly creatures! Build up your café by filling it with cute furniture, fun decorations, yummy pastries, and get it bustling with animals again!<br><br>Calico is meant to make you feel all warm and fuzzy inside. The gameplay reflects that with a laid back, low stress creative environment to explore and play in.<br><br><strong>Character Creator</strong><br>The Calico character creator will allow players to create their own magical person to experience the world through. There will also be plenty of clothing to choose from and collect throughout the game!<br><br><strong>All animals are interactive!<br></strong><br>The player will encounter many animals in the world of Calico. Once befriended, you can name them, add them to your party, or send them to their new home at the café. Animals in your party will follow you everywhere you go and listen to your commands. The animals in your café will relax and play with any customers that pop in for a visit.<br><br><strong>Café Decoration</strong></p>
<p>Your task in Calico is to bring the town's café back to life again. This isn’t just achieved by bringing in cats and animals alone, however – you can also decorate your café with furniture of different styles to create the perfect cozy home for you and your animals!<br><br><strong>Cooking Minigame</strong><br></p>
<p>Create a wonderful café by making yummy bakes goods and drinks for the townspeople! Learn about your follow villagers to pick and choose their favorite foods to sell!<br><br><strong>Magic of Calico</strong><br></p>
<p>We wanted there to be no limits to how you could find happiness in Calico. Magic potions are a system that allow us to break the rules of what is possible and to find what would be most fun. Example: the More-to-pet Potion allows the player to magically turn a single animal giant-sized! You can hang out with a giant animal, or even ride a giant cat!<br><br>Links:</p>
<p>Check patch notes here! <a href="https://whitethorndigital.com/calicopatchnotes" rel="nofollow noopener" referrerpolicy="origin">https://whitethorndigital.com/calicopatchnotes</a></p>
<p>Contact us at info@calicogame.com if you need any help!<br><a href="https://whitethorndigital.com/calico" rel="nofollow noopener" referrerpolicy="origin">Website</a><br><a href="https://twitter.com/calicogame" rel="nofollow noopener" referrerpolicy="origin">Twitter</a><br><a href="https://slide20xx.bandcamp.com/album/calico-original-soundtrack" rel="nofollow noopener" referrerpolicy="origin">Soundtrack</a><br><a href="https://discord.gg/2RfZQpx" rel="nofollow noopener" referrerpolicy="origin">Discord</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODU2NDQwLzQ4MDUwNDkuanBn/original/GR3sZ9.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODU2NDQwLzQ4MDUwNTAuanBn/original/Rc9yXP.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODU2NDQwLzQ4MDUwMjcucG5n/original/4I2QQw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODU2NDQwLzQ4MDUwNTIuanBn/original/pydLCo.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODU2NDQwLzQ4MDUwMjYucG5n/original/upAVDb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODU2NDQwLzQ4MDUwNTEuanBn/original/ln%2Boee.jpg]]
<p>In this calm sailing adventure, you'll use different navigation techniques to find the island Mystico. <br>You'll get hints from differnet island villagers or debris you find along your journey. Use the sun, stars and your guts to find the right way around this vast ocean to find your next goal. But you could also just sail in one direction and take a few deep breaths to relax for a few minutes.<br><br>This is a bit more polished version of a GGJ2021 entry which you can find here:<br><a href="https://globalgamejam.org/2021/games/horizon-edge-9" rel="nofollow noopener" referrerpolicy="origin">https://globalgamejam.org/2021/games/horizon-edge-9</a><br><br>Controls:</p>
<p>W - Speed up<br>S - Speed down <br>A - Steer left <br>D - Steer right <br>Left click and drag - orbit camera<br>Interact with the UI with the mouse.</p>
<p>Sorry for not having controller support.</p>
<p><br></p>
<p>Credits: </p>
<p>Julian Viezens <a href="https://twitter.com/viezensj" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@viezensj</a> : programming, shader, modelling<br>Sebasitan "Hati" Krause <a href="https://twitter.com/HatiEth" rel="nofollow noopener" referrerpolicy="origin">@HatiEth</a> : programming, modelling, UI<br>Mathew Varkki <a href="https://twitter.com/rayvshimself" rel="nofollow noopener" referrerpolicy="origin">@rayvshimself</a> : programming, audio, shader<br>Kai Eschmann <a href="https://twitter.com/soulmoll" rel="nofollow noopener" referrerpolicy="origin">@soulmoll</a> : programming</p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTE4MzM2LzUxOTI1MTgucG5n/original/J9IoBa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTE4MzM2LzUxOTI1MTcucG5n/original/7NfdBR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTE4MzM2LzUxOTI1MTkucG5n/original/C8iShZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTE4MzM2LzUxOTI1MjAucG5n/original/p4VC7n.png]]
<p>VECTORS: ACHIEVED...ENGINE: CRITICAL...SHIELDS: CRITICAL...FUEL: CRITICAL...WEAPONS: CRITICAL...EXISTENCE: CONFIRMED</p>
<p>LOAD:</p>
<p>STORE PAGE</p>
<p>Can Androids Pray: Blue is a sitcom-length choice-based narrative experience about two angry female mech pilots at the end of the world, and God. As featured at the Victoria & Albert Museum of Dundee, A.MAZE 2019, Game Devs of Color Expo 2019, and the EGX Rezzed Leftfield Collection.</p>
<p>It is a companion piece to Can Androids Pray: Red, which uses red colors. Both versions can be bought in a bundle for the same price of a single game at <a href="https://itch.io/b/343/can-androids-pray" target="_blank">this link</a>.</p>
<p>WRITTEN BY: Xalavier Nelson Jr. / <a href="https://twitter.com/WritNelson" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@WritNelson</a><br>DEVELOPED BY: Natalie Clayton / <a href="https://twitter.com/ScarletCatalie" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@ScarletCatalie</a><br>MUSIC BY: Priscilla Snow / <a href="https://twitter.com/ghoulnoise" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@ghoulnoise</a></p>
<p>Content warnings for suicide, religious themes, and (military-censored) profanity.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDQ2ODQ5LzIyNjQ1NDgucG5n/original/6eJboa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQ2ODQ5LzIyNjQ1NDYucG5n/original/0H0B95.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQ2ODQ5LzIyNjQ1NDcucG5n/original/KApuZ1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQ2ODQ5LzIyNjQ1NDkucG5n/original/vwfK8A.png]]
<p><span style="color: inherit"><strong></strong></span><span style="color: inherit; font-size: inherit">The </span><strong style="color: inherit; font-size: inherit">CanariPack 1BIT TopDown</strong><span style="color: inherit; font-size: inherit"> was meant to help you complete your game with graphics and music in a </span><strong style="color: inherit; font-size: inherit">simple but effective 1BIT style</strong><span style="color: inherit; font-size: inherit">! Whether it's a </span><strong style="color: inherit; font-size: inherit">Zelda-like, a Beat'Em Up, a Shoot'Em Up, a Roguelike or a Racing game</strong><span style="color: inherit; font-size: inherit">! </span></p>
<p>Designed by game developer and expert pixel artist <strong><a href="https://twitter.com/johanvinet" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Johan Vinet</a></strong> (founder of <a href="https://twitter.com/canarigames" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Canari Games</a>. Worked on Flinthook, Mercenary Kings Reloaded, Rivals Of Aether, Shovel Knights Showdown...), this very complete pack contains assets made with the greatest care.</p>
<p><img src="https://img.itch.zone/aW1nLzE3MDU5MTgucG5n/original/qojMxJ.png" loading="lazy"><br></p>
<p><strong>FEATURES:</strong><br></p>
<p><strong>A very versatile 16x16 tileset:</strong><br>Inspired by the classics, very versatile, allowing the realization of:</p>
<ul><li>Dungeon / Village / Forest / City / House interiors</li><li><strong>3 GameMaker's rooms</strong> given as examples with <strong>animated tilesets</strong> and <strong>autotiling support</strong> <em>(only for GameMakerStudio2).</em></li></ul>
<p><strong>Players' sprites (16x16):</strong></p>
<ul><li>3 heroes: Princess / Adventurer / Dog</li><li>Fully animated in all 4 directions: Idle / Walk / Push / Jump / Roll / Hurt / Attack / Death</li></ul>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzE3MDY2NzMuZ2lm/original/w1DDv%2F.gif" loading="lazy"><br></p>
<p><strong>Enemies' sprites:</strong></p>
<ul><li>4 enemies: Wizard / Blob / NegaBlob / Snake </li><li>Fully animated in the useful directions</li></ul>
<p><strong>35 items :</strong></p>
<ul><li>Key, sword, bomb, shield, gloves, hammer, chest, coin, pen, bow, mushroom, heart, pot, pot, potion, pick, shovel, bell, bell, boots, compass, feather, diskette, crown, harp, harp, leaf, mirror, gold bag, skull, skull, key, book, lamp, ring, scroll, shell, bananas, bone.</li></ul>
<p><strong>3 chiptune musics (click to listen):</strong></p>
<ul><li><a href="https://soundcloud.com/johanvinet/xbit-adventure?in=johanvinet/sets/xbit-canaripack" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Adventure theme</a> / <a href="https://soundcloud.com/johanvinet/1bit-dark-cave?in=johanvinet/sets/xbit-canaripack" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Dark Cave theme</a> / <a href="https://soundcloud.com/johanvinet/1bit-eerie?in=johanvinet/sets/xbit-canaripack" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Eerie theme</a></li></ul>
<p><strong>17 sound effects:</strong></p>
<ul><li>3 attack / 2 death / 1 fall / 2 hurt / 3 jump / 1 land / 1 pickup / 1 menu-back / 1 menu-valid / 1 menu-cursor.</li></ul>
<p><strong><br>GAMEMAKER STUDIO 2:</strong> In the package you'll found a YYZ file. Just import it in GameMaker Studio 2 and you'll be able to enjoy some fancy features like <strong>Tiles Animations</strong> and <strong>AutoTiling</strong>!</p>
<figure><img src="https://img.itch.zone/aW1nLzE3MDU4NjUuZ2lm/original/eKTTpg.gif" loading="lazy"><span></span></figure>
<p><strong></strong><strong>LICENSE</strong>:
<br><em>You may use these assets in <strong>personal </strong>or <strong>commercial </strong>projects. You may modify these assets to suit your needs. <strong>You can NOT re-distribute the file</strong>, no matter how much you modify it you can use it but <strong>not share or re-sell it</strong>.</em><br></p>
<p><strong>ENJOY!</strong></p>
<p><em><br>ALSO AVAILABLE: </em></p>
<p><iframe frameborder="0" src="https://itch.io/embed/342987?bg_color=FFD02B&fg_color=1b1a25&link_color=e0318a&border_color=FFD02B" width="208" height="167"></iframe><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/qID5JWnyIVw" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzQyOTY1LzE3MDEwMDMucG5n/original/rjpqph.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQyOTY1LzE3MDEwMDQucG5n/original/iIukUF.png]]
<p>Battle, earn new cards and build your deck in this roguelite where your hand is your health: if you get hit when you don't have any cards, it's game over. If you prevail, however, you get to draft new cards for your deck before moving on to the next fight.</p>
<ul><li>Battle your way through 9 rooms against enemies with custom decks.</li><li><em class="">Your hand is your health</em>. Take damage while your hand is empty, you die.</li><li>Build up your deck after each battle by drafting from over 60 unique card.</li></ul>
<p>This game is the first I've ever shipped. It was originally developed for the <a href="https://itch.io/jam/7drl-challenge-2019" target="_blank">7drl 2019</a> and I've been adding features and cards since.</p>
<p><strong>Credits<br></strong></p>
<ul><li>Game designed and developed by me, Joeri Bakker.</li><li>Music from the excellent album <a href="https://fossergrim.bandcamp.com/track/below" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Below</a> by <a href="https://fossergrim.bandcamp.com/" rel="nofollow noopener" referrerpolicy="origin">Fossergrim</a> (<a href="https://open.spotify.com/artist/4YjNxjdAWGO3TYCswpVMY4" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Spotify</a>, <a href="https://fossergrim.bandcamp.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Bandcamp</a>, <a href="https://itunes.apple.com/us/artist/fossergrim/1493417669" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Apple Music</a>, <a href="https://tidal.com/browse/artist/10785297" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Tidal</a>)</li><li>Sound effects from Oryx Design Labs' <a href="https://www.oryxdesignlab.com/products/8-bit-sounds" target="_blank" rel="nofollow noopener" referrerpolicy="origin">8-Bit Sounds pack</a></li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/eQJF66c4bpc" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzgxNTkwLzQ2OTMxNjYucG5n/original/aEzkYw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzgxNTkwLzQ2OTMxNjcucG5n/original/cp0wxH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzgxNTkwLzQ2OTc3NDYucG5n/original/k0gVeE.png]]
<p><br></p>
<h2 class="text-center"></h2>
<h2 class="text-center">While doing routine deliveries in a moving city, Postman Maggie and her companion Vale seek out a house that was left behind. Who answers the door of that house was the last person either of them expected... <strong></strong></h2>
<p><br></p>
<hr style="height:2px; color:#611; background-color:#611">
<p><em><strong>Canvas Colors</strong></em> is a slice of life story around the Postman Maggie and her traveling companion: A young girl named Vale. <br></p>
<p class="text-center"> - Created for the NaNoRenO 2021 game jam. - <br></p>
<hr style="height:2px; color:#611; background-color:#611">
<p><br></p>
<h2>Characters:</h2>
<p><img src="https://img.itch.zone/aW1nLzU1NjUzMDAucG5n/original/%2BJeqjG.png" loading="lazy"><br><strong>Vale</strong> – A young magician with an interest in flowers. She's quick to shift her attention to whatever shiny new thing interests her.<br></p>
<p><img src="https://img.itch.zone/aW1nLzU1NjUzMTkucG5n/original/YfBF3f.png" loading="lazy"><br><strong>Maggie</strong> – A young woman who works as a postman. Along with delivering mail, her profession also includes maintaining order and upholding the law using her sword. Her pointy ears and her feathery antennae marks her as part of a race called Vanes. <br></p>
<p><br></p>
<h2>Features:</h2>
<ul><li>Game Length: ~1 hour</li><li>Approx. 10k words</li><li>2 endings</li><li>13 CGs</li><li>Original backgrounds and artwork</li><li>Original soundtrack<ul><li>Sound effects used from the public domain</li></ul></li></ul>
<h2>Team:</h2>
<ul><li>BG/CG/Sprite artist – <a href="https://twitter.com/498_ffgghhjj" target="_blank" rel="nofollow noopener" referrerpolicy="origin">ffgghhjj</a></li><li>"Shrublands" BG artist - CF2</li><li>Writer - Lambic</li><li>Programmer - forgetful</li><li>Music - <a href="https://jamesjmusic.bandcamp.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">James J</a> & Fuel</li><li>Editing - <a href="https://twitter.com/Hoakkun" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Hoa</a></li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTc5MzUyLzU1NjU5MzQuanBn/original/5nYYsV.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc5MzUyLzU1NjU5MzUuanBn/original/FvkgWl.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc5MzUyLzU1NjU5MzYuanBn/original/wh9o19.jpg]]
<p>
<strong>Card Clash</strong> is a quick game that sees 2 players attacking and counter-attacking with cards whose type preference beats the previously played card. If your opponent can’t counter your attack with any of the 4 cards in their hand, you win the round! But each successive round adds a new set of stronger cards into both players’ decks, so try to throw the first attack to knock out your opponent before they get a chance to play a devastating attack! The first to win 2 rounds wins the game.</p>
<hr>
<p>The print and play components included on this page include both a full-ink and a low-ink version, as well as optional card backs intended for the full-ink version. Both versions include 2 decks of 40 cards each.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/EnqypsRKWc8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTMxMDc2LzYxNDAxMi5wbmc=/original/6EhygT.png]]
<h2>Print copies available <a href="https://www.exaltedfuneral.com/products/cast-away" target="_blank" rel="nofollow noopener" referrerpolicy="origin">in the US</a> & <a href="https://rattiincantati.com/products/cast-away-pdf" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Canada</a>!</h2>
<p><strong>Cast Away is the definitive tabletop survival RPG</strong>. Its Diminishing Dice mechanics reflect the ever-worsening condition of survivors in the aftermath of a disaster—without tracking Hit Points or burdensome injury tables. Death is permanent, therefore, we've created a Haunting system that keeps players engaged long after their characters pass away. Cast Away contains a modular set of guidelines and is easily adapted to any setting, environment, or circumstance. </p>
<p>Your purchase includes:</p>
<blockquote>- Survivor's & Navigator's Guide<br>- Drop-in Survival Scenario<br>- Printer Friendly Character Sheets<br>- 3 BONUS Adventures</blockquote>
<h2>Bonus Adventures:</h2>
<h3><a href="https://afterthought-committee.itch.io/brain-food" target="_blank">Brain Food</a> - A zombie apocalypse
</h3>
<h3><a href="https://afterthought-committee.itch.io/ground-control" target="_blank">Ground Control</a> - A space odyssey
</h3>
<h3><a href="https://afterthought-committee.itch.io/cursed-crystal" target="_blank">Cursed Crystal</a> - A fantasy escape
</h3>
<p></p>
<h2><div class=""><iframe width="500" height="281" src="https://www.youtube.com/embed/JLggU2QgSWM" frameborder="0" allowfullscreen=""></iframe></div></h2>
<h2></h2>
<h2>What do you need to play?</h2>
<p>Cast Away is a tabletop RPG. You'll need: <br> 2+ Players & at least one set of Polyhedral Dice (minus the d20) </p>
<h3><u>Credits</u></h3>
<p><strong></strong>Written by Joe O'Brien & Reilly Qyote<br>Layout & Design by Reilly Qyote<br><em>Special Thanks To: </em><br>B, Levimax, Clint, <a href="https://quorumofsand.itch.io/" target="_blank">Matthew K</a>, and <a href="https://rugose-kohn.itch.io/" target="_blank">Rugose Kohn</a><br> for all your support and inspiration.<br><br><u><strong>We’d love to hear from you!</strong></u></p>
<p>If you have stories to share, want to give us feedback, or just wanna chat about RPGs, feel free to drop us a line at <a href="mailto:afterthoughtcommittee@gmail.com" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">afterthoughtcommittee@gmail.com</a>.</p>
<p>Sometimes we make stuff on <a href="http://twitch.tv/afterthoughtgames" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Twitch</a>.<br><br>Track us down on <a href="https://discord.gg/d5nh2bHPNP" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Discord</a>.<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/JLggU2QgSWM" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODY4MTc3LzUzMjQ3NjQuanBn/original/O0ft1z.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODY4MTc3LzQ5MTU5OTUuanBn/original/fy5ARw.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODY4MTc3LzQ5MDg5NzcuanBn/original/3%2BMD1J.jpg]]
<p>You wake up in a castle with no memory of who you are or how you got here. The only thing in this room besides you is a weapon, and maybe some armor. Dark creatures are after you, and you must fight them to get your memories back.</p>
<p>This is a single-player TTRPG that uses dice and a deck of Tarot cards. Using random tables and your own intuition to help, you will explore this dark castle and attempt to get your memories back to you by any means necessary. Along the way, you may find helpful NPCs who deal in treasure to assist you. Explore themed zones that are randomly generated by dice and unlock ancient magics to assist you on your quest. In this game, you will:</p>
<ul><li>Recover lost memories in the form of Tarot cards and use them to cast spells</li><li>Fight beasts, monsters, undead, and demons using a simple OSR-like dice system</li><li>Learn about your character as you play the game, starting with no more than your name and fleshing out your backstory as you recover your memories</li><li>Randomly generate a magical castle to explore, with secrets and challenges around every corner</li></ul>
<p>Greatly inspired by the Castlevania video game series, as well as several OSR-style tabletop RPGs such as Mörk Borg and Errant RPG, reclaim your memories and escape the castle!</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNzI3My81OTUwODQyLnBuZw==/original/8QegX3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNzI3My81OTUwODQzLnBuZw==/original/OcrlK6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNzI3My81OTUxOTgzLnBuZw==/original/hysztK.png]]
<p>- 150+ Assets to make Controller UI overlays for all platforms
<br>- Casual style<br>- Customizable Buttons and Pads<br>- Also includes Mobile Joysticks<br>- Easy to use</p>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/IEpjDr-d2us" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNzIzMS81ODU5MDMyLnBuZw==/original/NiHNZq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNzIzMS81ODU5MDMzLnBuZw==/original/hcFVVQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNzIzMS81ODU5MDM0LnBuZw==/original/PRSE3v.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNzIzMS81ODU5MDM1LnBuZw==/original/tQOqRL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNzIzMS81ODU5MDM5LnBuZw==/original/evQZGh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNzIzMS81ODU5MDQwLnBuZw==/original/2MDVoZ.png]]
<p>Cat Ace is small aerial combat, arcade shooter.</p>
<p><a href="http://factor13.bandcamp.com/album/cat-ace" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Get the soundtrack!</a><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/bDLhIQ6bJPc" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjMxODQ5LzEzNzc0OTUucG5n/original/wTtyT8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxODQ5LzEzNzc0OTMucG5n/original/l4pIfP.png]]
<p>Are you a cat lover? Would you like to have a house just for them? How about building a tower with them?
</p>
<p>In Cat Tower, your grandmother has gone on a trip around the globe and has trusted you with taking care of her kittens. But you know what they say: "One is never enough!"</p>
<p>Play with them, feed them and love them!</p>
<p>🐱 <strong>Features </strong>🐱</p>
<p>🌼 The more the merrier: Go to your garden and use a cat toy to lure cats to adopt!</p>
<p>😻 Gotta have 'em all! There are more than 50 kittens waiting to be adopted. Some of them even look "familiar", can you recognize them all?</p>
<p>📷 Cute memories: Do you love taking pictures of your pets? Take a picture of your cats or look them up in the album to share with your friends!</p>
<p>🏡 Make Cat Tower your own by decorating it just the way you like it and let your cats enjoy the new style!</p>
<p>Cat Tower is a game for everyone, people who love having pets and those who enjoy a relaxing experience. So don't miss your chance and download Cat Tower!</p>
<p>If you find any issue you can report it in the comments section.<a href="https://forms.gle/WRMAnTB5HeMwDLXx7" rel="nofollow noopener" referrerpolicy="origin"></a></p>
<p><em>This game contains ads</em><br></p>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/cA7Qsa_wWAs" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODAyNDA1LzQ0OTM3MjkucG5n/original/olD%2BcT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODAyNDA1LzQ0OTM3MzEucG5n/original/l1V0Jw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODAyNDA1LzQ0OTM3MjcucG5n/original/cvNogg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODAyNDA1LzQ0OTM3MzAucG5n/original/oaL3ow.png]]
<p>
</p><p>Play videos on a glitchy tv in a rainy attic. Supports currently h.264 format.</p><p>CONTROLS</p>
<p>- <strong>Trigger/Interact</strong> - Replay Intro Video<br></p>
<p>- <strong>Grip button</strong> - Open videos folder</p>
<p>- <strong>Joypad right/left</strong> - Next/Previous video<br><br></p>
<p>Video compatibility</p>
<p>- H.264 supported. Other formats might not work. Works best on videos that are downloaded from streaming services using a downloader.<br></p>
<p>This has proven to be the best method to get movies:<br><a href="https://www.reddit.com/r/answers/comments/9qop1v/which_is_the_best_free_youtube_downloader_and/e8b2aei?utm_source=share&utm_medium=web2x" rel="nofollow noopener" referrerpolicy="origin">https://www.reddit.com/r/answers/comments/9qop1v/which_is_the_best_free_youtube_...</a><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/3kjjO_hP13E" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1nLzMwNTg0MTMucG5n/original/6LvlrS.png]]
<p>Catlandia: Crisis at Fort Pawprint, is a 2D RPG featuring cats! The first game in the Catlandia world, players embark upon a short adventure to reveal and squash a canine threat to the peaceful Cat Kingdom.<br><br>Trout Lake is a vital component in the Cat Kingdom's fish supply lines. But rumours of dogs in the nearby Whisker Woods has forced the Cat Kingdom to establish the outpost of Fort Pawprint to investigate. You are Nugget, a brave Catmando stationed at the fort. Along with your sidekick Sausage, you are charged to sort this whole mess out.</p>
<ul><li><strong>Create a fully customizable cat </strong>by choosing colours, shapes, and patterns</li><li>Collect costume items to <strong>make your cat cuter</strong> — and unlock powerful techniques</li><li><strong>Take your cat into battle</strong> against dogs, pigeons, and other fearsome creatures</li><li>Become friends with other cats of <strong>varying degrees of helpfulness</strong>!</li><li><strong>Take on exciting quests</strong>!</li></ul>
<p>Explore the Whisker Woods and defeat the dogs — for the glory of the Cat Kingdom!<br><br>Catlandia is developed by a small team of independent developers as a passion project. We love cats, and wanted to create an opportunity for you to be a cat yourself. We also think there's an audience for games you don't have to play forever — by design, we created Catlandia as an experience that can be picked up, enjoyed, and finished without a huge investment of time — yet allow it to fit within a larger narrative. We're excited to share this first peak into Catlandia with the Itch community.</p>
<p>This version of Catlandia includes the free Trouble at The Tall House update — a story expansion that lets your cats explore new areas, fight new bosses, and find more costumes!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/nNOuHN7qOHE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjYzNDE4LzM1NzUxMTAucG5n/original/ZL8gqT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjYzNDE4LzM1NzUxMTEucG5n/original/wABIMh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjYzNDE4LzM1NzUxMTUucG5n/original/vX5wNy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjYzNDE4LzM1NzUxMTMucG5n/original/Bug%2B5%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjYzNDE4LzM1NzUxMTIucG5n/original/9jSHMI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjYzNDE4LzM1NzUxMTQucG5n/original/Akez7r.png]]
<p><em></em><em><strong>Catlateral Damage</strong></em> is a first-person destructive cat simulator where you play as a cat on a rampage, knocking as much stuff onto the ground as possible. See the world through the eyes of a cat! Like other first-person games, you can walk and look around, jump, and crouch. Unlike other first-person games, your primary weapons are your two cat paws, which you can use to swipe at and knock objects onto the floor.</p>
<ul><li>Play from the perspective of a crazy domestic house cat. </li><li>Destroy precious collectibles and expensive electronics with your little paws. </li><li>Make a mess of every room in the house, from the bedroom to the kitchen. </li><li>Procedurally-generated houses for endless replayability. </li><li>Loads of collectibles, unlockable cats, and power-ups. </li><li>Over 230 photos of real-life cats to find and collect.</li></ul>
<p><strong>Epilepsy warning</strong>: Some in-game effects may be problematic for some players. These can be disabled under the "Audio/Visual" tab of the "Options" menu on the title screen.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/t51Mkj1fR_Q" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzYxNjcvMTU3NDU2LnBuZw==/original/%2FXhWgf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYxNjcvMTU3NDU3LnBuZw==/original/MjfWY%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYxNjcvMTU3NDU4LnBuZw==/original/%2Fg8kh6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYxNjcvMTU3NDYxLnBuZw==/original/EqSyhY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYxNjcvMTU3NDU5LnBuZw==/original/SlUVdQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYxNjcvMTU3NDYzLnBuZw==/original/50KdxF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYxNjcvMTk2NjkzLnBuZw==/original/ofwPfl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYxNjcvMTk2Njk0LnBuZw==/original/Y6dZpq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYxNjcvMTk2Njk2LnBuZw==/original/E2KC%2Bn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYxNjcvMTU3NDYyLnBuZw==/original/3AWCwH.png]]
<p>You play as the cat, in a place created just for you and your friends. You get to go on a nice adventure with them where nothing goes wrong and everything is perfect, as long as your friends stay there, right by your side.</p>
<p>Over the course of the game, you get to explore 120 rooms and discover new abilities like the hookshot and light burst.</p>
<p>A world editor is included.<br></p>
<p></p>
<p><strong>This game contains dark story elements, including strong feelings of abandonment and detachment from reality. This game is not for children.</strong></p>
<p><strong><br></strong></p>
<p><strong>Minimum system requirements:<br></strong></p>
<p><strong>This game only supports 64-bit systems.</strong></p>
<p><strong>OS:</strong> Windows 7, macOS 10.12 Sierra, Ubuntu 16.04<br><strong>Processor:</strong> 6th Generation Intel Core i3<br><strong>Graphics:</strong> Minimum required OpenGL version is 3.2<br><strong>Memory:</strong> 400 MB RAM<br><strong>Storage:</strong> 400 MB available space<br><strong>Additional notes:</strong> Memory listed indicates available free memory for the game.<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/jnZr6gtWJjk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTA4ODk2LzI2NTg5NzYucG5n/original/0svp8i.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA4ODk2LzI2NTg5NzcucG5n/original/oEZ1mH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA4ODk2LzI2NTg5NzgucG5n/original/H4zFs2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA4ODk2LzI2NTg5NzUucG5n/original/PtZw3%2F.png]]
<p><strong>Cats are Liquid - A Better Place is available now (with more rooms and more abilities), and you should totally check it out by clicking <a href="https://lastquarterstudios.itch.io/cats-are-liquid-a-better-place">here</a>!</strong></p>
<hr>
<p>
Cats are Liquid - A Light in the Shadows is a 2D platformer about a cat with the ability to transform into liquid.<br></p>
<p>
The game has 90 levels, that are spread across 9 different worlds. It has a minimalistic but colorful style. Along the way the game introduces new mechanics, like flying and summoning bombs to break down walls.
</p>
<p>
The story is about a cat whose owner locked her in a set of rooms. She desperately wants to get out, but the rooms just keep continuing. Along the way the cat meets a new "friend" and gains new abilities. The story is told through small in game text pieces.</p>
<hr>
<p>
More info about the game can be found here:
<a href="http://catsareliquidgame.tumblr.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">catsareliquidgame.tumblr.com</a>
</p>
<p>
The latest news about the game can be found on the
<a href="http://twitter.com/lastquarterdev" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@lastquarterdev</a> Twitter feed.
</p>
<hr>
<p>
<a href="https://twitter.com/search?q=%23CatsAreLiquid" target="_blank" title="#CatsAreLiquid on Twitter" rel="nofollow noopener" referrerpolicy="origin">#CatsAreLiquid on Twitter</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzY3NzIvNDc4OTQxLnBuZw==/original/Ajykbz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY3NzIvNDc4OTQyLnBuZw==/original/5pLsQu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY3NzIvNDc4OTM5LnBuZw==/original/QMfMbV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY3NzIvNDc4OTQzLnBuZw==/original/Soh0Qg.png]]
<p>Catty & Batty: The Spirit Guide is a <strong>casual couch co-op puzzle game</strong>, inspired by Lemmings and Tower Defense! Play as Catty or Batty and build a path to guide spirits home.</p>
<h3>Features:</h3>
<p>🗺️ Campaign with 30 levels for<strong> 1-2 players (local co-op)<br></strong>🖋️ <span></span>Over 800 hand-drawn sprites<br>🎞️ <span></span>Over <span></span>150 animations<br>🕬 Over <span></span>100 new sounds<br>🎼 Original soundtrack<br>🎮 100% Controller support<br>🌈 <span></span>6 color modes (white, sepia, gray, dark, inverted, gameboy)<br>⏱️ About three hours of gameplay (including New Game+)<br><strong>✔️ Free steam key if you get it on itch.io! </strong>(Steam key not included in the World Land Trust bundle)<strong></strong></p>
<p><strong><em>Also available on Nintendo Switch, PlayStation 4 and 5, Xbox Series X|S, Xbox One.</em><br></strong></p>
<iframe src="https://store.steampowered.com/widget/1483470/" frameborder="0" width="646" height="190"><span class=""></span></iframe>
<iframe width="720" height="450" src="https://www.youtube.com/embed/u8HIWCTROV0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTI5NzgyLzQ2NDM2ODIucG5n/original/daeQA5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI5NzgyLzc1ODQxNDAucG5n/original/T5mGJl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI5NzgyLzc1ODQxNDEucG5n/original/yWOlzn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI5NzgyLzc1ODQxMzkucG5n/original/ug2WrP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI5NzgyLzQ2NDM2NzkucG5n/original/3jAz%2Fd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI5NzgyLzQ2NDM2ODAucG5n/original/N9ruDX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI5NzgyLzQ2NDM2ODEucG5n/original/ozKFoJ.png]]
<h3>Stardate: 15th April, 2088
</h3>
<p>The starship Equinox is under attack from Stormlord and his robotic minions, the Exolons! You're the crew's only hope. Take your Samurai-1 fighter, find Captain Solomon's Key, clear the decks of evil robots, and save the Equinox from certain destruction!
</p>
<p>Cecconoid is an 8-bit inspired, flick-screen, twin-stick-shooter, set in an alternate dimension where the pixels are still chunky, and the bad guys are black and white. <br></p>
<p> Except for their dangly red bits.<strong>..<br></strong></p>
<h3>Also includes...</h3>
<p> A full, bonus arcade game; <strong>Eugatron! </strong>50 levels of Robotron-style, twin-stick, arena-based shooting, direct from the 80s and remixed for your pleasure. Can you be a <strong>Eugenius?</strong><br></p>
<h2>Features</h2>
<ul><li>50+ Rooms</li><li>6 different power-ups</li><li>High Score Table</li><li>Full, bonus arcade-game, <strong>Eugatron<br></strong></li></ul>
<p>Also available on:</p>
<ul><li> iOS: <a href="https://apps.apple.com/us/app/cecconoid/id1476360841" rel="nofollow noopener" referrerpolicy="origin">https://apps.apple.com/us/app/cecconoid/id1476360841</a></li><li>Android: <a href="https://play.google.com/store/apps/details?id=com.tdp.cecconoid" rel="nofollow noopener" referrerpolicy="origin">https://play.google.com/store/apps/details?id=com.tdp.cecconoid</a></li></ul>
<h4>EPILEPSY WARNING</h4>
<p>This game contains flashing images that could potentially trigger seizures for people with photosensitive epilepsy. <strong><em>Like, seriously, the entire game flashes, ALL THE TIME, and there's no option to change it.</em></strong></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/lFtRonr1VqM" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzk0NjI1LzIxMTUyODEuanBn/original/THPmkR.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk0NjI1LzIxMTUyNzYuanBn/original/KK3t9z.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk0NjI1LzIxMTUyNzkuanBn/original/gHZjtH.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk0NjI1LzIxMTUyODAuanBn/original/wsOjrW.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk0NjI1LzIxMTUyNzcuanBn/original/P0UiHu.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk0NjI1LzIxMTUyODMuanBn/original/LIIjtK.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk0NjI1LzIxMTUyNzguanBn/original/3Z0NZ5.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk0NjI1LzIxMTUyODIuanBn/original/qGLpwC.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk0NjI1LzI2MzEwMDMuanBn/original/nwddM6.jpg]]
<h1>A game by Roll&PlayMedusa</h1>
<figure><img src="https://img.itch.zone/aW1nLzI1NzY3MDEuanBn/original/kwhDId.jpg" style="max-width: 100%" loading="lazy"></figure>
<p><strong>Rules of play:</strong> version 1.3<br><strong># of players: </strong>1-4<br><strong>Length:</strong> 15-30 minutes<br><strong>Age:</strong> 6+</p>
<p><strong>Components:</strong></p>
<ul><li>Two versions of the game page: DeLuxe & LowInk.</li><li>A Score page to keep track of scores.</li><li>From 2 to 5 six-sided dices, depending on the number of players. Not included.</li><li>Up to 4 different colored pens. Not included.</li></ul>
<p class="text-center"><strong><em>¿Versión en español? ¡<a href="https://rollandplaymedusa.itch.io/celeste">Pulsa aquí</a>!</em></strong></p>
<p><img src="https://img.itch.zone/aW1nLzI1NzY3NDQuanBn/original/0B2e7N.jpg" style="max-width: 100%" loading="lazy"></p>
<p><em>CELESTE is a Roll&Write game for 1 to 4 players, ready to print and play! You just need up to 5 six-sided dice (D6) and up to 4 different colored pen, depending on the number of players.</em></p>
<ul><li><strong></strong><strong>1 Player:</strong> 2D6 + 2 pen</li><li><strong>2 Players:</strong> 3D6 + 2 pen</li><li><strong>3 Players: </strong>4D6 + 3 pen</li><li><strong>4 Players:</strong> 5D6 + 4 pen</li></ul>
<p>The DELUXE version ($7) includes:</p>
<ul><li><strong>4 DELUXE boards</strong> featuring full-color illustrations and stars placed in different positions.</li><li><strong>4 LOW INK boards </strong>to play and save ink with each print.</li><li><strong>SCORE page</strong> to count scores.</li><li><strong>Game rules.</strong> </li></ul>
<p>The LowInk version ($3) includes:</p>
<ul><li><strong>4 LOW INK boards </strong>to play and save ink with each print.</li><li><strong>SCORE page</strong> to count scores.</li><li><strong>Game rules.</strong></li></ul>
<p><span></span>Celeste is a game designed by <em><a href="https://www.linkedin.com/in/albyojeda/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Alby Ojeda</a></em> and illustrated by <em><a href="https://www.instagram.com/aliciawarhola/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Alicia Warhola</a>.</em></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTA3MDQ3LzI2Mjg5NzAuanBn/original/ZT7Ibf.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA3MDQ3LzI2Mjg4MzUuanBn/original/NW58Nq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA3MDQ3LzI2Mjg0NzMuanBn/original/w3l3eP.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA3MDQ3LzI2Mjg0NzYuanBn/original/XDUZqq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA3MDQ3LzI2Mjg0NzUuanBn/original/rNraUX.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA3MDQ3LzI2Mjg0NzQuanBn/original/vKzZ73.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA3MDQ3LzI2Mjg0NzcuanBn/original/0NfeHb.jpg]]
<p>Help Madeline survive her inner demons on her journey to the top of Celeste Mountain, in this super-tight, hand-crafted platformer from the creators of multiplayer classic TowerFall.</p>
<p><img src="https://img.itch.zone/aW1nLzEwMjQyNzAucG5n/original/9q4HnH.png" loading="lazy"><br></p>
<ul><li>A narrative-driven, single-player adventure like mom used to make, with a charming cast of characters and a touching story of self-discovery</li><li>A massive mountain teeming with 700+ screens of hardcore platforming challenges and devious secrets</li><li>Brutal B-side chapters to unlock, built for only the bravest mountaineers</li><li>IGF “Excellence in Audio” finalist, with over 2 hours of original music led by dazzling live piano and catchy synth beats</li><li>Pie</li></ul>
<p>The controls are simple and accessible - simply jump, air-dash, and climb - but with layers of expressive depth to master, where every death is a lesson. Lightning-fast respawns keep you climbing as you uncover the mysteries of the mountain and brave its many perils. </p>
<p class="text-center"><em>This is it, Madeline. Just breathe. You can do this.</em></p>
<p><img src="https://img.itch.zone/aW1nLzEwMjQyNzIucG5n/original/cKNZVV.png" loading="lazy"></p>
<p><a href="https://radicaldreamland.bandcamp.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzEwMjQyNzMucG5n/original/uG8bIo.png" alt="Buy the Soundtrack" title="Buy the Soundtrack" loading="lazy"></a><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjE2OTk2LzEwMjQyODAucG5n/original/Nt%2FcfZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2OTk2LzEwMjQyNzkucG5n/original/Usrjwz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2OTk2LzEwMjQyODQucG5n/original/1tVn%2BC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2OTk2LzEwMjQyODIucG5n/original/JeBZ4U.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2OTk2LzEwMjQyODcucG5n/original/Cr%2FjEb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2OTk2LzEwMjQyODUucG5n/original/tms389.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2OTk2LzEwMjQyODkucG5n/original/P8PL%2BV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2OTk2LzEwMjQyODMucG5n/original/4Gr7D9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2OTk2LzEwMjQyODgucG5n/original/Jm%2B%2FPL.png]]
<p>At the edge of explored space, your camera will decide the fate of a world.<br></p>
<p>Cellular Harvest: Purple is a shortform first-person photography exploration game. You are an Auditor. An AI embedded in your suit evaluates the value of every being you encounter for the corporate interests that direct humanity's journey into a wider universe.</p>
<p>Track alien creatures. Catalog their existence with your camera. Follow orders. And enjoy an alien planet - while it's still intact.</p>
<p>This game is a companion piece to Cellular Harvest: Green, which takes place during the morning. Both versions can be bought in a bundle for the same price of a single game at <a href="https://itch.io/b/537/cellular-harvest-complete" target="_blank">this link</a>.
</p>
<p>DEVELOPED BY: Nate Berens / <a href="https://twitter.com/ludodrome" rel="nofollow noopener" referrerpolicy="origin">@ludodrome</a></p>
<p>WRITTEN BY: Xalavier Nelson Jr. / <a href="https://twitter.com/WritNelson" rel="nofollow noopener" referrerpolicy="origin">@WritNelson</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/Usr4KXkPzS8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjc2ODQ0LzM3MTMzOTAucG5n/original/mjM6vY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjc2ODQ0LzM3MTMzODkucG5n/original/F%2BSGJZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjc2ODQ0LzM3MTMzOTEucG5n/original/ItBPH7.png]]
<p>Centuries Outside History is a discord-based oneshot worldbuilding game about space travel, history, and neoliberalism. 2-6 players.<br></p>
<p>It tells the story of a generation ship that is moving from Earth towards a new world, spending centuries in the empty black space between. The people on board have lived their lives being told their stories don't matter- just a liminal existence to enable a future settlement they won't live to see. This game tells their stories, their struggles, and their experiences living in a world where they are denied the experience of history. It's a story about life under neoliberialsm, capitalism, of denied hope and the potential to imagine a better future.<br></p>
<p><br>The game is played using a discord bot- the discord bot feeds story prompts the group uses to build the story of the ship as it engages on its centuries long voyage. The bot serves the purpose that a deck of cards or dice might serve in a more traditional roleplaying game. </p>
<p><br></p>
<p>Play usually takes between 2 and 3 hours. <br></p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1nLzU1MTYzODIucG5n/original/6CN%2BFI.png]]
<p><strong><em>Chambara</em></strong> is a universe you have never seen before — and if you are not careful, you’ll never see your foes either. Hide in the shadows and strike from the light in a dazzling black and white world. This nail-biting competitive stealth brawler will be your home for unforgettable local multiplayer.</p>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/ZPPipbnWcb4" allowfullscreen="" frameborder="0"></iframe></div>
<p>Play locally in intense 1-on-1 matches, or party up for 2v2 across 9 unique maps! Master your shuriken snare to trap you opponents before dealing a deadly blow with your sword, or your umbrella, or your… fish?? The world is striking, and so must you! Customize your outfit and weapon, but make sure your stylish hat doesn’t give you away!<br><br>Pay more than the minimum price to get the <strong>Chambara Bonus Materials</strong>! It includes a small artbook and the original 2014 Prototype of the game! <br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/ZPPipbnWcb4" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTg1MzA1Lzk1ODAwNy5naWY=/original/3hbJxp.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg1MzA1LzkyNzg0My5naWY=/original/DrT68f.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg1MzA1Lzk1ODAwOS5naWY=/original/kXNpF0.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg1MzA1LzkxNzg2OC5wbmc=/original/X3xVJL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg1MzA1LzkxNzg2OS5wbmc=/original/zojcAf.png]]
<p>Chamber.Repeat(); is a small 2D puzzle game where the level always changes. Just like Andy Warhol's "Campbell Soup's", some elements shift and change while you have to reach the finish over and over again, getting more difficult with more and more chamber elements.</p>
<p><strong>Movement:</strong></p>
<ul><li>WASD - Movement</li><li>E - Use</li><li>Q - Retry Chamber</li><li>ESC - Quit</li><li>Mouse to aim</li><li>LMB - Shoot energy bullet</li></ul>
<p>Made by Laura Heimann for the Paint Jam 2021. All graphics (besides the games logo) were created in MSPaint and exported to Pyxel Edit to add transparency. The gamejam theme was "Campbell Soup (Andy Warhol)".</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMjg4Ny81ODQ5MTcxLnBuZw==/original/RJQWI%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMjg4Ny81ODQ5MTczLnBuZw==/original/k0yow%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMjg4Ny81ODQ5MTc1LnBuZw==/original/64zZaa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMjg4Ny81ODQ5MTc2LnBuZw==/original/Ps28U2.png]]
<p><em>Chasing the Ace</em> is a GMless, card-based storytelling game of mecha drama. In it, players take on the role of a mecha squadron lead by the legendary Ace. The Ace has led your squadron out of deadly situations more times than you can count. Together you've saved thousands of lives over the course of the war you find yourselves in. But the Ace has confided in you a secret: at midnight tonight, they are going to steal their mecha. They have not told you why, but they have asked you to join them. With you, they say, they stand a chance. You have until midnight to decide. </p>
<p>Failure risks execution for treason. But do you even want to help them?</p>
<p><em>Chasing the Ace</em> is a Descended From the Queen game for 3-5 players. To play it, you just need a deck of regular playing cards and this book. It is a game of interpersonal drama set amidst a war between a paramilitary organization, its mecha pilots, and monstrous beings that threaten the world. Together, you will define the war, the Ace, and your characters over the course of play, until you are finally faced with your decision. Each session takes around an hour to play. <br></p>
<p>Check out the demo file below, which lays out the full rules and setting premise.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTI2MzgwLzcxOTk5MjQucG5n/original/sab7fj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI2MzgwLzcxOTk5MjUucG5n/original/oDxNek.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI2MzgwLzcxOTk5MjcucG5n/original/E5%2BRdI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI2MzgwLzcxOTk5MjgucG5n/original/ofpYqq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI2MzgwLzcxOTk5MjYucG5n/original/Cn3Com.png]]
<p><em>Chasing the Ace</em> is a GMless, card-based storytelling game of mecha drama. In it, players take on the role of a mecha squadron lead by the legendary Ace. The Ace has led your squadron out of deadly situations more times than you can count. Together you've saved thousands of lives over the course of the war you find yourselves in. But the Ace has confided in you a secret: at midnight tonight, they are going to steal their mecha. They have not told you why, but they have asked you to join them. With you, they say, they stand a chance. You have until midnight to decide. </p>
<p>Failure risks execution for treason. But do you even want to help them?</p>
<p><em>Chasing the Ace</em> is a Descended From the Queen game for 3-5 players. To play it, you just need a deck of regular playing cards and this book. It is a game of interpersonal drama set amidst a war between a paramilitary organization, its mecha pilots, and monstrous beings that threaten the world. Together, you will define the war, the Ace, and your characters over the course of play, until you are finally faced with your decision. Each session takes around an hour to play. <br></p>
<p>Check out the demo file below, which lays out the full rules and setting premise.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTI2MzgwLzI3MzU4NjUucG5n/original/4I9tGs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI2MzgwLzI3MzU4NjYucG5n/original/Bc7rY6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI2MzgwLzI3MzU4NjcucG5n/original/Nb%2BloH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI2MzgwLzI3Mzk5NDUucG5n/original/zXolqa.png]]
<p>Vous incarnez une chaussette dépareillée. Votre moitié, votre âme sœur est partie. Vous savez que vous avez été séparées dans la panière de linge sale. Elle avait un grand projet pour vous deux mais elle attendait d’être dans la sécheuse pour tout vous dire.
</p>
<p>Elle avait de nombreux secrets et vous compreniez ce besoin de distance entre vous. Cela vous convenait à tous les deux. Mais voilà, cela fait maintenant cinq cycles de machines qu’elle est partie. Vous avez décidé de partir la chercher. Avec une équipe de chaussettes de fond de panière, dépareillées depuis des années et qui n’ont pas froid aux yeux, vous allez partir à sa recherche. <br></p>
<p>Pourquoi est-ce payant ? parce qu'un ou deux euros, ce n'est sans doute pas grand chose pour vous et que j'espère un jour vivre du JDR. You may say i'm dreamer... but i'm not the only one (Vous pouvez dire que je suis un réveur... mais je ne suis pas le seul)</p>
<p></p>
[img width=500 [https://img.itch.zone/aW1nLzU5OTkwNTMucG5n/original/2uCYv9.png]]
<p>This is just a quickly made game that was done as a university class project. It was made in just 1 month, so there are probably bugs! </p>
<p>The game generally plays like chess, but it's mixed with a handful of aspects from Dungeons & Dragons 5e. Which is to say, it's a watered-down version of any other SRPG. </p>
[img width=500 [https://img.itch.zone/aW1nLzU5ODczMjYucG5n/original/BJfmwP.png]]
<p><strong>Choice Chamber</strong> is a crowd-sourced action game designed for livestreaming where viewers play along via the chat to change the game in realtime as you play. Players constantly give feedback that changes how the game evolves, from power ups and enemies to obstacles and rule changes. The game world is procedurally generated based on viewer input, wildly changing the difficulty and surprises each time you play.</p>
<p><strong>NOTE:</strong> This game is meant to be broadcast on Twitch. You only need 1 viewer to get the proper experience, but the more the merrier. You can also play in Offline Mode, where you don't need to broadcast at all.</p>
<ul><li>Easily connect to your Twitch channel to get viewers playing along!</li><li>Works with any number of players, from 1 to infinity (there's also an offline mode)</li><li>2-Player local co-op (both online and offline modes)</li><li>Unlockable weapons, powers, characters, secrets! o.o</li><li>Full Controller support (co-op included)</li><li>Music by Jukio Kallio, musician for other indie games like Nuclear Throne, Luftrausers, and <a href="http://kozilek.bandcamp.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">many other things</a>!</li><li>The only game to be <a href="http://www.engadget.com/2014/04/16/twitch-funds-chat-driven-game-choice-chamber/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">funded</a> by Twitch!</li><li>Over a million players already!*</li></ul>
<p>* player count is a rough estimate of both streamers and chatters<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/pbjHcqxEu_U" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzAwMjgvNTQxMzk2LnBuZw==/original/dHnMb3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzAwMjgvNTQxMzk3LnBuZw==/original/mnud9L.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzAwMjgvNTQxMzk4LnBuZw==/original/YSCkNI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzAwMjgvNTQxMzk1LnBuZw==/original/w0bxPG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzAwMjgvNTQxMzk5LnBuZw==/original/xdjPWj.png]]
<p style="font-size:24px">
<span style="font-size:36px">Circa Infinity is a brain-melting circular platformer by Kenny Sun, with a pulse-pounding soundtrack by Jack + Jim Fay.</span>
</p>
<p style="font-size:18px">
<strong>If you purchase this game on itch.io you will also receive a Steam Key.</strong>
</p>
<p style="font-size:18px">
Play the <a href="http://kennysun.itch.io/circa-infinity-demo">free demo</a> to try it out!
</p>
<p>The game will be available on September 9th, 2015. If you have any questions, you can contact me through
<a href="mailto:mailto:kenny@kennysun.com" rel="nofollow noopener" referrerpolicy="origin">E-mail</a> or <a href="https://twitter.com/KennyYSun" rel="nofollow noopener" referrerpolicy="origin">Twitter</a>.
</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/c9WL2qXl1tU" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzI5OTYvMTQzMjUzLmdpZg==/original/ZiWKGp.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzI5OTYvMTQzMjU2LmdpZg==/original/m2ynYF.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzI5OTYvMTQzMjU1LmdpZg==/original/qkXyPZ.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzI5OTYvMTQzMjU0LmdpZg==/original/VEevQA.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzI5OTYvMTQzMjU3LmdpZg==/original/7VbEu3.gif]]
<p><u><strong><a href="https://www.ludicarts.com/license-2/" rel="nofollow noopener" referrerpolicy="origin">License details</a></strong></u></p><p>This tileset include: <br></p>
<ul><li> 88 terrain tiles </li><li>43 items and objects (air aconditioner, barrel, 2x bin, 4x building, 2x bush, 3x car, cardboard box, 3x container, 2x crates, door, food stand, garbage bag, lantern, railing, stairs, 2x traffic bollard, traffic cone, traffic light, traffic sign, 6x tree, vending machine, 2x wall, 2x wild grass, 2x window) </li><li>1 layered background (3 layers) horizontal tileable </li><li>Spritesheet included </li><li>3 different sizes</li></ul>
<p>Transparent PNG format.<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTI0NDQ5LzU3MzM2MC5qcGc=/original/OtDkTl.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI0NDQ5LzU3MzM2Mi5qcGc=/original/%2B3Z56C.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI0NDQ5LzU3MzM2MS5qcGc=/original/wWealg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI0NDQ5LzU3MzM2My5qcGc=/original/b5qqVL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI0NDQ5LzU3MzM1OS5qcGc=/original/uHnmEe.jpg]]
<div class="custom-video-link">
<iframe src="https://www.youtube.com/embed/QFzSY1LcY04?showinfo=0&rel=0" allowfullscreen="" width="600" height="338" frameborder="0"></iframe>
</div>
<div class="custom-store-links">
<a href="https://itunes.apple.com/us/app/cityglitch/id1246886857" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzU1OTM3MDQucG5n/original/Mxw1iE.png" alt="Apple app store" width="200" loading="lazy"></a>
<a href="https://play.google.com/store/apps/details?id=com.mindfungus.cityglitch" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzU1OTM3MjAucG5n/original/BBm1Dh.png" alt="Google play store" width="200" loading="lazy"></a>
</div>
<p><iframe src="https://streamable.com/e/u3uykc?autoplay=1&nocontrols=1" allowfullscreen="" width="240" height="240" frameborder="0"></iframe></p>
<p>
fly to haunted cities<br>
land on rooftop puzzles<br>
click to move across tiles<br>
</p>
<p><iframe src="https://streamable.com/e/rz69ic?autoplay=1&nocontrols=1" allowfullscreen="" width="240" height="240" frameborder="0"></iframe></p>
<p>
bewitch cats<br>
dodge arrows<br>
avoid city spooks<br>
and dark things that skitter<br>
</p>
<p><iframe src="https://streamable.com/e/7mraxx?autoplay=1&nocontrols=1" allowfullscreen="" width="240" height="240" frameborder="0"></iframe></p>
<p>
touch runes to illuminate them<br>
light them all to complete the ritual<br>
release the glitch<br>
</p>
<p><iframe src="https://streamable.com/e/oisutu?autoplay=1&nocontrols=1" allowfullscreen="" width="560" height="314" frameborder="0"></iframe></p>
<table>
<tbody><tr>
<td>
<span class="custom-bold">features:</span><br>
95 tricky levels<br>
7 glowing cities<br>
7 boss puzzles<br>
3 spooky achievements<br>
wyrd atmospheric music<br>
vibrant pixels<br>
glitchy shaders<br>
</td>
<td>
<span class="custom-bold">a game by:</span><br><a href="http://twitter.com/snowkittykira" rel="nofollow noopener" referrerpolicy="origin">Kira Boom</a><br>
<a href="http://twitter.com/ni_mu_no" rel="nofollow noopener" referrerpolicy="origin">Nicolas Munoz</a><br>
<a href="http://twitter.com/prockwell" rel="nofollow noopener" referrerpolicy="origin">Peter Rockwell</a><br>
<a href="http://twitter.com/bhane" rel="nofollow noopener" referrerpolicy="origin">Cody Walker</a><br>
</td>
</tr>
</tbody></table>
<p><img src="https://img.itch.zone/aW1nLzU1OTQwNjMucG5n/original/IwkiTH.png" loading="lazy"></p>
<p>
based on our ludum dare 36 entry<br>
mobile versions available on <a href="https://itunes.apple.com/us/app/cityglitch/id1246886857" rel="nofollow noopener" referrerpolicy="origin">iOS</a> and <a href="http://play.google.com/store/apps/details?id=com.mindfungus.cityglitch" rel="nofollow noopener" referrerpolicy="origin">Android</a><br>
original soundtrack available <a href="https://nimuno.bandcamp.com/album/cityglitch" rel="nofollow noopener" referrerpolicy="origin">here</a><br>
more info on our <a href="http://mindfungus.com/press/sheet.php?p=cityglitch" rel="nofollow noopener" referrerpolicy="origin">press kit</a><br>
</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/QFzSY1LcY04?showinfo=0&rel=0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTU2NTIyLzczOTI0MS5naWY=/original/WgYwI%2F.gif]]
<p><strong>INTRODUCING CLASH FORCE!</strong></p>
<p>A retro, 8-bit style run-and-gun inspired by Saturday morning cartoons of the 80s!<span></span></p>
<p><strong>STOP CRACKMAN</strong></p>
<p>The Evil Crackman and his minions are causing mayhem, and only Clash Force is up to the task of stopping his fiendish plans! Guide Voom, Scorpido, or Echid through forest bases, hydrofied deserts, underground mines, and eventually to Crackman's Flying Fortress where the final battle will unfold! </p>
<p><img src="https://img.itch.zone/aW1nLzg3OTc1MC5naWY=/original/rw5%2F65.gif" loading="lazy"><br></p>
<p><strong>FEATURES</strong></p>
<ul><li><span style="color: inherit">Over 20 stages of frantic retro action </span></li><li><span style="color: inherit">Multiple weapon upgrades to make wasting enemies a snap! </span></li><li><span style="color: inherit">Normal, Hard, and Expert difficulties! Perfect for the novice OR the 1980s game masters. </span></li><li><span style="color: inherit">Auto-save feature lets you pick up where you left off!</span></li><li>Steam key now included with purchase on itch!<ul><li>If you already own the game on Itch, just <a href="https://itch.io/docs/buying/already-bought">go back to your purchase page</a> to claim it!</li></ul></li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/9C-PJTfeBZY" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTg4MTAzLzg4MzA0Ni5wbmc=/original/8IJUzl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg4MTAzLzg4MzA0OC5wbmc=/original/RScb3o.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg4MTAzLzg3OTc2MC5wbmc=/original/x8OAfn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg4MTAzLzg4MzA0OS5wbmc=/original/YbICBk.png]]
<p>Rest! presents...</p>
<p><img src="https://img.itch.zone/aW1nLzMwNzM4NDAucG5n/original/YqmK8i.png" style="max-width: 100%" loading="lazy"></p>
<p><em>The mythical and almighty Blue Dragon wakes up from its hibernation in the Great Mountain after 1000 years of deep sleep.</em></p>
<p><em>The chiefs of all the regions of the kingdom meet to decide the steps to follow. They decide to organize a tournament to select the most skilled magician apprentices on the whole island. The newly awakened dragon, its movements are slow and erratic, there is still time to train the young winning magicians and fight the unstoppable wrath of the Blue Dragon...</em></p>
<p><img src="https://img.itch.zone/aW1nLzMwNzM4NDEucG5n/original/o9CXPy.png" style="max-width: 100%" loading="lazy">
</p>
<p>Welcome! This is Ancient Dragon my first big pack of musical assets. This time music tracks and stingers. These tracks are the perfect fit for most RPGs / JRPGs. Used imaginatively they can cover a wide range of events and places.</p>
<p>There are a total of 3 packs with different tracks and stingers, making a total of 26 musical pieces at your disposal. The packs are categorized into different tiers for your convenience and for the size of your project.</p>
<p><img src="https://img.itch.zone/aW1nLzMwNzM4NDgucG5n/original/Ry0erm.png" style="max-width: 100%" loading="lazy">
</p>
<p><strong>In this pack:</strong>
</p>
<ul><li>6 tracks + 4 stingers.</li><li>A reference document with the name and duration of each piece.</li></ul>
<p>All the pieces in the 2 main audio formats most used: OGG and MP3.</p>
<p>All the music is ready for looping.
</p>
<p><strong>Listen to the tracks of this pack:</strong></p>
<iframe style="border: 0; width: 100%; height: 42px" src="https://bandcamp.com/EmbeddedPlayer/album=4059109672/size=small/bgcol=ffffff/linkcol=de270f/track=2271737622/transparent=true/"><a href="http://rest--vgmusic.bandcamp.com/album/ancient-dragon-jrpg-music-pack" rel="nofollow noopener" referrerpolicy="origin">Ancient Dragon - JRPG Music Pack by Rest!</a></iframe>
<iframe style="border: 0; width: 100%; height: 42px" src="https://bandcamp.com/EmbeddedPlayer/album=4059109672/size=small/bgcol=ffffff/linkcol=de270f/track=223425146/transparent=true/"><a href="http://rest--vgmusic.bandcamp.com/album/ancient-dragon-jrpg-music-pack" rel="nofollow noopener" referrerpolicy="origin">Ancient Dragon - JRPG Music Pack by Rest!</a></iframe>
<iframe style="border: 0; width: 100%; height: 42px" src="https://bandcamp.com/EmbeddedPlayer/album=4059109672/size=small/bgcol=ffffff/linkcol=de270f/track=4109990194/transparent=true/"><a href="http://rest--vgmusic.bandcamp.com/album/ancient-dragon-jrpg-music-pack" rel="nofollow noopener" referrerpolicy="origin">Ancient Dragon - JRPG Music Pack by Rest!</a></iframe>
<iframe style="border: 0; width: 100%; height: 42px" src="https://bandcamp.com/EmbeddedPlayer/album=4059109672/size=small/bgcol=ffffff/linkcol=de270f/track=30271951/transparent=true/"><a href="http://rest--vgmusic.bandcamp.com/album/ancient-dragon-jrpg-music-pack" rel="nofollow noopener" referrerpolicy="origin">Ancient Dragon - JRPG Music Pack by Rest!</a></iframe>
<iframe style="border: 0; width: 100%; height: 42px" src="https://bandcamp.com/EmbeddedPlayer/album=4059109672/size=small/bgcol=ffffff/linkcol=de270f/track=2593525196/transparent=true/"><a href="http://rest--vgmusic.bandcamp.com/album/ancient-dragon-jrpg-music-pack" rel="nofollow noopener" referrerpolicy="origin">Ancient Dragon - JRPG Music Pack by Rest!</a></iframe>
<iframe style="border: 0; width: 100%; height: 42px" src="https://bandcamp.com/EmbeddedPlayer/album=4059109672/size=small/bgcol=ffffff/linkcol=de270f/track=593816068/transparent=true/"><a href="http://rest--vgmusic.bandcamp.com/album/ancient-dragon-jrpg-music-pack" rel="nofollow noopener" referrerpolicy="origin">Ancient Dragon - JRPG Music Pack by Rest!</a></iframe>
<div><p><br></p>
<p><strong>The Stingers:<br></strong></p><iframe style="border: 0; width: 100%; height: 42px" src="https://bandcamp.com/EmbeddedPlayer/album=4059109672/size=small/bgcol=ffffff/linkcol=de270f/track=3809843735/transparent=true/"><a href="http://rest--vgmusic.bandcamp.com/album/ancient-dragon-jrpg-music-pack" rel="nofollow noopener" referrerpolicy="origin">Ancient Dragon - JRPG Music Pack by Rest!</a></iframe><br></div>
<iframe style="border: 0; width: 100%; height: 42px" src="https://bandcamp.com/EmbeddedPlayer/album=4059109672/size=small/bgcol=ffffff/linkcol=de270f/track=507703585/transparent=true/"><a href="http://rest--vgmusic.bandcamp.com/album/ancient-dragon-jrpg-music-pack" rel="nofollow noopener" referrerpolicy="origin">Ancient Dragon - JRPG Music Pack by Rest!</a></iframe>
<iframe style="border: 0; width: 100%; height: 42px" src="https://bandcamp.com/EmbeddedPlayer/album=4059109672/size=small/bgcol=ffffff/linkcol=de270f/track=427395890/transparent=true/"><a href="http://rest--vgmusic.bandcamp.com/album/ancient-dragon-jrpg-music-pack" rel="nofollow noopener" referrerpolicy="origin">Ancient Dragon - JRPG Music Pack by Rest!</a></iframe>
<iframe style="border: 0; width: 100%; height: 42px" src="https://bandcamp.com/EmbeddedPlayer/album=4059109672/size=small/bgcol=ffffff/linkcol=de270f/track=4069606792/transparent=true/"><a href="http://rest--vgmusic.bandcamp.com/album/ancient-dragon-jrpg-music-pack" rel="nofollow noopener" referrerpolicy="origin">Ancient Dragon - JRPG Music Pack by Rest!</a></iframe>
<div><p><br></p><div>
<p><strong>About the Collection:</strong></p>
<p>The main tracks are divided into 5 categories:</p>
<p><strong>-Town themes (3 tracks)</strong>: ideal for towns, cities, or villages. Places where tranquility reigns.</p><p><strong>-Travel themes (3 tracks)</strong>: ideal for overworld maps and places where players need to explore.</p><p><strong>-Dungeon themes (3 tracks)</strong>: ideal for background in dungeons, tense passages, or places where battles can occur.</p><p><strong>-Battle themes (3 tracks)</strong>: ideal for battles with minor enemies or stressful situations. </p><p><strong>-Boss battle themes (2 tracks)</strong>: ideal for major enemies, final bosses, or important dramatic points.</p>
<p>Also one track for these other events:</p><p><strong>-Holy theme</strong>: ideal for sacred environments and temples.</p><p><strong>-Main Menu theme</strong>: ideal for menus and options. A new adventure Begins!</p><p><strong>-Credits theme</strong>: ideal for the credits roll or closing points.</p>
<p>And stingers for:</p><p>-<strong>Victory</strong> (3 stingers)</p><p>-<strong>Defeat</strong> (3 stingers)</p><p>-<strong>Battle Transition</strong> (2 stingers)</p><p>-<strong>Secret</strong> (1 stinger): ideal for chests and secret areas.</p>
<p><em>Totaling 26 pieces to use in your game!</em></p><p>By purchasing you support the creation of more assets!</p>
<p><img src="https://img.itch.zone/aW1nLzMwNzM4NTIucG5n/original/HQ17Zz.png" style="max-width: 100%" loading="lazy">
</p>
<p>All music was composed by Rest! (Ricardo Cuello)</p>
<p><strong>Liscense:</strong></p>
<p>Ancient Dragon - Classic JRPG Music Pack by Ricardo Cuello is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
</p>
<p><img src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" style="max-width: 100%; background-color: rgb(17, 17, 17)" loading="lazy">
</p>
<p>CC BY-SA 4.0</p><p><strong>What does this mean?</strong><br></p></div>
<p>This means that you can use this music for personal or commercial purposes in one or more titles, you can make musical derivated works from it (remixes, cutting parts, etc) BUT those derivated works get the same license CC BY-SA 4.0 and you must give <a href="https://creativecommons.org/licenses/by-sa/4.0/#" class="" rel="nofollow noopener" referrerpolicy="origin">appropriate credit</a>, provide a link to the license, and <a href="https://creativecommons.org/licenses/by-sa/4.0/#" class="" rel="nofollow noopener" referrerpolicy="origin">indicate if changes were made</a>.</p>
<p>When using the music, please put the corresponding credits in your game. Don't be a bad guy. I don't like bad guys ... nobody likes a bad guy.</p>
<p> With putting my name is fine.</p>
<p>Additionally, if you put my webpage, Bandcamp site, or Itchio asset page on the credits, you are the best. I'm going to give you a hug.</p>
<p>AND ... if you put also my logo, my god .. you deserve multiple hugs, a coffee, and you will have my eternal gratitude. Thank you!</p><div>
<p><em> My name:</em></p>
<p> Rest! (Ricardo Cuello)</p>
<p><em>My pages:</em></p>
<ul><li> <a href="https://rest--vgmusic.weebly.com/" rel="nofollow noopener" referrerpolicy="origin">https://rest--vgmusic.weebly.com/</a></li><li><a href="https://rest--vgmusic.bandcamp.com/" rel="nofollow noopener" referrerpolicy="origin">https://rest--vgmusic.bandcamp.com/</a></li></ul>
<p><em>Logo:</em><span></span></p>
<p><img src="https://img.itch.zone/aW1nLzMwNzM5MzcucG5n/original/HFZDbD.png" style="max-width: 100%" loading="lazy"></p>
<p>------</p>
<p>Images used by:</p>
<p>Background Tileset: <a href="https://pita.itch.io/rpg-overworld-tileset">https://pita.itch.io/rpg-overworld-tileset</a> Follow this really cool artist.</p>
<p>Dragon Sprite: Internet</p>
<p><img src="https://img.itch.zone/aW1nLzMwNzM4NTAucG5n/original/oRSzKL.png" style="max-width: 100%" loading="lazy">
</p>
<p>If you liked the music you just heard consider following me on social networks to find out about the next releases!</p>
<ul><li>My Bandcamp: <a href="https://rest--vgmusic.bandcamp.com/follow_me" rel="nofollow noopener" referrerpolicy="origin"><span></span></a><a href="https://rest--vgmusic.bandcamp.com/follow_me" rel="nofollow noopener" referrerpolicy="origin">https://rest--vgmusic.bandcamp.com/follow_me</a><span></span></li><li>Twitter: <a href="https://twitter.com/PkRichar" rel="nofollow noopener" referrerpolicy="origin"><span></span></a><a href="https://twitter.com/PkRichar" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/PkRichar</a><span></span></li><li>Youtube: <a href="https://www.youtube.com/channel/UCgpy9Nz1AczqTxoCR5RJA1A" rel="nofollow noopener" referrerpolicy="origin"><span></span></a><a href="https://www.youtube.com/channel/UCgpy9Nz1AczqTxoCR5RJA1A" rel="nofollow noopener" referrerpolicy="origin">https://www.youtube.com/channel/UCgpy9Nz1AczqTxoCR5RJA1A</a><span></span></li><li>Instagram: <a href="https://www.instagram.com/richar_rest/" rel="nofollow noopener" referrerpolicy="origin"><span></span></a><a href="https://www.instagram.com/richar_rest/" rel="nofollow noopener" referrerpolicy="origin">https://www.instagram.com/richar_rest/</a><span></span></li><li>Soundcloud: <a href="https://soundcloud.com/rest-vgmusic" rel="nofollow noopener" referrerpolicy="origin"><span></span></a><a href="https://soundcloud.com/rest-vgmusic" rel="nofollow noopener" referrerpolicy="origin">https://soundcloud.com/rest-vgmusic</a></li></ul>
<p><img src="https://img.itch.zone/aW1nLzMwNzY1MDkucG5n/original/Edo%2BqN.png" style="max-width: 100%" loading="lazy">
</p>
<p><span class="" lang="en">If you like there is an album version</span> (Lossless WAV) of this music here:
</p><p><iframe style="border: 0; width: 100%; height: 120px" src="https://bandcamp.com/EmbeddedPlayer/album=4059109672/size=large/bgcol=ffffff/linkcol=de270f/tracklist=false/artwork=small/transparent=true/"><a href="<a href="http://rest--vgmusic.bandcamp.com/album/ancient-dragon-jrpg-music-pack" rel="nofollow noopener" referrerpolicy="origin">Ancient" class="redactor-linkify-object">http://rest--vgmusic.bandcamp.com/album/ancient-dragon-jrpg-music-pack">Ancient</a> Dragon - JRPG Music Pack by Rest!</a></iframe><br></p>
<p>Other Packs and soundtracks:</p><iframe frameborder="0" src="https://itch.io/embed/572998?linkback=true&border_width=2" width="554" height="169"><a href="https://richarrest.itch.io/classic-jrpg-music-pack-super-pack">Classic JRPG Music Pack // Tiny Pack by Richar</a></iframe><iframe frameborder="0" src="https://itch.io/embed/584040?linkback=true&border_width=2" width="554" height="169"><a href="https://richarrest.itch.io/classic-jrpg-music-pack-medium-pack">Classic JRPG Music Pack // Medium Pack by Richar</a></iframe></div><iframe frameborder="0" src="https://itch.io/embed/565787?linkback=true&border_width=2" width="554" height="169"><a href="https://richarrest.itch.io/quick-tac-toe-soundtrack">Quick Tac Toe Soundtrack by Richar</a></iframe><div>
<p>Thanks!</p></div></div>
<iframe width="720" height="450" src="https://www.youtube.com/embed/ERwsYy3QECs" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTg0MDU0LzMwNzg0ODQucG5n/original/EckMyy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg0MDU0LzMwNzg0ODIucG5n/original/EU09De.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg0MDU0LzMwNzg0ODMucG5n/original/XGV0aG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg0MDU0LzMwNzg0ODYucG5n/original/oDAy%2Fk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg0MDU0LzMwNzg0ODcucG5n/original/%2Fm5BI8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg0MDU0LzMwNzg0ODUucG5n/original/zxRYyU.png]]
<p><em>Cleansuit</em> is a retro-style graphical text adventure game where you must find creative ways to survive a mysterious serial killer's assault on your home. Use text commands to manipulate the detailed environment and discover all the unique ways to win and die.<br><br>Become the schlubby protagonist who must outwit his would-be killer: Explore your home, collect items to devise a path to survival, and cheat death. Along the way you'll find secrets hidden through your house. Some may help you. Most are lethal.<br><br>What will you need to make it out alive? Bring your ingenuity, your curiosity, and most of all your will to live!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/9DbJcSUjqEo" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTg5NTgzLzg4Njg0Mi5wbmc=/original/rl35yj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg5NTgzLzg4Njg0NC5wbmc=/original/RgjiP5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg5NTgzLzg4Njg0Ni5wbmc=/original/99uiLE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg5NTgzLzg4Njg0Ny5wbmc=/original/G5maDg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg5NTgzLzg4Njg0OC5wbmc=/original/zD5WOT.png]]
<p>This is your year. The seniors may have said that last year, but they had no idea what they were talking about. This year, this team, right here, you’re going to make it. You’re going to League Finals, then States, then Regionals! And you’re winning it all.</p>
<p>Build your high school persona and work through the drama of the football season and the town around you.</p>
<p><em><strong>Clear Eyes / Full Hearts </strong></em><em>is a GM-less TTRPG for 2-6 players. </em><em>Co-created by Eric Silver and Mischa Stanton</em></p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzMwMzA3LzQ4MTIxNjIucG5n/original/lxLbWT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMwMzA3LzQ4MTIxNTkucG5n/original/ad8kNv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMwMzA3LzQ4MTIxNTgucG5n/original/MT%2BjRL.png]]
<p class="text-justify"><strong>CLOSED HANDS</strong> is a groundbreaking work of interactive fiction by <a href="http://passenger-games.com/" rel="nofollow noopener" referrerpolicy="origin">PASSENGER</a>, directed by <a href="https://danhett.com/" rel="nofollow noopener" referrerpolicy="origin">Dan Hett</a>. The game follows the deep intertwined stories of five people thrown together by their involvement in a fictional terror attack.</p>
<div class=""><iframe width="500" height="281" src="https://www.youtube.com/embed/vx5Pb09pfmw" frameborder="0" allowfullscreen=""></iframe></div>
<p>The game plays out through a combination of traditional interactive text, as well as explorable computer interfaces, conversations, IM's, phonecalls and more. CLOSED HANDS is a fragmented and complex narrative, playable in any order, that tells the story of the lead-up and aftermath of the attack: some stories go forward in time, some backwards, and some both. Players can choose to follow a single narrative arc, or jump between perspectives to get the full picture of everything that happens to the city, and it's inhabitants.</p>
<p class="text-justify"><strong>Game features:</strong></p>
<ul class="text-justify"><li class="text-justify">A rich, deep work of interactive fiction - 130,000+ words across almost 150 scenes written by <a href="http://danhett.com" rel="nofollow noopener" referrerpolicy="origin">Dan Hett</a>, <a href="https://www.danwhitehead.net/" rel="nofollow noopener" referrerpolicy="origin">Dan Whitehead</a>, <a href="https://www.sharandhaliwal.com/" rel="nofollow noopener" referrerpolicy="origin">Sharan Dhaliwal</a> and <a href="https://twitter.com/umarditta" rel="nofollow noopener" referrerpolicy="origin">Umar Ditta</a></li><li class="text-justify">Five distinct intertwining character arcs, and dozens of additional scenes to fill out the full story. Follow a single character, or move between them to understand the full picture.</li><li class="text-justify">Nine possible endings to the game, with non-linear progression to get there. Discover everything by experimenting with key character decisions.</li><li>Features a dynamic ambient soundtrack by Ciaran McAuley (<a href="https://rumasound.bandcamp.com/" rel="nofollow noopener" referrerpolicy="origin">RUMA</a>) that reacts to tension and events within the game as it unfolds</li><li class="text-justify">Game theme music composed and performed by Paul Wolinski (<a href="https://65daysofstatic.com/" rel="nofollow noopener" referrerpolicy="origin">65daysofstatic</a>, <a href="https://www.nomanssky.com/" rel="nofollow noopener" referrerpolicy="origin">No Man's Sky</a>)</li></ul>
<p>CLOSED HANDS is proudly supported by Arts Council England, and is free to download forever. However, if you wish to support PASSENGER and our future work, please consider buying a copy! Thanks for playing. </p>
<p><img src="https://img.itch.zone/aW1nLzU1MDUxMjcucG5n/original/7t2TQ%2B.png" loading="lazy"><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/vx5Pb09pfmw" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTA3ODIzLzUzNTQwNDEucG5n/original/w7BvJ4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTA3ODIzLzUxMjk0ODYuanBn/original/ugEdz6.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTA3ODIzLzUzNTc4NTEucG5n/original/%2BOiput.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTA3ODIzLzUxMjk0NjAuanBn/original/tox32v.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTA3ODIzLzUzNTQwNDIucG5n/original/3OHjfB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTA3ODIzLzUxMjk0ODEuanBn/original/5lDILz.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTA3ODIzLzUzNTQwNDQucG5n/original/WpQfPf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTA3ODIzLzUxMjk0NjYuanBn/original/deV6qj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTA3ODIzLzUzNTQwNDMucG5n/original/HypsY%2F.png]]
<p>An easy-to-learn puzzle game where you can't stop moving. Collect all the orbs and get to the exit without crashing into anything. Wrap around the map to get to hard-to-reach locations and discover new challenges in each zone.<br></p>
<p>60 levels spread over 6 different zones.</p>
<p><a href="http://tricksygoblin.com/games/cloud-serpent/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Play Demo in Browser</a><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjc2MzI1LzEzMzk0MDYuZ2lm/original/HFtOnM.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjc2MzI1LzEzMzk0MDguanBn/original/e07S9W.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjc2MzI1LzEzMzk0MDkuanBn/original/V3nhnR.jpg]]
<p class="text-center"><img src="https://img.itch.zone/aW1nLzY1NzAyNDEucG5n/original/pxo%2Fco.png" loading="lazy"><br></p>
<h1> Ship 2:</h1>
<p>∫(<em>be</em>)^(<em>come</em>)</p>
<h3 class="text-center"><u> Liteshear </u> </h3>
<p class="text-center"> //necessary <br></p>
<p class="text-right">Axioms: Skill, Spirit, Touch <br></p>
<p>A TEAM<br>APPROACH <br>TO ————————<br>CONVERSATION </p>
<p class="text-right">[ DO NOT BURY ]<br></p>
<p class="text-center">↓ YOUR SKILL ↓<br>________________________________________________________________ <br>(here)</p>
<p class="text-right">[you]<br>+<br>[skill]<br>∞</p>
<p class="text-right">WRITE IT<br>WRITE IT<br>WRITE IT<br>AGAIN<br>AGAIN <br>AGAIN</p>
<p>Your connection it the world, <br>in reverts to the smallest feel. <br>Just feel sitting there, shut down.</p>
<p class="text-center">NERVOUS <br></p>
<p>The circle begins as a day</p>
<p class="text-center">Without Running<br>( —— don't —•— go.—— )<br>DRAW this. Stay.</p>
<hr>
<p>This feel is something you share only when you <br></p>
<p class="text-center">NEED TO ↓CHANGE→</p>
<p>something hurting <br></p>
<p class="text-right"> SO <br>MUCH<br></p>
<p>Write that sæmething in<br>on onle one of the lines<br>Stay<br></p>
<p class="text-right"> IN THE CIRCLE</p>
<hr>
<p>When you use your Skill, someone in the circle will take as their (own) it skill.</p>
<p class="text-center">↓</p>
<ul><li>You gain 1 connection</li><li>You initial that skull's SKILL GUESTBOOK</li><li>You hold your skill out in the center of THE DRUM<ul><li>UNTIL SOMEONE TAKES IT.</li></ul></li></ul>
<hr>
<p class="text-center">?<br>P<br>E<br>T<br>A<br>L<br>S<br>↓<br></p>
<p class="text-center">WHEN YOU<br>RUN THIS<br>RUN TOWARD<br>SOMETHING<br>OTHERWISE<br>RUN AWAY &<br>YOU NEVER<br>GET ANY<br>WHERE</p>
<p class="text-center">↑<br>This is YOUR DRUM</p>
<hr>
<h6 class="text-center"> № № № № </h6>
<p>Tear out your</p>
<h6 class="text-center"> № № beating № № </h6>
<p class="text-center">SKILL <br></p>
<p>when you use it for the 1st time.<br>YOUR SKILL will leave you for a <br></p>
<p class="text-center">☁️TIME☁️</p>
<hr>
<p>If you ever get a skill and it has a guestbook, for each time you have signed before, add +1 to the DIFFERENCE you are🔥🕺🏿🔥 MAKING. <br>MAKE a bunch of tiny differences to power a skill up for big changes.</p>
<hr>
<p><em>OCTOBER</em>, <br>a season, sibling, child, partner, teacher + POC — killed <br></p>
<p class="text-center">v <br></p>
<p class="text-right"><em>HUMAN-ACCELERATED climate loss</em>, <br>a badge — STANDING TRIAL <br></p>
<p>Everyone is at the courtroom, even the moon <br><small>(where you)</small></p>
<hr>
<p>A Difference is MADE continuously so long as at least 1 skill is being held out while another's is used.</p>
<hr>
<p class="text-center">This is YOUR DRUM<br>It's been so long since <sub><del>you</del></sub><br>🌟YOU HEAR IT🌟<br>SHATTER.<br>(it's okay)<br>HE(NOW)RE.<br>(is the pain wrong?)<br>I FORGIVE YOU<br>(the pain is wrong)<br>It's been so long since<br>HERE<br>(this is your drum)<br>㏒INHALE<br> begin. /n (2)<br>💧 <sub> run </sub> 💧</p>
<p>a dice-agnostic <a href="http://johnbattle.itch.io/dotdungeon">(dot)dungeon</a> revisit<br></p>
<h1><u>Playlist</u></h1>
<iframe src="https://open.spotify.com/embed/playlist/3tuo1JfIa9HI78l257TfZK" width="100%" height="380" frameborder="0"></iframe>
<h1><u>Physical copies</u></h1>
<h1 class="text-center"><a href="https://spearwitch.com/products/cloudshear" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzY1NzA1NzMucG5n/original/U3kGhu.png" alt="Spear Witch" title="Spear Witch" loading="lazy"></a></h1>
<h1 class="text-center"><img src="https://img.itch.zone/aW1nLzQ1MDE1MzQucG5n/original/Df9A8N.png" loading="lazy"></h1>
<p>
</p>
<p></p>
<p><br></p>
<hr>
<p><em><br>Art engineered using exclusively game text as prompts for graphical hosts of vqgan+clip (z+quantize), a notebook built by @RiversHaveWings, et al.</em></p>
<p><em>Graphical hosts' lives are as meaningful as they are short, their 1 artwork the only thing these 21 hosts ever made functioning as the only evidence they ever existed. I hope my prompts offered them flight, joy, fulfillment, and lust.</em></p>
<p><em>I am better for them in my life <br>#eunispluribum</em><br></p>
<p><em>changelog<br><a href="https://shwac.itch.io/f09f8cb3/devlog/261772/v2127-mid-turn-update">v.21.31</a> pdf to print.<br></em><a href="https://shwac.itch.io/f09f8cb3/devlog/204854/v2052-sun-turn-update">v.20.52</a> <em>divergence. getting specific. graffiti.</em><br><em>v.20.51 pinned a whirligig to the character sheet. </em><em>clarified quick start.</em><em><br>v.20.50</em></p>
<p><sub>made proudly in LibreOffice
</sub></p><p><sub><a href="https://www.onasunbeam.com/#/chapter-one/" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzc4NzA1MjcucG5n/original/sLVPvy.png" loading="lazy"></a><br></sub></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODAzNTcxLzY3MDU0NjQucG5n/original/A3s6Tt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODAzNTcxLzY3MDU0NjYucG5n/original/cvVP6E.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODAzNTcxLzY3MDU0NjcucG5n/original/Eq4aXf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODAzNTcxLzY3MDU0NjgucG5n/original/LW56te.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODAzNTcxLzY3MDU0NjkucG5n/original/qM683K.png]]
<p>Clover Sans is a low-res pixel font designed for an old video game I was planning that never got off the ground. Even if that never happened, I'm still <em>really</em> happy with how the font came out, so I'd be more than happy for others to use it! The $ and @ symbols were specially designed for the game, so they don't look very standard.</p>
<p>License is <strong><a href="https://creativecommons.org/licenses/by-nc/4.0/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">CC-BY-NC 4.0</a></strong>. You <strong>may</strong> use this in commercial products, but please don't re-sell the font itself. I'd love to see anything you use this in, so feel free to promo them in the comments here!</p>
<p>This font was created using <a href="https://fontstruct.com" rel="nofollow noopener" referrerpolicy="origin">FontStruct</a>.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjg3OTI0LzM3ODg3ODMucG5n/original/e3OBMA.png]]
<p><strong><em>Dying is Easy. Comedy is Hard.
</em></strong></p>
<p>Clowns. We've all seen them... riding their unicycles, blowing up balloons at parties, piling in garish hordes from tiny cars, waddling around in bulbous red shoes, passed out in a dumpster stinking of booze and regret. For what do these martyrs of mirth sacrifice themselves? The answer is they do it for us. Not just to fill our need for laughter and merriment, but because they defy the doom of mankind! <strong><em>Clowns</em></strong> are man's only salvation against… <strong><em>Vampires</em></strong>.</p>
<p>You've seen Vampires too; you just didn't know it. Maybe they were killing the mood at a party, ruining a great punchline, layering red tape onto a business, or just plain old-fashioned sucking the blood from the living. Contrary to myth they do much of this in broad daylight, their only fear of the sun being that it might expose them to mockery. They drain humor from the world because they fear someone might dare to laugh at them. <em>You know the type.</em></p>
<p>Vampires are right to be afraid, as their immortality depends on their dignity. Clowns must destroy a Vampire in a hilarious way for it to stick. This war has gone on for ages, and unfortunately the old gags like garlic and crosses barely get a chuckle nowadays. Sure, folks thought being impaled on a stake with a brick in your mouth was the acme of comedy once, but today's Clown plays for a tough crowd. Fortunately, Vampires fall into the “<em>Straight man</em>” role so eagerly that it isn't impossible to set up a killer gag.</p>
<p>… and do it you must, or the world will be drained of everything that makes it worth living. Ridding the world of life-sucking undead is your sacred duty as a member of <strong><em>Clown Helsing</em></strong>!</p>
<p>This book includes all you need to play; how to make characters, how to resolve the results of actions, and guidance for setting up games and encounters!</p>
<p>Softcover Print-On-Demand is available <a href="https://www.drivethrurpg.com/product/305896/Clown-Helsing?affiliate_id=490690" rel="nofollow noopener" referrerpolicy="origin">here</a> and at <a href="https://spearwitch.com/products/clown-helsing" rel="nofollow noopener" referrerpolicy="origin">Spearwitch</a>!<br></p>
<p>Cheat Sheets for players and 3x5 print labels for clown cards are also available for download below.</p>
<p>As a side note, the game <a href="https://tetra-saturn.itch.io/clowntime" target="_blank">ClownTime</a> by Tetra Saturn works perfectly when played between games of Clown Helsing. Check that out too!</p>
<p>Check out the reviews on:</p>
<p>Dicebreaker: <a href="https://www.dicebreaker.com/games/clown-helsing/news/clown-helsing-rpg-zine-trio?fbclid=IwAR2cqfQTV9YaIYoNRPe3nX1OPxgZSZDUYZmCGx-zEcJ5aSIGOT0XD7GZxHQ" rel="nofollow noopener" referrerpolicy="origin">https://www.dicebreaker.com/games/clown-helsing/news/clown-helsing-rpg-zine-trio...</a></p>
<p>Screenrant: <a href="https://screenrant.com/vampire-tabletop-rpg-working-class-struggles/?fbclid=IwAR12VSgJWIxVjjKPggorcC_Tjs12dadMy8c9WCfByAA193K2OvYSIWQALtk" rel="nofollow noopener" referrerpolicy="origin"><br></a><a href="https://screenrant.com/vampire-tabletop-rpg-working-class-struggles/?fbclid=IwAR12VSgJWIxVjjKPggorcC_Tjs12dadMy8c9WCfByAA193K2OvYSIWQALtk" rel="nofollow noopener" referrerpolicy="origin">https://screenrant.com/vampire-tabletop-rpg-working-class-struggles/?fbclid=IwAR...</a></p>
<p><span class="">"holy shit what the fuck</span>" - Luke Gearing<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjI4MDIyLzMzNTgxNTkuanBn/original/UAPwzE.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI4MDIyLzMzNTgzMzcuanBn/original/ipo3uC.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI4MDIyLzgxMDczMDkucG5n/original/oOwTuT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI4MDIyLzMzNTgzNDEuanBn/original/2ObGch.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI4MDIyLzMzNTgzNDcuanBn/original/E8%2BuQx.jpg]]
<p><span class=""><em>COBWEBS</em></span> is a 1-5 player GM-less RPG that tells stories of reluctant investigators uncovering terrifying conspiracies and getting far more than they bargained for. It combines elements of noir, horror, and science fiction to create a uniquely haunting mystery built collaboratively. If you enjoy podcasts like <em><span class="">Limetown</span></em> and <em><span class="">Tanis</span></em>, comics like <span class=""><em>Mind MGMT</em></span>, or movies like <span class=""><em>Under The Silver Lake</em></span> and <em><span class="">Mute</span></em>-you're in the right place. </p>
<p>This game builds upon mechanics you know from games you already enjoy such as <span class=""><em>Lovecraftesque</em>,</span> <span class=""><em>Blades in the Dark</em>,</span> and <span class=""><em>The Hour Between Dog & Wolf</em></span> while simultaneously bringing a new and novel experience to your table. </p>
<p>Cobwebs is designed by Adam Vass of <a href="http://www.worldchampgame.co/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">World Champ Game Co.</a> illustrated by <a href="https://srcantirino.carbonmade.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Sally Cantirino</a>, and published by <a href="http://www.exaltedfuneral.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Exalted Funeral</a>. <br></p>
<p><img src="https://img.itch.zone/aW1nLzM1NTMyMTcucG5n/original/H1Ys8k.png" loading="lazy"><br></p>
<p><span class=""><em>Cobwebs</em></span> works best with a group three players but comfortably supports one to five. Over the course of your game, each player takes turns inhabiting one of three shared roles:</p>
<ul><li> <span class=""><strong>The Darling</strong></span> - our lone investigator. This person is far outside of their realm of comfort, but when a loved one goes missing and those tasked with finding them fail, they are resolved to take things into their own hands.</li><li> <strong><span class="">The Shadow</span> </strong>- an ensemble of friendly, suspicious, or dangerous characters who our Darling interacts with during their investigation. Some will help, others will hinder, but each one brings our investigator closer to peril.</li><li> <strong><span class="">The Machine</span></strong> - the outsider tasked with assembling scenes, describing locations, and ramping up tension as danger draws near. </li></ul>
<p>Each role has particular goals and randomized contextual setups in each scene as determined by dice rolls interacting with a beautiful cloth die-drop playmat. </p>
<p>Each player shapes the mystery in secretive ways, adapting and projecting various theories as you progress. The final result is the sum of the collective’s contributions to the story, and still a conclusion that no one person could have anticipated.</p>
<p><br><img src="https://img.itch.zone/aW1nLzM1NTMyMjgucG5n/original/4%2FT5sM.png" loading="lazy"><br></p>
<p>The digital edition of <em>COBWEBS</em> includes the following:<br></p>
<ul><li>Complete rule book, including 10 quickstart scenarios by a cast of amazing guest contributors<em>: </em><span class=""><a href="https://cone.itch.io/">Cecil Howe</a>, <a href="https://bananachan.itch.io/">Banana Chan</a>, Austin Knight, <a href="https://fm-geist.itch.io/">Fiona Maeve Geist</a>, <a href="https://ndpdesign.com/" rel="nofollow noopener" referrerpolicy="origin">Nathan D. Paoletta</a>, <a href="http://a-sputnik.itch.io/">Suzanne Schenewerk</a>, <a href="http://lindahcodega.com/" rel="nofollow noopener" referrerpolicy="origin">Linda H Codega,</a> <a href="https://temporalhiccup.itch.io/">Jamila R. Nedjadi</a>, and <a href="https://fractal-dragon.itch.io/">Alex Guerrero</a>. </span></li><li><em>Machine Automatica</em>: an additional variant rules document for playing with 1-2 players developed by <a href="https://www.floatingchair.club" rel="nofollow noopener" referrerpolicy="origin">Samuel Mendez</a>.</li><li>Printable playmat for in-person play, you supply your own dice, tokens, and notecards.</li><li>Printable rules reference cards for easier play.</li><li>Digital assets of playmats, dice, and tokens for online play in your preferred platform.</li><li>Access to a Google Slides project ready for online play, including die dropping and note taking, designed by <a href="https://adamebell.itch.io/">Adam Bell</a></li></ul>
<p>If you're interested in the physical edition which includes custom dice, tokens, and a screen printed cloth playmat, visit <a href="https://www.worldchamp.io/store" rel="nofollow noopener" referrerpolicy="origin">worldchamp.io/store</a> or <a href="https://www.exaltedfuneral.com" rel="nofollow noopener" referrerpolicy="origin">exaltedfuneral.com</a><br></p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjYwMzU4LzM1NTMxNjgucG5n/original/%2BB7l8w.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwMzU4LzM1NTMxODMucG5n/original/9DX5%2Fc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwMzU4LzM1NTMxNjkucG5n/original/nZZvez.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwMzU4LzM1NTMxODQucG5n/original/Vz0dpt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwMzU4LzM1NTMxNzAucG5n/original/p6q1gZ.png]]
<p>Hey,</p>
<p>You can<strong> get Code Dungeon for FREE </strong>if you sign up to the newsletter for my next game!</p>
<p><a href="https://www.monstersofthenorth.com/#/signup" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Newsletter Signup</a></p>
<p>Code Dungeon is a short atmospheric dungeon crawler hack-n-slash game where you fight your way up a tower through hordes of enemies.<br></p>
<p>The game saves your progress every time you ascend a floor. There are 4 floors.</p>
<h3>Accessibility </h3>
<p>#a11y</p>
<p>Code dungeon was designed to be accessible to people with low vision or no vision. The game offers </p>
<ul><li>Strongly directional audio spatialization: using similar Binaural Audio as VR games. </li><li>High Contrast graphics.</li><li>Reconfigurable Controls</li><li>Supports Keyboard only mode, or Keyboard + Mouse.</li><li>Supports NVDA and other popular screen readers.</li><li>Enemies with Audio Cues for attacks.</li><li>Has an Audio-Only Navigation System (<a href="https://youtu.be/VMTn1bqiBRw" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Check out the tutorial</a>)</li><li>"Super Cane" wall detection: Audio cues to indicate distance to walls and objects.</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/VMTn1bqiBRw" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjA2MjM2LzQwNDc0NjIucG5n/original/KhSpQB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjA2MjM2LzQwNDc0NjQucG5n/original/HEH6YM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjA2MjM2LzQwNDc0NjMucG5n/original/sYhZsD.png]]
<p><strong>**UPDATE** Mac & PC Builds now have translated text in Spanish, French, German and the original English!</strong></p>
<p>Codemancer brings the <strong>mystery of magic</strong> and the <strong>exhilaration of learning to code</strong> together in a fantasy universe that uses spell casting as a way to teach and learn programming skills. Codemancer’s fantasy universe is filled with rival sorcerers and their minions for players to encounter along their journey. Codemancer is a non-violent, entertaining, and educational game designed to be <strong>inclusive and accessible</strong> to learners at any stage. Features include a gender-neutral fantasy setting with a female protagonist, a narrative backbone, and a programming interface that’s designed to be easy to understand by kids with varying degrees of skill and experience. Codemancer breaks down barriers that may have discouraged some kids from embracing technology and <strong>elevates their screentime</strong> to be more productive <em>and</em> entertaining. It isn’t a typical coding or technology game.</p>
<p><strong>WHAT IS CODEMANCER ALL ABOUT?</strong> </p>
<p>Codemancer tells a moving story about Aurora, a young, creatively talented girl who’s trying to grow up, become independent, and do good in the world in the face of incredible obstacles when her <strong>father is suddenly kidnapped</strong>. Aurora has to embark on an adventure to save him as she grows into a gracious and independent young woman. She must learn magic spells to save her father, but the <strong>magic used in Aurora’s world works the same as programming does in ours</strong>. Inspire children to explore their potential as they discover the magic of coding.</p>
<p><strong>CODEMANCER IS AN EDUCATIONAL GAMING ADVENTURE:</strong> </p>
<ul><li>Codemancer is designed for <strong>6 to 12 year olds</strong> as an educational game that teaches the magic behind coding—and can be fun for grownups, too!</li></ul>
<p><strong>CODEMANCER SPECIFICALLY TEACHES:</strong></p>
<ul><li>Sequential Algorithms</li><li>Debugging</li><li>Function Arguments</li><li>Scope</li><li>Looping Constructs</li><li>Concurrent Programming</li></ul>
<p><strong>...AND TEACHES IN GENERAL:</strong></p>
<ul><li>Computational Thinking</li><li>Planning</li><li>Problem Solving</li><li>Resilience
</li></ul>
<p><strong>CODEMANCER FEATURES:</strong></p>
<ul><li>A narrative inspired by popular works of young adult fantasy worlds such as Harry Potter, Percy Jackson, The Neverending Story, The Last Airbender, and many more!</li><li>Gameplay that takes place in a hexagonal world, making it easy to estimate distances and angles by eye. </li><li>'Freeze time' ability, so players can debug the programs they've written and potentially code their way out of a jam to learn from their mistakes.</li><li>Availability for PC, Mac, iPad, and Android tablets.</li></ul>
<p><strong>CODEMANCER IS STRUCTURED FOR ACCESSIBILITY AND INCLUSIVITY:</strong> </p>
<ul><li>The goal of Codemancer is to be as broadly <strong>inclusive as possible</strong> by creating a gender-neutral fantasy setting with a female protagonist, a narrative backbone, and language interface that’s designed to make the game appeal to kids at different skill levels. </li><li>Codemancer breaks down barriers that can hinder some kids from feeling comfortable with engaging with programming, for example Codemancer <strong>uses pips (like on a die) instead of numerals</strong>, and sets the gameplay in a hexagonal world that makes it easy to estimate distances and angles by eye. </li><li>No syntax errors -- if you can enter a spell, it will run. Syntax errors can be frustrating and cause learners to quit before they really begin.</li><li>Codemancer uses an <strong>open dyslexic font</strong>, where letters are designed to look distinctly different from each other to make reading easier for kids with dyslexia.</li><li>The game is fully voiced, so <strong>reading is completely optional</strong>.</li><li>Codemancer's programming language is designed to be accessible, but also translates easily to a variety of popular real-world programming languages (such as Python).</li><li>Codemancer appeals to many educational groups, from children with special needs for reading, to younger children new to coding, to older children with more advanced coding and programming skill sets. </li><li>Codemancer has the potential to reach under-represented groups in coding and teach them an often-exclusionary, but nonetheless important, 20th-century skill.</li></ul>
<p></p>
<p></p>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/3DZ26MpKIzA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzYyMjc0LzE4MTEyNDIucG5n/original/hX7nmN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYyMjc0LzE4MTEyMzkucG5n/original/DYTBUf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYyMjc0LzE4MTEyNDAucG5n/original/FoAcCA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYyMjc0LzE4MTEyNDgucG5n/original/jYmWiA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYyMjc0LzE4MTEyNDMucG5n/original/9WBvGm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYyMjc0LzE4MTEyNDQucG5n/original/gQRRvJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYyMjc0LzE4MTEyNDYucG5n/original/6YdoPT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYyMjc0LzE4MTEyNDUucG5n/original/PP8cDJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYyMjc0LzE4MTEyNDkucG5n/original/qDkCQS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYyMjc0LzE4MTEyNDEucG5n/original/k7IPmr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYyMjc0LzE4MTEyNDcucG5n/original/mOH1%2Be.png]]
<p><strong style="color:#ffff00">Color Jumper</strong> is an abstract, color-based puzzle platformer which focuses on fast, precise movement to navigate your surroundings. Inspired by hardcore platformers like <strong>Super Meat Boy, Downwell, VVVVVV,</strong> and many others, your goal in <strong style="color:#ffff00">Color Jumper</strong> is to reach the exit.</p>
<p>You control a block with a different color on each side. Colored platforms are only solid when in contact with the connecting color of your block. Each jump rotates your block, creating a world where each jump must be planned carefully, turning levels into a twisting high-speed parkour race to the finish.<br></p>
<p><img src="https://img.itch.zone/aW1nLzEzNzg4MDQuZ2lm/original/WTVUZb.gif" loading="lazy"></p>
<h2>Featuring</h2>
<ul><li>Fully integrated colorblind mode
</li><li>Dedicated speedrun mode
</li><li>Incredibly tight and responsive controls
</li><li>Blisteringly fast gameplay
</li><li>Over 100 levels to conquer
</li><li>Four unique and challenging boss fights
</li><li>Collectibles which unlock additional extreme challenge levels
</li><li>Time and rotation goals for each level, a completionist's dream! (or nightmare?)</li></ul>
<figure><img src="https://img.itch.zone/aW1nLzEzNzg4MDUuZ2lm/original/NuV1Fy.gif" loading="lazy"><br></figure>
<iframe width="720" height="450" src="https://www.youtube.com/embed/B50OqGhAsI8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjgzNDk0LzEzNzg3OTgucG5n/original/%2Fx9XuI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgzNDk0LzEzNzg3OTkucG5n/original/DXR%2Fps.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgzNDk0LzEzNzg4MDAucG5n/original/lg7RV7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgzNDk0LzEzNzg4MDEucG5n/original/OEMCcB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgzNDk0LzEzNzg4MDIucG5n/original/1l3JRA.png]]
<p>Combo Postage is an action-packed platform-puzzle game!<br>Join Sue on her summer job processing packages with a high-tech tape gun.</p>
<h5>Risk-Reward Puzzle Action!</h5>
<ul><li>Run, jump, and climb with responsive three-button controls. Tape up boxes by bumping into them, then stomp to clear 'em out!</li><li>Get combos by clearing multiple boxes at a time. Set up big combos by letting stacks pile up- just don't take too long to clear them...</li><li>Two gameplay variants: Go for big combos in <em>Standard</em>, and match numbered cards with combos in <em>Challenge</em>!</li><li>Runs are quick! When a hazard brings your shift to a close, just dust yourself off and jump back in when you're ready.</li><li>Lots to do! Check your stats, set up a customized shift, chat with Sue's coworkers, and more.</li><li>This game is pretty tough, but don't sweat it! You can focus on improving your personal best, go for bragging rights, or just have fun! There's no set ending to Combo Postage, so please play as long as you'd like. (Just not too long, OK?)</li></ul>
<p>Soundtrack avaliable here on <a href="https://kirklindsay.itch.io/combo-postage-original-soundtrack">itch</a> and on <a href="https://kirklindsaymusic.bandcamp.com/album/combo-postage-original-soundtrack" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Bandcamp</a>!<br></p>
<p><strong>Heads up!</strong> Scores are local to players' machines and are not ranked online. There is no plan to implement this in the future. Sorry!! Please consider recording video of your highest scores and sharing over the internet.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/t6mhVUt-Tz0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjc3MzEwLzIyNTE5MDQucG5n/original/zFiPpG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjc3MzEwLzIyNTE5MDMucG5n/original/CzBX%2FI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjc3MzEwLzIyNDg4MTAucG5n/original/TbYQVe.png]]
<p>Returning home as the descendant of a long-deposed leader, you explore what has become of your family's old domain. Though the scars of your ancestors' influence remain, the community has turned away from the past toward a hopeful future.<br></p>
<ul><li>Explore your rebuilt homeland above the clouds by climbing almost any surface and effortlessly gliding through the air</li><li>Listen to the stories of the folks who remain here and how they have recovered and restored their society</li><li>Visit the sites of the neglected pilgrimage of a long-forgotten faith</li><li>Discover the secrets of a recovering populace and the strength of a community</li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjgxOTI3LzE0MTMzNDQuZ2lm/original/mVUl21.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgxOTI3LzE0MTMzMzMucG5n/original/74v2Rx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgxOTI3LzE0MTMzMzQucG5n/original/l95zZH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgxOTI3LzE0MTMzNTUucG5n/original/tG%2Fjon.png]]
<p>Compromise//Empire is a GMless roleplaying game for 2-3 players about forming temporary alliances and resisting empire.</p>
<p>Each player takes the role of a faction forced into an unlikely alliance. You must represent your agenda while making compromises to fight against the forces of empire.</p>
<p><strong>Premise</strong></p>
<p>The forces of the Empire, the forces of totalitarianism and exploitation, are invading. They have secured a foothold, and want complete control. Their soldiers trample the land, their spies and diplomats are in your places of power, time is limited.</p>
<p>You represent a faction. One of the factions who are working to resist the Empire. As a representative you must extend a hand and form whatever alliances you can with the other factions at play. Resisting the Empire will cost you, and your faction. Compromises must be made.</p>
<p>What cost will you pay to resist the Empire?</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjk1NDg0LzM5MTAxNTIucG5n/original/Tnsd1X.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjk1NDg0LzM5MTAxNTEucG5n/original/0V%2FTkg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjk1NDg0LzM5MTAxNTAucG5n/original/kCtYNd.png]]
<p>
Basically a twin stick shooter, with some weapon options and different enemies. It gets harder and harder until you die, so there is no end goal except getting higher scores. (and unlocking the last gun- currently ricochet gun) <br>
<br>
Why "concave" in the name? Because I am trying lots of different difficulty curve functions with most of them being concave. <span></span>
</p>
<p>
<br>
</p>
<p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/c-r68_8Mizo" frameborder="0" allowfullscreen=""></iframe>
</p>
<p>
<br>
</p>
<p>
<strong><u>Instructions</u></strong>
</p>
<p>
<strong><br>
</strong>
</p>
<p>
<strong>Basic</strong>
</p>
<p>
WASD to move<br>
Mouse Wheel or 1-2-3-4-5 to change weapons.<br>
Left click to shoot, right click to teleport to mouse's location.
</p>
<p>
<strong>Goal</strong>
</p>
<p>
You cant win this game. But maybe unlocking the last weapon -currently ricochet gun- is a good target to reach. You will hear a pickup sound when you unlock a new weapon by killing enemies. The enemies gets a bit faster and more numerous with each enemy you kill, so surviving until eternity is not possible.
</p>
<p>
Difficulty and weapon unlocks only got updated with the enemies you kill, not by environmental hazards (e.g explosions). With that in mind, try to increase your high score.
</p>
<p>
Current highscore is 25000, from my friend Nactuam. Let me know if you can beat him.
</p>
<p>
<strong>Weapons</strong>
</p>
<p>
The only interesting weapon is sword when it comes to usage. Ever played fruit ninja on mobile? Sword works exactly like that. Click and drag to swing. You cant swing all day long, so release after a while. The harder you swing, the bigger your swing's trail will be.
</p>
<p>
Shotgun is a low range weapon. It is an old shotgun, so it is heavy.
</p>
<p>
Machine gun is a conventional gun, that lets you take full control of topdown shooting mechanisms.
</p>
<p>
Plasma gun has piercing ammo. But the weapon itself is really heavy.
</p>
<p>
Ricochet bullets can kill you. Be careful.
</p>
<p>
<strong>Credits</strong>
</p>
<p>
Art: Me & Seyacim
</p>
<p>
Programming: Me
</p>
<p>
Music: <a href="https://itch.io/profile/replaytion" target="_blank">Replay</a><span></span></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/c-r68_8Mizo" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTU0OTYvNDQ3MjUxLmdpZg==/original/MGEeJV.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU0OTYvNDQ3MjM1LmdpZg==/original/Y5wm%2BY.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU0OTYvNDQ3MjU3LmdpZg==/original/TOa2es.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU0OTYvNDQ4NTcwLnBuZw==/original/I5jvnR.png]]
<h1 class="text-center"><strong>Concentric</strong> is a minimalist action game about gracefully moving in circles.</h1>
<h2 class="text-center">Navigate along a set of concentric rings and bring energy back to your core. </h2>
<h2 class="text-center">Retrieve energy. Evade traps. Play fast and take risks for a better score. Carve a perfect path through the level and rise the ranks of the global leaderboards.</h2>
<div class=""><iframe style="width: 923px; height: 518px" src="https://www.youtube.com/embed/MYvgBxWGpqs?&autoplay=0&loop=1&rel=0&showinfo=0&fs=0&controls=0&color=white&iv_load_policy=3&playlist=MYvgBxWGpqs&modestbranding=1" frameborder="0" allowfullscreen="0">&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;span id="selection-marker-1" class="redactor-selection-marker"&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;/span&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;</iframe></div>
<p><strong><img src="https://img.itch.zone/aW1nLzk5NDk5Mi5wbmc=/original/5cMlcY.png" loading="lazy"><br></strong></p>
<figure><strong><img src="https://img.itch.zone/aW1nLzk5NDI5Ni5wbmc=/original/ihO6g3.png" loading="lazy"></strong></figure>
<p><img src="https://img.itch.zone/aW1nLzk5NDk5My5wbmc=/original/Uy1HYE.png" loading="lazy"><br></p>
<h2 class="text-center"></h2>
<h2 class="text-center">•••••</h2>
<h3 class="text-center">• Time-attack style gameplay •</h3>
<h3 class="text-center">• 26 challenging levels •</h3>
<h3 class="text-center">• Gamepad and Keyboard controls supported •</h3>
<h3 class="text-center">• Online Leaderboards •</h3>
<h2 class="text-center">•••••</h2>
<h3 class="text-center"><img src="https://img.itch.zone/aW1nLzk5NDI4Ni5wbmc=/original/InKhar.png" loading="lazy"></h3>
<h2 class="text-center"></h2>
<h2 class="text-center">•••••</h2>
<h4 class="text-center">A game by <a href="http://twitter.com/zerofiftyone_" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Ben Wilson</a></h4>
<h4 class="text-center">Made during <a href="https://itch.io/jam/wizard-jam-6" target="_blank">Wizard Jam 6</a></h4>
<h4 class="text-center">Leaderboard hosting by <a href="http://www.dreamlo.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Dreamlo</a>.</h4>
<h1 class="text-center"><strong><a target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzk5NDMyOS5wbmc=/original/Or0Lgh.png" style="max-width: 100%" loading="lazy"></a></strong></h1>
<iframe width="720" height="450" src="https://www.youtube.com/embed/MYvgBxWGpqs?&autoplay=0&loop=1&rel=0&showinfo=0&fs=0&controls=0&color=white&iv_load_policy=3&playlist=MYvgBxWGpqs&modestbranding=1" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjEwNzY4Lzk5NDc5Mi5wbmc=/original/goXKQt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjEwNzY4Lzk5NDk5MS5wbmc=/original/tjM6gO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjEwNzY4Lzk5NDc5My5wbmc=/original/RZ7z0K.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjEwNzY4Lzk5NDk5MC5wbmc=/original/ip7cFl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjEwNzY4Lzk5NDc5NC5wbmc=/original/LRt7AY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjEwNzY4Lzk5NDk5NC5wbmc=/original/OLVvf9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjEwNzY4Lzk5NDk5NS5wbmc=/original/dqVeuh.png]]
<p>Containment is a small, minimalist strategy/simulation game where you try to maintain the growth of bacteria. The core gameplay is easy to pick up but very challenging to master. The game can be completed in one sitting, but has leaderboards and challenging goals to accomplish that might take longer!<br></p>
<p><img src="https://img.itch.zone/aW1nLzE1OTgwOTkucG5n/original/UjT%2Bo9.png" loading="lazy"><br></p>
<p><strong>Core Gameplay</strong><br>Containment is turn-based; the bacteria proliferate, you fight back, and the cycle continues. There are a number of rules that give depth to the strategy involved in achieving three stars on each level:<br></p>
<ul><li>You have a limited number of doses</li><li>Intentionally ending your turn early and letting the bacteria grow lets you research stronger antibiotics</li><li> All bacteria lose one health per turn</li><li>Any bacteria without neighbors die the next turn</li><li> Every isolated bacteria gains you bonus points</li><li>Each extra dose at the end of the game earns you bonus points</li></ul>
<p><strong><img src="https://img.itch.zone/aW1nLzE1OTgxMDEucG5n/original/82cBzx.png" loading="lazy"><br></strong></p>
<p><strong>Aesthetic</strong><br></p>
<p>The game features a mix of cute and sleek design with a visually pleasing color palette and satisfying interactions in every corner. The music is soothing and relaxing to listen to while you battle the unending bacterial proliferation.</p>
<p><strong>Content</strong><br>The game contains the following amount of content:<br></p>
<ul><li>Comprehensive and interactive tutorial</li><li>9 brain-teasing and challenging levels</li><li> A creative sandbox mode (unlocked at the end of the game)</li></ul>
<p><img src="https://img.itch.zone/aW1nLzE1OTgxMDMucG5n/original/M8KMxc.png" loading="lazy"><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/AZSW1mOT_gY" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjAzNjA3LzE1OTgxMDUuanBn/original/ET8mOg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjAzNjA3LzE1OTgxMDQuanBn/original/4K99bo.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjAzNjA3LzE1OTgxMDYuanBn/original/72E%2BPO.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjAzNjA3LzE1OTgxMDguanBn/original/YdZkDH.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjAzNjA3LzE1OTgxMDcuanBn/original/9GqT6O.jpg]]
<h3><img src="https://img.itch.zone/aW1nLzU3MjMyMDQuZ2lm/original/n6I3Ov.gif" loading="lazy"></h3>
<h3>Control Override Is A Puzzle Game About Control.</h3>
<p>You play as a <strong>hacker </strong>who has hacked into an <strong>rogue </strong><strong>AI </strong>to <strong>terminate </strong>it.</p>
<figure><img src="https://cdn.akamai.steamstatic.com/steam/apps/1406090/extras/not-a-gif.gif?t=1618990597" loading="lazy"></figure>
<p><br>Delve into a virtual cyberspace inside a rogue AI that YOU created in the past.<br><br>Solve puzzles. </p>
<p>Break through the AI's security layers.</p>
<p> Reach the core. </p>
<p>Terminate the AI.<br><br><strong><em>But Should You?</em></strong><br></p>
<p><img src="https://cdn.akamai.steamstatic.com/steam/apps/1406090/extras/noisyAI.GIF?t=1618990597" loading="lazy"><strong></strong></p>
<h2>Key Features</h2>
<ul><li>Simple mechanics. Unexpected consequences.<br>
</li><li>Physics defying puzzles.<br>
</li><li>A generous rewind mechanic that lets you fix your mistakes. Problem solving is an iterative process.<br>
</li><li>A minimalist neon art style.<br>
</li><li>An intriguing story of a hacker who hacked an AI of his own creation.<br>
</li><li>Multiple endings that form a jigsaw puzzle-like narrative.
</li></ul>
<h2>Also, check out the steam page:</h2>
<p><iframe src="https://store.steampowered.com/widget/1406090/" frameborder="0" width="646" height="190"></iframe><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/ilSdky4qJMA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzgyMzYwLzUzNzMyNjAucG5n/original/I%2FE6Ht.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyMzYwLzUzNzMyNTgucG5n/original/PrNT6S.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyMzYwLzUzNzMyNTQucG5n/original/YV%2Bg%2FE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyMzYwLzUzNzMyNTUucG5n/original/xwfVKg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyMzYwLzUzNzMyNjEucG5n/original/mJm977.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyMzYwLzUzNzMyNTkucG5n/original/DVw0VT.png]]
<p>[<a href="https://raulranma.itch.io/cook-and-hero/devlog/239973/cook-hero-heri-de-cozinha" target="_blank">Ver descrição em português</a>]<br></p>
<p>You’re an aspiring master cook, in a face off competition amongst worthy rivals to create the perfect dish. Unfortunately, you’re supposed to make it out of scary and scaly monsters in very dangerous underground conditions.</p>
<p><br></p>
<p>
</p>
<h2>INGREDIENTS</h2>
<ul><li>This pamphlet, either printed or at hand digitally.</li><li>Between <strong>2</strong> and <strong>6</strong> players.</li><li>Special ten sided dice — <strong>d10</strong>s — or maybe an <strong>app</strong> to simulate them.</li><li>Some blank paper, pencils and erasers.</li><li>Around <strong>2</strong> to <strong>4</strong> hours.</li><li>Snacks and drinks (optional).</li></ul>
<p><br></p>
<h2>DIRECTIONS</h2>
<ul><li>Bring all your ingredients to a <em>mostly clear tabletop</em> (literal or digital). Reserve the dice/app for now.</li><li>Take your players and sort them. One of those will be the <em>Bard</em>, the rest will be <em>Adventurers</em>.</li><li>Have the bard player create their <em>Tale</em>, and the adventurers create their <em>Cook Characters</em> using the blank paper and pencils. Add erasers as needed.</li><li>With the tale and characters ready, add the dice/app and have players go from scene to scene, following the rules and creating a story together for up to 4 hours. Whenever a character dies or the story ends, have them say their epilogue to wrap it all up.</li><li>If you feel like it, add the drinks and snacks during the game, or take a small break to enjoy them before or after it’s all over.</li></ul>
<p><br></p>
<p>This is a pamphlet game based on <a href="https://gshowitt.itch.io/honey-heist" target="_blank">Honey Heist</a>, and created as a system to run <a href="https://roll4tarrasque.itch.io/baktos-terrifying-cuisine">Bakto’s Terrifying Cuisine</a> in — you’ll need some more weird dice for that, I’m afraid. The timber interior texture on the screenshots was made by <a href="https://www.freepik.com/kues1" rel="nofollow noopener" referrerpolicy="origin">kues1</a>.<br></p>
<p><br></p>
<p><em>This game is licensed under CC BY-SA 4.0. You can create upon it, as long as you license your game in the same terms and give appropriate credit.<br></em></p>
<p><em><span></span><a href="https://creativecommons.org/licenses/by-sa/4.0/" rel="nofollow noopener" referrerpolicy="origin">https://creativecommons.org/licenses/by-sa/4.0/</a></em><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjcwNjE1LzU2MTcyOTIuanBn/original/jCnzwJ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcwNjE1LzU2MTIzMzUucG5n/original/s1SlwV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcwNjE1LzU2MTI0NzUucG5n/original/LJGgTv.png]]
<p>Cook, Serve, Delicious! 2!! is the massive sequel to the surprise best selling original, one of the few games that gives players complete control on how they want to build their restaurant.</p>
<p>The game starts like any other morning at SherriSoda Tower as you take the elevator up to open Cook, Serve, Delicious!, a platinum star restaurant that was surging in popularity thanks to your amazing chef and management skills. Just then, a swarm of police surround SherriSoda Tower. It seems the SherriSoda head executives were secretly stealing funds from the company at the same time they were incurring a staggering amount of debt, draining the accounts of the tower and several of the businesses inside of it, including CSD. Just like that, the tower was closed and put up for federal auction, including everything inside of it. It was all over… the Cook, Serve, Delicious! restaurant was no more.</p>
<p>Angry but determined to rebuild, you’ve scrounged up all of your personal life’s savings and bought commercial space inside the Teragon Supertower, the largest skyscraper in the city. It’s here that you will start a brand new Cook, Serve, Delicious! restaurant, build it back to its former glory, and rebuild your legacy as the best chef in the world.</p>
<p>Features include:</p>
<ul><li>A 60+ hour experience as you build your restaurant from a roach infested eatery to a World Class Platinum Star experience by either running your own restaurant or branching out as a chef for hire, where you take jobs within the tower and various restaurants as you gain experience with the large array of foods, which spans 400 levels across 33 restaurants!
</li><li>Several modes including Classic Mode that brings back the classic gameplay of the original, Stress mode that instantly rockets the difficulty to the highest setting, and Zen mode, which allows you to take it easy and relaxes many of the stressful elements to provide an easy day of cooking. </li><li>All new gameplay features and additions, with a greater flexibility of difficulty for those who like it casual or<em><strong> insanely difficult</strong></em>.
</li><li>Over 200 foods, sides, drinks and desserts to choose from, a staggering increase from the 30 foods in the original game.
</li><li>New local co-op mode! The all new split screen co-op feature allows you to play through the entire game with two players, with the ability for players to drop in and out during your progress within the game.
</li><li>Tons of lore including an email system with over 600 emails, unlockable secrets, and tons more!
</li><li>Unlock over 1,200 restaurant objects and design your restaurant however you'd like with the Designer mode.
</li><li>All new 1080p native/60fps code.</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/T_yIOosKNAg" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzc5MjI1LzE4OTk0MTUucG5n/original/P67WXD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc5MjI1LzE4OTk0MTYucG5n/original/Epaqke.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc5MjI1LzE4OTk0MjUucG5n/original/%2BUucYM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc5MjI1LzE4OTk0MjAucG5n/original/L%2F24Vp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc5MjI1LzE4OTk0MTcucG5n/original/u7YjNa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc5MjI1LzE4OTk0MTgucG5n/original/jb%2BEcb.png]]
<p><em>"best described as, “wow, Silent Hill, Twin Peaks, and The Wire made messy love all over Candyman while watching reruns of Bozo the Clown.”" </em>- <a href="https://www.dreadxp.com/review/cookies-review-definitely-lost-my-deposit-after-that/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">DreadXP</a><strong></strong></p><p>Named #17 in Slant Magazine's <a href="https://www.slantmagazine.com/features/the-25-best-video-games-of-2021/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">"25 Best Games of 2021"</a><em></em></p>
<p></p>
<p><img src="https://img.itch.zone/aW1nLzU1NzUxNjAucG5n/original/tO4wxw.png" loading="lazy"><br></p>
<p><img src="https://img.itch.zone/aW1nLzU1NzEzMDAucG5n/original/DSYeBT.png" loading="lazy"><br></p>
<p>Where the ordinary and the hard-to-believe meet in a gutter, the population of "The Darb" simply call it "home". Gang violence, poverty, and substance abuse leave Darby rife with drifters, murderers, and cash maniacs whose sole purpose in life is finding the next high or die trying. The town of the same name exists as a swollen, caustic juxtaposition of <em>Fear and Loathing in Las Vegas</em> and reruns of <em>Twin Peaks</em> gestating in the sweltering heat of Southern Florida.
</p>
<p>The optimistically named Orange Grove Houses, a dilapidated flop house of an apartment building where the only thing more parasitic than the rats and roaches are the residents, squats obscenely at the end of a long abandoned housing development. A lone drug pusher hawks his wares to sun-deprived addicts when he's not falling prey to his own stock. After an especially odd trip, he finds himself tangled in a devil's weave of crime and hallucinations in halls that even God has given up on.</p>
<p>Inspired by black comedy <em>Trash Humpers</em> and VHS slashers like <em>The Texas Chainsaw Massacre</em>, <em>Cookies</em> is an obscene PSX-coated blend of Satanic cults, meth-dealing clowns and online torture chambers, all under the same backwards-ass roof.<br></p>
<figure><img src="https://img.itch.zone/aW1nLzU1NzEyOTkucG5n/original/AT6Fk2.png" loading="lazy"><br></figure>
<p><strong>NOTE: </strong><em>This game features heavy use of camera filters/effects to simulate the video quality of a VHS tape, which may be triggering to photosensitive players. </em><em>I strongly suggest tweaking the game's visual settings to suit your monitor's resolution upon startup, as the game may be too grainy/blurry depending on your screen size.</em></p>
<p><strong>CONTENT WARNING:</strong> Drug use, torture, light sexual themes<br></p>
<p><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzU1NzEyMzcucG5n/original/Khz45t.png" loading="lazy"><br></p>
<p><br></p>
<h3 class="text-center"><em>Cookies</em></h3>
<p class="text-center">Developed by <a href="https://twitter.com/stef_pinto_gd" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Stef Pinto</a></p>
<p class="text-center">In partnership with <a href="https://twitter.com/penquingames" rel="nofollow noopener" referrerpolicy="origin">Penquin Games</a></p>
<p class="text-center">With music by <a href="https://twitter.com/penquinjohar" rel="nofollow noopener" referrerpolicy="origin">Johar Ibrahim</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTgwMTU3LzU1NzA4ODQucG5n/original/yQS0Lw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgwMTU3LzU1NzA4ODUucG5n/original/X%2Bnnh2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgwMTU3LzU1NzA5MzAucG5n/original/wfWHs3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgwMTU3LzU1NzA4MzkucG5n/original/GPm4jl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgwMTU3LzU2ODU3MjkuanBn/original/c67Mjf.jpg]]
<p>In Coriander and The Fall of Orion you play as the titular Coriander as they deal with the emotional fallout of The Fall of Orion. I don't want to spoil the premise, but it is a tiny 3D Adventure game where you talk to others and cut down trees. If you're into stories about emotional fallen mecha, this game may be for you! </p>
<p>_____________________________________________________________</p>
<p>Coriander and The Fall of Orion is a game idea I've had for over two years, although it has changed very much over that time period. I made this prototype-of-a-prototype while unemployed when I had time to learn how to model and make simple art assets. I hope to eventually flesh this out more in the future and expand on the story. I'd also love to add functionality to allow you to give to the environment rather than just exploit it. </p>
<p>The game should take 10-15 minutes to play. You can control Coriander with the arrow keys, press the space bar to jump and use z to interact and chop down trees. Also note that you can not chop trees down immediately. If you have any major issues with it (like a game breaking bug, the game won't load, etc) please let me know and I'll try to patch it with a fix. Otherwise this is the final version until I decide to build on it and likely expand into a different game entirely. </p>
<p>If you end up playing this thank you! Feel free to leave a comment with thoughts on it!</p>
[img width=500 [https://img.itch.zone/aW1nLzQ1MTI0OTIucG5n/original/JpkxHX.png]]
<p>In Coriander and The Fall of Orion you play as the titular Coriander as they deal with the emotional fallout of The Fall of Orion. I don't want to spoil the premise, but it is a tiny 3D Adventure game where you talk to others and cut down trees. If you're into stories about emotional fallen mecha, this game may be for you! </p><p>_____________________________________________________________</p>
<p>Coriander and The Fall of Orion is a game idea I've had for over two years, although it has changed very much over that time period. I made this prototype-of-a-prototype while unemployed when I had time to learn how to model and make simple art assets. I hope to eventually flesh this out more in the future and expand on the story. I'd also love to add functionality to allow you to give to the environment rather than just exploit it. </p>
<p>The game should take 10-15 minutes to play. You can control Coriander with the arrow keys, press the space bar to jump and use z to interact and chop down trees. Also note that you can not chop trees down immediately. If you have any major issues with it (like a game breaking bug, the game won't load, etc) please let me know and I'll try to patch it with a fix. Otherwise this is the final version until I decide to build on it and likely expand into a different game entirely. </p>
<p>If you end up playing this thank you! Feel free to leave a comment with thoughts on it!</p>
[img width=500 [https://img.itch.zone/aW1nLzQ1MTI0OTIucG5n/original/JpkxHX.png]]
<p>This unofficial supplement contains one organisation, four landmarks, six fallout options specific to two of the landmarks and several plot hooks for you to use in your game of <a href="https://rowanrookanddecard.com/product/heart-the-city-beneath-rpg/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Heart: The City Beneath</a>. It is not a standalone game and requires a copy of Heart: The City Beneath to play.</p>
<ul><li><strong>The Order of Sanguine Sorcerers</strong>, a group who believe that you can use the flow of your own blood to map the Heart, and their headquarters <strong>Sacracordia</strong></li><li><strong>The Super Wonder Gallery</strong>, a cursed place of creation where physical manifestations of art take on lives of their own
</li><li><strong>The Galactic Cake</strong>, an endless landscape of stars where you can walk from point to point to create your own constellations
</li><li><strong>The Stables</strong>, a mysterious and ghostly tableau of a moment in time where everything in the universe is stable</li></ul>
<p><span></span></p>
<p><strong>Content warnings: </strong>Heart: The City Beneath is a horror game and this supplement is written in the same vein. It contains self-injury, disembowelment, body horror, suicide, and ghosts.<br>
</p>
<p><em>CORPUS is an independent production by Sebastian Yūe and is not affiliated with Rowan, Rook and Decard. It is published under the <a href="https://rowanrookanddecard.com/rrd-community-licence/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">RR&D Community License</a>. </em><em>Heart is copyright Rowan, Rook and Decard. You can find out more and support these games at <a href="https://rowanrookanddecard.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">rowanrookanddecard.com</a>.</em><br></p>
<p>Please let me know if you use any of these ideas in your game! I'd love to hear about how it went.<span></span></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTIyODA3LzU5OTgxMDYucG5n/original/aalTfA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyODA3LzU5OTgwNTQucG5n/original/GSEKR7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyODA3LzU5OTgwNTUucG5n/original/%2BxqRpB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyODA3Lzc1NzQ5NjMucG5n/original/b4blrr.png]]
<iframe src="https://www.youtube.com/embed/L1yB7PxqpJw?rel=0" allowfullscreen="" width="552" height="310" frameborder="0">
</iframe>
<h1 style="margin-top: 60px; margin-bottom: 40px">A puzzle game about planning the train route for the world's most awkward space colony</h1>
<p>Cosmic Express is a puzzle game about planning the train route for the world's most awkward space colony, from the minds behind <a href="https://draknek.itch.io/a-good-snowman">A Good Snowman Is Hard To Build</a> and the art of <a href="http://typhaine-uro.com" rel="nofollow noopener" referrerpolicy="origin">Tyu</a> from Klondike. It's cute, harder than it looks, and guaranteed to give you hours of frustrating fun across hundreds of levels.</p>
<p>Awards:</p>
<ul>
<li>Finalist - IMGA Global, 2017</li>
<li>Finalist - IndiePlus, 2017</li>
<li>Official Selection - Indie Megabooth, GDC 2017</li>
<li>Official Selection - Google Play Indie Corner, PAX 2016</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/L1yB7PxqpJw?rel=0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTIxNjE0LzU2OTk3NC5wbmc=/original/HV0b6I.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIxNjE0LzU2OTk3OC5wbmc=/original/gRKOkJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIxNjE0LzU2OTk3Ni5wbmc=/original/gVeKRu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIxNjE0LzU2OTk3Ny5wbmc=/original/IlsfYP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIxNjE0LzU2OTk3NS5wbmc=/original/TlCKpg.png]]
<p>A <a href="https://possible-worlds-games.itch.io/bfb" target="_blank">Beak, Feather, & Bone</a> hack set in a post space age world. You will play the people who explore and repurpose spaceships for their community. <br></p>
<p>
Inspired by real world “<em>rocket booster hunters</em>” this game explores our relationship to objects from space and the relationships of a snowy campsite.
</p>
<p>Map the <em><strong>Fall Sector</strong></em> — area of rocket parts buried in snow. You will take turns as groups, exploring the site and the dynamics between the travellers.<br></p>
<h2>To play you'll need:</h2>
<p>• a stack of note cards
<br>• writing and colouring utensils
<br>• an unlabelled map
<br>• a standard deck of 52 playing cards</p>
<p><br></p>
<p>And check out this <strong>playlist </strong>by <a href="http://samleigh.itch.io" target="_blank">Sam Leigh</a> . It's so cool!</p>
<p><br></p>
<iframe src="https://open.spotify.com/embed/playlist/0LnYm0rkUGovDIarSCpQQv" width="300" height="380" frameborder="0"></iframe>
<p><br></p>
<p><a href="https://www.twitch.tv/videos/1047247318" target="_blank" rel="nofollow noopener" referrerpolicy="origin">ACTUAL PLAY BY CRYSS</a><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTQwNTM2LzYwMzIzNzgucG5n/original/IfAbV4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQwNTM2LzUzNDc0NDEuanBn/original/QWF5KR.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQwNTM2LzUzNDc0MjguanBn/original/21vSZf.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQwNTM2LzUzNDc0MjkuanBn/original/dqFUcs.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQwNTM2LzYwMzIzNzkucG5n/original/HtCjXt.png]]
<p>A <a href="https://possible-worlds-games.itch.io/bfb" target="_blank">Beak, Feather, & Bone</a> hack set in a post space age world. You will play the people who explore and repurpose spaceships for their community. <br></p>
<p>
Inspired by real world “<em>rocket booster hunters</em>” this game explores our relationship to objects from space and the relationships of a snowy campsite.
</p>
<p>Map the <em><strong>Fall Sector</strong></em> — area of rocket parts buried in snow. You will take turns as groups, exploring the site and the dynamics between the travellers.<br></p>
<h2>To play you'll need:</h2>
<p>• a stack of note cards
<br>• writing and colouring utensils
<br>• an unlabelled map
<br>• a standard deck of 52 playing cards</p>
<p><br></p>
<p>And check out this <strong>playlist </strong>by <a href="http://samleigh.itch.io" target="_blank">Sam Leigh</a> . It's so cool!</p>
<p><br></p>
<iframe src="https://open.spotify.com/embed/playlist/0LnYm0rkUGovDIarSCpQQv" width="300" height="380" frameborder="0"></iframe>
<p><br></p>
<p><a href="https://www.twitch.tv/videos/1047247318" target="_blank" rel="nofollow noopener">ACTUAL PLAY BY CRYSS</a><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTQwNTM2LzYwMzIzNzgucG5n/original/IfAbV4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQwNTM2LzUzNDc0NDEuanBn/original/QWF5KR.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQwNTM2LzUzNDc0MjguanBn/original/21vSZf.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQwNTM2LzUzNDc0MjkuanBn/original/dqFUcs.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQwNTM2LzYwMzIzNzkucG5n/original/HtCjXt.png]]
<p><strong>A game of cosmic battle. Ram your opponent out of the ring, into oblivion. Attack? Parry? Dodge? Ro-Cham-Bo</strong><strong><br></strong></p><p>You might consider checking out this game's much more feature rich spiritual successor: <a href="https://dean-sick.itch.io/rebop-blasters">Rebop Blasters</a><br></p>
<hr>
<ul>
<li>Keyboard Controls:
<ul>
<li>Player One
<ul>
<li><strong>(W/Z)(A/Q)SD</strong>: movement</li>
<li><strong>SPACE</strong>: dodge (tap to parry)<br>
</li>
</ul>
</li>
<li>Player Two
<ul>
<li><strong>ARROW KEYS</strong>: movement</li>
<li><strong>COMMA</strong>: dodge<br>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>
Joysticks should work out of the box, left stick to aim, any button to dodge. If your joystick doesn't work, let me know and I'll address it.
</p>
<hr>
<p>
<strong>FAQ:</strong>
</p>
<p>
<strong>Q: </strong><em><strong>Isn't it spelled "Rochambeau"?</strong></em>
</p>
<p>
<strong>A: </strong><em><strong>Cosmic Rochambo bears no resemblance to your Earth-game.</strong></em>
</p>
<p>
<em><strong><br>
</strong></em>
</p>
<p>
<strong>Q: Why are we fighting?<br>
</strong>
</p>
<p>
<strong>A: <em>Because you must.</em></strong></p>
<hr>
<p>Send me videos of epic matches!<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/BMoD09BO3pU" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMjczLzYxMTU1OC5naWY=/original/HmxQ0i.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMjczLzYxMTU2MS5naWY=/original/x0NpJG.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMjczLzYxMTU2NC5naWY=/original/%2FEKAsE.gif]]
<p>2019 was a wild ride of a year for me, and the music in this album is largely inspired by the events that happened.</p>
<p>Tracklist:</p>
<ol><li>Dysphoria (4:01)</li><li>Cosmonauts (7:18)</li><li>The Journey (23:06)<ol><li>Descent</li><li>Questions</li><li>Turbulence</li><li>Blast Off</li><li>Reprieve</li></ol></li></ol>
<p></p>
<p>"Cosmonauts" is dedicated to Milo Mazurkiewicz, may she rest in peace.</p>
<p>this album is also available on <a href="https://lunaryuko.bandcamp.com/album/cosmonauts" target="_blank" rel="nofollow noopener">bandcamp</a> and streaming services like Spotify</p>
<p>Album cover art was done by <a href="https://twitter.com/majorbean_" target="_blank" rel="nofollow noopener">major</a><br></p>
[img width=500 [https://img.itch.zone/aW1nLzM2MjkyNTUucG5n/original/rlVUjV.png]]
<p>2019 was a wild ride of a year for me, and the music in this album is largely inspired by the events that happened.</p>
<p>Tracklist:</p>
<ol><li>Dysphoria (4:01)</li><li>Cosmonauts (7:18)</li><li>The Journey (23:06)<ol><li>Descent</li><li>Questions</li><li>Turbulence</li><li>Blast Off</li><li>Reprieve</li></ol></li></ol>
<p></p>
<p>"Cosmonauts" is dedicated to Milo Mazurkiewicz, may she rest in peace.</p>
<p>this album is also available on <a href="https://lunaryuko.bandcamp.com/album/cosmonauts" target="_blank" rel="nofollow noopener" referrerpolicy="origin">bandcamp</a> and streaming services like Spotify</p>
<p>Album cover art was done by <a href="https://twitter.com/majorbean_" target="_blank" rel="nofollow noopener" referrerpolicy="origin">major</a><br></p>
[img width=500 [https://img.itch.zone/aW1nLzM2MjkyNTUucG5n/original/rlVUjV.png]]
<p>Crab Bucket is a simple, one page game designed to emulate the feel, pointlessness, and pain of twitter discourse. You take the role of crabs in a bucket, all of you want to get out, but you can only get out by hurting each other and stopping other people from getting out. The game is interminable, largely pointless, and overtly designed to engender hurt feelings and pit people against each other.</p>
<p>For these reasons, I do not recommend playing this game. Treat it as a lyric game, more about the statement than the experience at the table. It just happens to be fully playable and deeply aggravating!</p>
[img width=500 [https://img.itch.zone/aW1nLzQ2MzA4MDAucG5n/original/xS%2BAVW.png]]
<p>Craft a King is a GMless worldbuilding game that helps you collaboratively build an antagonist (or any NPC) for an existing game or setting. Together, you and your fellow players will pick nouns and adjectives and form sentences around them which will fill in key details about your Leader's life. The game consists of Phases, after which the person with the best detail will be awarded a Point. Whoever has the most Points at the end of the last Phase will receive a Prize, which is a special detail about the Leader. <br></p>
<p>15-30 mins</p>
<p>By Aaron Voigt. Find me on Twitter @aaronsxl, or my website: aavoigt.com</p>
<p>5/22/21- Update 1.1 adds an Example of Play, Glossary, and cleaned up some confusing language and format inconsistencies. <br></p><p>9/28/21- New expansion, "Craft a Kingdom," has been released! Pay what you want for this collaborative setting builder. Includes 10 optional phases, new Noun and Adjective tables, as well as an improved layout and design. Find it at <a href="https://aaronsxl.itch.io/craft-a-kingdom">https://aaronsxl.itch.io/craft-a-kingdom</a><br></p>
[img width=500 [https://img.itch.zone/aW1nLzU1MzE5MTIucG5n/original/fpazpA.png]]
<p></p>
<p>Crawl Space is a puzzle game where you control a 6 legged spider</p>
<p>Come check out the Discord Server while you're at it!: <a href="https://discord.gg/mk9T5SPV" rel="nofollow noopener" referrerpolicy="origin">https://discord.gg/mk9T5SPV</a></p>
<p>The First Release of Crawl Space features 21 Fully Playable Levels with the ability to best your own score! Challenge your friends! (No Online Leaderboards, Sorry!)</p>
<p>There's also a level editor.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDE3OTQxLzIwODAyMTIucG5n/original/dEX8u3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDE3OTQxLzIwODAyMTMucG5n/original/%2FvABkM.png]]
<p class="text-center"><span class=""><img src="https://img.itch.zone/aW1nLzE2NzU0MjEuZ2lm/original/6TvMUT.gif" loading="lazy"></span></p>
<p class="text-center"><span class=""><span class=""><strong>Knit bones, stitch muscles, and weave neurons into biologically-realistic underwater lifeforms.</strong></span></span><span></span></p>
<p class="text-center"><em>It's like Spore, but with actual science.</em></p>
<hr>
<p>Liked the cell stage of <em>Spore</em>, but wanted more depth? Gotten merrily lost in the graphical programming puzzles of <em>SpaceChem</em>? Love the "can I manage to build this...?" creativity of <em>Kerbal Space Program</em>? </p>
<p>Crescent Loom is the very first biologically-realistic nervous system simulation game. It lets you — in a hands-on, mad-scientist way — tinker with everything from neurotransmitter to the ecological niche of an animal.<br></p>
<p>So dive in and maybe — just maybe — by poking around with these simple creatures you'll figure something out about how your own body ticks.</p>
<h1 class="text-center">[ <a href="https://crescentloom.com" rel="nofollow noopener" referrerpolicy="origin">More Info</a> | <a href="https://crescentloom.com/play" rel="nofollow noopener" referrerpolicy="origin">Play Online Free</a> ]</h1>
<p><img src="https://img.itch.zone/aW1nLzE2NzU0MzMuZ2lm/original/323d%2B4.gif" loading="lazy"></p>
<hr>
<p>Crescent Loom is in open development<strong>; expect major bugs, crashes, changes, and additions </strong>as I work on it over the next few years.<br></p>
<p>The <strong>best way to keep an eye on this</strong> is by subscribing to <a href="http://tinyletter.com/wick" rel="nofollow noopener" referrerpolicy="origin"><strong>wickletter</strong></a>.</p>
<p>You can share creatures you create on the <a href="https://www.reddit.com/r/crescentloom/" rel="nofollow noopener" referrerpolicy="origin">reddit</a>.<br></p>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/jzoLJBHffyE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzU1OTQvMTY3NTQyNC5naWY=/original/01zjs8.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU1OTQvMTAyNjg2My5wbmc=/original/u0ki%2BD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU1OTQvMTY3NjM4Ni5naWY=/original/UMyZ74.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU1OTQvMzM5NTYyNC5naWY=/original/KM5Laq.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU1OTQvMzM5NTYyNS5naWY=/original/mkUHy8.gif]]
<p>Cross The Road a game Inspired by Frogger.<br></p>
<p>You have to jump across the street without getting hit by a car<span></span> or train<span></span>.<span></span></p>
<p><span></span>collect coins to unlock new characters</p>
<p><br></p>
<p><a href="https://www.youtube.com/playlist?list=PL5t3l9AEg3EJPZTxmCh-7R0WgrK7j3wtH" rel="nofollow noopener" referrerpolicy="origin">Watch Demo Game Play</a><a href="https://www.youtube.com/playlist?list=PL5t3l9AEg3EJPZTxmCh-7R0WgrK7j3wtH" rel="nofollow noopener" referrerpolicy="origin"><br></a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzQyNDAvMzQzMTkyLnBuZw==/original/AM2%2Fpw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQyNDAvMzQzMTkzLnBuZw==/original/kzBobt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQyNDAvMzQzMTk0LnBuZw==/original/7H4q0d.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQyNDAvMzQzMTk1LnBuZw==/original/r6KlgZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQyNDAvMzQzMTk2LnBuZw==/original/%2FQUNRj.png]]
<h3 class="text-center"><a href="http://www.crossniq.com" rel="nofollow noopener" referrerpolicy="origin"><em>Website</em></a><em> • <a href="http://www.facebook.com/crossniq" rel="nofollow noopener" referrerpolicy="origin">Facebook</a> • </em><a href="http://www.twitter.com/crossniq" rel="nofollow noopener" referrerpolicy="origin"><em>Twitter<br></em></a></h3>
<p>
</p>
<p>
</p>
<div class="text-center"><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/jQnf8J-AFek" allowfullscreen="" frameborder="0"></iframe></div>
<h3 class="text-center"><a href="http://www.twitter.com/crossniq" rel="nofollow noopener" referrerpolicy="origin"><em></em></a></h3>
<p><strong>CROSSNIQ+</strong> (CROSS-neek plus) is a speed-focused, arcade-style puzzle game inspired by "y2k-era" visual design - a tribute to highly polished, small-scope Japanese games from the late 90's.</p>
<p><img src="https://img.itch.zone/aW1nLzIzMDI1ODYucG5n/original/wUl0Mv.png" loading="lazy"><br></p>
<p>In CROSSNIQ+, the name of the game is re-arranging a grid of tiles to form <strong>"crosses" - rows and column of the same color.</strong> You can move tiles up, down, left or right - but moving them off the edge of the grid makes them wrap back to the other side, offering a unique and brain-bending challenge that's been compared to a mix between matching games and a color cube. Unlike other popular puzzle games, CROSSNIQ+ focuses on speed and technique rather than chains or combos - make crosses quickly and set up multi-crosses to earn bonuses.</p>
<p><img src="https://img.itch.zone/aW1nLzIzMDI1ODgucG5n/original/Rhqn9P.png" loading="lazy"><br></p>
<p>In Endless mode, keep making crosses to keep your timer filled - let it hit empty, and your game is over. In Time Attack, your time is a set amount - earn as many points as you can before the buzzer sounds. <br></p>
<p><img src="https://img.itch.zone/aW1nLzIzMDI1OTEucG5n/original/MgtQLp.png" loading="lazy"><br></p>
<p>Play against a friend in Versus, complete with items and special moves...</p>
<p><img src="https://img.itch.zone/aW1nLzIzMDI1OTMucG5n/original/bvlU71.png" loading="lazy"><br></p>
<p>...or simply relax to a variety of different, aesthetically striking playfields in Chillout mode, where there's no score, timer, or game overs. No matter your playstyle, there's a mode in CROSSNIQ+ for you!<br></p>
<p>Let's Cross! Aim for THE TOP!</p>
<p><img src="https://img.itch.zone/aW1nLzI0ODAyNjAucG5n/original/IfL9X2.png" loading="lazy"><br><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/jQnf8J-AFek" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMDI2MDAucG5n/original/r0plRU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMDI2MDMucG5n/original/Wk1wT4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMDI2MDIucG5n/original/LDwXsP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMDI2MDQucG5n/original/h0Ao7v.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMDI2MDEucG5n/original/1pB8j%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxODMuanBn/original/uprniR.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxODkuanBn/original/0hnHhZ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxODEuanBn/original/hL0i3z.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxOTUuanBn/original/0SWK6N.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxOTIuanBn/original/SlOx%2BC.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxOTQuanBn/original/iM9EI3.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxNzkucG5n/original/wuoeUk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxODUuanBn/original/GiWGgs.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxODAuanBn/original/TeuD5f.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxOTMuanBn/original/qvN9VT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxOTkuanBn/original/GzoPxm.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxOTYuanBn/original/E2CFsJ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxODguanBn/original/VxZr8S.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxODYuanBn/original/odnXZh.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQyMDAuanBn/original/%2BXW94x.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxOTAuanBn/original/gjBcqY.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxODQuanBn/original/NRxDs7.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxOTEuanBn/original/8CloAN.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxOTguanBn/original/5puxzR.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxODcuanBn/original/qwhX0F.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxODIuanBn/original/ow937L.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0MDA0LzIzMTQxOTcuanBn/original/FS0DT4.jpg]]
<h2>What is this?
</h2>
<p><strong>Cryptid (Mis)Communication</strong> is a silly game where you and a friend who haven't seen each other in a while pretend to be cryptids - creatures that have not been proven to exist. Since you're cryptids, you have to stay far apart from one another, otherwise you won't be very mysterious! The goal of the game is to catch up while keeping your distance.
</p>
<h1>Making yourself up as a cryptid is half of the fun. The other half is shouting from 200 feet away.
</h1>
<p>Playing Cryptid (Mis)Communication is a lighthearted, sweet, and silly time to help you connect with a friend who you haven't seen in a while and have a good laugh. And to wear the biggest, brightest, boldest outfits that no one has gotten to see for over a year.</p>
<h2>Rated G for <del>GAY</del> general audiences - yes you can play this with your kids! There is no foul language of any kind and is a fun romp for all ages.</h2>
<p><br></p>
<p>This game operates on Machine Age Productions' <a href="https://machineage.tokyo/olivia-hill-rule/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Olivia Hill</a> rule, which is: NO FASCISTS ALLOWED. If you are a bigot you cannot play this game. It is against the rules. Heal yourself before engaging.</p>
<p>This game knows that Black Lives Matter.</p>
<p>This game fights for Trans Liberation Now.</p>
<p>This game was written on Powhatan land.</p>
<p><br></p>
<h2>Special thanks to...</h2>
<p>Every single one of my Kickstarter backers!!!, Speak the Sky's Publisher fund, trouser_mouse, venus, photos-public-domain.com for the paper texture, Alanis for the constant support, and my brother for being a pedant who is right <em>sometimes</em></p>
<p><br></p>
<h1>Stay safe out there</h1>
<p><br></p>
<p><em><strong><a href="https://www.kickstarter.com/projects/whatnames/cryptid-miscommunication" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Funded on Kickstarter on Feb 25, 2021</a> as a part of Zine Quest 3 - </strong></em><em>for more details on the campaign, please visit the <a href="https://www.kickstarter.com/projects/whatnames/cryptid-miscommunication" target="_blank" rel="nofollow noopener" referrerpolicy="origin">kickstarter page</a></em></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTAwNDM4LzUxMzc2NjUuanBlZw==/original/n9I7tf.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTAwNDM4LzUxMzc2NjYucG5n/original/HY2d79.png]]
<p><em>"Cryptkeeper? Hello? Ah, hi, yeah we're back... sorry to bother you again. We... we don't know, er, there's, um, there's a bit of a situation with the crypt... yeah, I think we broke something. Sorry. Can you fix it?"</em></p>
<p>
</p>
<h2>The Basics:</h2>
<p>Every card serves dual purposes. If you explore a card as a tile on the map, it will trigger an Event Effect. However, if you instead draw the card as an item, you can use that card at any time to trigger an Item Effect. The map and the deck swap places every floor, so be careful about what you discard, because it'll come back as a map tile on the next floor!</p>
<p><img src="https://img.itch.zone/aW1nLzU5NjA2MzMucG5n/original/YYi4f6.png" loading="lazy"><br></p>
<p>A solo TTRPG made with inspiration from various roguelike games. Learn the game's systems and use them to your advantage!</p>
<p>Let me know what you think -- I expect I'll be tweaking the balance of the card effects, and your feedback will help!<br></p>
<h2>patreon:</h2>
<p>supporters on <a href="https://patreon.com/pancelor" rel="nofollow noopener" referrerpolicy="origin">patreon</a> ($3+) can <a href="https://pancelor.itch.io/cryptkeeper/patreon-access">get this game</a> for free! your support will help me make more of the sorts of games I've got here on itch. (fair warning: most are not TTRPGs, they're generally puzzle games, arcade games, and experimental games!)</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MTAzMS81OTU1NzU5LnBuZw==/original/2jCnc%2F.png]]
<h1>The crystals return!</h1>
<p>
Crystal Control II is the follow-up to <a href="https://virtually-competent.itch.io/crystal-control" target="_blank">one of our most successful releases</a>. The original game, released in 2014, was a competitive game for two local players with some bullet hell elements. Because that core gameplay seemed to resonate so well with the fans, we decided to stick pretty closely to the original formula for the sequel...but with some interesting new twists!
</p>
<h2>Features:</h2>
<ul>
<li><strong>Local multiplayer action for two! </strong>Fight for control of the crystals to gain more firepower and take out your opponent...you only need to get one hit on them to win!</li>
<li><strong>Easy to learn, hard to master! </strong>We've seen players of all skill levels pick up the game and understand it's simple controls. Don't let the simplicity fool you, though! The skill ceiling can be quite high, giving room for the competitive folks to shine.</li>
<li><strong>Eight playable characters! </strong>Each character has different movement speeds, charge shots, and "Control" abilities (which can be executed after capturing more than half of the total crystals on-screen)! </li><li><strong>Solo practice mode!</strong> Crystal Control II was designed from the ground up as a competitive game for two players, but if you don't have a friend nearby you can still enjoy our new target practice mode. try to get a high score on every stage!</li>
<br>
</ul>
<h1>This game is best enjoyed with one or more gamepads!</h1>
<p>Crystal Control II is best played with two gamepads, but the game also includes two alternate modes if you only have one (keyboard vs gamepad or shared single gamepad).</p>
<p>Unfortunately, it's impossible to play the Versus mode of Crystal Control II with keyboard only. Most keyboards have a limit on simultaneous key presses that is much too low for the number of keys Crystal Control II would require (which means that key presses would be dropped randomly and create unfair matches).</p>
<p>Solo Mode, however, is playable with either a gamepad or a keyboard.</p>
<hr>
<h2>Gamepad Controls:</h2>
<p>
<strong>In Menu:</strong>
</p>
<ul>
<li>Analog Stick/D-Pad - Navigate Character and Stage Select screens</li>
<li>A button - Select a character/stage</li>
<li>B button - Cancel selection/exit menu</li>
<li>Y button - Toggle display of character specific skill information</li><li>Back button - Exit to desktop (from main menu screen)</li>
</ul>
<p>
<strong>In Game:</strong>
</p>
<ul>
<li><span></span>Analog Stick/D-Pad - Move up/down</li>
<li>A button - Fire L1 bullet/"Ready" for next round</li>
<li>Hold A button - Charge</li>
<li>Release A button - Fire L2 or L3 bullet (depending on charge time)</li>
<li>X button - Activate "Control" ability (only available if you "own" 7 or more crystals)</li><li>Hold Back button - Exit to Character Select (both players must hold for 3 seconds)</li></ul>
<h2>Keyboard Controls:</h2>
<p><strong>In Menu:</strong></p>
<ul><li>Arrow Keys - Navigate Character and Stage Select screens</li><li>Z - Select a character/stage</li><li>X - Cancel selection/exit menu</li><li>C - Toggle display of character specific skill information</li><li>ESC - Exit to desktop (from main menu screen)</li></ul>
<p><strong>In Game:</strong></p>
<ul><li>Arrow Keys - Move up/down</li><li>Z - Fire L1 bullet/"Ready" for next round</li><li>Hold Z - Charge</li><li>Release Z - Fire L2 or L3 bullet (depending on charge time)</li><li>X - Activate "Control" ability (only available if you "own" 7 or more crystals)</li><li>Hold ESC - Exit to Character Select (both players must hold for 3 seconds)</li></ul>
<hr>
<h2>Credits:</h2>
<p>Programming by Izzy Neuhaus<br>Design by Michael Connolly <br>Art by Clover Greenhalgh & Alexis Bogue<br>Music by Reid Turner<br>Sound Design by Derek Andes<br>Countdown Voiceover by Roxy Du</p>
<p>Created with <a href="https://www.scirra.com/construct2" rel="nofollow noopener" referrerpolicy="origin">Scirra Construct 2</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/3C_zrhnL6ec" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjU5NjkvNzI1MTUzLnBuZw==/original/EiqH%2F6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU5NjkvNzI1MTU0LnBuZw==/original/w5MBt0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU5NjkvNzI1MTU2LnBuZw==/original/rrYFRd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU5NjkvNzI1MTU1LnBuZw==/original/WPTZmR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU5NjkvNzI1MTgxLnBuZw==/original/aLLMZa.png]]
<p>Cyber Hamster toys have gone rogue at the ConnecToys factory. Suzie is called in to put a stop to it. Tilt your phone to help Suzie navigate a maze of rooms through the factory, avoiding contact with the Cyber Hamsters.
</p>
<p>------------------------------<br>- 30 designed levels<br>- Unlimited randomly generated levels<br>- Single player game, no internet required<br>- No ads</p>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/IBxxI_PCobw" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODUzODMyLzQ3ODg3ODIucG5n/original/TfwGhy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODUzODMyLzQ3ODg3ODYucG5n/original/ZjxDxd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODUzODMyLzQ3ODg3ODUucG5n/original/XHTRN4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODUzODMyLzQ3ODg3ODQucG5n/original/CTlpA%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODUzODMyLzQ3ODg3ODMucG5n/original/cMYACz.png]]
<p>In 2013, I was part of a team working on a game with the working title "Project: Pangaea". Unfortunately due to our inexperience at the time and how busy with our lives, project got canceled and I went solo with Roses Will Rise. Facing a long rut, I felt like trying to see what I can make in a smaller scale in a shorter amount of time - and here it is!</p>
<p>Please do take note that this is just a prototype, it is limited in many ways due to resources and time constraints. I might revisit it later to refine and make it a full game.</p>
<p>In the year 2306, a massive meteor is set to collide with earth, wiping out life as we know it. TYPHON, an aeronautical mining project has been assigned to deter the meteor away from earth, but only to find out that it’s a vessel for cybernetic activity.</p>
<p>Cyberhold is a turn-based first person dungeon crawler, with very basic soulsborne elements. </p>
<ul><li>No grinding or experience gains, collect stat boost energy cells that can be reused whenever needed.</li><li>32-bit game inspired low poly graphics.</li><li>dark, thick sci-fi atmosphere.</li><li>Robot on mech suit action.</li></ul>
<p><strong><em>Game controls:</em></strong></p>
<ul><li>F4 to go full screen</li><li>F5 to restart</li><li>WASD - movement</li><li>Q - strafe right</li><li>E- strafe left</li><li>Enter - accept</li><li>Esc - cancel</li><li>Page up to resize map</li><li>There is controller support but untested.</li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzcyMDM2LzQ1MTYyNjMucG5n/original/0oKptL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzcyMDM2LzQ1MTYyNjUucG5n/original/XMhwCL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzcyMDM2LzQ1MTYyNzAucG5n/original/Fnajwg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzcyMDM2LzQ1MTYyNzUucG5n/original/YiOjlV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzcyMDM2LzQ1MTYyNzcucG5n/original/zLsbtC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzcyMDM2LzQ1MTYyNzkucG5n/original/x%2BydFx.png]]
<p><em><strong>Cycle 28 is a classic arcade space combat game where you have six minutes to beat your high-score. Simple controls, powerful upgrades, and intense dogfights. Perfect for when you just need to switch off and shoot something. </strong></em></p>
<h3> <em>Nominated for Best Game at BAFTA Cymru 2019</em></h3>
<figure><strong><em><img src="https://img.itch.zone/aW1nLzI4NzAxOTUucG5n/original/aWB763.png" loading="lazy"><br></em></strong></figure>
<p><strong></strong>As Olivia Bergen – a flight lieutenant that has become separated from her fleet – you only know Cycle 27. You live it over, and over, and over again. And if that wasn’t bad enough, every time you drop from warp <em>they</em> are waiting for you.</p>
<p>You don’t know who they are or what they want. You just know you’re the only thing between them and home. So you get better, faster, stronger. Maybe one of these Cycle’s you’ll figure it out. Until then, you can only keep dying.</p>
<p><img src="https://img.itch.zone/aW1nLzI4NzAxODcuZ2lm/original/bHl22b.gif" loading="lazy"><br></p>
<h4>Key Features</h4>
<p><strong>Kaleidoscopic space combat</strong> — Power slide your way between more bullets than any lesser pilot could handle. Nothing feels better than using your ship’s gun to propel you through enemy-infested space as you grip the trigger ever tighter.</p>
<p><strong>Upgrades</strong> — Beat your personal high score in a run to unlock upgrades. With 45 possible configurations, customise your ship and master new tactics to live just a little longer.</p>
<p><strong>Evolving story</strong> — Uncover the secrets of why you’re stuck in Cycle, why they’re hell-bent on destroying everything you love, and just who they really are.</p>
<p><strong>Epic original score</strong> —A powerfully atmospheric mix of modern orchestral and retro electronic sounds by Jordan Rees. (Composer of trailer music for The Mummy [Universal Pictures], Mother [Paramount Pictures], The Defenders [Marvel Studios]).</p>
<h3><img src="https://img.itch.zone/aW1nLzI4NzAxODguZ2lm/original/ivMmrn.gif" style="max-width: 100%; color: inherit; font-size: inherit" loading="lazy"></h3>
<h3>Reviews</h3>
<blockquote><em>“...we kept coming back to it again and again - and so will you.”</em></blockquote>
<p class="text-right"><a href="http://www.nintendolife.com/reviews/switch-eshop/cycle_28" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Nintendo Life</a></p>
<blockquote>“I can’t help but recommend it to anyone who’s looking for a healthy, arcade-style challenge.”</blockquote>
<p class="text-right"><a href="http://www.gamerswithjobs.com/node/1301807" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Gamers with Jobs</a></p>
<p><br></p>
<h3>Check out our newest game</h3>
<p></p>
<iframe frameborder="0" src="https://itch.io/embed/430934?linkback=true&border_width=3&bg_color=faefd4&fg_color=222222&link_color=fa5c5c&border_color=899faf" width="556" height="171"><a href="https://pillbuginteractive.itch.io/making-it-home"><span class=""></span>Making it Home by Pill Bug Interactive</a></iframe>
<iframe width="720" height="450" src="https://www.youtube.com/embed/PyocLr6qTSE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjE2ODMxLzEwNDE3NjkuZ2lm/original/EjColW.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2ODMxLzEwMjY1ODQucG5n/original/NlgeZl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2ODMxLzEwMjMzNDIucG5n/original/GRB5Aa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2ODMxLzEwNDc2MzQucG5n/original/UrXxpa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2ODMxLzEwMjMzNDEucG5n/original/SkiTuI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2ODMxLzEwMjMzNDkucG5n/original/XZoywE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2ODMxLzEwMjMzNDYucG5n/original/UJViTU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2ODMxLzEwNDc2MzMucG5n/original/73dPuj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2ODMxLzEwMjMzNDgucG5n/original/XhVoBQ.png]]
<h2>Fight the Man. Save your store. Keep the music playing.</h2>
<p>In <em>Damn the Man</em>, you’ll juggle the responsibilities of a day that will determine the future of your record store, all while trying to accomplish a big personal goal. Can you confess your love to your crush and find the money that went missing from the cash box? Can you pay off your debt to your parents while promoting tonight’s big show? The clock is ticking and you’ve got until midnight to try.</p>
<p><em>Damn the Man</em> is inspired by movies like <em>Empire Records</em>, <em>Dazed and Confused</em>, and a love for the ’90s. It’s silly and tender and no familiarity with the source material is necessary to enjoy the game.</p>
<ul><li><strong>Players:</strong> 3-4 players, 1 facilitator</li><li><strong>Time:</strong> About 3 hours</li></ul>
<p>The 103-page, full-color book features illustrations by artist <a href="https://www.instagram.com/adrawnnovel/?hl=en" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Evan Rowland</a> and all the step-by-step guidance you need to play the game! Banner art by <a href="https://www.instagram.com/bugwithapen" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Bug Robbins</a>.</p>
<h2>Nice words about the game:</h2>
<blockquote>“Shaffer not only nails the tone of 90’s slacker comedies with the character archetypes but also provides a book full of excellent advice for anyone running their first game.” <a href="https://geekandsundry.com/these-5-incredible-indie-rpgs-are-groundbreaking-and-award-winning/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">-Geek & Sundry</a></blockquote>
<h2>Awards:</h2>
<p><a href="https://www.igdnonline.com/previous-award-winners" rel="nofollow noopener" referrerpolicy="origin">2018 IGDN award-winner for Best Rules</a>.</p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjA4ODk1LzM2MTYzNTYuanBn/original/ASbd0m.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA4ODk1LzM2MTYzODEucG5n/original/msJG%2Fe.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA4ODk1LzM2MTY0MjUuanBn/original/znKT99.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA4ODk1Lzk3OTM4NS5wbmc=/original/veBpk%2F.png]]
<p>
A complete tabletop RPG in zine form— Play as intrepid reporters in a 1920s New York filled with speakeasies, crime, and the occult!</p>
<p>Rules reference online at <a href="https://dangerousrpg.com/rules/" rel="nofollow noopener" referrerpolicy="origin">https://dangerousrpg.com/rules/</a><br></p>
<p>Everything you need to get started is included in the Zine. The game comes fully prepared with rumors and events, characters and locations that can be woven into play. Additional preparation is not required, though an interest in history can enrich the experience.</p>
<p>While a single session stands on its own, multiple sessions are meant to be strung together into a short campaign, during which recurring motifs and the progress of time tell a broader story about the city, characters, and publication.</p>
<p>This is for a <strong>PDF-only, digital version</strong> of the zine. <strong>60 pages</strong> long!</p>
<p>You can <a href="https://www.blankcodex.com/ks/landing" target="_blank" rel="nofollow noopener" referrerpolicy="origin">learn more about the game here</a> or check out the <a href="https://www.blankcodex.com/ks/campaign" target="_blank" rel="nofollow noopener" referrerpolicy="origin">successful Kickstarter campaign</a> here.</p>
[img width=500 [https://img.itch.zone/aW1nLzM2Mzg0MTIucG5n/original/9djtA6.png]]
<p>6 original dark and abstract backgrounds I made with generative art and some photographs I took. Use them for games, webs or any other multimedia!
</p>
<p>Format:
</p>
<p>-PNG, 2560x1440 px <br><br>Looking for more backgrounds? <br></p>
<p><a href="https://roboxel.itch.io/space-backgrounds"><strong></strong></a><strong><a href="https://roboxel.itch.io/space-backgrounds">https://roboxel.itch.io/space-backgrounds</a></strong></p>
<p><strong><a href="https://roboxel.itch.io/glitchybgs">https://roboxel.itch.io/glitchybgs</a><br></strong><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MjcxNS82MDIxODEzLnBuZw==/original/0%2Fffqm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MjcxNS82MDIxODE0LnBuZw==/original/4KK5XT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MjcxNS82MDIxODE1LnBuZw==/original/YI37%2FP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MjcxNS82MDIxODE3LnBuZw==/original/wNc0hC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MjcxNS82MDIxODE2LnBuZw==/original/9dy8g3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MjcxNS82MDIxODE4LnBuZw==/original/lBO%2BGf.png]]
<p>This is a customized GUI for ren'py. It includes the PNG files and all of the code already programmed into a renpy file (Not Built). You can take the code and assets out, or rename the renpy game file and use it.</p>
<p><strong>This was made in Ren'py 7.4.4.1439</strong>
</p>
<p><img src="https://img.itch.zone/aW1nLzU3NTA5NzkucG5n/original/mGsMbE.png" loading="lazy"></p>
<h3>Includes:</h3>
<ul><li>All Standard Screens
</li><li>Textbox, Choices, and Quick menu
</li><li>An "Extras" screen for Achievements, Endings and a CG gallery (Code Included!)
</li><li>Code for everything already plugged in
</li><li>Formatted for 1080x1920
</li></ul>
<p>You can plug your script into the game file and change the name, or take the assets and code as needed.
</p>
<p>The game uses an open source font "Forum-Regular" which you can find for free: <a href="https://fonts.google.com/specimen/Forum?preview.text_type=custom&query=forum" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Here</a>
</p>
<h3>Rights:</h3>
<p>If purchased you may use this project in commercial projects or free projects. You may not resell part of, or the whole GUI on its own. You can modify the GUI and code to suit your needs.
</p>
<p>You can credit me as Jaime Scribbles if you want, but it is not required.
</p>
<h3>Instructions:</h3>
<p>Download, unzip, and enjoy! Some additional instruction included in the download, see below!
</p>
<p><img src="https://img.itch.zone/aW1nLzQyMzMwMDQucG5n/original/u1oCc5.png" style="max-width: 100%" loading="lazy">
</p>
<figcaption>You can find the instructions.txt file under the custom GUI file after it is unzipped. This is the same place where you would find the game folder, and the errors, log and traceback.</figcaption>
<h3>Sample Assets:</h3>
<ul><li><a href="https://alte.itch.io/uncle-mugens-backgrounds" target="_blank">Background Art by Uncle Mugen</a>
</li><li><a href="https://dejinyucu.itch.io/agustina-visual-novel-sprite" target="_blank">Sprite by DejiNyucu</a>
</li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAwOTQwMy81NzUxMTkwLnBuZw==/original/lT1%2BeG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwOTQwMy81NzUxMTkxLnBuZw==/original/r%2Ffn5U.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwOTQwMy81NzUxMTg3LnBuZw==/original/126DjF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwOTQwMy81NzUxMTg2LnBuZw==/original/D%2FpFk0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwOTQwMy81NzUxMTg4LnBuZw==/original/lhwbKZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwOTQwMy81NzUxMTg5LnBuZw==/original/Fzxbyg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwOTQwMy81NzUxMTg0LnBuZw==/original/%2BjKOd5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwOTQwMy81NzUxMTg1LnBuZw==/original/Z7DIY2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwOTQwMy81NzUxMTkyLnBuZw==/original/nJ6qqX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwOTQwMy81NzUxMTgzLnBuZw==/original/%2FlTDM%2F.png]]
<p></p>
<p>Dark Hope is a puzzle adventure game set in a steampunk world where electricity started and ended its existence with the light bulb. Towering clockwork puzzles and archaic symbols cover the halls. Strange rifts of light span the hallways. Something lurks in the dark your only hope to freedom is to find the truth about this strange abandoned lab.</p>
<p>You wake up in a hallway, No one is around. Where the exit once was all you can see is black, Smoke fills the air. Where are you? Where did everyone go?</p>
<p>The vast majority of the puzzle are environmental mechanical puzzles and discovering clues as to the nature of this strange facility.<br><br></p>
<ul><li>Clock work gizmos galore</li><li>Books tons and tons of books filled with lab notes and plans</li><li>Buttons to push and valves to turn</li><li>A challenging puzzle adventure for those who do not want to be spoon fed</li><li>Bring your own notebook</li></ul>
<p><br></p>
<p><a href="https://discord.gg/xM3Cmne" rel="nofollow noopener" referrerpolicy="origin">https://discord.gg/xM3Cmne</a><br></p>
<p>You must launch this game for the first time from the <a href="https://itch.io/app"></a><a href="http://" target="_blank" rel="nofollow noopener" referrerpolicy="origin"></a><a href="http://itch.io/app" target="_blank">Itch.io APP</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/SEtYrfYm4g4" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzcyMjM2LzE4NjYzNTEucG5n/original/Wu4CZn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzcyMjM2LzE5NjE4MDEucG5n/original/er%2FdLF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzcyMjM2LzI4MTA5NTEuanBn/original/F2JQ00.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzcyMjM2LzE4NjYzNDkucG5n/original/AvQcdk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzcyMjM2LzI4MTA5NTAuanBn/original/rPWPKk.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzcyMjM2LzE4NjYzNTAucG5n/original/FHmE7t.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzcyMjM2LzI4MTA5NDkuanBn/original/Itzk9F.jpg]]
<h1>> ABOUT_</h1>
<p>Corporations suck!! Money'Surance Corp® especially sucks, so you're taking it upon yourself to hack the Money'Surance Corp® Tower™, steal money from the higher ups, and erase the debts of everyone subject to its monopoly.</p>
<h1>> HOW TO PLAY_</h1>
<h1></h1>
<p>Click in search mode to emit a search wave. This will show you where nodes are. Press 1 to switch to infect wave mode, and click where you know nodes are. Pressing 2 will return u to search wave mode. Pressing tab will let you toggle between search and infect wave mode.</p>
<p>F toggles fullscreen!</p>
<p>Space will pause/resume the game!</p>
<p>Hold escape to quit!</p>
<h1>> ACCESSABILITY INFO_</h1>
<ul><li>volume settings</li><li>customizable colours for everything</li></ul>
<h1>> CREDITS_</h1>
<p>Incredible music by <a href="https://twitter.com/Lateralis_" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Lateralis</a></p>
<p>Rest of game by <a href="https://twitter.com/celechii" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Noé</a></p>
<p><br></p>
<h4>MACOS USERS PLS PLAY THRU THE ITCH.IO APP!! </h4>
<p>else take the download out of your downloads folder. macOS doesn't like it being written to so it can't save your username and it'll throw you into the tutorial every time you start up</p>
<p>EDIT: this *should* be fixed now, please let me know if it isn't! <3</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTY3NDQ0LzMzNjI1OTkuZ2lm/original/nedzGK.gif]]
<p><strong>The year is 1995, and you're newly single, ready to mingle...</strong> and fresh off the plane in Stradania, the dysfunctional micronation whose chief exports are pig iron, human misery, and radioactive souvenir mugs. </p>
<p>Your travel guides have steered you to the hottest nightclub in town. Now it's up to you to seize the evening by getting up close and intimate with Stradania's Most Eligible Vaguely Handsome Self-Absorbed Guys You Happened to Spot in the Club:</p>
<ul><li><strong>Dan - </strong>Half man, half existential crisis; subsists on a steady diet of Rimbaud, imported cigarettes, and unmarked pills. </li><li><strong>Fixer - </strong>The kind of person whose opinions have opinions. Don't get him started on data tapes - you'll be there all night. </li><li><strong>Sandman -</strong> Mysterious hacker of few words and even fewer discernible emotions. Smells vaguely of anti-flea shampoo. </li><li><strong>Shitparade - </strong>The leading authority on terrible VR trips, forever on the lookout for somebody to inflict them on. <strong></strong></li><li><strong>NoK00l - </strong>Stradania's techwear king. Once spent a month's salary on a package of "tactical socks," a fact he still brags about. </li><li><strong>Jack - </strong>Your friendly neighborhood bartender, always ready with a word of encouragement and a novelty cocktail. Oddly unfazed by his club's creepy decor.</li></ul>
<hr>
<p><em>Dates & Wires </em>is the official otome spin-off of weekly webcomic <a href="https://www.drugsandwires.fail/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Drugs & Wires</a><em>, </em>featuring the music of <a href="https://ningen.bandcamp.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">NINGEN</a>.<br></p>
<p><strong>FEATURES</strong></p>
<ul><li>6 available dates with multiple possible endings and unlockable souvenirs</li><li>2 - 3 hours of playtime, with more than 25,000 words of dialogue</li><li>Hidden scenes, dialogue, and more depending on play order and choices - multiple playthroughs recommended!<br>
</li><li>Gender-neutral protagonist</li></ul>
<p><strong>RATING & CONTENT</strong><br></p>
<p><em>Dates & Wires</em> is rated <strong>PG-13</strong> for minor language and drug references, mild suggestive content, and general cynicism. </p>
<p><strong>Also contains harsh experimental noise and two minor jump scare-ish moments. </strong></p>
<p><strong>TIPS FOR FIRST-TIME PLAYERS</strong></p>
<ul><li>The order in which you choose to tackle the dates will have long-term effects on dialogue, scenes, and options - don't be afraid to save and experiment a little to see what happens.
</li><li>There are seven unlockable souvenirs in the game, six of which are obtained from the main characters' best endings. The seventh? You might need to be a little cruel for that one...
</li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNzQ3NS81OTUzMDU5LmpwZw==/original/cqrsEg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNzQ3NS81OTUzMDU4LmpwZw==/original/W3Ek2r.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNzQ3NS81OTUzMDYwLmpwZw==/original/XSTRVY.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNzQ3NS81OTUzMDYxLmpwZw==/original/gQng38.jpg]]
<p><strong></strong><strong>For a new world to flourish, the old must die. </strong></p>
<p><em>The world is in the grips of a tyrannical force that strikes anyone who dares question or rebel against their nigh omnipotent rule. You and your friends have a difficult task ahead of you. </em></p>
<p>In <strong>De:Throne</strong>, you play as a party of <strong>2+</strong> Heroes, working together to defeat the forces of a powerful and tyrannical God. It was created for the <a href="https://itch.io/jam/dethrone-god-jam/entries">Attack and Dethrone God Game Jam</a>. While not quite a TTRPG game, it is inspired by them and the game jam itself.</p>
<p>Pick your Hero Archetype and use cards to attack the powers of God, defend against its assault, and use your unique abilities to achieve victory! <strong>DENY</strong> the powers of God to deal destructive damage!</p>
<p><strong>This game is played with a standard playing card deck, with Jokers removed.</strong></p>
<p>The PDF includes the rules, 15 character archetypes to choose from, as well as character cards for 3 of those with helpful reminders of actions you may take each round, with more planned to come later! (You can keep up with my progress by supporting me on Patreon.)<br></p>
<p>Character archetypes currently available as character cards are:</p>
<ol><li>Youthful Hero</li><li>Turncoat Rival</li><li>Faithful Healer</li></ol>
<p>This is my first game ever, and I hope people enjoy it! Let me know what I can improve and adjust for a better experience!</p>
[img width=500 [https://img.itch.zone/aW1nLzQwMTQwOTEuanBn/original/XdIj4F.jpg]]
<p>Welcome to the dead bone planet of the Necromancer King!</p>
<p>You're a worthless hunk of bone, brought to life by the necromantic powers of some brooding space queers with swords and mysteries to solve, but that's not really about you. You had a single function and you performed it, and yet you're still here. Maybe while everyone else is distracted you can steal a golden barge and go exploring, or maybe you already escaped and these backgrounds are being used in another Troika! game.</p>
<p>I really haven't finished reading Gideon the Ninth so I really can't comment. I just really love skeletons. You know?</p><p><a href="https://www.rookspress.com/products/dead-bone-world" rel="nofollow noopener" referrerpolicy="origin">Riso Printed copies now available at Rook's Press!!</a></p>
<p>Ossified Stenographer art and back cover art from Feral Indie Studio's Astrogothic art pack: <a href="https://feral-indie-studios.itch.io/feral-indie-studio-art-pack-astrogothic">https://feral-indie-studios.itch.io/feral-indie-studio-art-pack-astrogothic</a>. All other art is public domain. </p>
<p>Dead Bone World is an independent production by Allthingstruly and is not affiliated with the Melsonian Arts Council. </p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTA4Nzg3LzUxMzcyNjIuanBn/original/mbFFEk.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTA4Nzg3LzUxMzU2NTYuanBn/original/sBOl%2FU.jpg]]
<p><em><strong>"</strong></em><strong><em>After hiking for days you arrive at the Gate of Elders, a huge and elaborately carved stone archway set into a mountainside.</em></strong></p>
<p><strong><em>As a child you heard stories of the great treasures contained within, and of adventurers making their names while plumbing the deep caves and dungeons beyond.
</em></strong></p>
<p><strong><em>Lately, you have also heard that a great magical item known as the Philosopher’s Orb was stolen by the evil heretic, Somnax - who was spotted heading toward this place…
</em></strong></p>
<p><strong><em>Perhaps you can find more than treasure here, you may well return with the beginning of your own legend!
</em></strong></p>
<p><strong><em>You step through the Gate of Elders, and into the darkness beyond….</em></strong><em><strong>"</strong></em></p>
<p>~</p>
<p>Download and print the cards, or play the game virtually in your web browser. You will also need:</p>
<ul><li>A six-sided die (two distinct dice is ideal)</li><li>A coin</li><li>Something to note your character sheet on</li></ul><p><em>This is a single player game, though it can be run with a GM and a player.</em></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTU1NTc2LzU3NTg2MDUuanBn/original/Ex8Yz5.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU1NTc2LzU3NTg2MDYuanBn/original/mNBPys.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU1NTc2LzU3NTg2MDcuanBn/original/1hw9Xx.jpg]]
<p class="text-center"><em><br><img src="https://img.itch.zone/aW1nLzc1MTY3NjMucG5n/original/di1jV9.png" loading="lazy"></em><br><br><i>“You loved someone, and then one day they changed."</i><br><br></p><p>Dear Poppy is a solo journaling game about tending to someone you love after they've transformed into a small cluster of small seeds. The game walks you through a resonant, emotional journey as you accept their new form and plant them. Write your reflections once a week over the period of at least seven weeks and caring for your loved one as they germinate and grow into a beautiful, tender seedling.<br><br><em>As of November 25th, 2021, all net earnings from this game will be donated to support indigenous organizers in the United States. If you're interested in supporting Water Protectors and other advocate of indigenous rights, I recommend <a href="https://twitter.com/MsKellyMHayes/status/1463558037147373570" rel="nofollow noopener" referrerpolicy="origin">this thread</a> as a starting point.</em></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzkxOTUwLzQ2OTcyNTUucG5n/original/3O%2FFTF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzkxOTUwLzQ2OTcyNTcucG5n/original/SV18Bk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzkxOTUwLzQ2OTcyNTQucG5n/original/xTDSOa.png]]
<p>Dear Poppy is a solo journaling game about tending to someone you love after they've transformed into a small cluster of small seeds. The game walks you through a resonant, emotional journey as you accept their new form and plant them. Write your reflections once a week over the period of at least seven weeks and caring for your loved one as they germinate and grow into a beautiful, tender seedling.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzkxOTUwLzQ2OTcyNTYucG5n/original/GqIF9g.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzkxOTUwLzQ2OTcyNTUucG5n/original/3O%2FFTF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzkxOTUwLzQ2OTcyNTcucG5n/original/SV18Bk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzkxOTUwLzQ2OTcyNTQucG5n/original/xTDSOa.png]]
<h2>You are Death</h2>
<p>The Grim Reaper, the dark collector of lost souls. Unfortunately, your horse has fallen ill so you need to drive a bus instead.</p>
<p>Navigate traffic, shoddy roads, and try not to run out of gas while gathering up angels and demons. Deliver these wayward souls to heaven or heck across 50 levels in this simple retro puzzle game.</p>
<h3>Featuring</h3>
<ul><li>50 levels of increasing difficulty</li><li>Retro, chunky 1-bit pixel art</li><li>Broken roads, moving cars, gas cans, lots of twists and turns that up the challenge</li><li>Original authentic Chiptune soundtrack by Abstraction</li><li>Controller supported!</li><li>Turn-based puzzles and fast restarts, no time pressure!</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/zTSZDCDXLPc" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjcxNjU0LzQwNTI4NDEuZ2lm/original/kFTSl8.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcxNjU0LzM2NjI2OTAucG5n/original/XPpyCs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcxNjU0LzM2NjI2ODkucG5n/original/plRtMJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcxNjU0LzM2NjMwNTUucG5n/original/YRsXYj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcxNjU0LzM2NjI2ODgucG5n/original/3wyz%2B6.png]]
<p>Two sticks, one fish, some flashing lights. Death Ray Manta is, quite definitely, a videogame in the purest sense. Rejigged, rebuilt, remastered in the year of our Molyneux 2015. <br> <br>Death Ray Manta is a short form top down arena shooter where you blow up enemies using colourful laserbeams. You spawn in the centre of the screen, moments later the screen is filled with mines, robots, rabbits and lasers from beyond the stars. Collect space gems for a bonus and shoot everything else that you can in order to flash lights at yourself. Aim for your own personal high score. How far into fish space can you get? <br> <br>32 screens of increasingly colourful and crazy laser firing mayhem from the brains behind (amongst other things) Squid Yes, Not So Octopus, SYNSO 2 and the challenge mode in Waves. Also, he's that hairy dude off the internet. You know the one. <br> <br>Death Ray Manta is made with the fine assistance of Mike Daw who provided the legwarmer chic tunes and Andy White, who helped out under the hood and kept me sane. Cover art by the legendary Ste Pickford. <br> <br><em>"Absolutely Brilliant!"</em> - <strong>Rob Fearon</strong></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/q5cGqhnMv6I" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzY1MTkvMTU4OTc2LnBuZw==/original/jsiH07.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY1MTkvMTU4OTc3LnBuZw==/original/UBLEpt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY1MTkvMTU4OTc4LnBuZw==/original/35gLVq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY1MTkvMTU4OTc5LnBuZw==/original/NiGr%2BZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY1MTkvMTU4OTgwLnBuZw==/original/i8JNKr.png]]
<p>Made for GBJam 8!</p>
<p><br>You are the Decommissioner - tasked with defeating the rogue AI MurderBot by gathering the tools/weapons you need while the MurderBot and it's minions are out to destroy you. Weapons and Equipment are OSP (On Site Procurement), but this is no sneaking mission. If you fail, try again, and the more enemies you defeat, the more equipment will be unlocked to find in the field.<br></p><p><br></p><p>By <a href="http://twitter.com/AngryMobOfSteve" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Steve Rynders</a> and <a href="http://twitter.com/LazyAhab" target="_blank" rel="nofollow noopener" referrerpolicy="origin">James Youngman</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzUyMTY4LzQyMDM1MDQucG5n/original/J7UXtO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzUyMTY4LzQxOTkzMDcucG5n/original/f7pOfg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzUyMTY4LzQxOTkzMzEucG5n/original/mx4MTI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzUyMTY4LzQxOTkzMjIucG5n/original/3OwLFu.png]]
<p><em>Dee Dum</em> is a 2D puzzle game with a simple premise - both characters move and jump at the same time, but their homes are in different spots.<br>As the home locations move and the world around them grows larger, the possibilities for brain-tickling puzzles become endless.</p>
<p>The in-browser version is just a demo - the first five levels to whet your appetite.</p>
<p>The full version includes 75 levels that will truly challenge your puzzle game playing prowess. Can you beat them all? Can you even unlock them all?</p>
<p><a href="https://eeease.itch.io/dee-dum-mobile" target="_blank">The (free) mobile version</a> has a bunch of in-app-purchases like hearts and level packs. This has none of that nonsense. It's a pure puzzle game where you have to get better to unlock the harder levels.</p>
<p>Note: <strong>If the game does well</strong> (greater than $100 across all platforms), level packs with new mechanics will be released. Your purchase of this version makes you eligible for receiving future level packs <em>for free</em>.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/mdKgKdjjVc8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTY4MTM2Lzc4MjU5Mi5wbmc=/original/v%2BxQbc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY4MTM2Lzc4MjU5NC5wbmc=/original/Auy%2Bvg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY4MTM2Lzc4MjU5My5wbmc=/original/0AkVAF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY4MTM2Lzc4MjU5Ni5wbmc=/original/zdLPQa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY4MTM2Lzc4MjU5NS5wbmc=/original/dSan9G.png]]
<h1>Deep Nightly Fathoms</h1>
<p class="text-justify">Inside this zine you will find a game that will take you and your fellow players through the Kingdom of Night, a liminal space between life, dream and death, inspired—and illustrated—by the beautiful art of Gustave Doré.</p>
<h3>Dive in to discover:</h3>
<ul><li class="text-justify">One-on-one or two-on-one play with expansions for larger groups.</li><li class="text-justify">Player characters who take a transformative journey over a land of sorrow.</li><li class="text-justify">Rules for exploring the Kingdom of Night and confront the dangers that lurk inside.</li><li class="text-justify">Tools to run a point-crawl exploration game, with an assortment of random tables to roll an adventure on the spot.</li></ul>
<p><em>Let us traverse these Deep Nightly Fathoms.</em></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjY5NDAwLzY1NjY1MTAuanBn/original/HAT9RB.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY5NDAwLzY1NjY1MDkuanBn/original/P0HjIX.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY5NDAwLzY1NjY1MDguanBn/original/8z6aqS.jpg]]
<p><strong>Demetrios is a quirky point & click adventure game inspired by classics like Broken Sword, packed with tons of humor!</strong></p>
<p>Bjorn Thonen, a slob of an antique dealer living in Paris, is robbed one night after coming home drunk. Forced to conduct his own investigation with the help of his neighbor Sandra, he ends up involved in a murky, mysterious affair. Will these unlikely heroes be able to rise up and discover ancient secrets? </p>
<p><br>The game offers situations and puzzles for beginners and experts alike, with a high degree of interactivity. Explore ridiculous item combinations, just to see what happens!</p>
<p>All purchases include a <strong>DRM Free version</strong> + <strong>Steam key</strong>!</p>
<hr>
<p><strong>Release : </strong>May 31st, 2016<br></p>
<p><strong>Languages : </strong>English, French, German, Spanish, Italian</p>
<p><strong>Compatible</strong> : Windows, Mac & Linux 64 bit</p>
<h3>Ratings</h3>
<p><em>"A well written 'big' adventure game that's fun to play. There's enough diversity within the game to hold the interest of most players." <br></em><strong>"B" </strong>rated on <a href="http://justadventure.com/2013-05-20-21-09-14/3425-demetrios-the-big-cynical-adventure-review" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Just Adventure</a> <br></p>
<p><em>"Demetrios is a superbly made game, the first in a long time that really had me hooked" </em><a href="http://www.indiegamenews.com/2016/05/review-demetrios-big-cynical-adventure.html" target="_blank" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">Indie Game News</a> <br></p>
<p><em>"Whoever wanted to permanently help a bunch of completely underexposed idiots out of trouble, is totally right here." </em><br></p>
<p><strong>81%</strong> – <a href="https://www.adventure-treff.de/artikel/tests.php?id=406" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Adventure-Treff</a></p>
<h3>Features</h3>
<ul><li>A long, varied, standalone adventure (8 to 12 hours of gameplay)</li></ul>
<ul><li>Over 15,000 lines of dialog, filled with laughs!</li></ul>
<ul><li>Hand drawn art in Full HD</li></ul>
<ul><li>High level of interactivity. Characters react to your actions!</li></ul>
<ul><li>Fun mini-games throughout the story</li></ul>
<ul><li>Search for hidden cookies on every screen for optional puzzle hints!</li></ul>
<ul><li>Compatible with gamepads, for relaxed, television viewing!</li></ul>
<h3>System requirements</h3>
<ul><li>Windows : XP / 7 / 8.1 / 10, <br>Mac : Snow Leopard 10.10 64 bit or later<br>Linux : Ubuntu 16.04 LTS 64 bit or later</li><li>Processor: 1.2 GHz Dual Core</li><li>Memory: 2 GB RAM</li><li>Graphics: Intel HD Graphics, Nvidia or ATI card with at least 256MB VRAM</li><li>Hard Drive: 600 MB available space</li><li>Sound Card: DirectX Compatible Sound Card</li></ul>
<h3>Updates</h3>
<p>1.2.1 : Mac and Linux are updated to 64 build in order to keep running with their respective upcoming OS versions! (no change required for Windows)</p>
<h3>Links</h3>
<ul><li>Demo for Mac & Linux : <a href="https://www.demetriosgame.com/en/demo/" rel="nofollow noopener" referrerpolicy="origin">https://www.demetriosgame.com/en/demo/</a></li><li>Official site : <a href="https://www.demetriosgame.com" rel="nofollow noopener" referrerpolicy="origin">https://www.demetriosgame.com</a></li><li>Steam : <a href="https://store.steampowered.com/app/451570" rel="nofollow noopener" referrerpolicy="origin">https://store.steampowered.com/app/451570</a></li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/B54EFBAa1T4" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjgwMDQvMzA5MTkwLmpwZw==/original/HQG74o.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjgwMDQvMzA5MTkxLmpwZw==/original/SZURfN.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjgwMDQvMzA5MTkyLmpwZw==/original/9pq2xi.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjgwMDQvMzA5MTkzLmpwZw==/original/BKRuuN.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjgwMDQvMzA5MTk0LmpwZw==/original/HuwXkM.jpg]]
<p>The Democratic Socialism Simulator lets you play as the first socialist president of the United States. Can you redistribute power and wealth while addressing the climate crisis? </p>
<p>Enact radical reforms, tax the rich, transform the economy, tackle the most pressing issues without alienating voters or bankrupting the government. But beware: the ruling class won't give up its power easily. Even your closest allies may turn on you.<br></p>
<p>*Hundreds of choices based on existing policy proposals<br>*Randomly generated scenarios and multiple endings<br>*Room for different play styles, ideologies, and strategies<br>*A cast of extremely opinionated anthropomorphic animals<br>*Original Soundtrack by <a href="http://jessestil.es/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Jesse Stiles</a></p>
<p>The Democratic Socialism Simulator is an attempt to prefigure the opportunities and challenges of a Sanders (or Sanders-like) presidency. It is meant to entertain, enrage, provoke socialist-curious players as well as comrades on the front lines of the political revolution.</p>
<p><a href="https://play.google.com/store/apps/details?id=com.molleindustria.demsocsim" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Also available for Android devices</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTcxODE3LzMwMDgwNzgucG5n/original/lZ7mth.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcxODE3LzMwMDgwNzkucG5n/original/A3UNJa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcxODE3LzMwMDgwODAucG5n/original/BOqE9d.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcxODE3LzMwMDgwODEucG5n/original/vZK1xf.png]]
<h2 class="text-center"><em>A Fast-Paced Game of Blood & Skulls for 2-6 Slayers</em></h2>
<p class="text-center"><em>Our world is rotting. The countryside is littered with festering corpses and unholy abominations. Our moon glows a crimson red. Our church has all but abandoned us.</em>
</p>
<p class="text-center"><em>While the Angels bring forth the Final Woe in their immaculate choir, there are still those who stand in the face of the apocalypse. Brave warriors from kingdoms across the land. Slayers, who through their bravery or foolishness, stand against the endless spawn of Hell itself.</em>
</p>
<h2 class="text-center">Demon Crawl - A Tabletop Action-RPG</h2>
<p>Inspired by games of visceral combat and kinetic action like Diablo and Doom, Alessandro (<a href="https://twitter.com/sandromaycry" rel="nofollow noopener" referrerpolicy="origin">@sandromaycry</a>) and Duffy (<a href="https://twitter.com/orxalot" rel="nofollow noopener" referrerpolicy="origin">@orxalot</a>) set out to design an Action-RPG for the Tabletop space. <em>Demon Crawl - Gothic </em>(Penned by Alessandro) is its first fantasy-oriented incarnation (with a star-hopping sci-fi setting in development by Duffy). Both games pull from the same core Demon Crawl system and philosophy:</p>
<ul><li><strong>D6 Only System:</strong> In Demon Crawl the Slayers are playing a 2D6 Hack n' Slash while the GM is playing an all-out wargame with a mountain of 12mm D6s. </li></ul>
<ul><li><strong>Blood: </strong>Slayers taking DMG and tearing through enemies, will generate Blood for themselves. This Blood is spent to unleash crazy abilities, act on enemy turns, empower attacks and even heal the Slayer at the last second.</li></ul>
<ul><li><strong>No Roll To Hit: </strong>Every Slayer and Enemy Solo hit connects. Every turn brings all parties closer to death and ramps up the game's tension.</li></ul>
<ul><li><strong>Hordes of Enemies:</strong> Enemies in Demon Crawl spawn in swarms of countless units that all occupy a single space, but each only have 1 HP. This system distills crowd combat into a satisfying Rip-and-Tear-fest that's easy for GMs to manage and Slayers to wrap their heads around.</li></ul>
<ul><li><strong>It Is Always the Slayers' Turn:</strong> No matter what is happening, the Slayer always has options to act using Blood or Items. This recontextualizes the GM's turn as kinetic frenzy of healing, dashing and even attacking.</li></ul>
<ul><li><strong>Combat That Prioritizes Speed:</strong> Action RPGs are all about speed and style, so combat in Demon Crawl is fluid, crunchy and above all fast to run.</li></ul>
<ul><li><strong>Roleplaying That Prioritizes Stakes:</strong> When rolling Failure<strong> always </strong>has consequence but success has the possibility to roll into even greater rewards. Slayers are encouraged to leverage their heroic strengths and creativity while Overlords are encouraged to pull at their mortal weaknesses and recklessness.</li></ul>
<ul><li><strong>Fast to Learn, Fast to Play, Fast to Hack:</strong> Speed was the biggest priority in Demon Crawl's design, and the system aims to provide GMs and Slayers with a combat experience unlike anything else. I've also aimed to make the game easy to learn with Slayers having all the relevant combat info on their Slayer Sheet. This all culminates in a modular system that's incredibly fast to hack and build your own content for.</li></ul>
<h2 class="text-center">Gothic - A Grim and Fantastical Setting</h2>
<p><em>Demon Crawl - Gothic</em> is the first pre-built setting for this system, with its own unique systems and horrors. The setting pulls from the Romantic Gothic Horror movement as much as it does from Pulp Horror and modern Dark Fantasy. It is a setting that lives in the shadow of an eccentric church and on the bones of horrors that best left forgotten. Fans of settings like those found in <em>Diablo</em>, <em>Bloodborne, Castlevania</em> and <em>Nier</em> will feel right at home in this macabre land of deceit and cosmic magicks.</p>
<h2 class="text-center">What's Included?</h2>
<ul><li>Basic Rules for the Demon Crawl - Gothic System</li><li>6 Unique Slayer Classes to choose from, each with their own distinct flavor and playstyle (<em>The Ragged Warrior, Seasoned Rogue, Wayward Sorcerer, Vermin Shepherd, Grim Archivist and War Machine</em>) as well as one <strong>bonus class</strong> for early adopters (<em>The Regal Attendant</em>)</li><li>3 Encounters featuring 3 intense bosses<em> (</em>From <em>The Fugue of the Heretic King</em> Dungeon<em>)</em></li><li>Print-and-Hack materials for rapid dungeon building </li></ul>
<h2 class="text-center">What's Needed?</h2>
<ul><li>2-6 Participants (Plays best with one Overlord and 2-4 Slayers)</li><li>Ample paper, pencils and unique tokens</li><li>A mountain of D6s (Preferably 12mm)</li><li>An 8x8 Grid Board (Chess Board works great!)</li><li>A love for the macabre and a yearning for fast-paced combat</li></ul>
<h2 class="text-center">What's Next for Demon Crawl?</h2>
<p>Right now <em>Demon Crawl - Gothic Quickstart Edition </em>serves as a first taste of both the Demon Crawl system and Gothic's macabre world. The next thing you might see from Demon Crawl is <a href="https://twitter.com/orxalot" rel="nofollow noopener" referrerpolicy="origin"></a><a href="https://twitter.com/orxalot" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Duffy</a>'s sci-fi setting (Currently codenamed <em>Demon Crawl - 6666</em>). Eventually Demon Crawl - Gothic will get its own fully fleshed out hex-crawl, featuring a variety of unlockable Slayers, diverse locales, fishing mechanics, expanded progression rules and more! However currently I'm hard at work hammering out the Quickstart rules for my similarly fast, but certainly more complex Mecha Tactics game <a href="https://www.steelhearts.info/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><em>Mobile Engagement Chassis: Steel Hearts</em></a><em></em> (It features a system that was a spiritual precursor to Blood and served as an inspiration for a lot of other narrative systems in <em>Demon Crawl) </em>so be sure to keep an eye on this page for whenever in the nebulous future the grim world of Woleria is expanded!</p>
<h3 class="text-center">!! Content Warning !!</h3>
<p class="text-center"><em>Be aware that Demon Crawl - Gothic includes copious references to Blood, Viscera, Bones and Body-horror. It is a game where life is fleeting and death abounds at every corner.</em></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA2ODM1Ny82MTIzNDAyLnBuZw==/original/EILYt%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA2ODM1Ny82MTE5OTI3LmpwZw==/original/ChljNl.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA2ODM1Ny82MTIwMDY0LnBuZw==/original/IIhSk%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA2ODM1Ny82MTI1NDc5LnBuZw==/original/V93ErJ.png]]
<p></p>
<p>THE DEMON DOIF REQUIRES YOUR ASSISTANCE MINION. HE IS HUNGRY. FIND THE ITEMS HE WANTS FROM AMONGST THE PILE. DO NOT GET THEM WRONG. <br>CONTROLS:</p>
<p>MOUSE TO LOOK.</p>
<p>HOLD DOWN RIGHT CLICK TO GRAB.</p>
<p>LEFT CLICK WHILE GRABBING TO SLAP AN OBJECT.</p>
<p>MOUSE WHEEL WHILE GRABBING TO EXTEND ARM.</p>
<p>WASD TO MOVE.</p>
<p>SPACE TO JUMP.</p>
<p>HINTS: <br>THE ROPE CAN BE GRABBED TO RESET THE ITEMS. DOING SO WILL MAKE HIM UPSET. <br>BOMBS CAN STUN HIM. THIS ALLOWS YOU TO PULL THE ROPE WITHOUT MAKING HIM UPSET. <br>IF YOU RUN OUT OF TIME YOUR POINTS ARE DOUBLED.<br><br>CREDITS: </p><p>SOUNDS FROM TTMP3.<br>MUSIC FROM 0999: <a href="https://000999.bandcamp.com/album/ultra-53-in-1-ost" rel="nofollow noopener" referrerpolicy="origin">https://000999.bandcamp.com/album/ultra-53-in-1-ost</a><br></p>
<p></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODk5NTYxLzUwNzc4MTEucG5n/original/aRT7pG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5NTYxLzUwNzc4MTAucG5n/original/BUI9cp.png]]
<h2><strong>Arcade Action IMMORTAL TRUCKER!</strong></h2><p>
Race towards the Next Hell in an action packed shoot 'em up from the 16 bit era that never was. Power through walls of jagged metal, melt enemy bikers and vehicles, dodge furious lazerscorpions, and go toe to toe with massive bosses covered in guns.
</p><h2><strong>Devil Take the Wheel!</strong></h2><p>
The truck drives itself, you control the guns and throttle. Burst fire, full auto, parry enemy projectiles or just crush everyone under the wheels. Choose from a randomized gear collection after every wave and put together your evilest build.
</p><h2><strong>Darkest Driving Demons</strong></h2><p>
Crank out high scores and dominate your weak, mewling friends on a global leaderboard. Skill based mechanics reward full clears and perfect play against ever more challenging waves and hellish enemy trucks.
</p><hr><p>Demon Truck is currently campaigning on Steam Greenlight! If you like the game, give it a vote and help spread diesel and brimstone all over the globe.</p><p><a href="http://steamcommunity.com/sharedfiles/filedetails/?id=659690731" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Vote for Demon Truck on Steam Greenlight!</a></p><p>Demon Truck was originally created as part of Ludum Dare 34 during the weekend of December 11th 2015. Ranked in the 98th percentile in fun, enough of my friends encouraged me to polish the game up a little and see what could be made of it, so here we are.</p><p><a href="http://ludumdare.com/compo/ludum-dare-34/?action=preview&uid=5448" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Check out the Ludum Dare version here!</a><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/bPfhKZWB1X4" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTgyMDUvMjcxNzU4LnBuZw==/original/igLBbR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgyMDUvMjcxNzU3LnBuZw==/original/iP4%2FkV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgyMDUvMjcxNzU2LnBuZw==/original/nRR5fN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgyMDUvMjcxNzU0LnBuZw==/original/nrKFNz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgyMDUvMjcxNzU1LnBuZw==/original/tuBqfT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgyMDUvMjcxNzU5LnBuZw==/original/BwYgQr.png]]
<h1>INTO THE VAMPIRE'S DEN</h1>
<p>''DEN'' is a supplement to use with <a href="https://torthevic.itch.io/vampires-claymores" target="_blank">Vampires & Claymores</a>. <br>There are 12 tables to help you flesh out an unique vampire den for your games. </p>
<p>In this 15 page zine you will find: </p>
<ul><li>Den generator! What is this place, how bad is it, what's going on???</li><li>''What have they done to the place?" table </li><li>Den Dwellers, who is it? Who's there?</li><li>Cults and factions! 4 different factions to use in any vampire-themed game</li></ul>
<p>This zine was made using Affinity Publisher, Adobe Photoshop and the <a href="https://dwuff.itch.io/watercolour-texture-pack-sunrise-sunset" target="_blank">marvellous background paintings by Dwuff</a>. <br></p>
<p>It is a submission to the #RPGLATAMJAM</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTkxNjQ3LzU2NDE5NjYuanBn/original/coHoyc.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTkxNjQ3LzU2NDE5NjEuanBn/original/dlmwmx.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTkxNjQ3LzU2NDE5NjAuanBn/original/E9nAI2.jpg]]
<p> As a lover of all things queer, you, dear reader, have a calling in literature. Like so many writers before, your great novel—the one that aches in your soul—isn't ready. But this game is.<br><br>Take time to create an author, the trashy romance novel they wrote, and the two lesbian leads of that trashy novel. Then play it all out.<br><br>Follow them through the three classic acts of any lesbian love story: Denial, Yearning, and Crisis. And then enact that happily ever after ; )<br><br>Denial & Yearning is:<br></p>
<ul><li> A story-heavy two player GMless roleplaying game</li><li>Playable in an evening (though it may take longer if you make the novel cover a true work of art)</li></ul>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTQyMTMxLzUzMzkwNjUucG5n/original/7CsLU0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQyMTMxLzUzMzkwNzAucG5n/original/gRInrn.png]]
<p><strong>|| 1.1 Bug Fixes:</strong></p>
<p><strong>No longer needs to be run in admin mode, & save files work as intended!</strong><br></p>
<p><strong>Physics sometimes decide not to initialise, using escape to go back to menu & restarting game should fix it eventually...||</strong></p>
<p><strong>CONTROLS: A & D to move, Q & E to rotate, ESC to open menu.</strong><strong></strong></p>
<p>Density Experiment is a student project by Tim Drew (Red Squirrel Games) & Cameron Callaghan.</p>
<p>In Density Experiment you are stuck in a maze full of traps, & you must collect 3 treasures in order to escape.</p>
<p>Make your way through the maze & avoid the many hazards by rotating the world around you - you are unable to jump, so use the changing gravity to your advantage. Fly through levels without touching the ground or take a more cautious approach & size up the challenge ahead - the choice is yours!</p>
<p>Features 50+ levels of a looping maze you can easily get lost in, original music to keep you company as you die many times & a unique rotation mechanic which provides a fun & interesting way to move around.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/hcVGOaq-iKo" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAxMTc3OS81NzY0NTg4LnBuZw==/original/VfI3GO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxMTc3OS81NzY0NTkyLnBuZw==/original/uJ6%2B1O.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxMTc3OS81NzY0NTkzLnBuZw==/original/53yFz8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxMTc3OS81NzY0NTk0LnBuZw==/original/nAGMkE.png]]
<h4><img src="https://img.itch.zone/aW1nLzM0MDE3NDYuanBn/original/KPFr5s.jpg" loading="lazy"></h4>
<p><br></p>
<h4>10:50 PM.</h4>
<p><em>My bichette is waiting at home and I’m determined to bring her something special. The little dépanneur on this side street may still be open. It’s my last chance.</em><br><br></p>
<p><img src="https://img.itch.zone/aW1nLzM0MDE2NjIucG5n/original/Kgn8sn.png" loading="lazy"></p>
<h4>A SMALL GAME BY G.P. LACKEY</h4>
<p>You’re out on a rainy late-night quest for a very particular gift. The only problem is you don’t know what it is yet...</p>
<p>Finding a corner store that’s open at this hour must be kismet! With the help of its peculiar proprietor and her unusual inventory, you’re sure to find something worth your search. What will the gifts you pick foretell?</p>
<p>The dep is closing in an hour, so be forewarned… <strong>this is a single-sitting game</strong>.</p>
<h4>KEY FEATURES</h4>
<ul><li>Shop and explore at your own pace, discovering new secrets the longer you stay</li><li>Collect as many or as few gifts as your heart desires, budget is of no concern when it comes to your love!</li><li>Set in a magical, mystical interpretation of Montréal</li><li>Estimated completion time: 1–2 hours, a miniature jaunt</li><li>Fully bilingual (English and French with a Québec twist) - switch as you like!</li></ul>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzM0MDE2NjQucG5n/original/J0uyXJ.png" loading="lazy"></p>
<h4>ABOUT KO_OP mini</h4>
<p>KO_OP is making space for its team to be able to experiment, without the demands of a large production. This atmospheric little walkabout game is the first from our new initiative, KO_OP mini.<br></p>
<p><img src="https://img.itch.zone/aW1nLzM0MDE2NjYucG5n/original/ysgsOA.png" loading="lazy"><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/BC6rjLto4TY" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjI1OTk3LzE1MTg0NDguZ2lm/original/gpJPsr.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI1OTk3LzM0MDYxNzIuanBn/original/0GDdsn.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI1OTk3LzM0MDYxNjkuanBn/original/CV1HRQ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI1OTk3LzM0MDYxNjguanBn/original/wnRTw4.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI1OTk3LzM0MDYxNzEuanBn/original/Xh46kX.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI1OTk3LzM0MDYxNzAuanBn/original/kq90Up.jpg]]
<figure></figure>
<p>In a flooded future world rife with violence, rumors of killer machines have spread far and wide. As a number of factions emerge – violently vying for power – you become the sole defender of humanity’s last standing government. Only you can create the ultimate squad and save humanity in this turn based, tactical RPG with roguelike elements.<br></p>
<p><strong>Get a free Steam key with your purchase!</strong></p>
<h3>REVIEWS</h3>
<p>“One of the most detailed and immersive turn-based strategy games I have come across”<br>8/10 - <a href="https://www.bonusstage.co.uk/2020/06/06/depth-of-extinction-review/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Bonus Stage UK</a><br><br>“Not everyone will love Depth of Extinction's open-ended campaign as much as I did but it's a top-notch SRPG no matter how you slice it.”<br>4/5 - <a href="https://videochums.com/article/dark-indie-games#depth-of-extinction" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Video Chums</a><br></p>
<h3>GAME FEATURES</h3>
<ul><li>Explore a sunken world and build your own story </li><li>Familiar tactical options with a few new twists including action refunds, stealth positioning and ambushes</li><li>Create the ultimate squad from 10 different character classes including the brand new SABOTEUR</li><li>Outfit your team with 115 different weapons, armor, and items</li><li>Fight 30+ unique enemies from 5 factions</li><li>Position your team and then get the kill with stealth</li></ul>
<h3>WHAT HAS CHANGED SINCE LAUNCH?</h3>
<p>The game had some issues at launch but has had <strong>six</strong> major updates since then to directly address much of the feedback in that initial wave of reviews. </p>
<ul><li>Official support for <strong>English, Spanish, German, Japanese and Simplified Chinese</strong></li><li>Unofficial support (google translate) for French, Italian, Russian, Portuguese and Korean (only when downloading from itch.io)</li><li>More maps that require different tactics</li><li>Over powered skills and combos were rebalanced</li><li>More weapons, effects and death animations</li><li>More story cutscenes and a "proper" ending</li><li>Refined the existing enemies and created a few new ones</li><li>Full controller support</li><li>Additional options, including Color Blind mode</li><li>Increased turn speed and reduced friction in many of the menus</li><li>Casual mode for those that felt the original game was too punishing</li></ul>
<h5><br><a href="https://discord.gg/Y6taVrh" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzcxODcwODAucG5n/original/PbFtnL.png" alt="Join our Discord" title="Join our Discord" loading="lazy"></a></h5>
<h2>Also Available for</h2>
<table><tbody><tr><td class="text-center"><a href="https://www.nintendo.com/games/detail/depth-of-extinction-switch/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzM2MDg1MjYucG5n/original/LVbUfz.png" loading="lazy"></a></td><td class="text-center"><a href="https://www.microsoft.com/en-us/p/depth-of-extinction/9P868FJRZQC3?activetab=pivot:overviewtab" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzM2MDg1MjkucG5n/original/yOJo5f.png" loading="lazy"></a></td><td class="text-center"><a href="https://store.playstation.com/en-us/product/UP5707-CUSA18807_00-33636DEPTHEXTINC" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzQwNjQzNjcucG5n/original/AaPwhw.png" alt="PS4" title="PS4" loading="lazy"></a></td></tr><tr><td class="text-center"><a href="https://www.nintendo.com/games/detail/depth-of-extinction-switch/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Nintendo Switch</a></td><td class="text-center"><a href="https://www.microsoft.com/en-us/p/depth-of-extinction/9P868FJRZQC3" target="_blank" rel="nofollow noopener" referrerpolicy="origin">XBox One</a></td><td class="text-center"><a href="https://store.playstation.com/en-us/product/UP5707-CUSA18807_00-33636DEPTHEXTINC" target="_blank" rel="nofollow noopener" referrerpolicy="origin">PlayStation 4</a></td></tr></tbody></table>
<iframe width="720" height="450" src="https://www.youtube.com/embed/hDz7cgTDhXI" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODgxNDIvMTQ5NjkzNi5wbmc=/original/pthnHg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgxNDIvMTQ5Njk0Mi5wbmc=/original/XXVDAs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgxNDIvMzE1NDY0Ni5wbmc=/original/syXU46.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgxNDIvMzE1NDY1Mi5wbmc=/original/XQHB2P.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgxNDIvMzE0ODAyMy5wbmc=/original/uhcm1J.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgxNDIvMzE1NDY0OC5wbmc=/original/Dy9dkR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgxNDIvMTQ5Njk0NC5wbmc=/original/I9vZuc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgxNDIvMzE1NDY0Ny5wbmc=/original/imRuzf.png]]
<p>DERE EVIL EXE is both a terrifying thriller with a gripping story and an unorthodox retro platformer with unique puzzles and obstacles.<br></p>
<p>In DERE EVIL EXE, you step into the tiny shoes of a silent hero named 'Knightly'. Knightly must jump, run, and manipulate environments in order to survive the heart-racing journey through a stunning pixel art world.</p>
<p>Within surreal structures and blocky hills lurk resident creatures known as 'corruptions'. They take the form of their creator's greatest fears. Their creepy creator, sporting a cunning visage of cheerfulness, hides in plain sight as she watches her prey fall deeper into her traps.</p>
<p>=====</p>
<p><strong>A GAME LOST IN TIME</strong><br>Modern 2d side-scrolling horror game with levels inspired by the simplicity and aesthetics of 16-bit arcade classics of the 80s and 90s.</p>
<p><strong>MELODIC MADNESS</strong><br>The game plays either catchy retro chiptune music or ominous PSX era orchestral music, depending on the situation.</p>
<p><strong>IMMERSIVE TALE OF HORROR</strong><br>A completely new meta story that bends the creepypasta genre in ways unseen in the video game world.</p>
<p><strong>STANDALONE SEQUEL</strong><br>You don't need to have played the award-winning DERE EXE and The Last Yandere to enjoy DERE EVIL EXE.<br></p>
<p>---</p>
<p>If you liked it and are intrigued by the concept, please consider donating so we can make more games like this one. Thank you so much.<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/uEeElRXDZyk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjQxODkwLzEyNzc3NDQucG5n/original/DJvo9V.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQxODkwLzEyNzc3NDEucG5n/original/gTCNO0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQxODkwLzEyNzc3NDIucG5n/original/8nN7sP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQxODkwLzEyNzc3NDMucG5n/original/ymygb1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQxODkwLzEyNzc3NDUucG5n/original/w%2BqAM0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQxODkwLzEyNzc3NDAucG5n/original/fNCqSU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQxODkwLzEyNzc3MzkucG5n/original/XkNSPB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQxODkwLzYzNDMxNjEucG5n/original/SO9TFK.png]]
<h3 class="text-center">Description
</h3>
<p><strong>Derpy Deep Drive</strong> is a 3D Endless<strong>*</strong> Driving game.</p>
<p>In this endless* driving game, How far can you drive your School Bus?</p>
<ul><li><strong>Single Endless Mode.</strong></li></ul>
<ul><li><strong>Maneuver around obstacles to avoid getting damaged.</strong></li></ul>
<ul><li>Hit an Obstacle? don't worry your bus is more durable than you think. But how many hit's can it take?</li></ul>
<ul><li>Let's see your amazing Bus Driving skills.</li></ul>
<ul><li><strong>Made for Ludum Dare 48.</strong></li></ul>
<ul><li><strong>This game might not be balanced at all.</strong></li></ul>
<ul><li><strong>If the game is lagging, reduce the graphics quality using the in-game settings menu.</strong></li></ul>
<h3 class="text-center">Controls</h3>
<h1 class="text-center">🖱️</h1>
<p class="text-center">Mouse</p>
<h3 class="text-center">Engine</h3>
<p class="text-center"><strong>Unreal Engine 4</strong></p>
<h3 class="text-center">Credits</h3>
<ul><li>Music from <a href="https://www.zapsplat.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin">ZapSplat<br></a></li></ul>
<h3>Update 1</h3>
<p><strong>Updates</strong></p>
<ul><li>Added Endless Mode.</li><li>Added the Distance meter to the Bus and removed the HUD UI.</li><li>Updated Out of bounds check to be more precise.</li></ul>
<p>Bug Fixes</p>
<ul><li>Fixed Score, speed and health not getting reset after game over.</li><li>Disabled an unintentional Jump functionality.<br>
</li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNTY5OC81Nzg1NDc2LnBuZw==/original/eMm%2Fcp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNTY5OC81Nzg1NDk2LnBuZw==/original/4dTprE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNTY5OC81Nzg1NDk1LnBuZw==/original/3ZO46G.png]]
<p>Controllers required to play.<br><br>Move with the left joystick, rotate camera right right joystick.<br><br>Break things, break other rocks!!!<br><br>Uh, there is no restart button so like, if a player falls off the map, you need to close the game with alt+f4 and restart it, sorry !!!<br><br>I hope you have fun !!!</p>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/OsSRmjq3lr8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1nLzYwNjk5MTcucG5n/original/sbnuqP.png]]
<p><strong>The Destructivator Returns!</strong></p>
<p>Take on the role of a tiny little super solider decked out in lime green and blast and insta-melee your way to victory! <br></p>
<p>Unapologetically old school, forget the last 30 years ever happened and take on vast armies of soldiers, robots, spaceships, cruel traps, mini bosses & bosses - on foot and using various vehicles you find. With sharp colourful graphics, catchy tunes & 54 levels, there's a lot of fun packed into this little gem!</p>
<ul><li> 54 Levels</li><li> Vast array of enemies - soldiers, sentries, turrets, tanks, space ships, spiders, centipedes....</li><li> Bosses & frequent mini boss fights</li><li> Wear a hideous lime green suit</li><li> Commandeer enemy ships and attack from the air</li><li> Easy, Normal and Brutal skill levels to suit everybody</li><li> Small characters in a big screens for that classic 80s feel</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/Q5_RN335mck" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjAzNTE4LzMyMDA3MDAucG5n/original/WvxFtT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAzNTE4LzMyMDA2ODYucG5n/original/8wkPfS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAzNTE4LzMyMDA2OTAucG5n/original/0P4YQq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAzNTE4LzMyMDA2ODUucG5n/original/ZwBsJa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAzNTE4LzMyMDA2OTgucG5n/original/gk%2BtzU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAzNTE4LzMyMDA2ODkucG5n/original/DhrtLp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAzNTE4LzMyMDA2ODcucG5n/original/seFBIU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAzNTE4LzMyMDA2ODgucG5n/original/B2xi6s.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAzNTE4LzMyMDA3MDEucG5n/original/29RY0y.png]]
<p>Detail is a worldbuilding game for 1-5 people. This game facilitates collaboratively building a setting through the use of small Details given significance. Play it as a stand-alone game, or create a setting for other roleplaying games or stories. </p><p>Now featuring Detail: Regrowth, an expansion with 60 new details centered on the natural world.</p>
<p>Detail is a game by Declan Lowthian. </p>
[img width=500 [https://img.itch.zone/aW1nLzQ5MDAxNTcucG5n/original/7reezD.png]]
<p>It’s time to move across the country, and the only person with a car is your ex-partner. Suck up your pride and play through your trip and relationship’s road bumps, obstacles, and detours. Witty dialogue and moments of quiet, human connection are interspersed on a trip that reflect the oddities and struggles of Midwestern drives.<br></p>
<p>---<br></p>
<p><em>Detours</em> was made by Mismatched Games (<a href="https://twitter.com/slitherpunk" rel="nofollow noopener" referrerpolicy="origin">Autumn</a>, <a href="https://twitter.com/waitwhatnostop" rel="nofollow noopener" referrerpolicy="origin">Kinsey</a>, <a href="https://twitter.com/thedeerforest" rel="nofollow noopener" referrerpolicy="origin">Roscoe</a>, <a href="https://twitter.com/samloveskirby" rel="nofollow noopener" referrerpolicy="origin">Sam</a>, and <a href="https://twitter.com/BirbBabe" rel="nofollow noopener" referrerpolicy="origin">Plum</a>) as part of Code Coven's 2020 <a href="https://codecoven.co/the-summer-program/" rel="nofollow noopener" referrerpolicy="origin">Summer Program</a>.<br></p>
<p>You can buy <em>Detours</em> for $5.99, or the game as well as the <em>Detours </em>Art Book PDF and game OST (in both MP3 and FLAC formats) for $9.99.</p>
<p>---</p>
<p>HOW TO PLAY:</p>
<p>Play as Daniella as you slowly make your way back to her childhood home with help from her ex, Mish, and their car.<br></p>
<p>Use your mouse, arrow or WASD keys to select dialogue options. Click or press space to confirm your choice or progress dialogue. <br>Your progress is saved at the end of each in-game day. You can continue by selecting "Acts" from the start menu.<br>You can explore pit-stops as Daniella by using your arrow or WASD keys.<br>Interact with people and the environment by clicking or pressing space. Press the Escape key to look at your inventory.<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/AVbqXMFP2QQ" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjgxMDcwLzQzODQ5MjIucG5n/original/%2F1lRTA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjgxMDcwLzQzODQ5MjQucG5n/original/sye9z7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjgxMDcwLzQzODQ5MjMucG5n/original/nDGENs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjgxMDcwLzQzODQ5MjEucG5n/original/xehfhX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjgxMDcwLzQzODQ5MjUucG5n/original/aCqIop.png]]
<p><em>Henry Bantam. Bank robber. Noose dodger. They say Bantam was shot dead outside Elksville and a lightning strike knocked him right back to his feet, alive again. They say Bantam's boots melted and the bullets ran out the holes in his chest like prairie dogs fleeing a flooded burrow.</em></p>
<p><em>It's 'cause Bantam went down to the crossroads, they say. Made a Deal. Gave up something awful powerful in exchange for the fastest gun. For uncanny luck. For eyes in the back of his head. </em></p>
<p><em>They say a lot of things.</em></p>
<p><em>. . .</em></p>
<p><em>They say there's a bounty on his head. </em></p>
<p><strong><br></strong></p>
<p><strong>DEVIL, AIM FOR ME</strong> is a Weird West incursion rooted in Trophy Dark. Don't know Trophy Dark? No problem! All the rules you need are contained within. </p>
<p><span></span></p>
<p>This is a collaborative play-to-lose RPG scenario about bounty hunters on a doomed expedition in a hostile world. It is very likely that all of them will die or—at best—be permanently scarred and haunted, destroyed by their desire. </p>
<p>If that sounds like a good time, then saddle up. Bantam's out there. Find your fortune.</p>
<p><em>--</em></p>
<p>WATCH IT PLAYED</p>
<p></p>
<div class=""><iframe width="500" height="281" src="https://www.youtube.com/embed/hj4qDpmPlEA" frameborder="0" allowfullscreen=""></iframe></div>
<p></p>
<div class=""><iframe width="500" height="281" src="//www.youtube.com/embed/1t23aaCRa2g" frameborder="0" allowfullscreen=""></iframe></div>
<p><strong>If you want a physical copy</strong>, head over to <a href="https://www.coldhearthcollective.com/" target="_blank" style="text-align: center; font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">Cold Hearth Collective</a>.<br></p>
<p><strong>Pour la version française</strong>: <a href="https://signalstation.itch.io/dans-le-viseur-du-diable">Dans le Viseur du Diable</a><br></p>
<p>--<br></p>
<p><em>"Fantastic take on Trophy Dark, from the reframing of Rituals to "Becoming Myth" to the brilliant escalating Conditions (It Gets Worse). If, like me, you're drawn to horror more than Westerns, you'll be delighted. And horrified."</em> </p>
<p class="text-center"> - Gabriel Robinson (<em>Candlelight</em>)</p>
<p><br><strong></strong><b>Need an online character keeper? </b> Devil, Aim For Me is supported by this <a href="http://arktosaur.us/keepers/trophydark" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Trophy Dark Character Keeper</a> courtesy of Ben Bond (Arktosaur). Note: requires a Google account to access.<br></p>
<p><br></p>
<p><strong>Spotify Playlist</strong></p>
<iframe src="https://open.spotify.com/embed/playlist/4OMHt6SeuXb5gAIfmZbE1G" width="300" height="380" frameborder="0"></iframe>
<iframe width="720" height="450" src="https://www.youtube.com/embed/hj4qDpmPlEA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTgyODMxLzMwNzgxMzguanBn/original/OBpGcp.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgyODMxLzMwNzgwNzIuanBn/original/hrzYF%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgyODMxLzMwNzgwOTMuanBn/original/r4LK3%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgyODMxLzMxMzU2MTcuanBn/original/rZAYZF.jpg]]
<p><strong>Diàn Xīn (电心</strong><strong>) Electric Heart</strong> is a Cyberpunk <strong>TTRPG</strong> about trying to survive in a world that doesn't want you to thrive, without losing your sense of self worth or your will to keep going.</p>
<p>This game can be played both with and without a Game Master. It is designed with <strong>4-6</strong> players in mind, including a Game Master, or <strong>3-5</strong> players without a Game Master.</p>
<p>To play all you need are <strong>six-sided dice</strong> and <strong>character sheets or a means to record information</strong>.</p>
<p>The pdf is 13 pages long.<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTMzMDU3LzUyODU4NDMucG5n/original/Tfj014.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMzMDU3LzUyODU4NDQucG5n/original/nTgjuJ.png]]
<p>Disobedient Sheep is a frantic and lighthearted sheep herd'em'up for two to four players. Play as adorable sheepdogs and guide your hapless flock to victory in four different game-modes by avoiding anvils, dodging dynamite, and bailing on boulders.<br><br>This is a small, unique game. Ideal for short-sessions, young children, rowdy friends, older folks and non-gamers.<br></p>
<h2>Features</h2>
<ul><li>Frantic fun ideal for parties and family get-togethers</li><li>Simple to pick up, tricky to master</li><li>Advanced herding and flocking AI</li><li>Controller sharing - two players with one controller; four players with two</li></ul>
<h2>Co-Op</h2>
<p>Challenge your high-scores in a time trial, or hold out for as long as possible in Endless mode.<br></p>
<h2>Versus</h2>
<p>Who's a good sheepdog?! <strong>You are! </strong>Look after your flock while trying to drive your opponents sheep into danger, or compete over territory in King of the Hill. Chow down on dog biscuits to run faster, drop anvils on your opponents, and lure sheep with tasty carrots.<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/y8jHYaDM2Lk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjE0ODg3LzMyNzE0NzgucG5n/original/0J1Pks.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjE0ODg3LzMyNzE0NzcucG5n/original/yljgJD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjE0ODg3LzMyNzE0ODAucG5n/original/mrQMFK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjE0ODg3LzMyNzE0ODQucG5n/original/1307M2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjE0ODg3LzMyNzE0NzUucG5n/original/OseCCL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjE0ODg3LzMyNzE0ODMucG5n/original/sewiWR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjE0ODg3LzMyNzE0ODEucG5n/original/XjHP5n.png]]
<p>
<span style="font-size: 36px"><strong>Welcome!</strong></span><br>
</p>
<h4><br>
</h4>
<h4>Take a plunge beneath the surface to discover a wondrous underwater world. Hunt fish and collect loot while avoiding predators and other dangers. Think you can find the treasure? First you will need the key...</h4>
<p>
<br>
</p>
<iframe src="https://www.youtube.com/embed/ZZ8udugVC6Y" allowfullscreen="" width="540" height="315" frameborder="0">
</iframe>
<p>
<br>
</p>
<h1 style="text-align: center">WANTED :</h1>
<h2 style="text-align: center">Experienced diver</h2>
<h3> (Or anyone who can swim. In fact you don't need to be able to swim. If you can paddle, that's enough. Did I say paddle? I mean, just be able to follow instructions. Or just listen. Or at least pretend to listen.)</h3>
<h3>Needed for various tasks (life insurance not inc.), prepared to work in dangerous conditions, confined spaces, darkness, lightness, deepness and be able to fish and avoid BIG fish will be viewed favourably. Waterproof, Tardis-like backpack and CB radio will be supplied, so don't lose them. They cost a bit you know, not cheap. Well, actually quite cheap. The cheapest ones on the market but hey, better than a plastic bag and a bit of string.</h3>
<h4><br>
</h4>
<h4>Features :</h4>
<ul>
<li><span></span>8 (count them), yes 8 glorious maps.</li>
<li>13 amazing achievements.</li>
<li>Lots of yummy fish types.</li>
<li>Many deadly predators.</li>
<li>Loot!</li>
<li>A shop, that sells things.</li>
<li>A shopkeeper, who can murder you.</li>
<li>Too many unlockable cheats.</li>
<li>New game + mode.</li>
<li>Different difficulty levels with an unlockable, customisable one.</li>
<li>Graphics! Sounds! and the magic that makes everything move!</li>
</ul>
<p>
<br>
</p>
<h4 style="text-align: center">Diver is brought to you by the misguided people of team F&L, which includes :</h4>
<h4 style="text-align: center">Adam Freeman - Bricklayer</h4>
<h4 style="text-align: center">Jason Love - Scientist</h4>
<h4 style="text-align: center">Cooper Jones - Whistler</h4>
<h4 style="text-align: center">Please consider checking out more awesome music from <a href="https://soundcloud.com/cooperjones" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Cooper Jones on Soundcloud.</a></h4>
<h3 style="text-align: center">
<iframe scrolling="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/playlists/158083936&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&visual=true" width="75%" height="280" frameborder="no">
</iframe>
</h3>
<h3>Go on, click download, and dive right in...</h3>
<iframe width="720" height="450" src="https://www.youtube.com/embed/ZZ8udugVC6Y" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzY0MjIvMTU4NjcyLnBuZw==/original/AvrtL5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY0MjIvMTU5MzQzLmpwZw==/original/Q%2BHhjv.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY0MjIvMTU5MzI1LmpwZw==/original/ZCsFsE.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY0MjIvMTU5MzI2LmpwZw==/original/jzPmGg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY0MjIvMTU5MzU5LmpwZw==/original/yz%2Fv5%2B.jpg]]
<p><em>"There is a deep, ancient connection between gambling and divination"</em></p>
<p><em>- Aaron C. Brown</em></p>
<p>This is a supernatural horror RPG/ritual game that can be played by yourself or with friends. All you need to play is some index cards, writing utensils, coins to be used as tokens, and, most importantly, a Magic 8 Ball, or a similar tool or app that answers yes/no questions. You will play the role of a Seer who regularly receives premonitions of dark futures, and works to defy or fulfill them. You will hold seances and perform rituals when you require more information, and you will pull apart or mend the fabric of fate with your actions, all while avoiding the watchful gaze of wrathful gods.<br></p>
<p>In a world that has mostly forgotten magic, you know the truth, and your actions will shape the world around you, for better or for worse. This game includes:</p>
<ul><li>A quick, easy character creation system</li><li>A dice-optional system that uses coin flips and a Magic 8 Ball</li><li>A freeform, fiction-first roleplaying experience</li><li>A ritual for divining the future and unraveling the mysteries of the Abyss</li><li>Optional rules and substitutions for those without access to a Magic 8 Ball</li><li>A GMless system that can be played alone or in a group</li></ul>
<p>Whether you play by yourself or brave the Abyss with friends, unravel the mysteries of the unknown and defy your fate!</p>
<p><strong>1.1 Update: </strong>Introducing the 1.1 version of DIVINATION, with a revised Action Phase! This quick little update provides more clarification for certain actions during the Action Phase, optional rules for larger groups, and a chart of plot twists for making your game more interesting! This is a free update available to anyone who already owns the game.<br></p>
<p><strong>General Content Warning:</strong> This game at base contains themes of death, supernatural horror, demons, witchcraft, murder, and other themes of horror. Additional content warnings are detailed in the “example of play” sections that discuss them. TTRPG safety tools are detailed within this game and their use is highly encouraged.</p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTIyMzQ0LzU0MTE3ODcucG5n/original/wJIEuz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyMzQ0LzU0MTE3ODYucG5n/original/dGsMv6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyMzQ0LzU0MTE3ODgucG5n/original/l6Vadx.png]]
<p>I released this game on Twitter and someone asked for a copy they could print out so here it is. One page game in which you will show up to an event held by your local representative and yell at them to Do Something. It has a scoring system you can use to compete with your friends and hopefully inspire more people to play, and more importantly for your representatives to actually do something. This was written in response to the mass murders in Dayton, OH and El Paso, TX but applies to so much else that our representatives are failing to do.</p>
[img width=500 [https://img.itch.zone/aW1nLzIzNjYxNDIuanBn/original/dxtKvL.jpg]]
<p>I released this game on Twitter and someone asked for a copy they could print out so here it is. One page game in which you will show up to an event held by your local representative and yell at them to Do Something. It has a scoring system you can use to compete with your friends and hopefully inspire more people to play, and more importantly for your representatives to actually do something. This was written in response to the mass murders in Dayton, OH and El Paso, TX but applies to so much else that our representatives are failing to do.</p>
[img width=500 [https://img.itch.zone/aW1nLzIzNjYxNDIuanBn/original/dxtKvL.jpg]]
<p>A dodgy boat. A congested canal. Make bank & avoid banks in this meme-y endless runner!</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTk5NTgzLzU4NjQ5NDcucG5n/original/TNDIgv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTk5NTgzLzU3Njg0MzMucG5n/original/wP6rHf.png]]
<p class="text-center"><strong>DOGS THROWING SWORDS II: Three Barks To The Wind</strong><br></p>
<p>The latest entry in the notorious "Dogs Throwing Swords" series!</p>
<p>The mysterious horned devil ORELIA has been causing mischief in the Dogwoods! Three heroes have been chosen to take a stand, and put an end to her tyranny.</p>
<p>Choose and guide a team of three dogs, and lead those best friends to victory over the devil ORELIA! Each dog has its own unique strengths. Avoid enemy attacks and maximize your firepower by SHIFTING and ROTATING your dogs. Keep them safe as long as possible, so the forest can be free for all once more!</p>
<p>- 4 friends to choose from: Husky, Corgi, Pug, and Pomeranian!<br></p>
<p>- 6 doggone good levels to fight through</p>
<p>- Dog music. I mean good music</p>
<p>- Each dog lovingly hand-pixeled, from nose to tail</p>
<p>Play Dogs Throwing Swords II today, choose a dog, and throw a sword! Now go get it! Aww, who's a good dog! You are! Yes you are!</p>
<p><a href="https://twitter.com/ItsMeLilyV" rel="nofollow noopener" referrerpolicy="origin">Lily <3</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0OTM5LzM0NTM3ODguZ2lm/original/6WlrmT.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0OTM5LzM0NTM3ODcuZ2lm/original/F7nvK%2B.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0OTM5LzM0NTM3NTUucG5n/original/oZVzmO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0OTM5LzM0NTM3NTQucG5n/original/OKmhxS.png]]
<p><em>Doikayt</em> is an anthology of short tabletop roleplaying games about Judaism or Jewish themes, written and illustrated by Jews. It was organized by <a href="http://jrgoldb.itch.io">JR Goldberg</a> and <a href="http://metagame.itch.io">Riley Rethal</a>, featuring 10+ Jewish tabletop games by incredible Jewish designers.</p>
<p>In Yiddish, the word doikayt translates to “hereness”. While hereness can be interpreted in many ways, we take it to mean that a Jewish person’s ideology, practices and traditions are a product of their environment, and it is these differences in background and knowledge from sources around the world that make the Jewish people so stalwart.</p>
<p><em>Doikayt</em> was successfully funded on kickstarter at over 300% of its goal, and now you can preorder it before it goes out to the world in May/June. Learn more about the campaign and the contributors on the <a href="http://bit.ly/doikayt" target="_blank" rel="nofollow noopener" referrerpolicy="origin">kickstarter page</a>. <br></p>
<p>You can buy the PDF for $12, or you can preorder a physical book by purchasing one of the reward tiers below. A softcover book is $25 + shipping, or a hardcover book is $40 + shipping. US shipping is already included in the price of the rewards, but please keep in mind that <em>international shipping is not</em>. Please add the price specified in the reward description to your purchase if you live outside the US.</p>
<p>There are also many community copies, donated by our generous kickstarter backers, that you can claim if you don't feel like you can afford the cost. </p>
<p>If you'd like to donate additional community copies, one will be added to the pool for every extra $7 added to your purchase.</p>
[img width=500 [https://img.itch.zone/aW1nLzI2NzcyODUucG5n/original/ca5yvp.png]]
<p>In this sequel to 2013's breakout musical hit, <a href="https://squinky.itch.io/pamplemousse" target="_blank">Dominique Pamplemousse in "It's All Over Once The Fat Lady Sings!"</a>, our favourite genderqueer private detective discovers that, through the power of multiple endings from the previous game, they have been cloned! Join the two Dominiques as they traverse surreal locations and interrogate increasingly bizarre characters in order to answer a very important question: which one of them is canon?</p>
<p>There is also plenty of singing. And feelings. And, of course, singing about feelings.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTI3OTc5LzYwMjM0Mi5wbmc=/original/yXL7wn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI3OTc5LzYwMjM0My5wbmc=/original/dELL6%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI3OTc5LzYwMjM0NC5wbmc=/original/hivCFt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI3OTc5LzYwMjM0NS5wbmc=/original/aIKOJC.png]]
<p>In this unique and offbeat stop motion musical detective adventure game, Dominique Pamplemousse, the titular protagonist, is a down-on-their-luck private investigator of ambiguous gender only one rent payment away from homelessness. When the CEO of a major record company shows up asking Dominique to locate a missing pop star, taking the job appears to be the straightforward thing to do. However, as things are never quite as they seem in these kinds of stories, Dominique winds up framed for a crime they didn't commit, bringing to surface their mysterious past and the events that led them to take up shady detective work in the first place.<br></p>
<p>Oh, and did I mention it's a musical? With singing and everything?</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjEzNzUvODQ4NDcuanBn/original/fXAhzL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjEzNzUvODQ4NDYuanBn/original/HToE7G.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjEzNzUvMTAwNDk1LmpwZw==/original/IRUHdD.jpg]]
<p><strong><em>Conquer Fear</em></strong><br>Can you complete the Rite of Passage platforming trial and overcome Moki's fear of heights?</p>
<div class=""><div class=""><iframe width="500" height="281" src="https://www.youtube.com/embed/ONd9UtMGGdE" frameborder="0" allowfullscreen=""></iframe></div><br><strong>Description:</strong><br></div>
<p></p>
<p></p>
<p>Don’t Look Down is a first person platforming game with an emphasis on player movement and speedrunning potential. You play as a fantasy rabbit-humanoid character named Moki. Moki must complete a Rite of Passage trial to obtain their full wings as they progress to become an adult-like mature member of their world’s society. This trial is a challenging platforming course which requires Moki to use their base skills along with the skills they obtain along the way to prove they are worthy of wielding a full set of wings.</p>
<p>Now everyone is afraid of something, and for Moki that thing is heights… As a result this platforming challenge over the endless abyss to prove their worthiness is something that is especially daunting! Moki’s fear of heights affects the gameplay by causing Moki to squint their eyes when over a large drop out of fear. This phobia blind mechanic provides a unique obstacle for the player to overcome as they complete the trial.</p>
<p><br></p>
<p><strong>Development Team:</strong></p><ul><li>Mingyang Li</li><li>Yichen Yan</li></ul>
<p><strong>Sound Design & Music Team:</strong></p>
<ul><li>Ethan Mattei</li><li>Nicholas Vereshchak</li><li>Pablo Del Pozo</li></ul>
<p><strong>Game Art & Animation Team:</strong></p>
<ul><li>Paul Avergis</li><li>Jonathan Brenders</li><li>Jaesang Hwang</li><li>Vankkelyn Jo</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/ONd9UtMGGdE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzg4MjU3LzQ3NzAyMjcucG5n/original/kxHgK3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg4MjU3LzQ3NzAyMjEucG5n/original/ETZDN9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg4MjU3LzQ3NzAyMzcucG5n/original/BlTN9N.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg4MjU3LzQ3NzAyNDAucG5n/original/4J1ERN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg4MjU3LzQ3NzAyNDkucG5n/original/EV9G4n.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg4MjU3LzQ3NzAyNTIucG5n/original/W0s4Xq.png]]
<p>Don't pay the Ferryman is a Fantasy Espionage roleplaying game based on the Powered by the Apocalypse engine, set in the supernatural fantasy world of Rikirta. </p>
<p>Players create Characters who are explorers, investigators and espionage agents who interact with the setting and story. They have a range of spells and abilities that grow.</p>
<p>Most characters will start in the League of Free States, a collection of theocracies inspired by ancient Babylon and Egypt.<br></p>
<p>- Don't pay the Ferryman is a great on-ramp for those seeking to tell ongoing short or long cooperative stories.
- Explore the moons, world or astral space (there's also room for you to insert your own areas)</p>
<p>- The mixture of Supernatural Mystery, Dungeon Bash and Fantasy Espionage is up to you with player and moderator guides within. - This pack contains maps, an audio overview, creatures, the setting, cheat sheets and everything you need to run the game.<span></span><br></p>
<p>- Come for the pogo-sticks, stay for the ectoplasm.</p>
<p>* 200 page book + Playbooks.</p>
<p>(game was formerly called Conjure Hagalaz)</p>
<p>Podcast-Chatting about the game here - <a href="https://www.gauntlet-rpg.com/1-forward/dont-pay-the-ferryman" rel="nofollow noopener" referrerpolicy="origin">https://www.gauntlet-rpg.com/1-forward/dont-pay-the-ferryman</a></p>
[img width=500 [https://img.itch.zone/aW1nLzI0MzM4MTMucG5n/original/GdAhFs.png]]
<p><strong><em></em></strong><strong>NOW AVAILABLE ON KICKSTARTER! Click <a href="https://www.kickstarter.com/projects/decostermakesgames/dont-take-it-personally-i-just-dont-like-you-0?ref=discovery" rel="nofollow noopener" referrerpolicy="origin">here</a> for more details and to back this project!</strong></p>
<p><strong><em>"It's not you, it's me. Well, it's not </em>not <em>you, I guess, but it's mostly me."</em></strong></p>
<p><strong>"</strong><em><strong>Look, just try not to take it too hard..."</strong></em></p>
<p>You're a college freshman with college freshman problems: you've got an awful professor, your roommate's kind of a flake, and this week really just hasn't been going your way. Luckily, you've got just the thing planned for this weekend: a night in the woods with the girl you've been (sorta?) seeing and your new (sorta?) friends. But things are never that easy. As you receive strange phone calls and hear concerning noises from beyond the treeline, tensions arise in your small camp, and choices must be made that will determine your fate... or, at least, the fate of your relationships with your friends.</p>
<p><img src="https://img.itch.zone/aW1nLzI4MTA5MTIuanBn/original/gTM0zm.jpg" loading="lazy"><br></p>
<p><em>Don't Take it Personally, I Just Don't Like You</em> is a lo-fi relationship dramedy about camping illegally on government property in the chill of early autumn, having public anxiety attacks in crowded shopping malls, the people we choose to be with, and what we do when they don't choose us back. In this demo, you'll be introduced to several characters and locations from the full game (including two romanceable characters!) in a fully self-contained, hour-long story.</p>
<p></p>
<p><strong style="color: inherit; font-size: inherit">Demo Features:</strong><br></p>
<ul><li>Play as a guy, gal, or non-binary pal.</li><li>Go on a camping trip with two of your friends (I heard one of them likes you!)</li><li>Four different endings.</li><li>Listen to some chill beats by <a href="https://www.youtube.com/channel/UClUyN-6UzufUS7jJZYclUWg" rel="nofollow noopener" referrerpolicy="origin">Lofi Dreams</a>.</li><li>Share your deepest fears.</li><li>Drink in the woods and plan the fall of capitalism.</li></ul>
<p>Follow development on <a href="https://twitter.com/DeCoster_Chris" rel="nofollow noopener" referrerpolicy="origin">Twitter</a> and <a href="https://www.instagram.com/decostermakesgames/" rel="nofollow noopener" referrerpolicy="origin">Instagram</a></p>
<p>Join us on our <a href="https://discord.gg/EA8r3uc" rel="nofollow noopener" referrerpolicy="origin">Discord</a> as well! We'd love to have you.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTM5NDc5LzI4MDYwNjAucG5n/original/OYQdhD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM5NDc5LzI4MDYwNTkucG5n/original/WI9D5y.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM5NDc5LzI4MDYwNTgucG5n/original/J7Xlnn.png]]
<p>An incredibly difficult platformer that I made in my spare time that I forgot to upload! It's also my first ever Pico8 project, which is an engine that I've grown to love</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTgzNzgxLzYwNjYxNzkucG5n/original/LqrmgR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgzNzgxLzYwNjYxODUucG5n/original/PaeQGb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgzNzgxLzYwNjYxODIucG5n/original/RBXmP3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgzNzgxLzYwNjYxODMucG5n/original/FU4PEu.png]]
<p>DOORWAYS</p>
<p>Rescue your kitten from an alien force by travelling through portals masked as green doorways.</p>
<p>What lies ahead for our hero? Probably not much good, although that might be up to you.</p>
<p><br></p>
<p>Some gameplay features include...</p>
<p>-High-speed action</p>
<p>-Wall running</p>
<p>-GIBs and gore</p>
<p>-Sketchbook doodles as an art style?</p>
<p>-Eight areas to explore</p>
<p>-28 hidden items</p>
<p>-Dynamic physics</p>
<p>-Original music</p>
<p>-Gamepad support</p>
<p>-Save system</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzUwNTMyLzE3NDM3MTEucG5n/original/COgm63.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUwNTMyLzE3NDM3MTQucG5n/original/V86pNy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUwNTMyLzE3NDM3MTMucG5n/original/4V821K.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUwNTMyLzE3NDM3MTIucG5n/original/nWf56b.png]]
<p>The first game by Genge Gaming Ltd. is a platformer where you double the number of jumps you have after completing areas. Find the entrances to levels and complete all 8 to finish the game! </p>
<p>There are 3 devlogs for the game you can find at <a href="https://www.youtube.com/channel/UCzaGndvWiurBIjATMu07fxw" rel="nofollow noopener" referrerpolicy="origin">https://www.youtube.com/channel/UCzaGndvWiurBIjATMu07fxw</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODgzODQzLzUzNDU4ODIucG5n/original/PCKlDA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgzODQzLzUzNDU4NzkucG5n/original/6eCQZY.png]]
<p>Double Turn is a pro-wrestling party brawler for up to 4 players. Fight in fast-paced versus matches. Master the simple combat, execute destructive signature moves, and take down your opponent to take home championship gold.<br></p>
<h3>Features</h3>
<ul><li>Brawl in 2-4 player local versus matches</li><li>Test your skills in solo modes and earn a top spot in Battle Royal and Gauntlet matches</li><li>Feel the heat of the crowd in a sold-out stadium</li><li>Take the mantle of one of four pro-wrestlers</li></ul>
<p>Each copy of the game on itch comes with a Steam key. There you can use Steam's Remote Play Together to play online with Steam friends! Please note that the itch version only stores a local copy of top scores in solo modes.</p>
<p><img src="https://img.itch.zone/aW1nLzUyODYwNDguZ2lm/original/x3cjer.gif" loading="lazy"></p>
<h3>Gameplay</h3>
<p>Straightforward controls keeps combat fast and fluid. Approachable to play with your friends, with enough variation to dive deep in wrestling mastery. Strike to throw powerful fists and quick elbows, block to defend against attacks, and throw your foe with classic wrestling maneuvers. Takedown opponents with devastating signature moves. Everything you do is to fuel the heat of the crowd. Whether they love you or hate you, keep the crowd cheering and build up enough momentum to best any fighter. Fighting builds heat, heat charges your signature, and signatures get you championships.</p>
<p><img src="https://img.itch.zone/aW1nLzUyODYwNTkuZ2lm/original/7re7dh.gif" loading="lazy"><br></p>
<h3>Wrestlers</h3>
<p><img src="https://img.itch.zone/aW1nLzUyNzE0MDAucG5n/original/m8WC66.png" loading="lazy"></p>
<p>The Brawler is a tough-as-nails street fighting heel. Throwing fists and cheap shots, he'll do what it takes to win.
</p>
<ul>
<li> Strikes: Punches, Double-Axe Handle
</li>
<li> Throw: Short-arm Clothesline
</li>
<li> Signature: DDT
</li>
<li> Finisher: Chair Shot</li>
</ul>
<p><img src="https://img.itch.zone/aW1nLzUyNzE0MDEucG5n/original/dRwMPF.png" loading="lazy">
</p>
<p>The High Flyer is a high flying masked luchadora. This underdog babyface is always determined and ready for a fight even in the face of bigger badder foes.</p>
<ul>
<li> Strikes: Diving Kick, Pele Kick
</li><li> Throw: Hurricanrana
</li><li> Signature: Dropkick
</li><li> Finisher: Moonsault</li>
</ul>
<p><img src="https://img.itch.zone/aW1nLzUyNzE0MDUucG5n/original/naeKLD.png" loading="lazy"></p>
<p>
The Striker deals fierce attacks and is a master of strong style. She is a heel who commands the ring and makes sure her opponents feel the pain.</p>
<ul><li> Strikes: Forearm strikes, Elbow Strikes, Spinning kick
</li><li> Throw: Suplex
</li><li> Signature: Jumping knee strike
</li><li> Finisher: Spinning Heel Kick</li></ul>
<p><img src="https://img.itch.zone/aW1nLzUyNzE0MTIucG5n/original/EJBJNB.png" loading="lazy"></p>
<p>The Showman is a fan favorite babyface who thrives off the cheers of all of his fans. A goody-two-shoes who will always do what's right and is at the face of the company.</p>
<ul>
<li> Strikes: Chop, Cross-chop, Leg drop
</li><li> Throw: Fireman's Carry Takeover
</li><li> Signature: Powerbomb
</li><li> Finisher: Elbow Drop</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/ZNF3iyz4bVw" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzQxNzgzLzQxMzMwNTYucG5n/original/X7Gbcc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQxNzgzLzQxMzMwNTgucG5n/original/gyCKQr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQxNzgzLzQxMzMwNTcucG5n/original/ZbTWm2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQxNzgzLzQxMzMwNTkucG5n/original/jNR7d7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQxNzgzLzQxMzMwNjAucG5n/original/YT8vq1.png]]
<p>You get to be a dragon<br></p>
<p>You get to kiss dragons</p>
<p>Need I say more? This Tabletop RPG is about about the clash of over-sized personalities between shapeshifters who can assume human or dragon form, or anything in between. It's a GMless—meaning everyone has equal narrative authority—and plays best over one or two 3-4 hour sessions, with 3-4 players. <br><br><strong>What about the Dragons, though? </strong><br><br>What is the fantasy of being a dragon? To me, dragons are interesting because they embody so many seemingly contradictory elements: they are powerful but vulnerable, unyielding but capricious, even tireless-but-sleepy. The one thing they aren't, in this game, is reserved: Dragons' emotions are all turned up to 11, and they aren't afraid to let everyone know exactly how they feel.<br><br><strong>What about the Hearts, though?</strong> <br><br>Notably though, while romance between characters is facilitated by the game and made as safe as possible by included support mechanics, it's also entirely opt-in: you declare on character creation whether your dragon is Open To Romance, and can change your mind at any time. <br><br><strong>And how does this game actually play?</strong><br><br><em>Dragonhearts</em> is made of several small scene types you play for different situations, like if you want to have big cool dragon duels <em>At Each Other's Throats</em>—which may at any moment become liaisons <em>In Each Other's Arms</em>—or change the entire world during <em>Endgame: The Eclipse</em>. Or, more importantly, you can have <em>A Dance</em>! <br><br>Players also collaborate on world-building elements to flesh out some Truths about the world, and can change them later during the endgame! <br><br><strong>How similar is it to Firebrands?</strong><br><br>This game follows the <em>Firebrands </em>Formula developed by Meguey and D. Vincent Baker, and while I was tempted to just "Find <em>Mobile Frame </em>Replace <em>Dragon" </em>I ended up doing... more than that. Most importantly, Dances are 50% longer! Also there are no coin flips or other mechanical randomizers. I've added several new games, and reworked the existing ones a bit to fit the setting. Also, wording and mechanics have been reworked to better facilitate interactions with more than two participants in certain games. <br><br></p>
<p>Generally speaking, one of the consentiest games ever is now even consentier, and more polyamory-friendly and trans-friendly.<br></p>
<p><br><strong>Character Keeper<br><br></strong>Originally written to be played in-person back when we could, uh, do that, I've made an updated Character Keeper to assist with playing this game online! (To find out how to make one for your own game, @GauntletRPG on Twitter has tutorials!) <br><br>You can open the Character Keeper at <a href="https://docs.google.com/spreadsheets/d/1mWJ6PCc0CxLe0POCc-gUTZbI9KhfJlCZ4QrbiiVoB1o/edit?usp=sharing" rel="nofollow noopener" referrerpolicy="origin">https://docs.google.com/spreadsheets/d/1mWJ6PCc0CxLe0POCc-gUTZbI9KhfJlCZ4QrbiiVo...</a> and then go to File > Make A Copy to get your own instance of it to share and edit! <3<br><br></p>
<p>—Alex<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/yX-_fAnQqlc" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDY1MTU0LzI2NjE0OTAucG5n/original/nrwjt6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY1MTU0LzI2NjEzOTMucG5n/original/GomNVv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY1MTU0LzI2NjEzOTcucG5n/original/gSD5Eg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY1MTU0LzI2NjEzOTkucG5n/original/WkD6Y4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY1MTU0LzI2NjE0MDIucG5n/original/ZNVmGS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY1MTU0LzI2NjE0MDAucG5n/original/dh%2F%2Fr5.png]]
<h1><img src="https://web.archive.org/web/20210124232730im_/https://img.itch.zone/aW1nLzIzNjU2MzUucG5n/original/8FDvWY.png" style="margin-left: auto; margin-right: auto; padding: 10px; width: 300px" loading="lazy"></h1>
<p>DragonRuby Game Toolkit is a commercial-grade, yet beginner-friendly, 2D game engine. It's tiny (~3MB), fast as hell, and cross-platform. <strong>The Standard License (this page)</strong> is a one-time purchase and includes support for: PC, Mac, Linux, Raspberry Pi, and Web (wasm).</p>
<div class="text-center">
<table><tbody><tr><td>Updated</td><td><span></span>Nov 25, 2021, Total releases (so far): 100</td></tr><tr><td>Inception</td><td><span></span>Apr 19, 2019</td></tr><tr><td>Status</td><td><a href="https://itch.io/tools/released">Released</a></td></tr><tr><td>Category</td><td><a href="https://itch.io/tools/top-rated/tag-game-engine">Game engine</a></td></tr><tr><td>Platforms</td><td>Windows, macOS, Linux, Raspberry Pi</td></tr><tr><td>Rating</td><td><span></span><span></span><span></span><span></span><span></span>★★★★★(135)</td></tr><tr><td>Author</td><td><a href="https://dragonruby.itch.io/">DragonRuby</a></td></tr><tr><td>Tags</td><td><a href="https://itch.io/tools/tag-2d">2D</a>, <a href="https://itch.io/tools/tag-dragonruby">dragonruby</a>, <a href="https://itch.io/tools/tag-game-engine">Game engine</a>, <a href="https://itch.io/tools/tag-moddable">Moddable</a>, <a href="https://itch.io/tools/tag-ruby">ruby</a></td></tr></tbody></table>
</div>
<h1>Tech Demo</h1>
<p>Here is what's possible with just a Standard license. </p>
<p class="text-center"></p>
<div class="text-center">
<div class="text-center"><iframe width="500" height="281" src="https://www.youtube.com/embed/SigxxNUCxOw" frameborder="0" allowfullscreen=""></iframe><br></div></div>
<h1 class="text-center">Tour and Tutorial</h1>
<p>Ryan put together a 5-minute intro to DragonRuby, to give you a whirlwind tour of the big ideas.</p>
<div class="text-center">
<iframe width="560" height="315" src="https://www.youtube.com/embed/DYBRzglsEzU" frameborder="0" allowfullscreen=""><span class=""></span></iframe></div>
<p class="text-center"></p>
<div class="text-center"><iframe width="500" height="281" src="//www.youtube.com/embed/xZMwRSbC4rY" frameborder="0" allowfullscreen=""></iframe></div>
<p></p>
<h1>Features</h1>
<p>
</p>
<ul><li><strong>Dirt simple, data-oriented APIs</strong> capable of creating complex 2D games.
</li><li><strong>Fast as hell</strong>. Powered by highly optimized C code written by Ryan C. Gordon, one of the juggernauts behind SDL (a library that powers <em>every</em> commercial game engine in the world).
</li><li><strong>Battle-tested</strong> by Amir Rajan, a critically acclaimed indie game dev with titles built with DragonRuby on mobile and the <strong>Nintendo Switch</strong>.
</li><li>Tiny. Like really tiny. <strong>The entire engine is a few </strong><em><strong>megabytes</strong></em>.
</li><li><strong>Hot loaded, real-time coding</strong>, optimized to provide constant feedback to the dev. Productive and an absolute joy to use.
</li><li><strong>Turnkey builds</strong> for Windows, macOS, and Linux with seamless publishing to Itch.io.
</li><li><strong>Cross-platform</strong>: PC, Mac, Linux, Raspberry PI, Web, iOS, Android, Nintendo Switch, XBOX One, and PS4 (mobile requires a Pro License, and console compilation requires a business entity, and NDA verification; contact us at support@dragonruby.org for more info).
</li></ul>
<p>The Standard license is a <strong>one-time/lifetime purchase</strong>.<strong> </strong><a href="http://dragonruby.org/toolkit/game#purchase" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><strong>Indie and Pro licenses</strong></a> are subscription-based but come with some incredibly powerful features.</p>
<table><tbody><tr><td><strong>Standard</strong></td><td><strong>Indie</strong></td><td><strong>Pro + VR</strong></td></tr><tr><td>MacOS</td><td>MacOS</td><td>MacOS</td></tr><tr><td>Windows</td><td>Windows</td><td>Windows</td></tr><tr><td>Linux</td><td>Linux</td><td>Linux</td></tr><tr><td>Raspberry Pi</td><td>Raspberry Pi</td><td>Raspberry Pi</td></tr><tr><td>Web Builds</td><td>Web Builds</td><td>Web Builds</td></tr><tr><td>Itch.io Automation</td><td>Itch.io Automation</td><td>Itch.io Automation</td></tr><tr><td>In-Game Web Server</td><td>In-Game Web Server</td><td>In-Game Web Server</td></tr><tr><td>-<br></td><td>C Extensions</td><td>C Extensions</td></tr><tr><td>-</td><td>Sound Synthesis</td><td>Sound Synthesis</td></tr><tr><td>-</td><td>Bytecode Compilation</td><td>Bytecode Compilation</td></tr><tr><td></td><td>Triangle Primitives</td><td>Triangle Primitives</td></tr><tr><td>-</td><td>-</td><td>iOS</td></tr><tr><td>-</td><td>-</td><td>Android</td></tr><tr><td>-</td><td>-</td><td>Oculus Quest</td></tr><tr><td>-</td><td>-</td><td>MP4 Replay Export</td></tr><tr><td>-</td><td>-</td><td><span class="">🔜</span> : HD Mode</td></tr><tr><td>-</td><td>-</td><td><span class="">🔜</span> : All Screen Mode</td></tr><tr><td>-</td><td>-</td><td><span class="">🔜</span> : Portrait Mode</td></tr><tr><td><strong><a href="https://dragonruby.itch.io/dragonruby-gtk/purchase">Purchase</a></strong></td><td><strong><a href="http://dragonruby.org/toolkit/game#purchase" rel="nofollow noopener" referrerpolicy="origin">Purchase</a></strong></td><td><strong><a href="http://dragonruby.org/toolkit/game#purchase" rel="nofollow noopener" referrerpolicy="origin">Purchase</a></strong></td></tr></tbody></table>
<h2>Free Unrestricted License</h2>
<p>You are eligible for a free license if any of the following items pertain to you:</p>
<ul><li>Your income is below $2000 (USD) per month.</li><li>You are under 18 years of age.</li><li>You are a student of any type: traditional public school, homeschooling, college, boot camp, or online.</li><li>You are a teacher, mentor, or parent who wants to teach a kid how to code.</li><li>You work/worked in public service or at a charitable organization: for example public office, army, or any 501(c)(3) organization.</li></ul>
<p>Just contact Amir at ar@amirrajan.net with a short explanation of your current situation and he'll set you up. No questions asked. </p>
<h1>Hello World is one file, three lines.</h1>
<p>This is all you need to create a game. One file. One method called <code>tick</code>. Here we render the current step value as a label:</p>
<pre>def tick args
args.outputs.labels << [100, 100, args.state.tick_count]
end
</pre>
<p>That's it. <strong>I</strong><strong>f you know how to use the <code>array</code> datatype in any language, you know everything needed to get started with DragonRuby Game Toolkit</strong>. Play around with the engine in your browser. </p>
<p><a href="http://docs.dragonruby.org" rel="nofollow noopener" referrerpolicy="origin"><strong>You can skim our documentation here</strong></a> if you need more details<strong></strong>.</p>
<h1>Output: Six rendering primitives are all you need.</h1>
<p>Here are the six draw primitives you need to know: <code>solids, sprites, labels, lines, borders, and sounds</code>. Here is how you use them:</p>
<pre>def tick args
# draw a blue square that's half way faded out
args.outputs.solids << [100, 100, 50, 50, 0, 0, 255, 128]
# draw a red label
args.outputs.labels << [100, 100, "This is a label.", 255, 0, 0]
# draw a sprite turned 45 degrees and half way faded out
args.outputs.sprites << [200, 200, 50, 50, 'ninja.png', 45, 128]
# draw a diagonal green line from bottom left to top right
args.outputs.lines << [0, 0, 1280, 720, 0, 255, 0]
# draw a black border (unfilled square)
args.outputs.borders << [100, 100, 50, 50, 0, 0, 0, 255]
# play a sound every second
args.outputs.sounds << "ping.wav" if args.state.tick_count % 60 == 0
end</pre>
<p>That's it. You now know the entire render API for DragonRuby.</p>
<p>Here's a more complicated example. This is how you create a nighttime scene, with a title, and a ninja:</p>
<ol><li><code>solids</code>: A black background, and two hundred stars made of tiny squares.</li><li><code>labels</code>: Display some smokey-white text.</li><li><code>sounds</code>: Play a sound when the game starts up.</li><li><code>sprites</code>: Render a sprite on the screen.</li><li><code>lines</code>: Draw a line representing the floor</li><li><code>borders</code>: Frame the entire scene with a white border.</li></ol>
<pre>def tick args
# destructure args into local variables
state, outputs, grid = args.state, args.outputs, args.grid
# set some default values for the game
state.colors.background ||= [0, 0, 0]
state.colors.star ||= [128, 200, 255]
state.colors.text ||= [200, 200, 200]
state.colors.landmarks ||= [255, 255, 255]
state.night ||= [grid.rect, state.colors.background]
state.stars ||= 200.map do
[rand * grid.w,
rand * grid.h,
rand * 2 + 2,
rand * 2 + 2,
state.colors.star]
end
# start up some background music
outputs.sounds << "opening_fx.wav" if state.tick_count == 0
# render the background and stars
outputs.solids << state.night
outputs.solids << state.stars
# set a title for the game
outputs.labels << [grid.left + 50, grid.top - 50,
"Ninja Game", state.colors.text]
# set a sprite
outputs.sprites << [50, 50, 50, 50, 'ninja.png']
# create a line that represents the ground
outputs.lines << [grid.left,
grid.bottom + 50,
grid.right,
grid.bottom + 50,
state.colors.landmarks]
# create a border to frame the game
outputs.borders << [grid.left + 1,
grid.bottom + 1,
grid.right - 1,
grid.top - 1,
state.colors.landmarks]
end</pre>
<h1>Input: Controllers, Mouse, and Keyboard.</h1>
<p>This is how you move a sprite using your gamepad:
</p>
<pre>args.state.ninja.x ||= 100
args.outputs.sprites << [args.state.ninja.x, 300,
50, 50,
'ninja.png']
if args.inputs.controller_one.key_held.right
args.state.ninja.x += 10
elsif args.inputs.controller_one.key_held.left
args.state.ninja.x -= 10
end
</pre>
<p>This is how you move a sprite using your mouse:
</p>
<pre>args.state.ninja.x ||= 100
args.outputs.sprites << [
args.state.ninja.x,
300,
50,
50,
'ninja.png'
]
if args.inputs.mouse.click
args.state.ninja.x = args.inputs.mouse.click.point.x
end</pre>
<p>This is how you move a sprite using your keyboard:</p>
<pre>args.state.ninja.x ||= 100
args.outputs.sprites << [
args.state.ninja.x, 300, 50, 50,
'ninja.png'
]
if args.inputs.keyboard.key_held.right
args.state.ninja.x += 10
elsif args.inputs.keyboard.key_held.left
args.state.ninja.x -= 10
end</pre>
<h1>Game State: Entities and Collision.</h1>
<p>Randomly create 500 ninjas on the screen. Create a lookup table that contains the alpha property of ninjas that have collided. Present all ninjas with their alpha properties set.</p>
<pre>def tick args
# destructure args into local variables
grid, state, outputs = args.grid, args.state, args.outputs
# use Game Toolkit's built in helper methods to create
# adhoc entities
state.ninjas ||= 500.map do
state.new_entity(:ninja,
rect: [grid.w.-(50) * rand,
grid.h.-(50) * rand,
50,
50])
end
# use Ruby's powerful apis to determine collision
state.collisions ||= state.ninja
.product
.reject { |n, n2| n == n2 }
.find_all { |n, n2| n.rect.intersects_rect?(n2.rect) }
.map { |n, _| [n.entity_id, 128] }
.pairs_to_hash
#render everything to the screen
outputs.sprites << state.ninjas.map do |n|
[n.rect, 'dragonruby.png', 0,
state.collisions[n.entity_id] || 255]
end
end</pre>
<h1>The developers behind DragonRuby Game Toolkit.</h1>
<p>This is Ryan C. Gordon (<a href="https://en.wikipedia.org/wiki/Ryan_C._Gordon" rel="nofollow noopener" referrerpolicy="origin">Wikipedia</a>), he is one of the juggernauts behind Simple DirectMedia Layer (<a href="https://en.wikipedia.org/wiki/Simple_DirectMedia_Layer" rel="nofollow noopener" referrerpolicy="origin">Wikipedia</a>). </p>
<p>Ya know... </p>
<p>SDL.</p>
<p>That low-level library that <strong>powers literally every commercial game engine out there</strong>? </p>
<p>He's also worked on porting a number of games to Linux and Mac OS: such as Braid, Super Meat Boy, Dear Esther, and LIMBO.</p>
<p><img src="https://web.archive.org/web/20210124232730im_/https://img.itch.zone/aW1nLzIwMTM3NDkucG5n/original/Z%2F%2Fpmx.png" style="max-width: 100%; margin-left: auto; margin-right: auto; padding: 10px; width: 300px" loading="lazy"></p>
<p>And this is Amir Rajan, he is an indie game dev with titles on iOS, Android, desktop, and Nintendo Switch... <strong>amassing 4 million downloads and counting</strong> (<a href="https://www.nintendo.com/games/detail/a-dark-room-switch/" rel="nofollow noopener" referrerpolicy="origin">Nintendo</a>, <a href="https://killscreen.com/articles/ensign/" rel="nofollow noopener" referrerpolicy="origin">Kill Screen</a>, <a href="https://www.newyorker.com/tech/annals-of-technology/a-dark-room-the-best-selling-game-that-no-one-can-explain" rel="nofollow noopener" referrerpolicy="origin">The New Yorker</a>). And yes, all these games are built with the DragonRuby Runtime.</p>
<p><img src="https://web.archive.org/web/20210124232730im_/https://img.itch.zone/aW1nLzIwMTM3NTAuanBn/original/jrb8Tz.jpg" style="max-width: 100%; margin-left: auto; margin-right: auto; padding: 10px; width: 300px" loading="lazy"></p>
<p><strong>Both of these guys hate the complexity of today's engines. </strong>And as luck would have it, their paths ended up crossing. After six months and 50,000 lines of DragonRuby Runtime enhancements, Ryan and Amir now have a live/hot loadable, cruft-free, productive game engine that can target... well... any gaming device you can think of. </p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/SigxxNUCxOw" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1nLzIzNjU2MzQucG5n/original/WFWBHQ.png]]
<p>The first official publication for Dragons of Tirenia, this introductory guide and adventure module features:<br></p>
<p>- The adventure <em>Double Cross</em>: intrigue, spies, embezzlement, a cathedral heist, and a cart chase in downtown Fiumenze!</p>
<p>- A brief outline of the key characteristics, geography and history of Tirenia, including a country map</p>
<p>- Lineage and class summaries to cover the standard characters that can be created in the fifth edition of the world's biggest roleplaying game</p>
<p>- Access to online resources including full-size encounter map images, sequel hooks and pre-generated characters</p>
<p>The document is 40 pages long: cover page, glossary and back page, 10 pages of setting introduction, 27 pages of adventure and related resources. Please note, the guide is intended for use with the core rule set of the fifth edition of the world's biggest roleplaying game.</p><p>To learn more about our plans for this setting please visit <a href="http://www.skybeargames.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin">www.skybeargames.com</a></p>
<p>The full campaign setting will be Kickstarted in 2021. Watch this space!</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzY5NjM1LzQ0NDk3NTYucG5n/original/djffeb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY5NjM1LzQ0NDk3NTUucG5n/original/RTzAZp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY5NjM1LzQ0NDk3NTQucG5n/original/1k%2BnNY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY5NjM1LzQ0NDk3NTMucG5n/original/DBLXHi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY5NjM1LzQ0NDk3NTIucG5n/original/fsIb5I.png]]
<figure><p>Drawkanoid is a neon-drenched love letter to brick breaking games. We took out all the boring bits, like paddles, and turned everything up to 11! The ball moves at hyperspeed, shattering everything into explosion-filled eyecandy. Bullet time lets you react at the speed of thought. Deploy powerups to go into full ludicrous mode, or unlock Countdown and Zen modes to up the tension or zone out and smash.<br></p><p class="text-center"><img src="https://img.itch.zone/aW1nLzI5MDAzMDIuZ2lm/original/vDi0S0.gif" loading="lazy"></p></figure>
<iframe width="720" height="450" src="https://www.youtube.com/embed/AiKbUyZQvNc" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTUzNTM3LzI4OTc1MjEuanBn/original/qb0HQc.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUzNTM3LzI4OTc1MjcuanBn/original/Uv%2F5KG.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUzNTM3LzI4OTc1MjUuanBn/original/g%2Furf1.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUzNTM3LzI4OTc1MjMuanBn/original/TIXfcM.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUzNTM3LzI4OTc1MjQuanBn/original/L0FajP.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUzNTM3LzI4OTc1MjYuanBn/original/LMpyQC.jpg]]
<p>You are beginning your very first year at the magical academy, hoping to learn more about magic, make friends and grow into a better witch and a better person. Sounds easy, right?
</p>
<p>This is a roleplaying game, and I expect you're familiar with those, but <strong>Dream Abloom</strong> is different from other roleplaying games. In the vein of games like <strong>Dream Apart </strong>and <strong>Dream Askew</strong>, this game asks you to forget about dice and GMs - it is a fully collaborative storytelling and worldbuilding game meant to tell stories of coming of age, heartbreak, friendship, love, levity in the face of grim seriousness and hope in the face of adversity.
</p>
<p>Playing without dice and without a GM can seem daunting at first but is in fact very easy, and this game includes rules for structuring play a little more rigidly - especially useful when it's hard to come up with ideas for scenes.
</p>
<p>This is the very first edition of the game - basically a fully playable ashcan edition, with only some basic layout and no art other than the photo on the cover, which I am offering at a low price point (with some Community Copies, of course), hoping to use the proceeds from the game to pay for artists, a professional layout and editors. Everyone who buys this edition or gets a community copy will automatically receive the upgraded edition at no cost the moment it's out.<br></p>
<p>Every sale of the book will make one more community copy available. Thank you all so much for supporting me.</p>
[img width=500 [https://img.itch.zone/aW1nLzU5NTk1MzgucG5n/original/dnUKtL.png]]
<p class="text-center"><u>Dream Dye</u><br></p>
<p class="text-center">A 2D puzzle platformer in which you delve into dreams and mix colours to dye objects, in a world where colours are a pigment of the imagination.</p>
<p class="text-center">Dream Dye takes place in a doctor's office in the fictional village of Renkaya, a relatively normal village with just one strange difference – the only way to “make” colour is to dream about it. </p>
<p class="text-center">In Dream Dye, you play as the village’s new Dream Doctor, a doctor who has the ability to travel into dreams and fix problems the villagers are having by completing different colour-themed platformer puzzles whilst in the form of a “dream blob”.</p>
<p class="text-center">Dream Dye is a game created by me for my final year game project at university, with audio help from George Ricci and general help and assistance from my lecturers - Ste Curran, Andy Lemon, Robert Ramsay, Paul Sinnett, and Lara Lema. </p>
<p class="text-center"><strong><u>(NOTE: Any feedback to improve the game will be greatly appreciated, thank you in advance!)</u></strong></p>
<p><strong></strong></p>
<p><u>Controls:</u></p>
<p><em>A/D</em> to move</p>
<p><em>SPACE</em> to jump</p>
<p>Jump towards a wall and press space to<em> WALL JUMP</em></p>
<p><em>q</em> to switch between blobs</p>
<p><em>R </em>to reset the level</p>
<p><em>ESC </em>to pause/exit</p>
<p><br></p>
<p><u>Credits:</u></p>
<p>Main Developer - <strong>Semra Usanmaz </strong>– Art, Design, Code etc. (also made most of the sound effects) </p>
<p>Audio Designer - <strong>George Ricci</strong> – Made all of the background music as well as a few of the sound effects, also helped with some of the playtesting. </p>
<p>Gradient Shader – <strong>Robert Ramsay </strong></p>
<p>Additional Support and advice: <strong>Ste Curran, Andy Lemon, Robert Ramsay, Paul Sinnett, Lara Lema</strong></p>
<p>Play-testers: <strong>George Ricci, Fin Miller, Katie Wright, John Bates, Alex Bates, Harry Bushell </strong></p>
<p>Font name: "Tye-Dye Jerky" </p>
<p><br></p>
<p>Time it takes to complete the game (not 100% complete) - around 10 - 15 mins</p>
<p>Time it takes to complete the game (100% complete) - around 20 - 30 mins</p>
<p class="text-center"><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NzMxNS82MDUwNzE3LnBuZw==/original/x9Cxbv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NzMxNS82MDUwNzg0LnBuZw==/original/xZ%2B1xN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NzMxNS82MDUwNzg3LnBuZw==/original/o58HSz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NzMxNS82MDUwNzIwLnBuZw==/original/pm6Ra4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NzMxNS82MDUwNzQ4LnBuZw==/original/l8hIFY.png]]
<figure><strong><img src="https://img.itch.zone/aW1nLzQ5ODE5OTkucG5n/original/OgY%2Btd.png" loading="lazy"></strong></figure>
<p><strong>Riza Wolfe is the kind of person often referred to as a daydreamer.</strong> With her high school days approaching an end quicker than she would like, and the threat of a mundane adult life looming over her, she’s always wondering if there’s something more out there.</p>
<p>As it turns out, there is.</p>
<p>After receiving an unassuming dream catcher as a gift one day, Riza soon finds herself following a character she thought she’d made up through a mysterious nexus realm and into a parallel world, where she is supposedly one of seven “Dreamers” of legend. She gets what she’s always wanted–an adventure, and a greater purpose…sort of. The problem is, no one seems to know exactly <em>why</em> the Dreamers are there, just that it means something very, very bad is coming. It’s up to Riza, her new werewolf guardian, Luna, and the assortment of companions they collect along the way to unite with the other Dreamers, and figure out why they were summoned…before it’s too late. </p>
<p>Follow Riza around the map as she chases destiny...or maybe it chases her.</p>
<p>This is the complete first volume of the series, which features updated versions of Chapters 1-5, plus a bonus story. If you'd rather read the beta versions, you can start with Chapter 1 for free <a href="https://hazumirein.itch.io/dreamcatcher-reflections-chapter-1">here</a>.</p>
<p><img src="https://img.itch.zone/aW1nLzQ5ODE5OTEucG5n/original/55qOfH.png" loading="lazy"><br></p>
<p><strong>FEATURES:</strong></p>
<ul><li>Chapters 1-5 of the series, plus an exclusive bonus story.</li><li>New GUI design.</li><li>Partial voice acting!</li><li>Complete art gallery with around 250 CGs, plus concept art.</li><li>Updated character sprites with a huge library of expressions, poses, and animations.</li><li>Large cast of colorful characters and creatures, each with their own quirks, secrets, and dynamics with others--you're sure to find a favorite (or two) as the story progresses!</li><li>Magic, monsters, and mayhem--a grand adventure in a parallel world with plenty of action to be seen and lore to be discovered.</li><li>A story about growing up, and maybe also saving the world--inspired by JRPGs and isekai anime.</li></ul>
<p><img src="https://img.itch.zone/aW1nLzQ5ODIxODkucG5n/original/bBXtWs.png" loading="lazy"><br></p>
<p><strong>NOTES & LINKS:</strong></p>
<h3><a href="http://www.dreamcatcherreflections.com/" rel="nofollow noopener" referrerpolicy="origin">DCR WEBSITE</a> | <a href="https://discord.gg/HJVdJyuJ" rel="nofollow noopener" referrerpolicy="origin">STUDIO DISCORD</a>| <a href="https://twitter.com/SkelebunStudios" rel="nofollow noopener" referrerpolicy="origin">CREATOR TWITTER</a> | <a href="https://store.steampowered.com/app/1520570/DreamCatcher_Reflections_Volume_1/?beta=0" target="_blank" rel="nofollow noopener" referrerpolicy="origin">VOLUME 1 ON STEAM</a></h3>
<p>This is a <strong>kinetic nove</strong><strong>l </strong>series adapted from a webcomic--there are no choices to make or alternate endings to unlock; just sit back and enjoy the story!</p>
<p><em></em><strong><em>"BETA" vs. "COMPLETE":</em></strong> Chapters listed as "BETA" are the original early releases, and are available for free but are lacking many of the features and polish of the "COMPLETE" version. Betas do not include the voice acting, art gallery, or bonus story, and the first few chapters have the now-outdated GUI and sprites. However, they are perfectly readable and while not the final versions, they are a valid way to enjoy the story.<br></p>
<p><img src="https://img.itch.zone/aW1nLzQ5ODE5OTUucG5n/original/yivESw.png" loading="lazy"><br></p>
<p><strong>VOICE CAST:</strong>
</p>
<ul><li><a href="https://twitter.com/MultiKnights" rel="nofollow noopener" referrerpolicy="origin">Multiknights</a> as Riza</li><li><a href="https://www.adoxtalks.com/" rel="nofollow noopener" referrerpolicy="origin">Elissa Park</a> as Luna</li><li><a href="https://twitter.com/LadyJazzington" rel="nofollow noopener" referrerpolicy="origin">Jazzy Oliver</a> as Daemian</li><li><a href="https://twitter.com/Hethrin" rel="nofollow noopener" referrerpolicy="origin">Joshua Cookingham</a> as Lunos</li><li><a href="https://twitter.com/ray_ohare" rel="nofollow noopener" referrerpolicy="origin">Ray O'Hare</a> as Ooji</li><li><a href="https://twitter.com/GeoffButlerVA" rel="nofollow noopener" referrerpolicy="origin">Geoff Butler</a> as Raus</li><li><a href="https://seerofwords.carrd.co/" rel="nofollow noopener" referrerpolicy="origin">Shakyra Dunn</a> as Suzume</li><li><a href="https://www.katieotten.com/" rel="nofollow noopener" referrerpolicy="origin">Katie Otten</a> as Mel</li><li><a href="https://twitter.com/hoyleryan" rel="nofollow noopener" referrerpolicy="origin">Ryan Hoyle</a> as Salvatore</li></ul>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/6coc8MdBpYM" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTczLzQ5ODE5NTcucG5n/original/xmLZJF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTczLzQ5ODE5NTYucG5n/original/%2FECVcQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTczLzQ5ODE5NTkucG5n/original/z%2Bkajq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTczLzQ5ODE5NjAucG5n/original/LTZq1A.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTczLzQ5ODE5NjEucG5n/original/YvFp0%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTczLzQ5ODE5NjIucG5n/original/cFrrGL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTczLzQ5ODE5NjUucG5n/original/vFm2UR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTczLzQ5ODE5NjMucG5n/original/HmAYJS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTczLzQ5ODE5NjQucG5n/original/et1LCw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTczLzQ5ODE5NjcucG5n/original/0U3ZHn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTczLzQ5ODE5NjYucG5n/original/wIZFGI.png]]
<p><strong>Dredge</strong> is an exploration-based journaling game about sailing through an enormous lake known as the Wringwaste, hauling up mysterious items from its depths as you go, while struggling to regain the memories you've lost. </p>
<p>Throughout the course of the game, you will unearth a plethora of odd items, evade a malevolent denizen of the deep, and reveal a great mystery about the Wringwaste itself.<br><br>Dredge is written to be a solo experience, but the game can be played by multiple people taking on the role of the boat's cramped crew.<br><br><strong>To play this game you will need:</strong> A deck of cards, two distinct-looking tokens, and a notebook or other method of writing journal entries.<br><br><strong>This download contains: </strong>A complete rulebook, including instructions for play and 52 card-based prompts over 31 pages (about 5000 words total).<br><br>This game was built using the <a href="http://peachgardengames.itch.io/carta-srd" target="_blank">Carta SRD</a>, by Peach Garden Games.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTg2NzE3LzU2MTEyNzIucG5n/original/c%2FnGp7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg2NzE3LzU2MTEyNzAucG5n/original/9EpJvO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg2NzE3LzU2MTEyNzEucG5n/original/A6lELz.png]]
<p>NOTICE: The HTML5 build of this game is currently broken, but I am working to fix it. The game can still be downloaded, though!</p><p><br></p><p>A Game for Ludum Dare 48, "Deeper and Deeper"</p>
<p>As a note, this game will probably be expanded on in the future! What you see here is a preview of what is to come...</p>
<p><br></p>
<p>Art, Programming and Main theme music by DPS2004</p>
<p>Music and Sound effects by bunner</p>
<p>Love2D libraries used:</p>
<p><a href="https://github.com/tesselode/baton" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Baton by tesselode</a></p>
<p><a href="https://github.com/rxi/flux" target="_blank" rel="nofollow noopener" referrerpolicy="origin">flux by rxi</a></p>
<p><a href="https://github.com/rxi/json.lua" target="_blank" rel="nofollow noopener" referrerpolicy="origin">json.lua by rxi</a></p>
<p><a href="https://github.com/rxi/lovebird" target="_blank" rel="nofollow noopener" referrerpolicy="origin">lovebird by rxi</a></p>
<p><a href="https://love2d.org/wiki/TEsound" target="_blank" rel="nofollow noopener" referrerpolicy="origin">TEsound by Taehl</a><br></p>
[img width=500 [https://img.itch.zone/aW1nLzU3OTI3OTMucG5n/original/0OW8q2.png]]
<p>
<iframe src="https://www.youtube.com/embed/ONqBP9cYuoA" allowfullscreen="" width="560" height="315" frameborder="0"></iframe>
<br>
</p>
<p>You can save Humanity!<br></p>
<p>In 2084, Cloud 9, the world Government body, perfects armed AI Drones, a cloud controlled advanced robot species created from bio-mechanical material traded with alien races who influence power on earth. Guided by their infallible logic, the drones conclude: "The Human Race is draining the earth resources and therefore must be imprisoned and destroyed."</p>
<p>
<br>
<br>
Your task is simple, Kill Drones, Free Humans, Don't die! <br>
Drones, The Human Condition is a fast paced twin stick, top down arena shoot 'em up, set in a futuristic Orwellian dystopia, with adrenaline-pumping electronic music, 13 hand designed levels of glitchy insanity and hoards of intelligent robots to blast to pieces. Bring on the destruction!
</p>
<p>
<br>
<br>
Use 5 different weapon types to defeat hoards of Drones, you have 5 credits, once you have used all these credits, its game over! your progress is recorded, so you can pick up where you last died. beat 13 levels of chaotic destruction to complete the game. discover the secrets of Drones, The Human Condition.<br>
The entire game was made by a solo attic dwelling developer.
</p>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/ONqBP9cYuoA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTMwNDgvMjYzMTExLmpwZWc=/original/W4nQh4.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMwNDgvMzUyNDA5LmpwZw==/original/VGOB2a.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMwNDgvMzUyNDEwLmpwZw==/original/Qv66ZZ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMwNDgvMzUyNDExLmpwZw==/original/W%2F%2BGO3.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMwNDgvMzUyNDEyLmpwZw==/original/EcJ2Ly.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMwNDgvMzUyNDEzLmpwZw==/original/zF%2FSS8.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMwNDgvMzUyNDE0LmpwZw==/original/s%2Fb3nP.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMwNDgvMzY0OTYyLmpwZw==/original/rKWjVV.jpg]]
<h3>Intro:</h3>
<p>This is a top-down fantasy 8px tileset made by me! I hope you like it! It features a 4 colour palette and could work for zelda-like, rogue-like, and any other top-down type game! Please enjoy it!<br></p>
<p><br></p>
<p><br></p>
<figure><img src="https://img.itch.zone/aW1nLzU5NDgxMDUuZ2lm/original/PNNzl0.gif" loading="lazy"><br></figure>
<h3>Includes:</h3>
<ul><li>An animated player character </li><li>15+ Enemies<em></em><em><em><em></em></em></em></li><li>25+ Items <em> </em></li><li>Multiple Wall types</li><li>Doors & Stairs</li><li>Furniture</li><li>Basic UI</li><li>Font</li><li>Status Icons</li><li>Basic FX</li></ul>
<p> <br></p>
<p><em><img src="https://img.itch.zone/aW1nLzU5NDgwOTguZ2lm/original/sxMdWf.gif" loading="lazy"></em></p>
<h3>LICENSE:</h3>
<ul><li>This is under the <span class="">Attribution 4.0 International</span> <span class="">(CC BY 4.0) License!</span></li><li><span class=""></span>You can use it in personal and commercial projects with attribution! </li><li>You can alter the tileset to suit your needs!</li><li>BUT, You <strong>cannot </strong>resell or redistribute this tileset.</li></ul>
<h3></h3>
<h3></h3>
<h3></h3>
<h3> </h3>
<h3><img src="https://img.itch.zone/aW1nLzU5NDgxNTEuZ2lm/original/Ev3CM5.gif" loading="lazy"></h3>
<h3>FINAL NOTE:</h3>
<figure><img src="https://img.itch.zone/aW1nLzU5NDgwNjYucG5n/original/w8pejt.png" style="color: inherit; font-size: inherit" loading="lazy"></figure>
<h3><img src="https://img.itch.zone/aW1nLzU5NDgxMjEuZ2lm/original/auvgmU.gif" loading="lazy"> <img src="https://img.itch.zone/aW1nLzU5NDgxMjMuZ2lm/original/znvvEn.gif" loading="lazy"> <img src="https://img.itch.zone/aW1nLzU5NDgxMTkuZ2lm/original/8Ci3mp.gif" style="color: inherit; font-size: inherit" loading="lazy"><span></span></h3>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MDg0OS82MTg4OTU0LmdpZg==/original/xPO54h.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MDg0OS81OTQ0ODc4LnBuZw==/original/mA1GX5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MDg0OS81OTQ0ODc3LnBuZw==/original/LYNMZN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MDg0OS81OTQ0ODc2LnBuZw==/original/LfrKIw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MDg0OS81OTQ0ODc0LnBuZw==/original/Pcdlth.png]]
<h4>Description:</h4>
<p>Made this during my game development class for an assignment.</p>
<p>This is a text adventure game where you explore a "living" dungeon defeating otherworldly beasts, and avoiding deadly traps<br>on a journey to discover the legendary Golden Coins and defeat the Necromancer.</p>
<h4>Plot:</h4>
<p>May 5th, 1394:</p>
<p>You are the Royal Guard for the King.</p>
<p>You're rushing down a long, dark path on your horse.<br>There's been a dramatic turn of events.<br> <br>You recently got a letter from the King, stating that the kingdom is in need of your services.<br>It's been under attack by paranormal beings beyond this material world.<br>After many weeks, the King was informed of the location of these beings.</p>
<p>A large dungeon was identified as being the main home for all these ghastly beasts roaming the kingdom.<br>This specific dungeon is a magical dungeon, which has a life of its own.<br>It builds itself around any living inhabitants and summons beasts, items, traps, and locations.<br>The dungeon also inhabits faeries that have magical healing properties.</p>
<p>As sworn Royal Guard for the King, you must protect the kingdom from these beasts by slaying them in this living dungeon.</p>
<p>You have also heard of a mythic legend where golden coins were placed in special locations all over the dungeon.<br>These coins give the possessor immense boosts of strength. They also will lead you to a 'mystic figure' that rules the dungeon.<br>Defeat the figure, and you will be able to escape from the dungeon.<br>The legends also hinted at an 'apocalyptic event' that would happen afterward, but they weren't specific.</p>
<p>After hearing that, you took your sword, your shield, and your horse down this dark passage.</p>
<p>You stand before a mighty doorway. You go towards it, but you are unsure if you are ready.</p>
<h4>Features:</h4>
<p>- Completely randomized: All encounters are not the same on each playthrough.<br>- The dungeon is alive: The dungeon evolves and gets larger as you play. The dungeon is endless up until you finish the game.<br>- Expansive: Many monsters, traps, and items to find in the living dungeon.<br>- Multiple difficulty levels: Test your luck in multiple difficulty levels that add or remove challenge from the gameplay.<br>- Simplistic combat system: Battle enemies by attacking, dodging, and blocking. Dodge smaller enemies and block larger ones.<br>- Made in 2 weeks: This game was developed from start to finish in 2 weeks.</p>
<h4>Other info:</h4>
<p>Codename: Star Dancer</p>
<p>Source code (LGPL v3): <a href="https://github.com/BitlDevelopmentStudios/Dungeonblade-Haunted-Kingdom" target="_blank" rel="nofollow noopener" referrerpolicy="origin">https://github.com/BitlDevelopmentStudios/Dungeonblade-Haunted-Kingdom</a></p>
<p>Report bugs here: <a href="https://github.com/BitlDevelopmentStudios/Dungeonblade-Haunted-Kingdom/issues" rel="nofollow noopener" referrerpolicy="origin">https://github.com/BitlDevelopmentStudios/Dungeonblade-Haunted-Kingdom/issues</a></p>
<p>Pre-Release builds are accessible through the itch.io app. Multiple versions are available by installing the "Pre-Release" build. After that right click, select "Manage", select the pre-release build, then click on "Switch to previous version". </p>
<h4>Source Code License:</h4>
<p><img src="https://www.gnu.org/graphics/lgplv3-with-text-154x68.png" loading="lazy"><br></p>
<p>Dungeonblade - Haunted Kingdom is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.</p>
<p>Dungeonblade - Haunted Kingdom is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.</p>
<p>You should have received a copy of the GNU Lesser General Public License along with this program. If not, see <a href="https://www.gnu.org/licenses/" rel="nofollow noopener" referrerpolicy="origin">https://www.gnu.org/licenses/</a>.</p>
<p><strong><a href="https://github.com/BitlDevelopmentStudios/Dungeonblade-Haunted-Kingdom" rel="nofollow noopener" referrerpolicy="origin"></a></strong></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzc0OTk2LzQzNzE3NTMucG5n/original/cJM4Wy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc0OTk2LzQzNzE3NTAucG5n/original/DxSFW%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc0OTk2LzQzNzE3NTIucG5n/original/jfEEvg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc0OTk2LzQzNzE3NTEucG5n/original/UmjzaY.png]]
<p><strong><em>DW</em></strong> is an adventure/RPG about a world full of drawings. Jake, a human teenager, wakes up one day to find himself stranded in this world. Before long, its local police place him under arrest. His crime? Being human. With nothing but a mysterious paint brush at your disposal, escape the police and explore the colorful world of DW in your journey to find a way back home. But be careful; there are those who would stop at nothing to find a human being and use him for their own purposes...</p>
<p><strong>FEATURES</strong></p>
<ul><li>Six chapters, each with their own unique and open locales to explore.<br>
</li><li>A multitude of side quests, all of which are tied to your growth as you play.<br>
</li><li>Several disguises that give you access to new abilities.<br>
</li><li>Decision-based battle system in which you'll have to use any and all tricks at your disposal to get the upper hand.<br>
</li><li>A story-focused experience with a wide cast of characters.<br>
</li><li>Anti-grinding gameplay. Every battle is a part of the story and side quests in some way.<br>
</li><li>Developer commentary mode.
</li></ul>
<p><strong></strong></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/x3LXFOiJvO4" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAxMDc3My81NzU4ODA4LnBuZw==/original/dGN3uV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxMDc3My81NzU4ODA5LnBuZw==/original/4DXw2i.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxMDc3My81NzU4ODEyLnBuZw==/original/3g%2BIHc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxMDc3My81NzU4ODEzLnBuZw==/original/rGE4Dg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxMDc3My81NzU4ODE0LnBuZw==/original/PWudHn.png]]
<p>
Fast-paced Brick Breaker with addictive game play.<br>
Easy to Learn and play.
</p>
<p>
How to play<br>
Use the Mouse to move the paddle left or right<br>
Prevent the ball from falling through the bottom of the screen and destroy all the bricks to pass to the next level.
</p>
<p>
<a href="https://www.youtube.com/playlist?list=PL5t3l9AEg3EIzi3PsRbLOF7o6kZ8q_qH5" rel="nofollow noopener" referrerpolicy="origin">Demo Game Play</a>
</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzQyMjUvMzQzMTMwLnBuZw==/original/OeKrvm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQyMjUvMzQzMTMzLnBuZw==/original/CmkryA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQyMjUvMzQzMTM0LnBuZw==/original/URe18c.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQyMjUvMzQzMTM1LnBuZw==/original/2JqpJH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQyMjUvMzQzMTM2LnBuZw==/original/qzl2rt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQyMjUvMzQzMTM3LnBuZw==/original/z8J%2FVU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQyMjUvMzQzMTM4LnBuZw==/original/HDG7L0.png]]
<h3><p><em>"Dystopicon teaches you that capitalism sells you dreams at the price of nightmares</em>." - <a href="https://www.mundogamers.com/noticia-dystopicon-te-ensena-que-el-capitalismo-te-vende-suenos-a-precio-de-pesadillas.22216.html" target="_blank" rel="nofollow noopener" referrerpolicy="origin">MundoGamers</a></p>
<p><em>"Have you seen how few resources are needed to talk about capitalism, technological isolationism and the extreme individualization of a society in which communities are lacking?" - <a href="https://niveloculto.com/dystopicon-en-la-caja-tonta" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Nivel Oculto</a></em><br></p>
<p><em>"It’s an interesting little game with multiple endings and a offers a dark analogy for how governments (not just authoritarian ones) try to control the public via media. Will you be a bood, compliant citizen?" - <a href="https://www.freegameplanet.com/dystopicon-download-game/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Free Game Planet</a></em><br></p>
<p>"<em>Dystopicon: television, capitalism and dystopia</em>" - <a href="https://www.devuego.es/blog/2019/08/12/dystopicon-television-capitalismo-y-distopia/" rel="nofollow noopener" referrerpolicy="origin">DeVuego</a></p>
<p>"<em>Exploring the criticism of capitalism in Dystopicon</em>" - <a href="https://www.devuego.es/blog/2019/09/09/explorando-la-critica-al-capitalismo-en-dystopicon/" rel="nofollow noopener" referrerpolicy="origin">DeVuego</a></p>
</h3>
<p><br></p>
<p>EDIT: We want to know your opinion about the game. Could you fill out this anonymous survey?</p>
<p><a href="https://docs.google.com/forms/d/1_7m7dnLglS9VkOhskHZtd9icHWFUi-hwO7rL83RF3is/viewform?edit_requested=true" rel="nofollow noopener" referrerpolicy="origin">https://docs.google.com/forms/d/1_7m7dnLglS9VkOhskHZtd9icHWFUi-hwO7rL83RF3is/viewform?edit_requested=true</a><br></p>
<p>If you find any bug or problem please send us an email to games@over-software.com<br></p>
<p>---------------------------------------------------------------------------------------------</p>
<p>In Dystopicon the players will live in a dystopian society in which they receive money in exchange to watch TV. With that money they pay services to cover their basic needs. Throughout the game they will discover the details of this dystopia in which the government monitors your movements but gives you freedom of choice.<br></p>
<p>The story will be told through gameplay, texts and comics. Take your time to explore the different objects and the mechanics in your first day.</p>
<p>This game is inspired by the classic novels <em>1984</em>, <em>A Happy World</em> and <em>Ubik</em>.</p>
<p>If you find any bug or problem please send us an email to games@over-software.com<br></p>
<p>Thank you for playing Dystopicon!<br></p>
<p>Justice and work!</p>
<p>---------------------------------------------------------------------------------------------<br></p>
<p>Game design, code, music and story: J. Felipe Molina</p>
<p>2D art, and texts reviewer: Mario Alba</p>
<p>Languages available: English, Spanish<br></p>
<p>Presskit(): <a href="http://over-software.com/Presskit/sheet.php?p=dystopicon" rel="nofollow noopener" referrerpolicy="origin">http://over-software.com/Presskit/sheet.php?p=dystopicon</a></p>
<p>Follow us:<br></p>
<p>Twitter: <a href="https://twitter.com/OveR_Software" class="" rel="nofollow noopener" referrerpolicy="origin"><span class="" dir="ltr">@<span class="">OveR_Software</span></span></a><br>Facebook; <a href="https://www.facebook.com/OveRSoftware/" rel="nofollow noopener" referrerpolicy="origin">https://www.facebook.com/OveRSoftware/</a></p>
<p>Website: <a href="http://www.over-software.com" rel="nofollow noopener" referrerpolicy="origin">http://www.over-software.com</a></p>
<p>Important! <br></p>
<p>If you have problems to unzip and run the application on Mac, try another compression program.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/xUo6owPP2rQ" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjQyNjUxLzIxMTM1ODMuZ2lm/original/%2F3PAcv.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQyNjUxLzExNzIxNjQuanBn/original/IR2moq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQyNjUxLzIxMTM1MDAuanBn/original/%2BbHFFf.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQyNjUxLzExNzIxNjcuanBn/original/7nyY1G.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQyNjUxLzExNzIxNjguanBn/original/Uh0%2FF2.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQyNjUxLzIxMjcxNDcuanBn/original/oWa0ZX.jpg]]
<p><em>we’re a group of hungry friends, ready to journey to the best buffet around: the eat-it-all. out on the strip by i-93, the eat-it-all has the most luxurious food selection anyone has ever seen. for only $10.99, it’s an absolute steal. the only snack we have is a big bag of rainbow fortune cookies from the last time we went, and it’s tradition to take turns eating and reading the fortunes while we walk. the fortunes always light the way to that glorious sushi french toast at the eat-it-all. yum!</em><br></p>
<p>eat-it-all is an improvisational storygame by arya & nestgoblin. it's designed for 2-6 people to play in the span of 30 minutes to a couple hours. there's no game master, just fortune cookies to inspire the journey. we hope you enjoy :)<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzIzNTU5LzQwMTMwOTYucG5n/original/etcFtw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzIzNTU5LzQwMTMxMzcuanBn/original/DXWnzf.jpg]]
<p><em></em>Eatvolve is an evolutionary eat-em-up, elevating a lowly worm to the ultimate hybrid organism by gobbling up other critters - and stealing their unique abilities! Freely explore a colourful world of adorable, edible animals and combine their powers to find new ways to get around, powerful attacks, and more. Be careful, though: only one species can be the pinnacle of evolution, and competition is fierce!<br><span></span></p>
<p>many controllers are supported, </p>
<p>wasd / arrow keys - Movement<br>E - Eat<br>S / Down Arrow - Dig<br>space - Attack<br>P / ESC - Pause menu</p>
<p>I have uploaded a new - in development build of Eatvolve priced at $5<br>I appreciate your support! this helps me to work on improving Eatvolve.<br>WARNING - There are many bugs in this version!<br><br>Once Eatvolve is complete, any purchase will have access to the full version!<br>I will also raise the price of Eatvolve at this time! </p>
<p><span></span></p>
<p>Music by coda - <a href="https://twitter.com/codatrigger" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/codatrigger</a></p>
<p>comments & suggestions welcome 😊<br><a href="https://twitter.com/papadar_" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/papadar_<br>https://discord.gg/DF7TZEr<br></a><br></p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODMzNjAvMjk4NzQ5NS5naWY=/original/Xu1QU0.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODMzNjAvMTIyMjg2My5wbmc=/original/Ox3oIj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMzNjAvMTIyMjg2MS5wbmc=/original/TAGF0h.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMzNjAvMTIyMjg2Mi5wbmc=/original/n7zxXd.png]]
<p>This is from the Disasterpeace Music Weeklies challenge. The challenge was to make a track for an existing OST and I picked The Division. I thought up this whole new activity in some non-existent patch where you climbed an endless dungeon tower. I called it Eclipse Protocol.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/bXanmwTKVi4" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1nLzU2NjMxMjEucG5n/original/ezE%2Bnu.png]]
<p><strong>EDDIE HILL in The Curse of the Skull Medallion</strong> is an hardcore platformer inspired by the likes of Celeste and Super Meat Boy.</p>
<p>In this adventure, Eddie must retrieve the Skull Medallion sitting atop a mountain walled by a perilous jungle and an ancient temple full of dangers.</p>
<p>The levels in this game were designed by students during a level design workshop I held in March 2021.</p>
<p><strong>Features:</strong><br><img src="https://img.itch.zone/aW1nLzU1MTcyOTgucG5n/original/SuRO%2FE.png" loading="lazy"> 16 levels split in 3 worlds.<br><img src="https://img.itch.zone/aW1nLzU1MTcyOTgucG5n/original/SuRO%2FE.png" loading="lazy"> Collectibles<br><img src="https://img.itch.zone/aW1nLzU1MTcyOTgucG5n/original/SuRO%2FE.png" loading="lazy"> A SpeedRun mode.<br><img src="https://img.itch.zone/aW1nLzU1MTcyOTgucG5n/original/SuRO%2FE.png" loading="lazy"> Loads of deaths<br><img src="https://img.itch.zone/aW1nLzU1MTcyOTgucG5n/original/SuRO%2FE.png" loading="lazy"> Spikes<br><img src="https://img.itch.zone/aW1nLzU1MTcyOTgucG5n/original/SuRO%2FE.png" loading="lazy"> Bad jokes</p>
<p><strong>Default Controls:</strong><br></p>
<figure><img src="https://img.itch.zone/aW1nLzU1MjA4MTYucG5n/original/9oZoWZ.png" loading="lazy"> / <img src="https://img.itch.zone/aW1nLzU1MjA4MTcucG5n/original/efvlQ%2F.png" loading="lazy"> Movement<br><img src="https://img.itch.zone/aW1nLzU1MjA3ODcucG5n/original/DtoF2I.png" loading="lazy"> / <img src="https://img.itch.zone/aW1nLzU2MTQ2NDAucG5n/original/c%2Bh9g9.png" loading="lazy"> Jump, <img src="https://img.itch.zone/aW1nLzU1MjA4MDQucG5n/original/rO%2Btyf.png" loading="lazy"> to jump further<br><img src="https://img.itch.zone/aW1nLzU1MjA4MTgucG5n/original/8GH8q9.png" loading="lazy"> / <img src="https://img.itch.zone/aW1nLzU2MTQ4MDgucG5n/original/iORLap.png" loading="lazy">Dash + <img src="https://img.itch.zone/aW1nLzU1MjA4MjkucG5n/original/YTWLm4.png" loading="lazy"> / <img src="https://img.itch.zone/aW1nLzU1MjA4MzQucG5n/original/aFmaj9.png" loading="lazy"> for Dash Direction<br><img src="https://img.itch.zone/aW1nLzU1MjA4NDYucG5n/original/emoYmk.png" loading="lazy"> / <img src="https://img.itch.zone/aW1nLzU1MjA4NTAucG5n/original/fm2aBv.png" loading="lazy"> Pause<br><img src="https://img.itch.zone/aW1nLzU1MjA4NTMucG5n/original/Lwq7sy.png" loading="lazy"> / <img src="https://img.itch.zone/aW1nLzU1MjA4NTYucG5n/original/1F6x2k.png" loading="lazy"> Cancel<br></figure>
<p><strong>Soundtrack :</strong></p>
<p><iframe src="https://audiomack.com/embed/album/dustin-680/eddie-hill-in-the-curse-of-the-skull-medallion-original-game-soundtrack?background=1" scrolling="no" width="100%" height="400" frameborder="0"></iframe></p>
<p><strong>Follow us :</strong></p>
<p>Gameinaframe :<br>twitter : <a href="https://twitter.com/gameinaframe" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/gameinaframe<br></a>Discord : <a href="https://discord.gg/rdG8Wh7" rel="nofollow noopener" referrerpolicy="origin">https://discord.gg/rdG8Wh7</a><br><br>Vincent Joyau (Design, Art, Dev) : <a href="https://twitter.com/VJoyau" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/VJoyau</a><br>Dustin Crenna (Composer) : <a href="https://twitter.com/Crebbs" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/Crebbs</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/yyufmGmPv14" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTcxMDc3LzU1MjAxNzUucG5n/original/T6kr3w.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTcxMDc3LzU1MjAxNzYucG5n/original/DWvp3a.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTcxMDc3LzU1MjAxNzcucG5n/original/wHVRV%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTcxMDc3LzU1MjAxNzgucG5n/original/hYuH4K.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTcxMDc3LzU1MjAxNzkucG5n/original/E8CCcN.png]]
<p><em>An old nightmare returns.</em></p>
<p>Solana Academy is a prestigious all-girl boarding school in a remote corner of Japan. Despite its distance from major cities, it never wants for students or funding.</p>
<p>However, the ideal school life at Solana Academy is disrupted by the sudden appearance of grotesque monsters from the formerly sealed-off old dormitory. A chance discovery of magical “petals” leaves four students as the only line of defense against this threat. But as the girls investigate the old dormitory for a way to be rid of the monsters, they begin to uncover a sinister truth regarding their school…</p>
<p><em>This story is continued in <a href="https://jackkel-dragon.itch.io/eldritch-university" target="_blank">Eldritch University</a>.</em></p>
<hr>
<h2>Features</h2>
<ul><li>A romance/paranormal thriller visual novel with horror elements. Yue's choices determine who she becomes close to as she investigates the secrets of her school.</li><li>Three dateable characters and five total ending routes. And if Yue is not careful with her choices, she may not even survive the ordeal.</li><li>A series of bonus stories after completing the main game. These stories expand on certain endings or characters, or explain details that were kept hidden in the main story.</li></ul>
<hr>
<h2>Characters</h2>
<h3>Yue Ishikami</h3>
<p>A first-year at Solana Academy that has few friends due to her abrasive and standoffish personality. She tends to discount the worth of others, assuming herself to be smarter or more knowledgeable. Bad experiences in the past have turned Yue away from looking for friends and made her wary of "nerdy" activities like cosplay.</p>
<h3>Akomi Miyazaki</h3>
<p>Akomi is known for two things: enjoying food and making perverted comments. She seems to be able to make a lewd joke from just about anything, even making attempts when the result isn't particularly funny. While she rarely ventures into outright harassment, Akomi is still avoided by most other first-years.</p>
<h3>Cho Fukuda</h3>
<p>Some of the other first-years at Solana Academy assume Cho is a tomboy because she wears the uniform pants, not realizing that she converted most of her skirts into costume parts. Cho has a fairly naive view on how people should behave, which can cause friction with more cynical or realist classmates like Yue.</p>
<h3>Kagami Nakayama</h3>
<p>A first-year student that often wears a scarf, even when it isn’t cold. Kagami is usually quiet, and when she does talk she tends to use formal address and a carefully selected vocabulary. Because of the otherwise relaxed environment at Solana Academy, other students can find Kagami's formality uncomfortable.</p>
<h3>Kasumi Kawamura</h3>
<p>A first-year student at Solana Academy that prefers spending time with her friends to studying. She has a reputation for being an airhead, as her lack of focus often leaves her falling behind in class and ignoring social cues. She spends a lot of time with Yue, to the latter's annoyance.</p>
<h3>Misaki Asahara</h3>
<p>A second-year at Solana Academy. Misaki has known Kasumi for years, and they have recently begun dating. She is outgoing and friendly, always looking for new friends.</p>
<h3>Junka Fujikawa</h3>
<p>An instructor at Solana Academy. While young, she is a competent teacher and does her best to make sure her students do well in their classes. Outside of teaching, she has a lot less experience.</p>
<h3>Machi Hirata</h3>
<p>The school nurse at Solana Academy. While she acts cold and cynical, she doesn’t hesitate to help students that come to her for treatment. She is a lot younger than her personality would suggest.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/4XDGd3XAVlg" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTk1NjM1LzU0MjM0MjIucG5n/original/87mR7Y.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTk1NjM1LzU0MjM0MjMucG5n/original/TNm6eW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTk1NjM1LzU0MjM0MjUucG5n/original/IqzWVy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTk1NjM1LzU0MjM0MjYucG5n/original/blsSmV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTk1NjM1LzU0MjM0MjQucG5n/original/y9j8q4.png]]
<p>Royal courts: we all know them, we all want them to cede control of their holdings to the people. But things after the Feyschism are not so easy. The Feyfolk have been rocked to their very core as the rules they lived by – their Oaths and Protocols – simply... didn't apply anymore. But that's not all. The conflict between angels and fiends is shifting rapidly, as both sides try to force a change in the very nature of battlefields. A group of upstarts that most people are <em>pretty</em> sure used to be a blasphemous cult are stepping into the polite company, still smelling vaguely of fish and blood. And the newest Lord Speaker of the Chronal Peerage seems less interested in non-intervention and more in rewriting time and space according to their whim.</p>
<p>You're probably wondering things like "Who are Feyfolk? What exactly was the Feyschism? Did you say 'angels'?" Those are all excellent questions.
</p>
<p>This booklet provides both the players and the GM with some additional goodies to include in the game. Specifically:
</p>
<ul><li>18 New (dare I say improved? no) Backgrounds
</li><li>18 New Enemies to chat up and/or smash down
</li><li>Rules for Status Combat. It's like violence, but with words!
</li></ul>
<p>and, of course
</p>
<ul><li>6 Eldritch Courts of Some Repute<br><br>
</li></ul>
<p>Written for the TroikaFest! 2021 game jam, <strong><em>Eldritch Courts of Some Repute</em></strong> is an independent production by Alan Szczepańczyk (<a href="https://twitter.com/alanoftrades" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Alan of All Trades</a>) and is not affiliated with the Melsonian Arts Council.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNDkyOS81NzgxMzE5LnBuZw==/original/FfpQHE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNDkyOS81NzgxMjc4LnBuZw==/original/ds3O7G.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNDkyOS81NzgxMjgwLnBuZw==/original/YABCvp.png]]
<p><br></p>
<p><br></p>
<p>Elephants are being hunted to extinction by devious hunters. Do your duty and put a stop to it with your trusty space laser!</p>
<p>As you progress in your defence of the kind-natured pachyderms unlock and upgrade five extra tools to help in your mammoth task. You'll need them as hunters never play fair!</p>
<p>This is my first release on Itch so please let me know if you encounter any bugs!</p>
<p><strong>Controls:</strong><br></p>
<ul><li>Look around with the [Mouse]</li><li>Fire Laser/Use Ability with the [Left Mouse button]</li><li>Select Ability with [Number] keys</li><li>Access Pause menu with [Escape] key</li><li>Mute sound with [M] key</li></ul>
<p><br></p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjY4Mzg4LzEyOTQ1OTUucG5n/original/WZAT3x.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4Mzg4Lzc1MjgxMDIuZ2lm/original/nKXknv.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4Mzg4LzE4NDA4MDcuZ2lm/original/plzzMC.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4Mzg4LzE4NDA4MDguZ2lm/original/Ma0RDd.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4Mzg4LzEyOTQ1OTYucG5n/original/dqTz74.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4Mzg4LzEyOTQ1OTcucG5n/original/xXW384.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4Mzg4LzEyOTQ1OTgucG5n/original/cWt4ba.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4Mzg4LzEyOTQ1OTkucG5n/original/abQnYx.png]]
<p><img src="https://img.itch.zone/aW1nLzQ3MjY1MzEucG5n/original/7aBotX.png" loading="lazy"></p>
<p><em><br></em></p>
<p><em>It's said that somewhere, hidden from all but the most determined explorers, there is a miniature world where one may go to escape the worries of life. After falling from the sky, you've found yourself in that very same miniature world. But now that you're there, can you ever return home again? <br></em></p>
<p><em>Snorri, the resident Wizard of the miniature world, has told you of a mysterious Tower in the Sky above his shop. Perhaps if you can collect enough Gems, you can reach the Tower, and with any luck, get back home!</em></p>
<p><strong><em>Elephantasy</em></strong> is a small exploratory puzzle-platforming game where you play as a tiny Elephant trying to get back to their home. Collect hidden Gems to raise your Rank, borrow Items from Snorri the Wizard, explore a vast and varied pixel-art world, meet a colourful cast of characters, and more! While exploring the miniature world, you'll discover a wide array of unique rooms and puzzles to solve using your Items, all of which give you various abilities; grow vines to reach high places, dash over seemingly bottomless pits, dive into uncharted waters, and lift the heaviest obstacles with ease! But beware; there are also strange and powerful beings in this magical world, many of whom won't give up their Gems willingly! It'll take all of your abilities, wits, and skill to gather enough Gems to reach the Tower!</p>
<p><em><strong>Features</strong></em><em><strong>:</strong></em></p>
<ul><li>Charming pixel-art characters, items, and environments</li><li>350+ unique rooms to discover</li><li>6+ Distinct areas to explore</li><li>A vast assortment of NPCs to meet and talk with</li><li>36 Gems to collect, in addition to other secrets</li><li>Multiple endings</li><li>4 Boss encounters (3 of which are optional)</li><li>Game speed settings, to allow players to set their own pace while exploring</li></ul>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzQ3MjcwMDUucG5n/original/dr7FGw.png" loading="lazy"><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODQzMTExLzQ3MjY4NjUucG5n/original/jRPMj7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQzMTExLzQ3MjY4NjYucG5n/original/Jqkx1r.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQzMTExLzQ3MjY4NjQucG5n/original/GuDkfr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQzMTExLzQ3MjY4NjcucG5n/original/7Q73%2BL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQzMTExLzQ3MjY4NjgucG5n/original/cT84a%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQzMTExLzQ3MjY4NzIucG5n/original/p49TrY.png]]
<p>There is a treasure hidden in the catacombs below the ancient city of Capath, and Kettec is intent on uncovering it. His friends however, would say this obsession is merely a way for Kettec to escape his problems with people. <br></p>
<p>And Kettec’s life is about to get more complicated, thanks to one Mell Wess. Arriving from another continent, Mell has assumed a powerful lordship and struggles to discern where his loyalties lie.
</p>
<p>Mell and Kettec are attracted inexorably to one another, but to survive, the pair will have to navigate the twisted underground passages and the equally warped government of Capath. Even if they are able to escape these trials, a greater disaster looms...
</p>
[img width=500 [https://img.itch.zone/aW1nLzMxODY1MTguanBn/original/ZsZjYW.jpg]]
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ5NzIxMTkucG5n/original/486dqQ.png" loading="lazy"><br>Welcome to the open world, mini-metroidvania of your dreams.</p>
<p>You wake in a circle of speaking stones, in a strange sunless land filled with ruins and monsters. You remember going to sleep, back in your world, on a hill near the cresting lights. Some called it a faerie hill, and warned of kidnapping and dancing and taken to the land of the good folk, the grey folk, the faeries.<br></p>
<p>But there are no fair folk here, it is empty and lonely and littered with hollow bones. You have only one thought: to return back home. But how? How. The experience is beautiful and immersive. Expect to get lost, and love finding the interesting places you discover.</p>
<p>This game has:</p>
<p>-Non-linear layout. Defeat any boss in any order you like. Find any item in any order you like. Solve puzzles using whatever tools you have on hand.<br>-No health bar. You fade away each time you get hit, until you completely disappear<br>-Only two items. One for each hand, each time you want a new one, you have to drop an old one. This leads to interesting strategy and puzzle solving<br>-You can pick up anything and use it as an item<br>-Speed run and game challenge tools. Press escape, turn on the speed run timer or the kill count timer. Try beating the game with 0 kills! It's hard, but not impossible. Or beat the game with only 5 kills. Or 100! <br>-Multiple different ways to solve each puzzle in the game. This allows players to find their own way.<br>-Controller support (tested on 8bitdo controllers, Xbox, and PS3/4)<br>-A full Day/Night cycle<br>-A weather cycle including fog, rain, overcast<br>-About 2-4 hours of gameplay, but a speed run can be as quick as 30 minutes<br>-Four bosses. Three bosses hidden throughout the land and one final boss.</p>
<p><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ5NzIxMjAucG5n/original/vfRIGR.png" loading="lazy"></p>
<p><br></p>
<p>The Items you can find:<br> <img src="https://img.itch.zone/aW1nLzQ5NzIxODQucG5n/original/RKmyvX.png" loading="lazy">Lantern. Hold down the button to create light in dark places<br></p>
<figure><img src="https://img.itch.zone/aW1nLzQ5NzIyMTMucG5n/original/Qe37UR.png" loading="lazy">Bow. Fire arrows that can be stuck in walls. These arrows can be stood on<br></figure>
<figure><img src="https://img.itch.zone/aW1nLzQ5NzIyMDMucG5n/original/MKyH5P.png" loading="lazy">A quiver of arrows. Allows you to hold more arrows<br></figure>
<figure><img src="https://img.itch.zone/aW1nLzQ5NzIyNTEucG5n/original/1EFgop.png" loading="lazy">A stray arrow to add to your quiver.</figure>
<figure><img src="https://img.itch.zone/aW1nLzQ5NzIyMTgucG5n/original/YD82YF.png" loading="lazy">A hollow bone. ???????</figure>
<figure><img src="https://img.itch.zone/aW1nLzQ5NzIyMjQucG5n/original/Id%2FhaO.png" loading="lazy">A hollow skull. ????????</figure>
<figure><img src="https://img.itch.zone/aW1nLzQ5NzIyMzcucG5n/original/Jt%2FZpn.png" loading="lazy">A wand to summon vines. Hold down on the button to make vines grow.</figure>
<figure><img src="https://img.itch.zone/aW1nLzQ5NzIxODUucG5n/original/IMtlBA.png" loading="lazy">Wear this ring to summon the rain<br></figure>
<figure><img src="https://img.itch.zone/aW1nLzQ5NzIyMTYucG5n/original/y4zVa%2F.png" loading="lazy">Wear this ring to summon the fog</figure>
<p> <img src="https://img.itch.zone/aW1nLzQ5NzIyMjgucG5n/original/W7utx%2B.png" loading="lazy">A potion. ?????? Drink and find out</p>
<p><img src="https://img.itch.zone/aW1nLzQ5NzIyMzAucG5n/original/ULa1dH.png" loading="lazy">A potion. ?????? Drink and find out</p>
<p><img src="https://img.itch.zone/aW1nLzQ5NzIyMzMucG5n/original/83F5An.png" loading="lazy">A potion. ?????? Drink and find out</p>
<p><img src="https://img.itch.zone/aW1nLzQ5NzIyMzQucG5n/original/3Nu3MU.png" loading="lazy">A potion. ?????? Drink and find out</p>
<figure><img src="https://img.itch.zone/aW1nLzQ5NzIyMzUucG5n/original/KjNjhN.png" loading="lazy">Magical wings. Fly and be free!</figure>
<p><img src="https://img.itch.zone/aW1nLzQ5NzIyMzkucG5n/original/qqaFTa.png" loading="lazy">Haunted bones. Hold down on button to summon a ghost shield</p>
<figure><img src="https://img.itch.zone/aW1nLzQ5NzIyNDUucG5n/original/3%2FQhRA.png" loading="lazy">The lost sword of the Hollow Prince. Rumored to be magical.</figure>
<p>And a few items not listed here. If you see something, try to pick it up and find out!</p>
<p></p>
<p class="text-center"><br><img src="https://img.itch.zone/aW1nLzQ5NzIxMjAucG5n/original/vfRIGR.png" loading="lazy"><br><br></p>
<p>keyboard Controls:<br><img src="https://img.itch.zone/aW1nLzQ5NzIxMDIucG5n/original/sXfAAw.png" loading="lazy"><br></p>
<p>Switch Joycoon/8Bitdo controls:<br><br><img src="https://img.itch.zone/aW1nLzQ5NzIxMTEucG5n/original/zKiyEa.png" loading="lazy"></p>
<p>PS3/PS4 Controls:<br><img src="https://img.itch.zone/aW1nLzQ5NzIxMTYucG5n/original/E%2FhMAM.png" loading="lazy"><br><br>The game takes notes from original Legend of Zelda, the Castlevania franchise, Metroid, Ico, and Shadow of the Colossus.<br><br>This game is available on Windows, OSX, and Linux</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/oTwxd_stPqc" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTk1OTM0LzM5MDc5ODYucG5n/original/YJwkBp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1OTM0LzM5MDc5OTAucG5n/original/mY%2F9Pe.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1OTM0LzM5MDc5OTMucG5n/original/fGivEL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1OTM0LzM5MDc5OTcucG5n/original/oCYmtL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1OTM0LzM5MDc5OTkucG5n/original/LN25kj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1OTM0LzM5MDgwMDMucG5n/original/B8dmIG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1OTM0LzM5MDgwMDUucG5n/original/cCDa4v.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1OTM0LzM5MDgwMTgucG5n/original/5gR0Ot.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1OTM0LzQwNTQ2MDIucG5n/original/55WZ0J.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1OTM0LzQ4NzE5OTEucG5n/original/liJp4c.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1OTM0LzM5MDgwMzEucG5n/original/WjGpiO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1OTM0LzM5MDgwMzQucG5n/original/FMRPhe.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1OTM0LzM5MDgwNDIucG5n/original/L8SM1H.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1OTM0LzM5MDgwMzYucG5n/original/26jik7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk1OTM0LzM5MDgwNDEucG5n/original/qLkpjx.png]]
<p><em>You and your compatriots have united around a common goal in service of your liege, the Queen of Hearts: liberate Le Palais de L’Amour, so that the people of your land may unfreeze their hearts and find romance again. Successfully besieging Le Palais will benefit each one of you, but the Queen has promised special influence and favor to whoever blossoms most under her adoring gaze.</em></p>
<p><em></em></p>
<p>♥
</p>
<p><em><br></em></p>
<p><em>Enchantement, Vanité, & Tendresse </em>is a romantic new take on Tyler Crumrine’s map-labeling game <em>Beak, Feather, & Bone, </em>inspired by Georg Matthaüs Seutter’s “Allegorical Map of the Siege of the Castle of Love,” published in 1735.
</p>
<p>Players start with an unlabeled map of a besieged heart, and are assigned community roles that represent the stakeholders in the battle for Le Palais de L’Amour — the Castle of Love.
</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTYzMjIzLzU0NjUxNjYuanBn/original/3lMwhM.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYzMjIzLzU0NjUyMTAucG5n/original/V3wiOd.png]]
<p>What do you do when someone that you’ve cared about forever is destroying themselves? What do you do when you’re being told there’s only one way to move forward but you know it’s at your own expense? How do you negotiate your way to happiness? Is someone else’s trust a gift or a responsibility, and how much can you accept?</p>
<p><em>Enter, Patrocles</em> is a two-player game about giving bits of your trust to another person so that you can save each other. It was inspired by the song <em>Achilles Come Down</em> by Gang of Youths, and it was written for the The No GMs, No Settings, No Campaigns Jam, by Kazumi Chin and Wild Woods Games.</p>
[img width=500 [https://img.itch.zone/aW1nLzYxMzUzOTgucG5n/original/Lh%2FCKI.png]]
<h4 class="text-center">Prologue & Chapters One - Five out now! </h4>
<p class="text-center"><a href="https://www.kickstarter.com/projects/lunarisgames/errant-kingdom" rel="nofollow noopener" referrerpolicy="origin">Kickstarter successfully funded</a></p>
<p>Errant Kingdom was previously being released in an episodic format but the final three chapters will be released in one go with the completed game in 2022. We are aware of a number of issues that prevent a lot of users from running the game smoothly (specifically Mac users) so we've been working hard on transferring the game to another engine to ensure everyone can play without issue! </p><p>You can currently download the prologue and chapters one-five, but please be aware that you may encounter some problems with playing the game smoothly because of those issues previously mentioned. You can keep up with the progress of us completing the game on our devlogs which we try to update each month, but as we're a tiny team (now of 3 working on this particular game) we ask for and hugely appreciate your patience!</p><p>Your purchase will give you access to the download of the currently available chapters and <strong>all</strong> subsequent updates for no additional cost. (Ever!)</p>
<figure><img src="https://img.itch.zone/aW1nLzM2OTg1MzgucG5n/original/%2FGONq5.png" loading="lazy"></figure>
<p><strong>Errant Kingdom</strong> is a queer, high-fantasy visual novel for PC, Mac, and Linux. The Kingdom of Novus has been thrown into disarray, and it's up to you to decide if you’ll help to bring peace, or if you’ll stoke the fires of chaos. Enter a high fantasy world steeped in political intrigue; where magic touches the land and blood turns the wheels unseen. Dishonour & betrayal. Hope & despair. Pick a side, and meet your match.</p>
<p>Errant Kingdom is a story with darker elements at play. As a denizen of the kingdom of Novus, you're at the heart of watching history unfold before your eyes. Whether you see its rise or fall, however, is up to you. There are those who will help you in your endeavors along the way, and might even find themselves enamored with you. Though, it is also possible to earn their ire should your plans be devious. Only <em>you</em> will influence how the story evolves, and the most important moves to make are yours, and yours alone.</p>
<p>Errant Kingdom features three playable protagonists with no fixed portrait, leaving players free to imagine their character as they see fit. Each playthrough has the potential to be vastly different, depending on your choices, your actions, and the way you interact with those around you. </p>
<p><em>Errant Kingdom is Rated M17 for explicit language, violence, and sexual themes. </em><em>The game is made with the Unity engine.</em></p>
<p><img src="https://img.itch.zone/aW1nLzM2OTg1NzcucG5n/original/RVpAjS.png" loading="lazy"><br></p>
<p><strong>THE AMBASSADOR </strong></p>
<p>You're a revered noble from Vih'thris chosen by your King to serve as an Ambassador to the kingdom of Novus. Previous meetings between you have made you see eye to eye, and you've managed to establish a friendly, but tenuous alliance. While newly immersed in the court of Novus, you advocate for the betterment of both kingdoms. However, though you may serve the realm, you also serve the people. The assassination attempt puts into question both the King & Queen's ability to rule and their integrity. It's up to you to decide how you will proceed. </p>
<p><strong>THE KNIGHT</strong></p>
<p>You've been sent to Novus from the neighboring kingdom of Vih'thris as a show of good faith between rulers. Hand-picked by your king, your reputation as a knight proceeds you, and you've been charged to serve Novus and its inhabitants in the name of glory. The reception to your arrival has been promising, but following an attempt on the lives of Novus' rulers, everything has been thrown into chaos. You've sworn to protect Novus with your life, but are you happy to serve the sometimes bloody hands that rule?<br></p>
<p><strong>THE NOMAD</strong></p>
<p>By the order of a high-ranking associate in your hometown, you find yourself stationed in Novus; a kingdom that has a grudge against its newly appointed rulers. As a small rebellion threatens to find its footing, you plant yourself amongst the 'normal folk' to cause chaos. Though, it is up to you to decide if you will stoke those fires of rebellion, or if you'll douse them and reduce them to ash. <br></p>
<p><img src="https://img.itch.zone/aW1nLzM2OTg2MTAucG5n/original/M11cSh.png" loading="lazy"><br></p>
<p><strong>NO-ROMANCE ROUTE</strong></p>
<p>We want to give those who might not be interested in pursuing a romance the chance to comfortably enjoy the game. You can play the game without having to select any flirt options or enter a relationship whilst still experiencing the story in-full.<br></p>
<p><strong>REPUTATION</strong></p>
<p>Depending on your choices and actions throughout the game on our dialogue wheel your reputation will fluctuate. This system will allow players to unlock special dialogue options and experiences that will influence the reactions of those around you, all tailored around the choices you make, just like in your favorite RPGs!<br></p>
<p><strong>QUESTS (Coming Summer 2021)</strong></p>
<p>In Novus' town square you'll find a quest board where you can pick up additional mini-quests for added gameplay. You'll get the chance to embark on some weird and wonderful journeys in addition to the main storyline. Though, you'll have to wade through the letters of complaint, petty disputes between townsfolk, and lonely hearts adverts first...<br></p>
<p><strong>CODEX</strong></p>
<p>Unlock character information, lore, and much more in our Codex that will appear in the main menu via the 'Quests & Extras' noticeboard. <span></span></p>
<p><img src="https://img.itch.zone/aW1nLzM2OTg2MTMucG5n/original/BKQs%2BF.png" loading="lazy"></p>
<p>Errant Kingdom has an LGBTQA+ cast of love interests, each with their own unique backgrounds and intertwining stories. If you choose a romance route, you will become exclusive with one (or two, if polyamorous options are selected) of our love interests, and will gain access to special scenes, CGs, and conversations. Our story is linear, so once a romance is selected, you will still interact with all of our other cast members! All six love interests are romanceable individually, and our polyamorous relationships are Lucien & Raiden, and Maja & Erik. Roux is asexual, and Livia is demisexual.</p>
<p><em>You can also check out our character playlists over on </em><a href="https://open.spotify.com/user/okikfo05oz2mnsy50wmlngmla" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><em>Spotify</em></a><em>! </em><em></em></p>
<p><em><img src="https://img.itch.zone/aW1nLzM4MTQ5NTQuanBn/original/lTbpAj.jpg" loading="lazy"><br></em></p>
<p><em><img src="https://img.itch.zone/aW1nLzM4MTQ5NTguanBn/original/f2M8rp.jpg" loading="lazy"><br></em></p>
<p><em>L-R top row; Lucien (they/them), Raiden (he/him), Livia (she/her)</em></p>
<p><em>L-R bottom row Erik (he/him) , Maja (she/her) , Roux (they/them)</em></p>
<p><span></span></p>
<h5 class="text-center"><a href="http://www.lunarisgames.com" rel="nofollow noopener" referrerpolicy="origin"></a><a href="http://www.lunarisgames.com" rel="nofollow noopener" referrerpolicy="origin">Website/ Shop</a>| <a href="http://www.twitter.com/lunarisgames_" rel="nofollow noopener" referrerpolicy="origin">Twitter</a>| <a href="http://www.instagram.com/lunarisgames" rel="nofollow noopener" referrerpolicy="origin">Instagram</a> </h5>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzk4MjkyLzQ5MDQ1NDgucG5n/original/lW7TrI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4MjkyLzM1NTQwMTQucG5n/original/qUx%2FD%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4MjkyLzM5MTY4OTMucG5n/original/Vmxac7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4MjkyLzQzNDcwODgucG5n/original/s2DFn6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4MjkyLzM1NTQwMTMucG5n/original/04dZ0F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4MjkyLzM1NTQwMTAucG5n/original/fIEZPu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4MjkyLzM4MTQ5NzYucG5n/original/xAoFWq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4MjkyLzM5ODY0MDYucG5n/original/ZiEF1S.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4MjkyLzM1NTQwMTIucG5n/original/kvdoGJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4MjkyLzM1NTQwMTEucG5n/original/QT4z0%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4MjkyLzM4MTQ5NzcucG5n/original/h%2B4Tc9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4MjkyLzM5MTY4OTUucG5n/original/nXnWJb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4MjkyLzM4MTUwMjUuanBn/original/40DsUI.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4MjkyLzM4MTUwMzEuanBn/original/%2Bs9pgU.jpg]]
<h1>ESC IS...</h1>
<h3>an interactive novel about identity, roleplay, and dreams</h3>
<p>Enter the memories of Raine as she explores the text-based world of VerdaMUCK, a simulation of the old network within the vast cerebrally-interconnected network of the near future. Meanwhile, a mysterious individual known only as The Navigator exposes the truths of the Cerenet as a conspiracy-in-the-making begins to unfold.<br></p>
<h1>FEATURES</h1>
<ul><li>An interactive reading experience split between two character perspectives</li><li>Between 4-6 hours of play, depending on reading ability</li><li>Full soundtrack written by Lena Raine</li><li>Additional music by Christa Lee</li><li>Original art by Dataerase</li><li>Immersive sound design by 2 Mello</li></ul>
<h1>SYSTEM REQUIREMENTS</h1>
<ul><li>Computer running Windows or MacOS</li><li>Keyboard</li></ul>
<h1>CREDITS</h1>
<p><strong>Lena Raine<br></strong>Writing, Design, Programming, Music</p>
<p><strong>Maddison Morgenstern (Dataerase) <br></strong>Art</p>
<p><strong>2 Mello <br></strong>Sound Design<br></p>
<p><strong>Nick Suttner</strong><br>Editing</p>
<p><strong>Christa Lee
<br></strong>Additional Music</p>
<p><strong>Lotte May</strong><br>Additional Programming</p>
<p><strong>Natalie Weizenbaum</strong><br>Additional Editing</p>
<p><strong>j hayley</strong><br>macOS Port</p>
<h1>KNOWN ISSUES</h1>
<p>v1.0.0</p>
<ul><li>Game runs at 2x speed on 120hz monitors. This is a bug with the engine & will be fixed as soon as GameMaker Studio 2 updates to fix it.</li><li>Switching between Fullscreen & Windowed can cause shaders to apply incorrectly. <ul><li>Fix: Restart game with intended screen mode for shaders to apply correctly.</li></ul></li><li>Some laptops may run at a slower-than-intended speed.</li><li>Resolutions lower than 1920x1080 may scale oddly at full screen. <ul><li>Fix: Try running windowed & manually scaling until it improves.</li></ul></li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/gHN253Iajl4" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjMxNzA5LzExMDY5NTMucG5n/original/jo%2FNxb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxNzA5LzExMDY4ODIucG5n/original/V7qQ5W.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxNzA5LzEyMjg2OTAucG5n/original/5%2Fe2GE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxNzA5LzExMDY4ODMucG5n/original/8BKjlv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxNzA5LzExMDY4ODQucG5n/original/lH5i1j.png]]
<p>A roguelike solo card game where you, as the survivor <strong>Stella Hoshiko</strong>, have to escape from a space station that was taken over by a cosmic anomaly.</p>
<p><img src="https://img.itch.zone/aW1nLzM4MDIyNDIuZ2lm/original/%2FJSIfA.gif" loading="lazy"><br></p>
<h2>GAMEPLAY</h2>
<p>The deck consists of 52 cards, each not only representing the situations and threats that infest the station corridors, but also the weapons and equipment needed to deal with them.</p>
<p>Press forward through the Station, dealing with 4 cards at a time in search for the cards required to gain access to the Escape Pod. When unable to sneak past conflict, use Weapons and Gears, like the Flashbang to fend off Threats, or Emergency Kits to heal yourself.</p>
<p><img src="https://img.itch.zone/aW1nLzM4OTE2MjUucG5n/original/mfLPMd.png" loading="lazy"></p>
<h2>FEATURES</h2>
<ul>
<li><strong>ESCAPE FROM STATION 52</strong> delivers tension and high lethality in a portable package of only 54 cards, with each play session lasting from 10 to 15 minutes.</li>
<li>Sneak past entire Corridors to avoid conflict and save your gear for another moment.</li>
<li>Arm yourself with the Flamethrower and the Exoskeleton to face off the cosmic anomalies that disrupt reality itself at Station 52!</li>
<li>Defeat the Amalgam, the major threat of Station 52 and survive to achieve victory as a Veteran.</li></ul>
<p><img src="https://img.itch.zone/aW1nLzM4OTE2MzMuanBn/original/nB%2BFGW.jpg" loading="lazy"><br></p>
<h2>Digital Version for Tabletop Simulator</h2>
<p>With every purchase comes a digital version of the game for Tabletop Simulator. The files are in a ZIP folder, including imagens, script and instructions for setup.</p>
<h2>How to play, playthrough and review</h2>
<p>Video in english by Vinny Lima PnP
</p>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/87VJ_3wT6nM" frameborder="0" allowfullscreen=""></iframe></div>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/87VJ_3wT6nM" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1nLzQ5MjEyODkuanBn/original/YSZc7O.jpg]]
<p>Attention: the download is temporarily disabled due to legal reasons</p><p>This game simulates a real-world escape room. The player starts in a closed room and has to try to get out as soon as possible. To do so, the player can inspect, combine, and interpret objects to obtain new clues to solve new puzzles. By studying the environment closely, the player will also experience a haunting story...</p>
<ul><li>free movement in 3D</li><li>many objects to inspect</li><li>tricky puzzles</li><li>hint system</li><li>a journey into the depths of a well-known friend</li><li>single player or multiplayer coop for 2 - 6 players</li><li>available in 9 languages (English, German, Chinese simplified, Russian, Spanish, Italian, French, Arabic, Portuguese)</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/QMm8gWUcfNE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODcwOTk2LzQ4OTU3OTgucG5n/original/qVZtAh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODcwOTk2LzQ4OTU4MDAucG5n/original/IDwpEG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODcwOTk2LzQ4OTU4MDQucG5n/original/lekKz%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODcwOTk2LzQ4OTU4MDcucG5n/original/avWFad.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODcwOTk2LzQ4OTU4MDEucG5n/original/8tD1Wu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODcwOTk2LzQ4OTU4MDYucG5n/original/sKNg92.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODcwOTk2LzQ4OTU3OTkucG5n/original/qkpqH2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODcwOTk2LzQ4OTU4MDMucG5n/original/SNchag.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODcwOTk2LzQ4OTU4MDIucG5n/original/si%2FXa%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODcwOTk2LzQ4OTU4MDUucG5n/original/n%2Bbx%2BE.png]]
<p>Tired of the daily churn at the office, only to come home to an empty apartment? The Rainbow Dome shelter will help you find the perfect partner to spice up your life! Take a plunge into our exotic selection of pets, and you'll surely find the piece of you you've always been missing!</p>
<p><br>Inspired by <em>Hatoful Boyfriend</em> and the team’s love of animals, <em>Eternia: Pet Whisperer</em> is a short visual novel that sees you venture to a local deluxe animal shelter to find a companion to cure your loneliness. What ensues is a week you’ll never forget.<br><br><strong>Features</strong></p>
<ul><li>Befriend and adopt up to 6 animals: Cockatoo, Frill-Necked Lizard, Sphynx Cat, Koala Bear, Rat Brothers, Border Collie.<br>
</li><li>Ever wondered what a partying cockatoo might talk about? A neurotic border collie? Or a fitness-fanatic koala from Scotland? Now you can find out.
</li></ul>
<p>Made for a game jam by Shinmera and his team, during the development of their larger ARPG title, <a href="https://kandria.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Kandria</a>.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/vSvd_ObujK8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNTc5MS81NzI4NTQyLnBuZw==/original/9t95W8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNTc5MS81NzI4NTQxLnBuZw==/original/vuGC%2BF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNTc5MS81NzI4NTg0LnBuZw==/original/A2zgmL.png]]
<p><br></p>
<div class="text-center"><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/DDYvgNx2fzo" frameborder="0" allowfullscreen=""></iframe></div>
<p class="text-center"><br></p>
<p class="text-center">ETHEREAL is a <strong>profound experience</strong> (winner of the Audience Award on IGF 2019 where it was also nominated for its audio and sound design) where you have to find your way within an <strong>intricate and abstract</strong> series of levels, using different kinds of mechanics that allows you to <strong>modify the environment</strong> or the <strong>direction of your character movement</strong>... </p>
<p></p>
<p><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzE5MTcwNTUucG5n/original/Ml7kSG.png" loading="lazy"><br></p>
<p class="text-center"><br></p>
<p class="text-center">Each corner of its world has been <strong>carefully designed</strong> to communicate <strong>without any text</strong> and expose a <strong>novel puzzle</strong> to solve <strong>without time pressure</strong>, evoking an <strong>introspective state of mind</strong>...</p>
<p><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzE5MTcwNTIucG5n/original/ya0UlJ.png" loading="lazy"><br></p>
<p class="text-center"><strong><br></strong></p>
<p class="text-center"><strong>KEY FEATURES</strong></p>
<ul><li>Beautiful minimalist and abstract art style</li><li>Awarded music and sound design</li><li>Non-verbal narrative</li><li>No time pressure, you can wander around as long as you want!</li><li>4 different worlds to explore, each one with new mechanics, challenges and secrets!</li><li>24 hand-crafted levels</li></ul>
<p class="text-center"><br></p>
<p><img src="https://img.itch.zone/aW1nLzE5MTcwNTQucG5n/original/xc%2Fu7X.png" loading="lazy"><br></p>
<p class="text-center"><br></p>
<p class="text-center">Developed by <strong>Nicolás Recabarren and Tomás Batista</strong>, from Nonsense Arts, an indie game studio from Argentina.</p>
<p><strong><em></em></strong></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/DDYvgNx2fzo" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzY1NTUzLzE4Mjk2MzgucG5n/original/FjcJuK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY1NTUzLzE4Mjk2MzYucG5n/original/0IMBWu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY1NTUzLzE4Mjk2MzkucG5n/original/Tju7SK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY1NTUzLzE4Mjk2MzcucG5n/original/gM1pfv.png]]
<p><strong>EVADER</strong> is an arcade style action game about skilfully avoiding death using a unique dual-control movement system. </p>
<p>Survive for as long as you can against endless waves of enemies .<br></p>
<ul><li>Fast and frantic "die and retry" gameplay</li><li>Six unique enemy types</li><li>Xinput Gamepad + Keyboard support (Gamepad recommended)</li><li>Online Leaderboards</li></ul>
<p><u><strong>Featured on <a href="http://kotaku.com/a-twin-stick-game-with-no-bullets-1796369065" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Kotaku</a> and <a href="http://www.pcgamer.com/free-games-of-the-week/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">PC Gamer</a>!</strong></u></p>
<p>------------------------------------------------------</p>
<p>Made for <a href="https://itch.io/jam/wizard-jam-5" target="_blank">Wizard Jam 5</a></p>
<p>Inspired by <a href="http://superhexagon.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Super Hexagon</a>, <a href="http://store.steampowered.com/app/8400/Geometry_Wars_Retro_Evolved/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Geometry Wars</a>, <a href="http://www.softbodygame.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Soft Body</a>, <a href="https://www.giantbomb.com/helix/3030-48446/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Helix</a> and <a href="https://roburky.itch.io/three-body-problem" target="_blank">Three Body Problem</a>.</p>
<p>Leaderboard hosting by <a href="http://www.dreamlo.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Dreamlo</a>.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/bZjy6rFM7-Q" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTUwNjMxLzcwMTc5MC5wbmc=/original/A5WId5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUwNjMxLzcwMTc0NS5qcGc=/original/Z7Rvja.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUwNjMxLzcwMTc1Ny5qcGc=/original/%2BPVrWY.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUwNjMxLzcwMTc1OC5qcGc=/original/kSg27w.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUwNjMxLzcwMTc0Ny5qcGc=/original/j3zQHy.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUwNjMxLzcwMTc0OS5wbmc=/original/WdYsWA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUwNjMxLzcwMTc1MC5qcGc=/original/DahlEY.jpg]]
<p><strong>Ex Novo</strong> is a playable city-generator to construct fictional villages and towns. This physical game can be played alone or with up to 3 friends. Playtime ranges from 1 to 3 hours. </p>
<p>Meet with your friends and collaboratively draw the map of your city as you explore the conditions that led to its founding and the events that shape its development. </p>
<p>Our aim was a generator that builds settlements that are useful for further creative use. For example in narrative endeavors or as preparation for pen and paper role-playing games.<br></p>
<p>Please share your cities with us using the hashtag <strong>#exnovo</strong>.</p>
<p>Created by <a href="https://twitter.com/mnerurkar" rel="nofollow noopener" referrerpolicy="origin">Martin Nerurkar</a> and <a href="https://twitter.com/gnomeslair" rel="nofollow noopener" referrerpolicy="origin">Konstantinos Dimopoulos</a>.</p>
<p><img src="https://img.itch.zone/aW1nLzMzNTY3NzAucG5n/original/rgdyVM.png" loading="lazy"></p>
<h2>Playing Ex Novo</h2>
<p>You (and up to three friends) take on the role of the guardian spirit of a freshly founded settlement. Its founding just brought you into existence. And with it it brought you your purpose: to witness its growth, shepherd its development and remember its stories.</p>
<p>As you play you will make sense of the events happening as you draw and plan on a collaborative map of the settlement and its changing shape. In the end you will have created an interesting fictional place with a sense of history.</p>
<h3>Sequence of Play</h3>
<p>Play begins with a brief <strong>discussion phase</strong>. Here each player shares their assumptions and expectations. You will also determine city size and age in this phase.</p>
<p>Then we move to the <strong>founding phase</strong>. Taking turns, each player defines some of the basics of the settlement, such as its purpose or the surrounding terrain. Whenever a feature is determined the acting player will draw it onto the map. By following the predefined sequence of turns you will end up with an interesting starting situation.</p>
<p>After this you enter into the <strong>development phase</strong>. Here each turn adds an interesting event that needs to be interpreted by the active player. During this time the settlement will grow, change or even shrink. This is where the exciting history of your city is played out, its shape evolves and the map grows.</p>
<p>The final phase is the <strong>topping out phase</strong>. Here a few quick turns are all that's needed to wrap up the development of the city and tie off all loose ends.</p>
<p>And finally you'll be left with an interesting settlement that you can enjoy or use as a jumping off point for something else, like a role-playing campaign.</p>
<h2>Other Sharkbomb Games</h2>
<iframe frameborder="0" src="https://itch.io/embed/729965?bg_color=335e6e&fg_color=eeeeee&link_color=ea5d8e&border_color=514654" width="552" height="167"><a href="https://sharkbombs.itch.io/ex-umbra">Ex Umbra by Sharkbomb Studios, Martin Nerurkar</a></iframe>
<iframe frameborder="0" src="https://itch.io/embed/1165928?bg_color=31005e&fg_color=ffffff&link_color=f15fd9&border_color=593f60" width="552" height="167"><a href="https://sharkbombs.itch.io/the-mending-circle">The Mending Circle by Sharkbomb Studios, Martin Nerurkar</a></iframe>
<iframe frameborder="0" src="https://itch.io/embed/1299401?bg_color=ffffff&fg_color=222222&link_color=ed0491&border_color=c0cb93" width="552" height="167"><a href="https://sharkbombs.itch.io/goblin-errands">Goblin Errands by Sharkbomb Studios</a></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjI3Nzg4LzM2Njk5MzcucG5n/original/Exa3fo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI3Nzg4LzM2Njk5MzgucG5n/original/4DGeYo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI3Nzg4LzM2Njk5MzkucG5n/original/XAqb4v.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI3Nzg4LzM2Njk5NDEucG5n/original/GxhFxl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI3Nzg4LzM2Njk5NDIucG5n/original/jTODqa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI3Nzg4LzM2Njk5NDMucG5n/original/wAYHum.png]]
<h1>Explore an archipelago, encounter fellow explorers, and seduce and haggle with them to help you complete your map!</h1>
<p>There is no time constraint, no danger, there's no gameover. Instead, this game proposes a calming experience of exploration and encounters. You can just stop playing when you feel satisfied. A play session will usually last 15 to 30 minutes.</p>
<p><span></span></p>
<p><br></p>
<p><strong>You can play the Complete edition for free over on Pico-8 or <a href="https://www.lexaloffle.com/bbs/?tid=39656" target="_blank" rel="nofollow noopener" referrerpolicy="origin">on the Pico-8 BBS</a>.</strong> <em>(web-based, plays on all platforms, including mobile)</em></p>
<p><br></p>
<p><strong>The Deluxe edition</strong> comes with <strong><em>extras</em></strong>:</p>
<ul><li><strong>Standalone executables</strong> of the game for Windows, Mac and Linux.</li><li><strong>A Desktop Pet</strong> based on the game to accompany you in your everyday computer tasks. <em>(Windows only)</em></li><li>A handful of <strong>digital wallpapers</strong> to use for your phones and computers.</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/RIYj0fsJX-4" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODQwOTA2LzQ3MjY4MjQuZ2lm/original/yztKXA.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODQwOTA2LzQ3MjY4MDAucG5n/original/21f7Pm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQwOTA2LzQ3MjY4MDMucG5n/original/VzRiYy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQwOTA2LzQ3MjY4MTAucG5n/original/Z7WtQ2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQwOTA2LzQ3NjYwMzEuZ2lm/original/qvD0Va.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODQwOTA2LzQ3NzQwNTgucG5n/original/UdOc36.png]]
<p>A short visual novel about life in Hamburg.<br></p>
<p>Plot:</p>
<p>Eyad and Hala are two Palestinians living in Wilhelmsburg. They find unexpected support from an Irish-run café.<br></p>
<p><br></p><p>All proceeds go to the Gaza Collective Mutual Aid Fund.<br></p>
<p>Email me for the German language version.</p>
<p><br>If you are a visual artist who would like to work with me to bring this story to full fruition, please let me know! (Paid)<br></p>
<p>I am open to feedback. Please let me know what you think! :)<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODA2Mzk2LzQ1MTg3NDgucG5n/original/6ldtgb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODA2Mzk2LzQ1MTg3NDkucG5n/original/cPkmW7.png]]
<p>A short visual novel about life in Hamburg. It's exclusively in German.<br></p>
<p>Plot:</p>
<p>Eyad and Hala are two Palestinians living in Wilhelmsburg. They find unexpected support from an Irish-run café.</p>
<p>Eyad und Hala sind zwei Palästinenser, die in Wilhelmsburg leben. Unerwartet erfahren sie Solidarität in einem von Iren betriebenen Café.</p>
<p><br></p>
<p><br>If you are a visual artist who would like to work with me to bring this story to full fruition, please let me know! (Paid)<br></p>
<p>I am open to feedback. Please let me know what you think! :)<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODA2Mzk2LzQ1MTg3NDgucG5n/original/6ldtgb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODA2Mzk2LzQ1MTg3NDkucG5n/original/cPkmW7.png]]
<h1>ATMOSPHERIC SPACE SIMULATION<br>
</h1>
<ul><li>Played entirely within fictional operating system sMaat 9</li><li>Simulation of 250+ solar bodies (with light fictionalizations; see accompanying info.txt for data sources)</li><li>Exploratory narrative told through email, news headlines, and REGISTRY database entries</li></ul>
<div><em>Immersion note: For the most immersive experience, full-screen display is recommended.<br></em></div>
<h2>CONTEXT</h2>
<p>The year is 2221 and you are the lone technician aboard the Eye of Ra, an anti-asteroid space station orbiting Earth.<br></p>
<p>It has been two decades since the Apep event caused widespread disturbances throughout the Solar System. Ancient orbital paths and gravitational partnerships were forever altered, and our centuries-old knowledge of them was rendered unreliable. The calculated, near-zero risk of an asteroid impact on an inhabited world suddenly became unknown.</p>
<p>The Solar Union scrambled to recalculate the odds, to find lost objects before they could strike one of its five member worlds. Nuclear warheads were stockpiled and aimed at the skies of the Incorporated Planet of Mercury, the Republic of Mars, the Federation of Jupiter, and the Colonial Republic of Titan. Meanwhile, on Earth, they built something entirely new: the Ra laser. An orbital, Solar-powered cannon capable of reaching across the Solar System and removing kilometres-wide objects from existence.<br></p>
<p>The power within the Eye of Ra defends us all from the modern asteroid threat. The Solar Union entrusts Earth with the protection of its member worlds, who in turn entrusts the Eye of Ra to one technician: you.</p>
<h2>REPORT BUGS</h2>
<p>Please report bugs to <a href="https://twitter.com/bear_cabin" rel="nofollow noopener">@bear_cabin</a><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/D341VLU0Wng" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMzEyLzE2MDE3ODkucG5n/original/h4n0JX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMzEyLzE2MDE3OTAucG5n/original/aeE8u%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMzEyLzE2MDE4NDgucG5n/original/Gbs3G8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMzEyLzE2MDE3OTMucG5n/original/9NO6Uf.png]]
<h1>ATMOSPHERIC SPACE SIMULATION<br>
</h1>
<ul><li>Played entirely within fictional operating system sMaat 9</li><li>Simulation of 250+ solar bodies (with light fictionalizations; see accompanying info.txt for data sources)</li><li>Exploratory narrative told through email, news headlines, and REGISTRY database entries</li></ul>
<div><em>Immersion note: For the most immersive experience, full-screen display is recommended.<br></em></div>
<h2>CONTEXT</h2>
<p>The year is 2221 and you are the lone technician aboard the Eye of Ra, an anti-asteroid space station orbiting Earth.<br></p>
<p>It has been two decades since the Apep event caused widespread disturbances throughout the Solar System. Ancient orbital paths and gravitational partnerships were forever altered, and our centuries-old knowledge of them was rendered unreliable. The calculated, near-zero risk of an asteroid impact on an inhabited world suddenly became unknown.</p>
<p>The Solar Union scrambled to recalculate the odds, to find lost objects before they could strike one of its five member worlds. Nuclear warheads were stockpiled and aimed at the skies of the Incorporated Planet of Mercury, the Republic of Mars, the Federation of Jupiter, and the Colonial Republic of Titan. Meanwhile, on Earth, they built something entirely new: the Ra laser. An orbital, Solar-powered cannon capable of reaching across the Solar System and removing kilometres-wide objects from existence.<br></p>
<p>The power within the Eye of Ra defends us all from the modern asteroid threat. The Solar Union entrusts Earth with the protection of its member worlds, who in turn entrusts the Eye of Ra to one technician: you.</p>
<h2>REPORT BUGS</h2>
<p>Please report bugs to <a href="https://twitter.com/bear_cabin" rel="nofollow noopener" referrerpolicy="origin">@bear_cabin</a><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/D341VLU0Wng" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMzEyLzE2MDE3ODkucG5n/original/h4n0JX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMzEyLzE2MDE3OTAucG5n/original/aeE8u%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMzEyLzE2MDE4NDgucG5n/original/Gbs3G8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMzEyLzE2MDE3OTMucG5n/original/9NO6Uf.png]]
<p>answer the telephone and take on pizza task! helpful wish, the presence of Science Eye! make good decisions for SCMOS <3 <3 <3</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzk3LzQyNjE0NS5wbmc=/original/EUpv1m.png]]
<p><em>Sail the seas with your fellow crew, satisfy the whims and of the captain, and explore all your senses in this nautical adventure! Explore the Elephant Garden and the Geistfeld Key, or puzzle over why the Silvercoat Patrols hired your crew for this strange mission.</em></p>
<p><em>Fair Winds and Following Seas</em> is a game for 2-6 players. In the game, you play the crew of a ship, hired to complete a task. Your employer, destination, and the details of the task are determined randomly, and play includes taking turns describing six sensory experiences for each trip, and sharing a sea shanty with the rest of the crew. A voyage takes about 30 minutes to play and requires no prep, and you can play multiple voyages at once if you have the desire and the time. Carry your ship and crew from mission to mission, with records of each characters' journey. The main game file includes print and play cards as well as tables to roll on if you are do not wish to print the document.<br></p>
<p><em>Fair Winds and Following Seas </em>was originally written for the Big Bad Con 2018 Kickstarter campaign.</p>
<p>Each purchase of the game adds additional community copies for those that can't afford it on their own.</p>
[img width=500 [https://img.itch.zone/aW1nLzI4NTIzNjQucG5n/original/c5lnw%2B.png]]
<p><strong>Fairy Corgi Steeplechase</strong></p>
<hr>
<p><em>Fairies used to ride corgis into battle, but now they ride for fun and prestige. You’re an up-and-coming trainer of racing teams, and this year you’ve been invited to the Cravat Crown races! Will your team win the glory?</em></p>
<hr>
<p>Needed to play: 1d10 per player, pencil and paper, a love of cute things</p>
[img width=500 [https://img.itch.zone/aW1nLzQxNDQ2ODcucG5n/original/Pfpv5Q.png]]
<p>The Demons of the Past have overrun the world. In a last ditch effort, the planet itself decides to fight back.</p>
<p><br></p>
<p>Fly an Orb, shoot demons, enjoy the colours and get the ever elusive "High Score".</p>
<p><br></p>
<p>Controls:</p>
<p>Keyboard:</p>
<p>W/up: Boost</p>
<p>A/D, arrow keys: rotate</p>
<p>Space: Shoot</p>
<p>P: Pause</p>
<p><br></p>
<p><br></p>
<p>Gamepad (Xbox controller, any Xinput device should work though):</p>
<p>A: Boost</p>
<p>X: Shoot</p>
<p>left analogue stick/dpad: rotate</p>
<p>start: pause</p>
<p><br></p>
<p>Press escape to quit the game</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/LULbB5Y8ysw" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDI4NTk3LzIxNDQ5MTguZ2lm/original/bIgWSo.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDI4NTk3LzIxNDQ5MDYucG5n/original/pXmMi9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDI4NTk3LzIxNDQ5MDcucG5n/original/n0B8hd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDI4NTk3LzIxNDQ5MDkucG5n/original/yTsjiG.png]]
<p></p>
<p>Fake Illusions is a collection of optical illusions—but some of them are not playing fair! Where some lines only look diagonal, one line <em>actually</em> is, and circles look like they differ in size, but secretly, one of them is <strong>bigger</strong> or smaller, camouflaged by the illusion. It's your job to point them out! But beware—the fakers will do everything to stay unnoticed... It's the ultimate test of your focus!</p>
<p>Featuring ten different versions of famous illusions like the Hermann Grid or Müller-Lyer arrows, each with a number of variants and distractions, for a total of 50 levels! If that's not enough, try the relaxing Zen mode or the hectic Shuffle mode. You can play it together too: as long as everyone can see your screen, you can use the number each illusion is tagged with to discuss and accuse fakers. You can even export your favorite puzzles as a GIF after solving!</p>
<p>Fake Illusions was made by solo developer Auroriax (best known for <a href="https://auroriax.itch.io/mobility">Mobility! The accessible precision platformer</a>). <strong>Want to try the game? </strong>The <strong><a href="https://twitter.com/FakeIllusionBot" rel="nofollow noopener">@FakeIllusionBot</a> </strong>tweets a puzzle from the game every day! (There's also a <a href="http://press.auroriax.com/" rel="nofollow noopener">presskit</a>.)<br></p>
<p><strong>Epilepsy warning</strong><br>This game features optical illusions, repeating patterns, and high contrast images. If you start feeling sick or dizzy while playing, stop immediately.<span></span></p>
<p></p>
<p><strong>Accessibility info:</strong></p>
<ul><li>Epilepsy warning: This game features optical illusions, repeating patterns, and high contrast images. <strong>If you start feeling sick or dizzy while playing, stop immediately.<br></strong></li><li>Color blind friendly: the game uses only greyscale, red and green colors, with adjustable brightness. Some illusions require you to spot differences between colors, but these can be skipped.</li><li>Textless: Very little reading is required to play Fake Illusions.</li><li>Autosave: Quit the game at any time and continue exactly where you left off next time you play.</li><li>Difficulty: The game is designed to be difficult but fair. You can also set the "fake" illusion to be easier to harder or spot in the settings. This is also indicated with a smiley in the interface.</li><li>Controls: Completely playable with just the mouse and left mouse button (or completely with keyboard since version 1.1!)</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/wNmDVjBYjIs" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDA5OTUwLzQwODkyNzUuZ2lm/original/uuka%2Bi.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA5OTUwLzQwODkyNzYuZ2lm/original/PIQ1x1.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA5OTUwLzQwODkyNzcuZ2lm/original/P0OJgH.gif]]
<p></p>
<p>Fake Illusions is a collection of optical illusions—but some of them are not playing fair! Where some lines only look diagonal, one line <em>actually</em> is, and circles look like they differ in size, but secretly, one of them is <strong>bigger</strong> or smaller, camouflaged by the illusion. It's your job to point them out! But beware—the fakers will do everything to stay unnoticed... It's the ultimate test of your focus!</p>
<p>Featuring more than fifteen illusions about color, perspective, and movement, with lots of variants and distractions. Try the relaxing Zen mode, or the hectic Shuffle mode! Oh, and you can record GIFs, too!</p>
<p><strong>Epilepsy warning</strong><br>This game features optical illusions, repeating patterns, and high contrast images. If you start feeling sick or dizzy while playing, stop immediately.<span></span></p>
<p><strong>Accessibility info:</strong></p>
<ul><li>Color blind friendly: the game uses mostly greyscale colors, with adjustable brightness. Illusions that require you to spot differences in color can be skipped.</li><li>Textless: Very little reading is required to play Fake Illusions.</li><li>Autosave: Quit the game at any time and continue exactly where you left off next time you play.</li><li>Difficulty: You can freely adjust how much the faker stands out for every illusion.</li><li>Controls: Completely playable with just the mouse, keyboard, or gamepad. Keyboard and gamepad are remappable.</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/I3FqpFqT2yM" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDA5OTUwLzc0NzQ2NzcuanBn/original/OZQzHD.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA5OTUwLzc0NzQ2NzYuanBn/original/KkSnIL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA5OTUwLzc0NzQ2ODAuanBn/original/0s4khG.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA5OTUwLzc0NzQ2ODIuanBn/original/BM%2BLGN.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA5OTUwLzc0NzQ2ODEuanBn/original/Tx%2BdOj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA5OTUwLzc0NzQ2NzkuanBn/original/2Oh8YX.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA5OTUwLzc0NzQ2NzguanBn/original/Eud0o7.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA5OTUwLzc0NzQ2ODQuanBn/original/TkXUBs.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA5OTUwLzc0NzQ2ODMuanBn/original/edWw5S.jpg]]
<p>In September of 2015, <em>Undertale </em>came out and swept players up in its celebration of compassion, friendship, and spaghetti-making skeletons. Eschewing violence, "The RPG game where you don't have to destroy anyone." lets players befriend killer robots, fishy knights, and warrior dogs through careful conversation in combat.</p>
<p><em>Fallen Down: Heartache & Compassion in Undertale</em>, an unofficial look at <em>Undertale</em>, explores why we want to make friends with the cast of monsters that would normally get in the way of any other RPG hero. It looks at the ways the game gives monsters personalities and feelings, how it teaches the player to feel for their foes, and what that connection means should the player choose violence in their explorations of the Underground.</p>
<p>Featuring tens of words from developer Toby Fox, <em>Fallen Down </em>is a celebration of the positivity and creativity their work has created in the world, as well as a personal look into our behaviors in digital worlds and the cruelty that stems from playing in them without consequences.</p>
<p><em>"Couture's book perfectly encapsulates what makes this game so special. It's well worth a read for anyone that enjoys this indie classic."</em> <em>– <a href="http://www.rpgsite.net/feature/5869-fallen-down-by-joel-couture-how-emotional-bonds-are-formed-with-pixels-in-undertale" rel="nofollow noopener" referrerpolicy="origin">Elizabeth Henges, RPGSite</a></em></p>
<p><em>"Fallen Down" leaves you with a lot to think about, and it's written in a direct, very affecting way – enough that it made me question my own motivations as a gamer." – <a href="http://www.thelogbook.com/book/fallen-down-undertale/" rel="nofollow noopener" referrerpolicy="origin">Earl Green, TheLogBook.com</a></em></p>
<p><span></span><em>"I like considering this book as a love letter to this wonderful game. Each page is full of kindness and respect for this chef d'oeuvre and its creator. If you loved Undertale as much as we do: read this book. I bet it will echo to your experience too."</em> <em>– <a href="https://www.chroniquesvideoludiques.com/regrets-and-guilt-in-undertale-lettre-ouverte-a-joel-couture/" rel="nofollow noopener" referrerpolicy="origin">Esteban Grine, chroniquesvideoludiques.com</a></em></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTc1OTY3LzgyMTkyMy5wbmc=/original/1zGx0x.png]]
<h3>Intro:</h3>
<p><span style="color: inherit; font-size: inherit">Intro:</span></p>
<p>This is a top-down fantasy 8px tileset made by me! I hope you like it! It features a 4 colour palette and could work for zelda-like, rogue-like, and any other top-down type game! Please enjoy it!<br></p>
<p><br></p>
<p><br></p>
<figure><img src="https://img.itch.zone/aW1nLzU5NDgxMDUuZ2lm/original/PNNzl0.gif" loading="lazy"><br></figure>
<h3>Includes:</h3>
<ul><li>An animated player character </li><li>15+ Enemies<em></em><em><em><em></em></em></em></li><li>25+ Items <em> </em></li><li>Multiple Wall types</li><li>Doors & Stairs</li><li>Furniture</li><li>Basic UI</li><li>Font</li><li>Status Icons</li><li>Basic FX</li></ul>
<p> <br></p>
<p><em><img src="https://img.itch.zone/aW1nLzU5NDgwOTguZ2lm/original/sxMdWf.gif" loading="lazy"></em></p>
<h3>LICENSE:</h3>
<ul><li>This is under the <span class="">Attribution 4.0 International</span> <span class="">(CC BY 4.0) License!</span></li><li><span class=""></span>You can use it in personal and commercial projects with attribution! </li><li>You can alter the tileset to suit your needs!</li><li>BUT, You <strong>cannot </strong>resell or redistribute this tileset.</li></ul>
<h3></h3>
<h3></h3>
<h3></h3>
<h3> </h3>
<h3><img src="https://img.itch.zone/aW1nLzU5NDgxNTEuZ2lm/original/Ev3CM5.gif" loading="lazy"></h3>
<h3>FINAL NOTE:</h3>
<figure><img src="https://img.itch.zone/aW1nLzU5NDgwNjYucG5n/original/w8pejt.png" style="color: inherit; font-size: inherit" loading="lazy"></figure>
<h3><img src="https://img.itch.zone/aW1nLzU5NDgxMjEuZ2lm/original/auvgmU.gif" loading="lazy"> <img src="https://img.itch.zone/aW1nLzU5NDgxMjMuZ2lm/original/znvvEn.gif" loading="lazy"> <img src="https://img.itch.zone/aW1nLzU5NDgxMTkuZ2lm/original/8Ci3mp.gif" style="color: inherit; font-size: inherit" loading="lazy"><span></span></h3>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MDg0OS81OTQ0ODc4LnBuZw==/original/mA1GX5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MDg0OS81OTQ0ODc3LnBuZw==/original/LYNMZN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MDg0OS81OTQ0ODc2LnBuZw==/original/LfrKIw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MDg0OS81OTQ0ODc0LnBuZw==/original/Pcdlth.png]]
<p>Fast Cubes is a puzzle game with time limits. You need to put the cubes on their slots, but there are many traps to kill them.</p>
[img width=500 [https://img.itch.zone/aW1nLzUyMTI3MjkucG5n/original/m%2BXnhC.png]]
<p>Slice up shapes with your mouse or finger, reach the goal size, avoid bouncing balls, bombs and impenetrable walls. Better your score and earn achievements.</p>
<p>Features;<br>- Downloadable version includes 64 levels incl. Gauntlet and Infinite Mode<br>- 8 Achievements</p>
<p></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjU5NjI3LzEyNDc5NDMucG5n/original/jM6kIP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU5NjI3LzEyNDc5NDQucG5n/original/S5rSmS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU5NjI3LzEyNDc5NDcucG5n/original/lIsqUn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU5NjI3LzEyNDc5NDUucG5n/original/KUhM%2B6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU5NjI3LzEyNDc5NDYucG5n/original/%2FyyYzb.png]]
<p><em><strong>Fear & Loving</strong><span></span>, written and illustrated by <a href="https://twitter.com/thefuturerules" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Saturn</a>,<span></span> is a supplement for <strong>Beam Saber. </strong>It is published under the <strong>Beam Saber Supply Drop </strong>license, and requires Beam Saber by Austin Ramsey to play. <a href="https://austin-ramsay.itch.io/beamsaber">You can purchase the game and find licensing information by following this link</a><span></span>. Fear & Loving is not an official Beam Saber product, nor is it affiliated with Austin Ramsey Games.</em></p>
<hr>
<h2>Make your squad a little more dangerous with...</h2>
<p><strong>THE ANGEL. </strong>They cross the line -- dancing with the enemy, opening their heart, and burning out hard. <em>How can they save everyone when they can't even save themself?</em></p>
<p><strong>THE DARLINGS. </strong>They're the perfect pair -- exploding their foes, fighting as one, and showing everyone the power of love. <em>Will they make it out of this in one piece?</em></p>
<p><strong>THE WITCH.</strong> They're a harbinger of ill omens -- casting spells, cheating death, and drawing power from a mysterious benefactor.<em>Who's really piloting who?</em></p>
<p><strong>ALSO FEATURING</strong> colorful artwork, tiny prose, and some Table Safety writing to make sure everyone has a good time!</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODY3MDMyLzQ4NzAyNDMucG5n/original/cORncA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY3MDMyLzQ4NzAzNDcucG5n/original/R8dF7S.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY3MDMyLzQ4NzAzNDgucG5n/original/s5knMh.png]]
<p><em>Fear is Just a Lie</em> is a world-building game designed to help you establish a town setting for a horror RPG. The game takes place in 5 phases and requires a standard french deck of playing cards (52 suited cards) and a journal to write in. <br><br>This game was written for The Solo Games Jam. It was inspired by media like Twin Peaks, Alan Wake, <a href="https://finji.itch.io/night-in-the-woods">Night in the Woods</a>, <a href="http://pnwstories.squarespace.com/" rel="nofollow noopener" referrerpolicy="origin">Pacific Northwest Stories Podcasts</a>, and <a href="https://adira.itch.io/the-machine">The Machine</a> by Adira and Fen Slattery</p>
<p>This game was written, photographed, and produced on unceded Munsee Lenape lands. </p><p>Listen to an actual play on the Chicks With Dice Podcast! </p><p><iframe width="100%" height="180" frameborder="no" scrolling="no" src="https://share.transistor.fm/e/40709551/dark"></iframe><br></p>
[img width=500 [https://img.itch.zone/aW1nLzQwNDAxMDkucG5n/original/bhY%2FBQ.png]]
<p>Enjoy a throwback to the game design of yonder year, as you rob a bank for every dollar it has! Grid based movement lets you carefully plan your approach, but watch out for a security system that is constantly upgrading to try and stop you!</p>
<p>Windows only.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/UKoD1Aou6RE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTEzMjEyLzI2NjQ5MzcucG5n/original/jH4dij.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTEzMjEyLzI2NjQ5MzkucG5n/original/hK5tqk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTEzMjEyLzI2NjQ5MzgucG5n/original/m9WDOu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTEzMjEyLzI2NjQ5NDAucG5n/original/%2BqrYHr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTEzMjEyLzI2NjQ5NDEucG5n/original/OOMSdY.png]]
<p>Just a fun little cookbook of Asian-American style foods for my friends! All of these recipes are VEGETARIAN or easily adapted to be VEGETARIAN.</p>
<ol><li>The Super-Secret All-Purpose Seasoning</li><li>Spicy eggs
</li><li>Roasted vegetables
</li><li>Korean seafood pancake (SEAFOOD PART OPTIONAL, JUST TAKE IT OUT IF UR VEGETARIAN)
</li><li>Sweet and spicy corn
</li><li>Japanese mixed rice (Takikomi gohan) (FISH BROTH (DASHI) OPTIONAL)
</li><li>My favorite basic noodle soup (SEAFOOD PART ALSO OPTIONAL)</li></ol>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTkwNDI4LzU2MzQ3NjgucG5n/original/0j7Rgc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTkwNDI4LzU2MzQ3NDEucG5n/original/%2BX3yDM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTkwNDI4LzU2MzQ3NjEucG5n/original/C22ZzU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTkwNDI4LzU2MzQ3NjQucG5n/original/Zfdg7U.png]]
<p><em></em>Monsters spawn in the dungeon. What do you do?</p>
<p>▶ FIGHT
</p>
<p>▶ ITEM
</p>
<p>▶ RUN</p>
<p><em>Fight</em> <em>Item</em> <em>Run </em>is a Powered by the Apocalypse tabletop roleplaying game that smashes action-packed combat and magic together with dynamic character and relationship exploration. The party begins in a chamber and there are monsters; once they’ve defeated the monsters, they proceed to the next chamber where there are more monsters. Chambers also have items, treasures, puzzles, and mysteries. When the party has collected the adequate gear to advance to the next level of the dungeon, they come to the chamber with the passage, staircase, portal, or alien warp pad to continue forward. The goals for <em>Fight</em> <em>Item</em> <em>Run</em> are the following:</p>
<p>▶ Fight monsters, collect items, survive the dungeon.
</p>
<p>▶ Tell a collaborative story of mystery and adventure.
</p>
<p>▶ Plant and build upon evocative details at every chance.
</p>
<p>▶ Explore the lives and relationships of characters traveling together.
</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjI5Ny81OTk4MDY5LnBuZw==/original/9oAIu2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjI5Ny81OTk4MDcwLnBuZw==/original/1FpKq9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjI5Ny81OTk4MDcxLnBuZw==/original/5jVlVK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjI5Ny81OTk4MDczLnBuZw==/original/XR7Lto.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjI5Ny81OTk4MDc2LnBuZw==/original/tNnWQ9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjI5Ny81OTk4MDc4LnBuZw==/original/5XyNUi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjI5Ny81OTk4MDgxLnBuZw==/original/5GZd5o.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjI5Ny81OTk4MDg0LnBuZw==/original/%2BG0Wvr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjI5Ny81OTk4MDg3LnBuZw==/original/8xF6VF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjI5Ny81OTk4MDk0LnBuZw==/original/3eCxJL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjI5Ny81OTk4MDk4LnBuZw==/original/RdUbsZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjI5Ny81OTk4MTAxLnBuZw==/original/Aj9w%2Bt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjI5Ny81OTk4MDk5LnBuZw==/original/%2FOIu%2Bk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjI5Ny81OTk4MTAwLnBuZw==/original/uvcoK0.png]]
<p>I always loved that Nintendo's game designers were all people without a games background: Pikmin was created by a gardener, Splatoon by an artist. Disco Elysium was written by a political activist and novelist. If your reaction is to say that "Shigeru Miyamoto wasn't a gardener!", this magazine might not be for you. That's okay.</p>
<p>Filmmakers Without Cameras is a misnomer.</p>
<p>It's not a zine just <em>about</em> or <em>for</em> filmmakers; it's a love letter to films and video games, written by people whose passions lie beyond film and video games.</p>
<p>It's down to earth, thoroughly unpretentious, and easily accessible. Filled to the brim with love; a zine you'll enjoy looking at and flicking through; a zine made by the community.</p>
<p>Articles we've got lined up for our inaugural issue include, amongst others:</p>
<ul><li> <strong>Storytelling in games as compared to films:</strong> How cinematography, interaction, and narrative design affect user experience — should games strive to be “cinematic”?</li><li> <strong>Life At Sea:</strong> Mysteriously missing merchant ships and the science behind the Kraken.</li><li> <strong>The Colour of Love in the Twilight Saga:</strong> Melissa's quick, witty overview of colour and the difference a change of director can have on a series.</li><li> <strong>The Cult of Bubbling Waters:</strong> A random encounter table for Mörk Borg or other roleplaying game of your choice. </li><li> <strong>High School Musical 2 is a Communist Manifesto: </strong>Does what it says on the tin.</li></ul>
<p>We've just raised £1,100 on <a href="https://www.kickstarter.com/projects/eryksawicki/filmmakers-without-cameras-a-film-and-games-magazine?ref=project_tweet" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Kickstarter</a>!</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODk0OTcyLzUxNTY4MjQuanBn/original/tAuokr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODk0OTcyLzUxNTY4MjIuanBn/original/qsOsfh.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODk0OTcyLzUxNTY4MjMuanBn/original/Xxp%2BYs.jpg]]
''Enter exact rating'': <$edit-text tiddler="$:/temp/CollectTags/searchWord" placeholder="5.0" default="5.0" tag="input" type="text" size=2/>
<$list filter="[has:field[url]field:rating{$:/temp/CollectTags/searchWord}]">
"""
<$link to={{!!title}}><$view field="title"/></$link>
"""
</$list>
<p><strong><u>Gameplay</u></strong></p>
<p>Final Spike is a side-view 1-on-1 beach volleyball game. The objective is simple--score more points than your opponent to win! Players can knock the ball up with their bodies, launch it with a set, or knock it down to the ground with a blazing spike!</p>
<p>The full version of the game includes the following features:</p>
<ul><li>4 playable characters</li><li>4 stages</li><li>Rebindable key options</li><li>Customizable gameplay timers, score limits, etc.</li></ul>
<p><strong><u>Minimum Requirements</u></strong><br></p>
<p>Though there is keyboard support, the game plays best when using a controller. Currently, PlayStation 3, PlayStation 4, Xbox 360, and Xbox One controllers are all supported. Nintendo Switch Joycons are also supported.<br></p>
<p><strong>Windows: </strong>Vista OS or newer. 32 or 64-bit should be OK. DX11 required.<br></p>
<p><strong>Mac: </strong>10.12 (Sierra) is recommended. Older OSes are likely not supported due to changes in Unity rendering.<br></p>
<p><strong><u>Frequently Asked Questions</u></strong></p>
<ul><li><u><em>Steam release?</em></u><ul><li>Unlikely for now.</li></ul></li></ul>
<ul><li><em><u>Console release?</u></em><ul><li>Unlikely for now.</li></ul></li></ul>
<ul><li><em><u>Netplay?</u></em><ul><li>Not likely at the moment. If you're really interested in netplay, and want a trustworthy 3rd party option, there's always <a href="https://parsecgaming.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Parsec.</a></li></ul></li></ul>
<ul><li><em><u>Additional characters?</u></em><ul><li>Possibly.</li></ul></li></ul>
<p><em></em><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/iIZHswjvYx4" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjc3MjQwLzE0Mjk1MTcucG5n/original/TbURdl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjc3MjQwLzE0Mjk1MTYucG5n/original/F%2BGVnm.png]]
<p>Fire Place is for people who want the simple pleasure of building and maintaining a fire over the course of the night: something beautiful, complex, and soothing to watch, a living presence in your space with you. <br><br>Put Fire Place on that big screen in your living room during friendly gatherings, especially on cold winter nights. Holler at your co-hosts to put another log on when the fire starts to dwindle. Enjoy the crackle and the quiet flicker of warm light.</p>
<iframe style="border: 0; width: 600px; height: 120px" src="https://bandcamp.com/EmbeddedPlayer/album=2042086295/size=large/bgcol=333333/linkcol=e99708/tracklist=false/artwork=small/transparent=true/"><span class=""></span><a href="http://icewatergames.bandcamp.com/album/fireplace-ost" rel="nofollow noopener" referrerpolicy="origin">Fireplace OST by Michael Bell</a></iframe>
<p>Fire Place comes with four basic environments: a northwest Forest, an old brick fireplace in Seattle, a bright Santa Fe stucco, and the Washington coast.<br><br><img src="https://steamcdn-a.akamaihd.net/steam/apps/933080/extras/steam_environments.png?t=1537566480" loading="lazy"><br><br>In addition, three artists have contributed a personal touch - <br><br><img src="https://steamcdn-a.akamaihd.net/steam/apps/933080/extras/steam_environments_feat.png?t=1537566480" loading="lazy"><br><br>Look for the addition of new environments as the season progresses.</p>
<p></p>
<h2>Features:</h2>
<ul><li>Balled up newspaper, logs of all sizes, matches.</li><li>An iron poker and tongs for manipulating the burnables.</li><li>A volumetric simulation of air heat and velocity.</li><li>A beautiful and complex dynamic soundtrack by the award-winning Michael Bell.</li><li>Simulation settings for values such as the ambient heat in the room, the rate of diffusion, the heat coming off of the logs, and more.</li><li>Graphics settings that allow tweaking of the fire's rendering style.</li></ul>
<h2>System Requirements:</h2><ul><li>Fast CPU and a relatively new graphics card<ul><li>Tested and runs alright on low settings on Nvidia GTX 750</li><li>Recommended Nvidia 900 series</li><li>Requires support for Shader Model 5.0</li></ul></li></ul>
<p>Please do try out the demo first to make sure it works on your machine. If you encounter any other issues, please email details to hey@badru.graphics.</p>
<p>All purchases come with a Steam key. </p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/T7BIFrTaeBs" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MjQ0LzE1MTIzNDkuZ2lm/original/pw%2BNPw.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MjQ0LzE1MTIzNDcuZ2lm/original/LyEv%2Bz.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MjQ0LzE1MTIzNDguZ2lm/original/IKjX1u.gif]]
<h3><img src="https://img.itch.zone/aW1nLzIzMDQyNzQucG5n/original/HD8NQe.png" loading="lazy"></h3>
<p>Reform the church to divorce and marry as you please, from foreign princesses to your favourite bookshelf. Or both. Jail your steward. Execute everyone. Ordain your horse as a priest. Knight your bed. Who’s going to stop you? God? Nope. You're Pope now.<br><br>This is no game of thrones. This is real life, as Henry VIII would have lived it. If only he had the imagination.</p>
<p><img src="https://img.itch.zone/aW1nLzIzMDM1MTQuZ2lm/original/CUXGHL.gif" loading="lazy"><br></p>
<p>England, 1520. As the king or queen of this nation, you've been challenged to out-spend your rival, King Frank, at the Field of the Cloth of Gold. With the help of your staff and sycophants, you might be able to do it. Except you've misplaced your gold all over the castle... time to find all those chests and collect all those taxes! <br><br>Maybe you'll bankrupt the country, but at least you'll have a good time doing it.<br></p>
<p><img src="https://img.itch.zone/aW1nLzIzMDQyNzUucG5n/original/kPUfpr.png" loading="lazy"><br></p>
<ul><li>26 royal commands, including (M)arry, e(X)ecute, (C)ollect taxes, (B)less, (K)night, (P)lay Lute and (R)eform Church.</li><li>Play as King or Queen and rewrite the laws to suit your whim.</li><li>Non-linear adventure sandbox simulation. Rule your kingdom or wreak havoc in it, as you prefer.</li><li>Meet Machiavelli, Suleiman the Magnificent, and more, in incredible historical realism.</li><li>Original music tracks by Visager Music, as well as an adaptation of Henry VIII's masterwork, Pastime in Good Company.</li><li>A bear. Beware.</li></ul>
<p><img src="https://img.itch.zone/aW1nLzIzMDM1MjEuZ2lm/original/7FgD25.gif" loading="lazy"></p>
<p>Humiliate King Frank with your wealth and excess, or die trying.<br></p>
<p>You can also <a href="https://visager.bandcamp.com/album/fit-for-a-king-original-soundtrack" rel="nofollow noopener" referrerpolicy="origin">buy the original soundtrack by Visager Music here</a>!</p>
<p><strong>Developed by: </strong><a href="https://twitter.com/pulsemeat" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Brent Ellison</a> &<strong> </strong><a href="https://twitter.com/tanyaxshort" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Tanya X. Short</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/NAYMT8vESS0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDUyODE1LzIzMDM1MjIuanBn/original/Lbk5TM.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUyODE1LzIzMDM1MjQuanBn/original/lnAN0w.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUyODE1LzIzMDM1MjMuanBn/original/arai%2Bb.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUyODE1LzIzMDQwNDcuanBn/original/PUlMdV.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUyODE1LzIzMDQwNDguanBn/original/MfSneg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUyODE1LzIzMDQwNDYuanBn/original/Diy5r7.jpg]]
<p>Flashover MegaSector is a shoot 'em up built to look like a browser game from roughly a decade ago. Simplistic shapes, tons of gradients, simple yet intriguing mechanics, and engaging level design are present to try to remind one of browser games, while still doing its best to just plain be a good shoot 'em up along the way.</p>
<p>There's a demo available for the game, if you want to give the game a try and see what it plays like.</p>
<p>Notable features:</p>
<ul><li>No complex controls (arrow keys and Z are all you'll ever need in-game!)</li><li>Simple yet pleasant vector graphics!</li><li>Soundtrack built around royalty-free songs for extra authenticity to browser games of the era!</li><li>Levels change based on what you do in the previous level for added replay value! (Does not apply to demo version since it only features 1 level.)</li><li>Game tracks your highest score to keep you pushing forwards!</li><li>A tiny hitbox on your ship keeps the toughest of situations manageable!</li><li>Really low minimum price of $1! (Play the first level free to see if you like it!)</li></ul>
<p>Enjoy the game!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/wQZi7WfN428" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDY3MzQ2LzI0MTYxMTEucG5n/original/Zc5jMl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY3MzQ2LzI0MTYxMTkucG5n/original/k5LJxV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY3MzQ2LzI0MTYxMjUucG5n/original/WGR6cV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY3MzQ2LzI0MTYxMDgucG5n/original/wueSUV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY3MzQ2LzI0MTYxMTUucG5n/original/HpTNNP.png]]
<p>Flat UI Game Icons is a game assets pack that contains 100 different icons for your games or apps. </p>
<h4>File Types:</h4>
<ul><li>Transparent PNG</li><li>Illustrator</li><li>EPS</li><li>SVG</li><li>PSD</li></ul>
<h4>PNG Sizes:</h4>
<ul><li>512px</li><li>256px</li><li>128px</li><li>64px</li></ul>
<h3><a href="https://roboxel.itch.io/" target="_blank">More Assets!</a></h3>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTgzMzIzLzY3MTI5OTkucG5n/original/g1wz6h.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTgzMzIzLzY3MTI5OTgucG5n/original/minDfy.png]]
<p>Congratulations! You've adopted your very own pet Birb. Sure, Birbs may be small at first, but they have a big appetite for berries! Help your Birb collect berries to strengthen its performance. With enough practice, patience, and proper nourishment, your Birb can achieve its dream of soaring sky-high!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/bwqt8IuRM6w" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjcyODE2LzEzOTgyODcucG5n/original/o%2F9sRn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcyODE2LzEzOTgzMDMucG5n/original/V%2F8txT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcyODE2LzEzOTgzMDQucG5n/original/2uPH7u.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcyODE2LzEzOTgzMDIucG5n/original/KAf38E.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcyODE2LzEzOTgzMDEucG5n/original/i80DcY.png]]
<p>Guildhall is an archipelago nation, far from the war and politics of the continent, but deeply embroiled in its own struggles... ages ago it was run by the Council of Archmages, but they all died when the world's magic started to slip away, and the islands are trying to hold onto civilization with dying spells and failing artifacts.</p>
<p>Worse, the great Sea Walls have finally fallen, leaving Guildhall open to the beasts from the ocean, where monsters beyond imagination dwell.</p>
<p>You are a member of the Flintlock Society: your soul has been bound to a ship, giving you incredible resilience and magical skill, in exchange for battling the many, many sea monsters which threaten your nation. </p>
<p><em>Flintlock</em> is a story game that's primarily about describing big, pirate-themed action set-pieces, in which you dramatically lash out at a watery monster which will, in turn, lash back at you. Think of it less as a game and more as a "cool scene engine."<br></p><p>--</p><p>(Are you a <a href="https://www.patreon.com/glaiveguisarme" rel="nofollow noopener" referrerpolicy="origin">Patreon</a> supporter? Pick up your copy of the game <a href="https://glaiveguisarme.itch.io/">here</a>!)<br></p>
[img width=500 [https://img.itch.zone/aW1nLzI3MTYwMDkuZ2lm/original/0Q4rs%2B.gif]]
<p><strong></strong><strong>Made with <span class=""><span class=""></span></span><a href="https://jlevstein.itch.io/" target="_blank">Jonathan Levstein</a>.<br></strong></p>
<p><strong>Folk, Form, Phenomenon</strong> is a collaborative storytelling game about myth making, belief and a supernatural entity that plagues (or blesses) the land. It is a game about lore, mythology, folk tales and spooky stories told around campfires. It is about deities and demigods, cryptids and monsters that live under the bed. This story is told through the marking up of a custom map, which represents the region where the creature and factions concerned with it live. Gameplay is generated by prompts for the players using a standard 52 card deck. <em><strong><br></strong></em><em><strong><br></strong></em></p>
<p><em><strong>FFP is fully playable online through with the included custom Miro board (link in downloads)</strong></em><br><br><em>GMless - 4-5 players - 2-4 hours - no prep</em><em><strong></strong></em><br></p>
<p>FFP is a hack of <a href="https://possible-worlds-games.itch.io/bfb" target="_blank">Beak, Feather, & Bone</a> by <a href="https://possible-worlds-games.itch.io/">Tyler Crumrine</a> using the <a href="https://possible-worlds-games.itch.io/bfb-srd" target="_blank">BFB SRD</a> for the <a href="https://itch.io/jam/bfb-jam">#BFBJAM</a>. <br></p>
<h2><strong>Itch Fund for a print run!<br></strong></h2>
<p>When we get to $500 in sales we will do a full zine print run of Folk, Form, Phenomena, which may even include a laminated hex map for use with wet erasers! Everyone who buys the digital game while the fund is up will receive a code for $6 off when the physical copy exists (while only paying $5! WHOA!)<br></p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTY4MDYyLzU4MTg3MTMuanBn/original/sV8WMd.jpg]]
<p><strong></strong><strong>Made with <span class=""><span class=""></span></span><a href="https://jlevstein.itch.io/" target="_blank">Jonathan Levstein</a>.<br></strong></p>
<p><strong>Folk, Form, Phenomenon</strong> is a collaborative storytelling game about myth making, belief and a supernatural entity that plagues (or blesses) the land. It is a game about lore, mythology, folk tales and spooky stories told around campfires. It is about deities and demigods, cryptids and monsters that live under the bed. This story is told through the marking up of a custom map, which represents the region where the creature and factions concerned with it live. Gameplay is generated by prompts for the players using a standard 52 card deck. <em><strong><br></strong></em><em><strong><br></strong></em></p>
<p><em><strong>FFP is fully playable online through with the included custom Miro board (link in downloads)</strong></em><br><br><em>GMless - 4-5 players - 2-4 hours - no prep</em><em><strong></strong></em><br></p>
<p>FFP is a hack of <a href="https://possible-worlds-games.itch.io/bfb" target="_blank">Beak, Feather, & Bone</a> by <a href="https://possible-worlds-games.itch.io/">Tyler Crumrine</a> using the <a href="https://possible-worlds-games.itch.io/bfb-srd" target="_blank">BFB SRD</a> for the <a href="https://itch.io/jam/bfb-jam">#BFBJAM</a>. <br></p>
<h2><strong>Itch Fund for a print run!<br></strong></h2>
<p>When we get to $500 in sales we will do a full zine print run of Folk, Form, Phenomena, which may even include a laminated hex map for use with wet erasers! Everyone who buys the digital game while the fund is up will receive a code for $6 off when the physical copy exists (while only paying $5! WHOA!)<br></p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTY4MDYyLzU4MTg3MTMuanBn/original/sV8WMd.jpg]]
<p>Follow Me in the Night; a Cursed Radio is a Carta journaling game inspired by film noir movies, Phonogram by Kieron Gillen and Jamie McKelvie, and many sleepless nights. You play a weary magic user, wandering dark streets banishing the phantoms that haunt them; phantoms powered by bad memories and cursed music.</p>
<p>You will require a deck of playing cards, a pair of d6, a token of some kind (a coin, a bottle cap, a die, etc.), something to write on and something to write with. You will be required to make a playlist which you will listen to while playing, so have something you can play off of.<br>
</p>
<p>_________________________________________<br></p>
<p>You wake up. You can’t remember when you slept but it’s night now. You peak out through venetian blinds, careful to avoid giving too much indication of being alive. Your ghosts are still outside. You’ve been haunted for a while now. The ghosts are clinging close to your soul, picking over scabs, asking if you’ve forgotten.
</p>
<p>You turn on the radio; it’s resting on an unused signal. But you start to hear music. Music that reminds me of your ghosts. You try and dial another frequency in. The song persists. You step outside. The wind whistles the music you want to leave behind me. The cursed radio follows in your foot steps.
</p>
<p>Maybe you can find banishing spells on the street. Tap into the music and magic coursing through your veins. Visit your old haunts. See if you can leave your curse behind.
</p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTg3MjY2Lzc4MTQwMDAucG5n/original/LhLu2x.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg3MjY2Lzc4MTM5NjguanBn/original/g5w8Ii.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg3MjY2Lzc4MTM5NjcuanBn/original/y1KsX6.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg3MjY2Lzc4MTM5NjYuanBn/original/wC13Lw.jpg]]
<p>Follow Me in the Night; a Cursed Radio is a Carta journaling game inspired by film noir movies, Phonogram by Kieron Gillen and Jamie McKelvie, and many sleepless nights. You play a weary magic user, wandering dark streets banishing the phantoms that haunt them; phantoms powered by bad memories and cursed music.</p>
<p>You will require a deck of playing cards, a pair of d6, a token of some kind (a coin, a bottle cap, a die, etc.), something to write on and something to write with. You will be required to make a playlist which you will listen to while playing, so have something you can play off of.<br>
</p>
<p>_________________________________________<br></p>
<p>You wake up. You can’t remember when you slept but it’s night now. You peak out through venetian blinds, careful to avoid giving too much indication of being alive. Your ghosts are still outside. You’ve been haunted for a while now. The ghosts are clinging close to your soul, picking over scabs, asking if you’ve forgotten.
</p>
<p>You turn on the radio; it’s resting on an unused signal. But you start to hear music. Music that reminds me of your ghosts. You try and dial another frequency in. The song persists. You step outside. The wind whistles the music you want to leave behind me. The cursed radio follows in your foot steps.
</p>
<p>Maybe you can find banishing spells on the street. Tap into the music and magic coursing through your veins. Visit your old haunts. See if you can leave your curse behind.
</p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1nLzU2MTUzNTIuanBn/original/vyIRKO.jpg]]
<p>(This is an apk file to sideload onto your Oculus Quest)</p>
<h5>The patrons are hungry, so feed them!</h5>
<p>Huck food at their faces to <del>shut them up</del> graciously serve them... in VR! Grab their tips, prep for the next wave, and do it all over again! Can you survive to Wave 99?</p>
<h5>Food Flingin' Fun!</h5>
<ul><li>An Oculus Quest VR arcade game.</li><li>Randomized patron preferences means lots of replayability.</li><li>Arcade mechanics - Wait till they're on the Sweet Spot to increase your coinage (and points!).</li><li>Puts the 'fun' back in 'Virtual Reality is fun'!</li></ul>
<h5>Credits:</h5>
<ul><li>Programming, Design - Eric Guadara</li><li>Producer - Brian Olson</li><li>Music - Ricardo Cuello<ul><li><a href="https://rest--vgmusic.bandcamp.com/" rel="nofollow noopener" referrerpolicy="origin">https://rest--vgmusic.bandcamp.com/</a></li><li><a href="https://richarrest.itch.io/classic-jrpg-music-pack-medium-pack"></a><a href="https://richarrest.itch.io/classic-jrpg-music-pack-medium-pack">https://richarrest.itch.io/classic-jrpg-music-pack-medium-pack</a></li></ul></li><li>Cover Art Font - Chris Garrett - cgf_locust_resistance<ul><li><a href="https://www.dafont.com/cgf-locust-resistance.font" rel="nofollow noopener" referrerpolicy="origin">https://www.dafont.com/cgf-locust-resistance.font</a></li></ul></li></ul>
<p><br></p>
<h5></h5>
<iframe width="720" height="450" src="https://www.youtube.com/embed/CxtBu_jvjds" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjcyOTUwLzM2NzkzMDQuZ2lm/original/V1fAgm.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcyOTUwLzM2NzkzMDEuZ2lm/original/6n1tWy.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcyOTUwLzM2NzkzMDMuZ2lm/original/49D4fP.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcyOTUwLzM2NzkzMDIuZ2lm/original/CWujgb.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcyOTUwLzM2NzkzMDUuZ2lm/original/aUHPRf.gif]]
<p>There are many different reasons people take the paths they do. Some of these paths have structure and look like the many paths we’ve all walked before, but there are other secret paths that many might not even recognise, and they have power as well. As creators of these paths we need to know how to recognise them, design them and create them with the rest of our team for all the different players who will walk our paths. </p>
<p>The Forest Paths Method For Narrative Design is the easiest and most practical way to begin creating interactive story on your own or collaboratively with your team. It’s a system that teaches you how to create narrative design using the fundamentals of drama built on the design pillars of your game while also helping you consider wider issues that often aren’t included in the process.</p>
<p>This guide will take you through that process and show you how to organise a cohesive narrative design in a way your whole team can understand, and much more:</p>
<ul><li>Quickly test new game ideas</li><li>Develop a whole narrative design before any production</li><li>Track changes throughout production</li><li>Collaborate and communicate narrative design to your team</li><li>Understand the impact of decisions before you make them</li><li>Analyse your own and other titles to understand their strengths and weaknesses</li><li>Match your narrative design with other considerations like marketing, streamers, accessibility and cultural sensitivities</li><li>Use genre narrative design patterns to kickstart the narrative design process of certain types of games</li><li>Communicate your narrative design intentions to other stakeholders</li></ul>
<p><strong>Templates Now Available</strong></p>
<p>2 basice templates are now included as a download with the resource to get you started. </p>
<p><strong>For Students</strong></p>
<p>Just organising your thoughts can be a huge problem starting out in narrative design. The Forest Paths Method includes tables, diagrams and the processes to use them effectively. At a basic level you can read this method in an afternoon and be using it for your projects the next day. </p>
<p><strong>For Professionals</strong></p>
<p>While simple on the surface, the different parts of the Method used together offers a deep and comprehensive way of organising your ideas in a way that can then be effectively communicated with your team. It’s plain language, and the deliverable is a diagram that scales and nests with all the information your team needs to keep developing – especially those who are reluctant to read documentation.</p>
<p><strong>For Writers New To Games</strong></p>
<p>The Method relies on tried and tested concepts like the dramatic question and set-ups and payoffs, as well as using accessible language so you won’t feel alienated learning the Method. Often the hardest part of transferring to a new medium is just knowing what questions you need to ask yourself and that is at the core of this method. It won’t tell you that you have to now write a certain way. It will help you understand the power of your own writing and how to marry that with the game design of your project in a way that helps you have those conversations with your team.</p>
<p><strong>For Everyone</strong></p>
<p>The Method doesn’t tell you how to write. It shows you how to organise your ideas and ask you and your team the right questions, so you understand the power of your own stories to connect with your players and audiences. While it acknowledges the benefits of some Western conventions, it also breaks those down so no assumptions are made that they should be the default. Instead, it shows you how to create your own bespoke narrative structure that allows you to draw on your own skills, style and lived experience for your game. </p>
<p>Creator Alexander Swords is an experienced narrative specialist who has worked across television, film, live performance and games. He’s worked on the genre-busting indie titles All Walls Must Fall and Totem Teller and holds bachelor’s degrees in film and television and business, as well as a master’s in arts management.
</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjgwMjQyLzM3Mzc3MDQuanBn/original/qxceB7.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjgwMjQyLzM3Mzc1NDYuanBn/original/DC1C0w.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjgwMjQyLzM3Mzc1NDcuanBn/original/fCyYZo.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjgwMjQyLzM3Mzc1NDguanBn/original/F8OAg5.jpg]]
<p><em>forma.8</em> is a unique take on the proven Metroidvania action-adventure formula, with a striking visual style and a huge world to explore.</p>
<p>As the small exploration probe forma.8 you're stranded alone on the surface of an alien planet. Separated from your companions by accident you have a life or death mission to accomplish: find and recover a lost, powerful energy source before it's too late. Ancient civilisations, great perils and dystopian visions await you. And not everything is what it seems...</p>
<ul><li>Explore a huge, open world full of secrets</li><li>Solve ancient mysteries</li><li>Gain new power-ups to progress in your adventure</li><li>Fight deadly enemies and face powerful bosses</li><li>Delve into a deep and cryptic lore</li><li>Beautifully hand-drawn vector graphics, presented in silky smooth 60fps</li></ul>
<p>Are you ready to uncover the truth?</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/FXsD9iv56s0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjY1ODE0LzM1OTc2MjQuanBn/original/JoyJtP.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY1ODE0LzM1OTc2MjcuanBn/original/0fuGqQ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY1ODE0LzM1OTc2MjkuanBn/original/AMxsN3.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY1ODE0LzM1OTc2MjYuanBn/original/8NQgMG.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY1ODE0LzM1OTc2MjguanBn/original/zfMeJX.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY1ODE0LzM1OTc2MjUuanBn/original/s%2FnLYa.jpg]]
<p>Fortune-499 is a game about money and magic. You play a fortune teller working in the magical resources department of a large corporation. You engage in day-to-day office activities such as forwarding emails, attending meetings, fighting back hordes of monsters, and dealing with printer jams. With some tricky magic up your sleeve and your job on the line, it's up to you to build a future out of the hand you've been dealt.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/oeWwtaRJovQ" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTUyODY1LzExNzQzMzcucG5n/original/DtKNKP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUyODY1LzExNzQzMzgucG5n/original/DBcsN4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUyODY1LzExNzQzMzkucG5n/original/G8qv11.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUyODY1LzExNzQzNDAucG5n/original/sa3mne.png]]
<h3>Fossil Echo is a short and challenging story driven platformer with hand drawn 2D graphics. Set in a fantastical world, it tells a wordless tale of adventure and mystery.</h3>
<p></p>
<h4>Features</h4>
<ul><li>Varied and detailed environments</li><li>Hand animated 2D characters</li><li>Over 15 minutes of fully animated cutscenes</li><li>A wordless, mysterious story</li><li>Breathtaking orchestral score</li><li>Very dynamic and demanding platforming gameplay</li><li>Tense stealth mechanics</li><li>Easy Mode lets you enjoy the story without worrying too much about the challenge.</li><li>Well hidden secrets and unlockables</li><li>No HUD or on-screen indications</li><li>Speedrun-Friendly (in-game timers...)</li></ul>
<h4>Story </h4>
<p>Influenced by the Oddworld series, Ico, and Shadow of the Collosus, as well as Studio Ghibli films, Fossil Echo tells the story of a young boy and his journey to climb a giant tower in the middle of the sea. How and why he got there are questions that will be answered via playable flashbacks during his ascent. The game offers over 15 minutes of fully animated cutscenes and the story is told without any dialogue or written text.<br></p>
<h4>Gameplay</h4>
<p><em>Fossil Echo</em> mixes old-school,<em> "die & retry" </em>platforming gameplay with some stealth elements. As in <em>Abe's Oddysee</em> and <em>Another World</em>, you have little margin for error; precise movement and timing is required to get through and avoid confrontation, as the character is young, weak, and unable to fight or kill, most of the time...<br></p>
<h4>Art</h4>
<p><em>Fossil Echo</em> features a detailed art style, with pre-rendered/hand painted backgrounds and hand animated 2D characters. Adopting the style of animated film, it presents an array diverse environments, from lush forest to snow covered tower. With no HUD or any indications displayed on screen, the game aims at immersing you from start to finish.<br></p>
<h4>Sound</h4>
<p>The world of <em>Fossil Echo</em> is brought to life by over two hours of unique, original music by John Robert Matz (Gunpoint, Rodina) and sound design by Gordon McGladdery (Rogue Legacy, Fantastic Contraption). Music and sound work in concert to set the mood and highlight the story and actions during gameplay and cutscenes.<br></p>
<p><br></p>
<blockquote><em>Fossil Echo is developed by Phil Crifo (Story, Art & Design), Thierry Boura (Programming), John Robert Matz (Music), and A Shell In The Pit (Sound Design).</em></blockquote>
<iframe width="720" height="450" src="https://www.youtube.com/embed/Mn8h2US0Qfk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjY4NTQyLzM2Mjc0MzUuanBn/original/MkL1vj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY4NTQyLzM2Mjc0MjguanBn/original/uO2RaV.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY4NTQyLzM2Mjc0MzMuanBn/original/ICbbtP.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY4NTQyLzM2Mjc0MzAuanBn/original/tEQltU.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY4NTQyLzM2Mjc0MzguanBn/original/LjetrU.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY4NTQyLzM2Mjc0NDEuanBn/original/WbHIe%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY4NTQyLzM2Mjc0NDAuanBn/original/%2Fge4ZE.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY4NTQyLzM2Mjc0MzkuanBn/original/Ab2YjO.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY4NTQyLzM2Mjc0MzQuanBn/original/V9SoHn.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY4NTQyLzM2Mjc0MzIuanBn/original/RZlCzn.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY4NTQyLzM2Mjc0MzYuanBn/original/zpCMxr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY4NTQyLzM2Mjc0MjkuanBn/original/RWrom5.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY4NTQyLzM2Mjc0MzEuanBn/original/lHbvdn.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY4NTQyLzM2Mjc0MzcuanBn/original/msF1hY.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY4NTQyLzM2Mjc0NDIuanBn/original/UptBJl.jpg]]
<p><em>Thirty years ago, thanks to the heroic efforts of a few brave heroes, magic was returned to the world. While it had previously been left in the care of a few, isolated clans, the power of magic now flowed as freely through the world as water through a river. The peoples of the world, invigorated by the new power available at their fingertips, have gotten to work. Small villages have grown into powerful city-states; trade kingdoms into empires. Great works rivaling those of the ancients spring up in matters of weeks and months.</em></p>
<p><em>With new power, however, comes new threats. Not all of those empires and city-states have everyone’s best interests in mind; some would rather seize all the power for themselves. As such, it is time for a new generation of heroes to rise to the task, and rid the world of peril once more!</em>
</p>
<p><strong>Four Elements' Light </strong>is my loveletter to classic JRPG <strong>Golden Sun, </strong>seeking to emulate its brand of storytelling and gameplay to the tabletop. It is powered by an engine inspired by the only good edition of the world's largest roleplaying game, giving many options for tactical, grid-based combat while still emulating more old-school JRPGs. <br></p><p><strong>The game includes:</strong></p><ul><li>A robust grid-based system for focused tactical combat</li><li>Four archetypes and power sources, allowing you to customize your playstyle to your liking</li><li>Spirits and summons that can change and empower your character on the fly</li><li>Mission-based advancement systems that reward personal goals and milestones</li><li>Solid exploration mechanics that reward players for seeing everything there is to see</li><li>A starting adventure to show off what kind of stories the game can tell</li><li>A catalogue of monsters for our heroes to overcome</li></ul><p><strong>What is yet to come?</strong></p><ul><li><em>Support for more high-level structured play. </em>The game has everything that's needed to play through the starting adventure, and shows by example how to go from there, but it will require additional content before continued play is properly supported.</li><li><em>Layout. </em>Right now, the PDF is a somewhat prettily laid out Google document, which while it is <em>functional </em>for showing off the game, it's not the best that it can be. Future versions of the game will be ported to some more proper layout software where we can get a cleaner version.</li></ul>
[img width=500 [https://img.itch.zone/aW1nLzU5NDc4MTIucG5n/original/gYmFhg.png]]
<p><em>Thirty years ago, thanks to the heroic efforts of a few brave heroes, magic was returned to the world. While it had previously been left in the care of a few, isolated clans, the power of magic now flowed as freely through the world as water through a river. The peoples of the world, invigorated by the new power available at their fingertips, have gotten to work. Small villages have grown into powerful city-states; trade kingdoms into empires. Great works rivaling those of the ancients spring up in matters of weeks and months.</em></p>
<p><em>With new power, however, comes new threats. Not all of those empires and city-states have everyone’s best interests in mind; some would rather seize all the power for themselves. As such, it is time for a new generation of heroes to rise to the task, and rid the world of peril once more!</em>
</p>
<p><strong>Four Elements' Light </strong>is my loveletter to classic JRPG <strong>Golden Sun, </strong>seeking to emulate its brand of storytelling and gameplay to the tabletop. It is powered by an engine inspired by the only good edition of the world's largest roleplaying game, giving many options for tactical, grid-based combat while still emulating more old-school JRPGs. <br></p><p><strong>The game includes:</strong></p><ul><li>A robust grid-based system for focused tactical combat</li><li>Four archetypes and power sources, allowing you to customize your playstyle to your liking</li><li>Spirits and summons that can change and empower your character on the fly</li><li>Mission-based advancement systems that reward personal goals and milestones</li><li>Solid exploration mechanics that reward players for seeing everything there is to see</li><li>A starting adventure to show off what kind of stories the game can tell</li><li>A catalogue of monsters for our heroes to overcome</li></ul><p><strong>What is yet to come?</strong></p><ul><li><em>Support for more high-level structured play. </em>The game has everything that's needed to play through the starting adventure, and shows by example how to go from there, but it will require additional content before continued play is properly supported.</li><li><em>Layout. </em>Right now, the PDF is a somewhat prettily laid out Google document, which while it is <em>functional </em>for showing off the game, it's not the best that it can be. Future versions of the game will be ported to some more proper layout software where we can get a cleaner version.</li></ul>
[img width=500 [https://img.itch.zone/aW1nLzU5NDc4MTIucG5n/original/gYmFhg.png]]
<p>EMIGRATE TO WESTERN EUROPE.<br>MAKE CORNFLAKE NACHOS.<br>CONFRONT THE GHOSTS OF A DEAD INTERNET.<br>PRETEND YOU DON'T SPEAK ENGLISH.<br>BUILD A BLENDER OUT OF PLASTIC SPOONS.<br>GET ARRESTED FOR APOLOGIZING TO A COP INFORMALLY.<br>KISS YOUR CRUSH.<br>START AN ARMED INSURRECTION.<br>WATCH ANIME.<br>DIE FIGHTING FOR YOUR RIGHTS IN A BLAZE OF GLORY.<br>START OVER IN NORTH AFRICA.<br>WATCH LESS ANIME THIS TIME.</p>
<p>Four Horsemen is a visual novel / SLG about homelands and the immigrant experience. Play as a group of four contemporary immigrant teenagers squatting in a World War II era machine gun bunker, trying to find a place for themselves in a pre-apocalyptic, present-dystopian country that has no place for them. Will you go native, turning against your own people to bury the past your parents fled to escape? Will you cling to your parents' identity at any cost, at the price of being a permanent stranger in your home country? Or will you strike out on your own, turning against both your homelands to shape a destiny for yourself? Love is all you need...and also improvised firearms.</p>
<p>Drawing from the developers' own lived experiences, interviews with current and former immigrant teens from around the world, and a year of painstaking anthropological research, featuring <strong>4 different main storylines,</strong> <strong>9 different endings, 12 different playable homelands </strong>(all of which play differently), and a multitude of agonizing, important decisions, Four Horsemen is the most heartwarmingly familiar, brutally honest video game about the immigrant experience ever created. One playthrough can be finished in a matter of hours, but you'll want to revisit it again and again to see all of the many stories the game has to tell...and to pursue that elusive dream of a land you can call your own.</p>
<p><strong>Exciting Bullet Points!!</strong></p>
<ul><li><strong>YOUR DECISIONS MATTER.</strong> Hard choices you make at the beginning come back to haunt you at the end. Characters turn out to be heroic or villainous depending on how you treat them--and they don't always reward you for treating them well.</li><li><strong>NO TWO COUNTRIES PLAY ALIKE.</strong> Each homeland has its own unique vocabulary, set of cultural values, prejudices, and history. Choices that are a good idea in one country turn out to be a reaaaaally bad idea in another. Like a real immigrant, you'll have to read your new culture and learn to adapt.</li><li><strong>NOT JUST BLACK AND WHITE.</strong> No faction reputation system! No alignment meter! Four Horsemen offers realistic, genuinely difficult moral choices, and to some questions there are no right answers--only different consequences.</li><li><strong>DELIGHTFUL CRAFTING SYSTEM.</strong> Make that cold, austere war bunker feel like home--dive into dumpsters scrounging for parts, or buy them with your earnings from your terrible day job, and make reasonable DIY facsimiles of things you can't afford! Characters interact with things you build. Make a disco ball and they'll throw a dance party, patch up that hole in the roof and they'll enjoy a quiet moment together on a rainy day. But beware--the system is not exactly fair to immigrants...</li><li><strong>TRIUMPH OVER HATE.</strong> A bigot pulls a knife on you--what do you do? Do you try to de-escalate the situation with words...or respond by drawing your own blade? Our combat system replicates the anxiety and tension of real violence, not a power fantasy.</li><li><strong>THE MOST ADVANCED PROFANITY SYSTEM IN A VIDEO GAME, EVER.</strong> Audited by real current and former teenaged native speakers! Learn how to cast aspersions on a person's ancestry in 10 different real-world languages!</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/qrhtj41oAxk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTM5OTQ5LzY0MDkyNS5wbmc=/original/vLlglc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM5OTQ5LzY0MDkyNy5wbmc=/original/v2BIgO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM5OTQ5LzY0MDkyOS5wbmc=/original/hNpjno.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM5OTQ5LzY0MDk0NC5wbmc=/original/tpW9zi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM5OTQ5LzY0MDkyOC5wbmc=/original/LdUioa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM5OTQ5LzY0MDkzMS5wbmc=/original/FBncMs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM5OTQ5LzY0MDk0MC5wbmc=/original/Ck4t17.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM5OTQ5LzY0MDkzNC5wbmc=/original/aReNpG.png]]
<p>Four Kids Play a Game is a tabletop role playing game about the creation of a new world and the personal development of those who would become this new worlds gods. Inspired by Homestuck by Andrew Hussie and the stories similarly inspired by it, the goal of this game is to define the adventures of a small group of children as they fight and work to create a new world after the apocalypse.</p>
<p>Taking a diceless, role-playing scene focused approach to the gameplay, Four Kids is about the development and discovery of its player characters more then anything else. </p>
<p>To play this game you will need:<br> - Three to Five People (One GM, and Two to Four Players)<br> - Several Sheets of Paper<br> - Pens and/or Pencils<br> - A Good Amount of Time</p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1nLzI4OTg1NDYuanBn/original/KloEte.jpg]]
<p><img src="https://img.itch.zone/aW1nLzQ5OTQyNTUucG5n/original/nxkzmH.png" loading="lazy"><br></p>
<p>A never ending abstract landscape of rhythm and soft glamour. Wander the halls, rooms, and chambers. Encounter strange Denizens and get to know them better; befriend them, fall in love, just chill. Try and fill out your own blurred edges.</p>
<p>Fractal Romance is a tabletop role playing hangout. You will pick up a character to play and explore the Fractal Palace, generating its infinite sprawl and the Denizens that inhabit it, as you play.</p>
<p>You will need a deck of cards, a few friends, and a willingness to explore some chill times.</p>
<p><br></p>
<p>Fractal Romance was written for the <a href="https://itch.io/jam/record-collection-2k21" target="_blank">2021 Record Collection Jam</a>, and is inspired by the album <em>Swimmer</em> by Tennis.</p>
<p> Go check out the rest of the entries!</p>
<p><iframe src="https://open.spotify.com/embed/album/3vghyeIx26jtU7DdAW2bEb" width="300" height="380" frameborder="0"></iframe><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODg1OTIzLzQ5OTQyMTIuanBn/original/IE2WWj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODg1OTIzLzQ5OTQyNzkucG5n/original/MgL7GD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODg1OTIzLzQ5OTQyMTMucG5n/original/2Kr513.png]]
<p><img src="https://img.itch.zone/aW1nLzQ5OTQyNTUucG5n/original/nxkzmH.png" loading="lazy"><br></p>
<p>A never ending abstract landscape of rhythm and soft glamour. Wander the halls, rooms, and chambers. Encounter strange Denizens and get to know them better; befriend them, fall in love, just chill. Try and fill out your own blurred edges.</p>
<p>Fractal Romance is a tabletop role playing hangout. You will pick up a character to play and explore the Fractal Palace, generating its infinite sprawl and the Denizens that inhabit it, as you play.</p>
<p>You will need a deck of cards, a few friends, and a willingness to explore some chill times.</p>
<p><br></p>
<p>Fractal Romance was written for the <a href="https://itch.io/jam/record-collection-2k21" target="_blank">2021 Record Collection Jam</a>, and is inspired by the album <em>Swimmer</em> by Tennis.</p>
<p> Go check out the rest of the entries!</p>
<p><iframe src="https://open.spotify.com/embed/album/3vghyeIx26jtU7DdAW2bEb" width="300" height="380" frameborder="0"></iframe><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODg1OTIzLzQ5OTQyMTIuanBn/original/IE2WWj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODg1OTIzLzQ5OTQyNzkucG5n/original/MgL7GD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODg1OTIzLzQ5OTQyMTMucG5n/original/2Kr513.png]]
<p>FRAMED Collection is a new compilation of the critically-acclaimed, multi-award winning noir puzzle games FRAMED and FRAMED 2.</p>
<p>Rearrange the panels of an animated comic book to craft the story of a noir-styled spy adventure. Presented in an extensive series of visual puzzles, requiring logic and imagination, each panel move changes the current narrative, leading to all kinds of comedic blunders, untimely deaths, and--when solved correctly--stylish heists, fast getaways and nail-biting escapades.</p>
<p>With multi-award winning, genre-bending puzzle design, stylish hand crafted art and animation, a satisfying difficulty curve, and an original live jazz soundtrack--fusing modern themes and funky beats--FRAMED Collection is a unique experience no other puzzle game can match.
</p>
<h2>Key Features</h2>
<p><strong>The Complete FRAMED experience<br></strong>FRAMED Collection is a new compilation of the award-winning, noir puzzle games FRAMED and FRAMED 2. Escape effortlessly into the stylish, pulp-noir spy world of FRAMED, before delving deeper with the more challenging prequel FRAMED 2.</p>
<p><strong>Simple, but uniquely clever puzzle design<br></strong>Select animated comic panels and move them around using your logic skills and your imagination to craft the best outcome. Getting the story ‘wrong’ is as much part of the experience as getting it ‘right’, with every rearrangement telling a different, satisfying--and sometimes very comedic--story.</p>
<p><strong>Hand-crafted noir art and animation<br></strong>From the first frame to the last, FRAMED Collection oozes with stylish, noir, award-winning art and animation. Unique, hand-drawn silhouetted characters, incredibly fluid animations, and beautiful, mysterious settings all bring the FRAMED world to life with a wink of mischievous personality.</p>
<p><strong>Multi-award winning, genre-bending design<br></strong>FRAMED Collection features a fusion of unique game mechanics and clever narrative puzzles that bend genres and constantly deliver a satisfying experience with every panel arrangement. A winner of multiple game awards, and a finalist of IGF 2015’s ‘Excellence in Design’ Award, Hideo Kojima named FRAMED his Game of the Year in 2014--“without any doubt”.</p>
<p><strong>An all-original live jazz soundtrack<br></strong>Featuring live jazz performances fused with modern themes and funky beats, the soundtracks to FRAMED and FRAMED 2 are as mesmerising as they are evocative, setting the mood and upping the mystery-laden tension.</p>
<h2>Praise for FRAMED:</h2>
<p>"My best game in this year without any doubt." – <strong>Hideo Kojima, Renowned Game Designer</strong> </p>
<p>"...an astonishingly well-crafted game... with gorgeous visuals, finger-snapping music, brilliant design, and a wonderful central concept. ...an absolute must-buy." – <strong>James Dominguez, Sydney Morning Herald</strong> </p>
<p>"Once in a while, a truly rare and unique game comes along that’s not just a perfect fit for touchscreens, but makes you wonder why it hasn’t been done before because it just seems simultaneously ingenious and obvious." - <strong>AppUnwrapper</strong></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/SEv9ulWpWyo" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjUyNjUwLzEyMDg4NjguanBn/original/L9ON6h.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjUyNjUwLzEyMzk0MDUuanBn/original/IKaKgr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjUyNjUwLzEyMDg4NTAuanBn/original/BtSiEL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjUyNjUwLzEyMzk0MDMuanBn/original/EsEPn9.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjUyNjUwLzEyMzk0MDcuanBn/original/ZK2NSa.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjUyNjUwLzEyMDg4NzAuanBn/original/w3zIsq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjUyNjUwLzEyMzk0MDYuanBn/original/f27VIq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjUyNjUwLzEyMDg4NjkuanBn/original/fUK%2FeU.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjUyNjUwLzEyMzk0MDQuanBn/original/wJk0mX.jpg]]
<p><strong>Freaky Fish DX Ultimate Digital Edition is now included.</strong><br></p>
<p>Skeeter the fisherman has found a large stash of dynamite in his Uncle Cletus’s shed and has decided to use it for his new hobby of "blast fishing”, which involves using explosives to stun the fish in the lake for easy collection.</p>
<p>The local fish are not happy with Skeeters destructive new hobby and so <em>Jacques le Shark</em>, a rarely seen fish with the ability to blow giant bubbles has come out of retirement to deal with the problem…</p>
<h3>Getting Started</h3>
<p>Ensure the 1541 is connected and switch the C64 on. At the READY prompt type <em>LOAD “*”,8,1</em> and hit the return key. When the READY prompt reappears, type RUN and hit the RETURN key - the game will load and start.</p>
<h3>Controls</h3>
<p>Use a joystick in port 2 to move Jacques around in the water.</p>
<p>Press the fire button to blow a bubble. If you hold the fire button down the bubble will stick with you for a short while allowing you to aim the bubble before you release it.</p>
<p>Press the <strong>Run/Stop</strong> key on the keyboard to toggle the pause mode while in game.</p>
<p>Press the <strong>Q</strong> key on the keyboard to quit the game and return to the title screen.</p>
<p>Completing a level will reward you with a code which can be entered on the title screen to start at the next level next time you play.</p>
<h3>Playing Freaky Fish</h3>
<p>Capture the dynamite by blowing a bubble at it or swimming into the dynamite whilst holding a bubble. Release the bubble to send it to the surface, aiming at the boat if possible, but make sure to be careful of the other fish.</p>
<p>Don’t hold on to the dynamite for long as the fuses can be unstable, particularly near the surface.</p>
<p>If all the other fish in the lake are stunned by dynamite, the game will end.</p>
<h3>Scoring</h3>
<p>For each bubble containing dynamite that Jacques sends to the surface his score will increase by 10 points. If Jacques hits Skeeters boat with the dynamite his score will increase by 50 points and Skeeter will lose energy.</p>
<p>When Skeeter loses all of his energy he will abandon the boat as it sinks to the bottom. Jacques will receive an energy boost and bonus points for each fish that has been saved.</p>
<h3>Winning Freaky Fish</h3>
<p>Jacques will lose energy each time he is caught in an explosion; if he loses all of his energy then the game will end.</p>
<p>After certain levels Skeeter will switch to his alternate hobby of throwing energy drinks into the sea. Each collected will increase your score:</p>
<p>Red = 100 points<br>Purple (rare) = 200 points<br></p>
<p>Green (extra rare) = 500 points <br>Poison will end the bonus round.</p>
<p></p>
<p>If Jacques can collect the required number of cans within the time limit, he will receive a 100 percent energy boost.</p>
<p>Survive 30 levels to complete the game. Complete the game without using one of the cheat modes to unlock access to the brutal mutant levels!<br></p>
<p class="text-center"><a href="https://www.bitmapsoft.co.uk/product/freaky-fish-c64-cartridge-deluxe-edition/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzY0NTQ3NTkucG5n/original/a70WMB.png" alt="Freaky Fish DX Deluxe Cartridge Edition" title="Freaky Fish DX Deluxe Cartridge Edition" width="50%" height="50%" loading="lazy"></a><br></p>
<p>Freaky Fish DX Ultimate Edition is also available as a boxed edition from Bitmap Soft on <a href="https://www.bitmapsoft.co.uk/product/freaky-fish-c64-cartridge-deluxe-edition/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">cartridge</a> or <a href="https://www.bitmapsoft.co.uk/product/freaky-fish-c64-tape/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">tape</a>. The deluxe cartridge edition also includes a poster, badge and sticker!</p>
<p>Some secret codes were featured in issue 39 of <a href="https://freeze64.com/freeze64-issue-39/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">FREEZE64</a> magazine!</p>
<h4>Credits</h4>
<p><strong>Chris Page</strong>: Design, programming, sound effects and additional graphics
</p>
<p><strong>Brent Page</strong>: Graphics, music and additional sound effects</p>
<p><small>Copyright © 2021 Design/Chaos Pty Ltd</small></p>
<p></p>
<p class="text-center"><a href="https://retrogames.biz/thec64" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzY0NTQxNzYucG5n/original/7Ds88f.png" alt="Compatible with TheC64 Mini and Maxi" title="Compatible with TheC64 Mini and Maxi" loading="lazy"></a><br>
<small>Compatible with TheC64 Mini and Maxi</small>
<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/-lfjkoyDeLQ" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzE4OTI4LzQwNTYxNzcucG5n/original/yJ3bxq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzE4OTI4LzQwNTYxNzEucG5n/original/M1CWkS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzE4OTI4LzQwNTYxNzQucG5n/original/POhSJQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzE4OTI4LzQwNTYxNzUucG5n/original/ZreI6d.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzE4OTI4LzQwNTYxNzIucG5n/original/IxP0FJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzE4OTI4LzY0NzAzMTUucG5n/original/LcJLqy.png]]
<p>Free Pixel Art Fruit Assets</p>
<p>This Asset Pack includes over 100+ high-quality pixel art fruits! Use them in Match - 3 Games, or your liking.</p>
<p>This pack can be used commercially.</p>
<p>Rate this and <a href="https://sights33r.itch.io/">follow me</a> for more art like these!</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODMyOTkwLzQ2Njc0MDUucG5n/original/XaZ9Bk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMyOTkwLzQ2Njc0MDgucG5n/original/6gFR8z.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMyOTkwLzQ2Njc0MDQucG5n/original/AGXzLp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMyOTkwLzQ2Njc0MTAucG5n/original/pPUE6j.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMyOTkwLzQ2Njc0MTIucG5n/original/3P2EBU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMyOTkwLzQ2Njc0MTMucG5n/original/Prn%2B7C.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMyOTkwLzQ2Njc0MTUucG5n/original/NMoG3J.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMyOTkwLzQ2Njc0MDYucG5n/original/TNYfkN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMyOTkwLzQ2Njc0MTYucG5n/original/PvuxsR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMyOTkwLzQ2Njc0MDcucG5n/original/V%2Fgj0c.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMyOTkwLzQ2Njc0MDkucG5n/original/1IgeZu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMyOTkwLzQ2Njc0MTcucG5n/original/cM0Jf%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMyOTkwLzQ2Njc0MTEucG5n/original/nrFj3n.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMyOTkwLzQ2Njc0MTkucG5n/original/sMJouR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMyOTkwLzQ2Njc0MjAucG5n/original/X%2BKcoo.png]]
<h4>About the game</h4>
<p>In Frick, Inc. you'll drive various trucks using on-screen control panels. Each truck has a different control method and it's all made to be <em>"</em><em>Frick, Inc."</em> frustrating until you master it.</p>
<p><img src="https://i.ibb.co/0f00bvX/showcase.gif" loading="lazy"></p>
<ul><li><strong>Easy to learn, hard to master </strong>–<strong> </strong>You'll be switching between trucks (and control methods) in 40 levels to perform various tasks.</li><li><strong>Extra challenge in each level</strong> – Each of the levels contains an extra challenge, only for those daring enough to go the extra mile.</li><li><strong>Includes game assets</strong> – Ready to get into game development? Use the included 3D models to create your own game inspired by Frick, Inc.</li></ul>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQyNzMzNDMucG5n/original/CHi2%2FV.png" loading="lazy"></p>
<h4>Bonus</h4>
<p></p>
<p>Also includes game assets <em>(CC0, 3D models)</em> to create your very own game inspired by Frick, Inc. The models are compatible with all popular game engines including Unity, Godot and Unreal Engine.</p>
<p><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQyNzg0NDMucG5n/original/mPgOpN.png" loading="lazy"></p>
<h5>Requirements</h5>
<p>The game can only be played using a mouse. A keyboard or gamepad aren't supported or required. Windows and Linux compatible, not compatible with other operating systems.</p>
<p><br></p>
<p class="text-center"><a href="https://twitter.com/KenneyNLGames" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzQ4MjIwNzIucG5n/original/g%2FhxGp.png" loading="lazy"></a><br></p>
<p class="text-center"><a href="https://twitter.com/KenneyNL" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Twitter</a> | <a href="https://www.facebook.com/KenneyNL" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Facebook</a></p>
<h6 class="text-center">Copyright © Kenney 2020 | All rights reserved</h6>
<h6 class="text-center"><a href="https://kenney.nl/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzM3MDYxNjEucG5n/original/3CIJaX.png" loading="lazy"></a></h6>
<iframe width="720" height="450" src="https://www.youtube.com/embed/EPNE9hMSrVw" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjc2MjAyLzM4ODEzNTgucG5n/original/SDcou9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjc2MjAyLzM4ODEzNTYucG5n/original/mAJdwp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjc2MjAyLzQ0MTIwMzEucG5n/original/nxEU9s.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjc2MjAyLzM4ODEzNTkucG5n/original/rrE829.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjc2MjAyLzQ0MTIwNDMucG5n/original/MPS3FH.png]]
<p class="text-center">Stupid++ proudly presents...</p>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzUzMDMxODMucG5n/original/ITTq%2BE.png" loading="lazy"></p>
<p>A faithful remake of PictoChat for Windows and Android.</p>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzUzMDMxODQucG5n/original/VGEQwY.png" loading="lazy"><br></p>
<ul><li>Faithfully handcrafted visuals derived from the original. 👀</li><li>Four chatrooms. 💬</li><li>Drawing suggestions. 📝🤔</li><li>Chat with up to 65535 people at the same time (theoretical limit).</li></ul>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzUzMDM0NTAucG5n/original/WaeT%2FG.png" loading="lazy"></p>
<ul><li>Up to 4 colors. 🎨👩🎨</li></ul>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzUzMDM1MzguZ2lm/original/5iVkm8.gif" loading="lazy"><br></p>
<ul><li>Up to 36 colors (based on <a href="https://lospec.com/palette-list/pear36" rel="nofollow noopener" referrerpolicy="origin">PEAR36</a>). 🎨👩🎨</li><li>A crown for a king. 👑</li></ul>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzUzMDM4MDQucG5n/original/on%2BqJZ.png" loading="lazy"></p>
<p>You have to be on the same network/WIFI to chat.</p>
<p>Stupidplusplus and FroggyChat are not affiliated, associated, authorized, endorsed by, or in any way officially connected with Nintendo Co., Ltd., or any of its subsidiaries or its affiliates.</p>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzUzMDg5NTEucG5n/original/qAixdu.png" loading="lazy"><br></p>
<p><strong>Version 1.0</strong></p>
<ul><li>Initial release</li></ul>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzUzMDM3MzkucG5n/original/c0ETRj.png" loading="lazy"><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTMwNzYzLzUzMDI5NzMucG5n/original/l3CCWb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMwNzYzLzUzMDU3MjAucG5n/original/PMXOL2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMwNzYzLzUzMDM3MjMucG5n/original/jwvNyb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMwNzYzLzUzMDM4NDQucG5n/original/1LFO1U.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMwNzYzLzUzMDM4NDgucG5n/original/LFhz6Z.png]]
<p class="text-center">Stupid++ proudly presents...</p>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzUzMDMxODMucG5n/original/ITTq%2BE.png" loading="lazy"></p>
<p>A faithful remake of PictoChat for Windows and Android.</p>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzUzMDMxODQucG5n/original/VGEQwY.png" loading="lazy"><br></p>
<ul><li>Faithfully handcrafted visuals derived from the original. 👀</li><li>Four chatrooms. 💬</li><li>Drawing suggestions. 📝🤔</li><li>Chat with up to 65535 people at the same time (theoretical limit).</li></ul>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzUzMDM0NTAucG5n/original/WaeT%2FG.png" loading="lazy"></p>
<ul><li>Up to 4 colors. 🎨👩🎨</li></ul>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzUzMDM1MzguZ2lm/original/5iVkm8.gif" loading="lazy"><br></p>
<ul><li>Up to 36 colors (based on <a href="https://lospec.com/palette-list/pear36" rel="nofollow noopener">PEAR36</a>). 🎨👩🎨</li><li>A crown for a king. 👑</li></ul>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzUzMDM4MDQucG5n/original/on%2BqJZ.png" loading="lazy"></p>
<p>You have to be on the same network/WIFI to chat.</p>
<p>Stupidplusplus and FroggyChat are not affiliated, associated, authorized, endorsed by, or in any way officially connected with Nintendo Co., Ltd., or any of its subsidiaries or its affiliates.</p>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzUzMDg5NTEucG5n/original/qAixdu.png" loading="lazy"><br></p>
<p><strong>Version 1.0</strong></p>
<ul><li>Initial release</li></ul>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzUzMDM3MzkucG5n/original/c0ETRj.png" loading="lazy"><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTMwNzYzLzUzMDI5NzMucG5n/original/l3CCWb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMwNzYzLzUzMDU3MjAucG5n/original/PMXOL2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMwNzYzLzUzMDM3MjMucG5n/original/jwvNyb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMwNzYzLzUzMDM4NDQucG5n/original/1LFO1U.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMwNzYzLzUzMDM4NDgucG5n/original/LFhz6Z.png]]
<p>A short game about being stuck indoors with your family and making the most of it!<br>Made in a week during the <a href="https://itch.io/jam/pigsquad-9-year-anniversary-jam/entries" target="_blank">PIGSquad 9-Year Anniversary Stay-At-Home Jam.</a><br><br>Game by Marlowe Dobbe (<a href="https://twitter.com/marlowedobbe" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@marlowedobbe</a>)<br>Music by Jeff Cline (<a href="https://twitter.com/surreal_vgm" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@Surreal_VGM</a>)</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjI0ODEzLzMzMjg4MzYucG5n/original/CNQNuj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI0ODEzLzMzMjg4MzgucG5n/original/c1Gmv2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI0ODEzLzMzMjg4MzkucG5n/original/mNGCSD.png]]
<p>In <em>From Orbit</em> you'll manage the crew of a small spaceship. Stranded deep in uncharted space, they need to make their way home. Journey from planet to planet, each procedurally generated with unique environments, challenges, and alien creatures. <br><br><strong>Explore</strong> <br>Scout out the richest resources and the deadliest critters, and discover unique challenges and powerful artifacts. <br><br><strong>Extract</strong> <br>You're going to need all the Ore and Crystal you can carry if you're going to mount a successful defense or purchase the upgrades you'll need to make it home alive. <br><br><strong>Excape</strong> <br>Err... Escape. The resources on each planet won't last forever, but the alien creatures willing to bite your legs off never seem to end, eventually overwhelming even the most stalwart crew. Hold out as long as you can... but don't throw your resources - or the lives of your crew - away to a lost cause. Always be prepared to make a timely exit when things start getting hairy.</p>
<p><strong>How To Play</strong></p>
<p>If you're new to RTS games and need some pointers, check out...</p>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/-lKGVuyRkek" frameborder="0" allowfullscreen=""></iframe></div>
<p><strong><br></strong></p>
<p><strong>Soundtrack</strong><br></p>
<p><em>From Orbit</em>'s soundtrack was composed by <strong><a href="https://carlcorcoran.com/" rel="nofollow noopener" referrerpolicy="origin">tenfour</a></strong>, and is available for purchase separately. If you've enjoyed the music in the game, please check it out!</p>
<p><a href="https://tenfour.bandcamp.com/album/from-orbit-original-game-soundtrack" rel="nofollow noopener" referrerpolicy="origin">From Orbit (Original Game Soundtrack)</a></p>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/-lKGVuyRkek" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzQzNTA2LzIzOTk1MTIuanBn/original/Lidqpy.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQzNTA2LzIzOTk1MTguanBn/original/7maQa9.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQzNTA2LzIzOTk1MTQuanBn/original/SjHyjb.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQzNTA2LzIzOTk1MTkuanBn/original/wO4dUp.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQzNTA2LzIzOTk1MjEuanBn/original/5ogJkj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQzNTA2LzIzOTk1MTcuanBn/original/iUt8zZ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQzNTA2LzIzOTk1MjAuanBn/original/CVXzn5.jpg]]
<blockquote><em>All the Space Age dreams people carried with them peeled off as they left the stratosphere. Look close and you‘ll see them floating like trash bags in low earth orbit. Further away, it just looks like a greasy leftover smear of a halo round home.</em></blockquote>
<blockquote><em>You’re sick and fucking tired of puff pieces for nth-rate politicos, mindless accounts of the some thing that happened some where, and bottom-barrel soggy interviews with white supremacists. Nobody with cash wants you to tell the truth.
</em></blockquote>
<blockquote><em>Well, today you were hired, along with some associates, to do some impossible reporting about the fifteenth annual Reagan Station moon dune rover race in Mare Insularum, round Kepler Crater, kicking up a lunar dust storm big enough to see from Earth with the naked eye. Half your brain said don’t even bother with this. The other, better half, hatched a plan, and the whole gang of you tore up the silver desert in a high-power rental rover in the glorious and uncompromising pursuit of a new mutation of the Space Age dream…</em></blockquote>
<p><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzM1MzM5MDUucG5n/original/RBRYjY.png" alt="What the hell is this?" title="What the hell is this?" loading="lazy"><br></p>
<p><strong>From Sea to Shining Sea</strong> is a GMless tabletop role-playing game for 2-4 players who're ready to open the dark heart of the shitty future. You all play as freelance journalists (when you're not out doing gig and part-time jobs to pay rent) hired to cover a sporting event in the <em>future</em>, on the <em>moon</em>. It's bland mouthpiece reporting out here.</p>
<p>Moon colonies, moon highways, moon casinos. Corruption, depravity, poverty. Ostentatious wealth and media misdirection. The future was meant to be better than this, but it's not, and all you are gonna take a look at the failures and the underbelly of moon society and be honest about it all, while having a hell of a time good and bad.</p>
<p><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzM1MzM5MDcucG5n/original/yBSpje.png" alt="Show me the reviews!" title="Show me the reviews!" loading="lazy"><br></p>
<blockquote>"<span class="" style="color: inherit; font-size: inherit">Holy fucking shit, [From Sea to Shining Sea] is a goddamn treat. You ever wanna do drugs as a reporter covering the big dune race on the Dark Side of the Moon, all set to a soundtrack of Warren Zevon, Tom Waits, and more? . . . As your attorney, I suggest you take a look at From Sea to Shining Sea.</span>"</blockquote>
<p>–<a href="https://twitter.com/AdiraSlattery/status/1217843001621450756" target="_blank" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">Adira Slattery</a>, game designer</p>
<p class="text-center"><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzM1MzM5MDkucG5n/original/Q1G1%2BN.png" alt="Dangerous content" title="Dangerous content" loading="lazy"><br></p>
<p><strong>CONTENT NOTICE: </strong>This game is heavily inspired by <strong>Fear and Loathing in Las Vegas</strong> by <em>Hunter S. Thompson</em> (and to a lesser extent by <strong><a href="https://tinybuild.itch.io/diaries-of-a-spaceport-janitor" target="_blank">Diaries of a Spaceport Janitor</a></strong> by <em><a href="https://www.tinybuild.com/diariesofaspaceportjanitor" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Sundae Month</a></em>). It includes, mentions, or opens the door to: drugs, sex, miscellaneous but mostly meaningless threats of violence, and all manner of other things you might find in <strong>Fear and Loathing</strong>.</p>
<p>Mostly, this is what you put into it, and aside from excessive drugs and a little violence the game rules documents are pretty tame, but there's always some bias in a game where your moves include "<strong>Bullshit</strong>", "<strong>Trip"</strong>, and "<strong>Freak Out</strong>". Stay safe and check out the <a href="http://bit.ly/ttrpgsafetytoolkit" target="_blank" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">TTRPG Safety Toolkit</a> compiled by <em><a href="https://kiennas.itch.io/" target="_blank">Kienna Shaw</a></em> and <em><a href="https://twitter.com/jl_nicegirl" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Lauren Bryant-Monk</a></em>.</p>
<p><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzM1MzM5MTMucG5n/original/VqlBs%2B.png" style="max-width: 100%; font-size: 14px" alt="Show me the goods!" title="Show me the goods!" loading="lazy"><br></p>
<p><strong>CONTENTS: </strong>The zip archive for this game includes:</p>
<ul><li>Full-colour light-mode and dark-mode rules pdfs</li><li>An A4/letter-sized zine-formatted black and white version</li><li>A .txt version for screen readers</li></ul>
<p>Check the images on the right to see what the dark-mode, light-mode, and B+W versions look like.</p>
<p><strong>PREVIEWS:</strong> You can find free previews of the game down below in the 'Demo' section, in two different screen reading colour palettes.</p>
<p><strong>EARLY 🦉 BIRD 🖕COPIES:</strong> Free full versions of the game, highly limited in number. They're down below. Get them before they get you! Quick! There's only 6 to start with! Are they gone?</p>
<p><strong>COMMUNITY 🤝 COPIES:</strong> This game has community copies - that is, every time someone buys it, I'll add a free copy that anyone in a less-than-great financial situation can download no-questions-asked. There are 10 to start with. Find them below.</p>
<p><strong>ACCESSIBILITY:</strong> This game includes light-on-dark (lod) and dark-on-light (dol) versions for screen reading, a black and white print-friendly A5 zine-formatted version, and a .txt version for text-to-speech apps. Let me know if there's anything more I can do on this front!</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTMxNzU3LzI4MjczNzMucG5n/original/3MlrPR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTMxNzU3LzM1MzY3NjIucG5n/original/vo7mfE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTMxNzU3LzI4MjczNzQucG5n/original/5OMblh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTMxNzU3LzM1MzY3NjMucG5n/original/aKjv3o.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTMxNzU3LzI4Mjc1MTcucG5n/original/7gBvNl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTMxNzU3LzM1MzY3NjQucG5n/original/ayKCiT.png]]
<p>Explore more than 30 simple but beautiful diorama-like rooms in this relaxing adventure / puzzle / hidden object game hybrid.</p>
<p><img src="https://img.itch.zone/aW1nLzQ4NDU3ODcuanBn/original/31OyIb.jpg" loading="lazy"><br></p>
<p>Collect items, solve simple puzzles, and piece together the clues to unlock and rekindle the five shrines.</p>
<p><img src="https://img.itch.zone/aW1nLzQ4NDU3NzkucG5n/original/wcD%2FbR.png" loading="lazy"><br></p>
<p>A very pleasant way to spend 30 - 60 minutes.</p>
<p><em>Also, if you are a content creator and want to check out <strong>from view</strong> for your channel there is a campaign active on Woovit: <a href="https://woovit.info/from-view" rel="nofollow noopener" referrerpolicy="origin">https://woovit.info/from-view</a></em><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/Ri9ffiKpujs" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODU5ODA5LzQ4NDU3NjEuanBn/original/qqVNCz.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODU5ODA5LzQ4NDU3NjIuanBn/original/klVM9w.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODU5ODA5LzQ4NDU3NjQuanBn/original/vsGyLr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODU5ODA5LzQ4NDU3NjMuanBn/original/yLdxpa.jpg]]
<p><strong>Did you miss the <a href="https://www.kickstarter.com/projects/eliseitz/fruit-of-law" rel="nofollow noopener" referrerpolicy="origin">Kickstarter</a>? Don't worry, t</strong><strong>his is where you can get a digital copy of Fruit of Law. Want a physical copy of the mini zines head over to <a href="https://floatingchair.club/collections/zines/products/fruit-of-law" rel="nofollow noopener" referrerpolicy="origin">Floatingchair.club</a> or <a href="https://spearwitch.com/collections/new-arrivals/products/fruit-of-law" rel="nofollow noopener" referrerpolicy="origin">Spearwitch.com</a>!<br></strong></p>
<p><strong>Fruit of Law</strong> was originally inspired by the folk tale that all pomegranates have 613 seeds which represent the 613 commandments in the Torah, and from that symbolic myth a game was born.</p>
<p>The game explores what it means to write the text that makes up the moral fiber of future of their society. The players take on the roles of elders working with and against each other to set down rules for future generations. The central mechanic involves a physical pomegranate that is consumed during play.</p>
<p><strong>Fruit of Law</strong> is designed for 4-10 players and can be played start to finish in about an hour. The rules are loose and encourage cooperative storytelling with the players pushing each other in new and exciting directions.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTI0MTA3LzU4MTE2NjUuanBn/original/5yPzEk.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI0MTA3LzU4MTE2NDMuanBn/original/608eFj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI0MTA3LzM5MTcxNDAuanBn/original/DHIpR3.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI0MTA3LzQwMDQyNzQuanBn/original/oMXxRo.jpg]]
<p><strong>PLEASE NOTE</strong></p>
<p>Fugl is currently in alpha, meaning we are still adding new features to the game and improving stability and performance. We are looking for players who want to play the early version of the game, and hopefully also get involved in its development. The game currently has the following requirements:</p>
<ul><li>64 bit only</li><li>For Windows/Linux OpenGL 4.3 is required, Intel GPUs not supported</li><li>For Mac, Metal 1.1 is required</li><li>A fairly modern computer with a good chunk of gpu memory is required at this stage (around 2 GB). We are working on lowering the requirements.</li><li>3 GB of harddrive space</li></ul>
<p><img src="https://img.itch.zone/aW1nLzEwNjYxMDEucG5n/original/D3CWbY.png" loading="lazy"><br></p>
<p><strong>WHAT IS FUGL?</strong></p>
<p>Fugl is a sandbox game where you create the story, playing as a shape-shifting bird. Relax and feel the breeze under your wings as you glide serenely across picturesque landscapes, or kick up the excitement and soar up steep cliffs like an eagle. With no set rules the free roaming gameplay lets you discover the beauty and secrets of the world at your own pace and dares you to make your own meaning for a stress-free experience. </p>
<p>Fugl’s world is a vast and unique voxel playground. It is procedurally generated yet carefully crafted, with diverse areas to explore, from icy wind blown caves to tropical paradises to great deserts and old growth forests. Each environment is rich in diverse wildlife with hundreds of animals to find. You may even be lucky enough to stumble across rare mythical creatures. Come close to any of these creatures and you have the chance to take on new visual characteristics and flying behaviours inspired by them.</p>
<p>Give the world of Fugl your own creative touch by personalising it in the extensive level creator and craft your custom bird in the avatar editor. </p>
<p><img src="https://img.itch.zone/aW1nLzEwNjYxMDUucG5n/original/qfx5pD.png" loading="lazy"><br></p>
<p><strong>CURRENT FEATURES</strong><br></p>
<ul><li>Freely control a bird and enjoy the thrill of flying </li><li>Experience meditative and task free gameplay at your own pace</li><li>Sink into the beautiful voxel art style</li><li>Discover the vast carefully crafted world</li><li>Explore varied areas - from tropical beaches to snowy mountains and alien worlds</li><li>Take on new visual characteristics and flying behaviours inspired by other animals </li><li>Make your own custom bird in the avatar editor</li><li>Shape your personal world with the level creator</li><li>Enjoy the relaxing soundtrack created with the sounds and ambience of nature</li><li>Receive regular content updates throughout Early Access, including new areas, new animals and new features</li></ul>
<p><img src="https://img.itch.zone/aW1nLzEwNjYxMjAucG5n/original/YPZ%2F4P.png" loading="lazy"><br></p>
<p><strong>ROADMAP</strong></p>
<p>We are very proud of what we have accomplished so far, but we still have a few things we'd like to add to the game, before we come out of Early Access. The following are features that we'd really like to add, but everything is subject to change as development is still on-going.</p>
<p><strong>Feel Free as a Bird</strong></p>
<ul><li>Expand on the core experience of flying: Add wind, thermals, clouds, day/night-cycle and different kinds of weather.</li><li>Just as there are many different types of birds, we'd like to be able to support many different ways of enjoying life as a bird in Fugl. Some are looking for a more chilled experienced, and some for a frantic challenging experience. We are working on ways to support different modes of play.</li><li>Birds can do more than just glide on the winds, break, speed up or hop on the ground and we want to support as many special manoeuvres and abilities as we can! </li><li>Fugl is not the only living thing in the world. We want the wildlife to be able to influence you, and you to influence them!</li></ul>
<p><strong>A Living World<br></strong></p>
<p>The animals in Fugl are really important for providing a sense of life, interaction and immersion in the world.</p>
<ul><li>Improved AI For the animals</li><li>Better physics For the animals</li><li>Physics interactions between the player and the animals</li><li>Faster and improved distribution of animals in the world</li><li>Animal motivations to make them more interesting to interact with</li><li>More animations</li></ul>
<p><strong>Environments & Level Creator</strong></p>
<ul><li>Support for more procedurally generated content</li><li>More support for user generated content like voxel models</li></ul>
<p><strong>Rendering, Hardware and Platforms</strong></p>
<ul><li>We are old-school so we are still looking to improve performance and reduce memory requirements wherever we can!</li><li>We still have a few rendering tricks up our sleeve that we are working on</li></ul>
<p><strong>Misc</strong><br></p>
<ul><li>Support More Languages</li></ul>
<p>Fugl Discord server: <a href="https://discord.gg/8Cb4Uya" rel="nofollow noopener" referrerpolicy="origin">https://discord.gg/8Cb4Uya</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/Bk7fDYj7YkM" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTg1ODc3LzEwNjYxNTUuanBn/original/IXUWS6.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg1ODc3LzEwNjYxNTcuanBn/original/NjDAWB.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg1ODc3LzEwNjYxNTAuanBn/original/J6SkuL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg1ODc3LzEwNjYxNTYuanBn/original/lyP9ZV.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg1ODc3LzEwNjYxNTkuanBn/original/gUTjXr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg1ODc3LzEwNjYxNTEuanBn/original/tjrfVv.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg1ODc3LzEwNjYxNTQuanBn/original/oKMXdF.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg1ODc3LzEwNjYxNTIuanBn/original/K8NLJQ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg1ODc3LzEwNjYxNjAuanBn/original/c3ZXIQ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg1ODc3LzEwNjYxNTMuanBn/original/SVg9Ic.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg1ODc3LzEwNjYxNTguanBn/original/hdC24O.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg1ODc3LzEwNjYxNjEuanBn/original/nlNn7k.jpg]]
<p>The forest stands old. When the fog rolls in at dusk, and the boots of mailed adventurers crush stems and ferns, these trees uproot. Not quenched by rain or river, the forest drinks the blood of its invaders. This forest is old, full of memory, and anger.<br></p>
<p>You stand, within the core of ancient aspen or old oak, feeling the flow of sap in spring and the frozen silence of icy winter. As the forest breathes, you burn the bones of those who sought to carve through. Cruel dryads, all, you and your fellow spirits spire upwards toward the light of stars, and score the stone beneath your roots with deep cracking force.</p>
<p>And one day hatred walks in your domain. Fire and steel assails wood and stone as armored knights, gnarled wizards, and shrike sharp rogues bring death with them. Passing through wood like doors you emerge, recondite and wielding blades of razor thin fern. You defend the woods. And for now the intruders melt into the dirt and you sleep once again. If a hate-filled heart screams in the forest and no one is around to hear it, does it still make a sound?</p>
<p>Full of Memory And Anger is a meditation game of time and stillness, interrupted by brief scenes of ecological retribution. You play fae creatures living in the heartwood of old growth trees, dispensing asymmetrical retaliation to intruders in your realm. These intruders may bring with them evil and hate. They may be powerful fantasy adventurers, formidable masters of industry, or indiscriminate agents of chaos and pollution. You will always crush them in terrifying ways.</p>
<p>This game is inspired by The Skeletons by Bully Pulpit Games. It is a game of answering questions, but more importantly it is a game of silence and of waiting.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDY0NTcxLzI2MDQyMjgucG5n/original/48zn6J.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY0NTcxLzI2MDQxODYucG5n/original/onBoEN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY0NTcxLzI2MDQxOTEucG5n/original/HaPhX%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY0NTcxLzI2MDQxODcucG5n/original/WeX0U7.png]]
<p><img src="https://img.itch.zone/aW1nLzU1MjE0MjQucG5n/original/%2FCPjEI.png" loading="lazy"><br></p>
<p>A light exploration/collection game.</p>
<p>Explore an open world inexplicably filled with instructions for creating capsules that hold furniture. Aided by this newfound knowledge, help the local inhabitants with their various furniture related needs - and decorate your own home as well as any other part of the world as desired.</p>
<p>Make your exploration easier with perks available from an upgrade machine located near your house. The locals will gift you currency for the machine in exchange for your help.</p>
<p><img src="https://img.itch.zone/aW1nLzU1MjQwNjkucG5n/original/E3qECU.png" loading="lazy"><br></p>
<p><strong>Basic controls</strong></p>
<ul><li>movement with <strong>WASD</strong></li><li>open inventory with<strong> i</strong></li><li>enter furniture edit mode with <strong>e</strong></li><li>jump with <strong>spacebar</strong>, <strong>hold </strong>to use fuel (once unlocked)</li><li>open save/exit menu with <strong>Esc</strong></li><li>with radar unlocked, click the desired icon in the 'recipe' tab to track and then toggle with <strong>q</strong></li></ul>
<p><img src="https://img.itch.zone/aW1nLzU1MjQwNjgucG5n/original/66Vik%2B.png" loading="lazy"></p>
<figure><img src="https://img.itch.zone/aW1nLzU1MjI0NDkucG5n/original/%2Bl3%2FkE.png" style="color: inherit; font-size: inherit" loading="lazy"><br></figure>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTcxMTY3LzU1MTY0NDkuZ2lm/original/GXTGGx.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTcxMTY3LzU1MjM5ODcuZ2lm/original/5WO15o.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTcxMTY3LzU1NTIwNjAuZ2lm/original/CDi5ew.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTcxMTY3LzU1MjQwNTUuZ2lm/original/n%2BcQ2V.gif]]
<p>Future Unfolding is an action adventure that is all about exploration. Your goal is to unfold the mysteries and solve the puzzles hidden in the beautiful landscapes around you. There are no tutorials, and no one is telling you what to do.</p>
<p>During your journey you encounter different types of wild animals. Some of them are friendly and helpful. Other animals are dangerous — deadly, even. You need to avoid them, or find ways to turn them into friendly creatures.</p>
<p>You can leave the beaten path at any time and hunt down secrets in the forgotten woods. Or go explore in hidden caves. It's okay to get lost — a detailed auto-map helps you to orient yourself. Over time you map out more and more of the vast environments. There is always a way out. But where to go after?</p>
<p><a href="https://www.esrb.org" rel="nofollow noopener" referrerpolicy="origin"><img src="http://az750008.vo.msecnd.net/images/esrb-08b9ec58.png" style="height: 76px" loading="lazy"></a></p>
<p><a href="http://www.pegi.info" rel="nofollow noopener" referrerpolicy="origin"><img src="http://az750008.vo.msecnd.net/images/pegi-7-8e52ce34.png" style="height: 76px" loading="lazy"></a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/ihyrf2jfpIk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA4NTQ1LzUwNDAwNS5qcGc=/original/2F6nOF.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA4NTQ1LzUwNDAwMi5qcGc=/original/q6%2Fp3B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA4NTQ1LzUwNDAwMy5qcGc=/original/ECchLA.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA4NTQ1LzUwNDAwNC5qcGc=/original/JO4MsJ.jpg]]
<p><span></span></p>
<div></div>
<iframe src="https://gfycat.com/ifr/NegligibleFluffyCottontail" frameborder="0" scrolling="no" allowfullscreen="" width="640" height="405"></iframe>
<p><strong><br>Nail the perfect line in the future's most challenging stunt sport!<br><br></strong>Grab your bike and hit the rails in FutureGrind, a stylish stunt-platformer all about tricks, skill, and speed. Use your futuristic bike to chain together huge combos on tracks made of floating rails, but watch out: touch the wrong color and you'll explode instantly!<br><strong><br></strong><br></p><iframe src="https://gfycat.com/ifr/LikelyBeautifulJunebug" frameborder="0" scrolling="no" allowfullscreen="" width="640" height="402"></iframe>
<p>Keep your sponsors happy and you'll find yourself earning new bikes and racing mind-bending tracks built for the pros. But not everything is as it seems. Someone is watching your every move. Who is it, and what do they really want with you?</p>
<p>Think you have what it takes? Test your limits while grinding to the bass pounding beats of an original soundtrack.</p>
<p><strong>Color Blind Mode</strong><br>For color blind players, FutureGrind's colors are customizable so that you can play in a way that works for you.</p>
<iframe src="https://gfycat.com/ifr/InsistentVacantKakarikis" frameborder="0" scrolling="no" allowfullscreen="" width="640" height="405"></iframe>
<p><strong>Features:</strong></p>
<ul><li>Dozens of hand-crafted tracks to test even the most skilled players</li><li>Different bikes, each with their own unique style of play</li><li>Chain tricks together in a deep combo system that rewards creativity</li><li>Instant restarts (you'll need them!)</li><li>Earn the top awards in score attack mode</li></ul>
<iframe src="https://gfycat.com/ifr/UnsungThankfulCygnet" frameborder="0" scrolling="no" allowfullscreen="" width="640" height="402"></iframe>
<iframe width="720" height="450" src="https://www.youtube.com/embed/eIUSc9N9q6g" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzU2MjYwLzE3Nzg4MzguanBn/original/qkFWID.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzU2MjYwLzE3Nzg4MzkuanBn/original/fX2WBf.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzU2MjYwLzE3Nzg4NDMuanBn/original/grsvsk.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzU2MjYwLzE3Nzg4NDAuanBn/original/Eqt9ri.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzU2MjYwLzE3Nzg4NDEuanBn/original/1y8F1F.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzU2MjYwLzE3Nzg4NDIuanBn/original/wfrUTv.jpg]]
<p><a href="https://www.kickstarter.com/projects/bitter/furquest" target="_blank" rel="nofollow noopener" referrerpolicy="origin"></a><a href="https://store.steampowered.com/app/1740230/Furquest/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzgxNTQzNTguZ2lm/original/tyMMNv.gif" loading="lazy"></a><br></p>
<p>After a timid sheep, a bookworm goose, and a heroic bunny camp out a storm, they wake up in a strange new world full of skateboards, carnivals, manga and hot dogs! Welcome to <strong><em>Fuzzy Road Home</em></strong> - a quirky RPG about a buncha gay furs just tryin to get home! Join the poly relationship of Peep, Juice, and Honey on their comedic quest back to a warm bed!</p>
<p class="text-center"><strong><a href="https://thebittersoul.itch.io/fuzzy-road-home/rate?source=game" target="_blank">✨If you enjoy the game, please leave a rating, it helps a lot!✨</a><br></strong></p>
<p class="text-center"><a href="https://twitter.com/primxie" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><strong>🎨Promotional Artwork By Lucas Prim!🎨</strong></a><br></p>
<p class="text-center"><del> </del><br></p>
<p class="text-center"><strong>This game contains imagery which may not be suitable for those with photosensitive epilepsy! </strong><strong>Please take care of yourself <3!</strong><br></p>
<p class="text-center"><del> </del></p>
<p><strong>Features:</strong></p>
<p>- 3 cute goobers you'll play as throughout the game, each with their own unique character arc!</p>
<figure><img src="https://img.itch.zone/aW1nLzU3NjIyNTkuZ2lm/original/6dL%2Bpq.gif" loading="lazy"><br></figure>
<p>- A short, charming story featuring a goofy cast of characters with quirky designs and personalities!</p>
<figure><img src="https://img.itch.zone/aW1nLzU3MDUwNjYuZ2lm/original/eTdmgo.gif" loading="lazy"><img src="https://img.itch.zone/aW1nLzU3MDQ3OTIuZ2lm/original/H%2FDJzt.gif" loading="lazy"><img src="https://img.itch.zone/aW1nLzU3MDQ3OTguZ2lm/original/KHILdP.gif" loading="lazy"><img src="https://img.itch.zone/aW1nLzU3MDQ4MTAuZ2lm/original/DE%2FQ69.gif" loading="lazy"></figure>
<p><del></del></p>
<p>- Experience the beginning of the prophesied war between <strong><em>Mains</em></strong> and <strong><em>Inverts</em></strong>: in this world, there are two sides to every coin... sometimes even three... er, well, no, by definition coins only have two sides, but, uh, er-<br></p>
<p><img src="https://img.itch.zone/aW1nLzU3MDYyNTcuZ2lm/original/dOLXAv.gif" loading="lazy"><img src="https://img.itch.zone/aW1nLzU3MDYyNTkuZ2lm/original/O8xYD1.gif" loading="lazy"><br></p>
<p>- jpeg the horse. yep.</p>
<p><img src="https://img.itch.zone/aW1nLzU3MDQ3MDEuZ2lm/original/dB2kot.gif" loading="lazy"></p>
<p>- A pretty neat art style + an even MORE neat original soundtrack which got left in the sun for a bit too long and now it's starting to smell, ehhh...</p>
<p><img src="https://img.itch.zone/aW1nLzU3MDYyMTUuZ2lm/original/f%2B5EDb.gif" loading="lazy"><br></p>
<p>- Get gripped by the metaphysical tentacles of the legendary hexapus!<br></p>
<p><img src="https://img.itch.zone/aW1nLzU3MDQ3MjcuZ2lm/original/dWRvMs.gif" loading="lazy"><br></p>
<p>- A whole lotta red slices of strawberry pie to gobble down which may or may not lead to a secret ending! :3</p>
<p><img src="https://img.itch.zone/aW1nLzU3MDQ4MzcucG5n/original/k04zZk.png" loading="lazy"><img src="https://img.itch.zone/aW1nLzU3MDQ4MzcucG5n/original/k04zZk.png" loading="lazy"><img src="https://img.itch.zone/aW1nLzU3MDQ4MzcucG5n/original/k04zZk.png" loading="lazy"><img src="https://img.itch.zone/aW1nLzU3MDQ4MzcucG5n/original/k04zZk.png" loading="lazy"><img src="https://img.itch.zone/aW1nLzU3MDQ4MzcucG5n/original/k04zZk.png" loading="lazy"><img src="https://img.itch.zone/aW1nLzU3MDQ4MzcucG5n/original/k04zZk.png" loading="lazy"><img src="https://img.itch.zone/aW1nLzU3MDQ4MzcucG5n/original/k04zZk.png" loading="lazy"><img src="https://img.itch.zone/aW1nLzU3MDQ4MzcucG5n/original/k04zZk.png" loading="lazy"><img src="https://img.itch.zone/aW1nLzU3MDQ4MzcucG5n/original/k04zZk.png" loading="lazy"><br></p>
<p><del> </del></p>
<p><a href="https://docs.google.com/document/d/1D6MgndLQpVDBFTwQtirBA-DkxXjJZwaCMOGzM2QIXM4/edit?usp=sharing" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzU5NzY0NTgucG5n/original/oYxNMF.png" loading="lazy"></a><br></p>
<p><a href="https://www.patreon.com/thebittersoul" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzU5NDY0MjMucG5n/original/nsYyF1.png" loading="lazy"></a></p>
<figure><a href="http://discord.gg/Be2KtRmhBK" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzU5NDY0MDQucG5n/original/Igj3g4.png" loading="lazy"></a></figure>
<figure><a href="https://thebittersoul.bandcamp.com/album/fuzzy-road-home-ost" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzU5NDY0ODQucG5n/original/H1u%2BBk.png" loading="lazy"></a></figure>
<figure><a href="https://linktr.ee/thebittersoul" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzU5NDY0NDkucG5n/original/HmCm%2FJ.png" loading="lazy"></a></figure>
<iframe width="720" height="450" src="https://www.youtube.com/embed/FU8pX__MZ6E" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODc1MzQwLzU4NjMxMDIucG5n/original/%2FdP6sI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc1MzQwLzU4NTEwNjkucG5n/original/eHx3aX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc1MzQwLzU4NTEwOTQucG5n/original/UAJTCU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc1MzQwLzU4NTA4ODAucG5n/original/iSrcgf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc1MzQwLzU4NTA4ODgucG5n/original/FupTZC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc1MzQwLzU4NTA4ODcucG5n/original/rnrRiU.png]]
<p>The people of the mountain are sparse, tiny huddled hamlets and isolated livestock farmers; they need each other, love and hate each other, in the way that subsistence communities must. And they need you, love and hate you, because you're one of them, and not one of them: you are one of the witches of the mountains.</p>
<p>You are one of a handful of overworked, alienated, vital people, one foot in the Here, one planted in the Else. They might call you and your peers a coven, were you somewhere more cosmopolitan. As it is, you are who you are, and whatever comes, you will have to be sufficient: <em>une galére des sorcières.</em></p><p><em>(As featured in a Halloween charity fundraising one-shot Twitch stream by <a href="https://www.twitch.tv/friendswhorolldice" rel="nofollow noopener" referrerpolicy="origin">Friends Who Roll Dice</a>!)</em></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjY3NjY3LzM2MTY4NTUucG5n/original/m3CrXc.png]]
<p>Another day under the hard sun, another day of discovery and to fight Ganancia.<br></p>
<p>The world is at an end, resources were used without parsimony.</p>
<p>A minimalist tri-fold pamphlet game on a world plagued by scarcity and the result of our current society, explore and live in it as it is yours now. </p>
<p><em>"<span></span>Society, have mercy on me<br>I hope you're not angry if I disagree<br>Society, crazy and deep<br>I hope you're not lonely without me"</em></p>
<p class="text-right">- Society, Eddie Vedder</p>
<p><iframe src="https://open.spotify.com/embed/track/3bHhUEOTIbezeZ856R0BX5" width="300" height="380" frameborder="0"></iframe></p>
<p>Leave a review or at least rate if you enjoyed the game.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTAxMzA5LzUxMzIxMjAucG5n/original/23Do%2FG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTAxMzA5LzUxMzIxMjEucG5n/original/y6Nuwy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTAxMzA5LzUxMzIxMjIucG5n/original/wmEoD6.png]]
<p>A contemplative world-building game / toy. Take your time and tweak this or that little world.</p>
<p>Made by <a href="http://twitter.com/EnricLlagostera" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">Enric Llagostera</a>. Music: "flying around in space", by <a href="https://holykonni.bandcamp.com/" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">Holy Konni</a>. Inspired by <a href="http://ishisoft.com/archives/884" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">This Precious Land</a>, by <a href="https://twitter.com/ishisoft" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">Craig Forrester</a>. More info about the game and its development on the <a href="https://enricllagostera.itch.io/bonsai-worlds/devlog/111664/remake-incoming" target="_blank" style="font-size: inherit">devlog</a>.</p>
<p>You can use JKL to change the game speed. The IOP keys control zoom, as well as the mouse wheel. You can pan the camera with WASD or arrow keys or space + left-click or by right-clicking anywhere. ESC exits the game.</p>
<p>The game is available in English and Brazilian Portuguese. O jogo está disponível em português do Brasil e inglês.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/LSt4go6k9o0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTc0Ni8yNzk1MDU5LnBuZw==/original/9HwTXg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc0Ni84MDEwLnBuZw==/original/7%2FcPpp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc0Ni8yNzk1MDYwLnBuZw==/original/O7kD6S.png]]
<p>[NOTE!] If you are thinking of purchasing these assets, please wait a few weeks, as I am planning on adding them to a bundle to help victims from Ukraine,, and would much rather you purchase them via the bundle. I will update once I know more <3<br><br><br>A Game Boy style 8*8px farm tileset, with a GB Studio compliant colour palette. <br></p>
<ul><li>Over 666 unique tiles </li><li>2 tilesets; the original, and V1.5</li><li>5 colours (1st colour transparent)</li><li>7 complete buildings</li><li>Over 30 ground tiles</li><li>Indoor and Outdoor tiles</li><li>decoration objects</li><li>One base human character & one unicorn</li><li>basic vegetable items, with growing states and harvestables</li><li>7 example maps (see screenshots)</li><li>2 example menus</li></ul>
<p>*please note, due to the extremely optimised nature of the tiles, I will not be sharing the full tile set as a sample. </p>
<p>License: </p>
<ul><li>Can be used and edited for commercial and academic game development purposes.</li><li>Can be used for table top game purposes.</li><li>It is recommended that If the assets are used for commercial use, an additional donation is made at <a href="https://ko-fi.com/gamedevmum" rel="nofollow noopener" referrerpolicy="origin">https://ko-fi.com/gamedevmum</a></li><li>Not to be sold-on as assets or in a bundle in edited or original form.</li><li>It is <strong>strictly forbidden</strong> to use <strong>any </strong>of the contents of this tile set in <strong>any</strong> relation to block-chain related technology, including but not limited to; NFTs, Crypto, or bitcoin. <br>
</li></ul>
<p><br></p>
<p>***PLEASE NOTE, due to the additional content, the price has been increased, however, this tileset is now a complete art starter set for creating your first game, prototype, or game jam entry*** </p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTkzNDgxLzU2NTIxMjUuZ2lm/original/GgrKqu.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTkzNDgxLzU2NTIxMzYuZ2lm/original/bZOkQR.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTkzNDgxLzU2NTIxMjYucG5n/original/DwpBPl.png]]
<p>It's been a year since the Typhon Incident, when a biomonster from the Age of Superpowers awoke and rampaged across the Earth. Aegis Overlord, having consolidated power on Luna, begins preparation to extend their domination across the solar system. The L5 Alliance attempts to maintain a fragile peace while their member-states bicker and war among themselves. To make matters worse, the cyberpop band Love Magnet just announced that they're splitting up. I trust that all of you know what this means.</p>
<p><strong><em>It's time to fire up your giant robot and go do some stomping.<br></em></strong></p>
<p>GearHead Caramel is the third game in the GearHead series. Your character can play through a series of adventures set in various times and places in the GearHead universe. Currently there are two adventure modules, with more to follow.<br></p>
<p>You don't need to have played the previous two games to jump straight in. Features of GearHead Caramel include a detailed mecha build + customization system, procedural story generation, lifepath based character creation, a portrait editor, both personal and mecha scale combat, cyberware, and the ability to import characters from GearHead Arena.</p>
<p>GearHead Caramel is open source; the Python source code for the game may be <a href="https://github.com/jwvhewitt/gearhead-caramel" rel="nofollow noopener" referrerpolicy="origin">downloaded for free from GitHub</a>.<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/b1441O0PT5E" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODc0Mjc5LzQ5MjY0MDYuZ2lm/original/gDZXCe.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODc0Mjc5LzQ5MjY0MTYucG5n/original/O2SxdL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc0Mjc5LzQ5MjY0MTMucG5n/original/ptiTJo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc0Mjc5LzQ5MjY0MDgucG5n/original/L2EupP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc0Mjc5LzQ5MjY0MjUucG5n/original/i%2FZ%2BA0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc0Mjc5LzQ5MjY0MzkucG5n/original/MwUaLH.png]]
<p><strong>English</strong>: Gebo is a first-person game where you play as Alexis, a human stuck in a dreamlike world together with a disembodied voice that calls themselves Selene. Explore the temple, solve puzzles and do your best to find a way out, even if everything isn’t what they seem to be.</p>
<p><strong>Swedish</strong>: Gebo är ett första person spel där du spelar som Alexis, en människa fast i en drömlik värld tillsammans med en kroppslös röst som kallar sig själv Selene. Utforska templet, lös pussel och gör ditt bästa för att hitta en väg ut, även om skenet kan bedra.</p>
<p><br></p>
<p><strong>DISCLAIMER</strong>: If you can't continue in the dialogue, press ESCAPE and CONTINUE and it should work again after that.<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/93mjKkblMf4" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA3MjcwNi82MTQ5NjY5LnBuZw==/original/cbTnjh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA3MjcwNi82MTQ5ODkwLnBuZw==/original/v2yqVD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA3MjcwNi82MTQ5NjcwLnBuZw==/original/b9mXpS.png]]
<p><strong><em>When stories break down, you send in the Genrenauts!</em></strong><br></p>
<p>Struggling stand-up comic Leah Tang is offered a once-in-a-lifetime chance to join the Genrenauts, a secret organization of dimensional travelers. Leah learns that our world is just one of many, and every other world is the home of a story genre — Science Fiction or Romance, Fantasy or Western — populated by archetypal characters and constantly playing out familiar stories.</p>
<p>The Genrenauts’ mission: find and fix broken stories. If they fail, the ripples from the story worlds will cause havoc and devastation on their home world.</p>
<p>Leah joins the team and dives head-first into the adventure. But the stories are breaking faster and worse than ever before. Will Leah rise to the occasion, or will she end up as just another broken story?</p>
<p><strong>An adventure science fiction series for all fans of Leverage, Quantum Leap, or Redshirts!</strong></p>
<p>Contains all six novellas from Season One of the r/Fantasy "Stabby" Award-finalist series:</p>
<p><em>The Shootout Solution * The Absconded Ambassador * The Cupid Reconciliation * The Substitute Sleuth * The Failed Fellowship</em> (Part 1 & 2)</p>
<p><u><strong>Brought to you by the support of hundreds of Kickstarter backers!</strong></u></p>
<p>Cover art by Thomas Walker, Graphic Design by Sean Glenn<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/GDB5YNdNJjw" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1nLzE5NDQ2NjcuanBn/original/mXBf32.jpg]]
<p class="text-center"><img src="https://img.itch.zone/aW1nLzIyOTA5MDgucG5n/original/4T5%2F9Y.png" alt="Get In The Robot" title="Get In The Robot" loading="lazy"><br></p>
<h2>A Storytelling Card Game About Saving The World With Lasers, Giant Robots, and Bureaucracy.</h2>
<p><strong>By <a href="https://twitter.com/mqsalmon" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Mitchell Salmon</a>.</strong></p>
<p><em></em></p>
<p><em>The first monster appeared five years ago. It rampaged across the country. The loss of life was catastrophic.</em></p>
<p><em>After hundreds of hours and millions of dollars spent, the leaders of the world considered the fallen body of the monster and said, “There must be a better, <strong>more awesome</strong> way of defending the world.”</em></p>
<p><em>This is how <strong>the Agency</strong> was established in the shadows at the edge of the law. It was set up with funding from major world governments, and with an Oversight Committee representing political and corporate interests to keep it in line. It was given a singular mission: defend humanity from monster incursion by whatever means necessary.</em></p>
<p><em>The Agency built the ultimate monster-fighting weapons: robots, standing ten storeys tall and armed with cutting edge weaponry, piloted by heroes drafted and trained to fight as humanity’s last and best hope. To develop and maintain the robots, a huge web of infrastructure, engineering, and administration was built to keep the Agency running in the face of increasingly dangerous monster attacks.</em></p>
<p><em>You are part of that support team, keeping the Agency ready to deploy a giant monster-killing machine at a moment’s notice. Most days it’s just office work. Forms, routine maintenance, and trust building exercises. But every few weeks the red light flashes and the alarm blares. A monster has been spotted.</em></p>
<p><em><strong>Today is one of those days.</strong> The klaxons are blaring. Commanders are shouting orders. In mere hours, the monster will be on top of the city. </em></p><p><em>Everyone needs to do their part. </em><em>It’s time to save the world.</em></p>
<p class="text-center">*</p>
<p><em>Get In The Robot! </em>is a storytelling card game for <strong>2-4 players</strong>, utilising a standard <strong>deck of playing cards</strong> and a <strong>six-sided die</strong>. You will tell the story of a team of mid-level engineers, or accountants, or a human resources managers working for <strong>the Agency</strong>, the shadowy, para-military, government-sponsored, corporate-controlled last and best hope for humanity against the monster invasion.</p>
<table>
<tbody>
<tr>
<td><h3>Details</h3></td>
<td><h3>Themes</h3></td>
</tr>
<tr>
<td>
<p><img src="http://secretprincegame.com/image/icon/group.svg" style="height: 16px" loading="lazy"> 2-4 Players</p>
<p><img src="http://secretprincegame.com/image/icon/time.svg" style="height: 16px" loading="lazy"> 1-2 Hours, 1 Session</p>
<p><img src="http://secretprincegame.com/image/icon/player.svg" style="height: 16px" loading="lazy"> Ages 12+</p><p><img src="http://secretprincegame.com/image/icon/gmless.svg" style="max-width: 100%; height: 16px; font-size: 14px; background-color: rgb(255, 255, 255)" loading="lazy"> No GM or preparation required<br></p>
</td>
<td>
<p><img src="http://secretprincegame.com/image/icon/robot.svg" style="height: 16px" loading="lazy"> Mecha Sci-Fi</p>
<p><img src="http://secretprincegame.com/image/icon/office.svg" style="height: 16px" loading="lazy"> Office Work and Bureaucracy</p>
<p><img src="http://secretprincegame.com/image/icon/team.svg" style="height: 16px" loading="lazy"> Cooperate with Friends<br></p>
<p><img src="http://secretprincegame.com/image/icon/crown.svg" style="height: 16px" loading="lazy"> Win or Lose Together</p>
<p><img src="http://secretprincegame.com/image/icon/dice.svg" style="height: 16px" loading="lazy"> Draw cards and roll dice to find out what happens<br></p>
<p><img src="http://secretprincegame.com/image/icon/book.svg" style="color: inherit; font-size: inherit; height: 16px" loading="lazy"> Tell a story together<br></p>
</td>
</tr>
</tbody>
</table>
<h3>What's Included</h3>
<p>Your download of <em>Get In The Robot! </em>includes a .pdf copy of the rules and card table to give meaning to a deck of playing cards. </p>
<p>You need a <strong>standard deck of playing cards, including Jokers </strong>and <strong>one six sided die (1d6)</strong>.</p>
<p class="text-center">---</p>
<p>I respectfully acknowledge the Wurundjeri people and the Boon Wurrung / Bunurong people of the Kulin Nations as the traditional owners of the land on which the majority of my work takes place. I pay respects to elders past, present, and emerging. Sovereignty was never ceded.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDUxOTM2LzI4NzEyNDQuanBn/original/3Xat9K.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUxOTM2LzI4MTk0NjMuanBn/original/017sKA.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUxOTM2LzI4MTk0NjcuanBn/original/ueiFub.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUxOTM2LzI4MTk0NjQuanBn/original/aSA6oX.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUxOTM2LzI4MTk0NjUuanBn/original/cXfeE0.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUxOTM2LzI4MTk0NjYuanBn/original/oluTCL.jpg]]
<p><img src="https://img.itch.zone/aW1nLzI3NTA5MDEucG5n/original/iHDbJM.png" loading="lazy"><br> <br>Ahoy, a-hey, o loddi-doddi day, fair traveller and welcome to Glittermitten Grove! Here you will find a land of enchantment, whimsy, and resource management. Sow the fields with magic seeds, pick berries from the plentiful boughs of our sugar fern trees, and collect sparkles from the resplendent rays of our sun-kissed thicket to help us prepare for the long winter ahead. Come join us in our faerieland, full of strange adventure!</p>
<p>Features:</p>
<ul><li>Sow the fields with special seeds </li><li>Pick berries for your winter needs
</li><li>Collect sparkles to light up the night
</li><li>Light fribblesham fireworks for happy delight</li></ul><p>If you need help navigating this mystical fairyland, try the <a href="https://twinbeard.itch.io/glittermitten-grove-guide">Glittermitten Grove Guide</a>!<br></p>
<p></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTIwNDQ0LzI3MDI0OTcuanBn/original/frItLq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIwNDQ0LzI3MDI0OTguanBn/original/zXi2OJ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIwNDQ0LzI3MDI0OTkuanBn/original/ogODxP.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIwNDQ0LzI3MDI1MDAuanBn/original/B5yTDA.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIwNDQ0LzI3MDI1MDEuanBn/original/U%2BBWYZ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIwNDQ0LzI3MDI1MDIuanBn/original/79%2FEAI.jpg]]
<p><em>"I was in love with GNOG the second I saw it"-<strong>Rock Paper Shotgun</strong><br>"Weird and wonderful..." -<strong>Polygon</strong><br>"This is such a joyful game, I'm not sure it's possible to leave it without feeling uplifted." -<strong>Destructoid</strong><br>"It's a kooky idea brought about with lots of style and verve..." -<strong>Eurogamer</strong></em><br><br><strong>GNOG</strong> is a playful puzzle game about exploring monstrous virtual toys. Press, pull, slide, grab, click, and rotate every GNOG head to uncover its secrets!</p>
<ul><li>9 musical levels with whimsical puzzles to discover</li><li>A dynamic soundtrack composed by Marskye</li><li>Each level a unique hand-crafted experience</li><li>Play in standard mode or with optional VR support. Seamlessly switch between VR and standard play!</li></ul>
<p><strong>GNOG</strong> is a 3D puzzle game set in a tactile world of toys and secrets. Point, click, grab, poke, spin, pull, and play with uniquely charming monster heads as you explore the hidden worlds inside them. Filled with eye-catching designs, playful interactions, and a rich, reactive soundtrack, the hand-crafted heads come to life in either standard play or in VR.<br><br>Inspired by real-world toy designs, every <strong>GNOG</strong> head is a miniature world to discover. Grab a bookcase and spin it to reveal a hidden pile of coins, slide levers to navigate a damaged ship through outer space, crank a wheel to cook a stew on the stove – each playful interaction generates lively feedback and surprising consequences. Set to a relaxing and dynamic soundtrack that evolves with each level, the surreal worlds and joyful puzzles of <strong>GNOG</strong> will have you turning heads.</p>
<h1>Platforms</h1>
<p>Windows<br>Mac<br>VR (Oculus Rift and Vive support)</p>
<h2>Contact</h2>
<p><a href="https://twitter.com/Koopmode" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/Koopmode</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/ABDW8L7v7FE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1nLzg0NjU3NC5qcGc=/original/%2Bq03Qo.jpg]][img width=500 [https://img.itch.zone/aW1nLzg0NjU3NS5qcGc=/original/aKfMTc.jpg]][img width=500 [https://img.itch.zone/aW1nLzg0NjU3Ni5qcGc=/original/COYhm6.jpg]][img width=500 [https://img.itch.zone/aW1nLzg0NjU3Ny5qcGc=/original/1MSDXT.jpg]][img width=500 [https://img.itch.zone/aW1nLzg0NjU3OC5qcGc=/original/ROEmCr.jpg]]
<h1>In <span style="color: #eb8900">GOOD DOG</span>, you are a good dog.</h1>
<p>Spend a day at your workplace, cheering up patients at the hospital. Wag your tail, smooch and cuddle to lift spirits, but be aware that not everyone responds the same way to every interaction! Find the appropriate one for each patient and cheer them up.</p>
<ul><li><em>Run around</em></li><li><em>Bark at people (goodly)</em></li><li><em>Wag your tail, lick and cuddle </em></li><li><em>Support a worthy cause</em></li><li><em>Be good</em></li></ul>
<h4><strong>GOOD DOG</strong> is a <span style="color: #eb8900">charity microgame</span> made over a few weeks for fun - it's completely free to play, but any and all money you may choose to donate will go directly to charity. Currently, we're donating to:</h4><h2></h2><h2>UPDATE: The first round of donations amounted to 200 USD, which has now been split between both charities! Thank you for your generosity, everyone <3 </h2>
<p></p>
<h1><img src="https://img.itch.zone/aW1nLzU5ODA3MTkucG5n/original/3KRWxU.png" loading="lazy"></h1>
<p>DIRECT RELIEF to aid COVID-19 Relief in India, and</p>
<p>REBUILDING ALLIANCE for their Gaza Emergency Relief Fund and to help rebuild homes in Palestine.</p>
<p><strong>CREDITS:</strong></p>
<p>Game by:</p>
<p><a href="https://twitter.com/marafrass" rel="nofollow noopener" referrerpolicy="origin">@marafrass</a> & <a href="https://twitter.com/rnoelliams" rel="nofollow noopener" referrerpolicy="origin">@rnoelliams</a></p>
<p><span class=""><strong><a href="https://freesound.org/people/JakLocke/sounds/261107/" rel="nofollow noopener" referrerpolicy="origin">Door Sound by JakLocke</a></strong></span></p>
<p><span class="">"Fretless" Kevin MacLeod (incompetech.com)</span><span class=""> </span><span class="">Licensed under Creative Commons: By Attribution 4.0 License</span>
</p>
<p><span class=""></span></p>
<p>Stock photos of dogs by <a href="https://unsplash.com/@roaming_angel" rel="nofollow noopener" referrerpolicy="origin">Angel Luciano</a> and <a href="https://unsplash.com/@rstone_design" rel="nofollow noopener" referrerpolicy="origin">Ryan Stone</a></p>
<p>Everything else licensed under Creative Commons or made by marafrass!</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjMwMy81OTgwNDAzLmdpZg==/original/9I8ndL.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjMwMy81OTgwNDA5LmdpZg==/original/0%2Bosp3.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjMwMy81OTgwMzg2LnBuZw==/original/CMVUMH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjMwMy81OTgwMzg1LnBuZw==/original/NEk%2F0X.png]]
<p><span></span></p>
<p><strong>Play as Jessica and Amira, childhood best friends, running their dream food court during the busy month of Ramadan. </strong></p>
<p><strong>Will their friendship withstand the pressure? </strong><br></p>
<p><strong>Or will the stress of running a business together shut down the GLHC food court for good?</strong>
</p>
<p><strong>You decide.</strong>
</p>
<p>Playtime: An 'easily digestible' 60 minutes.
</p>
<p><br><span></span></p>
<p><em>CMC vignettes are unique snack sized games. They feature characters and locations from Call Me Cera.</em></p>
<p><em>A portion of all Toadhouse Games sales goes to charities that benefit the marginalized groups our characters represent. </em></p>
<p></p>
<p><strong>Call Me Cera: A wholesome game about making friends as an adult. <br></strong> Wishlist here: <a href="https://store.steampowered.com/app/1523870/Call_Me_Cera/" rel="nofollow noopener">https://store.steampowered.com/app/1523870/Call_Me_Cera/</a> </p>
<p>Come chat to us in our Toadhouse Discord: <a href="https://discord.gg/Q5mK58hMSt" rel="nofollow noopener">https://discord.gg/Q5mK58hMSt</a> </p>
<p>Play the CMC vignettes here: <a href="https://teamtoadhouse.itch.io/">https://teamtoadhouse.itch.io/</a> </p>
<p>Follow Toadhouse Games: <a href="https://twitter.com/Toadhouse_Games" rel="nofollow noopener">https://twitter.com/Toadhouse_Games</a> <br>Follow Call Me Cera: <a href="https://twitter.com/CallMeCera" rel="nofollow noopener">https://twitter.com/CallMeCera</a> <br>Follow Team Toadhouse: <a href="https://twitter.com/Toadhouse_Games" rel="nofollow noopener">https://twitter.com/TeamToadhouse</a></p>
<p></p>
<h3>If your computer tries to block the application: </h3>
<p>Windows users: Click the “Open Settings” link or head back to Settings > Apps > Apps & Features and set the option to "Allow apps from anywhere."
</p>
<p>If Microsoft Defender SmartScreen pops up: Click more info, click run anyway.
</p>
<p>Mac Users: Right click on application, click 'open.' Agree to the pop up.
</p>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/II9oEua22Ck" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTU0OTE3LzU0OTkwNzIucG5n/original/50sFku.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU0OTE3LzU0OTkwNzMucG5n/original/bIo%2Fz2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU0OTE3LzU0OTkwNzEucG5n/original/8%2FVwEl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU0OTE3LzU1MDM5MTMucG5n/original/BVSLLm.png]]
<p><span></span></p>
<p><strong><img src="https://img.itch.zone/aW1nLzc3NzU5OTEucG5n/original/s%2F2A3b.png" loading="lazy"><br></strong></p>
<p><strong>It’s Ramadan!</strong><br></p>
<p>Good Lookin’ Home Cookin’ food truck park (GLHC, for short) is 100% halal. Amira and Jessica know that Ramadan is a chance for them to show the citizens of Fernweh that halal food can be enjoyed by anyone, year round. But, this also puts the pressure on - As one of Fernweh’s only halal options, every Muslim family starts to order their iftar meals from GLHC food court. </p>
<p>Will their dream of running a successful business together destroy their friendship? Or will the stress of running a business together shut down the GLHC food court for good?</p>
<p><strong>You decide.</strong>
</p>
<p>Playtime: An 'easily digestible' 60 minutes.
</p><blockquote>“We see how the protagonists are on guard in nearly every conversation, wanting desperately to share their culture and food truck dining spot with the world but also hesitant to trust their own vulnerability.”</blockquote>
<blockquote>— Todd Martens, <a href="https://www.latimes.com/entertainment-arts/story/2021-04-12/good-lookin-home-cookin-celebrates-ramadan-and-power-of-sharing-via-food" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Los Angeles Times</a></blockquote>
<figure><img src="https://img.itch.zone/aW1nLzc3NzU3OTkucG5n/original/8iW0eO.png" loading="lazy"><br></figure>
<p><strong>Negative Self-Talk</strong><br>Amira and Jessica both experience stress from running a business and pressure from their families, though in different ways. Amira, in particular, takes criticism to heart and is hard on herself, in an unproductive way. We aim to show how negative self-talk and undiagnosed depression can manifest and how a person can help their friend through a low spiral.</p>
<p><img src="https://img.itch.zone/aW1nLzc3NzU3OTgucG5n/original/Q%2F4%2BKD.png" loading="lazy"><br></p>
<p><strong>Cultural Awareness</strong><br>Good Lookin’ Home Cookin’ takes place in a fictional Northeast coastal town in the United States called Fernweh (pronounced Fern - Vee), with a strong LGBTQIA+ and diverse community. Toadhouse Games has reached out to the communities we aim to represent to ensure we do so in an accurate and respectful manner. We also hire cultural consultants and sensitivity readers.<br><span></span></p>
<p><em>CMC vignettes are unique snack sized games. They feature characters and locations from Call Me Cera. </em><em>A portion of all Toadhouse Games sales goes to charities that benefit the marginalized groups our characters represent. </em></p>
<p><img src="https://img.itch.zone/aW1nLzc3NzU3OTkucG5n/original/8iW0eO.png" loading="lazy"></p>
<p><strong>Call Me Cera: A crunchy wholesome game about making friends as an adult. <br></strong> Wishlist here: <a href="https://store.steampowered.com/app/1523870/Call_Me_Cera/" rel="nofollow noopener" referrerpolicy="origin">https://store.steampowered.com/app/1523870/Call_Me_Cera/</a> </p>
<p>Join the Team Toadhouse Discord: <a href="https://discord.gg/Q5mK58hMSt" rel="nofollow noopener" referrerpolicy="origin">https://discord.gg/Q5mK58hMSt</a> </p>
<p>Play the CMC vignettes here: <a href="https://teamtoadhouse.itch.io/">https://teamtoadhouse.itch.io/</a> </p>
<p>Follow Toadhouse Games: <a href="https://twitter.com/Toadhouse_Games" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/Toadhouse_Games</a> <br>Follow Call Me Cera: <a href="https://twitter.com/CallMeCera" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/CallMeCera</a> <br>Follow Team Toadhouse: <a href="https://twitter.com/Toadhouse_Games" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/TeamToadhouse</a></p>
<figure><img src="https://img.itch.zone/aW1nLzc3NzU4MDcucG5n/original/yshdgK.png" loading="lazy"></figure>
<iframe width="720" height="450" src="https://www.youtube.com/embed/II9oEua22Ck" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTU0OTE3LzU0OTkwNzIucG5n/original/50sFku.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU0OTE3LzU0OTkwNzMucG5n/original/bIo%2Fz2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU0OTE3LzU0OTkwNzEucG5n/original/8%2FVwEl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU0OTE3LzU1MDM5MTMucG5n/original/BVSLLm.png]]
<p class="text-center"><br></p>
<p class="text-center">Even if you always stay a member of racing club,</p>
<p class="text-center">There will be times when you won't be able to participate.<br></p>
<p class="text-center">But don't worry, the club will wait for you.</p>
<p class="text-center">So just grab a pear, watch the races, and hang out with friends.</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzE1MTMxMDcuZ2lm/original/VJF%2BK2.gif" loading="lazy"><br></p>
<h2 class="text-center">CONTROLS</h2>
<p class="text-center">
<em><strong>W / D / S / A</strong></em> – move<br>
<strong><em>LMB</em> or </strong><em><strong>E</strong></em> – action<br>
<strong><em>ESC</em> or </strong><em><strong>ENTER</strong></em> – pause / unpause game<br>
<em><strong>LEFT SHIFT</strong></em> – run
</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzE1MTMxMDguZ2lm/original/6%2FRae8.gif" loading="lazy"><br></p>
<h2 class="text-center">FAMICASE</h2>
<p class="text-center"><em><strong>Good Morning Drifter</strong> </em>is an<em> </em><em>AGBIC 2018</em> submission<em> </em>based on the original Famicase cover design by Kyle McKernan / <a href="https://twitter.com/spacetreasured" class="" rel="nofollow noopener" referrerpolicy="origin"><span class="" dir="ltr">@<span class="">spacetreasured</span></span></a>:</p>
<p class="text-center">
<img src="http://famicase.com/18/softs/160_sample.jpg" alt="Saturday Race Club" width="400" loading="lazy"></p>
<h2 class="text-center">WORDS</h2>
<p class="text-center">
<strong><em>
"A whimsical little experience that’s all about having fun with friends rather than coming first" <em><strong></strong></em></em></strong>
–
<a href="https://www.alphabetagamer.com/good-morning-drifter-game-jam-build/" rel="nofollow noopener" referrerpolicy="origin">Alpha Beta Gamer</a>
</p>
<p class="text-center">
<strong><em>
"You’re free to eat a few pears" <em><strong></strong></em></em></strong>
–
<a href="https://indiegamesplus.com/2018/11/good-morning-drifter-explores-the-community-around-racing" rel="nofollow noopener" referrerpolicy="origin">Indie Games Plus</a>
</p>
<p class="text-center">
<strong><em>
"갈등도 없고 사건도 없는 느긋한 일상같은 게임입니다" <em><strong></strong></em></em></strong>
–
<a href="http://rabapyca.blogspot.com/2018/09/good-morning-drifter.html" rel="nofollow noopener" referrerpolicy="origin">펼치다</a>
</p>
<p class="text-center">
<strong><em>
"Download on itch.io (Windows, Mac)" <em><strong></strong></em></em></strong>
–
<a href="http://warpdoor.com/2018/09/26/good-morning-drifter/" rel="nofollow noopener" referrerpolicy="origin">Warp Door</a>
</p>
<p class="text-center">
<strong><em>
"And through this delightful tapestry, we learn to come a little closer to all the loved ones we may have in our own lives" <em><strong></strong></em></em></strong>
–
<a href="https://www.rebind.io/good-morning-to-everyone-especially-you-good-morning-drifters-1966/" rel="nofollow noopener" referrerpolicy="origin">RE:BIND</a>
</p>
<p class="text-center">
<strong><em>
"A cozy, relaxing game about hanging out with your street racing friends. Grab a few pears!" <em><strong></strong></em></em></strong>
–
<a href="https://twitter.com/wf__games" rel="nofollow noopener" referrerpolicy="origin">Weird Fucking Games</a>
</p>
<p><strong><img src="https://img.itch.zone/aW1nLzE1MzY2NzkuZ2lm/original/gvtiR2.gif" loading="lazy"><br></strong></p>
<h2 class="text-center">CREDITS</h2>
<p class="text-center">
Made by <a href="https://twitter.com/lowpolis" rel="nofollow noopener" referrerpolicy="origin">@lowpolis</a><br>
Graphics, Writing by rayzones<br>
Programming, Music, SFX by Yaffle<br>
Famicase cover by <a href="https://twitter.com/spacetreasured" rel="nofollow noopener" referrerpolicy="origin">@spacetreasured</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzA1MjY4LzE1Mzc2MzYuZ2lm/original/gkhmn8.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA1MjY4LzE1Mzc2MzcuZ2lm/original/D4OT2R.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA1MjY4LzYxMjc1ODAucG5n/original/L8bqBV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA1MjY4LzE1MTI5NzkucG5n/original/WOkblk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA1MjY4LzE1MTI5ODAucG5n/original/adp7gQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA1MjY4LzE1MTI5ODMucG5n/original/6PyqkU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA1MjY4LzE1MTI5ODIucG5n/original/gjkM2o.png]]
<p>Little Goopty-Goo wants leave his life in the tower, he will need to stomp on goo squares and make sure to not break that squishing combo if he wants to get out any time soon. </p>
<p>Goopty Goo is game inspired by the floor is lava and squishing enemies in mario games. After you stomp the first goo square in each room you can't touch the floor until you have squished all the goo in that level.</p>
<p><strong>Play Time:</strong> 10-20 minutes</p>
<p> <strong>Controls </strong></p>
<p> <strong> Space/W:</strong> jump
</p>
<p> <strong>A/D:</strong> move left and right
</p>
<p> <strong> S: </strong>Stomp</p>
<figure><a href="https://www.patreon.com/DylanBrownGames" target="_blank" rel="nofollow noopener" referrerpolicy="origin"></a></figure>
<iframe width="720" height="450" src="https://www.youtube.com/embed/xEN9Ks1llq8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDM4MzMxLzIyMDE2NTQucG5n/original/1Z4Uk1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDM4MzMxLzIyMDE2NDMucG5n/original/txcOlr.png]]
<p>Chop, sear, and eat your way through a collection of organic minigames in GourMelee! Play with two to eight players in this local multiplayer party game where you share your controller with a friend to dominate the kitchen. Every minigame is made with cooperation in mind. Each player holds half of the controller working together with their other half to become the best chef in the kitchen! GourMelee is the perfect snack at a party, bust it out with the chips and dip!<br></p>
<p><strong>GourMelee requires at least two controllers to play and is local multiplayer only</strong></p><p></p><p>Game by: Anthony Tesija<br>Music by: Visager, Nik Tesija</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/zYyuw5ZdBGg" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjA4MTU2LzIxMjUzNzgucG5n/original/YgTYeO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA4MTU2LzIxMjUzODEucG5n/original/GI85XY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA4MTU2LzIxMjUzODIucG5n/original/rIRaTQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA4MTU2LzIxMjUzODMucG5n/original/W5kNID.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA4MTU2LzIxMjUzOTAucG5n/original/Vx8NLE.png]]
<p>a collection of all of my photoshop artwork from 2019 - PSDs included! remix it, mess with it, play around with it all you want. <br></p>
<p>a note: all of this art was created in Photoshop CS6 - i don't have any other versions of it, so i'm unable to see if the art will load properly in any newer (or older) versions of Photoshop.<br></p>
<p>if you use it for anything, credit is greatly appreciated.</p>
<p>commercial use is allowed if you wish, though please give credit if you do so.</p>
<p>highlights of this art can be seen in the gallery at my ko-fi page, linked below.
alternatively, you can view all of my art on my twitter page, also linked below.</p>
<p>thank you for visiting!<br></p>
<p><a href="https://ko-fi.com/splashmob" rel="nofollow noopener" referrerpolicy="origin">https://ko-fi.com/splashmob</a></p>
<p><a href="https://twitter.com/splashmobart" target="_blank" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/splashmobart</a><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODM1MTU2LzU1MDU5NjIucG5n/original/fPJskZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODM1MTU2LzU1MDU5NTgucG5n/original/3TuMh8.png]]
<h3 class="text-center">Swing, climb, grab, and throw in this action platformer where you can <strong>grapple anywhere</strong>!</h3>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzE5MTQ5MTguZ2lm/original/%2FoRJOf.gif" loading="lazy"><br></p>
<p>Grappling's the name of the game! The rules are simple:</p>
<ul><li>Grapple onto any surface and swing!</li><li>Grab enemies and objects and throw!</li></ul>
<p>...but the possibilities are endless! Hijack a hoverbike, shoot some billiards, play some pinball, solve a pipe puzzle, take a ride on a flying flower - every new course brings new challenges!</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzE5MTQ5MjAuZ2lm/original/Co0KUz.gif" loading="lazy"></p>
<p>Featuring a story told across 30 courses, there's hours of platforming fun in the base game alone - but there's even more to do! <strong>Score Attack</strong> for A and S ranks, challenge the post-game <strong>Boss Rush</strong>, collect <strong>Cassette Tapes</strong> hidden throughout the game, and refine your swinging technique in <strong>Time Attack</strong> - the fun, unique movement makes Grapple Force Rena a <a href="https://www.speedrun.com/gfr" target="_blank" rel="nofollow noopener" referrerpolicy="origin">great speed game</a>!</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzE5MTQ5MjEuZ2lm/original/NYSSDr.gif" loading="lazy"></p>
<h2 class="text-center">Swing anywhere! Throw everything!</h2>
<p class="text-center"><a href="https://discord.gg/2pcU726" target="_blank" rel="nofollow noopener" referrerpolicy="origin">GalaxyTrail Discord server</a> - <a href="http://www.grappleforce.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Official website</a> - <a href="https://github.com/GalaxyTrail/GFR_bugs/issues" target="_blank" rel="nofollow noopener" referrerpolicy="origin">GitHub bug tracker</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzgxODM1LzE5MTQ4ODQucG5n/original/WGprvT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzgxODM1LzE5MTQ4ODUucG5n/original/5nrNZY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzgxODM1LzE5MTQ4ODYucG5n/original/G7xnkR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzgxODM1LzE5MTQ4ODMucG5n/original/am2fYX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzgxODM1LzE5MTQ4ODcucG5n/original/CQP3aX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzgxODM1LzE5MTQ4ODgucG5n/original/Asg9lr.png]]
<p>Gratia is a short, narrative role-playing game with an emphasis on gratitude and friendship! Play as a slime, unravel the mysteries of the town of Gratia, and make some friends along the way!</p>
<p>This game was created as a directed study over the span of one fifteen-week semester. The development process from start to finish is documented on <a href="https://github.com/ChaoticTeal/Directed-Study-FA19/wiki" target="_blank" rel="nofollow noopener" referrerpolicy="origin">GitHub</a>, and the devlog video playlist is on <a href="https://www.youtube.com/playlist?list=PLI2WfmaGGL0rv_MVuAtjTDfONqO6jvUYc" target="_blank" rel="nofollow noopener" referrerpolicy="origin">YouTube</a>.</p>
<p>Credits:</p>
<p>Game by <a href="http://www.joshuawhittom.com/portfolio/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Joshua Whittom</a></p>
<p>Music by Javan Whitney-Warner</p>
<p>Art: <a href="https://sharm.itch.io/tiny16" target="_blank">Tiny 16</a> by <a href="https://itch.io/profile/sharm" target="_blank">Lanea Zimmerman</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/wdZXJq3T76M" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTMwOTIxLzI3NzM1NzMucG5n/original/MyKuWZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTMwOTIxLzI3NzM1NzEucG5n/original/8BXvNt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTMwOTIxLzI3NzM1NzIucG5n/original/fKpWaF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTMwOTIxLzI3NzM1NzQucG5n/original/NgJ%2F3H.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTMwOTIxLzI3NzM1NzAucG5n/original/R5UpVN.png]]
<blockquote class="text-justify">//<strong>DISPATCH: </strong><em>SONG-7-NUIT-ORYX</em>// /Belchior - it happened again. I don't know what to tell you. We've tried everything - confining him to his quarters, a full medical scan - we even sent samples back to R&D, but nobody can explain it. I'm writing to you to let you know that it's happening to me too. And I'm sorry, Belchior. The entity wants us all. Do not send any reinforcements, lest they fall under its sway too. I hope this finds you well. I'm sorry. I can't hold on for much longer, Belchior, so hear me when I say - there's nothing we can do. It's old. It's powerful. And we'll never understand it. It's infested the Walker model. /Lieutenant Oswald - Engineering/ //end transmission//</blockquote>
<p class="text-justify"><strong>GREATER SECRETS </strong>is a <em><a href="https://austin-ramsay.itch.io/beamsaber/devlog/174666/the-beam-saber-supply-drop-licence"><strong>Beam Saber Supply Drop</strong></a></em>. It's designed as a supplement for the mech roleplaying game <a href="https://austin-ramsay.itch.io/beamsaber"><strong><em>Beam Saber</em></strong></a> by Austin Ramsay. Be sure to check out the hyperlink for the full rules in case you need explanations for any of the rules of the base game. <em>This material is an unofficial supplement and is not affiliated with Austin Ramsay.</em></p>
<p class="text-justify">GREATER SECRETS has been co-authored by <strong><em><a href="https://yurir.itch.io/">Yuri Runnel</a></em></strong> and <a href="https://deviantwarlock.itch.io/"><strong><em>August Orion</em></strong></a>. It aims to bring elements of fantasy, horror and the strange to the world of Beam Saber. It currently consists of 12 Pilot Playbooks and rules for creating Legendary Vehicles. <br></p>
<p class="text-justify">The Supply Drop contains the following Playbooks:</p>
<ul class="text-justify"><li class="text-justify"><strong>THE CHARIOT:</strong> A warrior that has been modified for battle by being permanently attached to a war machine. </li><li class="text-justify"><strong>THE LOVERS: </strong>A person that is bound to a great machine spirit that takes the form of their vehicle. CW: potential body horror</li><li class="text-justify"><strong>THE SUN:</strong> A weapons master and protector that wields their signature weapon with ease in order to protect those close to them.</li><li class="text-justify"><strong>THE HIEROPHANT:</strong> A religious leader empowered by their faith, exploring the place of spirituality in a mass conflict. CW: potential religious abuse</li><li class="text-justify"><strong>THE DEATH:</strong> A person capable of controlling the forces of nature, including a giant beast they’ve tamed to do their bidding. CW: animal death and injury, disease, gore, insects</li><li class="text-justify"><strong>THE MOON:</strong> A person capable of supernatural feats who has refined them into a fine weapon.</li><li class="text-justify"><strong>THE MAGICIAN:</strong> A psychic caught between the digital and material. They can manipulate both with equal skill.</li><li class="text-justify"><strong>THE TOWER:</strong> A person brought back from the dead in order to go on a quest for vengeance against those that killed them. CW: tragic death, revenge, cycles of abuse</li><li class="text-justify"><strong>THE DEVIL:</strong> Someone bound to a terrifying entity within their vehicle to whom they can become indebted to do great feats. CW: abusive relationships</li><li class="text-justify"><strong>THE STAR:</strong> An elemental of water and ice. Steady, hard to kill and adaptable, yet still greatly different from everyone around them. CW: xenophobia, racism, alienation</li><li class="text-justify"><strong>THE STRENGTH: </strong><span class="">Become a monster hunter who puts their skills to use to support their allies with their culinary skills and keep them safe from giant monsters.</span> </li><li class="text-justify"><strong>THE EMPEROR: </strong><span class="">The Emperor embodies a leader who serves their patron faction while using others for their own ends. CW: power abuse</span> </li></ul>
<p>If any of this sounds interesting to you, be sure to check it out! This has been the culmination of a lot of hard work so any interaction with the product is appreciated! Thank you!<br></p>
<p class="text-center"></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODU3MDgxLzQ4MjIzODgucG5n/original/2od9cL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODU3MDgxLzQ4MjIzODcucG5n/original/FXuove.png]]
<p>Greedy Bubble is a brutally hard arcade game about a bubble that is trapped inside a cave and wants some cash.</p>
<p>Features:</p>
<ul><li>30 hard levels</li><li>Old-school style</li><li>Super cool art and sounds</li></ul>
<p><br></p>
<p><strong>Programming & Game Design - SG</strong></p>
<p><strong>Level Design - Manodeix, SG</strong></p>
<p><strong>Arts - SG, Oskar</strong></p>
<p><strong>Audio - SG (SFX), JHENKINS (OST)</strong></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAzODY2Ni81OTMxMTUzLnBuZw==/original/5bgvRO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzODY2Ni81OTMxMTYxLnBuZw==/original/3tLF6T.png]]
<p></p>
<h1><strong></strong>Three lineage options and two backgrounds for making wild and green characters in Fifth Edition!</h1>
<p>Green Lineages presents three new plant-themed lineages for making wild and green characters in 5E, and two corresponding backgrounds to contextualize characters of other lineages within the cultures presented.
</p>
<ul><li>Hail from the savage Greenwild as one of the powerful and communal aurx, green-skinned and fuelled by the sun!
</li><li>Be caught between two worlds as a strong and empathetic half-aurc, an unpredictable union of human and aurc to whom friends come first!
</li><li>Dwell among the forests of the world as one of the verdants, serene and contemplative treefolk!
</li><li>Contextualize your aurc or verdant character more firmly within their cultures using the Aurc Tribesperson and Verdant Copsetender backgrounds, or use them to play characters of other lineages raised within the forest or jungle!
</li></ul>
<h3>Green Lineages is a FLEDGLING product, part of our line of stripped-back, shorter/experimental content. Read this to find out what that means!</h3>
<ul><li><strong>Our budget for Fledglings outside of writing, design and layout is close to, if not, zero. That means no art, no cartography, no external editing, unless we can produce it on that budget.</strong>
</li><li><strong>We put every bit as much effort into said writing, design and layout as other, higher production products, and we think the content is just as high quality.</strong>
</li><li><strong>We'll be keeping an eye on the popularity of individual Fledglings and may elevate them from Fledgling status if they prove popular enough to warrant it. That means art, cartography, external editing, all that good stuff.</strong>
</li><li><strong>Fledgling content may be rolled into other products down the line. Your Fledgling copy will always have the most up-to-date text.</strong>
</li><li><strong>If Fledgling content is iterated on, its price may increase later. If you already own it, you already own it, and you've saved a bit of money. Hurrah!</strong>
</li><li><strong>Overall, this is really a big experiment, and we don't entirely know what the future holds, but we promise to do our best by you as thanks for supporting us.</strong>
</li></ul>
<p>Think of Fledglings as the equivalent of a Beta or Early Access game. We'll do our best to produce as high-quality content as we can with our resources, but ultimately the network will decide how much attention these Fledglings get. The best thing you can do to help them get more attention is sharing them with people you think would be interested.
</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAxMTc2MS81NzY0NTM5LmpwZw==/original/MgyY6Y.jpg]]
<p>GrimBlade is a light and fast-paced roleplaying game of adventures and stories set within an implied Grim fantasy world. Contained in these pages are the bones of a roleplaying game. The reasoning for this is that it is <strong>YOUR</strong> game. It is expected that readers and Game Masters will add, remove, create and hack the game that best fits any gaming group.<br><br>GrimBlade is a small zine with only 12 interior pages. </p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTczNDAzLzU1Mjc0NTMucG5n/original/rz2338.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTczNDAzLzU1Mjc0NTIucG5n/original/lYVbrE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTczNDAzLzU1Mjc0NTQucG5n/original/sMqcfk.png]]
<p><img src="https://img.itch.zone/aW1nLzE5NzczOTQucG5n/original/Hd%2F6m%2F.png" loading="lazy"><br></p>
<p>Maintaining a healthy Work-Life balance is pretty tricky on a good day but it’s damn near impossible when your boss threatens foreclosure on your mortal existence. As the new bartender at DEAD-END, you’ll make new friends, mix weird drinks, all while navigating Life, Death and everything in between.</p>
<p>Learn more about the residents of New Eden City and yourself in this Noir, Urban, Fantasy Visual Novel.<br><br></p>
<p><img src="https://img.itch.zone/aW1nLzE5NzczOTUucG5n/original/xME2LF.png" loading="lazy"></p>
<p><strong>Current Features:</strong><br></p>
<ul><li>Includes Episode 1, 2 & 3</li><li>A wide cast of patrons looking for a shoulder to cry on!</li><li>A Jazzy, Noir, Manga-inspired Aesthetic</li><li>Choices that matter! </li></ul>
<figure><img src="https://img.itch.zone/aW1nLzE5NzczOTYucG5n/original/EcaN78.png" style="color: inherit; font-size: inherit" loading="lazy"><br></figure>
<p><em>“The first and only chapter on offer so far, paints a nice introduction to this world, laying the groundwork for a promising game to come.”</em><br><a href="http://www.hyperlightup.com/grimm-tonic-what-its-like-bar-tending-at-dead-end/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Hyper Light Up</a><br><em><br>“... Grimm & Tonic may just be quirky enough to escape a niche market. I can only hope that the effort doesn't sully with time.”</em><br><a href="https://www.keengamer.com/article/20417_grimm-tonic-preview" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Keen Gamer</a><br></p>
<p class="text-center">- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<br></p>
<h3 class="text-center">TRY THE <a href="https://www.newgrounds.com/portal/view/748428" target="_blank" rel="nofollow noopener" referrerpolicy="origin">DEMO</a>!</h3>
<p></p>
<h3 class="text-center">FOLLOW ON </h3>
<p class="text-center"><strong><a href="http://bit.ly/2UnlnzE" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Steam Page</a> <a href="https://twitter.com/spriteWrench" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Twitter</a> <a href="http://spritewrench.com/Grimm-Tonic/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Official Site</a></strong><strong></strong></p>
<h3 class="text-center">PRESSKIT</h3>
<p class="text-center"><strong></strong><strong><a href="http://bit.ly/2I5CZcD" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Visit The Presskit</a></strong></p>
<p class="text-center">- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -</p>
<p class="text-center"><em>Want to share your thoughts? Feel free to tweet the game with the hashtag #GrimmTonic!<br></em></p>
<p class="text-center"><em><strong>Want to contribute to the development of the game? </strong><br>Submit your feedback to <strong>ghenry@spritewrench.com</strong> with the <u>subject line: "GnT Feedback"</u><br></em></p>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/xh6_MG1toMA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzEyMzQ1LzE1MzUwMzUucG5n/original/Ox1owZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzEyMzQ1LzE1MzUwMzcucG5n/original/2ntRnn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzEyMzQ1LzE1MzUwMzgucG5n/original/HPOboq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzEyMzQ1LzE1MzUwMzYucG5n/original/uwaah5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzEyMzQ1LzE1MzUwNDAucG5n/original/340jqn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzEyMzQ1LzE1MzUwMzkucG5n/original/mF%2Bnqt.png]]
<p>Original Soundtrack for GRINDSTONE.</p>
<p>All music by Sam Webster. Mixed by Sam Webster.<br>Mastered by Andy Magoffin at the House of Miracles: <a href="http://thetwominutemiracles.com/" rel="nofollow noopener" referrerpolicy="origin">thetwominutemiracles.com</a><br>Additional vocals throughout by Morgan Joy.<br><br>Extra special thanks to Nathan Vella, Dan Vader, Kris Piotrowski, Jim Guthrie and everybody at Capy Games.<br><br>Album Art by Kelly Smith: <a href="https://linktr.ee/beatfist" rel="nofollow noopener" referrerpolicy="origin">linktr.ee/beatfist</a><br><br>Game available now on Apple Arcade:<br></p>
<p><a href="http://www.grindstonegame.com/" rel="nofollow noopener" referrerpolicy="origin">www.grindstonegame.com</a></p>
<p><a href="http://www.capybaragames.com/" rel="nofollow noopener" referrerpolicy="origin">www.capybaragames.com</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/26UtmuqU37Q" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1nLzM1OTI2MjYucG5n/original/eT20Lo.png]]
<p><strong>~Huge Update Out Now</strong>~<br></p>
<p>Playing as Bruce, the world's most talented indoor gardener, you will travel to different eras and worlds in order to water, light, and tend to the most tedious plants with the high-tech magic of a watering can, a reflective mirror, and an electric fan, to name just a few tools at your disposal.<br><br>Using straightforward controls taught in an intuitive way, experience the simple but challenging systems in this top-down 2d plant simulator, in all of it's pixel-art glory [Zero pixels were rotated in the making of this game].<br><br>In the new Ultimate Edition, every aspect of the Grow Big (or Go Home) has been expanded on and improved upon, including visuals, audio, and gameplay. There is now original music themed to each and every location and the brand-new hard mode, which doubles the length of the game, can be attempted for those seeking a challenge.<br><br>Drop your jaw at the paradox between such cheerful tunes and such mind-flipping gameplay as you play through now 30+ imaginative levels; Can you reach the newly-expanded procedural and replayable level set in Hell? Can you unlock the 3 themed outfits that Bruce desires? Can you complete hard mode and master the art of gardening? The answer to each of these questions lies in the “Buy Now” button above.<strong></strong></p>
<p>===</p>
<p>Update v2.0 (Ultimate Edition) released - more details here: <a href="https://www.quarantinc.com/post/grow-big-or-go-home-ultimate-edition-v2-0-out-now" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Quarant Inc Ultimate Edition Update Blogpost</a></p>
<p>Update v1.01 released - more details here: <a href="https://www.quarantinc.com/post/post-launch-update-v1-01" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Quarant Inc v1.01 Update Blogpost</a><span></span></p>
<p>===</p>
<p>Facebook: <a href="https://www.facebook.com/QuarantInc.Coop" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Quarant Inc</a></p>
<p>Twitter: <a href="https://twitter.com/QuarantInc" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@QuarantInc</a></p>
<p>Instagram: <a href="https://www.instagram.com/quarant_inc/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Quarant_Inc</a> </p>
<p>Tiktok: <a href="https://www.tiktok.com/@quarant_inc?" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Quarant_inc</a></p>
<p>Website: <a href="https://www.quarantinc.com" style="font-size: inherit" target="_blank" rel="nofollow noopener" referrerpolicy="origin">QuarantInc.com</a></p>
<p>Reddit: <a href="https://www.reddit.com/r/QuarantInc/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">r/QuarantInc</a></p>
<p>===</p>
<p>Ultimate Edition trailer:</p>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/osAixuhb2gs" frameborder="0" allowfullscreen=""></iframe></div>
<p></p>
<p>Release trailer:</p>
<div class=""><iframe style="width: 500px; height: 281px" src="//www.youtube.com/embed/C__dThDTFPY" frameborder="0" allowfullscreen=""></iframe></div>
<p></p>
<p>Teaser:</p>
<div class=""><iframe style="width: 500px; height: 281px" src="//www.youtube.com/embed/NPc1U7I10pY" frameborder="0" allowfullscreen=""></iframe></div>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/osAixuhb2gs" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODMyNjI4LzQ4MjQ3NjQucG5n/original/2HrM%2BM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMyNjI4LzQ4MjQ3NjUucG5n/original/7k3Y0M.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMyNjI4LzQ4MjQ3NjcucG5n/original/x6Cio7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMyNjI4LzQ4MjQ3NzAucG5n/original/2YYlhC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMyNjI4LzQ4MjQ3NzEucG5n/original/ecbcbo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMyNjI4LzQ4MjQ3NjkucG5n/original/d5GdjQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMyNjI4LzQ4MjQ3NjYucG5n/original/FhlAXb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMyNjI4LzQ4MjQ3NjgucG5n/original/2PO7tw.png]]
<p>This game is in <strong>OPEN BETA/EARLY ACCESS. </strong>Talk about the game, play or run games, and provide feedback to the official <a href="https://discord.gg/3jgZSmzH7G" target="_blank" rel="nofollow noopener">Gubat Banwa Discord</a>. Learn about what being in early access means below.</p>
<blockquote class="text-center"><strong><span class=""><em><br>The archipelago of never ending war...</em></span>
<br><span class=""><em>Sorrowsong, sorrowsong, that song without end. </em></span>
<br><span class=""><em>Rejoice in the glory of combat, may we never know peace:<br>GUBAT BANWA!</em></span></strong></blockquote>
<p> <strong>GUBAT BANWA</strong> is a tactical martial arts and war drama roleplaying game set in a heroic fantasy setting inspired by <strong>Classical Philippines.</strong></p>
<p>You play as <strong>Kadungganan</strong>, the elite warrior-braves that hail from the manggugubat warrior caste, who enjoy prestige and regard oftentimes higher than their noble counterparts. As a Kadungganan, your hands are bloody, your soul flecked by violence, and you must find a reason why you fight.<br><br>It is <strong>tactical martial arts</strong> because it is inspired by <em>Final Fantasy Tactics, Tactics Ogre: Let Us Cling Together, Fire Emblem, RWBY, Dungeons and Dragons 4e, Exalted, Sengoku Basara, and wuxia novels</em>, which place great emphasis on team roles, synergy, positioning, the joy of movement, and emergent strategy.<br><br>It is <strong>war drama</strong> because it is is not about delving into dungeons, getting loot and money and getting stronger. It’s about being forced to kill your closest loved one in the middle of a blood-stained sea in the midst of a storm because they serve a datu that blasphemed your sultan. As a war-drama roleplaying game, expect an emphasis on relationships with other warriors, with your loved one, and intense interpolity politics with the other polities. Gubat Banwa expects you to play into these melodramas: sons having to kill their fathers for defecting to an enemy polity, daughters having to flee to the mountains to escape misogynistic responsibilities, loved ones killing each other slowly due to orders and/or emotions, best friends dueling at the top of a mountain in the midst of a storm as their ideologies bring them to a head. This features systems of game that focus on action and consequence, with a d8 dice pool system meant to invoke the casting of lots with crocodile's teeth that Precolonial Filipinos would do.</p>
<p>This game is made for war stories, the likes one would see in Final Fantasy Tactics and Tactics Ogre. It’s about being forced to kill your closest loved one in the middle of a blood-stained sea in the midst of a storm because they serve a Datu that blasphemed your Sultan. War Drama narrative mechanics make sure that violence happens inevitably, in one way or another, all threads intertwining and coming to a head with tactical combat. </p>
<p>Violence is the only answer, Kitatak says, and so it has been since the beginning of time.<br><br><strong>For the islands were born in conflict and so shall it perish. Rejoice in the glory of combat.</strong><br></p>
<p>In this game, the goal is to have...</p>
<ul><li>...war drama and interpersonal relationship mechanics.</li><li>...stylish tactical combat, that has fictional inspirations from RWBY and Devil May Cry, but mechanical inspirations from Final Fantasy Tactics, Tactics Ogre, and Fire Emblem (remember those Critical pixel animations?).</li><li>...a split between missions (Ventures) and downtime (Respite) drive the flow of combat of Gubat Banwa.</li><li>...a setting inspired wholly by an Uncolonized Late Porcelain Period Philippines and even some of Early Spanish Philippines, made to facilitate war narratives across the warring states of Kitatak.</li><li>...all you need to run war story Ventures in said setting!</li></ul>
<h2>Early Access</h2>
<p>Being in open beta or early access, the game is still in development and will be getting new updates and more. If you pay for the game now, you'll receive all the updates in the future, eventually until the game is released! By supporting the project, the funds go into art and more game design, allowing for more character options and even more content for the game!</p>
<p>Note: Please also keep in mind that not all art has been installed yet! Look forward to updates! Thank you.</p>
<p>There are community copies that will be constantly refreshed for those that don't want to pay for Early Access. However, rest assured that every cent that is dropped here goes into paying for more art to bring Kitatak to life.</p>
<h2>Heaven Moves Without You Series</h2>
<p>If you wish to dive deeper into the lore and setting of Gubat Banwa, consider checking out <strong><a href="https://tadhana.itch.io/stars-without-brightness">Stars Without Brightness</a>, </strong>a a Fantasy novel set in Kitatak, following a skilled spirit medium, a hotheaded warrior, a rebellious prince, a princess turned flesh-eater, a revived swordsman, and a passionate monster in their quest to fulfill orders and duty, facing the truth of war and violence.</p>
<h1 class="text-center">The river flows.</h1>
[img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5LzYxNjg2NDUucG5n/original/t2UOb9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5LzU0MTgyMTgucG5n/original/9%2F88K8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5LzU3NTgzMzQucG5n/original/3%2FNDZB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5LzYxNjg2NDYucG5n/original/LAiPlD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5LzU0MTgyMjIucG5n/original/0RQ4L0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5LzU0MTgyMjEucG5n/original/%2F%2FvoCG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5LzU0MTgyMjAucG5n/original/7yj7Vs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5LzYxNjg2NDEucG5n/original/LXrTst.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5LzYxNjg2NDIucG5n/original/wv1pe9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5LzU0MTgyMTkucG5n/original/ujY08a.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5LzYxNjg2NDQucG5n/original/R%2F3uNE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5LzYxNjg2NDMuanBn/original/X1OoIu.jpg]]
<p>This game is in <strong>EARLY ACCESS. </strong>Talk about the game, play or run games, and provide feedback to the official <a href="https://discord.gg/3jgZSmzH7G" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Gubat Banwa Discord</a>. Learn about what being in early access means below. </p>
<blockquote><strong>UTTER THE KILLING OATH!</strong></blockquote>
<blockquote>In violence the islands rose, and in violence it will fall. I am quicker than lightning, stronger than the hurricane. With the sin of my steel, I shall sunder the world, I shall part the seas, I shall break the sky. With the blood I spill, I shall sacrifice SELF upon the altar of ALL. I shall rejoice in the glory of combat until violence is gone.</blockquote>
<blockquote class="text-center"><strong><span class=""></span></strong></blockquote>
<p><strong>GUBAT BANWA</strong> is a tactical martial arts and war drama roleplaying game set in a heroic fantasy setting inspired by <strong>Precolonial Philippines </strong>and <strong>Medieval Southeast Asia.</strong></p>
<p><img src="https://img.itch.zone/aW1nLzY2MDIxNjYucG5n/original/Rphh39.png" loading="lazy"></p>
<p>You play as <strong>Kadungganan</strong>, the elite warrior-braves who enjoy prestige and regard oftentimes higher than their noble counterparts. As a Kadungganan, your hands are bloody, your soul flecked by violence, and you must find a reason why you fight.<span></span></p>
<p><img src="https://img.itch.zone/aW1nLzcwMDk1MDAuanBn/original/qVwmuM.jpg" loading="lazy"><br></p>
<p><br>It is <strong>tactical martial arts</strong> because it is inspired by <em>Final Fantasy Tactics, Tactics Ogre: Let Us Cling Together, Fire Emblem, RWBY, Dungeons and Dragons 4e, Exalted, Sengoku Basara, and wuxia novels</em>, which place great emphasis on team roles, synergy, positioning, the joy of movement, and emergent strategy.<br><br>It is <strong>war drama</strong> because it is is not about delving into dungeons, getting loot and money and getting stronger. It’s about being forced to kill your closest loved one in the middle of a blood-stained sea in the midst of a storm because they serve a datu that blasphemed your sultan. As a war-drama roleplaying game, expect an emphasis on relationships with other warriors, with your loved one, and intense interpolity politics with the other polities. Gubat Banwa expects you to play into these melodramas: sons having to kill their fathers for defecting to an enemy polity, daughters having to flee to the mountains to escape misogynistic responsibilities, loved ones killing each other slowly due to orders and/or emotions, best friends dueling at the top of a mountain in the midst of a storm as their ideologies bring them to a head. </p>
<p><img src="https://img.itch.zone/aW1nLzY2MDIxNjgucG5n/original/zMwKBv.png" loading="lazy"><br></p>
<p>This game is made for <strong>war stories</strong>, the likes one would see in Final Fantasy Tactics and Tactics Ogre. It’s about being forced to kill your closest loved one in the middle of a blood-stained sea in the midst of a storm because they serve a Datu that blasphemed your Sultan. War Drama narrative mechanics make sure that violence happens inevitably, in one way or another, all threads intertwining and coming to a head with tactical combat. </p>
<p><strong>Gubat Banwa </strong>uses Tokens for narrative play (called Drama Mode), and uses dice for randomization and <strong>tactical combat. </strong>Tactical combat is a volatile affair, wherein you don't make Attack rolls, just damage rolls, and that's where most of the chaos comes from.<br></p>
<p><strong>For the islands were born in conflict and so shall it perish. Rejoice in the glory of combat.</strong><br></p>
<p><img src="https://img.itch.zone/aW1nLzY2MDIxNjkuanBn/original/GsIdKJ.jpg" loading="lazy"></p>
<p>In this game, the goal is to have...</p>
<ul><li>...war drama and interpersonal relationship mechanics that contextualize and bring dramatic tension and important context to the tactical violence. </li><li>...stylish tactical combat, that has fictional inspirations from RWBY, Devil May Cry, and Sengoku BASARA, but mechanical inspirations from Final Fantasy Tactics, Tactics Ogre, and Fire Emblem.</li><li>...a setting inspired wholly by an Uncolonized Late Porcelain Period Philippines and even some of Early Spanish Philippines, made to facilitate war narratives across the warring states of Kitatak.</li><li>...all you need to experience war stories in said setting!</li></ul>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzY2MDIxNzEucG5n/original/ylCqni.png" loading="lazy"><br></p>
<h2>Early Access</h2>
<p>Being in Beta means the game is <em>done, </em>raw text wise, and now is going through balancing, tweaking, and typo clarifications. If you pay for the game now, you'll receive all the updates in the future, eventually until the game is released! By supporting the project, the funds go into art and more game design, allowing for more character options and even more content for the game!</p>
<p>There are community copies that will be constantly refreshed for those that don't want to pay for Early Access. However, rest assured that every cent that is dropped here goes into paying for more art to bring The Sword Isles to life.</p>
<p><img src="https://img.itch.zone/aW1nLzY2MDIxNzIucG5n/original/j8g%2BVo.png" loading="lazy"><br></p>
<h2>Supplementary Fiction</h2>
<p>If you wish to dive deeper into the lore and setting of Gubat Banwa, consider checking out <strong><a href="https://tadhana.itch.io/stars-without-brightness">Stars Without Brightness</a>, </strong>a a Fantasy novel set in Gubat Banwa, following a skilled spirit medium, a hotheaded warrior, a rebellious prince, a princess turned flesh-eater, a revived swordsman, and a passionate monster in their quest to fulfill orders and duty, facing the truth of war and violence.</p>
<h3><strong>Princess Murders The Hero</strong></h3>
<p><img src="https://img.itch.zone/aW1nLzgxOTMzMzIuanBn/original/rKBXSn.jpg" loading="lazy"></p>
<p>If you want a free and beginner friendly entry into the lore, consider the free web serial: <strong><a href="https://princessmurdersthehero.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">PRINCESS MURDERS THE HERO</a>. <em>PRINCESS MURDERS THE HERO is a free web serial inspired by Philippine Folk Epics and wuxia, featuring larger than life mortals that must prove their conviction, slick fight scenes, complicated relationships, and a violent world inspired by Precolonial Philippine culture and religion. If you liked Raya and the Last Dragon, The Raid, Warrior, RF Kuang’s The Poppy War or Kill Six Billion Demons, you’ll probably enjoy this.</em></strong></p>
<p><strong>Finally, </strong>check out dragonkid11's introduction video!<strong> </strong></p>
<p></p>
<div class=""><iframe width="500" height="281" src="https://www.youtube.com/embed/8MncW_Tkoy8" frameborder="0" allowfullscreen=""></iframe></div>
<p></p>
<h1 class="text-center">The river flows.</h1>
<p><img src="https://img.itch.zone/aW1nLzY2NDI1NjMucG5n/original/cVayha.png" loading="lazy"></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/8MncW_Tkoy8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5LzYxODYyNzgucG5n/original/SMkNiU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5Lzc2MDUwMjYucG5n/original/bYONFx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5Lzc2MDUwNzYucG5n/original/rvrUZs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5Lzc3NjU4MTEucG5n/original/rNK7A7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5Lzc2MDUwNzcucG5n/original/gpl2%2Bn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5Lzc2MDUwOTAucG5n/original/c9IRz4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5Lzc2MDUwOTIucG5n/original/SjvNQb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5Lzc2MDUwODkucG5n/original/LEOsSo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5Lzc2MDUwOTEucG5n/original/nurHxJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5Lzc2MDUxMzEucG5n/original/J1uExw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5MDA5Lzc2MDUxMzUucG5n/original/%2B6drpK.png]]
<p>Do you enjoy traveling to strange new worlds? Do you want to be immortal and shoot preposterous amounts of bullets? Are you prepared to give up everything you love to join a super-soldier program? Well, then have I got an idea for you: sign up for the Gunbuds Initiative!</p>
<p><strong>Gunbuds</strong> is a 2d side-scrolling shooter with levels that change every time you play. Playable with up to five local players using any combination of four controllers and a keyboard, it features a story mode as well as an "explory" mode that features larger levels and additional mechanics geared towards experienced players.</p>
<p>The story portion takes roughly 45 minutes to complete, and each "explory" session will run between 20 and 30 minutes.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/EToiCZOW-do" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTcwNDA2LzEyNzAzMDYucG5n/original/itQzhJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTcwNDA2LzEyNzAzMDkucG5n/original/DoBSeV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTcwNDA2LzEyNzAzMDcucG5n/original/F%2Fhxl%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTcwNDA2LzEyNzAzMDgucG5n/original/e%2FqM1k.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTcwNDA2LzEyNzAzMDUucG5n/original/pstJCM.png]]
<h1>Puzzle meets Tower Defense!</h1>
<p>Load your guns! Rain death from above! Protect your valuable orphans! Defeat giant, improbable bosses! Gunhouse is part puzzle, part active tower defense, as you make big combos to launch a hail of bullets and special attacks at the alien invaders who would like nothing better than to consume your delicious orphan friends.</p>
<p>With infinite levels (you can play this <strong>for ever</strong>), upgradeable weapons, hardcore mode, a unique visual style from artist <a href="http://buttermonster.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Juan Ramirez</a>, a "weird fiction" story by Brandon Sheffield (Street Fighter 30th), code by Jim Stormdancer (<a href="http://twinbeard.com/frog-fractions" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Frog Fractions</a>), and music by <a href="http://disasterpeace.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Disasterpeace</a> (Hyper Light Drifter), Gunhouse from Necrosoft Games will entertain the heck right out of you, maybe!<br></p>
<ul><li>Tower Defense!</li><li>Weapon upgrades!</li><li>Infinite levels!</li><li>Strange narrative!</li><li>Weird bosses!</li></ul>
<p><iframe style="border: 0; width: 100%; height: 120px" src="https://bandcamp.com/EmbeddedPlayer/album=3625464362/size=large/bgcol=333333/linkcol=ffffff/tracklist=false/artwork=small/transparent=true/"><a href="<a href="https://music.disasterpeace.com/album/gunhouse-ost">Gunhouse" class="redactor-linkify-object">https://music.disasterpeace.com/album/gunhouse-ost">Gunhouse</a> OST by Disasterpea<span id="selection-marker-1" class="redactor-selection-marker"></span>ce</a></iframe></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/BTs3tEa5MpE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTg0NDU2Lzg2MzAwMS5wbmc=/original/Lazdsf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg0NDU2Lzg2Mjk5OS5wbmc=/original/8nwzaO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg0NDU2Lzg2MzAwNC5wbmc=/original/R%2Fwksr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg0NDU2Lzg2MzAwNS5wbmc=/original/0LgtIx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg0NDU2Lzg2MzAwMi5wbmc=/original/xAtBbu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg0NDU2Lzg2Mjk5OC5wbmc=/original/R%2BrHcH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg0NDU2Lzg2MzAwMy5wbmc=/original/%2BD20N5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg0NDU2Lzg2MzAwMC5wbmc=/original/9CbAje.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg0NDU2LzI4OTU5MjIucG5n/original/%2BY9Tr%2F.png]]
<h1>Puzzle meets Tower Defense!</h1>
<p>Load your guns! Rain death from above! Protect your valuable orphans! Defeat giant, improbable bosses! Gunhouse is part puzzle, part active tower defense, as you make big combos to launch a hail of bullets and special attacks at the alien invaders who would like nothing better than to consume your delicious orphan friends.</p>
<p>With infinite levels (you can play this <strong>for ever</strong>), upgradeable weapons, hardcore mode, a unique visual style from artist <a href="http://buttermonster.com" target="_blank" rel="nofollow noopener">Juan Ramirez</a>, a "weird fiction" story by Brandon Sheffield (Street Fighter 30th), code by Jim Stormdancer (<a href="http://twinbeard.com/frog-fractions" target="_blank" rel="nofollow noopener">Frog Fractions</a>), and music by <a href="http://disasterpeace.com" target="_blank" rel="nofollow noopener">Disasterpeace</a> (Hyper Light Drifter), Gunhouse from Necrosoft Games will entertain the heck right out of you, maybe!<br></p>
<ul><li>Tower Defense!</li><li>Weapon upgrades!</li><li>Infinite levels!</li><li>Strange narrative!</li><li>Weird bosses!</li></ul>
<p><iframe style="border: 0; width: 100%; height: 120px" src="https://bandcamp.com/EmbeddedPlayer/album=3625464362/size=large/bgcol=333333/linkcol=ffffff/tracklist=false/artwork=small/transparent=true/"><a href="<a href="https://music.disasterpeace.com/album/gunhouse-ost">Gunhouse" class="redactor-linkify-object">https://music.disasterpeace.com/album/gunhouse-ost">Gunhouse</a> OST by Disasterpea<span id="selection-marker-1" class="redactor-selection-marker"></span>ce</a></iframe></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/BTs3tEa5MpE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTg0NDU2Lzg2MzAwMS5wbmc=/original/Lazdsf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg0NDU2Lzg2Mjk5OS5wbmc=/original/8nwzaO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg0NDU2Lzg2MzAwNC5wbmc=/original/R%2Fwksr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg0NDU2Lzg2MzAwNS5wbmc=/original/0LgtIx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg0NDU2Lzg2MzAwMi5wbmc=/original/xAtBbu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg0NDU2Lzg2Mjk5OC5wbmc=/original/R%2BrHcH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg0NDU2Lzg2MzAwMy5wbmc=/original/%2BD20N5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg0NDU2Lzg2MzAwMC5wbmc=/original/9CbAje.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg0NDU2LzI4OTU5MjIucG5n/original/%2BY9Tr%2F.png]]
<p><em>Guppy is a 2D watercolour fish simulation.</em></p>
<p>Swim like a fish! Move your tail left and right to propel yourself through the water, hide in the shade of lilies and venture carefully into the open in search of food. Try not to get eaten.</p>
<p><br></p>
<p><img src="http://ninjadodo.net/guppy/img/gupanim400.gif" loading="lazy"></p>
<figure><a href="http://nowplaythis.net/2016-friday/" rel="nofollow noopener" referrerpolicy="origin"><img src="http://ninjadodo.net/guppy/img/guppy_nowplaythis_official.png" alt="Now Play This 2016" title="Now Play This 2016" loading="lazy"></a> <a href="http://nowplaythis.net/2016-friday/" rel="nofollow noopener" referrerpolicy="origin"></a> <a href="http://awkwardarcade.co.uk/games" rel="nofollow noopener" referrerpolicy="origin"><img src="http://ninjadodo.net/guppy/img/guppy_awkward_showcase.png" alt="Awkward Arcade" title="Awkward Arcade" loading="lazy"></a>
</figure>
<p><br></p>
<p><strong>CONTROLS</strong>:</p>
<p>Alternate <strong>LEFT</strong> and <strong>RIGHT ARROW</strong> (player 1) or <strong>A</strong> and <strong>D</strong> (player 2)</p>
<p><strong>NOTE: </strong>Also supports <strong>GAMEPAD</strong> and <strong>TOUCH</strong> (mobile)</p>
<p>Co-op only supported on desktop (Win/Mac/Linux), not mobile.</p>
<p><em><strong>TIP: </strong>If you prefer swimming around in peace you can also <strong>remove predators</strong> in the options (ESC > Main Menu > Options), though this disables scoring.</em><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/eDpMZiYe840" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzk2LzM5NDgucG5n/original/n8ZACW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2LzM5NDYucG5n/original/KMMzMf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2LzE4NDQxNi5wbmc=/original/JsYDM7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2LzE4NDQxNy5wbmc=/original/3qMhXb.png]]
<h5>5 days, 2 apartments, 1 haunting.</h5>
<p></p>
<p><strong>"GUROBU"</strong> is a story-driven, 2D horror game inspired by Lone Survivor and SH4 about haunted apartments and ghosts of the past.<br></p>
<h5>FEATURES</h5>
<ul><li>1+ hour long.</li><li>5 endings!</li><li>4 nightmares to explore!</li><li>Name your cat!</li></ul>
<p><br></p>
<p>Available in English, Russian, Portuguese!</p>
<p><br></p>
<h5>CONTROLS</h5>
<p><em><em>Arrows = Move</em></em></p>
<p><em><em></em></em></p>
<p><em><em></em></em></p><em><em>
<p>SPACE, Z or ENTER = Examine / Advance text</p>
<p>F4 / ALT+ENTER = Fullscreen</p>
<p>ESC, X = Menu / Cancel/Erase (text)</p>
</em></em><p><em><em></em></em><br></p><p><em><em></em></em><br></p>
<p><em><em></em></em><br></p>
<p><em><em></em></em><br></p>
<p><em><em></em></em><br></p>
<p><em><em></em></em><br></p>
<p><em><em></em></em><br></p>
<p><em><em></em></em></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/bpW31P4aN5o" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MzQ4LzM1MzM3NzgucG5n/original/RxG6DX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MzQ4LzM1MzM4MDIucG5n/original/MaOte9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MzQ4LzM1MzM3ODMucG5n/original/7HspYo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MzQ4LzM1MzM3ODAucG5n/original/5nYACd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MzQ4LzM1MzM3ODEucG5n/original/%2BEXccF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MzQ4LzM1MzM4MDEucG5n/original/lYixri.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MzQ4LzM1MzM4MDMucG5n/original/08H%2FWM.png]]
<p>Your home planet is under siege from a band of intergalactic pirates led by the fiendish Gyro Boss!</p>
<p>Unfortunately your technology is no match for this deadly beast and his crazy weapons. Every game is doomed from the start, but you'll fight with honour to complete your mission objectives and achieve the best possible score.</p>
<p>Dodge an endless assault of weapons as you orbit around the boss on a fixed circle, it's not as easy as it looks. Can you secure bragging rights as the best space pilot to bite the dust against the alien menace?</p>
<hr>
<h4>Crazy Weapons</h4>
<p><img src="https://img.itch.zone/aW1nLzE5MDc2ODcuZ2lm/original/lF1bE3.gif" loading="lazy"><br></p>
<p>Dodge Gyro Boss' crazy attacks including shoals of squid, extendable boxing gloves, cluster bombs, homing silverfish and many more. You can even find out which weapons cause you the most trouble by looking up your deaths in the statistics menu.</p>
<hr>
<h4>Multiplayer Madness</h4>
<p><img src="https://img.itch.zone/aW1nLzE5MDc2OTAuZ2lm/original/LMKLN6.gif" loading="lazy"><br></p>
<p>New to Gyro Boss DX - enter party mode with 2-4 players and battle the boss together. Party mode cycles through a variety of weird mini games including faulty brakes mode and civil war. Who will come out on top?</p>
<hr>
<h4>Fifty Objectives</h4>
<p><img src="https://img.itch.zone/aW1nLzE5MDc2OTMuZ2lm/original/bMAQPm.gif" loading="lazy"><br></p>
<p>When your friends aren't around, you can always enjoy classic mode. We've added 50 objectives to the game so you can feel good about yourself even when you're failing miserably in your fight against the Gyro Boss.</p>
<hr>
<p>Dare to take on the Gyro Boss today. Your planet needs you.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/0zqxGtT2VQA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMjg1LzE5MDcxOTEucG5n/original/DDOUks.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMjg1LzE5MDcxOTMucG5n/original/ci8pix.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMjg1LzE5MDcxOTIucG5n/original/Av1i%2B3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMjg1LzE5MDcxOTQucG5n/original/SF5FN0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMjg1LzE5MDcxOTYucG5n/original/C9zGrd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMjg1LzE5MDcxOTcucG5n/original/RnDw%2BF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMjg1LzE5MDcxOTgucG5n/original/gNuc7I.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMjg1LzE5MDcxOTUucG5n/original/65BrBV.png]]
<p>Hack FPS is a First Person Shooter (obviously). Your objective is to hack enemies and use their abilities to get to the end of the level. Find out about your origins, and escape from the looming threat that plans to terminate you.</p>
<h2 class="text-center"><img src="https://img.itch.zone/aW1nLzQ4NTM3MjEucG5n/original/eDWyUL.png" loading="lazy"></h2>
<h3>Keyboard and Mouse</h3>
<p>WASD: Move</p>
<p>Mouse: Look</p>
<p>Space bar: Jump</p>
<p>Left mouse button: Fire</p>
<p>Right mouse button: Hack</p>
<h3>Gamepad</h3>
<p>Left stick: Move</p>
<p>Right stick: Look</p>
<p>South face button: Jump</p>
<p>Right trigger: Fire</p>
<p>Left trigger: Hack</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzU0Mjg1NzIucG5n/original/9sJzyT.png" loading="lazy"></p>
<ul><li><strong>Classic - Play through 30 levels with infinite retries.</strong> You can choose which level to start from, and your health and ability do not carry over from the last level.</li></ul>
<p><br></p>
<ul><li><strong>Hardcore - Play through an entire chapter with no retries.</strong> You can only start from the first level of the selected chapter, and your health and ability carry over from the last level.
</li></ul>
<p><br></p>
<ul><li><strong>Map Creator - Create and play custom levels.</strong> Unfortunately, these cannot be saved. Saving custom levels may become an option in the future, however.</li></ul>
<p><br></p>
<ul><li><strong>Arena - Fight a horde of enemies.</strong> You can choose from six arenas, and you are given infinite retries.<br>
</li></ul>
<h2 class="text-center"><img src="https://img.itch.zone/aW1nLzQ4NTM3MjIucG5n/original/aCoB9D.png" loading="lazy"></h2>
<ul><li>Pay attention to the minimap to know where you're landing.</li><li>You can melee enemies by tackling them, but this will take your health as well. Use this wisely.</li><li>Hacking enemies slightly heals you, so hack enemies whenever you can.</li></ul>
<p><br></p>
<p>The game is free to download for Windows, Mac, and Linux, but there is also an extra pack with development images and videos to support the developer.</p>
<p>Join the r3sgame Discord for updates on this game.</p>
<p><iframe src="https://discord.com/widget?id=745337109824536667&theme=dark" width="350" height="500" frameborder="0"></iframe><br></p>
<p>If you'd like to speedrun this game, check out Hack FPS's <a href="https://www.speedrun.com/hack_fps" target="_blank" rel="nofollow noopener" referrerpolicy="origin">speedrun.com page</a>.</p>
<p>Visit <a href="https://www.youtube.com/channel/UCchlPZC7Hm6yHCRwyhe3d4Q" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Millimedia Music</a> to listen to the game's soundtrack, or check it out here:</p>
<p><iframe style="border: 0; width: 350px; height: 350px" src="https://bandcamp.com/EmbeddedPlayer/album=1948021974/size=large/bgcol=333333/linkcol=e99708/minimal=true/transparent=true/"><a href="<a href="https://millimedia.bandcamp.com/album/hack-fps-soundtrack" rel="nofollow noopener" referrerpolicy="origin">Hack" class="redactor-linkify-object">https://millimedia.bandcamp.com/album/hack-fps-soundtrack">Hack</a> FPS Soundtrack by Millimedia</a></iframe><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/ynRmQSGzVqs" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzU4MTM4LzcwNzg4ODIuanBn/original/HJS7oj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU4MTM4LzcwNzg4ODUuanBn/original/2rVqN4.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU4MTM4LzcwNzg4ODQuanBn/original/YrpIiN.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU4MTM4LzcwNzg4ODMuanBn/original/TMHv7L.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU4MTM4LzcwNzg4ODEuanBn/original/wJo7X0.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU4MTM4LzcwNzg4ODkuanBn/original/Js9vAc.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU4MTM4LzcwNzg4ODcuanBn/original/AFVKMS.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU4MTM4LzcwNzg4ODYuanBn/original/A73n6Y.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU4MTM4LzcwNzg4ODguanBn/original/R3Cbfd.jpg]]
<p>Hacknet is an immersive, terminal-based hacking simulator for PC. Dive down a rabbit hoIe as you follow the instructions of a recently deceased hacker, whose death may not have been the accident the media reports. Using old school command prompts and real hacking processes, you’ll solve the mystery with minimal hand-holding and a rich world full of secrets to explore.</p>
<p><br>Bit, a hacker responsible for creating the most invasive security system on the planet, is dead. When he fails to reconnect to his system for 14 days, his failsafe kicks in, sending instructions in automated emails to a lone user. As that user, it’s up to you to unravel the mystery and ensure that Hacknet-OS doesn't fall into the wrong hands.<br><br>Exploring the volatile nature of personal privacy, the prevalence of corporate greed, and the hidden powers of hackers on the internet, Hacknet delivers a true hacking simulation, while offering a support system that allows total beginners get a grasp of the real-world applications and commands found throughout the game.<br></p>
<h2>Features</h2>
<p><strong>Real Hacking</strong><br>Based on actual UNIX commands, Hacknet focuses on real hacking, not the Hollywood-style version of it. This creates a truly immersive experience and puts players right in the thick of trying to break through the firewalls.<br><br><strong>Unlock the mystery of Bit</strong><br>A hacker is dead and the media reports don’t add up. When you are contacted by his “ghost” - an automated failsafe system - you’re drawn into the dark and murky world of underground hackers.<br><br><strong>Full immersion</strong><br>You are thrust into a persistent virtual world with no “levels” or obvious game elements to break the illusion. Follow the guidance of the emails from Bit or just dive down the rabbit hole, chasing down clues and snippets of information you find as you explore different systems.<br><br><strong>Accessible but uncompromising</strong><br>Whilst not holding your hand or dumbing down, the design of the game and the learning curve enables those with no prior terminal experience to enjoy it whilst delighting those in the know.<br><br><strong>Killer tunes</strong><br>Hack to the beat of a soundtrack featuring underground artists including Carpenter Brut (Hotline Miami) and Remi Gallego (AKA The Algorithm).<br>Soundtrack produced in association with The Otherworld Agency.<br><br><strong>Hack your own adventures</strong><br>Create your own campaigns, system networks, nodes, themes, music and story missions using the Hacknet Extensions mod tools. Share them with other players.</p>
<p><br></p>
<p><strong>Hacknet Educational License:</strong><br>Educational bulk licenses of Hacknet can be purchased. Go to the educational license game page here - <a href="https://fellowtraveller.itch.io/hacknet-edicational-license">https://fellowtraveller.itch.io/hacknet-edicational-license</a><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/CcoH1X-nqLk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjI4MzEzLzEwODA0MDUucG5n/original/P6YyRl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4MzEzLzEwODA0MDYucG5n/original/DIApXd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4MzEzLzEwODA0MDcucG5n/original/rNvLOi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4MzEzLzEwODA0MDgucG5n/original/xcN4fW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4MzEzLzEwODA0MDkucG5n/original/FedsZS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4MzEzLzEwODA0MTAucG5n/original/n%2FQhU6.png]]
<p><img src="https://img.itch.zone/aW1nLzU2NDA0NDYuanBn/original/Nj%2FyPj.jpg" loading="lazy"><br></p>
<p>Something mysterious is happening in the pumpkin patch this Halloween! You control Pumpkin Man, a humanoid pumpkin thing animated by occult forces on a quest to discover why things are so creepy. And you vomit candy corn.</p>
<p>Adventure through three weird, spooky worlds in search of your destiny. Meet chainsaw maniacs, undead sorcerers, spooky bats, and lots of skeletons on your way. Can you survive the horrors that await you within these spooky tombs?</p>
<p class="text-center">Also available on:</p>
<p class="text-center"><strong><a href="https://store.steampowered.com/app/425650/Halloween_Forever/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Steam</a> | <a href="https://store.playstation.com/en-us/grid/search-game/1?query=halloween%20forever&smcid=psapp" target="_blank" rel="nofollow noopener" referrerpolicy="origin">PlayStation 4</a> | </strong><del><a href="https://store.playstation.com/en-us/grid/search-game/1?query=halloween%20forever&smcid=psapp" target="_blank" rel="nofollow noopener" referrerpolicy="origin">PlayStation Vita</a></del><strong><del><a href="https://store.playstation.com/en-us/grid/search-game/1?query=halloween%20forever&smcid=psapp" target="_blank" rel="nofollow noopener" referrerpolicy="origin"></a></del></strong><del> </del>| <a href="https://www.nintendo.com/games/detail/halloween-forever-switch/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><strong>Nintendo Switch</strong></a><br></p>
<p class="text-center"><em>Purchasing this game on Itch.io will also grant a Steam Key.<br></em><em><em><em><em><img src="https://img.itch.zone/aW1nLzU2NDA0NDUucG5n/original/Npa2Mt.png" loading="lazy"><br></em></em></em></em></p>
<p><em><em><em><em></em></em></em></em></p>
<div class=""><iframe src="https://www.youtube.com/embed/vzY_3kVMYbQ" allowfullscreen="" width="100%" height="281" frameborder="0"></iframe></div>
<p><em><em><em><br></em></em></em><br></p>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/vzY_3kVMYbQ" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTIzNTUvNTY0MDQ1MS5wbmc=/original/c8LbBy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIzNTUvNTY0MDQ1Ni5wbmc=/original/xaTDpo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIzNTUvMzk3NTIuanBn/original/WGyFkt.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIzNTUvMzk3NTMuanBn/original/pCU8Y%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIzNTUvMzk3NTQuanBn/original/HyMhEy.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIzNTUvMTU5NTMyLmpwZw==/original/t9fSN2.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIzNTUvMTU5NTM0LmpwZw==/original/rx6PuK.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIzNTUvMTU5NTM1LmpwZw==/original/X19v8H.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIzNTUvMTU5NTM2LmpwZw==/original/bNO41s.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIzNTUvNTY0MDQ2Ny5wbmc=/original/McYXE7.png]]
<p>The sound of cicadas, a crackling fire, the twinkling of fireflies, the smell of sunscreen, and the sweetness of bug juice... it's a unique concoction that can only mean one thing: SUMMER CAMP! </p>
<p><em>Happy Campers</em> is a TTRPG where you play as a Counselor at a summer camp with a supernatural flair. Team up with your co-Counselors and go on summer-camp adventures! But every summer camp has its legends and secrets, and sometimes the supernatural is closer than you might think...</p>
<p><br></p>
<p><u>This Download Includes:</u></p>
<ul><li>16-page full-color rule-book PDF complete with sample one-shot campaign</li><li>A fillable character sheet PDF</li><li>Links to a custom-curated playlist and sound resources</li><li>4 sample characters already rolled</li></ul>
<p><br></p>
<p>Much of this was drawn from my own experiences of working at a summer camp, which is a sort of Twilight Zone all in itself. The system features roll modifiers similar to that found in Dungeons and Dragons, and runs on a d6 system. </p>
<p>I hope you Counselors have as much fun playing it as I did making it! :) </p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDQzOTg4LzIyMzY0NzkuanBn/original/6JbAkx.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQzOTg4LzIyMzY0ODAuanBn/original/NLNLj6.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQzOTg4LzIyMzY0OTAuanBn/original/vUfI5H.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQzOTg4LzIyMzY0OTUuanBn/original/BhsHrb.jpg]]
<p><strong>Haque</strong> (/hak/) is a glitch fantasy roguelike adventure about cute monsters, low-bit hauntings, and a suspiciously talkative narrator. Choose your character and battle through forests, deserts and dungeons to defeat a mysterious evil. Die often. Try again!<br></p>
<p>Explore a vibrant fantasy world falling apart at the seams.</p>
<p>An old man has asked you to complete a quest: purge the land of evil monsters! What land is this? It doesn't matter. Don't ask too many questions.</p>
<p>Journey into the pixelated wilderness with your beloved pet at your side. Encounter dangerous foes, make some new allies, and challenge the reigning bosses. Ignore the mounting sense of dread. That's normal.</p>
<p><br></p>
<p><em>“... a legitimately good little roguelike, with a solidly designed UI, animation used sparingly but to great effect and with enemies, items and classes that are almost all weird but cute.”</em><br><a href="https://www.rockpapershotgun.com/2017/12/02/haque-is-a-cute-glitchy-roguey-likey-little-thing/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Rock Paper Shotgun</a><br><br><em>“It's not even a question. I can be a necromancer, some dude with a stick, or a werewolf wizard. A werewolf wizard with brass knuckles who throws boulders and shoots icicles, no less.”</em><br><a href="http://www.pcgamer.com/becoming-the-ultimate-werewolf-wizard-in-retro-roguelike-haque/?utm_content=buffer37c47&utm_medium=social&utm_source=twitter&utm_campaign=buffer-pcgamertw" target="_blank" rel="nofollow noopener" referrerpolicy="origin">PC Gamer</a><br><br><em>“Haque’s bite-size gameplay and taut combat loop are superbly crafted. For anyone looking for a new and inventive take on dungeon crawling, Haque is a solid choice: highly recommended.”</em><br><a href="https://steamcommunity.com/linkfilter/?url=http://saveorquit.com/2018/03/08/review-haque/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Save or Quit<br><br></a><em>"There are so many minute details that it is difficult to wrap my mind around the content of this game from what I have seen so far. I am astounded by the quality of the game overall."<br></em><a href="https://steamcommunity.com/id/YQMaoski/recommended/662540" target="_blank" rel="nofollow noopener" referrerpolicy="origin">IndieGems</a><span></span></p>
<p><br></p>
<p><strong>Haque </strong>features:<br></p>
<ul><li>Character selection featuring an endless array of randomized characters
</li><li>Detailed character statistics and a classic armor slot system
</li><li>Procedurally generated maps and settings
</li><li>Challenging turn-based combat with an emphasis on movement and strategy
</li><li>Dozens of unique enemies-- don't get surrounded!
</li><li>Rotating roster of bosses, each with different fighting styles and priorities
</li><li>Hundreds of items to equip, eat, or... reanimate
</li><li>Weapon and armor crafting
</li><li>New character quirks at the end of every level
</li><li>In memoriam screens to immortalize your permanently dead characters
</li><li>A slider for screen grime!</li></ul>
<p>Use every tool at your disposal to deliver <strong>Haque </strong>from evil. Find the truth. Save the game.<br></p>
<p><strong>Haque </strong>is available on PC, Mac (32-bit only), and Linux.</p>
<p><img src="https://img.itch.zone/aW1nLzg4ODE2Ni5qcGc=/original/KuUfEw.jpg" loading="lazy"><br></p>
<p><strong>Haque</strong> was successfully funded on Kickstarter in October of 2015 and developed by a small team at SuperTry Studios:<br></p>
<p>Music by <a href="https://supertrystudios.bandcamp.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Joe Kenneally</a><br></p>
<p>Additional graphics by <a href="https://twitter.com/towniealamode" rel="nofollow noopener" referrerpolicy="origin">Brian Townsend</a></p>
<p>Promotional illustrations by <a href="https://twitter.com/BryanWShepherd" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Bryan Shepherd</a></p>
<p>Writing by <a href="https://twitter.com/hadstclair" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Hadley St. Clair</a></p>
<p>A game by <a href="https://twitter.com/RealKevinCole" rel="nofollow noopener" referrerpolicy="origin">Kevin Cole</a></p>
<p>You can follow <strong>Haque's</strong> development in our weekly updates on <a href="https://www.kickstarter.com/projects/1507109559/haque/updates" rel="nofollow noopener" referrerpolicy="origin">Kickstarter</a>, <a href="https://twitter.com/haquerl" rel="nofollow noopener" referrerpolicy="origin">Twitter</a>, and <a href="https://www.facebook.com/ProjectMaiden/" rel="nofollow noopener" referrerpolicy="origin">Facebook</a>. To contact SuperTry, you can reach out on Twitter or send us an email at <a href="mailto:supertrystudios@gmail.com" rel="nofollow noopener" referrerpolicy="origin">supertrystudios@gmail.com</a><br></p>
<p>[HEY MAC FOLKS: Haque is 32-bit and won't run on Mac OS Catalina and above. Sorry!]</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/2UwsQPl5LAk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDE4MTUvMTQ0MTI5Mi5naWY=/original/ndix7j.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDE4MTUvODg4MTgxLnBuZw==/original/kqmDGj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDE4MTUvMTQ0MTI5OS5naWY=/original/MC4grV.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDE4MTUvODg4MTgzLnBuZw==/original/zGM9Vt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDE4MTUvMTQ0MTI5My5naWY=/original/kl3gDL.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDE4MTUvODg4MTg0LnBuZw==/original/sNI3Ns.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDE4MTUvMTQ0MTI5NS5naWY=/original/VCWXfN.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDE4MTUvODg4MTg1LnBuZw==/original/DhgvEO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDE4MTUvMTQ0MTI5Ni5naWY=/original/bPrnqq.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDE4MTUvODg4MTg2LnBuZw==/original/LxplCa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDE4MTUvMTQ0MTI5NC5naWY=/original/f%2F%2FBbE.gif]]
<p><img src="https://img.itch.zone/aW1nLzI0NzY3ODYuanBn/original/MKN%2FJq.jpg" loading="lazy"><br></p>
<p><br>Hardship River is a one-page, one-move Powered by the Apocalypse Role-Playing Game with no MC! In it, you and your traveling companions sail in the Little Tail boat down a very dangerous river, hoping to reach the great Unconquered City by the seashore. As you overcome each stretch of wild rapids, you discover why you're traveling, what's your cargo or why do you really care for your companions. But trust between strangers isn't found without navigating around lies and misunderstandings. And not all of your companions may be willing or able to face whatever hardship to reach the end of the river.</p>
<p>Hardship River is inspired by pieces from my hometown History and you may learn more about them if you consult what the web has to offer about the Douro River, Rabelo Boats or the city of Oporto. You may imagine it within any setting, just before a time where dams and dynamite made rivers much safer. You can even use Hardship River to kick-start a campaign for another RPG!<span></span></p>
[img width=500 [https://img.itch.zone/aW1nLzI0NzY3MDUuanBn/original/r8oZk7.jpg]]
<p><em></em><em>This is a supplement for</em><em> <a href="https://gilarpgs.itch.io/slayers">Slayers</a> by GilaRPGs. You will need a copy of that game to use these hunts the way they were intended. I am not affiliated with GilaRPGs.</em></p>
<p>Harrowing Hunts (Vol 1) is a collection of 6 hunts for use with Slayers. </p>
<p><strong>The Show Must Go On </strong>is the shortest hunt in the set, and also one of the most straightforward. A mysterious theater appeared in town, and the patrons aren't returning after they see the show. Find out why.</p>
<p><strong>Trouble on the High Seas </strong>is a swashbuckling tale of piracy and ship-based combat. It's got all the tropes you'd expect for a mission about monster hunters setting out to sea. Harpoons, missing ships, and pirate boarders that lay gangplanks and come out, scimitars swinging!</p>
<p><strong>The Clockwork Dilemma </strong>is the longest game in the set at 7 pages. It's a steampunk twist on the City: someone stole the gem out of the Clocktower, causing all sense of time to fall apart. Can the Slayers find out who stole it and restore the gem that powers the city? And by the time they do, will they even want to?<br></p>
<p><strong>An Apple a Day</strong> is another short adventure that pits the Slayers against the classic enemy, the Doctor. Can they capture one? And can an enterprising scientist perform her experiments before the other Doctors track her down and extract their revenge?</p>
<p><strong>Haunted Honeymoon</strong> is a classic tale of what happens after a wedding. Assuming that what happens after a wedding is something straight out of Halloween! Your standard ghosts and goblins come out of the woodwork here!</p>
<p><strong>Meet the Hunters </strong>forces the Slayers to experience the other side of the equation: what happens when they're the ones being hunted? And what will they do about it?</p>
[img width=500 [https://img.itch.zone/aW1nLzU4MjQ1NDUucG5n/original/ZD0Frc.png]]
<div class="text-center"><div class=""><iframe width="500" height="281" src="https://www.youtube.com/embed/dN-WMOTrgbE" frameborder="0" allowfullscreen=""></iframe></div></div>
<div class=""><br></div>
<iframe src="https://store.steampowered.com/widget/1292500/" frameborder="0" width="646" height="190"></iframe>
<h1 class="text-center"></h1>
<h1 class="text-center">The World Is Big...</h1>
<p>In Harvest Island Beginnings, you will take on the role of Will, a curious boy who wants to explore the big island. What lies beyond it? Take the first journey as you help your younger sister, Samantha, learn how to give your harvest offering to the gods.</p>
<p><br></p>
<p><strong>Overall Features</strong><br></p>
<ul><li>Introduction to Harvest Island with 1-2 hour of gameplay.<br>
</li><li>Meet Will, Samantha, and Greyson as you work the farm.<br>
</li><li>Collect items found around the island.<br>
</li><li>Explore an undiscovered mystery.</li></ul>
<p><strong><br></strong></p>
<h1 class="text-center"><a href="https://discord.gg/UMdQzmadrB" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Join Us !</a></h1>
<p class="text-center"><a href="https://discord.gg/UMdQzmadrB" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzQ2NDcwMjkucG5n/original/ZbuVtT.png" loading="lazy"></a><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/dN-WMOTrgbE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzUwOTYwLzY3Mjk4MjEucG5n/original/rcjmcj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzUwOTYwLzY3Mjk4MTkucG5n/original/PxBRvb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzUwOTYwLzY3Mjk4MTgucG5n/original/lWryhT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzUwOTYwLzY3Mjk4MTcucG5n/original/ivF4L%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzUwOTYwLzY3Mjk4MjAucG5n/original/NW6p3I.png]]
<h2><a href="https://img.itch.zone/aW1hZ2UvMzY2NTMvMjI0MzEzNC5wbmc=/794x1000/Gu06SE.png" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzIyNDMxMzUucG5n/original/lVrZvc.png" loading="lazy"></a></h2>
<pre>READY
10 PRINT "--==[[ Welcome to Hazard ]]==--"
20 PRINT
30 PRINT "You find yourself digitised into the arcade machine"
40 PRINT "Security breach detected. Enemy AI approaches..."
50 PRINT
60 PRINT "Choose weapon: (Pulse pistol,Laser rifle,Plasma grenade)"
70 INPUT A$
80 IF A$="Pulse pistol" then goto 200
90 IF A$="Laser rifle" then goto 300
100 IF A$="Plasma grenade" then goto 400
110 PRINT "Pick one! You're running out of time!"
120 GOTO 50
200 PRINT "You charge your enemies and dispatch them point-blank"
210 GOTO 1000
300 PRINT "With a brief volley of fire, your enemies are deleted"
310 GOTO 1000
400 PRINT "Tossing the grenade"
410 PRINT "You roll and manage to escape the blast that engulfs all"
420 GOTO 50
1000 PRINT "Click download to proceed"
</pre>
<p>
<br>
</p>
<h3 style="text-align: center">Awesome original soundtrack by Wolfgun</h3>
<p>
<br>
</p>
<h4 style="text-align: center">
<iframe style="border: 0; width: 400px; height: 472px" src="https://bandcamp.com/EmbeddedPlayer/album=1080325965/size=large/bgcol=333333/linkcol=0f91ff/artwork=small/transparent=true/">&amp;amp;lt;a href="http://wolfgun.bandcamp.com/album/escape"&amp;amp;gt;ESCAPE by Wolfgun&amp;amp;lt;/a&amp;amp;gt;</iframe>
<p>
<br>
</p>
</h4>
<h3 style="text-align: center">Digitised into the machine</h3>
<h3 style="text-align: center">
Can you survive the computer's security systems and fight your way back to the real world?</h3>
<h3 style="text-align: center"> Do you have the skill to escape?</h3>
<h3 style="text-align: center"> Download and find out...</h3>
<iframe width="720" height="450" src="https://www.youtube.com/embed/yM7Ze5bVk_U" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzY2NTMvMTU5NTY3LmpwZw==/original/Ro58BR.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY2NTMvMTU5NTY4LmpwZw==/original/%2BrORlS.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY2NTMvMTU5NTcwLmpwZw==/original/8ma0Py.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY2NTMvMTU5NTY5LmpwZw==/original/XH3DI5.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY2NTMvMTU5NTcxLmpwZw==/original/eflrsb.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY2NTMvMjI0MzEzNC5wbmc=/original/s3KqsG.png]]
<p>The official soundtrack for Head AS Code! The full soundtrack is now out!</p>
<p>Check out the game here: <a href="https://miracle-moon.itch.io/head-as-code">https://miracle-moon.itch.io/head-as-code</a></p>
<p>Tracklist:<br></p>
<p>01 - Head AS Code.wav<br>02 - Anomalous Sepulcher.wav<br>03 - Agoraphobic Sloth.wav<br>04 - Ambient Strain.wav<br>05 - Abyssal Snarl.wav<br>06 - Accelerated Scuffle.wav<br>07 - Active Search.wav<br>08 - Auxiliary Search.wav<br>09 - Advancing Shadows.wav<br>10 - Algorithm Simile.wav<br>11 - Alarming Silence.wav<br>12 - Alarming Situation.wav<br>13 - Anaphora Solution.wav<br>14 - Ascertaining Speech.wav<br>15 - Ascertaining Sanity.wav<br>16 - Android Sorrow.wav<br>17 - Agnostic Shutdown.wav<br>18 - Use Your Head (Bonus Track).wav<br>19 - Crack The Code (Bonus Track).wav</p>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/YjgnvbMXlew" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1nLzUyOTc1MjcucG5n/original/wp7vm5.png]]
<p>This was the first PC game I released myself and, well, yeah it looks dated and it's a bit rough around the edges but I think it's still really fun. It's 8 years old and the physics are admittedly a bit dodgy but if you like zero budget racing games and you don't expect AAA quality, you might enjoy unlocking everything :)</p>
<p>Anyway, here's the spiel that went with the original:</p>
<p>Jump a super car at 100mph, crash a monster truck in a forest, drive a dumper truck through the power station or drive a classic hot rod to street racing victory; it's all here!</p>
<p>Get ready for crazy driving, high speed crashing and crazy exploding fun with vehicles of all different types. Each vehicle has a unique driving style for you to master, in both quick race or career modes.</p>
<p>Use nitrous to fuel the ride and ram other racers out of existence in this exciting, all-out <strong>arcade </strong>racing game!</p>
<h5>GAME FEATURES</h5>
<ul><li>7 different environments (race forward and reversed)</li><li>Race and win to unlock vehicles, including cars, rigs, monster trucks and hot rods</li><li>30+ career mode events</li><li>Quick race mode allows you to race any unlocked car on any unlocked track</li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTU0MTEvNjEwMjMzNC5wbmc=/original/qdd%2BtO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU0MTEvNjEwMjMzMy5wbmc=/original/kaAbIP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU0MTEvNjEwMjMzNS5wbmc=/original/pZMKRo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU0MTEvNjEwMjMzNi5wbmc=/original/TnUMOT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU0MTEvNjEwMjMzOC5wbmc=/original/0HRoss.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU0MTEvNjEwMjMzNy5wbmc=/original/JP4fXK.png]]
<p>This was the first PC game I released myself and, well, yeah it looks dated and it's a bit rough around the edges but I think it's still really fun. It's 8 years old and the physics are admittedly a bit dodgy but if you like zero budget racing games and you don't expect AAA quality, you might enjoy unlocking everything :)</p>
<p>Anyway, here's the spiel that went with the original:</p>
<p>Jump a super car at 100mph, crash a monster truck in a forest, drive a dumper truck through the power station or drive a classic hot rod to street racing victory; it's all here!</p>
<p>Get ready for crazy driving, high speed crashing and crazy exploding fun with vehicles of all different types. Each vehicle has a unique driving style for you to master, in both quick race or career modes.</p>
<p>Use nitrous to fuel the ride and ram other racers out of existence in this exciting, all-out <strong>arcade </strong>racing game!</p>
<h5>GAME FEATURES</h5>
<ul><li>7 different environments (race forward and reversed)</li><li>Race and win to unlock vehicles, including cars, rigs, monster trucks and hot rods</li><li>30+ career mode events</li><li>Quick race mode allows you to race any unlocked car on any unlocked track</li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTU0MTEvNjEwMjMzNC5wbmc=/original/qdd%2BtO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU0MTEvNjEwMjMzMy5wbmc=/original/kaAbIP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU0MTEvNjEwMjMzNS5wbmc=/original/pZMKRo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU0MTEvNjEwMjMzNi5wbmc=/original/TnUMOT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU0MTEvNjEwMjMzOC5wbmc=/original/0HRoss.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU0MTEvNjEwMjMzNy5wbmc=/original/JP4fXK.png]]
<p>Healer is a one player journaling game in which you play as a for-hire healer in a world of fantasy adventure. You'll float from party to party, meeting new allies and exploring dangerous locales in hopes of keeping your group from falling to the darkness that confronts it (and keeping your wallet from running out of coin).</p>
<p>And you'll keep a journal along the way, charting the course of your adventure and looking back on the places you've been and people you've met, all inspired by draws from a Tarot deck.</p>
<p><br></p>
<p>Writing & Layout by Tamsin Bloom (<a href="https://twitter.com/tamsinthegame" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@tamsinthegame</a>). Featuring art by Hero Fox (<a href="https://twitter.com/heyfoxprince" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@heyfoxprince</a>)!</p>
<p><em>A note on Tarot: you can find an online tarot generator <a href="https://www.generatormix.com/random-tarot-card" target="_blank" rel="nofollow noopener" referrerpolicy="origin">here</a>, and information about card meanings <a href="http://learntarot.com/cards.htm" target="_blank" rel="nofollow noopener" referrerpolicy="origin">here</a>, among many other places online. Similar tools to Tarot, such as Oracle decks or more standard playing cards, can be used with minor rules adjustments.</em></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzQ1NDYzLzQxNTY5MjcucG5n/original/%2FNcBzL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ1NDYzLzQxNTY3OTIucG5n/original/GAHeYB.png]]
<p>Heart Home is a light roleplaying game about diaries, memories, and building a cozy headspace. It’s meant to be played by one or more players in short (under an hour) sessions, returning every day or so. Players don’t have to play at the same time to play together.</p>
<p>Inspired in part by Animal Crossing, Heart Home lets players indulge in some small-scale worldbuilding as they define and decorate their headspace. Fueled by kind acts and personal reflection, Heart Home is made to be a relaxing, potentially meditative daily ritual.</p>
<p>
</p>
<p><em>Players: 1+<br>Materials: A writing document shared between players<br>Pages: 6</em></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjg3NzA2LzM3ODcyMzkucG5n/original/fe%2FHyc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg3NzA2LzM3ODcyNDAucG5n/original/vYqr0y.png]]
<p><em>Welcome to the wildest night of your life.</em></p>
<p><br></p>
<p><strong>HEART//BEAT </strong>is a one-sheet, easy to play game inspired by synthwave music videos, crazy road trips, and sharing music with friends. </p>
<p><br></p>
<p>On the start of a night out, something dramatic or weird happens, and your group has to shelf their plans for hitting the club by going on an adventure through the city, solving problems with HEART and BEATing those that stand in the way. </p>
[img width=500 [https://img.itch.zone/aW1nLzQxMDM2NzIucG5n/original/KfQuk3.png]]
<p>You have been held in Hell for hundreds of years. Now, finally, you have been given a chance to escape; by winning the golf tournament held every 666 years! Which really is an awful choice, but it's the best you've got. Can you defeat the other competitors to escape from Golf Hell, or will you be trapped here for all eternity?</p>
<p>Hell Holes is a competitive fantasy golf dice game for 1-6 players. Each time it is your turn, you will select your club and roll dice to see how your shot went. Hopefully, you stayed on the course and did not stray into any of the fantastic dangers of the Circle you are competing on at the time. As you play your way through the nine Circles of Old Hell Downs, the demonic Caddy will interfere by offering special clubs to whoever is in last place at the end of a circle. Only by playing better than your fellow golfers (or maybe being luckier than them) can you escape Golf Hell!</p>
<p>You will need a pair of ten-sided dice (or an electronic dice roller, or a numbered spinner, or some other way to generate random numbers between 1 and 10) to play Hell Holes.</p>
<p>Purchases at $6.00 or above add a community copy to the pool for other community members who may be interested in the game, but unable or unwilling to purchase it, to claim and enjoy Hell Holes themselves.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzMxNzc1LzQwNjkwODQucG5n/original/0wSrmc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMxNzc1LzQwNjkwOTIucG5n/original/F%2BiNiW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMxNzc1LzQwNjkwOTMucG5n/original/LM6xk1.png]]
<p>Hellhole is an isometric physics puzzle game for Windows.</p>
<p>Consume everything.</p>
<p>Defy Gaia.</p>
<p>We will be our own undoing.<br></p>
<p>The game was designed and developed as part of a study into ludonarrative dissonance within computer games.</p>
<p><del>If you choose to play this game I would be very grateful if you could complete the questionnaire linked below: </del></p><del>
</del><p><a href="https://forms.gle/LnaVNfy6zENDKn4v5" rel="nofollow noopener" referrerpolicy="origin"><del>https://forms.gle/LnaVNfy6zENDKn4v5</del></a>
</p>
<p>You can also play Hellhole in your browser here:<br></p>
<p><span class=""></span><a href="https://jkelly.itch.io/hellhole-game-webgl" target="_blank">Hellhole Browser Version</a><a href="https://jkelly.itch.io/hellhole-game"></a></p>
<p>©jkelly 2021
</p>
<p>HellholeGame_V104 published 1st April 2021
</p>
<p><strong>Minimum system requirements</strong></p>
<table><tbody><tr><td>Operating System<br></td><td>Windows 10 Version 18362.0 or higher</td></tr><tr><td>CPU</td><td>Intel Core i3-4170 or better</td></tr><tr><td>GPU</td><td>Nvidia GeForce GT 640 or better</td></tr><tr><td>HDD</td><td>200 MB free space</td></tr><tr><td>RAM</td><td>4 GB</td></tr><tr><td>VRAM</td><td>2 GB</td></tr></tbody></table>
<iframe width="720" height="450" src="https://www.youtube.com/embed/OnPYAgo7l-0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTc3ODM2LzU1NTUyNzAucG5n/original/ZHFLP4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc3ODM2LzU1NTQ4MTMucG5n/original/qCFnEw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc3ODM2LzU1NTQ4MTQucG5n/original/yITgwu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc3ODM2LzU1NTQ4MTUucG5n/original/gLZeL9.png]]
<p>The Heroes Enhancing Lives Program (HELP) is now hiring for new talent! Are you a team player who works hard, can handle challenging situations, and questions the status quo? This fulfilling position is located at the peaceful hamlet where you can enjoy homely, local cuisine or take a breather at the nearby forest path. </p>
<p>As one of our HELPers, you will be assigning certified heroes to quests vetted by your manager. This position is a great opportunity to get your foot in the door for the lucrative, history-rich Hero industry. You will have opportunities to meet famous heroes and work closely with them as you recognize their needs and talents as they pertain to quests.</p>
<p>No experience? No problem! If you have finished all certified HELP examinations prior to applying, our expert management team will give you high class, AWARD WINNING training to get you settled in. </p>
<p>So what are you waiting for? Apply today!</p>
<p>Qualifications:</p>
<p>- Two years of prior work experience in a customer facing or account role required.</p>
<p>- Basic computer knowledge and familiarity with spreadsheet and documentation software required.</p>
<p>- May be expected to carry up to twenty pounds of packaging and materials as they arrive for basic office functions.</p>
<p>- Must be trainable, and willing to learn!</p>
<p>- Work-From-Home is not available for this role.</p>
<p>- Bring your best smile!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/az9NDTpc8tc" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTc1MTQ1LzMwNDUwNzAucG5n/original/OIoJAM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc1MTQ1LzMwNDUwOTUucG5n/original/2v%2BzHK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc1MTQ1LzMwNDUwOTEucG5n/original/wdtDJ0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc1MTQ1LzMwNDUwNzQucG5n/original/wgZLBh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc1MTQ1LzMwNDUwODMucG5n/original/kJt6BJ.png]]
<p><strong>STORY:</strong></p>
<p>You woke up to the digital rendition of Korobeiniki.</p>
<p>(Of course you would recognize the song. You even used to dream of different shaped bricks falling into place every night. Sometimes you would wake up in cold sweat as the jagged tower grew taller and taller without a single-column bar in sight to make it all go away.)</p>
<p>Wiggling in place, you tried to roll off the bed as usual, but nothing happened.</p>
<p>There is no bed.</p>
<p>There is no “you”. </p>
<p>The vast greyness up ahead seems like the only possible way of escape.</p>
<p>Your body twitches as the high-pitch Russian folk music fills your two-dimensional senses, driving you mad.</p>
<p>What will you do?</p>
<p><strong>REQUIREMENTS:</strong></p>
<p>1 - many players<br>1d6 for each player<br>Pencil or Pen</p>
<p><strong>HOW TO PLAY:</strong></p>
<p>1. Roll the dice on your turn.<br>2. Each roll decides your tetra block shape, based on diagram.<br>3. Only stacking similar to "a certain falling block game" is allowed. (Name hidden due to copyright reasons)<br>4. You die/lose a turn should a horizontal line is drawn across the playing field. Moving upwards is crucial.<br>5. Score points based on number of cube that touches the “ceiling”.<br>6. Game ends when no more legal moves are possible.<br>7. Player with most points at the end of the game wins.</p><p><strong>CREDITS:</strong><br></p><ul><li>Background image on game page<br><a href="<a href=" https:="" www.freepik.com="" free-photos-vectors="" background"="">https://www.freepik.com/free-photos-vectors/background">Background</a> vector created by dukepope.com - <a href="http://www.freepik.com" rel="nofollow noopener" referrerpolicy="origin">www.freepik.com</a></li><li>Feedback from Riz, Umar, Ben Flowers, and Calvin Wong.</li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzkzMTAyLzIwMDc5NjEucG5n/original/CS8%2BAN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzkzMTAyLzIwMDc5NjIucG5n/original/3OzeMn.png]]
<p>Hearts race in this 4-player beat-a-thon!</p><p>Can you pump past the finish line? CAN YOU?</p><p>~</p><p>Tap out the beat of a heart to get goin'!</p><p>Have fun!</p><h2>Made by:</h2><p><a href="https://twitter.com/Rokashi" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Rokashi Edwards</a> - Art/Animation</p><p><a href="https://twitter.com/davidsgallant" target="_blank" rel="nofollow noopener" referrerpolicy="origin">David S. Gallant</a> - Programming</p><p><a href="https://twitter.com/KingKRule" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Ricky Lima</a> - Music</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MjkvMzEzNDMuZ2lm/original/WKo2Wd.gif]]
<p>Magical girls are real, but the pay sucks! Join the Union of Magical Girls as they fight to protect the city from evildoers by day, and fight to become unionised by night.</p>
<p><strong>Features:</strong></p>
<ul><li>Take on the brainwashed zombie hordes in <strong>tactical, turn-based combat</strong>.</li><li>Your magical familiars gave you these powers, but now they expect you to fight evil for free? <strong>Negotiate better pay</strong> or employment benefits based on your performance.</li><li>Get to know the inhabitants of the struggling convenience store where you and your family live and work. Power up your abilities by <strong>making new social connections</strong>.</li><li>Loaded with dorky humour and 90s magical girl anime tropes.</li></ul>
<p><strong><img src="https://img.itch.zone/aW1nLzM4MTI4NTMuZ2lm/original/fU6lLi.gif" loading="lazy"></strong></p>
<p><strong>Battle Flow:</strong></p>
<p>Due to your overwhelming power levels, the enemies can't actually hurt you, so the focus is on <strong>defeating enemies as quickly as possible</strong> to gain higher rewards and bargaining power when the battle ends.<br><br>Of course, not all enemies are brainless zombies, and you'll have to contend with many abilities designed to impede your pursuit of a perfect score!</p>
<p><strong>Social Links:</strong><br></p>
<p>Outside of battle you'll be able to invest your precious time and money into building up your social links through <strong>visual novel style conversations</strong>:</p>
<ul><li>Help the convenience store clerk find romance!</li><li>Try to lure out the NEET who lives in the storage cupboard!</li><li>Waste all your money on gacha machines to try and impress a small child!</li></ul>
<p><img src="https://img.itch.zone/aW1nLzM4MTI4NjAuZ2lm/original/qba7I4.gif" loading="lazy"><br></p>
<p><strong>Negotiation:</strong></p>
<p>How the heck are you supposed to have a social life with no money or free time? After every battle you'll get to lead the Union of Magical Girls in <strong>collective bargaining</strong> to determine your reward based on how well you fought and how many gems you gathered.<br><br>Don't let them take your <strong>dental plan</strong>!</p>
<hr>
<p><small></small></p><small>
<p><strong>Keyboard Controls:</strong><br></p>
<p><strong>Z - </strong>Confirm / Select<br><strong>X - </strong>Cancel<br><strong>O/P - </strong>Toggle Character (weird choice, sorry!)</p>
<p><strong>Gamepad Controls use Nintendo Switch button layout.</strong><br></p>
</small><p><small></small></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/0kFF03Ascuk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDg0MjgzLzM4MTI4MjcucG5n/original/53GLTE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg0MjgzLzM4MTI4MjEucG5n/original/SxMbcl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg0MjgzLzM4MTI4MjIucG5n/original/XmLN8u.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg0MjgzLzM4MTI4MjAucG5n/original/tFYS%2FO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg0MjgzLzM4MTI4MjgucG5n/original/wBfaII.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg0MjgzLzM4MTI4MjUucG5n/original/x%2FrnDw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg0MjgzLzM4MTI4MjYucG5n/original/mZvtK%2F.png]]
<p>People are vanishing and monsters are appearing more often. <br></p><p>It's time to find out why!<br>At least that was your plan but you fell victim yourself and are now on a quest to both cure yourself and find the mysterious figure inflicting these curses!</p>
<p>Hexed is a short game you can download for Windows. (I wish I could make it available everywhere but MV's deployment is questionable at the best of times, much less when you can't test it)<br>Initially I made it so I could show maps to a friend for them to use as they like but I liked the example story so much I just had to make it a full fledged title.</p>
<p>This is not for children as it contains themes of extreme violence, strong language and distressing situations.<br></p>
<p>The game is expected to take 3 to 5 hours for you to complete depending on your play style and difficulty.<br>ゲームは5時間続きます。<br>5小时的游戏时间。(5小時的遊戲時間。)</p>
<p>Currently only available in English.<br>少し日本語。<br>极其有限的中文。(極其有限的中文)<span></span></p>
<p>If you wish to stream it, use this category: <a href="https://www.twitch.tv/directory/game/Hexed" rel="nofollow noopener" referrerpolicy="origin">https://www.twitch.tv/directory/game/Hexed</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTM0NzY5LzY0ODI2MTEucG5n/original/gd2bev.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM0NzY5LzY0ODA3MzMucG5n/original/9b2DNG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM0NzY5LzY0ODA4MTIucG5n/original/oIohA4.png]]
<p>Welcome to the hell house! <em>Hardcore Gaming 101 Presents: Castlevania</em> includes 158 pages with full reviews of over thirty Castlevania titles - starting from the 1986 Nintendo original up to the 2014 <em>Lords of Shadow 2</em> - plus reviews of clone games, soundtracks, books, trivia, and more! Reviews are based on texts from the <a href="http://www.castlevaniadungeon.net/" rel="nofollow noopener" referrerpolicy="origin">Castlevania Dungeon</a>, though nearly everything has been entirely written from scratch, plus lots more additional material!</p>
[img width=500 [https://img.itch.zone/aW1nLzMwOTk4MjAuanBn/original/%2F%2Bbe45.jpg]]
<p>There is always that one goal of every gamer...that goal is to become the ULTIMATE gamer! It's time to pick up the controller, glue yourself to the couch and get ready!<br><br>Start your journey, jam to awesome music and achieve the highest score!</p>
<h2>Key Features</h2>
<ul><li>Rock out to amazing music!<br>
</li><li>Enjoy a unique display of colors with each tap!<br>
</li><li>Two modes to choose from (Endless and Hi-Score Challenge)!</li><li>Tons of unlockables!</li></ul>
<p>Art by <a href="https://instagram.com/art.of.nuby" target="_blank" rel="nofollow noopener" referrerpolicy="origin">art.of.nuby</a> & <a href="https://instagram.com/therealcrowjones" target="_blank" rel="nofollow noopener" referrerpolicy="origin">therealcrowjones</a></p>
<p>Music by <a href="https://songwhip.com/n3ktunes" target="_blank" rel="nofollow noopener" referrerpolicy="origin">N3ku</a></p>
<p><strong><em>PHOTOSENSITIVE WARNING: READ BEFORE PLAYING!!!</em></strong><br></p>
<p>A very small percentage of individuals may experience epileptic seizures when exposed to certain light patterns or flashing lights. Exposure to certain patterns or backgrounds on a computer screen, or while playing video games, may induce an epileptic seizure in these individuals. Certain conditions may induce previously undetected epileptic symptoms even in persons who have no history of prior seizures or epilepsy.</p>
<p>If you, or anyone in your family, have an epileptic condition, consult your physician prior to playing. If you experience any of the following symptoms while playing a video or computer game -- dizziness, altered vision, eye or muscle twitches, loss of awareness, disorientation, any involuntary movement, or convulsions -- IMMEDIATELY discontinue use and consult your physician before resuming play.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/pVjMkd_qqBA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjQ5NDc1LzU5NDYyMDIuanBlZw==/original/%2Bycrb%2F.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ5NDc1LzYxNjkyMzYucG5n/original/S7mSz4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ5NDc1LzYwNTI1NDguanBlZw==/original/oZehvc.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ5NDc1LzU5NDYyMDMuanBlZw==/original/f1boCj.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ5NDc1LzU5NDYyMDQuanBlZw==/original/Yg2ca%2B.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ5NDc1LzU5NDYyMDUuanBlZw==/original/BOfYQe.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ5NDc1LzU5NDYyMDYuanBlZw==/original/6eaBZI.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ5NDc1LzU5NDYyMDcuanBlZw==/original/TALbA5.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ5NDc1LzYwNTI1NjEuanBlZw==/original/87HgB9.jpeg]]
<p>High Moon is a western/fantasy-themed classless TTRPG with an emphasis on tough character-building choices and practice-based skill progression system.</p>
<p>You and your group are on the wrong side of the law. Perhaps you're a ruthless criminal, perhaps you were falsely accused. Wether you want to clear your names or get revenge on the sheriff that incarcerated you, you're all wanted people now, and you better stick together.</p>
<p>Download includes:</p>
<ul><li>Character sheets</li><li>Rulebook: Basic rules for character creation, combat, saves, skill checks, magic, rest and travel</li><li>Spellbook: List of special abilities and spells you can acquire upon leveling up.</li><li>GM Handbook: Tips and guidelines for running the game, and a small bestiary</li></ul>
<p>High Moon's rulebook, spellbook and GM handbook each can be printed into a Letter-size sheet and folded into a pocket-sized eight-page mini-zine (if you don't know how to fold a mini-zine follow <a href="https://www.readbrightly.com/how-to-make-zine/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">this tutorial</a>). Screen-friendly versions that can be read on electronic devices are also included.</p>
<p><strong>Credits:</strong></p>
<p>Created and written by Juan Carlos Hernández.</p>
<p>High Moon is inspired by and borrows mechanics and ideas from other OSR-style TTRPGs, mainly Mausritter (and, by extension, Into the Odd), Troika, SLEDGEHAMMER and MÖRK BORG. </p>
<p>High Moon is released under a <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">CC BY-SA 4.0</a> license, so feel free to reuse it, redistribute it and remix it however you see fit as long as you follow the license terms. </p>
<p>This product is released for free, but donations are highly appreciated :)</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTkyMTI1LzU2NDQ2NTIucG5n/original/ygSOuU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTkyMTI1LzU2NDQ2NTMuanBlZw==/original/D0MYE6.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTkyMTI1LzU2NDQ2NTQuanBlZw==/original/nOc0Fm.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTkyMTI1LzU2NDQ2NTUuanBlZw==/original/GS%2BTnO.jpeg]]
<p>It’s Friday afternoon. The edibles are just kicking in, there’s nothing on TV, and the fridge is empty – Time for an adventure. There are three things you need to know:<br></p>
<ul><li>It’s Summer, 1995. </li><li>Nobody can know you’re high.
</li><li>McDonald’s is on the other side of town.</li></ul><p>High Society is an improv-heavy micro-RPG for 4 players and 1 GM, following the adventures of 4 Buds across small-town America. </p>
[img width=500 [https://img.itch.zone/aW1nLzUzMzQ1NTMucG5n/original/2ha4AJ.png]]
<p><strong>Highwinds</strong> is a sci-fi fantasy space opera RPG, focusing on wild, action movie style fights. Take the role of resourceful heroes on the edge of space and fight pirates, save people from killer robots, and explore ancient vaults locked in astral space.</p>
<p><strong>Highwinds</strong> contains all you need to play, and is designed for 1-6 players and one game master. For playing in person, three six-sided dice are recommended for each player. 15 sample characters are included, ready to play as both PCs or antagonists.</p>
<p><br></p>
<p>Archetype and Species art by Wren Culler</p>
<ul><li><a href="https://mothgeist.wixsite.com/lculler" rel="nofollow noopener" referrerpolicy="origin">https://mothgeist.wixsite.com/lculler</a></li><li><a href="https://twitter.com/mothgeist" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/mothgeist</a></li></ul>
<p>Cover by Goaty Goats using art provided by <a href="https://unsplash.com/" rel="nofollow noopener" referrerpolicy="origin">https://unsplash.com/</a></p>
<ul><li><a href="https://goaty.neocities.org/" rel="nofollow noopener" referrerpolicy="origin">https://goaty.neocities.org/</a></li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjEyODUyLzUxNjc3NDIucG5n/original/9IFJAr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEyODUyLzUxNjE0NzAucG5n/original/RclQCC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEyODUyLzUxNjc2OTMucG5n/original/U0X%2B7i.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEyODUyLzUxNjc2OTQucG5n/original/3%2BcFh7.png]]
<p><em>hollow</em> is a 2D Roguelike where your imaginary friend helps you traverse your dreams and conquer your fears and guilt. </p>
<p>You are Kid. During the day, things seem dull. You talk to your parents and wander around your home and it all seems so mundane. During the night, everything is in technicolor. You explore a sprawling, procedurally generated dreamscape full of color, adventure, and excitement. Your imaginary friend, Ghost, is both your guide and your primary weapon in your dreams. Through your dreams, you and Ghost must battle your inner fears or risk being consumed by them.</p>
<p>This alpha was created by Team Hollow to fulfill the capstone requirement for the MA Game Design Program at American University, Washington D.C. Look out for future updates from us as we continue to develop <em>hollow</em> into a full retail game!</p>
<p>Team hollow:</p>
<p><a href="https://laraalleydraws.myportfolio.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Lara Alley</a></p>
<p><a href="https://www.hazelmichelle.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Hazel Arroyo</a></p>
<p><a href="https://www.mitchellloewen.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Mitchell Loewen</a></p>
<p><a href="https://filiam.itch.io" target="_blank">Felipe Simas Magalhaes</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/ljkUhWfRs2I" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjM3MTgyLzM0MjY3OTMucG5n/original/mgvbnd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM3MTgyLzM0MjY3OTAucG5n/original/drl%2BpZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM3MTgyLzM0MjY3OTgucG5n/original/xiUrNn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM3MTgyLzM0MjY3OTQucG5n/original/tGwE2n.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM3MTgyLzM0MjY3OTcucG5n/original/DZ3Wsd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM3MTgyLzM0MjY3OTEucG5n/original/kytmYc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM3MTgyLzM0MjY3OTIucG5n/original/Ma89zL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM3MTgyLzM0MjY3OTYucG5n/original/52rN6O.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM3MTgyLzM0MjY3OTUucG5n/original/YiJ8YD.png]]
!![[All games]]
!!![[All games (sorted by rating)]]
!!![[Windows]]
!!![[Android]]
!!![[Linux]]
!!![[macOS]]
!!![[HTML5]]
!!![[Filter by rating]]
<p><strong>Until further notice, all proceeds from <em>Home Again</em> will be funneled toward bail funds and other mutual aid projects.</strong></p><p><span style="color: inherit; font-size: inherit"><em>A tabletop roleplaying game for three to seven people</em><br></span></p>
<p><span style="color: inherit; font-size: inherit">40 years ago, the Tao people and their island community were transported by some unknown means to the outskirts of a modern city. Play as members of the Tao community that have grown up with this legacy and fight every day to build on it, in the face of a society that doesn't understand them or care to.</span></p>
<p><em>Home Again</em> is powered by the apocalypse. Having an understanding of PbtA games should not be necessary but may be helpful.</p>
<p>Features include:</p>
<ul><li>Gorgeous full color cover design by <a href="https://twitter.com/momatoes" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Momatoes</a></li><li>Deft editing by <a href="https://twitter.com/bignoseagenda" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Mercedez "Cibby" Acosta</a></li><li>Roughly 40 pages of text, including<ul><li>Rules for playing and running the game</li><li>Guidelines for setting and character creation</li><li>Descriptions of six playbooks</li><li>A sample scenario called "Applewood"</li></ul></li><li>Playbook sheets, move sheets and other reference materials</li></ul>
<p><strong style="color: inherit; font-size: inherit"><br></strong></p>
<p><strong style="color: inherit; font-size: inherit">Note:</strong><span style="color: inherit; font-size: inherit"> This game was formerly called </span><em style="color: inherit; font-size: inherit">The Others</em><span style="color: inherit; font-size: inherit">.</span><br></p>
<p><em>Art by <a href="https://twitter.com/momatoes" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Momatoes</a>.</em></p>
[img width=500 [https://img.itch.zone/aW1nLzIxNTY3MDIuanBn/original/N0vuL4.jpg]]
<p>Sophie is a young girl staying home during COVID-19. Isolated from her friends, she must use her colorful imagination to entertain herself.</p>
<p>Play make-believe minigames to brighten up your mood and stave off the boredom!</p>
<p>~~</p>
<p><em>Homebound</em> is a short game which began as an entry for the 34th GM48 game jam in collaboration with Giraffe. After the jam, I decided to rebuild the game, fleshing it out and polishing it up. I hope that this short game can bring you some joy! Thank you for playing, and stay safe.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/hCOtcjmHQrA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTE4NjAyLzUxOTQyOTcucG5n/original/qQQOLy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTE4NjAyLzUxOTQzMDAucG5n/original/UxSwg5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTE4NjAyLzUxOTQyOTYucG5n/original/dKWdJx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTE4NjAyLzUxOTQyOTgucG5n/original/AzH%2BGk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTE4NjAyLzUxOTQzMDEucG5n/original/KOiu9y.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTE4NjAyLzUxOTQyOTkucG5n/original/qWZFTI.png]]
<p>This is a collection of several training materials from Chris DeLeon / Gamkedo LLC, normally part of the resources included with <a href="https://HomeTeamGameDev.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin">HomeTeam GameDev</a> membership, now available together here on itch as a set at 35%-off (materials included are sold separately on other platforms for a combined value of $180).</p>
<p>Courses (note: <em>not part of this collection</em>) based directly on this material have been taken by more than 300,000 people on Udemy.</p>
<p>Though only 2 of these included resources focus on programming, included source code is platform independent (works on Windows, Mac, Linux, or mobile) since it runs in-browser using built-in functionality. The non-code material is applicable regardless of engine or platform choice.<br></p>
<p>This collection includes the full versions of...</p>
<p>• Hands-On Intro to Game Programming textbook: 559 page PDF, step-by-step walkthrough with example source code in plain browser JavaScript for 6 types of retro games, 100+ exercises, no special software or prior background is required - used to pick up general pre/non-engine gameplay programming fundamentals even if later planning to use Unity, Godot, Unreal, etc.</p>
<p>• Videogame Developer's Strategy Guide: 448 page PDF, curated collection of more than 50 of the top articles from 5 years of weekly writing for new game makers (sections include getting started, education, programming, motivation, game design, level creation, team projects, and industry)</p>
<p>• From Tutorials to Original Games: 31 page PDF exercises booklet, with tips on navigating team projects, planning milestones for long-term schedules, and practicing gameplay coding fundamentals, based on methods tested and iterated across several indie and student gamedev communities since 2004</p>
<p>• Self-Command: 4 hour 54 min. audiobook (as DRM-free M4B and per-chapter MP3s) / 123 page transcript, productivity strategies combining simple techniques and perspectives for better staying on task<br></p>
<p>• Self-Calm: 7 hour 11 min. audiobook (as DRM-free M4B and per-chapter MP3s) / 251 page ebook, modern adaptation based closely on public domain translations of Meditations by Marcus Aurelius (practical Stoic philosophy)<br></p>
<p>• (Bonus) Why Make Games and How to Start: infographic flyer, breaking down 9 tips on how to make games for personal development and enrichment</p>
<p>
</p>
<p><strong>This package is for downloads-only, and does not include troubleshooting support or HomeTeam GameDev membership for custom training.</strong> Materials later made available to HomeTeam members will not be added to this set.</p>
<p><br></p>
<p>Responses to the 2 included audiobooks from professional game developers:</p>
<p><br></p>
<p><em>"I love creative work. I'll start making something, maybe divert briefly to an exciting adjacent opportunity, perhaps explore and research it a little, think about how to fold it into the rest of the work, and in a few hours I've redesigned my project. And that's great! This is how projects improve. But, it's not how they get finished. When I want to finish something I need it to keep moving forward, so I have to commit to completing the occasional task. I've found Chris' technique excellent for this."<br></em></p>
<p>-Farbs</p>
<p><br></p>
<p>
</p>
<p><em>"As a chronic scatterbrain I cannot TELL you how much it has improved my productivity... If you're very easily distracted like me and staying on task (especially during these hell times) has been a challenge, I super recommend it! ...absolutely check out his books at Self-Command.com. TONS of stuff on how to reprogram your mindset to be more productive and kinder to yourself. I don't think I know a creative professional who doesn't struggle with productivity issues and/or negative self talk, and Chris' work is a huge resource for doing better work and feeling better about it. Can't recommend it enough!"</em></p>
<p>-@RyanIkeComposer</p>
<p><br></p>
<p><em>"If you have any to-do list system, whether it be a bullet journal, a to-do list app, Trello, Asana, or anything else, you know how easy it is to get overwhelmed when looking at it. Heck, you may even have a large whiteboard right in front of you, chock full of tasks that are constantly staring at you, but never get done. [Self-Command] forces you to distill what you're working on down to one specific thing that you're currently doing. That's all you need to think about, which means your focus skyrockets and you get way more done in less time. And I'll let Chris' excellent book explain them in more detail. There's plenty more nuance to this system, and he explains it perfectly (and he's a great audio book narrator too!)... Get Chris' books."</em></p>
<p>-Akash Thakkar</p>
<p><br></p>
<p>
</p>
<p><em>"I've been using Chris's Self-Command method all year, it works... I'm a pretty organised person with todo lists and spreadsheets etc. I need to be in order to run my business effectively. But [the] Self-Command method helped me to take things to a new level in a difficult year (2020) and beyond. I recommend it... This is very easy to get started."</em></p>
<p>-Jake Birkett</p>
<p><br></p>
<p>
</p>
<p><em>"Self-Calm lives up to its name. It takes on stoic concepts in clear concise language which I found was a helpful and centering way to start my days. For someone who is familiar with other modern stoic voices like Ryan Holiday but unfamiliar with the original text, this book helped flesh out my knowledge of the topic without feeling bogged down by historical language. Self-Calm helps give perspective to the common trials of life."</em></p>
<p>-Erin McCarty</p>
<p><br></p>
<p><em>"I started my second listen through of Self-Calm. I can honestly say that the thoughts it provoked have contributed to a marked improvement in life as to how I cope with stress. Thank you for making this."
</em></p>
<p>-Dmitri Roujan</p>
[img width=500 [https://img.itch.zone/aW1nLzYxNTQ1MTMucG5n/original/rwqKjW.png]]
<p>A low-poly epistolary game where you navigate a messenger pigeon through a city. During your journey, you hear the contents of the letter you're delivering. This game is SAD and QUEER. Read an article about it at Gayming Mag <a href="https://gaymingmag.com/2020/09/gayme-of-the-week-homing/" rel="nofollow noopener" referrerpolicy="origin">here.</a></p>
<p>The game doesn't have a tutorial (I'm sorry) so to play, use <strong>A</strong> and<strong> D</strong> on the keyboard or the<strong> left stick</strong> to <strong>move</strong>, and the <strong>mous</strong><strong>e</strong> or the <strong>right stick</strong> to <strong>look around</strong>. <strong>P</strong> or the <strong>top button</strong> on the controller will pause, where you can adjust settings like volume and subtitles. The buildings in blue are significant points that will provide different bits of narrative if you fly over them. There are two endings. </p>
<p>Made by <a href="https://michellelega.com" rel="nofollow noopener" referrerpolicy="origin">Michelle Lega</a> <br>Voice: <a href="http://charlieirving.com/" rel="nofollow noopener" referrerpolicy="origin">Charlie Irving</a><br>Music: <a href="https://klassicgames.net/" rel="nofollow noopener" referrerpolicy="origin">Jes Klass</a></p>
<p>This game is compatible both with <strong>keyboard and mouse</strong> and <strong>controller</strong>. Please download the correct file for your setup, noted with (Keyboard) or (Controller). </p>
<p>NOTE: If you have a Mac running Catalina, you have to launch the game from the itch app, otherwise Catalina won't run it properly!</p>
<p>*If you would like to view a playthrough of the game without downloading, you can watch <a href="https://youtu.be/ihAmB55kP0I" rel="nofollow noopener" referrerpolicy="origin">here.</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTg2ODk4LzMwOTU4NzUucG5n/original/CPm2O1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg2ODk4LzMwOTU3OTAucG5n/original/5DcY3E.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg2ODk4LzMwOTU3OTEucG5n/original/gxMaPn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg2ODk4LzMwOTU3OTMucG5n/original/eOQ%2BwP.png]]
<p><strong>A mystery told five paragraphs at a time. Over 402,073,902 possible playthroughs.</strong></p><p>Reviews:</p><p>"C'est toute la force de cette narration morcelée, dispensée au compte-gouttes, et ce qui fait certainement de Hope's Peak une des meilleures interprétations du thème de la Mystic Western game jam." - <a target="_blank" href="http://oujevipo.fr/general/5413-hopes-peak/" rel="nofollow noopener" referrerpolicy="origin">Oujevipo.fr</a><br></p><p>"Very well written. I enjoyed each paragraph and learning more as it went." - <a target="_blank" href="https://oldknivestale.itch.io/">OldKnivesTale</a><br></p><p>"The individual paragraphs and the feeling of the entire game are so strong, I love the writing style, the mystery, the mood. This is one of my fave games from the jam so far." - <a target="_blank" href="https://turnfollow.itch.io/">turnfollow</a><br></p><p><strong>Created for the 2016 Mystic Western Game Jam.</strong><span></span></p><p><strong>By Kalle MacDonald (@KalleMacD)</strong><br><span></span></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzM2MzUvMzM5OTk2LnBuZw==/original/AScPNg.png]]
<p>As part of my HNC year of Computer Game Development at West College Scotland my final assessment for Programming Fundamentals was to choose from a list of games and make it . The options were: Flappy Bird(done that already, check my other games), Defender(I was involved in a similar game, also on my Itch) and Frogger.</p>
<p>As I had already made games for the other 2 games, I chose Frogger. I had the option to create or source the assets online to use but the code had to be 100% my own. I chose to make the assets and audio.<br></p>
<p>The game is basic but has a random change to the obstacle movement speed. Go for the high score and let me know what you get :)</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA2NzU0MC82MTEzNTcyLnBuZw==/original/pC8RpN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA2NzU0MC82MTEzNTczLnBuZw==/original/L1OFgq.png]]
<p>
<strong>Blast your hovercycle through the enemy's crushing forces under a bright blue sky!</strong>
</p>
<p>
Drawing inspiration from saturated, hectic, and skill-based arcade games new and old, including games like
<strong><em>Burning Force</em></strong>, <strong><em>Border Down</em></strong>, and <strong><em>DARIUSBURST</em></strong>, <strong><em>Horizon Vanguard</em></strong> is a VR action game that aims to combine the speed, focus, and density of <strong>arcade shooting games</strong> with the immersion and input capabilities of <strong>modern VR technology</strong>. Use your hovercycle to dodge enemy fire and attack armored ground targets while taking aim with your pistol to destabilize and destroy aerial foes! Use your radar to get your bearings when overwhelmed!<br>
</p>
<h2>
Features<br>
</h2>
<ul>
<li>Support for <strong>PC VR headsets</strong> and <strong>flat-screen</strong> traditional monitor play</li><li>Unique mechanics mixing <strong>bullet hell dodging</strong> and <strong>light gun accuracy</strong></li>
<li>An <strong>arcade game structure</strong>: short, dense, and challenging</li>
<li><strong>15 branching stages</strong> full of unique environments, enemies, and bosses, with access dependent the player's ability to find <strong>hidden intel</strong><strong></strong></li>
<li><strong>Comfortable movement</strong> in VR while maintaining <strong>a blistering sense of speed</strong></li>
<li>A catchy, melodic <strong>soundtrack</strong> by <a class="" href="http://coda.s3m.us/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><strong>Ken Snyder</strong> (aka <strong>coda</strong>)</a></li>
</ul>
<p><br></p>
<p><strong>Check out the demo and leave your feedback below!</strong></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/ZRLI3MGp2k0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNjI5LzM3MDQ0NjAucG5n/original/G3A%2BXt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNjI5LzM3MDQ0NjUuanBn/original/Dsecf2.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNjI5LzM3MDQ0NzQucG5n/original/bcRWzj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNjI5LzM3MDQ0NjcuanBn/original/9LgHzu.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNjI5LzM3MDQ0NjMuanBn/original/bX3upK.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNjI5LzM3MDQ0NjQuanBn/original/NpO51j.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNjI5LzM3MDQ0NjYuanBn/original/EwBAG3.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNjI5LzM3MDQ0ODMucG5n/original/hbAvmg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNjI5LzM3MDQ0NjEucG5n/original/2HkFRL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNjI5LzM3MDQ0ODQucG5n/original/oJG%2BIO.png]]
<p><strong></strong>A game about the struggle to have a conversation while also stuffing your face with food.</p>
<p>You are at an all-you-can-eat hot pot restaurant. You're hungry, and you just want to do nothing but chow down. <br></p>
<p>But you're here with a friend, and you don't want it to seem like you're only here to eat! </p>
<p>Can you manage to keep up a conversation while cooking and filling your belly?<br><br><img src="https://img.itch.zone/aW1nLzEyOTcyNzYuZ2lm/original/aDrtU%2B.gif" loading="lazy"></p>
<p><strong>Features</strong></p>
<ul><li>Cook delicious meat, veggies, and tofu in a tasty broth until they're just right!</li><li>Multitask your way through three meals! You'll be cooking and eating while keeping up a conversation with your friend. Make sure she never figures out you're <strong>really </strong>just here for the food...</li><li>You get to direct the convo, but make sure you're ready to keep up with your friend's comments - she'll ask you what you thought about what she said later, and if you don't get it right, things could get ~*awkward*~</li></ul>
<p><strong>Controls</strong></p>
<ul><li>WS or Arrow keys to look up and down</li><li>Mouse or trackpad (<strong>mouse recommended</strong>!) to cook / eat</li></ul>
<p><strong>Credits</strong><br></p>
<ul><li>Developed by Keane Ng (<a href="http://twitter.com/keanerie" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@keanerie</a>)</li><li>Featuring music and sound by <a href="http://pawsmenu.net/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Michael Berto (Paws Menu)</a> </li><li>Playtested by people I've eaten hot pot with who I have not alienated with my plainly food-obsessed behavior</li></ul>
<p><strong>A note for Mac users: </strong>If you’re running the game on Catalina it may take a few extra steps to get it running. See the comments section below for troubleshooting if you run into issues. Be sure to try using the Itch app to run the game (thanks <a href="https://itch.io/post/1747531" target="_blank">Jennythewatt</a> for pointing this out!).</p>
<p><strong></strong><strong>As Seen On!</strong></p>
<p><a href="https://www.rockpapershotgun.com/2018/10/21/work-up-an-appetite-with-hot-pot-panic/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Rock Paper Shotgun</a>: "...playing it has made me very hungry, so I’m off to go raid my fridge first."</p>
<p><a href="https://www.pcgamer.com/itchios-free-games-section-is-a-festival-of-scares-right-now/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">PC Gamer</a>: "... the arse-tightening tension of Hot Hot Panic, a game about trying to hold a conversation while stuffing your face with meat and potatoes."</p>
<p><a href="https://waypoint.vice.com/en_us/article/3k9nb8/hot-pot-panic-is-a-charming-fake-friendship-simulator?utm_source=wptwitterus" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Waypoint</a>: "This game scratches two very important itches for me: time management mechanics, and the aesthetics of delicious animated food. Also, it’s a great excuse out of any friend dates you may have coming up...just saying."</p>
<p><a href="https://www.theverge.com/2018/11/25/18103322/hot-pot-panic-holiday-meal-conversation-itch-io-thanksgiving-christmas" target="_blank" rel="nofollow noopener" referrerpolicy="origin">The Verge</a>: "...it manages to take the fairly universal social situation of trying to talk and eat at the same time, and turn it into a clever and fun game."</p>
<p><a href="http://warpdoor.com/2018/10/31/hot-pot-panic/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Warp Door</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/6S0y93e6Ufk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjY4NTY3LzEyOTcyNzMuZ2lm/original/XV9B3i.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4NTY3LzEyOTcyODkucG5n/original/T%2BAliA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4NTY3LzEyOTcyODMuZ2lm/original/mMc2Tr.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4NTY3LzEyOTU3MDcuZ2lm/original/yRGmAp.gif]]
<p>How to Embrace a Swamp Creature gives you an austerity crushed commuter town, friendships debating their continued existence, toxic air, visions of the stench, zombies trekking out of the bog for a pub breakfast, pride and madness; asking “What do you do next?” </p>
<p>In the game you play a friend group of mentally ill twenty somethings living in Swamp Strange, a commuter town wrecked by over a decade of austerity. Connected by train to Leafdon, sustaining the city, being sustained by it, being drained by it, an overflowing drain that struggles to remember it’s a town. </p>
<p>A strange magic pervades Swamp Strange. Breath in the Stench of the weird wetlands and feel knowledge crawling in the dark corners of your mind. You and the other swamp creatures shambles through your routines but you can’t help but feel the cracks in the mud.</p>
<p>Your friend group used to see each other all the time: because you had to. Context forced you together and you became friends through that. But the context is gone. You’ve moved on. But you’re still friends; for now. Two of you had been dating but you’ve been broken up for a while now; one of you is finally managing to move out. Confront aimlessness, confront intimacy, look at what you’ve meant to each other and what you mean to each other</p>
<p>_________________________________<br></p>
<p>Mentally ill swamp things nurturing crumbling friendship in a commuter town.</p>
<p>After the Mountain Goats song of the same name, from Heretic Pride.</p>
<p>For Record Collection 2K21.</p>
<p>Explore the changing days of a friend group in Swamp Strange.</p>
<p>Content Warnings: Oppression, bigotry, mental illness, trauma, drug use.
</p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODkyNTMyLzUwMzYzOTcucG5n/original/WItgL0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODkyNTMyLzUwMzY0MDAucG5n/original/Tel90a.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODkyNTMyLzUwMzY0MDEucG5n/original/ATYeTw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODkyNTMyLzUwMzY0MDMucG5n/original/BW45fF.png]]
<p>How to Embrace a Swamp Creature gives you an austerity crushed commuter town, friendships debating their continued existence, toxic air, visions of the stench, zombies trekking out of the bog for a pub breakfast, pride and madness; asking “What do you do next?” </p>
<p>In the game you play a friend group of mentally ill twenty somethings living in Swamp Strange, a commuter town wrecked by over a decade of austerity. Connected by train to Leafdon, sustaining the city, being sustained by it, being drained by it, an overflowing drain that struggles to remember it’s a town. </p>
<p>A strange magic pervades Swamp Strange. Breath in the Stench of the weird wetlands and feel knowledge crawling in the dark corners of your mind. You and the other swamp creatures shambles through your routines but you can’t help but feel the cracks in the mud.</p>
<p>Your friend group used to see each other all the time: because you had to. Context forced you together and you became friends through that. But the context is gone. You’ve moved on. But you’re still friends; for now. Two of you had been dating but you’ve been broken up for a while now; one of you is finally managing to move out. Confront aimlessness, confront intimacy, look at what you’ve meant to each other and what you mean to each other</p>
<p>_________________________________<br></p>
<p>Mentally ill swamp things nurturing crumbling friendship in a commuter town.</p>
<p>After the Mountain Goats song of the same name, from Heretic Pride.</p>
<p>For Record Collection 2K21.</p>
<p>Explore the changing days of a friend group in Swamp Strange.</p>
<p>Content Warnings: Oppression, bigotry, mental illness, trauma, drug use.
</p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODkyNTMyLzUwMzYzOTcucG5n/original/WItgL0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODkyNTMyLzUwMzY0MDAucG5n/original/Tel90a.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODkyNTMyLzUwMzY0MDEucG5n/original/ATYeTw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODkyNTMyLzUwMzY0MDMucG5n/original/BW45fF.png]]
<h3><strong><div class=""><iframe width="500" height="281" src="https://www.youtube.com/embed/YGyRlCPl7a0" frameborder="0" allowfullscreen=""></iframe></div><br></strong></h3>
<h3><strong>
</strong><strong>How to Win</strong> is an anarchic adventure/gaming experiment where anyone who plays can decide the rules of the world, and which direction our story goes.
</h3>
<p>In the summer of 2020, multi-award winning interactive theatre company Hidden Track teamed with indie game dev Cael O'Sullivan for their first ever gaming experiment. We asked our players what the rules of our game should be, and if they could imagine a world in which everyone could win.
We were given hundreds of suggestions and ideas, and we put the best ones to a public vote.
Whatever they decided, <em>WHATEVER</em> it was, that was the world we made next. </p>
<p><strong>Winning suggestions included:</strong>
</p>
<ul><li>Make the Most Money in the World
</li><li>Invest all our money in a potato-based pyramid scheme.
</li><li>Slay the Billionaire Dragon
</li><li>Brand new character: The Great Elephant of the North
</li><li>Brand new character: A monster drawn by a 5-year-old
</li><li>RAISE THE KRAKEN
</li><li>stealth ninja style
</li><li>Take over the media and spread propaganda.
</li><li>Run away and join the circus.
</li></ul>
<p>The result was… chaos.
</p>
<p>Now, all 5 chapters of Season 1 have been compiled for itch, along with new functionality and brand new content.</p>
<p>Explore the world we made, find out how it ended, then tell us what to do different.
Whatever you decide, that’s what happens next.
Commissioned by Harrogate Theatres and HOME, Manchester.
</p>
<p><br>Reviews:<br></p>
<p> “A cleverly subversive pantomime that plays with the conventions of gaming and theatre.”
<a href="http://exeuntmagazine.com/reviews/review-win-shut-hidden-track-online/" target="_blank" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">Exeunt Magazine</a><br></p>
<p>"An amazing journey of people making insane suggestions and developers allowing those suggestions to shape their game in major ways. This is truly one of the weirdest games I’ve ever encountered. In a good way. " <a href="https://killapenguin.com/gamereviews/how-to-win-season-one-review/" rel="nofollow noopener" referrerpolicy="origin">KillaPenguin</a></p>
<p>"A revolutionary, one-of-a-kind digital experience... <em>How to Win: Season One </em>is extremely special." <a href="https://www.heypoorplayer.com/2021/04/08/how-to-win-season-one-review-pc/" rel="nofollow noopener" referrerpolicy="origin">HeyPoorPlayer</a></p>
<p>“An ambitious and original experience... very well-written, and unrestricted by stereotypical notions about gamers.” <a href="https://indie-hive.com/how-to-win/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Indie Hive</a> </p>
<p> “How to Win is a game that deals with… uhh, **** how do I explain this. ****.”
<a href="https://indiegamerteam.com/2020/09/17/how-to-win/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Indie Gamer Team</a>
</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/YGyRlCPl7a0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA1ODIxNS82MDU2MjAyLmpwZw==/original/3eB%2F9N.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1ODIxNS82MDU2MjAzLmpwZw==/original/lmoe%2FU.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1ODIxNS82MDU2MjA1LmpwZw==/original/V0Xe5u.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1ODIxNS82MDU2MjA3LmpwZw==/original/4KhT%2B%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1ODIxNS82MDU2MjEwLmpwZw==/original/G%2FAnqj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1ODIxNS82MDU2MjIxLmpwZw==/original/VXxxEr.jpg]]
<<list-links "[tag[HTML5]sort[title]]">>
<p>An entry into the Mini Jam 79: Frogs jam. Made over a weekend, all assets, code and design completed during the 3-day jam apart from listed below:</p>
<p>Some sfx downloaded under CC0 (no attribution required),</p>
<p>Font: Green Viera Font By Nuuncreatype Studio (free for personal use)</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNTY5MC81ODQ5Nzg2LmpwZw==/original/GrBSdw.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNTY5MC81ODQ5Nzg3LmpwZw==/original/HAwlrm.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNTY5MC81ODQ5Nzg4LmpwZw==/original/XXIbJC.jpg]]
<p><strong><br></strong></p>
<p><strong></strong></p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/8WSevbjYolU" frameborder="0" allowfullscreen=""></iframe>
<p><strong><br></strong></p>
<p><strong>Worlds based on animal occupation, with no humans, have been a common theme in media for as long as it has existed. Books, movies, games, cartoons - all of them imagined worlds based on animals.</strong></p>
<p><strong><br><br>But are they really all that they promise? When Mark is transported to one of those worlds, he has to make due. Find a home, an occupation, clothes that don't have holes in the backside - everything. And in the process he might just find love.</strong></p>
<p></p>
<p>Avaliable in <strong>English and Portuguese</strong>.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/8WSevbjYolU" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjcwODk1LzEzMDkzNjIucG5n/original/F9s6qS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcwODk1LzEzMDkzNjMucG5n/original/WxmXx6.png]]
<p><em>You've had a long day. All you want to do is climb into bed. But why is your pillow quivering like that?</em></p>
<p><em>I Found a New Friend</em> is a short text adventure in the style of the old Infocom games. It is based loosely on the They Might Be Giants song of the same name.</p><p>Can you find all sixteen endings?</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTM1OTMvNDYwMTgucG5n/original/GwCiaX.png]]
<h1 style="text-align: center"></h1>
<p>Exactly what it says on the box: a lightly filtered experienced pulled from my (now former) day job in a customer service call centre, made interactive in a point-&-click format. Lose politely, or lose spectacularly; the choice is yours.<br></p>
<h4>Version 1.1 (new!) Features</h4>
<ul><li>A branching narrative pulled from personal experience.</li><li>Over 250 lines of fully-voiced dialogue.</li><li>Slightly improved graphics</li><li>Windows PC, Macintosh, and now Linux compatible - one purchase gets all DRM-free versions<br><em>(note: Mac version currently still 1.0, version 1.1 coming soon)</em></li><li>Terrible art conveys a terrible work environment.</li><li>A brief, digestible piece of audible interactive fiction.</li><li>Featuring original music by SF of <a href="http://gameappmaker.co/" rel="nofollow noopener" referrerpolicy="origin">Game Builder Club and Building 3d Game Birds Gameapp Maker Co.</a></li></ul>
<p><em>(note: Steam key no longer offered as it is no longer for sale on Steam)</em></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzQyLzMxNzU0My5wbmc=/original/lvIL7S.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQyLzMxNzU0NC5wbmc=/original/yXY3Gp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQyLzMxNzU0NS5wbmc=/original/DGOhx0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQyLzMxNzU0Ni5wbmc=/original/asad4o.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQyLzMxNzU0Ny5wbmc=/original/krsHYO.png]]
<h3>Who?</h3>
<p class="text-justify">You have been a fraud all your life, or so you thought. Telling people about demons and devils, warning them, selling them worthless wards and trinkets. Little did you know, you were right all along. Demons do exist and one has possessed your charge, who lives with you since their parents died. One night, when you were working on some new trinkets filled with mosses and bark, your charge came down the stairs, an empty look on their face. Their eyes turned violet and you could no longer move.</p>
<p class="text-justify">Then they spoke, “In exchange for their soul I require many others. You will provide them for me. Take this book and deck, they will help you with your task. There is no way out of this, don’t toy with your charges life.” </p>
<h3 class="text-justify">W<strong></strong>hat? </h3>
<p class="text-justify">“I have gone this far” is a game about seeing how far you are willing to go to protect someone you love. It is about isolation, desperation and guilt.</p>
<p class="text-justify">You play a soothsayer, a charlatan, a trickster that has been preying on the fears of people for years now. You sell trinkets and read cards and tea leaves. You never believed in what you sold people. Now you do. It is on you to free your charge from possession or even banish the demon entirely.</p>
<h3 class="text-justify">How?</h3>
<p class="text-justify">You will draw cards, roll dice and pull pieces from a tumbling block tower to generate prompts for your story. Each round of the game is a Ceremony in which you collect a soul and offer it to the demon, hoping they will free your charge. You will record each Ceremony by writing it down, recording audio or video or any other means you can think of. </p>
<h3 class="text-justify">Content Warning</h3>
<p class="text-justify"><strong>The odds of "winning" this game are extremely low, please consider this before you buy or play it, you will likely not succeed</strong>.<strong> Even the best outcome will have bad consequences for the characters in the game. You will be asked to do terrible things and dealing with the guilt of these actions is part of the game. Stopping at any time is a valid way to end the game. You are also allowed to cheat and break the rules the demon gives you. Be creative to reduce the harm you cause. </strong></p>
<p class="text-justify">This game includes the following, their intensity depends on you:<br></p>
<ul class="text-justify"><li class="text-justify">Ritual sacrifice</li><li class="text-justify">Harm to innocents</li><li class="text-justify">Loss of control</li><li class="text-justify">Manipulation</li><li class="text-justify">Intense guilt</li><li class="text-justify">Children in danger</li></ul>
<h3 class="text-justify">What you need</h3>
<ul class="text-justify"><li class="text-justify">Rider-Waite tarot deck of cards (alternatively Standard Poker Deck)</li><li class="text-justify">A single 6-sided die</li><li class="text-justify">A tumbling block tower (alternatives available)</li><li class="text-justify">10 tokens of some kind - preferably rings, necklaces, photos, a pocket watch, a rosary or anything else that has personal value, but anything will work</li><li class="text-justify">A way to record your story (Journal, Camera, Microphone, ...)</li></ul>
<p class="text-justify">This game is based on <a href="http://loottheroom.itch.io/wretched" target="_blank">The Wretched</a> by Chris Bissette and was created for the <a href="https://itch.io/jam/wretched-jam" target="_blank">Wretched & Alone Jam</a>. You can find the Wretched & Alone SRD <a href="https://sealedlibrary.itch.io/wretched-alone-srd" target="_blank">here</a>.</p>
<hr>
<p><strong>Also check out:</strong></p>
<iframe frameborder="0" src="https://itch.io/embed/862929?linkback=true&bg_color=363f3e&fg_color=fff9e9&link_color=fff9e9&border_color=5c6564" width="552" height="167"><a href="https://maxkaemmerer.itch.io/mayweather"><span class=""></span>MAYWEATHER by Max Kämmerer (he/they)</a></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjU2OTkxLzM1MzE1ODUuanBn/original/Wjp%2FtJ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU2OTkxLzM1MzE1ODYuanBn/original/rOR0Mg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU2OTkxLzM1MzE1ODguanBn/original/LWdDWK.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU2OTkxLzM1MzE1OTAuanBn/original/rDVWSV.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU2OTkxLzM1MzE1ODcuanBn/original/lgI6Vj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU2OTkxLzM1MzE1ODkuanBn/original/%2BBsrLG.jpg]]
<p>(<strong>Mac users</strong>: This does not work on macOS Catalina (ver 10.15) or later. There's also been a couple reports of issues playing the game, so please try out the demo before purchasing.)</p>
<p><br></p>
<p>In 'I Have Low Stats But My Class Is "Leader", So I Recruited Everyone I Know To Fight The Dark Lord', or 'IHLSBMCILSIREIKTFTDL' for short, you primarily play as the main character Josephine, fated to defeat the Dark Lord. However, as she's generally unskilled in combat, she recruits literally everyone in her hometown to fight enemies with a party of 99 characters!</p>
<p>Features:</p>
<ul><li>Nearly 100 characters to recruit and use!</li><li>A decent variety of skills and equipment for each character!</li><li>24 different elemental types, from Slashing and Fire to Legal and Financial damage!</li><li>Plenty of status effects! Become Absolved, drown in Bloodlust, and deal with Allergies!</li><li>No leveling system; with so many characters, that's just excessive!</li><li>Rather than an open world, have a simple level-based world map! Never worry about missing out on anything!</li><li>Everything from boss fights to cutting hair in a combat setting!</li><li>Puns! Mostly relegated to item descriptions and such, but if that's a selling point for you then great!</li></ul>
<p>There are over 20 worlds and 100 levels to go through! You can try the demo that includes all of World 1 below. If you enjoy it, please consider supporting the development by purchasing a copy, or by backing me on <a href="https://www.patreon.com/DeveloperDamien" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Patreon</a>!</p>
<p>Please use the Discussion Board linked to on this page, contact me on Twitter at @DeveloperDamien, or email me at cannibalinteractive@gmail.com.</p>
<p><br></p>
<p>v1.1 update: Memory leak issue resolved (for everyone, hopefully), level titles fixed, tileset collisions making for awkward cutscenes fixed.<br>v1.11 update: uploaded the demo build as the full build somehow. This has now been fixed.<br>v1.2 update: major bug/scene fixes, "unique element" battle help, certain fights adjusted to be easier, additional boss added, some mp cost balancing.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/4D3L_5-P72o" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjI5NzM1LzE3MTYxNzgucG5n/original/itvbsx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI5NzM1LzE3MTYxNTAucG5n/original/9p16Lo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI5NzM1LzE3MTYxNTIucG5n/original/F0FbKz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI5NzM1LzI1MDcwNzEucG5n/original/Thmrti.png]]
<p><strong>THIS BOOK NOW HAS A <a href="https://zandravandra.itch.io/substitutefamiliarstories" target="_blank">SEMI-SEQUEL</a>! 97 MORE PAGES OF QUEER WITCHES!</strong></p>
<p><strong>Three months, room and board, all outstanding bills taken care of. Complimentary magical aptitude. </strong><strong>Absolutely no catch.</strong></p>
<p><span></span></p>
<p>Becoming a witch takes a lot of hard work, and not everyone has the resources to devote themselves to such a grueling process. But thankfully, magic isn’t completely unattainable! Witches need familiars in order to thrive, and sometimes the best candidate for the job is in the neighborhood instead of through a portal to the otherworld.</p>
<p>But what happens when you try on a new life and realize it fits you better than your old one? What do you do when it comes with an expiration date?</p>
<p>Substitute Familiar is the most worldbuilding-heavy light novel I’ve written yet, depicting a modern world with magic, demons, and folks trying to make it work. It’s about getting the chance to try something you’ve wanted to do for a long time, and all the unforeseen consequences that come with it. It also has a lot of self-actualization, girls kissing girls, and gender feels, because that’s what I do!</p>
<p>Please enjoy, and let’s keep making wonderful things together.</p>
<p><em>This is a light novel of 96 pages with 11 interior black & white illustrations.</em></p>
<p><strong>Want to get a sneak peek? Download the free demo to read the first two chapters!</strong></p><p><a href="https://zandravandra.itch.io/substitutefamiliarstories" target="_blank"><img src="https://img.itch.zone/aW1nLzU1MTQ3NDQucG5n/original/g1s37K.png" loading="lazy"></a></p>
<p><strong>Want to read even more? <em>Substitute Familiar Stories</em>, the 1.5 semi-sequel featuring 25 short stories set before, during, and after this book, is <a href="https://zandravandra.itch.io/substitutefamiliarstories" target="_blank">available here</a>!</strong></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjQwOTc5LzExNDg3NzIucG5n/original/%2BL6p%2FK.png]]
<p>The Icy City sits atop a patchwork world crafted from the crumbs of a ruined universe. The worlds ended, and now you have the difficult task of starting over—another chance to do it right. Hipster-baroque-queer fantasy roleplaying. Over 300 pages of material including:</p>
<ul><li>15 adventure scenarios, ranging from small sites to dungeons to overland travel</li><li>new species and backgrounds</li><li>a new subclass for every D&D 5E class: alchemized barbarian, nekomancy bard, ooze cleric, void druid, slime fighter, ice monk, heritage paladin, gelatinous rogue, pudding sorcerer, tarot warlock, bean wizard</li><li>a new 10-level class, the Hapless, an expert in stumbling into danger and getting captured</li><li>10 site-specific carousing tables with NPCs and adventure hooks</li><li>20 islands for use as a random generator or full adventure archipelago</li><li>dice drop maps for hex crawls</li><li>and more!</li></ul>
<p>The PDF is fully bookmarked for ease of navigation on computer or mobile. While it references D&D 5E (such as referring to NPC stats), it's easy to convert to any fantasy RPG.</p>
<p>Not sure you're ready to take the plunge? <a href="https://erinking.itch.io/icy-city-sampler">Check out the Icy City Sampler</a> for a free preview subclass, adventure, and more.</p>
<p><em>NOTE:</em> This omnibus used to be available as a variety of digital zines. If you purchased any of those, I'm more than happy to discount your copy of the omnibus by whatever you paid. Please let me know!</p>
[img width=500 [https://img.itch.zone/aW1nLzI1MjcxNDQucG5n/original/3t%2BXxa.png]]
<p><em><strong>Note: While we believe in designers being paid for their work, we are unable to sensibly split the earnings of this project. Instead, we ask you to donate to a charity that helps feed those in need, for example <a href="https://feedingbritain.org/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Feeding Britain</a> or <a href="https://amsterdam.voedselbank.org/english/volunteering/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Voedselbank</a><span class=""></span>.</strong><br></em></p>
<p><em>In this world, Divine Beasts roam the land. Delivered to us from otherworldly realms, they lord over the grounds they manifest on. They’re incredibly violent, are replaced in mere days after being removed, and are capable of supernatural powers.</em></p>
<p><em>They’re also delicious.</em></p>
<p>Iera Entera (lit. 'Sacred Entrails') is a GM-led narrative RPG that follows a group of Worshippers - hunters and chefs that search the land for otherworldly beings and harvest their parts to make vital dishes for their local community.</p>
<p>Half the game is plotting elaborate traps to get a Divine Beast exactly where you want it, the other half is chanting prayers over its deep-fried claws and trying not to open a portal to hell by spilling the salt. It's Monster Hunter meets Overcooked.</p>
<p>This game was made by Nathan Blades and Ruben Ferdinand for the Attack and Dethrone God Jam.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/OD70RHwKmmk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjg5MTg4LzM3OTY5MDAuanBn/original/srxDYw.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg5MTg4LzM3OTY4OTEuanBn/original/G96i6t.jpg]]
<div style="text-align: center; padding: 1em 0">
<a href="https://mindnumb.itch.io/igeo-dx"><img src="https://img.itch.zone/aW1nLzY3NzAyNzQucG5n/original/KLOzM2.png" loading="lazy"></a>
<a href="https://mindnumb.itch.io/igeo-dx"><h2>Enjoy IGEO? Check out the IGEO DX Beta Avaialable Now!</h2></a>
</div>
<p>A simple puzzle game with an abstract visual style. The goal is to eliminate all the blocks by moving the same blocks into one another in various ways. 20 levels to complete, some with many solutions.<br></p>
<p>
Originally made in less than 72 hours for Ludum Dare 35. Updated with music, sounds, and special FX.</p>
<p>
<strong>Controls</strong><br>
</p>
<ul>
<li>WASD/Arrows to Move Cursor & Select Blocks when combining Cross Blocks</li>
<li>'SPACE'/Left Click to select a Block when combining Cross Blocks</li>
</ul>
<p><em><br></em></p>
<p><em>IGEO is based on the game PEGS by Detached Solutions, originally created for the TI-84 line of graphic calculators.</em></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjMwMTYvNTM2MDg2LmpwZw==/original/8S3Yft.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMwMTYvNTM2MDg3LmpwZw==/original/OV3nxL.jpg]]
<p><em>"What is your motive in creating a reality bent around one's desires? Your motivation? It very well could save our lives one day, but I see no reason to attempt this feat now."</em> <br></p><p><br><strong>Deprimerie </strong><br>Deprimerie is a short RPG with lots of branching paths and optional content. The game aims to be around 5 hours long for the main story, and 7 hours if you do all the stuff needed for the True Ending. It follows the adventures of Tyson, who's put into a weird world after having a strange encounter with a kitchen sink and a house fire. He soon learns he must travel this strange land and save this world, or fall to the power of Nightmare and erode away. <br><br><strong>Things to do in this world </strong><br>- Fight against the forces of darkness! <br>- Recruit a wide variety of party members! <br>- Buy powerful skills and inherit them to party members! <br>- BECOME THE ENEMY FOR A SHORT WHILE <br>- Chill with your neighbor <br>- Hopefully not a lot of grinding <br><br><strong>Release notes </strong><br>A few years ago, I decided to make a unique type of RPG. I wanted to tell the story of a kid lost in his own dreams. Unaware of the already existing community for similar games like Yume Nikki, I, along with my friend mothbeanie, decided to make a platformer RPG hybrid. And while that hybrid idea has been lost in it's development cycle and while it has shifted from multiple engines (GameMaker, RPG Maker 2003, and now RPG Maker 2000), the game still maintained it's core focus: exploring your mind and the crazy thoughts of yours. <br>And now, after two years, the game is finally done. <br>This is Deprimerie.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzA3NDc5LzE1MDk1ODcucG5n/original/qyCQjR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA3NDc5LzE1MDk1ODgucG5n/original/Pp%2BeDR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA3NDc5LzE1MDk1ODkucG5n/original/X%2B6XcK.png]]
<p class="text-center"><strong>Fight ghosts and ghosts from your past.</strong></p>
<p><br></p>
<p>It's been a long month for Sirius- not talking to most of your friends, having an angry ex talk about you behind your back, and having a friend claim... that her house is haunted? The past few weeks have been long for Hailey as well, as her house has seemingly become infested with ghosts that only she can see- that is, until a fateful day.</p>
<p><em>Image of Perfection</em> is a creepy, atmospheric RPG about confronting fears- rather than being a pure horror game, it's a story-driven RPG about accepting who you are.<br></p>
<p><br></p>
<p><strong>Demo Features:</strong><br></p>
<ul><li>20~ minutes long</li><li>Several battles</li><li>Several ways to go about things</li></ul>
<p><br></p>
<p><strong>Full Game Features:</strong><br></p>
<ul><li>$4.99 price</li><li>1-3~ hours long</li><li>Several battles and bosses</li><li>Many choices and secrets</li><li>2 endings</li></ul>
<p></p>
<p> </p>
<hr>
<p><br></p>
<p class="text-center"><strong><a href="https://twitter.com/CrystalGameWork" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Twitter</a> ♦ <a href="https://discord.gg/vE2Yng4" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Discord</a></strong></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDM1MDEyLzIxOTY4MjEucG5n/original/lLn9ww.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDM1MDEyLzIxOTY4MjcucG5n/original/pi8vpk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDM1MDEyLzIxOTY4MjUucG5n/original/5rNjbK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDM1MDEyLzIxOTY4MjQucG5n/original/%2Fa3KoS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDM1MDEyLzIxOTY4MjYucG5n/original/6MEGNA.png]]
<p></p>
<p>“A lot of games have tried to capture that childhood sketchbook-look for varying purposes, but few nail the look and feel of those clumsy, often angsty scribbles as well as Imperishable Memories.”<br><em>-IGN</em></p>
<p>“Your sixth grade diary wants to have a word with you. If that thought is as horrifying for you as it is for me, Imperishable Memories will probably be just as scary.”<br><em>-Cliqist</em></p>
<p>"A striking message of being frank with ourselves when we hurt others."<br><em>-IndieGames.com</em></p>
<p>"An hour long tour-de-force in world building with cool characters, inspiring settings, and style to spare."<br><em>-Video Game Choo Choo</em></p>
<p></p>
<div class="">
<hr>
<em>Imperishable Memories</em> is a narrative-driven shoot-em-up game developed in Unity for PC, Mac, and Linux. It combines bullet-hell gameplay with flashy cutscenes and angsty pondering to tell a story about coming to terms with horrible mistakes and gaining the strength to move on, little by little.</div>
<ul><li>With features like <strong>Relaxed Difficulty</strong> and a <strong>Story Mode with infinite lives</strong>, you don't have to worry about being a shmup expert to experience the entire game!</li><li>Roughly one hour to complete the story, with a high score system to challenge your skills afterwards!</li><li>A strange, experimental adventure with desolate landscapes, sword girls, glitchy moments, live action segments, and more!</li><li>Over a dozen music tracks, with boss characters getting their own theme songs!</li><li>Worried about specs? This game was developed on and optimized for Intel HD Graphics machines!</li></ul>
<hr>
<p class="text-center">Shoot em' Up in an Aged Former Reality from Jennifer Raye, for PC, Mac, Linux. Header art by Emma Bonne.</p>
<p><strong>Imperishable Memories Avatars:</strong> <a href="https://imgur.com/a/oVd7OG5" rel="nofollow noopener" referrerpolicy="origin">https://imgur.com/a/oVd7OG5</a><br></p>
<hr>
<iframe width="720" height="450" src="https://www.youtube.com/embed/ru4InHDy4Cg" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTc2MzA2LzE0MDg5MjEucG5n/original/6DI2oT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc2MzA2LzE0MjMxMzMucG5n/original/wmSUw7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc2MzA2LzE0MDg5MjQucG5n/original/wb1euq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc2MzA2LzE0MjMxMzUucG5n/original/pvPas0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc2MzA2LzE0MjMxMzQucG5n/original/xlaEux.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc2MzA2LzE0MDg5MjMucG5n/original/zp%2Fp3V.png]]
<p><strong>In Extremis</strong> is a fast-paced shoot'em up that aims to bring an engaging and fun experience to the player, while also experimenting with the nature of the language of videogames. With a swath of inspirations ranging from centuries-old mysticism to contemporary pop-culture, In Extremis suits itself for all kinds of players with smart level design and multiple ways of tackling challenges.<br></p>
<p><strong>Features</strong></p>
<ul><li>Classic shoot'em up action that brings numerous new ideas to the genre, while also being accessible to newcomers.
</li><li>Eleven stages, each one with their own visual aesthetic and distinct set of mechanics. Fight through the domains of war, sex, nostalgia, fear, melancholy, and many more.
</li><li>Twelve different weapons, each one with their own subtleties and quirks, for the player to mix and match.
</li><li>An eclectic soundtrack, featuring rhythms from big band jazz to foot-thumping electronic jams to gentle piano ballads to trippy psychedelic rock.
</li><li>A mysterious narrative, as well as numerous secrets and surprises, await brave and inquisitive players.</li></ul>
<p>///</p>
<p>Now we got the salesman pitch out of the way, let's get to the important stuff:<br></p>
<p>In Extremis was my first commercial game, released on Steam in the end of 2016; it took four years of dedicated work for it to come to fruition, as well as the collaboration of several artists and musicians.</p>
<p>It's not your regular game; each stage is unique on their own, including visuals, sound effects and gameplay systems; each moment of play has been exhaustively thought-out and planned.</p>
<p>The decision to release it on itch.io as a pay-what-you-want title stems from my desire to see it reach a wider audience, as well as paying respect to the countless free indie games from 2006-2012 era which inspired it.<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/Rw6mb82jpeo" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjI4ODYxLzEwODI4MjcucG5n/original/XJNOCy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4ODYxLzEwODI4MzIucG5n/original/7Fm0c%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4ODYxLzEwODI4MzAucG5n/original/p0QJ2j.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4ODYxLzEwODI4MjkucG5n/original/Kb4PPf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4ODYxLzEwODI4MjgucG5n/original/OQ7NIU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4ODYxLzEwODI4MzQucG5n/original/OZBeJj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4ODYxLzEwODI4MzEucG5n/original/Kaao3q.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4ODYxLzEwODI4MzUucG5n/original/cgRubS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4ODYxLzEwODI4MzgucG5n/original/IzZWoO.png]]
<p><span class=""><em>It is a common misconception that who we are is a matter of chance. The imperceptible alignment of planets, mysterious genetic relationships, a token bestowed by each person we meet. All of this is true, but we forget that we are also a choice.<br></em></span></p>
<p><span class=""><em>We are the narratives told by and about us, what we do and what we forgo. We are immaterial and we are present. We know ourselves and we know we are not fixed.</em></span> <em><span class="">But there is still a magic in this knowledge. The practicality of our self does not discount the incantations we cast, the stars we interrogate, and the divinity we invite inside.<br></span></em></p>
<p><em><span class="">This manual is a means by which we can navigate these bodies. We draw cards and seek answers inside us. They can be illuminating, uncomfortable, perplexing, and expected. They bring us closer to ourselves, be it a self known or discovered.</span></em></p>
<p><em><span class=""><span class=""><strong>The stars watch and speak in archetypes. We align ourselves to them, and in doing so create stars of our own.</strong></span></span></em></p>
<p>◆◆◆</p>
<p><em>In me, a constellation </em>is a comic destiny personality quiz told through tarot cards and improvisational introspection. It’s designed for solo play but could be adapted for more players (or as an aspect of character creation for another game).</p>
<ul><li>No prep, no GM</li><li>45-60 minute sessions</li><li>Play with any tarot deck (or use your real natal chart)</li><li>Lots of astrology flavor</li></ul>
<p>Inspired by the many works of Jammi Nedjadi and Maria Mison.</p>
<p><em>Content warning: explores themes of dysphoria, symbolic violence, sex, and anxiety. Be kind to yourself while playing.</em><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODA2OTM5LzQ1MjIzODYuanBn/original/eSQSEL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODA2OTM5LzQ1MjIzOTMuanBn/original/3rzNzQ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODA2OTM5LzQ1MjI0MTYuanBn/original/KM9Gl5.jpg]]
<p></p>
<p>when the ground began to ooze, black and thick, nothing could claw itself out of the steaming depths. but now, after the tar has swallowed everything up, it offers a choice.</p>
<p>what will you sacrifice to live another day?</p>
<p><br></p>
<p></p>
<p><em>in pitch we are preserved</em> is a gm-less, one-page ttrpg that can be played solo or with others.</p>
<p><strong>warnings:</strong> the pdf briefly alludes to cannibalism and a core mechanic may result in role playing self-harm for survival (though it does not technically specify that the harm must be to the self)<br></p>
[img width=500 [https://img.itch.zone/aW1nLzU1MjM1NzAucG5n/original/7oxKBl.png]]
<p>There is a river that has existed for as long as you have, for as long as even the eldest among you. It has cut through your lives. It takes and it gives. You sometimes wonder just how deep it really goes.<br><br>You are a Finder. You, with your brave heart, swim through its currents, brave its whirlpools, and understand its undercurrents. Still, there is much left lost in the deep. What will you find and what will you give to the River?</p>
<p> ---</p>
<p>In The Deep, Deep River is a GM-less narrative game for 2-4 people that seeks to explore the many things that we would rather keep deeply buried in the ocean of ourselves. It uses a d10 dice pool system for its resolution with unique mechanics to determine success and failure. <br></p>
<p>Simple and seamless, this game is great for online play via play-by-post. </p>
<p>---</p>
<p>In the Deep, Deep River was originally created for Scrapsburgers Anthology of Games, coming soon to Kickstarter. The Kickstarter version will contain exclusive art, a swanky new layout with slightly different content!<br></p>
<p>Thank you to Scrapsburgers for bringing me into this amazing anthology!</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjMxNDUwLzMzNzEyNjIucG5n/original/YYn7BW.png]]
<p>Originally made as a NewHive commission, this stand-alone application game is an interactive narrative work that retells the origin story of salesforce.com as a point-and-click misadventure.<span></span></p>
<p>A discussion on speculative fiction and it's relevance to start-up culture/language/myth-making with Claire Evans can be found <a href="http://motherboard.vice.com/en_us/article/8qxewv/in-the-hollow-of-the-valley" rel="nofollow noopener" referrerpolicy="origin">here</a>.</p>
<p>An interview with Lindsay Howard about this work can be found <a href="http://newhive.com/newhive/nicholas-obrien-interview?&no_paging" rel="nofollow noopener" referrerpolicy="origin">here</a>.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjMwMDA3LzEwODk1NDMucG5n/original/W%2BBr8n.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMwMDA3LzEwODk1NTEucG5n/original/1R4G6L.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMwMDA3LzEwODk1NDQucG5n/original/%2FxRyTG.png]]
<p>
Play as the mystical Indigo Child and save some souls while wandering through the forest. The game is designed to work with both keyboard and 360 controller. It is a gamejam style experience.</p>
<p>
<strong><br>
</strong>
</p>
<p>
<strong>Press mouse or "A" to call, hold to sing.</strong>
</p>
<p>
<img src="https://img.itch.zone/aW1hZ2UvMzE4OTQvNjQ3MjUyLmdpZg==/250x600/PeovgJ.gif" alt="indigo" loading="lazy">
</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzE4OTQvNjQ3MjUyLmdpZg==/original/SQ10s0.gif]]
<p>Infiniboss is an endless boss battle platformer. It's just you, an ever-changing boss, and tons of projectiles. Choose a character, get as many points as you can, use the points to unlock more characters, repeat. You can set a personal score goal for yourself for each character, you can send scores to friends to see if they can beat them, or you can just try to unlock every character. Play the game your way!</p>
<p>Features include, but aren't limited to:</p>
<ul><li>A relentless boss which changes which attacks it has access to at a constant rate.</li><li>Seven (7) different playable characters for high playstyle customization and replay value*</li><li>Play endlessly, or play timed mode to see how many points you can score in five minutes!</li><li>Simple tips available for each character to help you better play the game!</li><li>An intense, fast-paced soundtrack to help get you pumped! (Can be turned off!)</li></ul>
<p>*Actually there are eight characters, but one is a joke character</p>
<p>I hope you enjoy the game!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/O-sq1EHQJNw" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDY5MTUxLzI0MzYwNDAucG5n/original/AaCA0J.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY5MTUxLzI0MzYwNDEucG5n/original/mIRUgV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY5MTUxLzI0MzYwNDIucG5n/original/99rhfu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY5MTUxLzI0MzYwNDMucG5n/original/2huUFa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY5MTUxLzI0MzYwNDQucG5n/original/ZLIvn%2F.png]]
<h2><u style="color:#DB6110">The Game</u></h2>
<p>Jump into the bizarre tale of <strong>Inside | Out</strong>, a recursive first-person <em>adventure </em>set under a mysterious dome. </p>
<p>The world around you is contained within itself, an infinite loop where actions in one variant of the world affects the other copies.</p>
<p>Progress and transform the environment around you, bring items into the smaller world to scale them up and use their larger form to advance in the adventure.</p>
<p>Will you manage to escape this perpetual world?</p>
<h2><u style="color:#DB6110">Controls</u></h2>
<p><em><strong>WASD / Arrow keys</strong></em> - Movement<br><em><strong>Space</strong></em> - Jump<br><strong><em>Mouse</em> </strong>- Look around<br><strong><em>Escape</em> </strong>- Pause</p>
<h2><u style="color:#DB6110">Development</u></h2>
<p>This experience was developed for my final year project at university. A special thank to <a href="https://felizas.itch.io/" target="_blank">Eliza Socican</a> and Eliot Chyskos for their help in 3D modelling and game design.</p>
<h3><u style="color:#DB6110">Update</u></h3>
<p>-30/10 - Version <strong>1.3_Mono</strong> - Added Mono version of the game. A little less performant but more stable, use the mono version if the other one crash</p>
<p>-21/10 - Version <strong>1.3</strong> - Fixed a data update to make it easier for speedrunners to track variables</p>
<p>-03/06 - Version <strong>1.2</strong> - Fixed a text appearing on the board, fixed the train entrance step. Small light performance fix</p>
<p>-31/05 - Version <strong>1.1</strong> - Various performance fix, it should run much better now!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/fJC31ZMv4ow" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NDY0My82MDY1MjQyLnBuZw==/original/3zC%2Faa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NDY0My82MDY1MjQzLnBuZw==/original/fmbRY8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NDY0My82MDY1MjQ1LnBuZw==/original/B%2BQweP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NDY0My82MDY1MjQ2LnBuZw==/original/WRG0FA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NDY0My82MDY1MjQ4LnBuZw==/original/JJ4cwk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NDY0My82MDY1MjQ5LnBuZw==/original/4sI4ts.png]]
<p>Yumi is a high school girl who is struggling to cope with her past. <br></p>
<p>Before, she was just another normal girl living happily together with her family. Now, her family has fallen apart, and Yumi finds it difficult to stay motivated in her day-to-day life, crushed by a growing well of darkness, slowly consuming her from the inside out.</p>
<p> Why did her brother leave? </p>
<p>Why did her parents fall apart?</p>
<p> She is lost in a sea of unanswered questions, and on the brink of losing her mind. Help Yumi as she struggles to uncover the truth of her broken past and mend broken relationships to find herself once again. </p>
<p>Inside The Mirror is a story driven visual novel experience where players will discover more about the different perspectives around a difficult, real-life situation. While there is a portion of interactive content, you mainly click to progress the story, art, and music!</p>
<p> Key Features</p>
<p>An engaging, emotional story describing how hardships strain relationships.</p>
<p> A 100% original soundtrack </p>
<p>Several main characters and dozens of unique sprites. </p>
<p>Inside The Mirror is a short-medium length visual novel that should take around one hour and thirty minutes to complete.</p>
<p></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NzQwMS81OTg2ODIwLmpwZw==/original/cgBXKy.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NzQwMS81OTg2ODIxLmpwZw==/original/0Au%2BIb.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NzQwMS81OTg2ODIyLmpwZw==/original/%2BO1jbX.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NzQwMS81OTg2ODI1LmpwZw==/original/9%2B8xIi.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NzQwMS81OTg2ODIzLmpwZw==/original/TsaQmF.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NzQwMS81OTg2ODI0LmpwZw==/original/hojpFe.jpg]]
<p><em><strong>A toy ecosystem with fully simulated genetics and evolution. Will you tinker with DNA or sit back, relax, and see if life finds a way?<br></strong></em></p>
<figure><img src="https://img.itch.zone/aW1nLzI4NzAxNjcuZ2lm/original/xnGQ6T.gif" style="color: inherit; font-size: inherit" loading="lazy"></figure>
<p><em>In a universe driven by targets, a faceless corporation employs you to create an evolving ecosystem you can never hope to control...</em></p>
<p>Intelligent Design: An Evolutionary Sandbox is a god game with fully simulated genetics and evolution. Create species of plants, herbivores and carnivores and try to control the ever evolving ecosystem. Design and create genetically modified organisms, but remember when you start tampering with genetics it is hard to undo your mistakes...</p>
<p>This is a game for people who don’t want to be given all the answers. A game for people who like to experiment with a simulation, at their own pace, and watch what happens.<br></p>
<p><img src="https://img.itch.zone/aW1nLzI4NzAxNjguZ2lm/original/sIn%2FFJ.gif" loading="lazy"><br></p>
<p>
<strong>Key Features</strong></p>
<p><em>Fully modelled genetics and evolution</em><br><br>The behavior of each organism are determined by their genetics. How tall will a plant grow? How fast can an herbivore run? How often does a carnivore seek prey? These genetics are passed down generation after generation along with random mutations. Evolution is fully simulated, there are no tricks or statistical approximations. You are watching life evolve on your computer.<br></p>
<p><em>Science to be Done</em></p>
<p>What do all those genes actually do? How is the world score calculated? What does world efficiency even mean? Much like a real scientist you will need to investigate, analyse and work with other players to try and answer these questions. To help you along the way the game outputs data in xml files so you can really get your science on. </p>
<p><em>Genetic Engineering</em></p>
<p>Create your own genetically modified organisms, but be careful, once a genome has entered your ecosystem it may be hard to undo the damage ... and are you sure you really know what those genes do yet?</p>
<p><em>Secrets to Discover</em></p>
<p>Who is employing you to create this ecosystem? Why are they doing it? Why are you doing it? What are those targets for? The answers to these any many other questions are out there, you just need to work together and find them...</p>
<h3>Check out our newest game</h3>
<iframe frameborder="0" src="https://itch.io/embed/430934?linkback=true&border_width=3&bg_color=faefd4&fg_color=222222&link_color=fa5c5c&border_color=899faf" width="556" height="171"><a href="https://pillbuginteractive.itch.io/making-it-home"><span class=""></span>Making it Home by Pill Bug Interactive</a></iframe>
<iframe width="720" height="450" src="https://www.youtube.com/embed/GJi7BS8XFBk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjg0NjMvNjQyOTg0LnBuZw==/original/bGvAsD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg0NjMvNjQyOTgxLnBuZw==/original/Aom2Q3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg0NjMvNjQyOTc4LnBuZw==/original/VljRij.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg0NjMvNjQyOTc5LnBuZw==/original/oYG5H9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg0NjMvNjQyOTgwLnBuZw==/original/kpFyia.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg0NjMvNjQyOTgyLnBuZw==/original/25qiGW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg0NjMvNjQyOTg1LnBuZw==/original/qE7c2%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg0NjMvNjQyOTg4LnBuZw==/original/XdoX8k.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg0NjMvNjQyOTgzLnBuZw==/original/Ad1Niw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg0NjMvNjQyOTg3LnBuZw==/original/rutNcg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg0NjMvNjQyOTg2LnBuZw==/original/3f2yUX.png]]
<p>Soundtrack from the free interactive music experience, inter-view. <a href="https://megancarnes.itch.io/inter-view">megancarnes.itch.io/inter-view</a></p>
<h3>credits</h3>
<p>released January 21, 2019 </p>
<p>Artwork: Soju Shots <br>Flute: Marybeth Kern <br>Guitar: Matthew Lister <br>Tuned Wine Glasses: Jonny Rodgers</p>
<h3>license</h3>
<p><span class=""></span>all rights reserved</p>
[img width=500 [https://img.itch.zone/aW1nLzE3OTM3NDYucG5n/original/NpvrLZ.png]]
<p>inter-view is a game where your choices create a unique piece of music.</p>
<p><br>Created, programmed, and music by Megan Carnes. I want to make music for your game! <a href="https://megancarnesmusic.com" rel="nofollow noopener" referrerpolicy="origin">https://megancarnesmusic.com</a><a href="http://www.megancarnesmusic.com" rel="nofollow noopener" referrerpolicy="origin"></a></p>
<p>Soundtrack album available <a href="https://megancarnes.itch.io/inter-view-soundtrack">here</a> and <a href="https://megancarnes.bandcamp.com/album/inter-view-original-soundtrack" rel="nofollow noopener" referrerpolicy="origin">here</a>.</p>
<p>Written by: David Sugarman, Megan Carnes<br>Artwork by: Soju Shots<br>Flute: Marybeth Kern<br>Guitar: Matthew Lister<br>Tuned wine glasses: Jonny Rodgers</p>
<p><br></p>
<p><strong>PARTNERS</strong><br>Alex Loughborough<a href="https://andyramone.bandcamp.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><br>Andy Ramone</a><br>Anna Donnell<br>Annette J Nowacki<br>Anonymous<br>Austin Hall<br>Brett Kuehner<br>Chase Kimball<br>Chris Kvasnicka<br>Daniel White<br>Dave & Rose Carnes<br>Dave Chai<br>Dave Yee<br>Diana Weinstein Cauthen<br>Doron Kipper<br>Elaine Wessels<br>Eldredd Wolf<br>Evyn Williams<br>Gabe Castro<br><a href="http://www.gregnicolett.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Greg Nicolett</a><a href="https://www.facebook.com/hawcode/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><br>Hawcode</a><br><a href="https://www.instagram.com/jcpov/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">James Choi</a><br>Jayne Hardin<br>Jeffrey Benzing<br>Jerry Carnes<br>John Heinze/<a href="https://open.spotify.com/artist/3vbIqkJmRKG5KxMcapJCEj?si=7OqfmIhmTfmKsO779k0Zjg" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Boss Fight</a><br>John Leonard<br><a href="http://mysticsister.net" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Jordyn Schwersky</a><br>Josh Kalvelage<br>Lena Laub<br>Logan Deane<br>Luis G. Romero<br><a href="http://acrookedheart.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Matt Tardiff</a><br>Megan McCaffrey Morris & Fran Lonergan<br>Mikee Pourhadi<br>Mitch Carnes<br><a href="https://vimeo.com/user9475256" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Olivia Cauthen</a><br><a href="http://twitter.com/pyro_mariner" target="_blank" rel="nofollow noopener" referrerpolicy="origin">PyromaniacMariner</a><br>Raymond Harris<br><a href="https://www.instagram.com/oh_that_ryan/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Ryan LaBee of BeeCause Films, LLC</a><br><a href="https://www.instagram.com/wxrringtxn/?hl=en" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Sarah Hickey</a><br>spun<br><a href="http://" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Super 80s World</a><br>Tara McNamara<br>Tre Folensbee<br><a href="https://www.youridekker.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Youri Dekker</a><span></span></p>
[img width=500 [https://img.itch.zone/aW1nLzE3Nzc1OTQucG5n/original/8SaMf3.png]]
<p>INTERSTELLAR ERRANDS is a DM-less RPG for 1-5 players who want to have a quick space-bound adventure over breakfast, lunch, or an evening snack. Invent a character, find a planet for them to travel to, and roll dice to find that mystical device for your tiny alien mentor! <br></p>
<p>The entire RPG fits onto a single-sided page, so you can just print and post it to your fridge door for convenient snacktime play. All you need is a d6, a d20 (optional), and your imagination!<br></p>
<p>Made for the FRIDGE RPG JAM hosted by ludipe.<br><a href="https://itch.io/jam/fridge-rpgs">https://itch.io/jam/fridge-rpgs</a><br></p>
[img width=500 [https://img.itch.zone/aW1nLzI5MzY2OTUuanBn/original/wjBShb.jpg]]
<p class="text-center"><em>You don’t ever remember signing a contract, but The Company owns you now, body and soul. You have a debt, and they’re coming to collect. Whatever you were before, this is your purpose now:<br>Finding a way to keep the creditors at bay.<br></em><em>Finding a way to get back...</em></p>
<h1 class="text-center">INTO THE BLACK</h1>
<p>INTO THE BLACK is a sci-fi adventure game using the PINKHACK system. Somewhat of a personal love letter to the Mass Effect franchise, Into the Black is a picaresque adventure game where the players must navigate and explore a strange and wonderous galaxy while deeply indebted to an interstellar corporation. Life among the stars, then, is about treading the razor's edge of struggling for survival and finding joy and love where one can.</p>
<p>This is currently an ASHCAN EDITION. I churned this out over the course of a weekend, tinkering with the PINKHACK system (a blend of Jared Sinclair's The Vanilla Game, Christian Mehrstam's Whitehack, and Chris McDowall's Into the Odd).</p>
<p>Inside this 97-page book you'll find:</p>
<ul><li>A series of tools for safe play, for Chroniclers and Travelers both</li><li>A lightweight 3-stat, 3-class OSR system requiring only a few d20s and d6s</li><li>A randomized character system that provides compelling starting points for your adventurer</li><li>50 creatures to encounter on your interstellar journey</li><li>A miscellanea section including ancient data-disks, clothes, drugs, corporations, space pirates, wandering star-nomads, space caravans, a technobabble generator, and strange sci-fi discovered items</li><li>A die-drop-based mapping system that allows for the collaborative creation of interesting adventure sites, settlements, planets, encounters, and cosmic anomalies</li><li>List of desirable goods to barter, buy and sell across the galaxy to pay your debt, as well as complications that might arise on the journey</li><li>Powerful telekinetic abilities and technological wonders</li><li>Rules for starship combat and a selection of vessels to battle, steal, avoid, and strive for</li><li>Art by the fabulous Evlyn Moreau, and Mike Winkelmann (aka Beeple)</li></ul><h3>Reviews:</h3><p><em>"The result is a homespun corner of space full of potential. An emergent story of local warlords or ancient tech can play out, or the group can soak in the emotional melange of finding a series of barren, if beautiful, landscapes while they watch the twin suns dance below several horizons."</em><br>-Chase Carter, <a href="https://www.dicebreaker.com/games/into-the-black/news/into-the-black-rpg-mass-effect" rel="nofollow noopener" referrerpolicy="origin">Dicebreaker</a><span></span></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMDQyOS81NjkzODI0LmpwZw==/original/ZVIELs.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMDQyOS81NjkzODI1LmpwZw==/original/VKAQuw.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMDQyOS81NjkzODI2LmpwZw==/original/dSbgcV.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMDQyOS81NjkzODI3LmpwZw==/original/n5zWlC.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMDQyOS81NjkzODU5LmpwZw==/original/nmVTAh.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMDQyOS81NjkzODYwLmpwZw==/original/4k%2Bq2y.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMDQyOS81NjkzODU4LmpwZw==/original/JXyT3Y.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMDQyOS81NjkzODYxLmpwZw==/original/rEIRL%2F.jpg]]
<p><span class=""><em>You step into the woods, knowing the stories, the legends that call the forest home to the fae. You never really believed it. Or did you, in your heart of hearts, always know?</em></span></p>
<p><span class="">Into the Fae Woods is a solo journaling game about wandering in the woods and finding a companion along the way.</span><span></span></p>
<p><span class="">To play the game, you only need a way to write. Follow the narrative and record your thoughts and answers, embellishing along the way as desired to create your story.</span></p>
<p>Printed, handbound copies with bonus content now <a href="https://www.etsy.com/listing/1170582243/into-the-fae-woods-zine" target="_blank" rel="nofollow noopener" referrerpolicy="origin">now available here</a>!</p>
<p><br></p>
<p><em>Come away, O human child!<br>To the waters and the wild<br>With a faery, hand in hand,<br>For the world’s more full of weeping<br></em><em>Than you can understand.”</em><br>~ William Butler Yeats</p>
<p><br></p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzMwNTQxLzc0OTY1NDgucG5n/original/tlu2h%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMwNTQxLzQwNjAyNjAucG5n/original/EN%2FUda.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMwNTQxLzQwNjAyNjEucG5n/original/gfVUwj.png]]
<p><span class="">Into the Fae Woods is a solo journaling game about wandering in the woods and finding a companion along the way.</span><span></span></p>
<p><span class="">To play the game, you only need a way to write. Follow the narrative and record your thoughts and answers, embellishing along the way as desired to create your story.</span></p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzMwNTQxLzQwNjEwMjgucG5n/original/TVUH%2FV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMwNTQxLzQwNjAyNjAucG5n/original/EN%2FUda.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMwNTQxLzQwNjAyNjEucG5n/original/gfVUwj.png]]
<p>Welcome to the Glacier. It is a
mysterious place just out of humanity's grasp, just a little bit
further than people, with their lights and their fire, can reach. </p>
<p>That is not, of course, to say it is
uninhabited. Nor is it to say that no one ever ventures into the
Glacier. People have their reasons. </p>
<p>You have your reasons.</p>
<p>Whatever their reason for trespassing
in Winter's sacred territory, people try and quickly find that they
do not belong here. </p>
<p><strong>You Will Need:</strong></p>
<ul>
<li>One standard deck of playing cards
</li><li>Two six-sided dice
</li><li>A character marker like a figurine
or small toy
</li><li>A piece of paper and a pencil
</li></ul>
<p><strong>You Might Want:</strong></p>
<ul>
<li>A hot drink
</li><li>A favorite blanket
</li><li>A nice journal
</li></ul>
<p>Into the Glacier is a single-player journaling (or, if you prefer, map-making) game inspired by lots of things, including:</p>
<ul>
<li>Edmonton winters
</li><li>The Great Glacier sequence in
Final Fantasy 7, my favorite part of one of my favorite games.
</li><li><a href="https://sorceress-witch.itch.io/mapping-the-catacombs-zine">Mapping the Catacombs</a>, from
Sorceress & Witch
</li><li>The Wretched & Alone games,
based on <a href="https://loottheroom.itch.io/wretched">The Wretched,</a> from Loot the Room
</li><li><a href="https://galazor.itch.io/the-estate-of-baron-archambaud-an-ingrate">The Estate of Baron Archambaud</a>, just a real work of art of a puzzle game.</li><li>The 2020 Winter Jam, which I
barely completed this game in time for.
</li></ul>
<p><strong>Content Warnings:</strong></p>
<ul><li>Sickness - The Rimerein Unicorn</li><li>Death - The Ice Dragon’s Feather</li><li>Death - 4 of Spades</li></ul>
<p></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODY3MjM1LzQ4NzE2NTQucG5n/original/7sC4A7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY3MjM1LzQ4NzE2NTgucG5n/original/WMKuLx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY3MjM1LzQ4NzE2NjIucG5n/original/M4Ruc4.png]]
<p>Originally inspired by Touhou Project's Seija Kijin, who has a screen-flipping attack in a shoot-em-up which I'm sure has never caused anyone to ragequit Touhou 14. Unfortunately, screen flipping isn't all she's going to do to you here...</p>
<p>The base gameplay is fairly standard tile matching, but your actual objectives may change from level to level and complications will quickly begin compounding. Hopefully you can clear everything before Reimu has some kind of stress aneurysm. Click "Level 1" on the info screen to begin.<br></p>
<p>Credits: Character portraits and some icons by skullstho. Palette inspiration for the portraits from @MoiWool. A number of sound effects courtesy of http://thinksoundeffects.com. Font courtesy of "avrahamcornfeld" on Github; see included license for more details.<br></p>
<p>Programming, design, music, and remaining visual assets by DC. This sounds like DC did most of the work, but have you seen those portraits? Good lord. Plus, there's a reason the music/visuals are so minimalist, and it ain't skulls. Touhou Project and all associated IP belong to ZUN / Team Shanghai Alice, to whom we are thankful every day for allowing such a vibrant fan work community to exist.<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTEyMTg0LzUxNTY5NzAucG5n/original/gBv%2BrW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTEyMTg0LzUxNTY5ODAucG5n/original/6IKe37.png]]
<h2><em>Iron Edda Accelerated </em></h2>
<p>A game of brave warriors fighting to keep their homes, lives, and freedom. It is a game of magic and intrigue. </p>
<p>It is the story of ordinary people who fight alongside the towering skeletons of long-dead giants. </p>
<p>It is the story of those who embrace an unknown afterlife to bond themselves to those giant bones. </p>
<p>It is the story of those who cling to tradition and to the power that their roles in society gives them, even though all crumbles around them. </p>
<p>It is the story of a world irrevocably changed. </p>
<p>It is the story of Ragnarok, Fimbulwinter, the end of time itself.</p>
<p><strong>If there is to be a future at all</strong>, it will be because of you and what you do. Ultimately, this world is your world. Fate is designed for the players to have an impact on the world around them. <em>Iron Edda Accelerated</em> is no different. You and the people around you will shape the future, for your holdfast and the world at large.</p>
<p>Warrior, thrall, seer, Jarl... All have the chance to feat in Valhalla. All could dine with the fallen in Hel. Your fate is yours to decide. </p>
<p><span class=""></span><em>Iron Edda Accelerated is a Fate Accelerated RPG designed for 2-6 players.</em></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NTY3NC82MDQwOTc5LmpwZw==/original/nuEQr6.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NTY3NC82MDQwOTc0LmpwZw==/original/vqW3hL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NTY3NC82MDQwOTczLmpwZw==/original/bMoYs5.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NTY3NC82MDQwOTc1LmpwZw==/original/1ianqF.jpg]]
<figure><img src="https://img.itch.zone/aW1nLzUxNTgzMjQucG5n/original/eomltB.png" loading="lazy"><br></figure>
<p class="text-center">
</p>
<figure><img src="https://img.itch.zone/aW1nLzUxNTg1NzcucG5n/original/KjF87U.png" loading="lazy"></figure>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzUxNTg1NzgucG5n/original/awr0z4.png" loading="lazy"><br><img src="https://img.itch.zone/aW1nLzUxNTg1NzkucG5n/original/YoI%2F8%2F.png" loading="lazy"><br><img src="https://img.itch.zone/aW1nLzUxNTg1ODIucG5n/original/xlMwtm.png" loading="lazy"></p>
<p class="text-center"><a href="https://twitter.com/rieindie" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzUxNTg1ODcucG5n/original/jRQp1K.png" loading="lazy"></a> <a href="https://www.instagram.com/rieindie/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzUxNTg1OTAucG5n/original/FEA%2BMH.png" loading="lazy"></a> <a href="https://rieindiegames.tumblr.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzUxNTg1OTYucG5n/original/PS8gSw.png" loading="lazy"></a> <a href="https://www.patreon.com/rieindie?fan_landing=true" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzUxNTg1OTgucG5n/original/UKMsYM.png" loading="lazy"></a><br></p>
<p class="text-center"><a href="https://www.kickstarter.com/projects/rieindie/ise-and-kai-chosen-throne" rel="nofollow noopener" referrerpolicy="origin"></a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDY5ODMxLzc3Mjc3MTMuZ2lm/original/cNszkX.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY5ODMxLzc3Mjc4NTIuZ2lm/original/2aPaHR.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY5ODMxLzc3Mjc5NzcuZ2lm/original/GGa7Pc.gif]]
<p>A month has passed since Izil lost his treasure-hunting uncle to owl-scurvy. He has chosen to take his mantle and find the Legacy of Captain Blackfeather!</p>
<p><br></p>
<p>Controls:</p>
<p>- WASD to move, Space to jump/flap/glide.</p>
<p>- C to dig for treasure</p>
<p>- U to toggle thread varying playback speeds. Great for speeding up nautical trips!</p>
<p>- E to interact w/ various things.</p>
<p>- Tab to Pause.</p>
[img width=500 [https://img.itch.zone/aW1nLzU2MTA4MDcucG5n/original/4%2FLZ5f.png]]
<p>The detective prodigy Jam already knows who did the crime, but what the crime actually was remains to be determined.<br></p>
<p>It's up to you to guide Jam through eight rooms of point-and-click puzzles, gather evidence, and deduce what really happened in the Mystery of the Mysteriously Spooky Mansion.<br></p>
<h4><strong>Features</strong></h4>
<ul><li>30+ minutes of point-and-click mystery gameplay</li><li>15 different endings (plus an extra secret one)</li><li>At least two or three jokes</li><li>Includes download of original soundtrack (2 songs)</li></ul>
<p><em>Content warning: PG-13 swearing; mild body horror; some unpleasant images. No jump scares.<br></em><em>Accessibility: Font select; text speed slider.</em><br></p>
<p><em>Jam and the Mystery of the Mysteriously Spooky Mansion was made by Res, an indie game developer working from British Columbia, Canada.<br></em></p>
<p><em>Spanish translation by Gambas.</em></p>
<p>——————————<em>——</em><br></p>
<p>La detective prodigio Jam ya sabe quién cometió el crimen, pero aún le falta determinar qué fue lo que ocurrió.</p>
<p>Queda en tus manos guiar a Jam a través de ocho cuartos con acertijos estilo point-and-click, recolectar evidencia, y deducir qué fue lo que en verdad sucedió en el Misterio de la Mansión Misteriosamente Espeluznante.</p>
<h4><strong>Incluye</strong></h4>
<ul><li>Más de 30 minutos de juego de misterio point-and-click</li><li>15 finales diferentes (más uno secreto)</li><li>Al menos dos o tres chistes<em><br></em></li><li>Incluye la descarga del soundtrack original (2 canciones)</li></ul>
<p><em>Advertencias: contiene insultos PG-13, body horror ligero y algunas imágenes perturbadoras. No contiene jumpscares.<br>Opciones de accesibilidad: elección de fuente; elección de velocidad de texto.</em></p>
<p><em>Jam y el Misterio de la Mansión Misteriosamente Espeluznante fue creado por Res, un dev de videojuegos indie ubicado en British Columbia, Canadá.<br></em></p>
<p><em><span class="">Traducción al español por Gambas.</span></em></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDk4NzE2LzQ0Nzg3MzIucG5n/original/AsSyL7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk4NzE2LzI1Nzk3MzcucG5n/original/dmBGoV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk4NzE2LzI1Nzk3MzkucG5n/original/cyiJoD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk4NzE2LzI1Nzk2MDYucG5n/original/JXO6i9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk4NzE2LzI1Nzk1NTQucG5n/original/qFB8IO.png]]
<p>Gardens say a lot about who you are.<br></p>
<p>Jardin is a poetic and procedural walk on an endless lake, with segmented parts of XIX's french poems. Wander and build your own garden, with your unique path.</p>
<p><br></p>
<p><em>This game was made during Global Game Jam 2019, with the two following diversifiers :</em></p>
<p><em><br></em><br></p>
<p><em>- Keep it simple</em><em><br></em></p>
<p><em><em>- 20-XIX</em></em></p>
<p><br></p>
<p><br><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/1KKvNfcmCO8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzYxNjU3LzE4MDgyMzkucG5n/original/L%2FYPy5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYxNjU3LzE4MDgyODQucG5n/original/HZwGye.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYxNjU3LzE4MDgyODAucG5n/original/WQIs0m.png]]
<p>Kitty City: A bustling commercial metropolis nicknamed The Big Milkbowl, an animal paradise where young cats can chase their dreams like birds in the sky. From the bright lights of the skyline to the sedate green spaces peppered around the city, it's a hell of a town.</p><p>But beneath this dazzling facade is an underlying layer of darkness that the average joe wouldn't have the first idea about. No city is perfect, and Kitty City has more crime than you could shake a feather-on-a-stick at. `Nip dealers, extortionists, and worse..</p><p>When a frog turns up cold in Flirtybird Park in the middle of the day, the fuzz don't have any leads and don't know where to turn. Lucky for them, one cat trots alone through the seedy backstreets of Kitty City, doing what he can to make it a better place: JB Hairboll, Private Eye.<br></p><p>A tribute to 1980s-1990s Japanese detective games such as JB Harold and Saburo Jinguuji, JB Hairboll is a short mystery that is suitable for players of all ages.</p><p>Created within 30 days for NANORENO 2015 by Nurvuss, Justyna Burzynska and Borscht Boll the Cat.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjE4NjMvODY4NzAuanBn/original/zevTeX.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE4NjMvODY4NjkuanBn/original/QIjY53.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE4NjMvODY4NzEuanBn/original/NGDerI.jpg]]
<p><strong>Jetscout: Mystery of the Valunians</strong> is a jetpack-based platformer by Dustin Auxier where you explore diverse alien environments to solve the mystery behind the Valunians whose friends are trapped in an enormous containment facility!</p>
<p><br>Play as Muun, a Jetscout initiate, as you boost, flip, and burn your way through hostile planets to fight a mind-bending cosmic evil!<br></p>
<h2>Key Features</h2>
<ul><li>A dark story pieced together across an entire solar system</li><li>16 different suits with unique stats to unlock</li><li>3 difficulty modes to fit individual playstyles</li><li>Unlockable bonus missions for real challenge-seekers</li></ul>
<p></p>
<p></p>
<p><a href="https://dustinaux.itch.io/jetscout-boot-camp"><img src="https://img.itch.zone/aW1nLzUyOTY3NTgucG5n/original/EpkJ0b.png" loading="lazy"><br></a></p>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/zrEBO7Cy-tg" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTM0MzQ4LzUyOTMxNTAucG5n/original/Q92A8%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTM0MzQ4LzUyOTMxNTEucG5n/original/jb5bZr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTM0MzQ4LzUyOTMxNDcucG5n/original/OhiDhO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTM0MzQ4LzUyOTMxNDkucG5n/original/6jSMlR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTM0MzQ4LzUyOTMxNDYucG5n/original/ItgmJH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTM0MzQ4LzUyOTMxNDgucG5n/original/jb2K3T.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTM0MzQ4LzUyOTMxNTMucG5n/original/0Dreve.png]]
<p><img src="https://img.itch.zone/aW1nLzM1ODk5ODMuZ2lm/original/a6qCqY.gif" loading="lazy"></p>
<h2>Impress the Gods!</h2>
<p><em>Jotun</em> is a hand-drawn action-exploration game set in Norse mythology.<br><br>In <em>Jotun</em>, you play Thora, a Viking warrior who died an inglorious death and must prove herself to the Gods to enter Valhalla.<br><br>Explore vast regions of Norse Purgatory to find runes to unleash the jotun, giant Norse elementals. Fight them using only your massive two-handed axe, the blessings of the Gods and your skills!<br><br>Jotun: Valhalla Edition features Valhalla Mode, the ultimate battle against even fiercer versions of the Jotun! A true challenge for those who wish to impress the Gods!<br></p>
<h2>Features</h2>
<ul><li>Experience beautiful hand-drawn animation</li><li>Fight five epic jotuns, giant Norse elementals</li><li>Explore nine vast and mysterious levels filled with Viking mythology</li><li>Learn about Thora's life and death in an overarching story</li><li>Summon powers bestowed upon you by the Viking Gods</li><li>Hear authentic Icelandic voice-overs</li><li>Listen to an amazing original soundtrack, specifically composed for every gameplay moment by Max LL</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/hFC0P9E4r1w" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjY1MDIwLzM1OTAwNDgucG5n/original/4W0YVQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY1MDIwLzM1OTAwNDkucG5n/original/c1hhtB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY1MDIwLzM1OTAwNTAucG5n/original/L51371.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY1MDIwLzM1OTAwNTEucG5n/original/rv321Q.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY1MDIwLzM1OTAwNTIucG5n/original/C8t%2BAP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY1MDIwLzM1OTAwNTMucG5n/original/dGcmUA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY1MDIwLzM1OTAwNTQucG5n/original/46l4gV.png]]
<p>Made with Gracie Straznickas and Anthony Tate. <br></p>
<p>(Game card are to be printed on 3.5*5.5 inch format)</p>
<p>This is an education card game made with Chicago Alliance Against Racist and Political Repression (CAARPR). This is intend to use as a education tool to help community understand the importance of understanding social justice system and how to protect themselves when encounter conflicts with law enforce. This is also use by CAARPR to promote the CPAC bill that aim to address the issue of police brutality and increase police accountability in Chicago. </p>
<p>The game can be played solo or in a group setting. </p>
<p><br></p>
<h3></h3>
<p><span></span></p>
[img width=500 [https://img.itch.zone/aW1nLzI1MjMyMTgucG5n/original/1wg7Sm.png]]
<p>I learned enough FamiStudio to make a decent sounding chiptune song.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/70teIlCIhVY" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1nLzU2NjM0MzcucG5n/original/1gzr0I.png]]
<p>JRNL is a tool built for easy daily journaling. When you open JRNL each day and write a journal entry, the entry gets saved and that day's square is filled in on the calendar. Previous days' entries can be viewed by clicking on their corresponding squares on the calendar. <br></p>
<p></p>
<h1>Features</h1>
<p>While JRNL is intended to be simple and easy to use, it still provides several advanced features: </p>
<ul><li><strong>Daily Notifications:</strong> Set a time for JRNL to remind you to write in your journal.</li><li><strong>Auto-Save</strong>: Automatically save your entries after 10 seconds of inactivity.</li><li><strong>Full-Year Export: </strong>Export a year's worth of journal entries into a single, archivable HTML file.</li><li><strong>Read-Only Past Entries: </strong>By default, entries can only be edited on the day that they are created.</li><li><strong>Themes: </strong>Change the look of JRNL with built-in color themes.</li><li><strong>Smart Text Editing: </strong>Entries are edited using a rich-text editor, allowing for text formatting (bold, italics) and the ability to include links and images.</li></ul>
<p>All of these features can be enabled/disabled or customized through the settings menu or in-depth via the config file.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjI2Nzc2LzgzNTAyNjAuZ2lm/original/fsKFpi.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI2Nzc2LzgzNTAzMjQuZ2lm/original/4E9wTH.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI2Nzc2LzgzNTAyNjEucG5n/original/LUrzfQ.png]]
<p>After a tiresome journey through the jungle, you come across a rumbling waterfall.<br></p>
<p>The Dungeondraft source file is available from 1$ up.</p>
[img width=500 [https://img.itch.zone/aW1nLzYwMzU3NDMucG5n/original/SxPnl2.png]]
<p><strong>Just Another Day at the Office</strong> is a light-hearted action game with musings on the meaning of work. You play the role of a
disgruntled office worker. Years and years in the same boring office,
with the same boring jokes and the same paperwork. You feel your mind
slowly dying. What are you doing it all for? Is this all there is to
life?</p>
<p><img alt="Bureaucrats talking" style="margin: 0px; height: 189px" src="https://img.itch.io/aW1hZ2UvNTc2LzI3NTYucG5n/250x600/yS33j7.png" loading="lazy"></p>
<p>And suddenly you snap. This is not how it's going to end.</p>
<p>And that's how it starts...</p>
<p>Let loose, you try to escape from the office, using whatever weapons you
find - which means constructing Molotov cocktails from whiskey bottles
and robbing the art department of their spray cans for some
redecorating. Along the way you'll get confronted by police, bankers,
and finally maybe even save the world - or fail miserably?<br><br>You can even take a break from the action to watch the people in the world talk or think, and read a few books.<br><img src="https://img.itch.io/aW1hZ2UvNTc2LzI3NTQucG5n/250x600/0UL%2FAX.png" loading="lazy"></p><p><strong>UPDATE 2022</strong></p><p>A sequel is now in active development, also available on itch.io - more info soon.<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTc2LzI3NTMucG5n/original/2rPajq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc2LzI3NTQucG5n/original/kiINNP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc2LzI3NTUucG5n/original/8yZoAI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc2LzMwNzAucG5n/original/P9RrFV.png]]
<p><strong><em></em><em></em></strong></p>
<div class=""><iframe width="600" height="338" src="https://www.youtube.com/embed/DOywynZiBaQ" frameborder="0" allowfullscreen=""></iframe></div>
<p><span></span></p>
<p><strong><em><img src="https://img.itch.zone/aW1nLzYyNzAxMTEucG5n/original/uCgTVO.png" loading="lazy"><br></em></strong></p>
<p><strong><em>Welcome to the Kabaret - where monsters from Southeast Asian myths and folklores dwell. Decipher tea leaves, play traditional games, and question your humanity.</em></strong><br></p>
<p><strong>Kabaret</strong> is a Southeast Asian visual novel filled with monsters from myths and folklores from the region.
</p>
<p><strong><em><br></em></strong></p>
<p><strong><em>"The truth is this, every monster you have ever met, was once a human being."</em></strong>
</p>
<p><br></p>
<p>Cursed into a monster, Jebat journeys into a realm called the "Alam". Taken in by the charismatic owner of Kabaret, known only as The Caretaker, Jebat is tasked with providing tasseomancy services to the dwellers in an effort to gather information on how to break his curse.</p>
<p><img src="https://img.itch.zone/aW1nLzYyNzAxMzMucG5n/original/%2B4bJQz.png" loading="lazy"><br></p>
<p>Each of the mythical creatures who visit the Kabaret come from Southeast Asian folklores and legends. Listen to their unique stories, give advice through tasseomancy, and find a way to break the curse.</p>
<figure><img src="https://img.itch.zone/aW1nLzYyNzAxNTgucG5n/original/vu5T9h.png" loading="lazy"></figure>
<ul><li>Brew tea and decipher the meaning behind the leaves.
</li><li>Play traditional Southeast Asian games.
</li><li>Get to know characters inspired by actual myths and folklore from the region.
</li><li>Featuring sounds of <a href="https://www.hellouniverse.net/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Hello Universe</a> and <a href="https://www.youtube.com/channel/UCSqp0r80iQhQX7YQdLs1Vpw" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Sambasunda Indonesia</a>.
</li></ul>
<p></p>
<p>We are also on Steam! Wishlist us there!
</p>
<p><a href="https://bit.ly/KabaretSTEAM" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzUzNDI5MTEucG5n/original/a3%2BdOJ.png" alt="Steam Wishlist" title="Steam Wishlist" loading="lazy"></a>
</p>
<figcaption>Click here to wishlist us on Steam!</figcaption>
<p><a href="https://bit.ly/PTGames" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzUzNDM1NDMucG5n/original/iBBBqn.png" alt="Discord" title="Discord" loading="lazy"></a>
</p>
<figcaption>Come drink tea with us.</figcaption>
<p>Persona Theory Games <a href="https://www.personatheory.com/" rel="nofollow noopener" referrerpolicy="origin">web</a>, <a href="https://twitter.com/personatheorymy" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Twitter</a>, <a href="https://www.instagram.com/personatheory/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Instagram</a> and <a href="https://www.facebook.com/personatheory/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Facebook</a>.
</p>
<p>As seen on <a href="https://www.mygameon.my/posts/kabaret-a-story-of-having-tea-with-pontianak-while-listening-to-cabaret-songs" target="_blank" rel="nofollow noopener" referrerpolicy="origin">MyGameOn</a> | <a href="https://kakuchopurei.com/2019/10/22/persona-theory-malaysia-visual-novel-creators-interview/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Kakuchopurei</a> | <a href="https://sea.ign.com/kabaret-pc/167792/feature/kabaret-shines-unique-spotlight-on-mythical-southeast-asian-monsters" target="_blank" rel="nofollow noopener" referrerpolicy="origin">IGN SEA</a> |<a href="https://indiewatch.net/2021/01/14/most-anticipated-indie-games-for-2021/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Indie Watch</a> | <a href="https://www.gamespot.com/amp-articles/50-indie-games-to-keep-an-eye-on-in-2021/1100-6485722/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">GameSpot</a><span></span>
</p>
<p><strong>Once you're done, please consider dropping us a feedback here -> </strong><strong><a href="https://forms.gle/LDuaHNtUGUvgTyvd9" rel="nofollow noopener" referrerpolicy="origin"></a><a href="http://bit.ly/feedback-kabaret" target="_blank" rel="nofollow noopener" referrerpolicy="origin">bit.ly/feedback-kabaret</a></strong><a href="https://forms.gle/LDuaHNtUGUvgTyvd9" rel="nofollow noopener" referrerpolicy="origin"></a>
</p>
<p><strong>DISCLAIMER: This game contains elements that are not suitable for some, and contains violence, blood and gore, and strong language.</strong></p>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/DOywynZiBaQ" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTA1NTg2LzYyNzAwMjIucG5n/original/ME6Pam.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA1NTg2LzYyNzAwMjMucG5n/original/LiDeuq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA1NTg2LzYyNzAwMjYucG5n/original/KDtRlV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA1NTg2LzYyNzAwMjQucG5n/original/8cQnPZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA1NTg2LzYyNzAwMjUucG5n/original/lTvsKw.png]]
<blockquote>Kaijus and Skyscrapers - Is there a more iconic duo?<br>Aid your Kaiju in rising to greater and greater heights in the world's tallest building, while dodging pesky obstacles that may threaten your ascent!</blockquote>
<p>Kaiju Klimb was built in a Game Jam, performed by 7 beginners.<br>Their love for cute animals and world annihilation inspired those deary designers into developing a minimum viable product of what seems to be a sign of impending doom... Or they just love giant adorable monsters.</p>
<p>Heavily inspired in the monsters from <em>The</em> <em>PowerPuff Girls</em>, famous giant creatures like <em>Godzilla</em>,<em> King Kong</em>, and<em> Mothra </em>as well as mythology from countless cultures around the world, Kaiju Klimb evokes that addicting gameplay from simple games into a sweet casual style, perfectly setting the mood for the destruction of earth while you relax!</p>
<p>A bigger and better sequel to Kaiju Klimb is already in development, offering a continuous flow of update containing additional monsters, levels, catchy songs and new addictive ways to play!</p>
<p>However, just like every designer on earth... <strong><em>We are penniless! </em></strong>You could help us by donating any token amount or you can...</p>
<p class="text-center"><strong><em>PLAY IT FOR FREE ON YOUR PHONE!</em><del><br></del></strong><em><del>with ads of course</del></em></p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTQwODQ4LzI4NDk2MDcucG5n/original/a9Lwde.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQwODQ4LzI4NDk2MDYucG5n/original/X8vPAf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQwODQ4LzI4NDk2MDkucG5n/original/bhYtdv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQwODQ4LzI4NDk2MDgucG5n/original/%2BHzEfT.png]]
<p>KAIMA is the story of a planet being eaten away by monsters, and a girl determined to survive.</p>
<p>this game was made over the course of 2 months, so it's pretty short to run through--takes an hour or so to see everything. there are 5 endings (one is a secret!)</p>
<p>CONTENT WARNING:<br>strong language, violence, cannibalism, and character death. occasional screen shakes and flashes during certain scenes.<span></span><br></p>
<p>you can get <a href="https://lydianchord.bandcamp.com/album/kaima-soundtrack-with-bonus-tracks" rel="nofollow noopener">a higher quality version of the soundtrack with bonus tracks</a> over on bandcamp!</p>
<p>* CREDITS *</p>
<ul><li>art+story - <a href="https://twitter.com/nomnomnami" target="_blank" rel="nofollow noopener">NomnomNami</a></li><li>music - <a href="https://twitter.com/LydianChord" rel="nofollow noopener">LydianChord</a> and <a href="https://twitter.com/nomnomnami" target="_blank" rel="nofollow noopener">NomnomNami</a></li></ul>
<p>* translations *<br>Español - Fay<br>Français - mapledinosaur<br>Português - MOON-XP<br>Русский - Project Gardares<br>українська - Ron_Dallas<br>한국어 - <a href="https://twitter.com/KyleHeren" target="_blank" rel="nofollow noopener">KyleHeren</a><br></p>
<p><a href="https://www.redbubble.com/people/nomnomnamiart/works/27310627-comfort-illi?asc=u&grid_pos=4&p=t-shirt&rbs=0285c0c3-cfb0-4900-925e-9e5e46137f36&ref=artist_shop_grid&style=womens" target="_blank" rel="nofollow noopener"><img src="https://img.itch.zone/aW1nLzc4MTcwNi5wbmc=/original/cXZiGJ.png" alt="you could be wearing this shirt! IT COULD BE YOU!!!" title="you could be wearing this shirt! IT COULD BE YOU!!!" loading="lazy"></a><br></p>
<p><u>UPDATES</u></p>
<ul><li>1/22/2020 - uploaded portuguese translation (updated 2/12)</li><li>10/23/2018 - uploaded russian translation</li><li>9/7/2017 - uploaded french translation</li><li>4/10/2017 - uploaded ukrainian translation</li><li>9/21/2016 - uploaded spanish translation</li><li>8/3/2016 - uploaded korean translation (updated 3/21/17)</li><li>7/25/2016 - fixed "ghost illi" glitch</li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzYxOTQvMzU4MDIxLnBuZw==/original/IXVEJk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzYxOTQvMzU4MDIwLnBuZw==/original/hzyZT9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzYxOTQvMzU2MDUxLnBuZw==/original/C3D%2FOy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzYxOTQvMzU2MDUyLnBuZw==/original/tKMXyT.png]]
<p>KAIMA is the story of a planet being eaten away by monsters, and a girl determined to survive.</p>
<p>this game was made over the course of 2 months, so it's pretty short to run through--takes an hour or so to see everything. there are 5 endings (one is a secret!)</p>
<p>CONTENT WARNING:<br>strong language, violence, cannibalism, and character death. occasional screen shakes and flashes during certain scenes.<span></span><br></p>
<p>you can get <a href="https://lydianchord.bandcamp.com/album/kaima-soundtrack-with-bonus-tracks" rel="nofollow noopener" referrerpolicy="origin">a higher quality version of the soundtrack with bonus tracks</a> over on bandcamp!</p>
<p>* CREDITS *</p>
<ul><li>art+story - NomnomNami</li><li>music - <a href="https://twitter.com/LydianChord" rel="nofollow noopener" referrerpolicy="origin">LydianChord</a> and NomnomNami</li></ul>
<p>* translations *<br>Español - Fay<br>Français - mapledinosaur<br>Português - MOON-XP<br>Русский - Project Gardares<br>українська - Ron_Dallas<br>한국어 - <a href="https://twitter.com/KyleHeren" target="_blank" rel="nofollow noopener" referrerpolicy="origin">KyleHeren</a><br></p>
<p><a href="https://www.redbubble.com/people/nomnomnamiart/works/27310627-comfort-illi?asc=u&grid_pos=4&p=t-shirt&rbs=0285c0c3-cfb0-4900-925e-9e5e46137f36&ref=artist_shop_grid&style=womens" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzc4MTcwNi5wbmc=/original/cXZiGJ.png" alt="you could be wearing this shirt! IT COULD BE YOU!!!" title="you could be wearing this shirt! IT COULD BE YOU!!!" loading="lazy"></a><br></p>
<p><u>UPDATES</u></p>
<ul><li>1/22/2020 - uploaded portuguese translation (updated 2/12)</li><li>10/23/2018 - uploaded russian translation</li><li>9/7/2017 - uploaded french translation</li><li>4/10/2017 - uploaded ukrainian translation</li><li>9/21/2016 - uploaded spanish translation</li><li>8/3/2016 - uploaded korean translation (updated 3/21/17)</li><li>7/25/2016 - fixed "ghost illi" glitch</li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzYxOTQvMzU4MDIxLnBuZw==/original/IXVEJk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzYxOTQvMzU4MDIwLnBuZw==/original/hzyZT9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzYxOTQvMzU2MDUxLnBuZw==/original/C3D%2FOy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzYxOTQvMzU2MDUyLnBuZw==/original/tKMXyT.png]]
<p><em>KANABO</em> is a rules-light pen-and-paper fantasy role-playing game set loosely in Tokugawa-era Japan (1600–1868) and based on iconic sword-fighting genre movies set in that time period, with cultural consulting by James Mendez Hodes (@LulaVampiro). This is a trio of zines plus a character sheet.</p>
<p><strong><a href="https://monkeyspawgames.com/collections/monkeys-paw-games/products/kanabo" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Now available in print</a>!</strong><em></em></p>
<h3>Within the 17-page Player's Handbook, you'll find:</h3>
<ul><li>A series of tools for safe play, for Chroniclers and Travelers both</li><li>A lightweight, easy-to-run d100 system with four stats</li><li>A randomized character system that provides compelling starting points for your adventurer</li><li>Hirelings, tools, clothes, provisions, and weapons to set you on your journey</li><li>Fully bookmarked for quick reference!</li></ul>
<h3>Within the 21-page Chronicler's Handbook, you'll find:</h3>
<ul><li>A series of tools for safe play, for Chroniclers and Travelers both<br>
</li><li>Tools for new and veteran GMs alike</li><li>Weather and encounter tables</li><li>A concise NPC list</li><li>A series of tables to generate your next <em>KANABO</em> hexcrawl</li><li>Factions, adventure sites, and magical & mysterious discoveries</li><li>Fully bookmarked for quick reference!<br>
</li></ul>
<h3>Within the 11-page Adventure Handbook, you'll find:</h3>
<ul><li>A series of tools for safe play, for Chroniclers and Travelers both<br>
</li><li>A hexcrawl, including a town - Peach Tree Village, featuring NPCs, Shops, and Rumors</li><li>A 19-key hex-map using Nate Treme of Highland Paranormal Society's hex tiles</li><li>Nearly 40 Encounters and Discoveries</li></ul>
<h3>What $1000 USD pays for:</h3>
<ul><li>A print run of all three Booklets (Players, Chronicler, Adventure) ($400 USD)</li><li>The cost of hiring a cultural consultant ($240)</li><li>Paying myself ($360, which is $0.07/word)</li></ul>
<h3>Potential stretch goals:</h3>
<ul><li>$1660: Paying myself more ($660 brings my pay to $0.20/word)</li><li>$2000: A print run of Book 3: Bestiary (in development)</li></ul>
<p>Based on Christina Stone-Bush's <a href="https://hyvemynd.itch.io/brighthammer">Brighthammer</a> and John Geary's <a href="https://gayhalforc.itch.io/sledgehammer">Sledgehammer</a>, <em>KANABO </em>is an independent work compatible with Sledgehammer and Brighhammer but not affiliated with Gayhalforc or HyveMynd.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTYxNjQ5LzY3NTk5NDcucG5n/original/FHrdRD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYxNjQ5LzY3NTk5NDgucG5n/original/FicXAl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYxNjQ5LzY3NTk5NDkucG5n/original/DyGC0v.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYxNjQ5LzY3NjAxMzkucG5n/original/Rzwett.png]]
<blockquote><span></span></blockquote>
<h1 class="text-center"><em>BATALA IS DEAD, AND THE HOLY TRINITY HAS KILLED THEM. IN THE END OF THE UNIVERSE, WILL THEY SING OF YOU? MAKE. GOD. BLEED.</em></h1>
<p><strong>Karanduun</strong> is a <strong>modern Filipino Epic RPG about worthless heroes dismantling God, whatever cycle of oppression that must be</strong><strong></strong>. Inspired by modern Filipino folklore and culture. You play as young heroes who must make their legend known and become a legendary Karanduun by making God (whichever oppressive system and tyrant that is) bleed.</p>
<p>This game requires 4 - 6 players, with one player as the Alamat Chanter, the term for Game Master. This game only uses six-sided dice for everything. You're going to need around 6 in the beginning. By the end, you'll need around 20.</p><p><strong>Grab physical copies of Karanduun over on SoulMuppet! <a href="https://soulmuppet-store.co.uk/products/karanduun" rel="nofollow noopener" referrerpolicy="origin">Karanduun – SoulMuppet Publishing (soulmuppet-store.co.uk)</a></strong><br></p>
<h2>Karanduun are those that are as fast as the lightning and as strong as the hurricane. </h2>
<p>Karanduun are those that, with a single command, fell entire armies and break the hearts of gods. But God is dead, and the Holy Trinity has killed Them. The Multiverse spirals into Kawalan, oblivion and entropy, due to the Hatred brought about by the forces of the Holy Trinity. Yes, there is no hope for this doomed world, but in its dying breath, the wake of the Karanduun, it might have been glorious. </p>
<p>Will you be remembered? You, lowly hero, of no name and consequence, so insignificant that not even Tadhana, destiny, has you etched upon its web, must rise and achieve that legendary sobriquet: Karanduun.</p>
<h2 class="text-center">SANSINUKOB AND ALAMATPUNK</h2>
<p><em><strong>Sansinukob is a setting inspired mainly by Filipino Myth and Folklore</strong>, </em>Modern Filipino Culture and Folklore. From provinces to the metropolis, all of them come from the experience of having lived in the Philippines.</p>
<p><strong><em>Wide Range of Settings. </em></strong>The world is vast and varied. Urban settings, especially within Biringan, the City-of-Cities, is closer to the aesthetic of post-American Philippines, just with electricity and cars replaced with magic spirits and giant boars. Outside of Biringan, one can find more fantastical settings and less urban fantasy settings.<br></p>
<p><strong><em>It is also inspired by "center-of-creation" settings</em> </strong>like <em>Planescape's Sigil, Kill 6 Billion Demons' Throne, and Roger Zelazny's Amber</em>. It is also inspired by post-apocalyptic, punk, and new weird settings like <em>Shin Megami Tensei Nocturne's</em><em> Vortex World</em>, <em>China Mieville's Bas-Lag</em><em>, </em>and the <em>Dying Earth genre of Fantasy </em>like <em>Gene Wolfe's Book of the New Sun, Jack Vance's Dying Earth, </em><em>Tanith Lee's Flat Earth, </em>and <em>Exalted's Creation.</em></p>
<p><strong><em>Sansinukob is the center of the multiverse, and is where the Neverending Ocean flows out from.</em> </strong> When BATALA was killed, the dregs of the multiverse seeped in from Neverending Ocean, where all universes can be found. Here the multiverse festers, toiling under the horrible violence that is the Holy Trinity. <br></p>
<p><em><strong>What is Alamatpunk? </strong></em>Alamatpunk is the plight and struggle of heroes rising in power, ascending the Angel's Ladder, overthrowing oppressors, and achieving their destinies. They are <em>Alamat, </em>meaning <em>legend </em>or <em>folklore </em>in Filipino, for the heroes and the settings are inspired by Filipino legends, traditions, folklore, and mythology. They are <em>Punk </em>because they are stories focusing on fighting back against an oppressive regime and an overwhelmingly powerful outside force with nothing but you, your friends, and your ideals and beliefs to power you.</p>
<h1 class="text-center">THE SYSTEM</h1>
<p><strong><em>An Easy to Learn Heroic System. </em></strong>The system only uses six-sided dice, and is meant to be easy to play, inspired by the <em>Exalted </em>1e Quickstart and PbtA design principles. One player takes on the roll of the <strong>Alamat Chanter, </strong>the one who describes and facilitates the game, while the players play as <strong>Worthless Heroes </strong>who yet have no names and legends and must etch their being into the world to change it. In this way, the Alamat Chanter sings the legends that these no names build for themselves.</p>
<p>The system is uses <strong>Acts, </strong>narrative systems that trigger when a Player narrates their hero in a specific way, and <strong>Responses, </strong>moves that the Alamat Chanter can use to make the PC's lives weirder, stranger, and harder to help facilitate a savage narrative that all the players create. </p>
<p>The Alamat Chanter does not roll, only the players do. They will roll a dice pool of d6s equal to the sum of two of their Traits. Every 4, 5, and 6 counts as a Hit, and every 1, 2, and 3 is considered a Miss. The AC determines the Difficulty of an action, assigning a Threat Number. If the number of Hits is below the TN, the action fails. If the number of Hits is equal to the TN, the action is a partial success. If the number of Hits is greater than the TN, the action is a full success.</p>
<p><strong>QUICKSTART SCENARIO: The Temple-Body of Aring Sinukuan. </strong>The Temple-Body of a War and Mountain Spirit has been defiled, turned into a devils pit for engkanto and Fallen druggies. Raid it and cleanse it of its head... and then fight your way out.</p>
<p>This is the 1st published edition of the 1st Edition! Please feel free to rate the game and drop reviews! They help amazingly.</p>
<p><em>FURTHERMORE: If you're from the Philippines and can't afford the PDF, just contact my Twitter and I'll send a PDF your way. Kapit-bisig, kababayan!</em></p>
<p><strong>For all the lorehounds and fic lovers out there: </strong>Karanduun has an official web serial! Check out <strong><a href="https://torendheavenandearth.tumblr.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">To Rend Heaven and Earth!</a></strong></p>
<p><strong><a href="https://docs.google.com/spreadsheets/d/1vOsWDeHradPPFtEGH-ridkZ4rEQltsM2LTLE4nKW3TY/edit?usp=sharing" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Karanduun Character Keeper</a>: </strong>If you want a Character Keeper for your online games! Make a copy!</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDM3NDU2LzQyMDUyMzEucG5n/original/Phpwvi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDM3NDU2LzQyMDUyMjQucG5n/original/8XIlBt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDM3NDU2LzQyMDUyMjUucG5n/original/SsFBxF.png]]
<p>The four of you tell each other everything.</p>
<p>That is, you do when there's anything to tell, because if something happens to one of you, there's a good chance the others were there, too. You've been inseparable for as long as any of you can remember. But now you're growing up, and that's about to change.</p>
<p>Two of you have a Purpose to search for, something that can't be found in the small town you all come from. Two of you have a Responsibility, something that you need to do here. You'll write letters to your now-distant friends to find out how your characters will change, how your relationships will evolve, and if you'll grow apart or closer with distance.</p>
<p>Keep in Touch is a four-player GM-less game about childhood friends living apart from each other for the first time. It's told through alternating in-person sessions and written letters. It was written for the <a href="https://itch.io/jam/correspondence-jam/">Correspondence Jam</a>.<br></p>
<p>If the cost of this game is a hardship for you, please grab a Community Copy from the pool below. More copies will be added to the Community Copy pool for every purchase of the game made. If you'd like to support the game without spending money, a rating or a comment helps others find it!<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTM1ODAzLzI3ODYxNTgucG5n/original/8DVPmh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM1ODAzLzI3ODU4NzYucG5n/original/at1zis.png]]
<p><em>CW: Body Horror, Dysmorphia</em></p>
<p>Keep It Together is a game about your body. Your body is ghastly and rotting. It makes others hate and fear you, and even try to kill you. It changes without your permission, forever, until like Theseus’ ship you are a whole different thing from what you were. It fails you when it matters most.<br></p>
<p>Keep It Together is a game about your body. Your body is resilient. It is changeable, and you can make it your own with effort. It lets you express yourself when words fail. It is yours, and you don’t need anyone else’s permission for it. Don’t forget this.</p>
<p>Don’t forget this.</p>
<p>---</p>
<p>Easy, light system. 4 pages.</p>
<p>Requires one six-sided die and one eight-sided die, or a random number generator.</p>
<p>Download below, install directly in brain.</p>
[img width=500 [https://img.itch.zone/aW1nLzMwMDAxMTYucG5n/original/SC2Y97.png]]
<p>Keris & The Dream is a GM-less TTRPG for one (5 - 15 minutes)</p>
<p>Martial arts in the Malay community continue to be deeply rooted in mysticism, despite the Muslim-washing attempts by the government and religious heads. The keris, especially, has purportedly many magical uses outside of being a mere weapon and I intend to explore these stories with you.</p>
<p>I grew up on books like Siri Bercakap Dengan Setan and Harimau Jadian which unfortunately are quite a rare find these days and have been a huge influence to the writing of this game.</p>
<p>I hope you enjoy it.</p>
<p><strong>What you need to play:</strong><br></p>
<ul><li>imagination</li><li>a soft drawing implement<br>(crayon, ink, paint, etc.)</li></ul>
<p></p>
[img width=500 [https://img.itch.zone/aW1nLzMwNzMyODcuanBn/original/XSUTWo.jpg]]
<p><em><em><strong><em>This game is still under development, but if you got it in a bundle you will have access to the full version when it comes out.</em><br><br></strong></em></em><strong></strong>You are a small frog with a really big tongue, and you somehow got caught up in an even bigger mess.</p>
<p>Stick your slimy tongue to fling yourself through danger, and save the day in this adventurous and challenging frog-based 2D platformer!</p>
<p><strong>- Features - </strong></p>
<ul><li>Stick to surfaces, pull levers and boulders, and do more with your tongue!</li><li>Levels designed to be explored and challenged</li><li>Boss fights against mythical creatures!</li><li>A bunch of tasty flies ready to be eaten!</li></ul>
<p><strong>- Planned stuff! -</strong></p>
<ul><li>More regions each with a unique look, mechanics and bosses</li><li>Extra challenging levels</li><li>Stop immeasurable evil from taking over!</li><li>Texto em Português Brasileiro</li></ul>
<p><strong>- In development by -</strong></p>
<p>Game Design, Code: <a href="https://twitter.com/brukerotan" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@brukerotan</a><br></p>
<p>In-game and Cutscene Art: <a href="https://twitter.com/saoricih" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@SaoriCih</a></p>
<p>Game Design: <a href="https://twitter.com/jurtheshrimp" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@jurtheshrimp</a><br></p>
<p>Music: <a href="https://soundcloud.com/ivokaimusic" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Ivo Kai</a><br></p>
<p>Banner Art: <a href="https://twitter.com/RenStarDeluxe" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@RenanStar</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/uwH2cg5LPQA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTY3MzAzLzM3MjI0MjUucG5n/original/v2TrkK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY3MzAzLzM3MjI0MzAucG5n/original/aHLLv5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY3MzAzLzM3MjI0MzIucG5n/original/P6yB8A.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY3MzAzLzM3MjI0MjYucG5n/original/Wdkezi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY3MzAzLzM3MjI0MjgucG5n/original/D0XhAA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY3MzAzLzM3MjI0MjcucG5n/original/oWdFim.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY3MzAzLzM3MjI0MjkucG5n/original/qUC%2B25.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY3MzAzLzM3MjI3ODUucG5n/original/oW8BO%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY3MzAzLzM3MjI0MzEucG5n/original/BQMcoN.png]]
<p><em><em><strong><em>This game is still under development, but if you got it in a bundle you will have access to the full version when it comes out.</em><br><br></strong></em></em><strong></strong>You are a small frog with a really big tongue, and you somehow got caught up in an even bigger mess.</p>
<p>Stick your slimy tongue to fling yourself through danger, and save the day in this adventurous and challenging frog-based 2D platformer!</p>
<p><strong>- Features - </strong></p>
<ul><li>Stick to surfaces, pull levers and boulders, and do more with your tongue!</li><li>Levels designed to be explored and challenged</li><li>Boss fights against mythical creatures!</li><li>A bunch of tasty flies ready to be eaten!</li></ul>
<p><strong>- Planned stuff! -</strong></p>
<ul><li>More regions each with a unique look, mechanics and bosses</li><li>Extra challenging levels</li><li>Stop immeasurable evil from taking over!</li><li>Texto em Português Brasileiro</li></ul>
<p><strong>- In development by -</strong></p>
<p>Game Design, Code: <a href="https://twitter.com/brukerotan" target="_blank" rel="nofollow noopener">@brukerotan</a><br></p>
<p>In-game and Cutscene Art: <a href="https://twitter.com/saoricih" target="_blank" rel="nofollow noopener">@SaoriCih</a></p>
<p>Game Design: <a href="https://twitter.com/jurtheshrimp" target="_blank" rel="nofollow noopener">@jurtheshrimp</a><br></p>
<p>Music: <a href="https://soundcloud.com/ivokaimusic" target="_blank" rel="nofollow noopener">Ivo Kai</a><br></p>
<p>Banner Art: <a href="https://www.instagram.com/renanstar/" target="_blank" rel="nofollow noopener">@RenanStar</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/uwH2cg5LPQA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTY3MzAzLzM3MjI0MjUucG5n/original/v2TrkK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY3MzAzLzM3MjI0MzAucG5n/original/aHLLv5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY3MzAzLzM3MjI0MzIucG5n/original/P6yB8A.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY3MzAzLzM3MjI0MjYucG5n/original/Wdkezi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY3MzAzLzM3MjI0MjgucG5n/original/D0XhAA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY3MzAzLzM3MjI0MjcucG5n/original/oWdFim.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY3MzAzLzM3MjI0MjkucG5n/original/qUC%2B25.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY3MzAzLzM3MjI3ODUucG5n/original/oW8BO%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY3MzAzLzM3MjI0MzEucG5n/original/BQMcoN.png]]
<p>It's a fine day on the infinite orchard, and you've been chosen to control the fruit picking robot.</p>
<p> The fruit being grown this millennia is the lesser-spotted bananorange, a beautifully sweet fruit that has an earthy aftertaste.</p>
[img width=500 [https://img.itch.zone/aW1nLzQ3NjE3MzcucG5n/original/ZFapV9.png]]
<p>Battle the invading Ananke Armada in this twin-stick shooter where you can slow time to get the advantage over your enemies. Blast your way to a high-score before the ever-present timer reaches zero.</p><hr><p>Shoot enemies, collect shards. When you collect enough shards an arrow will appear to point to a time extension pick up. Are you good enough to keep the fight going?</p><hr><p><strong><em>Controls (KB&M or gamepad):</em></strong></p><p style="margin-left: 20px">Left stick or W,A,S,D = move<br>Right-stick or mouse and LMB = aim and shoot<br>RMB or Right trigger on pad = slow time (energy allowing)</p><p style="margin-left: 20px">Esc or gamepad start button = pause</p><p>Gamepad is recommended!</p><hr><p>New for November 2016 - For £2.00 (or whatever that is in your local currency), get the game AND the source-code. Do with it what you wish. Steal parts, re-write parts, remix the entire game and re-release is... Whatever you want! As long as you don't just replace my name with yours that is :)</p><p>I WANT TO HEAR FROM YOU! Follow me on Twitter - <a href="http://www.twitter.com/MrTom" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@MrTom</a>. Do you like the game? Did you hate it? Did you see anything break? Is your face getting hot and itchy? Let me know!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/znuBTuCns7E" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDUxODQvNDExOTAyLnBuZw==/original/hY7mfL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUxODQvNDExOTA0LnBuZw==/original/baFoTx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUxODQvNDExOTA2LnBuZw==/original/VyX8%2B2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUxODQvNDExOTAzLnBuZw==/original/uVsa08.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUxODQvNDExOTA1LnBuZw==/original/hQDC%2BF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUxODQvNDExOTAxLnBuZw==/original/oPqaHn.png]]
<p>A game to play when you're on a walk~ <br><br>This is a one-player game where you'll tell the story of an adventurer as you kick a rock. The traits of your rock will help define your adventurer and their journey. Where your rock lands will prompt you to describe the journey. </p>
<p>Start and pause Kick Rocks! at your leisure, your journey is always ready when you are.<br> Feel free to play this with friends, whether the two (or more) of you play it together or play during moments of companionable silence. <br><br>This game made for the <a href="https://itch.io/jam/pleasurecardrpg" target="_blank">Pleasure-not-Business Card RPG Jam<br><br></a>!!Update!! - I have added in a version that turns the game into a foldable book/zine. Now you can jot down notes about your play or just doodle in it! This version also allows printing on one page. I have included instructions on folding on the second page of this. <br>Some of the phrasing on the front side has been updated for clarity<br></p>
<p>A link to Huetopia's Game at a Glance where Morgan talks about Kick Rocks! The time stamp is at 1:38:42. The whole episode is awesome and features another game, Simon Moody's Bonfire & Blade, and some awesome indie projects!<br><br></p>
<div class=""><div class=""><iframe width="500" height="281" src="https://www.youtube.com/embed/M-5CDX1UK8U" frameborder="0" allowfullscreen=""></iframe></div><br></div>
<p></p>
<p><strong>Credits</strong><br>Thomas Novosel<br>Twitter: <a href="https://twitter.com/thomasanovosel" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@thomasanovosel</a> | <a href="https://t.co/KctTslgaFW?amp=1" dir="ltr" target="_blank" class="" rel="nofollow noopener" referrerpolicy="origin"><span class=""></span></a><a href="https://thomasnovosel.itch.io" target="_blank">https://thomasnovosel.itch.io</a><br>Title font - Fight 1<br>Body font - Markerino 1<br><br><strong>Special thanks to~<br><br></strong>Kevin Thien Vu Long Nguyen<br>Twitter: <a href="https://twitter.com/Knit_Nack" target="_blank" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">@Knit_Nack</a> | <a href="https://nguyenconditions.com/" target="_blank" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">https://nguyenconditions.com/</a></p>
<p>Viditya Voleti<br>Twitter: <a href="https://twitter.com/vidityavoleti?s=20" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@VidityaVoleti</a> | <a href="https://vidityavoleti.itch.io/" target="_blank">https://vidityavoleti.itch.io/</a></p>
<p>Simon Moody<br>Twitter: <a href="https://twitter.com/LuchaLibris?s=20" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@LuchaLibris</a> | <a href="https://colorspraygames.itch.io/" target="_blank">https://colorspraygames.itch.io/</a><br><br>Nevyn Holmes<br>Twitter: <a href="https://twitter.com/ForkTwenty" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@ForkTwenty</a> | <a href="https://www.nevyn.games/" target="_blank" class="" rel="nofollow noopener" referrerpolicy="origin">https://www.nevyn.games/</a></p>
<p>Korben Dennis<br>Twitter: <a href="https://twitter.com/KorbenDennis" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@KorbenDennis</a> | <a href="https://www.korbendennis.com/" rel="nofollow noopener" referrerpolicy="origin">https://www.korbendennis.com/</a><br><br>Alex Guerrero<br>Twitter: <a href="https://twitter.com/AFractalDragon" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@AFractalDragon</a> | <a href="https://fractaldragon.itch.io/" target="_blank">https://fractaldragon.itch.io/</a><br><br>J.R. Zambrano<br>Twitter: <a href="https://twitter.com/jrrmungandr" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@jrrmungandr</a> | <a href="https://www.belloflostsouls.net/author/jayarr" target="_blank" class="" rel="nofollow noopener" referrerpolicy="origin">https://www.belloflostsouls.net/author/jayarr</a><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/M-5CDX1UK8U" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTc3MDM3LzY1NzQzMzkucG5n/original/9%2FRkZ9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc3MDM3LzY1NzM1OTUucG5n/original/%2B2dKVG.png]]
<p><em>Tag walls, defy the authority, do cool tricks !</em></p>
<p><strong>Kickflip the Hierarchy</strong> is my first TTRPG ever written. A short and fun project started because of the severe lack of Jet Set Radio inspired TTRPGs. So... I just made my own !<br></p>
<p>It fits in less than 10 pages and is easy enough to play. Lots of liberty given to the Game Master and Players, as the World Building phase should set most agreements on the universe and tone of the game.</p>
<p>Also, it's written in English and in French, you'll find both versions in the downloads !</p>
<p>Future updates may include changes in flavor texts, maybe esthetic improvements to the page layouts, a cool cover... this kind of things. <br><br></p>
<p>Thanks for reading, and thanks for the support !</p>
[img width=500 [https://img.itch.zone/aW1nLzQxNzI2MzcucG5n/original/0ZT7pJ.png]]
<p>Aster has been bringing Cordie on wilderness canoe camping trips all summer. Magic is afoot in the woods during their nightly campfire, but talk keeps returning to real life looming on the horizon.<br></p>
<p>Features: Campfire ambience, fear of unknown, forest spirits, loons. </p>
<p><em>Language: English</em><strong><img src="https://img.itch.zone/aW1nLzUwNTc0MzUucG5n/original/sg43X8.png" loading="lazy">K</strong><strong>INDLING SPIRITS</strong> is my first video game. It's a simple visual novel with several dialogue choices, one ending, and about 10-15 minutes of gameplay. </p>
<p>The game is free to play! If you choose to pay $2 or more, you can support me as a creator and get a digital art book PDF containing the art from the game, concepts and production notes. <br></p>
<p>I love making games, and I'm excited to develop the much larger sequel to <strong>KINDLING SPIRITS</strong> - coming soon-ish. </p>
<p>If you enjoyed this game, please consider supporting my continued game dev work on <a href="https://ko-fi.com/alliemackie" rel="nofollow noopener" referrerpolicy="origin">Ko-fi</a><span></span> or <a href="https://www.patreon.com/alliemackie" rel="nofollow noopener" referrerpolicy="origin">Patreon</a><span></span>! <img src="https://img.itch.zone/aW1nLzUwNTc0MzQucG5n/original/jp9jNh.png" style="color: inherit; font-size: inherit" loading="lazy"><span></span><strong>CREDITS<br></strong>Story, Coding & Art: <a href="https://alliemackie.itch.io/" target="_blank" style="font-size: inherit">Allie<br></a>Music and SFX: <a href="https://pocket-se.info/" target="_blank" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">Pocket Sound</a> & <a href="https://orangefreesounds.com/" target="_blank" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">orangefreesounds</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/RuzVGNTSIDo" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODIyNzAwLzUwNDg0NjEuanBn/original/ktNCCw.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODIyNzAwLzUwNDg0NjIuanBn/original/ZnC4F4.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODIyNzAwLzUwNDg0NjMuanBn/original/NpY7jq.jpg]]
<h2>The year is 1986.</h2>
<p>In the 18 years since the alien outworlders first made contact with humanity, the hypercapitalism of the Second Industrial Revolution has brought about an unstoppable climate apocalypse.</p>
<p>The remaining disparate landmasses of Earth are now connected over the radioactive sea by great bridges known as Ultrahighways. These treacherous asphalt frontiers, crawling with violent motorcycle clubs, are all that separates you and your gang from bringing a mysterious alien artifact to the People’s Resistance: humanity’s last hope to wrench itself from beneath the bootheel of the global military police and the reign of the God-King Ronald Reagan.</p>
<p>Navigate the Ultrahighways, evade the MP, and withstand ravaging superstorms with nothing but your gang, your cycle, and a mission: deliver the artifact at all costs.</p>
<p>KISHU is a tabletop roleplaying game made for Zine Quest 2, 2019. It is available on itch via this page in digital format or in physical paperback form on <a href="https://www.drivethrurpg.com/product/319947/KISHU" rel="nofollow noopener" referrerpolicy="origin">DriveThruRPG</a>.</p>
[img width=500 [https://img.itch.zone/aW1nLzQ5NDQ2MzYucG5n/original/z2tZYt.png]]
<p>This 2-player LARP is about kissing and being queer and resisting fascism. Love cannot always conquer all, but it is better to be with the people you love than to let them win. PUNCH NAZIS</p>
<p><br></p>
<p>Use enthusiastic consent when playing this game, and make sure to look out for your own emotions and the emotions of other players.</p>
[img width=500 [https://img.itch.zone/aW1nLzIwNjM5MjAucG5n/original/HE4lEY.png]]
<p>Kiwi is a three level auto-scroller that focuses on the endless adventure during which the player must help maneuver the bird in order to dodge environmental obstacles whilst trying to not get killed by enemies! The powerup store gives the player an opportunity to utilize the coins collected throughout the game as well as a greater chance to get higher scores on the leaderboard. Players can also get information regarding the featured endangered species they will encounter throughout the game!</p>
<p><strong><em>Credit</em></strong>
</p>
<ol><li>Felix Situ: Lead Programmer, Particle Effects Artist, Level Designer
</li><li>Connor Bryant: 3D Modeler, Animator, Programmer
</li><li>Karla Galue Colmenares: UI Artist, Programmer, Post-Production Game Tester, Marketing Director
</li><li>Shaylynn Morphew: Main Artist, Animator, Programmer
</li><li>Zachary Chiappini: Music Director, Programmer, Post-Production Game Tester
</li><li>Rochishni Kolli: Game Producer, Art Director, Level Designer, Marketing Director
</li></ol>
<iframe width="720" height="450" src="https://www.youtube.com/embed/hHLajlo2rPU" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA3Mzg3Ni82MTU2NTkzLnBuZw==/original/KCHxON.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA3Mzg3Ni82MTU2NTk1LnBuZw==/original/UlnPah.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA3Mzg3Ni82MTU2NTk2LnBuZw==/original/CdfBR2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA3Mzg3Ni82MTU2NTk0LnBuZw==/original/PLkkBW.png]]
<p>Knight & Damsel is a two-player "uncooperative" multiplayer game set on a papercraft stage that subverts the age-old tale of knights saving damsels, with the knight and damsel competing to rescue the other!<br><br>In Knight & Damsel, players attempt to delay their opponent so their chosen hero can receive the most glory by getting the furthest through the stage. They do this by throwing blocks on to their opponents screen, warping the fourth wall between 2D screen and world space. Blocks have the ability to delay or knock back their opponent, with snow avalanches to pursuing ghosts at hand to ensure you can get the lead in the race.<br><br>Compete as Knight and Damsel across four stages in the campaign mode, or simply kick back and enjoy the full selection of blocks via the arcade mode. Knight & Damsel offers a competitive twist on the Damsel in Distress trope, fun for all ages.<span></span></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/LEIOEv-oopc" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzE4MTEvMTM0OTgxLnBuZw==/original/PeDHia.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzE4MTEvMTM0OTgyLnBuZw==/original/7WyU70.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzE4MTEvMTM0OTgzLnBuZw==/original/vivHMS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzE4MTEvMTM0OTg0LnBuZw==/original/YE%2FeTa.png]]
<p>
Knights is a battle card game for two players that uses a standard playing card deck with 54 cards.
</p>
<p>
Each player builds a "knight" using the values and suits of the cards and does battle with the other player by pitting sets of cards against their opponent. The first player to reduce their opponent's knight's Hit Points to 0 is the winner. </p>
<p>
<br>
</p>
<p>
<small>This game was originally created during the
<a href="http://itch.io/jam/my-first-game-jam" target="_blank"><strong>My First Game Jam</strong></a> jam, and you can find all previous versions of the rules on the <strong><a href="http://alamantus-gamedev.itch.io/knights-jam-version" target="_blank">jam submission page</a></strong> plus see the notes that go with them on the <a href="http://itch.io/jam/my-first-game-jam/topic/13178/devlog-knights" target="_blank"><strong>jam community devlog</strong></a>.</small>
</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDk4MTAvMjE4NzA5LnBuZw==/original/w%2B7QHc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk4MTAvMjI1MDc0LmpwZw==/original/FHBtjq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk4MTAvMjE4Mjk1LnBuZw==/original/T0Y9by.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk4MTAvMjE5NTYwLnBuZw==/original/akEMqT.png]]
<p><strong>Meteor launching team building arcade action!</strong><br>Clear the roads and defend the citizens of a magical torus for as long as you can.</p>
<ul><li>Time meteor launches for maximum impact and high scoring chains.</li><li>Deal with ten different enemy types that fly, bounce, teleport, and use magic.</li><li>Travel to peaceful towns, noble keeps and desert temples, all in a convenient loop.</li><li>Spend gold to hire allies and upgrade guards.</li><li>Let your allies head off to adventure! Pick them up on the next loop and they'll grow in power.</li><li>Dynamic music that changes with party size and danger level.</li><li>Clicktastic single button gameplay. </li><li>Dunk on your potato friends with real live Leaderboards, powered by Dreamlo</li></ul>
<p>Created in 48 hours for Ludum Dare 47. DocJekyll and I decided to team up this time around, though we only had 48 hours to do the work. We are submitting this to the Jam but used the Compo time constraints, please take note of our courage and valor.<br></p>
<p>The idea was riffing off of Missile Command, an arcade classic. Enemies approach, you fire shots with a travel time and a lasting damage zone, trying to scoop up as many targets as you can in one hit. Things get hectic before too long, with your team filling up with pirates, archers, and axemens, all trying to clear out an array of ever more mobile and clever enemies.</p>
<p>Letting enemies pass you will eventually bring you defeat. Waves are trips between towns, and if you begin a wave having let too many enemies pass you in the wave prior, you are in a sudden death mode where only a handful of misses can end the game. If you make it through, some of the pressure is off, so keep at it.</p>
<p>Sometimes your hired allies will ask to leave the party and go on a quest. If you manage to make it through a whole loop and return to where you left them, they'll rejoin you with vastly improved power. Or, you could just sacrifice one of them at the blood altar in case you're doing really poorly and need to take some heat off. </p>
<p>Every note of music was from Doc's laboratory. He actually wrote ten layered tracks that blend in and out as the party size changes, towns are visited, and the danger level increases.</p>
<p>Some of the art is derived from Oryx's excellent Tiny Fantasy set. Very little was used as-is: we animated, modified, and built all new content out of the base. However, Oryx's work was absolutely a springboard for us and so we've recused ourselves from the Graphics category.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzc4NTY5LzQzNTUyNDIuZ2lm/original/asPUu1.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc4NTY5LzQzNTUyMjQucG5n/original/hIOAF3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc4NTY5LzQzNTUyMjcuZ2lm/original/Uvy71n.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc4NTY5LzQzNTUyMjUucG5n/original/2NL0tT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc4NTY5LzQzNTUyMjYucG5n/original/3DwDmJ.png]]
<p><em><strong>La Mancha </strong></em><strong>is a storytelling card game for 3-5 players based on Miguel de Cervantes' literary classic, </strong><em><strong>Don Quixote! </strong><br></em><br></p>
<p>Players take turns revealing the steps of an epic journey: everything from angry innkeepers to virtuous love interests. To overcome each challenge, players use Chivalry cards in their hand (based on books that Don Quixote read in the novel) to tell stories of their deeds, with the best storyteller winning strength-enhancing Treasure cards. Players can then use these Treasures to perform great Feats such as slaying fearsome giants (or are they windmills?) and dueling their rivals. The player who has performed the most Feats by the end of the game is the winner!</p>
<p>THIS IS THE PRINT-AND-PLAY EDITION! Physical copies are also available at: <a href="https://www.pfbstudios.com/product/la-mancha-physical-game/" rel="nofollow noopener" referrerpolicy="origin">https://www.pfbstudios.com/product/la-mancha-physical-game/</a><br></p>
<p><strong>Features</strong></p>
<ul><li>Live the adventures of the famous Don Quixote de La Mancha in over 30 scenarios based on the classic novel!</li><li>Compose your own knigtly tales with 90 powerful Chivalric phrases.</li><li>Woo one of 16 loves, each with special abilities!</li><li>Wield 50 mighty treasures: weapons, armor, helmets, shields, and steeds.</li><li>Win the game and become the most renowned knight in the land by overcoming 16 dastardly feats!</li></ul>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/lTwz_eN_w1c" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjY0NDUwLzM1ODM0MzkuanBn/original/ol0YPl.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0NDUwLzM1ODM0NTYucG5n/original/gZVTFB.png]]
<h2>Landlord of the Woods</h2>
<p><br>you're 25.</p>
<p>you feel like all of your peers are ahead of you in life.</p>
<p>you apply for a new job to try to find some sort of meaning. your new career is filled with physics-based puzzles, hand drawn art & a tender little story.</p>
<p>make a soup, do science and organize pointless things.</p>
<p><br>Landlord of the Woods is a cute lil point & click game that takes about an hour to play through.<br>my name is madison karrh and I made this little game - i absolutely adore that you would play something a stranger made.</p>
<figure><br><img src="https://img.itch.zone/aW1nLzU0NDc1NDcuZ2lm/original/KpTnGj.gif" loading="lazy"></figure>
<iframe width="720" height="450" src="https://www.youtube.com/embed/0eV1qdHfzy0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTYwMzQ4LzU0NDc0NjIuanBn/original/j%2ByEJd.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYwMzQ4LzU0NDc0NjAuanBn/original/VlD2j%2F.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYwMzQ4LzU0NDc0NTkuanBn/original/hOJ8in.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYwMzQ4LzU0NDc0NTUuanBn/original/t%2F873%2F.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYwMzQ4LzU0NDc0NTQuanBn/original/tpJix0.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYwMzQ4LzU0NDc0NjEuanBn/original/Uu12jq.jpg]]
<p>Just your basic pong game but with lasers and power ups and explosions and stuff like that. Play against the computer, or against another local human. <br></p>
<p>10 different game modes are included!</p>
<p><br></p>
<p>Note: I made a build for MacOS, but it is extremely untested. No promises that it'll work, but if you try it, let me know how it goes.<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/Lb8ovW5D20k" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzE2MTExLzIxMTMzODMucG5n/original/OTmj1F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzE2MTExLzIxMTMzODQucG5n/original/O7QsYB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzE2MTExLzIxMTMzODUucG5n/original/o9owZ%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzE2MTExLzIxMTMzODYucG5n/original/Tk3O3%2B.png]]
<p>
Last Knight is over-the-top non-stop jousting action in a beautiful brutal fantasy world!
It comes with bucketloads of content and is inspired by outstanding third-person platformers like Crash Bandicoot.
It uses the Unreal Engine to bring it all to live... </p>
<p><strong>Key Features:</strong>
</p>
<ul>
<li><strong>OVER-THE-TOP JOUSTING!</strong> -
Countless enemies had been shot, hacked and slashed in the history of
games. Now it is time to ram a wooden lance in some gut, send your foes
flying, and watch them bite the dust! Body parts ripping off, ragdoll
horse physics, and destructive environments included. </li></ul>
<ul><li><strong>A BEAUTIFUL BRUTAL WORLD</strong> –
Dive into a magical fantasy world full of treasures and adventures!
Don't be fooled by the cartoony looks: here, simply bumping into a silly
wooden fence spells a sudden end to your hero's life. If you fancy
dying in a more heroic way, how about getting swallowed by a giant toad,
falling into a lava pit, exploding from eating too much turkey, getting
impaled by a Hitler Snowman, or just getting lit on fire by a dragon! </li></ul>
<ul><li><strong>BUCKETLOADS OF CONTENT</strong> –
Divided into three major parts - the Story Mode, the Endless Journey
Mode and the Rogue Rider Mode - this game has a lot to offer and there
is always something new to accomplish, find, or unlock. Power-ups,
characters, view modes, mutators, quests, game mode variations, randomly
generated hats, you name it! Did you ever wish to be a skeleton king
with a fancy wig riding over rainbows on a flower-pooping pink unicorn?
It's all up to you in this game! </li></ul>
<ul><li><strong>INSPIRED BY CRASH BANDICOOT</strong> –
Good third-person platformers were always hard to find on PC, when
consoles sport countless shining examples: the first Crash Bandicoot
titles, Spyro, Ratchet & Clank, and Super Mario were all a big
inspiration for Last Knight. This game kicks it up a notch with non-stop
jousting action, no-health instant death, procedurally-generated
worlds, as well as custom-crafted levels with Knightmare levels
in-between. To top it off, the new Rogue Rider Mode pushes it all into a
rogue-like direction, and if you don't like third-person view, try
playing in first-person mode! </li></ul><p>Follow Toco Games on Twitter: <a href="https://twitter.com/TocoGamescom" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/TocoGamescom</a><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/pQhBR_X7YbA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjcwLzEwNzkucG5n/original/ItbqkI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcwLzEwODAucG5n/original/tJue1L.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcwLzEwODEucG5n/original/0bExCd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcwLzEwODIucG5n/original/p2ilBU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcwLzEwODMucG5n/original/7kpRj3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcwLzE2NzkzLnBuZw==/original/SJPm9u.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcwLzE2Nzk0LnBuZw==/original/UhkkFU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcwLzE2Nzk1LnBuZw==/original/gLewsN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcwLzE2Nzk2LnBuZw==/original/BuyBuq.png]]
<p class="text-center"><em>The Cursed Earth is a sparse, dry, and warped place.<br>Distorted by the dread wars of old.<br>The Skirmishes that followed.<br>And the Road Wars of the present.<br><br>The Knights of the Circle use to protect people.</em></p>
<p class="text-center"><em>They rode into battle against the forces of darkness in super-charged V8s<br></em><em>They spared no expense when rendering aid<br>Gave out bullets and food to them that needed which<br>They slew monsters with magic sword in hand<br><br>Their king, Arthur Victorious swore them to service.<br>Their rolling fortress, Turbo-Camelot, defended the weak.<br>Sword Priests, Gun Saints, & Drag Demons...<br>They all fought for us.<br><br>Everyone said they were now gone to Ol'Avalon...<br><br>But Fuck That Noise!<br>Pick up the sword, load your six shooter, and grab your fucking keys partner.<br>You're the Last Knights On Earth and <span class="">Myrddin </span>has one last quest for you.</em></p>
<p class="text-center">***<span></span></p>
<p class="text-center">Last Knights On Earth is a pulp adventure micro RPG. <br>It's about Knights, Cowboys, and Furious Drivers, all on a mission from god.<br>Partially based on <em>Big Mutherfuckin’ Crab Truckers</em>.<br>Last Knights On Earth tells fast stories.</p>
<p class="text-center">***</p>
<p class="text-center">Included in your purchase are 2 versions of the game.<br>Version 1 has the original text and is formated for PDF readers.<br>Version 4 (replaces version 3) has revised text, mechanics, and is a zine format.<br>***<br>Thank you to <em>The Coalition of Friendship </em>and <em>Fenced Forest, </em>for listening to me.<br>Inspired by Sturgill Simpson's Visual Album - SOUND & FURY<br><br>***<br>Buying this work above it's asking price will unlock more community copies for those facing financial hardship.<br><span></span></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTQ5NTI1LzMzODk4NTEucG5n/original/DnHrsK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ5NTI1LzMzODk4NzkucG5n/original/HOM6ly.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ5NTI1LzMzODk4NTAucG5n/original/k8MqYR.png]]
<p class="text-center"><em>The Cursed Earth is a sparse, dry, and warped place.<br>Distorted by the dread wars of old.<br>The Skirmishes that followed.<br>And the Road Wars of the present.<br><br>The Knights of the Circle use to protect people.</em></p>
<p class="text-center"><em>They rode into battle against the forces of darkness in super-charged V8s<br></em><em>They spared no expense when rendering aid<br>Gave out bullets and food to them that needed which<br>They slew monsters with magic sword in hand<br><br>Their king, Arthur Victorious swore them to service.<br>Their rolling fortress, Turbo-Camelot, defended the weak.<br>Sword Priests, Gun Saints, & Drag Demons...<br>They all fought for us.<br><br>Everyone said they were now gone to Ol'Avalon...<br><br>But Fuck That Noise!<br>Pick up the sword, load your six shooter, and grab your fucking keys partner.<br>You're the Last Knights On Earth and <span class="">Myrddin </span>has one last quest for you.</em></p>
<p class="text-center">***<span></span></p>
<p class="text-center">Last Knights On Earth is a pulp adventure micro RPG. <br>It's about Knights, Cowboys, and Furious Drivers, all on a mission from god.<br>Partially based on <em>Big Mutherfuckin’ Crab Truckers</em>.<br>Last Knights On Earth tells fast stories.</p>
<p class="text-center">***</p>
<p class="text-center">Included in your purchase are 2 versions of the game.<br>Version 1 has the original text and is formated for PDF readers.<br>Version 5(replaces version 4) has revised text, mechanics, and is a zine format. As well as adding a new role to play as. <br>***<br>Thank you to <em>The Coalition of Friendship </em>and <em>Fenced Forest, </em>for listening to me.<br>Inspired by Sturgill Simpson's Visual Album - SOUND & FURY<br><br>***<br>Buying this work above it's asking price will unlock more community copies for those facing financial hardship.<br><span></span></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTQ5NTI1LzMzODk4NTEucG5n/original/DnHrsK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ5NTI1LzMzODk4NzkucG5n/original/HOM6ly.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ5NTI1LzMzODk4NTAucG5n/original/k8MqYR.png]]
<p>Two pilots can change your destiny. Two massive war machines can change your future. Two players can share the happiness.</p>
<p>Last Shooting is a 2-player RPG that uses a unique system to tell stories about Mech battles. Using a customized version of the Final Bid engine, Last Shooting builds the characters and defines them more sharply during each scene of play. Then, it gives you the power to destroy any of those aspects to propel yourself to victory.</p>
<p>Last Shooting is meant for single session play, and tends to take 2-3 hours. And it provides the flexibility for no two sessions to play out the same way.</p>
<p>Define your pilot, and destroy them in turn. The battle hinges on what remains.</p>
<p><br></p>
<p>Spreadsheet template version of the DATAFILE, byJulianne Hardstone: <a href="https://tinyurl.com/LastShootingGoogledoc" rel="nofollow noopener" referrerpolicy="origin">https://tinyurl.com/LastShootingGoogledoc</a></p>
<p>Cover by Simon Sweetman <a href="https://sisweetman.artstation.com/" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">https://sisweetman.artstation.com/<br></a>Layout and Editing by Jacob Randolph <a href="https://liberigothica.itch.io/" style="font-size: inherit">https://liberigothica.itch.io/</a></p>
<p>Last Shooting is licensed under the Creative Commons Attribution-Share-A-like<br>4.0 International License<br><a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode" rel="nofollow noopener" referrerpolicy="origin">https://creativecommons.org/licenses/by-sa/4.0/legalcode</a><br>Last Shooting uses and adapts material from Final Bid by Jacob Randolph<br>(also licensed under CC BY-SA 4.0)</p>
<p><br></p>
<p><strong>Podcast Appearances</strong></p>
<ul><li><strong><a href="https://www.sixfeatsunder.com/bonus-feats/lastshooting" rel="nofollow noopener" referrerpolicy="origin">Six Feats Under</a></strong></li><li><u><strong><a href="https://anchor.fm/one-shot-test-kitchen/episodes/Episode-10-1---Last-Shooting-Gameplay-empo2m" target="_blank" rel="nofollow noopener" referrerpolicy="origin">One Shot Test Kitchen</a></strong></u></li></ul>
[img width=500 [https://img.itch.zone/aW1nLzM1NTQxNTYuanBn/original/rJWwjG.jpg]]
<p><strong>* Part 1 files are free - look for the 'demo' files at the end of this page. *</strong></p>
<p><strong>*Want a physical tape copy you can hug? Buy one <a href="https://www.bitmapsoft.co.uk/product/last-train-to-tranz-central/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">here</a> from Bitmapsoft!*</strong></p>
<p><strong>Welcome to Last Train to Tranz-Central, a two-part run 'n' gun adventure for the beloved ZX Spectrum! :D</strong></p>
<p><strong><br></strong></p>
<p><strong>Part I: All aboard the Space Train!</strong><br></p>
<p>In the Wild West frontier of the future, Space Trains race across the stars, piloted by powerful next-gen Artificial Intelligence (A.I.) with a whopping 48k of memory each.</p>
<p>I know!</p>
<p>Tech this advanced always goes wrong (right?). Following a hook up with incompatible peripherals at a remote space (train) station, the A.I.s have become corrupted and sent several Space Trains on a crash course with populated planets!</p>
<p>It’s up to Maurice, The Space Cowboy, to reach the rogue A.I. in each train’s engine room before the outposts become a crater the size of Nebraska…</p>
<p>Each train is now the last train… unless you succeed!</p>
<p><br></p>
<p><strong>Part II: The return of the Space Cowboy</strong></p>
<p>Tranz-Central is saved! But small splinters of code have infected four more trains, heading towards brand new targets.</p>
<p>New and old enemies are on board to stop anyone interfering.</p>
<p>But the Space Cowboy has returned, leaping from train to train, striving to put right what might go wrong.</p>
<p>Hoping each time that the next train will be the train home…</p>
<p><a href="https://planetasinclair.blogspot.com/2020/08/last-train-to-tranz-central.html" target="_blank" rel="nofollow noopener" referrerpolicy="origin">PlanetaSinclair gave a score of 8/10</a> for this game! Thanks! :D</p>
<p><a href="https://youtu.be/-fFIxMzT3QM?t=1262" target="_blank" rel="nofollow noopener" referrerpolicy="origin">The Spectrum Show</a> said: "It's quite a nice game, this. Very enjoyable."</p>
<p>\o/</p>
<p>FEATURES:</p>
<p>* A two-part Run 'n' Gun game for the ZX Spectrum</p>
<p>* 64 levels in total across 8 unique Space Trains (each part has 32 levels, spread across 4 trains)</p>
<p>* 8 Rogue AI bosses to defeat or escape from.</p>
<p>* 128k versions feature cosmic music by Yerzmyey<br></p>
<p>* Multiple enemies - some you can shoot, some you can't, all will kill you /o\</p>
<p>* Keys: QAOP and Space - can be redefined</p>
<p>* Kempston Joystick Support</p>
<p>* Each part has its own loading screen/presentation/music</p>
<p>* Colour clash! \o/</p>
<p>* Made with Multi-Platform Arcade Game Designer (MPAGD) by Jonathan Cauldwell</p>
<p>* Possible port to other systems thanks to being made with MPAGD</p>
<p>* From the Sheep that made<a href="https://quantumsheep.itch.io/jumpin-jupiter" target="_blank">Jumpin' Jupiter</a> :)</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/N8nPnacc7is" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MTQzLzQwMDA2NjEucG5n/original/clnj5Q.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MTQzLzQwMDA2NzIucG5n/original/BcgcCN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MTQzLzQwMDA2NjQucG5n/original/XxdmmF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MTQzLzQwMDA2NjIucG5n/original/NEe6k6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MTQzLzQwMDA2NjgucG5n/original/MvPW9e.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MTQzLzQwMDA2NjYucG5n/original/f%2BZ3ot.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MTQzLzQwMDA2NjUucG5n/original/vKmHTb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MTQzLzQwMDA2NjkucG5n/original/%2Bm6Mm3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MTQzLzQwMDA2NjMucG5n/original/X3ViUu.png]]
<p><strong>* Part 1 files are free - look for the 'demo' files at the end of this page. *</strong></p>
<p><strong>*Want a physical tape copy you can hug? Buy one <a href="https://www.bitmapsoft.co.uk/product/last-train-to-tranz-central/" target="_blank" rel="nofollow noopener">here</a> from Bitmapsoft!*</strong></p>
<p><strong>Welcome to Last Train to Tranz-Central, a two-part run 'n' gun adventure for the beloved ZX Spectrum! :D</strong></p>
<p><strong><br></strong></p>
<p><strong>Part I: All aboard the Space Train!</strong><br></p>
<p>In the Wild West frontier of the future, Space Trains race across the stars, piloted by powerful next-gen Artificial Intelligence (A.I.) with a whopping 48k of memory each.</p>
<p>I know!</p>
<p>Tech this advanced always goes wrong (right?). Following a hook up with incompatible peripherals at a remote space (train) station, the A.I.s have become corrupted and sent several Space Trains on a crash course with populated planets!</p>
<p>It’s up to Maurice, The Space Cowboy, to reach the rogue A.I. in each train’s engine room before the outposts become a crater the size of Nebraska…</p>
<p>Each train is now the last train… unless you succeed!</p>
<p><br></p>
<p><strong>Part II: The return of the Space Cowboy</strong></p>
<p>Tranz-Central is saved! But small splinters of code have infected four more trains, heading towards brand new targets.</p>
<p>New and old enemies are on board to stop anyone interfering.</p>
<p>But the Space Cowboy has returned, leaping from train to train, striving to put right what might go wrong.</p>
<p>Hoping each time that the next train will be the train home…</p>
<p><a href="https://planetasinclair.blogspot.com/2020/08/last-train-to-tranz-central.html" target="_blank" rel="nofollow noopener">PlanetaSinclair gave a score of 8/10</a> for this game! Thanks! :D</p>
<p><a href="https://youtu.be/-fFIxMzT3QM?t=1262" target="_blank" rel="nofollow noopener">The Spectrum Show</a> said: "It's quite a nice game, this. Very enjoyable."</p>
<p>\o/</p>
<p>FEATURES:</p>
<p>* A two-part Run 'n' Gun game for the ZX Spectrum</p>
<p>* 64 levels in total across 8 unique Space Trains (each part has 32 levels, spread across 4 trains)</p>
<p>* 8 Rogue AI bosses to defeat or escape from.</p>
<p>* 128k versions feature cosmic music by Yerzmyey<br></p>
<p>* Multiple enemies - some you can shoot, some you can't, all will kill you /o\</p>
<p>* Keys: QAOP and Space - can be redefined</p>
<p>* Kempston Joystick Support</p>
<p>* Each part has its own loading screen/presentation/music</p>
<p>* Colour clash! \o/</p>
<p>* Made with Multi-Platform Arcade Game Designer (MPAGD) by Jonathan Cauldwell</p>
<p>* Possible port to other systems thanks to being made with MPAGD</p>
<p>* From the Sheep that made<a href="https://quantumsheep.itch.io/jumpin-jupiter" target="_blank">Jumpin' Jupiter</a> :)</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/N8nPnacc7is" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MTQzLzQwMDA2NjEucG5n/original/clnj5Q.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MTQzLzQwMDA2NzIucG5n/original/BcgcCN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MTQzLzQwMDA2NjQucG5n/original/XxdmmF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MTQzLzQwMDA2NjIucG5n/original/NEe6k6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MTQzLzQwMDA2NjgucG5n/original/MvPW9e.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MTQzLzQwMDA2NjYucG5n/original/f%2BZ3ot.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MTQzLzQwMDA2NjUucG5n/original/vKmHTb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MTQzLzQwMDA2NjkucG5n/original/%2Bm6Mm3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU3MTQzLzQwMDA2NjMucG5n/original/X3ViUu.png]]
<p>Dive into a new and unexpected take on golf games! In <strong>Lava Golf</strong> you do not control the golfer, instead <strong>you are the golf ball </strong>and your objective is to reach the end portal of each course without falling into the lava.</p>
<p>Armed with <strong>unexpected skills</strong> for a golf ball, like the ability to dash into the air or to hit the brakes to avoid falling off a platform, you will need to cross all the portal rings of a course to unlock its exit portal. Scattered across the course you'll also find precious experience spheres which will let you<strong> gain levels</strong> and grant <strong>skill points</strong> allowing you to <strong>unlock new incredible abilities</strong> and to enhance your existing ones!</p>
<p>Unlock unique skills, cross all the rings, and most importantly... <strong>DO NOT FALL INTO THE LAVA!</strong></p>
<p><img src="https://img.itch.zone/aW1nLzYwNDEzNTYucG5n/original/9%2BxXKZ.png" loading="lazy"></p>
<p><strong>The controls are simple</strong></p>
<p>Use your mouse to look around and pick a direction (or use your Left Stick if playing with a gamepad!)<br></p>
<p><strong>Space</strong> to perform an Air Dash and push yourself in the direction the camera is facing<br></p>
<p><strong>Left Ctrl</strong> to perform an Air Brake, to stop yourself so you can land somewhere safe</p>
<p><strong>Space</strong> can also be used to perform a Ground Dash, to avoid falling in the lava or to snatch some experience spheres</p>
<p><strong>E/R/D/F</strong> to use the powerful unlockable abilities like Time Freeze, Emergency Jump and others...<br></p>
<p><strong>Backspace</strong> to PAUSE the game<br><br><strong>ESC</strong> to go back to the main menu<br><br>Detailed info on how to play can be found in the "HOW TO PLAY" screen, which includes an helpful video tutorial!<br></p>
<p><em><img src="https://img.itch.zone/aW1nLzYwNDEzNTgucG5n/original/9raC7o.png" loading="lazy"></em></p>
<p>This game is the first work of <strong>Hexagonal Experiences Inc.</strong> a two person indie dev team. A collaborative effort between me as a Coder/Game Designer and my good friend <strong>Atb4sh </strong>as an Artist/Level Designer. <br></p>
<p>Music: <a href="https://incompetech.filmmusic.io/song/5741-gothamlicious" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Gothamlicious</a>, <a href="https://incompetech.filmmusic.io/song/5048-stay-the-course" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Stay The Course</a> and <a href="https://incompetech.filmmusic.io/song/4277-retrofuture-clean" target="_blank" rel="nofollow noopener" referrerpolicy="origin">RetroFuture Clean</a> by Kevin MacLeod.<br>License: <a href="http://creativecommons.org/licenses/by/4.0/" rel="nofollow noopener" referrerpolicy="origin">http://creativecommons.org/licenses/by/4.0/</a></p>
<p><img src="https://img.itch.zone/aW1nLzYwNDEzNjAucG5n/original/hi%2Bz7t.png" loading="lazy"><br></p>
<p><strong>Tips and Tricks</strong><br></p>
<ul><li>Try to pay attention to the camera overview when starting a new level. While it won't necessarily show you the way, knowledge of the map layout is very important to win!</li><li>Skills that allow you to try again a level are very important, especially when you try a level for the first time.</li><li>Plan your upgrades in advance. Having the right skill or the right powerup will definitely help down the road!</li><li>When first starting out, try not to go too much off the beaten path to get X Spheres. Some are really hard to get!</li><li>You can watch a video tutorial inside the game or <a href="https://twitter.com/GolfLava/status/1387329308696449024" target="_blank" rel="nofollow noopener" referrerpolicy="origin">on our Twitter account</a> and in the How to Play screen in game!</li></ul>
<p><img src="https://img.itch.zone/aW1nLzYwNDEzNjIucG5n/original/QPtN2T.png" loading="lazy"><br></p>
<p><strong>Install instructions</strong><br></p>
<ol><li>Download the installer</li><li>Double click on the installer</li><li>Enjoy the game, you'll find it in your Start Menu and in your Desktop!</li></ol>
<p><em><img src="https://img.itch.zone/aW1nLzYwNDEzNjQucG5n/original/DkuM8D.png" loading="lazy"></em><em></em></p>
<p><strong>Giving Feedback</strong></p>
<p>Please, let us know what you think either posting comments in here, or reaching us via Lava Golf's <a href="https://twitter.com/GolfLava" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Twitter account</a></p>Have fun!<br>
<iframe width="720" height="450" src="https://www.youtube.com/embed/4W2vSAgpPUw" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTIyNjgwLzYwNDExNDAucG5n/original/Pu3YvT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyNjgwLzYwNDExMzcucG5n/original/oWHah%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyNjgwLzYwNDExNDMucG5n/original/Q6kdBr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyNjgwLzYwNDExMzkucG5n/original/3D%2F%2BzO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyNjgwLzYwNDExNDIucG5n/original/r1qcTL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyNjgwLzYwNDExMzgucG5n/original/9cwRQJ.png]]
<p>
<em><strong>LAZA KNITEZ!!</strong></em> is a fast-paced jousting deathmatch game for up to 4 players. Teleport to the neon-lit ALL CAPS technofuture and challenge your friends to mind-blowing hypercombat. Fire your laser-lance from a distance, get up close and personal to empale your foes and use 7 different power-ups to your tactical advantage.</p><p><a href="https://kotaku.com/after-being-98-off-for-5-years-this-indie-game-is-goi-1839102909" rel="nofollow noopener" referrerpolicy="origin">Read about why the game is 100$ in this article</a></p>
<p>
<a href="https://joon.be/glitchnap/press/LAZA_KNITEZ/images/b-intro.gif" data-image_lightbox="true" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzM2MDg1MzQuZ2lm/original/jIm09U.gif" loading="lazy"></a></p>
<figure><a href="https://joon.be/glitchnap/press/LAZA_KNITEZ/images/b-intro.gif" data-image_lightbox="true" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzM2MDg1MzYuZ2lm/original/v2q4tR.gif" loading="lazy"></a></figure>
<p><strong>CREDITS</strong></p>
<ul><li>Design & Development: <a href="http://www.glitchnap.com" style="background-color: initial" rel="nofollow noopener" referrerpolicy="origin">Glitchnap</a></li><li>Art: <a href="http://dominikjohann.de/" style="background-color: initial" rel="nofollow noopener" referrerpolicy="origin">Dominik Johann</a></li><li>Sound: <a href="http://salkinitzor.bandcamp.com/" style="background-color: initial" rel="nofollow noopener" referrerpolicy="origin">Niklas Ström</a></li><li>Additional help by Nifflas, YAC, HaxeFlixel</li></ul>
<p><a href="http://salkinitzor.bandcamp.com/" rel="nofollow noopener" referrerpolicy="origin"></a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/zOUFKyK1aMA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTE2ODgvMzY2MzEucG5n/original/2gdahl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE2ODgvMzY2MzIucG5n/original/Tqbla3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE2ODgvMzY2MzMucG5n/original/zembZD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE2ODgvMzY2MzQucG5n/original/pvYOF8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE2ODgvMzY2MzUucG5n/original/jyMZAj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE2ODgvMzY2MzYucG5n/original/cvSMAV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE2ODgvMzczODMucG5n/original/BYRbud.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE2ODgvMzczODYucG5n/original/fbKhV8.png]]
<p>The complete 3 disk OST to Learn Japanese To Survive: Kanji Combat!</p><p>Follow me!<br>SoundCloud: <a href="https://soundcloud.com/alecshea" rel="nofollow noopener" referrerpolicy="origin">https://soundcloud.com/alecshea<br></a>BandCamp: <a href="https://alecshea.bandcamp.com/" rel="nofollow noopener" referrerpolicy="origin">https://alecshea.bandcamp.com/</a><br>Twitter: <a href="https://gate.sc/?url=http%3A%2F%2Ftwitter.com%2FSlaleky&token=34ef52-1-1592041901391" target="_blank" title="http://twitter.com/Slaleky" rel="nofollow noopener" referrerpolicy="origin">twitter.com/Slaleky</a><br>Facebook: <a href="https://gate.sc/?url=http%3A%2F%2Fwww.facebook.com%2Falecsheamusic&token=e51283-1-1592041901392" target="_blank" title="http://www.facebook.com/alecsheamusic" rel="nofollow noopener" referrerpolicy="origin">www.facebook.com/alecsheamusic<br></a></p>
[img width=500 [https://img.itch.zone/aW1nLzM1MDc5NDcuanBn/original/12bM%2FO.jpg]]
<p>Hey! This is a small thing I wrote for a jam, and it had a lot of personal stuff in it, but somehow I think it might make someone feel seen. I hope so. In this zine, I talk about my experience with PMDD (Pre-Menstrual Dysphoric Disorder), self-image, identity and, of course, punk music.</p>
<p class="text-center"><strong>Content warnings are as follows:</strong></p>
<p class="text-center"><strong>Discussion of medical trauma, depression, mental health, mood swings, and treatment of AFAB people in medical settings.</strong></p>
<p class="text-center"><strong>I advise caution if these topics trigger you, but I think nothing here goes beyond what is touched upon in Riot Grrrl lyrics and discussions. </strong></p>
<p>I would like to say that if you are a person that has PMDD and feels alone, or powerless, 1- you are not alone and 2- take some time to rest, you are doing a great job. PMDD sucks, I know, but there will people to support you when things get tough.</p>
<p>This zine, like my previous one, was made using the wonderful <a href="https://alienmelon.itch.io/electric-zine-maker" target="_blank">Electric Zine Maker</a> by <a href="https://alienmelon.itch.io" target="_blank">alienmelon</a>! Thanks!</p>
[img width=500 [https://img.itch.zone/aW1nLzQ2NjAyNjUuanBn/original/%2BqBPoZ.jpg]]
<p><em><strong>Legend of Hand </strong>tells the story of a hero on an epic quest to find the mythical Grandmaster Hand, the one man who can restore peace to a troubled world. Inspired by adventure classics, Far-East legends and martial arts beat 'em up games of the 80's and 90's, this point and click adventure will take the player on a unique journey through magical lands.</em><br><br><strong>The Story<br></strong>Your masters have put their trust in you to find the mythical Grandmaster Hand, an enigmatic figure who disappeared many years ago. He is the one man capable of stopping the gathering unrest that is threatening your world. To find Hand you will need to travel through four mysterious islands, finding clues and challenging their infamous masters - the so-called Fingers of Hand! The masters are experts in martial arts and finding them will be not always be easy.<br><br>Your quest will take you on an epic adventure across unique islands and weird worlds where you will meet amazing friends and terrifying foes. So many distractions await but do not forget your aim - find Grandmaster Hand to save your world and its inhabitants!<br><br><em>Can you reunite a troubled world? Can you find the elusive Grandmaster Hand? Your destiny awaits...</em></p>
<p><strong>Features<br></strong>- An epic quest spanning many wonderful lands. Expect 10+ hours of game-play!<br>- An impressive cast of intriguing, bizarre, amusing and lovable characters. Expect to meet companions who will aid and follow you in your adventures!<br>- Traditional point and click adventure game elements such as puzzles, inventory system and dialogue interactions. <br>- Unique hand drawn graphics and animations.<br>- A turn-based RPG style fighting system that is easy to learn and fun to play. Learn new combat moves, increase your HP and fight enemies. <br>- Mini games galore!<br>- Animated cut scenes.<br>- Original soundtrack reflecting the atmosphere of the special worlds visited by the hero.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/RIh9QqIcSBs" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTc4NzM1LzgzNDgwNi5qcGc=/original/hFX%2BAh.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc4NzM1LzgzNDgwNy5qcGc=/original/OZ1Kei.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc4NzM1LzgzNDgwOC5qcGc=/original/oRPXRG.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc4NzM1LzgzNDgwOS5qcGc=/original/bbw%2By6.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc4NzM1LzgzNDgxMC5qcGc=/original/Qzx30z.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc4NzM1LzgzNDgxMS5qcGc=/original/aZYolZ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc4NzM1LzgzNDgxMi5qcGc=/original/G9A9fh.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc4NzM1LzgzNDgxMy5qcGc=/original/%2BSSH3E.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc4NzM1LzgzNDgxNS5qcGc=/original/rKOZFz.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc4NzM1LzgzNDgxNi5qcGc=/original/s5oXHN.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc4NzM1LzgzNDgxNy5qcGc=/original/szh80e.jpg]]
<p>According to legend, there was once a young hero who saved the dragon race from greed. That greed has now reincarnated itself into three monstrous fiends, who have stolen the last of the dragon eggs. It is now time for a new legend to be written. You must set out in search of the hero's relics, so that you may rescue the lost dragons.</p>
<p>Discover three randomly generated maps, ten biomes, seven power ups, and three challenging boss fights. The world is different every time you play, so it's perfect for multiple play sessions!</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjM0NTU4LzMzOTAyNDkucG5n/original/Z7d70w.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM0NTU4LzMzOTAyNTAucG5n/original/tyQzqH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM0NTU4LzMzOTAyNTEucG5n/original/Sj3Cjt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM0NTU4LzMzOTAyNTIucG5n/original/7bcaG%2B.png]]
<p>A short visual novel made in around a month for Cryptid Jam.</p>
<p>Guide the skeptical Charlie through a night in her local woods, helping her cute friend Mia search for the infamous Mothman (or, possibly, the less-infamous Owlman. Mia insists that the difference is academic). </p>
<ul><li>Get lost in the woods</li><li>Choose if Charlie flirtatiously teases her crush or not</li><li>Change whether this game should even have "Mothman" in the title</li><li>Wonder why Mia would even think about looking for Owlman <em>here</em>. I mean this is<strong> literally</strong> just behind her house, <em>someone</em> would have noticed</li><li>Watch as Charlie holds hands with a girl whilst also being a girl</li><li>Discover why Mia <em>really</em> came to these woods</li></ul>
<p><br></p>
<p>This game is intended to be suitable for all audiences, but contains mild threat, anxiety, and also they say "Oh My God" four times. Please leave any glitches or typos that you notice in the comments.</p>
<p><br></p>
<p>Game created in Ren'py (<a href="https://www.renpy.org/" rel="nofollow noopener" referrerpolicy="origin">https://www.renpy.org/</a>)</p>
<p>Designed, Written, and Produced by Zoe Lillith A. (Twitter: @EldritchZoe, Portfolio: https://zoelillitha.wordpress.com/)</p>
<p>Art and Character Design by Perse Brenn (Instagram: onesp1cyboi)</p>
<p>Background Photography by Sam Angl (Twitter: @samangl_)</p>
<p>Music by Alice Exley (Twitter: @Alice_blackmage) <br>Soundtrack: <a href="https://blackmage.bandcamp.com/album/lesbian-mothman-hunters?fbclid=IwAR0j1U6D8pWA0j8eL3X4kNhMKJdUz6Q_0gCUkhB20PR4KT-Faa8PX_ypB-Q" rel="nofollow noopener" referrerpolicy="origin">https://blackmage.bandcamp.com/album/lesbian-mothman-hunters?fbclid=IwAR0j1U6D8pWA0j8eL3X4kNhMKJdUz6Q_0gCUkhB20PR4KT-Faa8PX_ypB-Q</a></p>
<p>Assets used under Creative Commons Attribution licence: \"snowy owl.mp3\" by soundmary (modified, <a href="https://freesound.org/people/soundmary/sounds/194945/" rel="nofollow noopener" referrerpolicy="origin">https://freesound.org/people/soundmary/sounds/194945/</a> ), "Heart sound.wav" by DaniraMO5 (modified, <a href="https://freesound.org/people/Daniramo5/sounds/469249/" rel="nofollow noopener" referrerpolicy="origin">https://freesound.org/people/Daniramo5/sounds/469249/</a> ) Licence available at <a href="https://creativecommons.org/licenses/by/3.0/" rel="nofollow noopener" referrerpolicy="origin">https://creativecommons.org/licenses/by/3.0/</a></p>
<p>All assets used in this game are the intellectual property of their creators.</p>
<p>Version 1.0 is left available as I felt it was more in the spirit of a game jam project. Most players will want to use the latest version.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDk4MjU4LzI2NDA1ODQuanBn/original/vYxkAo.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk4MjU4LzI2NDAwNDcucG5n/original/lboujF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk4MjU4LzI2NDA1NjkucG5n/original/lI99uC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk4MjU4LzI2NDA1NzEucG5n/original/B1FaZj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk4MjU4LzI2NDA1NzIucG5n/original/SciKpB.png]]
<h1>Let Me Take a Selfie</h1><p>Let Me Take A Selfie is a collection of games using selfies to tell stories and explore emotions alone and with others. Selfies are a way we present ourselves to the world as we want to be seen. LMTAS explores relationships, crises, and fiction.</p>
<p>All games require phones with cameras and text messaging.<br></p>
<p><strong>Who Made Me Smile?</strong> is a four player game where players write stories and share selfies to connect and understand each others' emotions. <br></p>
<p><strong>The Story of My Face</strong> is a single player horror game where you tell your own story and create your own monsters while recording your adventure. <br></p>
<p><strong>Now You Don't</strong> is a multiplayer, GMless game where one player is the target of the experience and many others join them in a party that would be much less interesting if the one player wasn't invisible. <br></p>
<p><strong>Don't Look at Me</strong> is a two-player game where players are a couple separated by long distance, one who is ill and one who is in danger, who must weather the obstacles before them with limited time to communicate. <br></p>
<p><strong>Literally, I Can't</strong> is an exercise in competence where players must respond to small crises during a big crisis by demonstrating their competence in selfies and getting the job done.</p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjMxMzg3LzEwOTY3NTguanBn/original/XZi7dq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxMzg3LzEwOTY3NDUuanBn/original/EhFm5E.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxMzg3LzEwOTY3NDguanBn/original/QEMghx.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxMzg3LzEwOTY3NDQuanBn/original/WJj30W.jpg]]
<h1>Let Me Take a Selfie</h1><p>Let Me Take A Selfie is a collection of games using selfies to tell stories and explore emotions alone and with others. Selfies are a way we present ourselves to the world as we want to be seen. LMTAS explores relationships, crises, and fiction.</p>
<p>All games require phones with cameras and text messaging.<br></p>
<p><strong>Who Made Me Smile?</strong> is a four player game where players write stories and share selfies to connect and understand each others' emotions. <br></p>
<p><strong>The Story of My Face</strong> is a single player horror game where you tell your own story and create your own monsters while recording your adventure. <br></p>
<p><strong>Now You Don't</strong> is a multiplayer, GMless game where one player is the target of the experience and many others join them in a party that would be much less interesting if the one player wasn't invisible. <br></p>
<p><strong>Don't Look at Me</strong> is a two-player game where players are a couple separated by long distance, one who is ill and one who is in danger, who must weather the obstacles before them with limited time to communicate. <br></p>
<p><strong>Literally, I Can't</strong> is an exercise in competence where players must respond to small crises during a big crisis by demonstrating their competence in selfies and getting the job done.</p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjMxMzg3LzEwOTY3NTguanBn/original/XZi7dq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxMzg3LzEwOTY3NDUuanBn/original/EhFm5E.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxMzg3LzEwOTY3NDguanBn/original/QEMghx.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxMzg3LzEwOTY3NDQuanBn/original/WJj30W.jpg]]
<p>Drifting the outer rims of the postal pocket dimension, a lone mailbox gently rusts as it’s ravaged by the slow unstoppable passage of time.</p>
<p>Festering within the dark confines of the tin contraption, a small cluster of creased unopened letters; their addresses faded into a peculiar mangled patchwork of damp ink splotches.</p>
<p>The senders but a bygone memory, blissfully unaware of the undelivered words that remain stagnant gathering dust in perpetuum.</p>
<p></p>
<p><br></p>
<p>Tamper with these postal relics trapped in stasis at your own discretion, one knows not of the void’s mailman.</p>
<p><br></p>
<p>Controls:<br>Mouse</p>
<p><br></p>
<p>
</p>
<p>Return Address:</p>
<p>Mayfield Container</p>
<p>Jumpton Road</p>
<p>Scareville</p>
<p>Wales</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTE4NjA0LzUxOTM3NDIuZ2lm/original/1dZJHs.gif]]
<p>
<iframe width="560" height="310" src="https://www.youtube.com/embed/D9HdhyPPWQU" frameborder="0" allowfullscreen=""></iframe>
</p>
<p>
My grandmother is probably the most important person ever to me, as she provided me with the stability and care a child needs growing up. We all have or have had people helping us become a responsible and caring person, and this short narrative game is an ode to these people.</p>
<h1>Controls</h1>
<h2>Controllers</h2>
<ul><li>Left joystick to move</li><li>Right joystick to rotate the camera</li><li>Any trigger to run</li><li>Any face button to interact</li></ul>
<p>Most common controllers should work with the game.</p>
<h2>Keyboard/mouse</h2>
<ul>
<li>move with WASD, ZQSD, or arrow keys</li>
<li>Shift to run</li>
<li>rotate camera with the mouse</li>
<li>left click, spacebar, return to interact</li></ul>
<p>
<br>
</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/D9HdhyPPWQU" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTg1OTQvMjYzNTA2LnBuZw==/original/zfR3je.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg1OTQvMjYzNTA4LnBuZw==/original/a67inY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg1OTQvMjYzNTA5LnBuZw==/original/M4oQma.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg1OTQvMjYzNTEwLnBuZw==/original/mM8uDY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg1OTQvMjYzNTA3LnBuZw==/original/5WxEhX.png]]
<p>Six fowl backgrounds to add to your wacky adventures in spheres, space, and beyond. </p>
<p>Choose or roll from a variety of chickens, from the enigmatic<strong> Shapeshifting Chicken of the Night</strong>, the proud <strong>Ascendant Fighting Cock</strong>, to the powerful <strong>Awakened Fried Chicken</strong>. And three more backgrounds that are just as bizarre. </p>
<p>They are all fun and balanced, whatever that means for you. </p>
<p>UPDATE: Want a sneak peek of one the backgrounds? Check my blog to see the <a href="https://halfminotaurfarmer.blogspot.com/2020/02/troika-background-shapeshifting-chicken.html?m=1" rel="nofollow noopener" referrerpolicy="origin">whole background stats of Shapeshifting Chicken of the Night</a>!<br><br></p>
<p><span class=""><strong>LIFE OF THE POULTRY </strong></span><span class="">is an independent production by John Erwin Casia and is not affiliated with the Melsonian Arts Council.</span> </p>
<p>A submission for <a href="https://itch.io/jam/chicken-jam">ChickenJam</a><span></span>. <br></p>
<p>UPDATE: Uploaded tarot card-sized version of the game, as a submission for <a href="https://itch.io/jam/troika-tarot-jam">Troika Tarot Jam</a>. </p>
<p>Each paid copy beyond the minimum price will create a community copy, refreshed every week. So for every $3 you buy beyond the minimum price, another person gets a copy for free! That way you'll have people to talk about and play the backgrounds with!</p>
<p></p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTcyMjgyLzMwMzkxMTgucG5n/original/4V9OES.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcyMjgyLzMwMDkxMjkucG5n/original/MjNmxI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcyMjgyLzMwMDkxMjgucG5n/original/l72Tj2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcyMjgyLzMwMDkxMjcucG5n/original/WgmIUj.png]]
<p></p>
<h2>System Requirements</h2>
<p></p>
<ul><li>Requires a 64-bit processor and operating system
</li><li><strong>OS:</strong> Windows 10
</li><li><strong>Processor:</strong> Processor (AMD): AMD FX-6350 Processor (Intel): Intel Core i5 6600K
</li><li><strong>Memory:</strong> 8 GB RAM
</li><li><strong>Graphics:</strong> Graphics card (AMD): AMD Radeon™ HD 7850 2GB Graphics card (NVIDIA): NVIDIA GeForce® GTX 660 2GB
</li><li><strong>DirectX:</strong> Version 11
</li><li><strong>Network:</strong> Broadband Internet connection
</li><li><strong>Storage:</strong> 1 GB available space
</li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NDk4Ni82MDM2MTk4LmpwZw==/original/KASK7q.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NDk4Ni82MDM2MTg0LmpwZw==/original/sr3J0%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NDk4Ni82MDM1OTM5LnBuZw==/original/DsnIaI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NDk4Ni82MDM2MTk2LmpwZw==/original/8cYURl.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NDk4Ni82MDM2MjAwLmpwZw==/original/GdBnZh.jpg]]
<p>Veil sensors have located a source of significant interference on the planet below. Strong likelihood of Ruin, Windswept, and Surge presence, but initial forays indicate sizeable dimensional disturbances as well. A Spire, standing at the coast, seems to be the source of these distortions. Get to the Spire, take readings, and then get back safely, Beacons!</p>
<p><br></p>
<p>LIGHT: Trek to the Spire combines a strike format with an overworld exploration zone that features several feuding factions while also introducing a brand new enemy type: the geometrically-perfect and cosmically-horrible Numinitous!</p>
<p>Trek to the Spire also offers three new gear tags and three new Legendary weapons.</p>
<p>Furthermore, mutant fungi have corrupted the woods near the Spire and the spores seem to feed on both Light and Dark. There might be further fungal developments as they assimilate the nearby flora and fauna.</p>
<p>Finally, place your own strikes onto the map to keep the Light shining! Plan a foray to the heart of the Cube! What lies beyond the Hypercube's portals? And what will befall the mutated Windswept feeding on mushrooms in place of Aether?</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMjQ1My81NzA2NDM2LnBuZw==/original/5iTQPv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMjQ1My81NzA2MzcxLnBuZw==/original/Ov2CTS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMjQ1My81NzA2MzcyLnBuZw==/original/%2BsfqXG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMjQ1My81NzA2MzczLnBuZw==/original/0HwnK%2F.png]]
<p>Control a small drone and use it to wreak havoc. Shoot your way through the horde of orbs, watch them break apart with each hit, and rack up the highest score you can!</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU4ODcuanBn/original/7UmW%2Fk.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU5MDIuanBn/original/bd5B0i.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU4OTIuanBn/original/p3T%2FpL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU4OTQuanBn/original/%2Bf19AZ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU4ODguanBn/original/tcYcd1.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU4OTkuanBn/original/jimL7N.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU5MDAuanBn/original/obf3ZK.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU4OTYuanBn/original/xqzpJ7.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU4OTcuanBn/original/AxyRnG.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU4OTUuanBn/original/d9yf1j.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU4OTMuanBn/original/x7odWL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU4OTguanBn/original/EXlAVe.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU4OTEuanBn/original/3J7rlu.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU4OTAuanBn/original/W88fSG.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU5MDEuanBn/original/AH0ohV.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEzNzc2LzMyNjU4ODkuanBn/original/Z7vGLY.jpg]]
<h6>One day, I was hit by a carriage and ... I died.</h6><h3>But why did I wake up in another world and take over the life of this girl named Ann?<br>She was a terrible person, who bullied her classmate.<br>“I think he hates me and I can't blame him, but I'm not going to regret it because I didn't do the bad things. After a while, he will realize that I am no longer a threat to him and will ignore me. "<br>Or is that what I thought that time. But I was completely wrong.</h3>
<h3>~~~</h3>
<p> <em></em></p>
<h3>A cute and heartwarming love story.<br><br>~~~<br><br>Script: Dirjenane Soares</h3>
<p></p>
<h3>Director: Dirjenane Soares<br><br>Sprites: Sutemo<br><br>Backgrounds: K-arts<br><br>Theme Song - Josh Woordward ~"Let it in"</h3>
<p><em><br></em></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTM1MjIxLzUzMTQ3MTgucG5n/original/2YSgM1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTM1MjIxLzUzMTQ3MTUucG5n/original/GlP9tT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTM1MjIxLzUzMTQ3MTYucG5n/original/jixb2A.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTM1MjIxLzUzMTQ3MTcucG5n/original/P4vP8c.png]]
<p><em>"There's unrest in the forest..."<br></em>Explore a lake amidst turmoil, at the brink of war between fairies and frogs.<br>Lilypad lake has turned upside down since the Goliath frogs invasion. Fairies were dethroned and stripped out of their royal power. <br>The Crows watched silently as Bat power grew and the Bug clans found strenght in unification. <br></p>
<p>Lilypad lake is an adventure site written for the #RittermarchJAM and it contains the following:</p>
<ul><li>5 different factions with goals and resources</li><li>5 different locations around and in Lilypad lake </li><li>A few dungeons and a ton of point of interest within the locations</li><li>NPCs of major factions</li><li>Stats for the creatures </li></ul>
<p>"Lilypad lake" is an independent production by Frigging Frogs and is not affiliated with Losing Games.<br>It is published under the Mausritter Third Party Licence. Mausritter is copyright Losing Games.<br>I made it for the <a href="https://itch.io/jam/rittermarch" target="_blank">''Rittermarch Jam [#MoreMausritterMarch]"</a> using Affinity publisher and Photoshop for image editting. </p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTc5MzE2LzU3MDc2MzEuanBn/original/Udqyt8.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc5MzE2LzU1NjQ4NTAucG5n/original/Q9q8oP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc5MzE2LzU1NjQ3OTQuanBn/original/tbRWhU.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc5MzE2LzU1NjQ3OTUuanBn/original/5r0ux7.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc5MzE2LzU1NjQ4MDUuanBn/original/Ldd8RD.jpg]]
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/C5-ovaLHAsM" allowfullscreen="" frameborder="0"></iframe></div>
<figure><em><em><em><em><img src="https://img.itch.zone/aW1nLzM4ODc2NzYucG5n/original/MOySJI.png" loading="lazy"></em></em></em></em><br></figure>
<p></p>
<p>Master bouncing 2 spaces at a time through 7 challenging chapters, restore power to every tile and bring the <em>ARCANE</em> system back online.<br>In Limiter! even the world map is an obstacle course to hop your way through.</p>
<p><img src="https://img.itch.zone/aW1nLzM4ODc2MzkucG5n/original/iFtzBi.png" loading="lazy"></p>
<p></p>
<p>Play as <em>Limiter</em>, an AI programmed to see the world in puzzles.<br>The player and the character blend together in a truly unique narrative experience about learning and what makes us who we are.<br>Explore a long forgotten computer network called <em>ARCANE</em> and bring the lights back on.</p>
<p><em>Restore power to the system.</em><br><em>Find harder puzzles.</em><br><em>Feel better.</em></p>
<p><img src="https://img.itch.zone/aW1nLzM4ODc3NTMucG5n/original/AhBIFy.png" loading="lazy"><br></p><p>Features an incredible original soundtrack by the talented Lukepi. Plug in some headphones and watch the trailer for a preview!<br></p>
<p><strong>Soundtrack Available Now!!<br></strong></p>
<p><strong><a href="https://lukepi.bandcamp.com/album/limiter-official-soundtrack" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Check it out here!<br></a></strong><img src="https://img.itch.zone/aW1nLzM4ODc3NTQucG5n/original/eyPeNW.png" loading="lazy"></p>
<p>Create your own levels! Every world you complete in the story unlocks more level parts to be used until the only limit is your own imagination!<br>Easily create, test and share as many levels as you can think of using the same tools as the developer!</p>
<p><br></p>
<p><strong>This game is also available on Steam featuring gamepad support as well as achievements. Check that out <a href="https://store.steampowered.com/app/1340870/Limiter/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Here!</a></strong><br></p>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/C5-ovaLHAsM" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0MTA5LzM4ODc3NDQuZ2lm/original/RXDuZa.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0MTA5LzM4ODc3NDUuZ2lm/original/wHcoua.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0MTA5LzM4ODc3NDcuZ2lm/original/6n3ryS.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0MTA5LzM1MTg3NzQucG5n/original/XGWRMX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0MTA5LzM4ODc3NDYuZ2lm/original/Lopvju.gif]]
<p><strong><img loading="lazy"><img src="https://img.itch.zone/aW1nLzU2MDgzMzQucG5n/original/rjYEa1.png" loading="lazy"><br></strong></p>
<p><br></p>
<p><strong>The solo RPG and worldbuilding tool where you build a royal family.<br></strong></p>
<p><br></p>
<p><strong>What is Lineage?</strong><br></p>
<p>Lineage is a solo roleplaying game where you will chart the lives of monarchs and the history of the nation they rule. <br></p>
<p>Build the family tree of a fictional royal family. Record the challenges they faced and the decisions they made, and discover how those decisions impacted future generations<strong>.</strong></p>
<p>A journaling game with a difference, you will learn the complete history of a fictional kingdom as you uncover the lives of its leaders, gradually building an elaborate historical artefact.<br></p>
<p><strong><br></strong><strong><br></strong><br></p>
<p><strong>How to play<br></strong></p>
<p>Rolling 2 six-sided dice, you'll be provided with short descriptions of a monarch - how they are remembered, the heirs they left behind, the challenges they faced and how they died. <br></p>
<p>Using these as prompts, you will gradually build a complete history of this ruling family and the nation they control.</p>
<p>
</p>
<p><br></p>
<p><br></p>
<p><strong> Can I incorporate this into an RPG session?<br></strong></p>
<p>You can. Lineage is a stand-alone journaling game, but can also be used to build randomised rulers on the fly. <br></p>
<p><br></p>
<p><strong>Physical copies...</strong></p>
<p>are now sold out.</p>
<p><br></p>
<p><strong>More! More!</strong><br></p>
<p>If you have a hankering for family drama, try the Mork Borg themed <strong>Lörd</strong>, or the sci-fi fantasy tinged <strong>Reign of the Star Kings</strong>, which features 3x as many random events!<br></p>
<p><a href="https://washyourhands.itch.io/lord">https://washyourhands.itch.io/lord</a></p>
<p><a href="https://washyourhands.itch.io/reign-of-the-star-kings">https://washyourhands.itch.io/reign-of-the-star-kings</a><br></p>
<p><br></p>
<p><br></p>
<p></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTYzNjM3LzU4NDMzMDIuanBn/original/JqlQWk.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYzNjM3LzU4NDMzMDEuanBn/original/JH%2FGB%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYzNjM3LzU2MDgyNzkucG5n/original/77txUF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYzNjM3LzU0Njc4OTYuanBn/original/TKOMYG.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYzNjM3LzU2MDgzMDUucG5n/original/oCr69I.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYzNjM3LzU2MDgzODIucG5n/original/ipZH6d.png]]
<p>LINEARITY: show me how you play and I will tell you who you are!<br></p>
<p>Linearity is a companion puzzle game: create lines, as many and as complex as you can. Just turn the blocks to make them connect until you have a line without any breaks.</p>
<p>3 game modes:<br>- 42 to You: you have 42 seconds to play, and will get a feedback based on your style of play.<br>- 0-100: all the time you want, but only 100 moves to create the best sequence of lines. <br>- Franticity: just a few seconds, but you get a little more time for each line you make. Better lines give you more extra time.<br></p>
<p>While you play you can enjoy some fantastic music: not a quick loop but a full song: Pointillistic by Bzur!</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODA4OTE0LzgyODE1NjIucG5n/original/MnxPpf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODA4OTE0LzQ4NjU4NzkucG5n/original/C%2BDdwY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODA4OTE0LzgyODE1NzUucG5n/original/ymztZD.png]]
<<list-links "[tag[Linux]sort[title]]">>
<p>Congratulations, warehouse keeper! You've been promoted!<br><br>Little Square Things is a <strong>COMPLETELY FREE</strong> (if you couldn't tell) Sokoban-like puzzle game. The objective is simple: Move boxes around to cover up some panels.<br><br>But this isn't your father's warehouse. In Little Square Things, you <em>are</em> the boxes. <em>All</em> of them. All of the Square Things respond to your every move, and so it's up to you keep them coordinated, in sync, and in line. Guide them through a series of challenging (and hazardous!) environments to get those panels covered!<br><br><img src="https://store.steampowered.com/gfxproxy/betagfx/apps/945490/extras/header1.png?t=1569543770" loading="lazy"><br><br>You want puzzles? You've got puzzles!<br><br><img src="https://store.steampowered.com/gfxproxy/betagfx/apps/945490/extras/bulletPoint.png?t=1569543770" loading="lazy"> Think your way through <strong>111 unique puzzles</strong>! Plus, you can revisit them <strong>all</strong> for completely new challenges in each!<br><img src="https://store.steampowered.com/gfxproxy/betagfx/apps/945490/extras/bulletPoint.png?t=1569543770" loading="lazy"> From walls to water, from bullets to buzzsaws -- other elements either stand in your way. That, or they'll help you out. You'll have to figure that out!<br><img src="https://store.steampowered.com/gfxproxy/betagfx/apps/945490/extras/bulletPoint.png?t=1569543770" loading="lazy"> Navigate the geometry, with game boards that wrap around and null spaces that literally don't exist!<br><img src="https://store.steampowered.com/gfxproxy/betagfx/apps/945490/extras/bulletPoint.png?t=1569543770" loading="lazy"> Stop to take your moves turn-by-turn, or crank up the speed if you're in a hurry!<br><br>As a master shepherd of sheep and cats alike, you are the Square Things' beacon of hope in these complicated times.<br><br><img src="https://store.steampowered.com/gfxproxy/betagfx/apps/945490/extras/header2.png?t=1569543770" loading="lazy"><br><br>Were you a 90s kid? Some other kind of kid? Are you a kid <strong>right now</strong>? Doesn't matter, because this game is for you!<br><br>Here's what you'll see, hear, and feel:<br><br><img src="https://store.steampowered.com/gfxproxy/betagfx/apps/945490/extras/bulletPoint.png?t=1569543770" loading="lazy"> New! More Enhanced Graphics Adapter (EGA) and SoundBlaster support-ish!<br><img src="https://store.steampowered.com/gfxproxy/betagfx/apps/945490/extras/bulletPoint.png?t=1569543770" loading="lazy"> Gamepad.. err.. joystick support!<br><img src="https://store.steampowered.com/gfxproxy/betagfx/apps/945490/extras/bulletPoint.png?t=1569543770" loading="lazy"> Modern quality-of-life improvements!<br><br>With its futuristic <strong>17</strong>-color graphics and <strong>enhanced </strong>Musical Instrument Digital Interface (MIDI), Little Square Things is going to <em>blow you away</em>.<br><br>So boot up your i386, tinker with your CONFIG.SYS, and crack your knuckles in preparation for that DOS prompt, because it's time to play a game! Also, it's 1991!</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0NDQuanBn/original/moIzn3.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0NDguanBn/original/6J8jFd.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0MzkuanBn/original/dHCMzg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzIyMTI0NjUuanBn/original/SxyjrD.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0NTEuanBn/original/Hn1Z1x.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0NDkuanBn/original/EYVEea.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0MzguanBn/original/SBwHmm.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0NDMuanBn/original/GLtcjt.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0MzcuanBn/original/hmPEen.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0NDEuanBn/original/MGmJcC.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0NDIuanBn/original/hbscOU.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0NDYuanBn/original/1RVMzt.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0NTAuanBn/original/FK%2FJPc.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0NDAuanBn/original/pLaoqa.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0NDcuanBn/original/KSjt8j.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQwMTA4LzI1MjM0NDUuanBn/original/zGw3L8.jpg]]
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQzMzQxOTIucG5n/original/E%2FKIev.png" loading="lazy"></p>
<div class="custom-outer_box"><div class="custom-inner_box"><p class="text-center"><img src="https://img.itch.zone/aW1nLzQzMzgwMDQucG5n/original/cAqZha.png" loading="lazy"><br></p>
<p class="text-justify"><em>Armed with nothing but your curiosity, streaming equipment, and insatiable need to impress others, you approach a long-abandoned house in your small town.</em></p>
<p class="text-justify"><em>What could possibly go wrong?</em><br></p>
<h2 class="text-justify">LiveScream is a horror/comedy visual novel with point-and-click elements.</h2>
<p class="text-justify">Step into the role of an intrepid ghost hunter-slash-live streamer-slash-average high schooler and explore a haunted house with your adoring audience.</p>
<p class="text-justify">LiveScream is available for a minimum price of $2.99. 50% of all proceeds will be donated to <a href="https://www.acrossboundaries.ca/" rel="nofollow noopener" referrerpolicy="origin">Across Boundaries</a>, a Toronto-based mental health centre that provides equitable, inclusive, and holistic mental health and addiction services for racialized communities.</p></div></div>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQzMzQxOTMucG5n/original/2vDket.png" loading="lazy"></p>
<div class="custom-outer_box"><div class="custom-inner_box"><h2 class="text-center">Customisable Protagonist</h2><p class="text-center">Play as a character you identify with! Customise your name, screen name, pronouns, and appearance.</p>
<h2 class="text-center">Point-and-Click Exploration</h2>
<p class="text-center">Snoop to your heart’s content! Click on objects around the house to inspect them up close.</p>
<h2 class="text-center">Reactive Audience</h2>
<p class="text-center">Watch your stream chat react to your choices! Win them over with your ghost-hunting prowess, or disappoint them with your cowardice.</p>
<h2 class="text-center">Unlockable Achievements</h2>
<p class="text-center">Try to cross everything off your bucket list! With its short playthrough time of 20 minutes and multiple endings, LiveScream is an easily replayable game.</p></div></div>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzczMzYxLzQ0MTYxMjEuZ2lm/original/YQBYL4.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzczMzYxLzQ0MTYxMjMuZ2lm/original/VYylUB.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzczMzYxLzQ0MTYxMjQuZ2lm/original/npIv0f.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzczMzYxLzQ0MTYxMjYuZ2lm/original/arKP%2Bh.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzczMzYxLzQ0MTYxMjguZ2lm/original/3h%2B5s8.gif]]
<p><span class=""><strong>Description</strong></span></p>
<p><span class=""></span></p>
<p><span class=""></span><span class=""></span><span class=""></span><span class="">When you live in a war zone and death is hunting everyone, things will look different and choices become harder. Face your fate in an unjust war to survive with your family from the shadows of war. </span></p>
<p><span class=""> </span>Time is running against you, your family is in danger and there is nowhere to hide or to do but to get them out of the home through a hero journey to a safer place. </p>
<p><span class="">Shooting and bombing everywhere and it will hunt you unless you make fast decisions as you progress through different events. These events are real and they will make you choose the hard way. Live or die!</span></p>
<p>
</p>
<p><span class=""><strong>Features </strong></span></p>
<ul><li>A story based on Actual Events.<br>
</li><li>Witness the actual events of war from different point of view.<br>
</li><li>Emotional experience that will touch your heart.
</li><li>Provoke different feelings in a short space of time.<br>
</li><li><span class="">Explore amazing atmosphere.</span><br>
</li><li>Challenging decision, events and puzzles awaiting for you.
</li><li><span class="">Epic music and Sound effects.</span>
</li></ul>
<p><span class=""></span><span class=""></span></p>
<p>
</p>
<p><strong>Why i made this game </strong></p>
<p>I'm a father of two kids, I can't imagine my life without them, but in Palestine nobody is safe.</p>
<p>When the war started in Gaza and i saw the images of the killed kids in their parents hands I was shocked, I had a weird feeling, it's a combination of sadness, fear, empathy and anger, All what i was thinking of is "what if this happened to me".<br><br>I have chosen to share those feelings in a game to deliver a message of how we are living as Palestinians under this situation<br></p>
<p>It's Not Just a Game, It's a case and call for help.</p>
<p>
</p>
<p><span class=""><strong>Awards</strong></span></p>
<p><span class=""></span></p>
<p><span class=""></span>IMGA MENA - WINNER OF Excellence in Storytelling.<br>The Game Development World Championship 2016 - "GDWC" 3rd Place in Serious Catagory.<span class=""><br>Reboot Develop Indie Award in category of "Visual Excellence".<br>Nominations and Official Selections</span></p>
<p><span class="">Indie Prize: </span>Best in Show & Most Innovative Game.</p>
<p>Indie Prize: Best Game Narrative.</p>
<p>AzPlay: Best Idea Finalist.<br>IndieCade Festivel: Official Selection.<br>IndieCade Europe: Official Selection.<br>PGC Vancouver - Big Indie Pitch: Official Selection.<br>A MAZE Johannesburg Exhibition: Official Selection.<br>A MAZE Berlin Exhibition: Rainbow Selection.<br>Casual Connect - Asia Showcase: Official Selection.<br>Game Happens: Official Selection.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/OAXBBzxKqu8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA2NjY4Ni82MTExNzQ5LnBuZw==/original/Xre4Dz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA2NjY4Ni82MTExNzQ4LnBuZw==/original/aO6CVw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA2NjY4Ni82MTExNzQ3LnBuZw==/original/CVI6An.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA2NjY4Ni82MTExOTI1LnBuZw==/original/ZacQ96.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA2NjY4Ni82MTExOTI0LnBuZw==/original/Jlvn%2Fs.png]]
<p><br></p>
<h3 class="text-center">We are re-imagining Loco Motive as a full release for Nintendo Switch & PC! </h3>
<p>
</p>
<h3 class="text-center"><a href="https://store.steampowered.com/app/1709880/Loco_Motive/" rel="nofollow noopener" referrerpolicy="origin">Wishlist Loco Motive on Steam</a></h3>
<p></p>
<p><strong><em>Loco Motive: Game Jam Edition </em>was a 2-week ‘proof-of-concept’ created as part of AdvXJam 2020, and launched right here on itch.io! </strong><strong><br></strong></p>
<p><strong>Mr. Arthur Ackerman</strong> finds himself in the personal employ of <strong>Lady Unterwald</strong>, an eccentric heiress of the Wald-Bahn rail company.
</p>
<p><strong>On the verge of a landmark speech</strong>, you've been summoned to make a last minute amendment to her Will - aboard her flagship luxury train, <strong>The Reuss Express</strong>.
</p>
<p>Little does Arthur know, he's about to become embroiled in a <strong>murder, a mystery and worst of all... an adventure!</strong>
</p>
<p><strong>(Psst, guess what! Since AdvXJam 2020 we founded our own studio and are now full-time indie devs! Thank you for playing this version of the game ❤️<br></strong></p><p><strong>With the support of our publisher, Chucklefish, we’re now reimagining Loco Motive from a 2 week proof-of-concept into a full game! We think you’ll be pleasantly surprised by how much is changing - check out our plans and follow along with the game’s development right <a href="https://robustgames.itch.io/loco-motive/devlog/324841/introducing-loco-motive-our-debut-game">here</a>.)</strong>
</p>
<p><em>"A lot of indie adventure games try to replicate the distinctive feel of classic LucasArts point-and-clickers, but Loco Motive [Game Jam] doesn't just pull this off; it absolutely nails it.."</em>
</p>
<p>- <a href="https://www.pcgamer.com/this-free-murder-mystery-absolutely-nails-the-feel-of-classic-lucasarts-adventures/?utm_medium=social&utm_campaign=socialflow&utm_source=twitter.com" rel="nofollow noopener" referrerpolicy="origin"><em>PC Gamer</em></a>
</p>
<p><em>"The level of polish in Loco Motive [Game Jam] is incredible – with fantastic pixel art animation, intuitive puzzles, a great sense of humor and well written dialogue..It feels a lot like someone’s unearthed a long lost Lucasarts classic.. Highly recommended."</em>
</p>
<p><em>- </em><a href="https://www.alphabetagamer.com/loco-motive-game-jam-build-download/" rel="nofollow noopener" referrerpolicy="origin"><em>Alpha Beta Gamer</em></a>
</p>
<h4>Instructions</h4>
<ul><li>Click ground to walk, and objects/characters to interact.
</li><li>Move your mouse to the top of screen to open your inventory.
</li><li>Equip items by clicking them.
</li><li>Use an equipped item by clicking it on an object or character.
</li><li>Combine items in your inventory by using one on the other.
</li><li>Right Click, or Click empty space to unequip the current item.
</li></ul>
<h4>Made in 2 weeks for AdvXJam 2020, by:</h4>
<ul><li>Adam Riches (<a href="https://twitter.com/Supernorn" rel="nofollow noopener" referrerpolicy="origin">@Supernorn</a>) - Story, Art, Sound
</li><li>Joseph Riches (<a href="https://twitter.com/gamedevjoe" rel="nofollow noopener" referrerpolicy="origin">@GameDevJoe</a>) - Story, Code
</li><li>Paul Zimmermann (<a href="https://twitter.com/pzcomposer" rel="nofollow noopener" referrerpolicy="origin">@</a><a href="https://twitter.com/paulzmmermann" rel="nofollow noopener" referrerpolicy="origin">paulzmmermann</a>) - Music
</li><li>Angie 't3nshi' Di Rosa (<a href="https://twitter.com/_t3nshi" rel="nofollow noopener" referrerpolicy="origin">@_t3nshi</a>) - Additional Art
</li></ul>
<p>Created with <strong>PowerQuest </strong>for Unity. A 2d adventure game tool, made by
</p>
<p>Dave Lloyd (<a href="https://twitter.com/duzzondrums" rel="nofollow noopener" referrerpolicy="origin">@DuzzOnDrums</a>) <a href="http://powerquest.powerhoof.com/" rel="nofollow noopener" referrerpolicy="origin">https://powerhoof.itch.io/powerquest</a>
</p>
<p>Pixel Fonts by Chevy Ray <a href="https://chevyray.itch.io/pixel-fonts">https://chevyray.itch.io/pixel-fonts</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODI4MzIzLzQ3MDE2MzkucG5n/original/NN6PgE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODI4MzIzLzQ3MDE4ODMucG5n/original/Fr33jj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODI4MzIzLzQ3MDE4MzcucG5n/original/8QZp7K.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODI4MzIzLzQ3MzM4ODIucG5n/original/zGNxXf.png]]
<p><strong>Loco Motive </strong>is a murder mystery-comedy, full of deadly surprises, larger than life characters and yes, the occasional blood fountain!<br></p>
<p>
</p>
<p><strong>Mr. Arthur Ackerman</strong> finds himself in the personal employ of <strong>Lady Unterwald</strong>, an eccentric heiress of the Wald-Bahn rail company.</p>
<p><strong>On the verge of a landmark speech</strong>, you've been summoned to make a last minute amendment to her Will - aboard her flagship luxury train, <strong>The Reuss Express</strong>.</p>
<p>Little does Arthur know, he's about to become embroiled in a <strong>murder, a mystery and worst of all... an adventure!</strong></p>
<p></p>
<p><em>"A lot of indie adventure games try to replicate the distinctive feel of classic LucasArts point-and-clickers</em><em>, but Loco Motive doesn't just pull this off; it absolutely nails it.."</em><br>- <a href="https://www.pcgamer.com/this-free-murder-mystery-absolutely-nails-the-feel-of-classic-lucasarts-adventures/?utm_medium=social&utm_campaign=socialflow&utm_source=twitter.com" target="_blank" rel="nofollow noopener"><em>PC Gamer</em></a></p>
<p></p>
<p><em>"The level of polish in Loco Motive is incredible – with fantastic pixel art animation, intuitive puzzles, a great sense of humor and well written dialogue..It feels a lot like someone’s unearthed a long lost Lucasarts classic.. Highly recommended."<br></em><em>- <a href="https://www.alphabetagamer.com/loco-motive-game-jam-build-download/" rel="nofollow noopener">Alpha Beta Gamer</a></em></p>
<h4><p><strong>Instructions</strong></p></h4>
<ul><li>Click ground to walk, and objects/characters to interact.</li><li>Move your mouse to the top of screen to open your inventory.</li><li>Equip items by clicking them. </li><li>Use an equipped item by clicking it on an object or character.</li><li>Combine items in your inventory by using one on the other.</li><li>Right Click, or Click empty space to unequip the current item.</li></ul>
<h4><p><strong>Made in 2 weeks for AdvXJam 2020, by:</strong></p></h4>
<ul><li>Adam Riches (<a href="https://twitter.com/Supernorn" target="_blank" rel="nofollow noopener">@Supernorn</a>) - Story, Art, Sound</li><li>Joseph Riches (<a href="https://twitter.com/gamedevjoe" target="_blank" rel="nofollow noopener">@GameDevJoe</a>) - Story, Code</li><li>Paul Zimmermann (<a href="https://twitter.com/pzcomposer" target="_blank" rel="nofollow noopener">@</a><a href="https://twitter.com/paulzmmermann" rel="nofollow noopener">paulzmmermann</a>) - Music</li><li>'t3nshi' (<a href="https://twitter.com/_t3nshi" target="_blank" rel="nofollow noopener">@_t3nshi</a>) - Additional Art</li></ul>
<p>Created with <strong>PowerQuest </strong>for Unity. A 2d adventure game tool, made by <br>Dave Lloyd (<a href="https://twitter.com/duzzondrums" target="_blank" rel="nofollow noopener">@DuzzOnDrums</a>)
<a href="http://powerquest.powerhoof.com/" rel="nofollow noopener">https://powerhoof.itch.io/powerquest</a></p>
<p>Pixel Fonts by Chevy Ray <a href="https://chevyray.itch.io/pixel-fonts">https://chevyray.itch.io/pixel-fonts</a><br><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODI4MzIzLzQ3MDE2MzkucG5n/original/NN6PgE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODI4MzIzLzQ3MDE4ODMucG5n/original/Fr33jj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODI4MzIzLzQ3MDE4MzcucG5n/original/8QZp7K.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODI4MzIzLzQ3MzM4ODIucG5n/original/zGNxXf.png]]
<p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/5YSNMhoha08" frameborder="0" allowfullscreen="">
</iframe>
</p>
<p><strong>Requires SteamVR headset for best experience</strong>. </p>
<p><strong><a href="https://store.steampowered.com/app/490250/Locomancer/" rel="nofollow noopener" referrerpolicy="origin">Now Available for Free on Steam</a></strong><span style="color: inherit; font-size: inherit"></span></p>
<p>
Are you a kid that wants to play with model trains?<br>
</p>
<p>
Are you an adult that misses playing with your model trains as a kid?
</p>
<p>
Are you an adult that missed out on playing with model trains as a kid?
</p>
<p>
Are you an adult with a kid that wants to play with model trains?
</p>
<p>
Are you just an adult that wants to play with model trains?
</p>
<p>
Are you a person of any age/race/gender that wants to play with model trains?
</p>
<p>
If you answered yes to any of the above, do I have news for you because Locomancer lets you PLAY WITH AND RIDE MODEL TRAINS!
</p>
<p>
<em>(Also if you answered no to all of the above, come on, we all know you're lying to yourself and everyone you love. Take a break from the wave shooters and play with some trains.)</em>
</p>
<p>
Locomancer is a toy box style model train simulator for touch enabled SteamVR headsets. It allows you to build layouts of varying complexity and even defy what is physically possible in fake virtual reality (reality).
</p>
<p>
<strong>Featuring</strong>:
</p>
<ul>
<li>Multiple locomotives including steam and diesel engines</li>
<li>A variety of rail cars including a fully functional cannon car</li>
<li>Straight track, curved track, inclined track, loop de loops, and more!</li>
<li>Various pieces of scenery to add detail your layouts</li>
</ul>
<p>
Plus, with support for custom scenery, you can bring models created by yourself or the community into the game for even further customization. The possibilities are nearly endless*!
</p>
<p>
Fully embracing the physicality of touch enabled virtual reality you are legally required to build layouts piece by piece, tree by tree. Then, once complete you must remotely operate your trains with a replica DC control panel or hop in the cab of any of the available locomotives and drive them with physical levers, knobs, and dials! They even burst in to flames when they crash, you can't say that about your real model trains can you?
</p>
<p>
Oh...you can? I'd get that checked out if I were you.
</p>
<p>
So what are you waiting for? Become <strong>The Locomancer</strong>!
</p>
<p>
Yes, you are the Locomancer. Was that not clear? It's like a train wizard. You're like the babe with the power, but instead of voodoo it's train magic. Also, there's no magic dance, but you can still dance to twenty-six minutes of sweet big band jazz by Nathan Boler if you want to.
</p>
<p>
*The possibilities are totally endful, but there's still a lot you can do.
</p>
<p style="margin-left: 20px">
<em>At first, I was like, "Meh, kind of cool concept, just needs a bit more development time." And then he went into first person mode, and I thought "I NEED THIS GAME RIGHT THE F*** NOW!" - Bennykill709</em>
</p>
<p style="margin-left: 20px">
<em>Trainspotting without the heroin - Hyper Magazine</em>
</p>
<p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/APTOKf6d9jc" frameborder="0" allowfullscreen="">
</iframe>
</p>
<p>
<br>
</p>
<p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/62U2tN9H_S4" frameborder="0" allowfullscreen="">
</iframe>
</p>
<p>
<br>
</p>
<p>
<a href="https://forums.tigsource.com/index.php?topic=55883.0" target="_blank" rel="nofollow noopener" referrerpolicy="origin">
See the devlog for development updates.</a>
</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/5YSNMhoha08" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjg1NzEvNTUxNTE1LnBuZw==/original/RYdZ6D.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg1NzEvNTY5NDc1LnBuZw==/original/XK9BTK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg1NzEvNTY5NDcxLnBuZw==/original/nizzqu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg1NzEvNTY5NDczLnBuZw==/original/Txym3O.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg1NzEvNTY5NDcyLnBuZw==/original/dKvAfH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg1NzEvNTY5NDc0LnBuZw==/original/7LZyTK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg1NzEvNTUxNTE0LnBuZw==/original/kW8Dgz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg1NzEvNTY5NDc3LnBuZw==/original/fUm2%2F7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg1NzEvNTUxNTE2LnBuZw==/original/SwLNSs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg1NzEvNTY5NDc2LnBuZw==/original/OHxtQt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg1NzEvNTUxNTE3LnBuZw==/original/vGsf4c.png]]
<p><strong></strong>"Something brilliant that I didn’t know I needed after over a year of pandemic life"- </p><p><a href="https://www.pcgamer.com/14-games-you-should-play-from-the-indie-bundle-for-palestinian-aid/" rel="nofollow noopener" referrerpolicy="origin">Alexis Ong, PC Gamer</a></p><p><strong>Welcome to a bunch of chill 3D worlds full of unique study spots with Lofi Hip Hop music and ASMR sounds. </strong></p>
<p>You can explore them to relax while you take a break from studying. </p>
<p>When it's time to study again, you can set a timer and put these worlds in the background. To help you focus, they will continue to provide relaxing sounds and beats with no ads. </p>
<p>In these worlds, nothing is trying to hurt you. You don't need to fight anything to win. You set your own goals, and you can customize your own soundscape to help you meet them. </p>
<p>We are providing this version of the software on a pay-what-you can basis to support students and teachers engaged in remote learning during the pandemic. Some players have compared it to the "fidget toys" they have on their desks to provide sensory breaks during long work sessions. <span></span></p>
<p>---</p>
<p><strong>Credits</strong></p>
<p>This project was designed and developed by <a href="https://www.wizzardjones.com/" rel="nofollow noopener" referrerpolicy="origin">Israel Jones</a> and <a href="https://rossier.usc.edu/faculty-and-research/phd-directories/phd-a-z/phd-profile/?id=109" rel="nofollow noopener" referrerpolicy="origin">Matthew Hamilton</a><strong>, </strong>students at the University of Southern California's School of Cinematic Arts and Rossier School of Education. Sound design is by Kaley Markes at the Berklee School of Music. Music curation is by Israel Jones and Noah Brown from Berklee. </p>
<p>Our design is based on research about player experiences with mindfulness in <a href="https://www.waldengame.com/" rel="nofollow noopener" referrerpolicy="origin">Walden, A Game</a> and the <a href="https://www.headspace.com/" rel="nofollow noopener" referrerpolicy="origin">Headspace</a> app that will be presented at <a href="http://2021.hci.international/" rel="nofollow noopener" referrerpolicy="origin">HCI International.</a></p>
<p>Special thanks to our professor Richard Lemarchand and our classmates in the Interactive Media and Games MFA class of 2022 cohort. </p>
<p>Thanks also to <a href="https://www.youtube.com/channel/UCyD59CI7beJDU493glZpxgA" rel="nofollow noopener" referrerpolicy="origin">Lofi Geek</a>, who provided much of the game's music, and to <a href="https://www.linkedin.com/in/michael-d-clark-96780924" rel="nofollow noopener" referrerpolicy="origin">Michael Clark</a> for providing songs written by him and his colleagues. A full list of music is included in the in-game credits, and the song title and artist pop up in the lower left corner as music plays. </p>
<p>---</p>
<p><strong>Contact us</strong></p>
<p>You can email us at <a href="mailto:LoFiHipHopWorlds@gmail.com" class="" target="_blank" rel="nofollow noopener" referrerpolicy="origin">LoFiHipHopWorlds@gmail.com</a></p>
<p>---</p>
<p><strong>Tips and suggestions: </strong></p>
<ul><li>If you want to listen to different music while still hearing the soundscape of these worlds, just press "C" and go to the Customize Audio menu. You can turn down the music volume while keeping the effects volume at your desired level, and can open your own musical selection in a different window. </li><li>The software should be windowed, not fullscreen by default. If this is not the case on your computer, you can set it to windowed by pressing "C" and going to the Customize Graphics menu and checking the "windowed" checkbox. This might also fix bugs with buttons that show up on some older Macs. </li><li>To avoid eye strain, remember to stretch your eyes every 20 minutes by looking at something at least 20 feet away for at least 20 seconds. The software will remind you to stretch. You might also want to use your computer's settings to adjust the screen brightness.</li><li>If you are playing on an older computer and you experience a lag in the navigation controls, try pressing "C" to open the Customize Graphics menu, and then lower the resolution and graphics quality. </li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/qcTqQnPNZLY" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODgyMjA2LzQ5Njc5OTMucG5n/original/hxnOD5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgyMjA2LzQ5Njc5OTQucG5n/original/rc3TFV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgyMjA2LzQ5Njc5OTgucG5n/original/Co%2BHf9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgyMjA2LzQ5Njc5OTUucG5n/original/LSlIs8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgyMjA2LzQ5Njk5OTUucG5n/original/0dqy4j.png]]
<h4 class="text-center"><br><br>Somewhere deep inside the magical forest forgotten<br>lies a hut, a potion shop!<br><br>~ ~ ~ ✿ ~ ~ ~</h4>
<h4 class="text-center"><em></em></h4>
<h4 class="text-center">The creatures of the lands near and far <br>come visit this tiny place<br>sharing their stories, feelings,<br>thoughts on the mystery that's about to unravel...<br>And it's your job to pour 'em some potions!</h4>
<p><br><br><br><br><strong>FEATURES</strong><br><strong>✿ </strong>2 h ~ playtime<br><strong>✿ </strong>10 000 ~ words of potion shop chattin'<br><strong>✿ </strong>many creatures to meet and even more potions to make<br><strong>✿ </strong>freemode!</p>
<p><strong><br>Part of the <a href="https://itch.io/b/812/care-package-bundle" target="_blank"><em>Care Package Bundle!</em></a><br><br><a href="https://itch.io/b/812/care-package-bundle" target="_blank"><img src="https://img.itch.zone/aW1nLzUzOTAxNjUucG5n/original/elyKdC.png" alt="click to open!" title="click to open!" loading="lazy"></a><br></strong></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/wFWpLNZwUo8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTM1NjgxLzUzNjczMTEuZ2lm/original/5r5VJp.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTM1NjgxLzUzNjc2NDMuZ2lm/original/ZGuZG9.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTM1NjgxLzUzNjc1MzYuZ2lm/original/dFW9%2BH.gif]]
<h3></h3>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/5muGeXdxKTs" frameborder="0" allowfullscreen=""></iframe></div>
<h3>Short Description</h3>
<p>
Long Gone Days is a <strong>2D modern-day military RPG set in our current times</strong>, with a focus on language and cultural barriers, inspired by classic dystopian literature and visual novels.</p>
<p><img src="https://img.itch.zone/aW1nLzM2NDkzOTEuZ2lm/original/xQmlYS.gif" loading="lazy"><br></p>
<p><span></span></p>
<p>After being deployed to his first mission, <strong>Rourke</strong> leaves <strong>The Core</strong>'s base for the very first time, only to discover the dark truth about the operation he's part of and <strong>the consequences of deserting an inescapable war</strong>.</p>
<p>With no place to call home now, he must prevent the war from spreading any further, forming strong bonds along the way that will forever change his life.</p>
<p><img src="https://img.itch.zone/aW1nLzM2NDkzOTQuZ2lm/original/lgreo5.gif" loading="lazy"><br></p>
<ul><li><strong>Communication is Key:</strong> As Long Gone Days is set in the real world, you'll encounter several language barriers. Recruit interpreters in order to communicate with others.</li><li><strong>Keep Morale High:</strong> Choose dialogue options wisely as they impact your party members' Morale, affecting how they perform during battles. While doing so, keep in mind every character has different personality traits and motivations.</li><li><strong>Sniper Mode:</strong> Long Gone Days has two battle systems. Using Rourke's rifle, spot your enemies and take down your targets.</li><li><strong>No Random Encounters:</strong> Long Gone Days features front-view turn-based battles with body-targeting system, and every battle is directly related to the plot.</li></ul>
<h2>Frequently Asked Question</h2>
<p><strong>Q: Can I do a Let's Play/Review/Stream of the demo?</strong><br></p>
<p>
A: Sure, we'd be honored. For reviews, you can also use the information/pictures from the <a href="http://longgonedays.com/press" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Press Kit</a>.</p>
<p>
<strong>Read the entire FAQ <a href="http://longgonedays.com/faq" target="_blank" rel="nofollow noopener" referrerpolicy="origin">here</a>.</strong>
</p>
<h2>Contact<br>
</h2>
<p>
<strong>Inquiries</strong> - info@bura.cl
</p>
<p>
<strong>FAQ </strong>- <a href="http://longgonedays.com/faq" target="_blank" rel="nofollow noopener" referrerpolicy="origin">http://longgonedays.com/faq</a></p>
<p><strong>Web </strong>- <a href="http://www.longgonedays.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">longgonedays.com</a><span></span><br></p>
<p><strong>Discord</strong> - <a href="https://www.discord.gg/longgonedays" target="_blank" rel="nofollow noopener" referrerpolicy="origin">discord.gg/longgonedays</a></p>
<p><strong>Twitter </strong>- <a href="http://twitter.com/lgdays" target="_blank" rel="nofollow noopener" referrerpolicy="origin">twitter.com/lgdays</a><br></p>
<p><strong>Tumblr -</strong> <a href="http://lgdays.tumblr.com" rel="nofollow noopener" referrerpolicy="origin">lgdays.tumblr.com</a></p>
<p>
<strong>Facebook </strong>-
<a href="https://www.facebook.com/LongGoneDaysGame/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">facebook.com/longgonedaysgame</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/5muGeXdxKTs" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjYwODIvNjE2NTMyNS5naWY=/original/25MgY7.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwODIvMTEwMjMxMi5wbmc=/original/QcooDB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwODIvMTk5NjczMy5wbmc=/original/2SEqZ5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwODIvMTEwMjMxMy5wbmc=/original/t2v62G.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwODIvMTk5NjczMS5wbmc=/original/%2BkHn7e.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwODIvMTEwMjMxOS5wbmc=/original/Kl9ujt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwODIvMTk5Njc0NC5wbmc=/original/fRCzAI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwODIvMTEwMjMyMS5wbmc=/original/zNpn4u.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwODIvMTk5NjczMi5wbmc=/original/yz0h4%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwODIvMTEwMjMyMC5wbmc=/original/Jhi60H.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwODIvMTk5NjczNS5wbmc=/original/xCWZ8s.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwODIvMTk5NjczOC5wbmc=/original/%2BvJXjo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYwODIvNjE2NTMzNi5naWY=/original/hM6L4A.gif]]
<h1></h1>
<h2 class="text-center"><em>Long Haul 1983 is now IN PRINT & shipping everywhere. <a href="http://shop.seanpatrickcain.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Order your copy here.</a></em></h2>
<h4> </h4>
<h1>It’s 1983, and the world feels hollowed out.</h1>
<p>LONG HAUL 1983 tells the story of a dangerous journey through an empty world. </p>
<p>You play a long-haul truck driver trying to make their way home. Every day, you’ll hit the road, navigating treacherous highways, fleeing from menacing threats, and dealing with the psychological impacts of isolation.</p>
<p>And at the end of each day, you’ll find a payphone, make a call, and leave a message for the most important person in your life. </p>
<p>They never pick up. You never stop calling.</p>
<p>Using a deck of cards, a few dice, and a microphone, players will create an original narrative of resilience in the face of world-shifting catastrophe.</p>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzU0NTQ0MTkuanBn/original/z2qgMU.jpg" loading="lazy"><br></p>
<p><br></p>
<h1>LONG HAUL 1983 is...</h1>
<ul><li>A solo game, so you can play it by yourself, at your own pace</li><li>A roleplaying game, so you'll create, develop, and embody a character as you play</li><li>A storytelling game, so your choices will be driven by creativity, not strategy</li><li>A journaling game, so you'll end the game with a unique record of your experience to revisit and share</li></ul>
<p><br></p>
<p><br></p>
<h1>The game features...</h1>
<ul><li>A unique single-player experience using evocative storytelling setups, embedded safety features, and branching endings
</li><li>An original dice system that highlights peril and precarity
</li><li>A 26-song soundtrack, including over 2.5 hours of the era's experimental ambient music, plus soul, jazz, pop, and punk tracks connected to specific in-game events
</li><li>A gameplay and performance structure perfectly suited for actual play podcasts and streams</li></ul>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzU0NTQ0MjMuanBn/original/nL2IMz.jpg" loading="lazy"><br></p>
<p><br></p>
<h1 class="text-center">"A brilliant piece of work: in content, design, and layout."</h1>
<p class="text-center">Kevin Petker, designer of Princess World <br>[<a href="https://twitter.com/KevinPetker" target="_blank" style="text-align: center; font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">twitter</a>] [<a href="https://kpetker.itch.io/princess-world-short-story-edition" target="_blank" style="text-align: center; font-size: inherit">itch</a>]</p>
<p><br></p>
<h1 class="text-center">"Visually striking, emotionally haunting - LONG HAUL 1983 compels me to write a story like no other solo RPG. The prompts feel electric and every small detail cohesively builds a worn world, where relentless danger and loneliness threaten to subdue you, but where your understated force of will gives strength to continue hoping beyond hope."</h1>
<p class="text-center">momatoes, game & graphic designer<br>[<a href="https://momatoes.com/" target="_blank" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">website</a>] [<a href="https://twitter.com/momatoes" target="_blank" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">twitter</a>]</p><p><br></p>
<h1 class="text-center">"So damn good. An instant classic."</h1>
<p class="text-center">Ryan K. Lindsay, writer of Eternal & Negative Space<br>[<a href="https://ryanklindsay.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">website</a>]
</p><p class="text-center"><br></p>
<h1 class="text-center">"LONG HAUL 1983 offers an escape like no other — a playlist so expertly crafted that I can smell the asphalt and oil burning on a sunny day — evoking perfectly my new favourite super specific genre of road trip horror."</h1>
<p class="text-center">mv, screenwriter and game designer<br>[<a href="https://twitter.com/mayvisit" target="_blank" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">twitter</a>] [<a href="https://mvmv.itch.io/" target="_blank" style="font-size: inherit">itch</a>]</p>
<p class="text-center"><br></p><h1 class="text-center">"Truly special. Truly immersive."</h1>
<p class="text-center">Pod of Blunders<br>[<a href="https://podofblunders.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">website</a>]
</p>
<p><br>
</p><p><br></p><p><br></p>
<figure><img src="https://img.itch.zone/aW1nLzU1MDg4NjAuanBn/original/YROd6q.jpg" style="color: inherit; font-size: inherit" loading="lazy"><br></figure>
<p><br></p>
<h1>You'll need...</h1>
<ul><li>Copies of the book and the <a href="https://drive.google.com/drive/folders/1izZvuSK_6N-PB_LDMx_no0mtH2wCy-zb?usp=sharing" target="_blank" rel="nofollow noopener" referrerpolicy="origin">player sheet</a>
</li><li>A standard deck of 52 playing cards
</li><li>Four six-sided dice (Fudge/Fate dice are ideal, though not necessary)
</li><li>A device to record your voice (a phone app, an analog cassette recorder, etc.)
</li><li>A way to listen to music (playlists are available on Spotify and Apple Music)
</li></ul>
<p><br>
</p>
<p><br></p>
<p><em>LONG HAUL 1983 is 33 pages (~5,600 words) long.<br></em><em>Writing, Layout, & Design: Sean Patrick Cain<br></em><em>Photography: Luke Stackpoole, Katie Moum, & Jack </em><em>Anstey</em></p>
<p><em>A portion of all sales will be used to support the First Nations’ <a href="https://www.firstnations.org/covid-19-emergency-response-fund/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">COVID-19 Emergency Response Fund</a> to help Native communities respond and recover from the effects of COVID-19.</em></p>
<p> </p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTU5NzczLzU0NTQyODUuanBn/original/IBd31s.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU5NzczLzU0NTQyODYuanBn/original/720YyE.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU5NzczLzU0NTQyODcuanBn/original/9Aq53i.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU5NzczLzU0NTQyODMuanBn/original/WH5Pvf.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU5NzczLzU0NTQyODQuanBn/original/o1qV0F.jpg]]
<p>Long Journey Home<br><br>Cykes and Ramona are alone, the sole survivors of a tragedy that struck their small research spacecraft on its way back from an expedition. Follow them as they do their best to deal with everything that remains. <br></p>
<p><em>Long Journey Home </em>is an interactive fiction game about grief, friendship, and decomposers with two endings. Made in Twine. Music by <span class=""></span><a href="https://misotear.bandcamp.com/music" rel="nofollow noopener" referrerpolicy="origin">@misotear</a>.<br></p>
<p>Content Warnings: Death, Grief, Weird Mushroom Illness, the Void of Space</p>
<p>Disclaimer: This game now feels painfully relevant during the Covid-19 pandemic because of the elements of death, grief, and sickness, but I have been working on this game since January and the initial idea for it is two years old. Any parallels between the game and current events are unintentional.<br><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTUxMzc2LzQwNzcwMTYucG5n/original/yPMuji.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUxMzc2LzQwNzcwMTAucG5n/original/27aM4G.png]]
<p>Who ever said you can't go back?<br></p>
<p>LongStory, a charming and LGBTQ+ friendly dating sim set at the weirdly lovable Weasel Heights Middle School lets you pick your pronouns as well as who, or even if, you would like to date any of your romanceable friends.</p>
<p>On your first day of school you discover that the previous owner of your locker has “mysteriously” disappeared. Do you want to figure out what happened or are you too busy being a social butterfly and trying to avoid your enemies…</p>
<p>LongStory gives you a chance to find true love as a middle school student (yes with all the awkwardness that entails) but we promise it will be so much better this time around!</p>
<p><strong>Episode 1 Locker 1224: </strong> Being a new student at Weasel Heights, you’ve got enough on your plate trying to make new friends and deal with enemies but what happened to the previous owner of locker 1224 and why won't anyone talk about it?</p>
<p><strong>Episode 2 Hanna's Notebook: </strong> Things are getting serious with your crush but watch out there is some real Drama with Hanniferjane do you want to get involved with that? What will your crush think?</p>
<p><strong> Episode 3 The Party: </strong> The Party: Middle School dances are a big deal, who do you go with? Do you bring your crush or show up without a date? Things at Weasel Heights are never what they seem. It's time to learn more about your friend Colin and his big secret.</p>
<p><strong>Episode 4 Drama: </strong> A “new” student is back at Weasel Heights and it's causing all sorts of drama, no matter what you do it doesn’t seem like you can stay out of it. Friendships and relationships are strained, will you be okay?</p>
<p><strong>Episode 5 Make Up: </strong> Not every relationship is perfect. It's time to step up and make things right with your friends. Maybe even take the highroad and reach out to those you consider enemies.</p>
<p><strong>Episode 6: </strong>Middle school friendships and relationships are hard. Attend the intense but informative “Healthy Relationships Workshop.” and maybe the adults will know what they are talking about… for once.</p>
<p><strong>Episode 7: </strong> As your final year winds down it's time to choose what high school you will go to. How do you decide? Most importantly how will the TurkeyHawk?<strong></strong><br></p>
<p><strong>Episode 8:</strong> It’s the summer, Marcel has gone back to Dubai and the rest of your friends have all gotten jobs. You feel a little lonely what are you going to do about it?</p>
<p></p>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/y-7DdUsy-E0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjQ0NjAyLzEyOTY4MzEucG5n/original/4GCmR8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ0NjAyLzEyOTY4MzIucG5n/original/W9%2BxcC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ0NjAyLzEyOTY4MjgucG5n/original/YJ%2BLt7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ0NjAyLzEyOTY4MzQucG5n/original/HiAlga.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ0NjAyLzEyOTY4MzMucG5n/original/PLn8Uj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ0NjAyLzEyOTY4MjkucG5n/original/E4rPWz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ0NjAyLzEyOTY4MzAucG5n/original/rlUcHv.png]]
<p>Who ever said you can't go back?<br></p>
<p>LongStory, a charming and LGBTQ+ friendly dating sim set at the weirdly lovable Weasel Heights Middle School lets you pick your pronouns as well as who, or even if, you would like to date any of your romanceable friends.</p>
<p>On your first day of school you discover that the previous owner of your locker has “mysteriously” disappeared. Do you want to figure out what happened or are you too busy being a social butterfly and trying to avoid your enemies…</p>
<p>LongStory gives you a chance to find true love as a middle school student (yes with all the awkwardness that entails) but we promise it will be so much better this time around!</p>
<p><strong>Episode 1 Locker 1224: </strong> Being a new student at Weasel Heights, you’ve got enough on your plate trying to make new friends and deal with enemies but what happened to the previous owner of locker 1224 and why won't anyone talk about it?</p>
<p><strong>Episode 2 Hanna's Notebook: </strong> Things are getting serious with your crush but watch out there is some real Drama with Hanniferjane do you want to get involved with that? What will your crush think?</p>
<p><strong> Episode 3 The Party: </strong> The Party: Middle School dances are a big deal, who do you go with? Do you bring your crush or show up without a date? Things at Weasel Heights are never what they seem. It's time to learn more about your friend Colin and his big secret.</p>
<p><strong>Episode 4 Drama: </strong> A “new” student is back at Weasel Heights and it's causing all sorts of drama, no matter what you do it doesn’t seem like you can stay out of it. Friendships and relationships are strained, will you be okay?</p>
<p><strong>Episode 5 Make Up: </strong> Not every relationship is perfect. It's time to step up and make things right with your friends. Maybe even take the highroad and reach out to those you consider enemies.</p>
<p><strong>Episode 6: </strong>Middle school friendships and relationships are hard. Attend the intense but informative “Healthy Relationships Workshop.” and maybe the adults will know what they are talking about… for once.</p>
<p><strong>Episode 7: </strong> As your final year winds down it's time to choose what high school you will go to. How do you decide? Most importantly how will the TurkeyHawk?<strong></strong><br></p>
<p><strong>Episode 8:</strong> It’s the summer, Marcel has gone back to Dubai and the rest of your friends have all gotten jobs. You feel a little lonely what are you going to do about it?</p>
<p></p>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/y-7DdUsy-E0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjQ0NjAyLzEyOTY4MzEucG5n/original/4GCmR8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ0NjAyLzEyOTY4MzIucG5n/original/W9%2BxcC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ0NjAyLzEyOTY4MjgucG5n/original/YJ%2BLt7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ0NjAyLzEyOTY4MzQucG5n/original/HiAlga.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ0NjAyLzEyOTY4MzMucG5n/original/PLn8Uj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ0NjAyLzEyOTY4MjkucG5n/original/E4rPWz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ0NjAyLzEyOTY4MzAucG5n/original/rlUcHv.png]]
<p>"Needless to say, when a story connects that way with the reader, the author has done something right, and is towards the top of my list." -- <a href="https://blog.templaro.com/review-lore-distance-relationship/" target="_blank" rel="nofollow noopener">Jack, blog.templaro.com/</a></p>
<p>"The aesthetic here 100% nails the early 2000s, pre-social media internet." -- <a href="http://www.theshortgame.net/251-ifcomp-2020-part-4/" target="_blank" style="font-size: inherit" rel="nofollow noopener">The Short Game podcast</a></p>
<p>""This is absolutely [Bez's] best." -- <a href="https://www.patreon.com/posts/2020-episode-3-44441928" target="_blank" rel="nofollow noopener">Verb Your Enthusiam podcast</a></p>
<p><br></p>
<p>Follow user StaircaseHaven14 on a Neopets-esque site called Ruffians as she faces life's challenges, RPs with her long-distance BFF (or more than BFF?) Bee, and encounters familial hardship, from age 8 to 18.</p>
<p>By Naomi Norbez, aka Bez. Received 16th Place in the Interactive Fiction Competition 2020.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODYyMzU3LzQ4NDEyNjgucG5n/original/34HlQ3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODYyMzU3LzQ4NDEyNzIucG5n/original/fVfj5r.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODYyMzU3LzQ4NDEyNjkucG5n/original/gcV5MT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODYyMzU3LzQ4NDEyNzgucG5n/original/xjiTAR.png]]
<p>"Needless to say, when a story connects that way with the reader, the author has done something right, and is towards the top of my list." -- <a href="https://blog.templaro.com/review-lore-distance-relationship/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Jack, blog.templaro.com/</a></p>
<p>"The aesthetic here 100% nails the early 2000s, pre-social media internet." -- <a href="http://www.theshortgame.net/251-ifcomp-2020-part-4/" target="_blank" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">The Short Game podcast</a></p>
<p>""This is absolutely [Bez's] best." -- <a href="https://www.patreon.com/posts/2020-episode-3-44441928" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Verb Your Enthusiam podcast</a></p>
<p><br></p>
<p>Follow user StaircaseHaven14 on a Neopets-esque site called Ruffians as she faces life's challenges, RPs with her long-distance BFF (or more than BFF?) Bee, and encounters familial hardship, from age 8 to 18.</p>
<p>By Naomi Norbez, aka Bez. Received 16th Place in the Interactive Fiction Competition 2020.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODYyMzU3LzQ4NDEyNjgucG5n/original/34HlQ3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODYyMzU3LzQ4NDEyNzIucG5n/original/fVfj5r.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODYyMzU3LzQ4NDEyNjkucG5n/original/gcV5MT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODYyMzU3LzQ4NDEyNzgucG5n/original/xjiTAR.png]]
<p><strong>LOST</strong></p>
<p>LOST is a 2.5D adventure game that features a strong narrative, interactive dialogue, and original artwork. We hope that LOST makes people empathize with refugees and people who have experienced extreme loss.</p>
<p>Imagine a catastrophic event that forces you, your family, and your friends to flee your home and everything you knew. Imagine seeking help from a neighboring country that ruthlessly stop your attempt to enter their territory. LOST game seeks to explore the topics of empathy, emotions after a tragic loss, and what it means to be a refugee. We choose the name LOST because of its dual meaning. It can mean not knowing one's whereabouts but it can also denote something that has been taken away or cannot be recovered. LOST encompasses elements of both. The game begins in chapter 1 in the fictional country of Xanatos, greek for the god of death. Xanatos is being invaded by what appears to be poisoned creatures. </p>
<p>Our protagonist Lieutenant Juni searches for Captain Diana to assemble a brigade to stop these intruders. They meet on the roof of a nearby building and begin the attack. This initiates a tower defense level where you will shoot cannons at the enemy and prevent them from getting to your wall. This Across the sea, we get to know the story of the “intruders” who are in fact not intruders at all but fleeing a supernatural meteor disaster and are seeking shelter from a poisonous gas emitting from the meteors. This is the country of Intisar. </p>
<p>Our protagonist in this level is now a young boy named Yuri who has lost his whole family in this catastrophic event. Yuri explores his home talking to people who have been infected by the meteor showers. He ventures into the city where he will try to collect items from his past and dodge large spiders that have mutated from the poison gas. During this sequence, Yuri will talk to a few people along the way who will lead him to the end where he will meet two special people and a boat to take him to Xanatos. </p>
<p>Team:</p>
<p>Felipe Simas Magalhaes - Programmer, FX, Writing</p>
<p>Wentao "Vea" Zhou - Programmer, Game Artist, FX</p>
<p>Lara Alley - Game Artist, Programmer, Particle Effects</p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0Nzc0LzM0NTIzMTIucG5n/original/2acKw0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0Nzc0LzM0NTIzMTMucG5n/original/au1zBz.png]]
<p><strong>Lost Order</strong> is a TTRPG mixing alternate history, heroes, magic, and time-travel, drawing inspiration from the <em>Fate/Stay</em> and <em>Fate Grand Order</em> video games by Type-Moon. No prior knowledge of the <em>Fate</em> universe is needed however-- just a love of mixing history and fantasy.<br></p>
<p>To play you need 4-8 players, including a GM, and three six sided die. <strong>Lost Order</strong> is best suited for short campaigns (5-10 session), but can be easily be extended into longer adventurers or used for one-shots. <br></p>
<p>---</p>
<p>Your purchase includes the 20-page fully illustrated rule-book and printable custom character sheets for each of the three asymmetrical classes. Players take on the roles either of human magician <em>Masters</em>, summoned mythological <em>Heroes</em>, or fusions of present and past,<em> Demi-Heroes</em>. Each classes has a wide variety of Skills, Origins, and Birth options to help customize characters quickly and easily. <strong>Lost Order</strong> uses the Powered by the Apocalypse game system, expanding upon the familiar rules to allow for successes that go beyond what is humanly possible. </p>
<p>---</p>
<p>All illustration work was completed by <a href="https://www.instagram.com/melspontaneus/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Mel</a> and <a href="https://www.instagram.com/beeflorart/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Bee</a>. Copy-editing was completed with help by <a href="https://commiss.io/passionfruitpavlova" target="_blank" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">Passionfruitpavlova</a>. Character sheets were made by <a href="https://twitter.com/hktk1059" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">hktk1059</a>.</p>
<p>Writing, design, and play-testing was completed myself. For additional guidance on the rules, to request a copy due to financial difficulties, or just to say hi, please message me at <a href="https://twitter.com/Nrvnqsrestray" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@Nrvnqsrestray</a>.</p>
<p>I will be updating the game as much as I can with your feedback and as always, the most updated version will always available to you free of change, no matter the price charge. This also includes any sample campaigns I add in the future.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzI2OTMxLzQwODc3NjQucG5n/original/UssJ%2BR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI2OTMxLzQwODc3NjUucG5n/original/kCDqch.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI2OTMxLzQwOTM0NDMucG5n/original/wL57FQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI2OTMxLzQwODc3NjcucG5n/original/3etRXB.png]]
<p>The City of <strong>Credence</strong>. </p>
<p>A cursed oasis in the doomed wastes of Acid Death Fantasy. </p>
<p>Drink Deep. </p>
<p><br></p>
<p>Liquid Science Doom is a setting for Troika! and Acid Death Fantasy. </p>
<p>It contains a city and some factions within that city. </p>
<p>It has 8 shrines to 9 gods. </p>
<p>It has 10 market stalls. </p>
<p>It is an independent production and not affiliated with Melsonian Arts Council. </p><p><br></p><p>Buy it in print at <a href="https://www.rookspress.com/products/liquid-science-doom" rel="nofollow noopener" referrerpolicy="origin">Rook's Press!</a></p>
<p><br>All art by Evlyn Moreau. Subscribe to her patreon <a href="https://www.patreon.com/evlynmoreau" rel="nofollow noopener" referrerpolicy="origin">here</a>.<a href="https://www.patreon.com/evlynmoreau" rel="nofollow noopener" referrerpolicy="origin"><br><br></a>Heavily inspired by Vaults of Vaarn by Leo Hunt. Get them here:<br><a href="https://graculusdroog.itch.io/vaults-of-vaarn">Issue 1</a> and <a href="https://graculusdroog.itch.io/vaults-of-vaarn-2">Issue 2.</a></p>
[img width=500 [https://img.itch.zone/aW1nLzU2NTY5NDYucG5n/original/%2Bv%2FeNt.png]]
<p><em>Consider buying my most recent steam game- RD Mars</em><em><br></em><br><em><a href="https://store.steampowered.com/app/1714020/RD_Mars/" rel="nofollow noopener" referrerpolicy="origin">https://store.steampowered.com/app/1714020/RD_Mars/</a></em></p><p><br></p>
<p>*Epilepsy/Vertigo Warning*</p><p><br></p>
<p>“Lucid: Parables of the Ubermensch” is a pixel art 2D platformer with abstract theming where you walk through the dreams of an unknown entity. Lucid is a game that challenges traditional conceptions of what video games are creatively through an uncompromising artistic vision and subversion of traditional narrative. Every level in Lucid has a unique theme, unique level gimmick, and story built into it for the player to uncover.</p>
<p><br></p>
<p>Lucid has:</p>
<p>-Dozens of levels.</p>
<p>-Unique and visually dynamic art for each individual level.</p>
<p>-No nonsense retro 2D platforming with tight controls and refined level design.<br></p>
<p>-Various and ever-changing gameplay mechanics to keep levels interesting.</p>
<p>-A vision to share.</p>
<p><br><br>If you would like to give feedback or report bugs, do so here: <a href="https://forms.gle/rEMxTmR4mS1ytbXEA" rel="nofollow noopener" referrerpolicy="origin">https://forms.gle/rEMxTmR4mS1ytbXEA</a><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/17PzKYSPGSY" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTIwNjEwLzUyMDU1NjAucG5n/original/DHAYbr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIwNjEwLzUyMDU1NTYucG5n/original/CG4ZvN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIwNjEwLzUyMDU1NTcucG5n/original/8DPJ7I.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIwNjEwLzUyMDU1NTUucG5n/original/nLC5iM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIwNjEwLzUyMDU1NTkucG5n/original/lkYwrG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIwNjEwLzUyMDU1NTQucG5n/original/9yuq18.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIwNjEwLzUyMDU1NTMucG5n/original/HfFj8E.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIwNjEwLzUyMDU1NTIucG5n/original/LULDu4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIwNjEwLzUyMDU1NTgucG5n/original/%2F%2FkiGB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIwNjEwLzUyMDU1NTEucG5n/original/btdtup.png]]
<p>Your landlord is knocking on your door. You have one coin left to your name. You insert the coin into your slot machine...and...JACKPOT! Luck be a Landlord, tonight!<br></p>
<p>Luck be a Landlord is a roguelike deckbuilder about using a slot machine to earn rent money and defeat capitalism. This game does not contain any real-world currency gambling or microtransactions.</p>
<h3>Features</h3>
<ul><li>Roguelite gameplay - The symbols you can add to the slot machine are different every time!</li><li>Lots of Symbols to add to your slot machine - Each symbol has different effects and interactions.</li><li>Plenty of Items to choose from - The items are different every time as well, leading to interesting build strategies.</li><li>A terrible landlord to defeat.</li><li>A dog you can pet.</li><li>Capitalism.</li></ul>
<p><strong>A Steam Key is provided with every purchase!</strong></p>
<p><img src="https://img.itch.zone/aW1nLzQ4OTAxOTIucG5n/original/6GS9de.png" loading="lazy"></p>
<p>This Steam Early Access game is currently not a finished game and may or may not change significantly over the course of development. To learn more about Steam Early Access, please visit <a href="http://store.steampowered.com/earlyaccessfaq/" rel="nofollow noopener" referrerpolicy="origin">http://store.steampowered.com/earlyaccessfaq/</a></p>
<iframe src="https://store.steampowered.com/widget/1404850/" frameborder="0" width="646" height="190"></iframe>
<p><strong>Join the community <a href="https://TrampolineTales.com/discord" target="_blank" rel="nofollow noopener" referrerpolicy="origin">on discord</a>!</strong></p>
<p><a href="https://TrampolineTales.com/discord" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzQ4OTAxODMucG5n/original/0ep6V%2B.png" loading="lazy"></a><br></p>
<p><a href="http://TrampolineTales.com/discord" target="_blank" rel="nofollow noopener" referrerpolicy="origin"></a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/5Vw-4cSsr7M" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzgyMjM4LzYzODA4MDUucG5n/original/EUKHlL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyMjM4LzYzODA4MDcucG5n/original/QF6hyz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyMjM4LzYzODA4MDQucG5n/original/odg3d2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyMjM4LzYzODA4MDMucG5n/original/QshAQF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyMjM4LzYzODA4MDYucG5n/original/oFOoo2.png]]
<p>"A clever little game, with stylish retro pixel art animation and a thought-provoking narrative." (<a href="https://www.freegameplanet.com/luminous-download-game/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Free Game Planet</a>)</p>
<p>"Luminous is the sort of high-minded but unpolished game that made me fall in love with the indie community." (<a href="https://itch.io/blog/34277/itchio-recommends-free-games-for-your-weekend">itch.io Recommends</a><a href="https://itch.io/blog/34277/itchio-recommends-free-games-for-your-weekend" target="_blank"></a>)</p>
<p>Guide Keith through a darkened wasteland on a quest to rekindle the light. Can you bear the weight of your destiny as your light dwindles and the shadows twist into ever-stranger shapes? Can you trust the creature that guides you through this unsettling platforming adventure?</p>
<p>This game is definitely not a metaphor for anything. No way.</p>
<p>Featuring:</p>
<ul><li>A narrator that remembers your successes... and your failures.</li><li>Four unique story endings</li><li>A haunting original soundtrack by <a href="https://soundcloud.com/leamkeita" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Liam H. B.</a></li><li>Plenty of Things lurking in the dark</li></ul>
<p><a href="https://soundcloud.com/leamkeita" rel="nofollow noopener" referrerpolicy="origin"></a></p>
<p>Recommended systems: Mac OS X 10.9+ or Windows Vista SP1+</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/BKiFUhlRwGY" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjU0ODc1LzEyMjQ5NzYucG5n/original/5n5%2BEE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU0ODc1LzEyMjQ5NzcucG5n/original/qGJaVO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU0ODc1LzEyMjQ5NzgucG5n/original/nROLXV.png]]
<h1 class="text-center">Funomena's award-winning Luna is now on itch.io</h1>
<h4 class="text-center"><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/_JPBlUvFMiE" allowfullscreen="" frameborder="0"></iframe>
</h4>
<h1 class="text-center">Overview</h1>
<p>A Bird's peaceful summer slumber is disturbed by the majestic call of a mysterious Owl. Enticed to swallow the last piece of the waning Moon, Bird is blown far from its Golden Gate home.</p>
<p>Re-awaken shadowy forests and bring life back to sparkling lakes. Discover hidden creatures, help Bird reunite the fragmented Moon... and find its way home. </p>
<ul><li><strong>Solve celestial puzzles</strong> to unlock each level's tree, plants and animal spirits.
</li><li><strong>Place, customize and interact</strong> with them in miniature, musical terrariums. </li><li><strong>Bring each world to life</strong>, revealing Austin Wintory’s haunting, enchanting score.</li></ul>
<p>Brought to you by <a href="http://www.funomena.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Funomena</a>’s uniquely diverse team of veteran developers (<em>Journey, Flower, Boom Blox, The Sims 2</em>), Luna is an interactive fable about learning by the light of unexpected mistakes.<br></p>
<h4 class="text-center"><img src="https://img.itch.zone/aW1nLzEzNTM2NDMuZ2lm/original/K2Zbxt.gif" loading="lazy"></h4>
<hr>
<p>Luna started off in partnership with Intel and their RealSense Camera technology, but as the project evolved, and hand-tracked VR controllers began to emerge, we partnered with Oculus to bring the game to the Touch. The non-VR PC version was released shortly after the original launch date. The storybook edition later updated the core game with a voice over narrative & localized subtitles to further elucidate Luna's heartfelt story. </p>
<p>You can find out more about how the idea for Luna came to be through these <a href="https://twitter.com/hunicke/status/931596077773369344" target="_blank" rel="nofollow noopener" referrerpolicy="origin">tweets by Robin Hunicke</a>. Luna is a very personal game for Robin, and we hope it'll touch you like it has already touched others across the world.
<br></p>
<h4 class="text-center"><img src="https://img.itch.zone/aW1nLzEzNTM2NjMuZ2lm/original/1X%2F%2Fuw.gif" loading="lazy"></h4>
<div></div>
<h1 class="text-center">Reviews</h1>
<p><em>“Without so much as a single word, Luna traps us within its narrative fantasy, quickly switching its focus to puzzles so we discover the truth in metered, literary chunks.”</em>
<a href="http://gameranx.com/features/id/127196/article/luna-first-impressions-an-awe-inspiring-journey/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Gameranx</a></p>
<p><em>“This process is truly special and unique because the more time you take with it, the more beautiful and rewarding the world will look...”</em>
8.6 – <a href="https://www.thenerdmag.com/luna-review-a-beautiful-immersive-fairytale/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">The Nerd Mag<br></a></p>
<p><img src="https://img.itch.zone/aW1nLzE1ODYyMDEucG5n/original/4N6tWr.png" loading="lazy"><br></p>
<hr>
<p class="text-center">Download <strong>Austin Wintory's haunting score</strong> to Luna right <a href="https://austinwintory.bandcamp.com/album/luna" target="_blank" rel="nofollow noopener" referrerpolicy="origin">here</a>.<br></p>
<h4 class="text-center"><img src="https://img.itch.zone/aW1nLzEzNTM3MDAuZ2lm/original/em98%2B%2B.gif" loading="lazy"></h4>
<h1 class="text-center">Recommended<strong> Specs<br></strong></h1>
<ul><li><strong></strong>Windows 10
</li><li><strong></strong>Intel Core i5 4590
</li><li>8 GB RAM
</li><li>NVidia GTX 960/965M/1050 (or greater) DX12-capable discrete GPU or AMD RX 460 (or greater) DX12-capable discrete GPU</li><li>Luna is best played in VR with motion controls or in 2D with a gamepad</li></ul>
<p><em>This itch.io listing now also includes the SteamVR version of Luna, compatible with headsets able to use that platform. </em><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/_JPBlUvFMiE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjcxMjgwLzEzMTcyNjQuanBn/original/2qKSEr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcxMjgwLzEzMTcyNjMuanBn/original/gGMpXl.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcxMjgwLzEzMTcyNTEuanBn/original/dXpRnr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcxMjgwLzEzMjI5MzcucG5n/original/PVxSRO.png]]
<p>This is a customized GUI for ren'py. It includes the PNG files and all of the code already programmed into a renpy file (Not Built). You can take the code and assets out, or rename the renpy game file and use it.</p>
<p><strong>This was made in Ren'py 7.4.4.1439</strong>
</p>
<p><img src="https://img.itch.zone/aW1nLzU4MzY4OTcucG5n/original/lzTBqo.png" loading="lazy"></p>
<p>
</p>
<h3>Includes:</h3>
<ul><li>All Standard Screens
</li><li>Textbox, Choices, and Quick menu
</li><li>An "Extras" screen for Achievements, Endings and a CG gallery (Code Included!)
</li><li>Code for everything already plugged in
</li><li>Formatted for 1080x1920
</li></ul>
<p>You can plug your script into the game file and change the name, or take the assets and code as needed.
</p>
<p>The game uses an open source font "BerkshireSwash-Regular" which you can find for free: <a href="https://fonts.google.com/specimen/Berkshire+Swash" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Here</a>
</p>
<h3>Rights:</h3>
<p>If purchased you may use this project in commercial projects or free projects. You may not resell part of, or the whole GUI on it's own. You can modify the GUI and code to suit your needs.
</p>
<p>You can credit me as Jaime Scribbles if you want, but it is not required.
</p>
<h3>Instructions:</h3>
<p>Download, unzip, and enjoy! Some additional instruction included in the download, see below!
</p>
<p><img src="https://img.itch.zone/aW1nLzQyMzMwMDQucG5n/original/u1oCc5.png" style="max-width: 100%" loading="lazy">
</p>
<figcaption>You can find the instructions.txt file under the custom GUI file after it is unzipped. This is the same place where you would find the game folder, and the errors, log and traceback.</figcaption>
<h3>Sample Assets:</h3>
<ul><li><a href="https://alte.itch.io/uncle-mugens-backgrounds" target="_blank">Background Art by Uncle Mugen</a>
</li><li><a href="https://dejinyucu.itch.io/agustina-visual-novel-sprite" target="_blank">Sprite by DejiNyucu</a>
</li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzYzNy81ODM3MTA5LnBuZw==/original/eLyEoi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzYzNy81ODM3MTA2LnBuZw==/original/DckHsP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzYzNy81ODM3MTQzLnBuZw==/original/D2C4rO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzYzNy81ODM3MTQyLnBuZw==/original/SIs2Mb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzYzNy81ODM3MTEwLnBuZw==/original/unh9Ro.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzYzNy81ODM3MTA3LnBuZw==/original/nwMFvO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzYzNy81ODM3MTA4LnBuZw==/original/UgqQX4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzYzNy81ODM3MTE1LnBuZw==/original/Md3gi4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzYzNy81ODM3MTExLnBuZw==/original/Hwy%2B8N.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzYzNy81ODM3MTE0LnBuZw==/original/uLHdiY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzYzNy81ODM3MTEzLnBuZw==/original/tgcMru.png]]
<p>This is my little experiment in ren.py, as well as a bit of character building that might be incorporated in my larger upcoming project, Dramatis Fursonae. It is a short bit of backstory, where we learn about Lutra's relationship with her (off-screen) friend Gale.</p>
<p><strong>Content warnings</strong>: bullying, transphobia, biphobia, self harm (really warning about this one), self hatred, ableism.</p>
<p>Art by <a href="https://twitter.com/teh_Foxx0rz" dir="ltr" class="" rel="nofollow noopener" referrerpolicy="origin">@ teh_Foxx0rz </a>. This art will also be incorporated in my full project! </p>
<p>BG - Wikimedia</p>
<p><br></p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTIxMTU4LzUyMDg0ODUucG5n/original/B%2FI%2B9m.png]]
<p>Deceptively simple. Infinitely complex. LYNE is a minimalist puzzle game that will knot your brain as it calms your soul.</p>
<p>Connect the shapes. Fill the board. Lose yourself in the interflowing paths of LYNE.</p>
<ul>
<li>Hundreds of pre-built puzzles</li><li>An infinite number of procedurally-generated puzzles, released daily</li><li>Slick, intuitive interface</li><li>Soothing dynamic audio</li><li>Unlockable colour palettes</li></ul>
<p>Accolades</p>
<ul>
<li>Finalist for Audio Design at Freeplay 2013</li><li>Honorable Mention for Design at Freeplay 2013</li></ul>
<p>“From the get go, LYNE exudes a very zen feel. The ambiance is calming, the layout simple and clean. ... if you're in it for the challenge to your brain, dim the lights, find a quiet place, and get to solving.” - JayIsGames.com</p>
<p><br>“The whole thing is a gentle puzzle game that’s thoroughly enjoyable, which is rare because the majority of puzzle games frustrate the hell out of me.” - IndieStatik.com</p>
<p><a href="http://www.lynegame.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin">www.lynegame.com</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjc0LzQwOTYucG5n/original/NJdVV8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjc0LzQwOTcucG5n/original/CR%2F2gg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjc0LzQwOTgucG5n/original/Gd7a3x.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjc0LzQwOTkucG5n/original/BPO8h3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjc0LzQxMDAucG5n/original/zv9%2FfQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjc0LzQxMDEucG5n/original/uGHpcx.png]]
<<list-links "[tag[macOS]sort[title]]">>
<h3>HEROES NEVER DIE, THEY JUST REDEPLOY IN HELL!</h3>
<p>In the final days of WW2, a desperate Nazi war machine embraces the occult. The maniacal Major Strauss plans to open the gates of Hell itself. The Mad Devils are deployed to thwart this unhinged plan, but sometimes, heroism isn’t enough. Defeated and damned, the Mad Devils regroup in the underworld for one final mission.</p>
<h3>SIX DEMONIC GI's, SIX SETS OF POWERS, SIX PATHS TO VICTORY</h3>
<p>Cast into the abyss, the revenant Sergeant Jack Asher explores hell to reassemble his fallen squad. Each team member has been warped here, twisted and gifted demonic powers. Your expert crew are now armed with elemental and ethereal magics. Master them all and finish your fight.</p>
<h3>FIGHT FIRE WITH HELLFIRE</h3>
<p>It’ll take more than guns to smash the Nazi’s demonic ambitions. You’ll need the most chthonic weapons you can get your hands on and enough magic to light up the stygian void. Collect demonic crystals to empower weapons, develop your powers, and earn experience through violence.</p>
<h3>HELL ITSELF: MORE THAN FIRE AND BRIMSTONE</h3>
<p>The netherworld is a strange and varied place. Large parts are a perpetually-burning wasteland, others are twisted reflections of the mortal world, dense with choking overgrowth, frozen by sombre winds or fortified by damned Nazi legions.</p>
<h3>NAZIS: WORTH KILLING TWICE JUST TO MAKE SURE</h3>
<p>Hell was bad enough before WWII. Now it’s a warzone, populated with undead, ravenous demons and a legion of internal Nazis. They didn’t get the message when they died the first time - time to repeat the lesson, loud and clear.</p>
<h3>FEATURES</h3>
<ul><li>Play as one of six unique characters with their own upgradable weapons and powers and fight side-by-side with either a friend or AI squad mate</li><li>Enjoy a rich story campaign penned by UK author, <em>Dr. Greg Buchanan</em>, whose credits include No Man’s Sky: Atlas Rises, <em>Paper Brexit</em> and <em>Metro Exodus</em></li><li>Use upgradeable demonic powers and WWII inspired weaponry as you wage war against Nazi Monsters</li><li>Unique cover system, a mix of levels with procedurally generated areas and destructible set pieces</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/WTtFWizOGjU" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MTIyOS82MDEyNTY1LmpwZw==/original/%2BtD1iT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MTIyOS82MDEyNTY3LmpwZw==/original/OtL2Nd.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MTIyOS82MDEyNTY4LmpwZw==/original/4tK6rg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MTIyOS82MDEyNTY5LmpwZw==/original/7WeJHl.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MTIyOS82MDEyNTcxLmpwZw==/original/WKb3OY.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MTIyOS82MDEyNTcyLmpwZw==/original/JxwDcK.jpg]]
<p>You are a mage.</p>
<p>A true mage, a tree wizard.</p>
<p>The last of your kind.</p>
<p>I wonder why?</p>
<p>You're locked in a box for a reason.</p>
<p><br></p>
<p>A solo project by Rowin "Rory" van der Schee made in a school course of 8 weeks time. I really wanted audio but uh this really was too much work to try and do that as well so I just left it to make sure I would be ok after this. I also had some stuff running alongside this so that made it all a little more challenging. I had fun though!</p>
<p>Thanks to my friends for keeping me sane during all this :)</p>
<p><br></p>
<p>If you are at all curious about how games get to be made, I put some behind the scenes stuff on my twitter:</p>
<p><a href="https://twitter.com/RealRoryPumpkin/status/1391466520795127812" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/RealRoryPumpkin/status/1391466520795127812</a>
</p>
<p>If you wanna know more about this game or me, just throw me a question there!</p><p>Or right here in the comments!!</p>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/WZ9Yue6JMWE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA3NTQ0Mi82MTY2NDYwLnBuZw==/original/4bPDyu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA3NTQ0Mi82MTY2NDc3LnBuZw==/original/R40MCH.png]]
<h3 class="text-center"><em>Magic Trick</em> is a skateboarding adventure game about community! As the new WizKid in town, perform magic using rad skating combos, explore the whimsical city, and socialize with your wacky new neighbors who could use more magic in their lives!<br>✨🛹✨🛹✨🛹✨🛹✨🛹</h3>
<h3 class="text-center">Follow us on Twitter!! <br><a href="https://twitter.com/MagicTrickGame" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/MagicTrickGame</a></h3>
<p>Magic Trick is a Unity 3D game, created by the L8r Sk8rs Team:</p>
<p><span class="">✨</span>Alex Arancibia - Co-producer, Lead UI Designer</p>
<p><span class="">✨</span>Gram Nitschke - Lead Quest Programmer, Gameplay Designer</p>
<p><span class="">✨</span>Georgio Klironomos - Co-producer, Lead UX Designer<br></p>
<p><span class="">✨</span>Brady Moore - Lead VFX Programmer, World Designer</p>
<p><span class="">✨</span>Annabel Maokhamphiou- Lead 3D Environment Artist, Co-Art Director, 3D Prop Artist<br></p>
<p><span class="">✨</span>Casey Selzer- Lead World Designer, Gameplay Programmer<br></p>
<p><span class="">✨</span>Rachel Ramirez- Lead 3D Character Artist</p>
<p><span class="">✨</span>Toto Lin - Lead Writer, 2D Artist, World Designer</p>
<p><span class="">✨</span>Elliot Segal- Tech Director, Lead Programmer, Build Manager<br></p>
<p><span class="">✨</span>Hongyu Chen- Lead Musician, Sound Designer</p>
<p><span class="">✨</span>Corey Hunt - Lead Sound Engineer, Sound Designer <br></p>
<p><span class="">✨</span>Erica Li- Lead 3D Prop Artist, 3D Environment Artist, Concept Artist<br></p>
<p><span class="">✨</span>Merita Lundstrom- Lead Concept Artist, Co-Art Director, 2D Artist<br></p>
<p><span class="">✨</span>Herman Wu- Lead 3D Animator<br></p>
<p><em>P.S. A gamepad is recommended to play Magic Trick, but keyboard also works!
</em></p>
<p><em>P.P.S. Feedback is still greatly appreciated!</em><em><strong></strong></em>🛹<em><strong>Send it to magictrickgame@gmail.com </strong></em>🛹</p>
<p><em><strong>P.P.P.S. Have Fun Sk8rs!!!<br></strong></em></p>
<p><img src="https://img.itch.zone/aW1nLzQwODE2ODQuZ2lm/original/ZbEXLT.gif" loading="lazy">
<em><strong><br></strong></em></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/v5AOs1u6LAo" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3MjY1LzU0NzAyNjYucG5n/original/vxPtqV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3MjY1LzU0NzAyNzMucG5n/original/5fJfY%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3MjY1LzU0NzAyNzQucG5n/original/m40L7O.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3MjY1LzU0NzAyNzYucG5n/original/XegDVI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3MjY1LzU0NzAyODQucG5n/original/7C94T0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3MjY1LzU0NzAyODMucG5n/original/uxq6hz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3MjY1LzU0NzAyNzkucG5n/original/OVpRNV.png]]
<p style="text-align: justify">
<strong>FUSSY PRISSY DREAMING WANDER<br>
</strong><strong>COUNTRY SOLD TO YOU FOR ONLY €5<br>
</strong><strong>€5 €5 WITH MUSIC BY NEW VADERS<br>
</strong><strong>AND COLOURS AND THINGS.</strong>
</p><ul>
<ul>
<li><strong>MULTIPLE SMALL TREES AND VASE</strong><strong>S</strong><strong></strong></li>
<li><strong>CAPSULE TOY COLLECTION MECHANICS</strong></li>
<li><strong>INVESTIGATE THE MAGIC RUIN</strong></li>
<li><strong>A SUPER RUIN FOR YOU TO WALK THROUGH MEET YOUR FRIENDS.</strong></li>
</ul>
</ul><p>
<strong>
###########################################################</strong>
</p><p>
Categorically, it is a narrative JRPG. You walk around,
there are doors and trees. You go here and you go there.
There are fragments of plot relayed out of sequence but
you do not care because the music and the colours. When
the narrative peaks, you say "Good!" and then forget it.
The years neglect this fertile country but the trees and
doors still standing somewhere form a silent windless day.
</p><p>
<strong>
############################################################</strong>
</p><p>
The game is available for Mac Linux and PC.<br>
It is best played with a mouse and not trackpad,
think of it like a twin-stick game.
<br>
Good luck and get the magic wand.
</p><p>
<br>
</p><p>
**UPDATE** Soundtrack album now available!! FREE for your PC!! <a href="https://trashtronix.bandcamp.com/album/magic-wand" rel="nofollow noopener" referrerpolicy="origin">https://trashtronix.bandcamp.com/album/magic-wand</a><a href="https://trashtronix.bandcamp.com/album/magic-wand" rel="nofollow noopener" referrerpolicy="origin"></a>
</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/t7_Gs73iP2s" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODQvMjY1MTk2LnBuZw==/original/pT436y.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODQvMjY1MTk1LnBuZw==/original/J4myKh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODQvMjY1MTk0LnBuZw==/original/TcaIhb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODQvMjcwMjQ1LnBuZw==/original/mmEW%2Fn.png]]
<p>A fun look back at over 30 years of console computers through the generations. Each console is personified as a magical senshi, with their own look and aesthetic. Take a flip through the pages and enjoy over forty pieces inspired by the Atari 2600, the Sega Genesis, and the Nintendo Entertainment System!</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTI3MDc2LzUyNTA0MzguanBn/original/6f06oI.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI3MDc2LzUyNTA0NDAuanBn/original/m1b3c%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI3MDc2LzUyNTA0MzkuanBn/original/i7JRxy.jpg]]
<p class="text-center"><img src="https://img.itch.zone/aW1nLzk1MDI0My5wbmc=/original/Zr8lPt.png" loading="lazy">
</p>
<hr>
<p class="text-center"><strong>Make It Last</strong> is a sweet visual novel that follows the lives of <strong>Harvey Chapman & Jordan Min</strong>; two men who met, fell in love, and spent their lives together.<br><br>Harvey and Jordan's daughter, Candace, is coming over for dinner tonight. While the two prepare for it, they both explore some important memories from their pasts.</p>
<p><br></p>
<p class="text-center">This game was made for <a href="https://itch.io/jam/self-care-jam-2" target="_blank" style="font-size: inherit">Self Care Jam 2</a>.<br></p>
<hr>
<p class="text-center">
</p>
<p class="text-center"><br></p>
<iframe frameborder="0" src="https://itch.io/embed/707575?linkback=true&border_width=5&bg_color=f7f1f9&fg_color=222222&link_color=af6ac1&border_color=af6ac1" width="560" height="175"><a href="<a href="https://sbds.itch.io/make-it-last-while-you-can">Make" class="redactor-linkify-object">https://sbds.itch.io/make-it-last-while-you-can">Make</a> It Last: While You Can by Strawberry Dagger Studio</a></iframe>
<p class="text-center">If you liked Make It Last, check out<br><strong>Make It Last: While You Can</strong> for free!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/pz-N4M0fTe4" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjAzMDQ0Lzk0OTM0MS5wbmc=/original/9xHts5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjAzMDQ0Lzk0OTA5Ny5wbmc=/original/bg%2FbS9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjAzMDQ0Lzk1MDIzMC5wbmc=/original/1ikdPn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjAzMDQ0LzU1MzAxOTIucG5n/original/sjDA9J.png]]
<p><br></p>
<h3 class="text-center">Some goodbyes are messy and complicated... </h3>
<h2 class="text-center">Does he <em>deserve</em> your forgiveness?</h2>
<p><br></p>
<hr>
<h4>Harvey and Jordan are raising their nine year old daughter, Candace, and are spending a lazy weekend morning together.<br><br>However, that cozy morning is interrupted with some news that can't truly be ignored.</h4>
<p></p>
<hr>
<p><strong><br></strong></p>
<p><strong>Make It Last: While You Can</strong> is a visual novel that is set during the mid-2000's and is a stand alone side story that takes place in the same world as <a href="https://sbds.itch.io/dfu-otome">Destiny Fails Us: A New Life</a> and <a href="https://sbds.itch.io/makeitlast">Make It Last</a>, approximately 10 years before the events of those games.<br>You don't need to have any knowledge from the other games to play Make It Last: While You Can. <br><br></p>
<p><strong>See What Certain Characters Looked Like Ten Years Ago<br></strong>This game does feature several appearances by characters from Destiny Fails Us and Make It Last, such as: Reginald Sly, Mr. (Jackson) Sly, Lily Day, Charlotte Hastings, and Samson Hastings. <br><br></p>
<p>This visual novel has full 3D character models, and each character has animated gestures, facial expressions, and poses. There were supposed to be animated cutscenes, but I couldn't get them to actually play in the final build of the game.<br><br></p>
<p>Development for <strong>Make It Last: While You Can </strong>started in August 2020, and the game was completed in one month for the Summer Novel Festival and Yaoi Game Jam 2020.</p>
<p><br></p>
<hr>
<p class="text-center"><em><br></em></p>
<p class="text-center"><em>This game features two gay men in a long term relationship as the protagonists, with a side story that follows their daughter and her best friend, Jess. </em><br></p>
<p class="text-center"><em><strong>Content Warnings</strong>: Mention of death, mention of cancer, visits to the hospital, and swearing. There is a relatively short scene (about 30 lines in length) where Harvey gets into an argument with his father about Harvey's relationship with Jordan.</em><br></p>
<p class="text-center"><br></p>
<hr>
<p class="text-center"><em><img src="https://img.itch.zone/aW1nLzQyMTI2OTgucG5n/original/aTjt3B.png" loading="lazy"><br></em></p>
<p class="text-center"><iframe frameborder="0" src="https://itch.io/embed/203044?linkback=true&border_width=5&bg_color=141414&fg_color=ffffff&link_color=497bd1&border_color=497bd1" width="560" height="175"><a href="<a href="https://sbds.itch.io/makeitlast">Make" class="redactor-linkify-object">https://sbds.itch.io/makeitlast">Make</a> It Last by Strawberry Dagger Studio</a></iframe>Haven't played the first <strong>Make It Last</strong> game? </p>
<p class="text-center">It's free, cute, and very sweet!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/fAZTr91W79I" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzA3NTc1LzU1MDY5NzkucG5n/original/rVIY07.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA3NTc1LzQxOTE5OTAuanBn/original/fkOeWR.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA3NTc1LzQxOTE5OTguanBn/original/UV%2FH1%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA3NTc1LzQxOTE5ODkuanBn/original/Wk1Ung.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA3NTc1LzQxOTE5ODcuanBn/original/85Igsa.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA3NTc1LzQxOTE5OTcucG5n/original/opv5we.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA3NTc1LzQxOTE5ODUucG5n/original/OdOzLP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA3NTc1LzQxOTE5OTIuanBn/original/Ui1Pwh.jpg]]
<p>I've been thinking a lot about hope as of late. It is no wonder I am so strongly attracted to Solarpunk, which is how I came across the inspiration for Maker.</p>
<p><strong>Maker </strong>is a journaling RPG about hope. It came to me as I read <em></em><a href="https://howlround.com/write-future" target="_blank" rel="nofollow noopener">"Write to the Future", an essay by Georgina Escobar</a> about imagining impossible futures, and from imagining them making them possible.</p>
<p>Making impossible futures possible.</p>
<p>As I mentioned, I have been thinking a lot about hope as of late, specially as things only get worse in my country, and as I am sick myself.</p>
<p>That word, <em>"make"</em> kinda hit me in an odd way and it reminded me of the song </p>
<p><a href="https://youtu.be/cYx-0WjC8Zo" target="_blank" rel="nofollow noopener">Maker, by Anjimile</a>. Then I though of how by imagining an impossible future, you make it possible. And by doing so, you yourself are a Maker.</p>
<p>So every day as I imagine myself embarassing my now 2-year-old kid to their peers in teenagehood, telling them stories about making me get up in the middle of the night to prepare a bottle of milk, or running around the house after a naked baby trying to escape the shower, I realise I feel hope. </p>
<p>And I hope that by imagining this not at all impossible future, I am a Maker, and that by imagining any futures at all, it is Made.</p>
<p>Think about the past, and how you changed from it. Write it down and it is Made.<br></p>
<p>Think about the now, and how it doesn't care about what passed or hope for what comes. Write it down and it is Made.</p>
<p>Finally, imagine the future, and as you imagine, it becomes possible. Write it down and it is made.</p>
<p>Take this game and be a Maker.<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/cYx-0WjC8Zo" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MzA3OC82MDQ0Njk3LnBuZw==/original/99S69u.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MzA3OC82MDQ0Njk1LnBuZw==/original/kfTB7Q.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MzA3OC82MDQ0Njg5LnBuZw==/original/fzr0SS.png]]
<p>I've been thinking a lot about hope as of late. It is no wonder I am so strongly attracted to Solarpunk, which is how I came across the inspiration for Maker.</p>
<p><strong>Maker </strong>is a journaling RPG about hope. It came to me as I read <em></em><a href="https://howlround.com/write-future" target="_blank" rel="nofollow noopener" referrerpolicy="origin">"Write to the Future", an essay by Georgina Escobar</a> about imagining impossible futures, and from imagining them making them possible.</p>
<p>Making impossible futures possible.</p>
<p>As I mentioned, I have been thinking a lot about hope as of late, specially as things only get worse in my country, and as I am sick myself.</p>
<p>That word, <em>"make"</em> kinda hit me in an odd way and it reminded me of the song </p>
<p><a href="https://youtu.be/cYx-0WjC8Zo" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Maker, by Anjimile</a>. Then I though of how by imagining an impossible future, you make it possible. And by doing so, you yourself are a Maker.</p>
<p>So every day as I imagine myself embarassing my now 2-year-old kid to their peers in teenagehood, telling them stories about making me get up in the middle of the night to prepare a bottle of milk, or running around the house after a naked baby trying to escape the shower, I realise I feel hope. </p>
<p>And I hope that by imagining this not at all impossible future, I am a Maker, and that by imagining any futures at all, it is Made.</p>
<p>Think about the past, and how you changed from it. Write it down and it is Made.<br></p>
<p>Think about the now, and how it doesn't care about what passed or hope for what comes. Write it down and it is Made.</p>
<p>Finally, imagine the future, and as you imagine, it becomes possible. Write it down and it is made.</p>
<p>Take this game and be a Maker.<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/cYx-0WjC8Zo" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA0MzA3OC82MDQ0Njk1LnBuZw==/original/kfTB7Q.png]]
<p>Manoir Fatemou is a printable tile set <strong>compatible </strong>with any miniature game, RPG or Dungeon-Crawer.</p>
<p>The set contains <strong>50 different high quality tiles</strong> (300dpi) that depict a dungeon system. The re-usability and limitless and you can design a new and unique castle interior complexes for every game.
</p>
<p>These full color map tiles feature a 1-inch grid for maximum compatibility.
</p>
<p>Set up is easy, all you have to do is <strong>print </strong>the files, <strong>cut </strong>them out and <strong>build </strong>your own dungeon.
</p>
<p><strong>More rooms coming soon</strong> … So please add a comment and let me hear your thoughts and ideas to decide which tile is going to be next.<span></span>
</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MzU3NS82MDI3NjkzLmpwZw==/original/O2TndG.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MzU3NS82MTYwNDI1LmpwZw==/original/I9XUdu.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MzU3NS82MDI3NjY0LmpwZw==/original/ixcshb.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MzU3NS82MDI3ODEzLmpwZw==/original/8bRiGV.jpg]]
<p>Marchland is a strategy board game where players collect cards and compete to claim regions, connecting them to expand their territory and become the most powerful empire in the land.<br></p>
<p>Players take turns to collect cards of various types, and use them to claim regions - earning more points for claiming larger regions, connecting regions across the map, and taking control of clusters of neighbouring regions.</p>
<p>Music by <a href="https://twitter.com/king_spooner" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Jack King-Spooner</a></p>
<p>Art by <a href="https://twitter.com/glitchirs" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Glitchirs</a> and <a href="https://www.artstation.com/janetteramos" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Janette Ramos (Imaginaires)</a></p>
<p>Created by <a href="https://glitchirs.itch.io/" target="_blank">Glitchirs</a><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/xAjNbfdD5Yo" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzI4MTM2LzQwNDQxMDMucG5n/original/82wpkl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI4MTM2LzQwNDQwOTcucG5n/original/WlA2j9.png]]
<p>Marshmallows and monsters is a weird camping microgame. You and your friends are having a night (or even more) out in the woods, planning to roast marshmallows and trade horror stories. Only...there are things in the woods. They are not benevolent (but not necessarily evil). This is my entry for the #pleasurecardrpg game jam.<br></p><p></p><p>In order to play, you'll need at least one copy of the rules, something to write and something to write on and a single six-sided die. That's it.</p><p></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTcwODc1LzU1MTE5MjIucG5n/original/o6hu4G.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTcwODc1LzU1MTE5MjEucG5n/original/z6LxBj.png]]
<p>Martian Space Blaster is a asteroids like top-down shooter where you fight squid monsters in space that was made during the Miziziziz game jam. That's it. There is not much to it. This was my first game jam and while I wished I could have done more, i'm proud of my game.</p>
<p><br></p>
<p>The art assets in the game are from the Kenney 1-bit art pack:</p>
<p><a href="https://kenney.nl/assets/bit-pack" rel="nofollow noopener" referrerpolicy="origin">https://kenney.nl/assets/bit-pack</a></p><p>If you liked my game please leave a comment.</p>
[img width=500 [https://img.itch.zone/aW1nLzQxMTM5MzUucG5n/original/iKm9Qb.png]]
<p>A Tagalog-English micro RPG analog game about concerned citizens investigating a dubious project in a local town. Here's the plothook: </p>
<p>
<em>Nabalitaan
mo na sa huling town meeting na hindi mo in-attend-an pero tsinismis
sayo ng landlord o kapitbahay mo na may ipapatupad na bagong project
si Kapitan Kunat. Bilang isang mamamayang may pake sa lipunan, misyon
nyong malaman kung ano ang tunay na layunin ng project at isiwalat sa
buong purok ang tunay na kulay ni Kapitan! </em>
</p>
<p>Enjoy this pamphlet-sized game of town gossips, weird rumors, and corrupted local government! Corrupted by who or what? Play to find out!<br></p>
<p>Feel free to comment or review! </p>
<p>Game is submitted as part of <a href="https://itch.io/jam/dreamjam">DREAMJAM</a>. #PurokDream #KapitanDream #ProjectDream<br></p>
<p>Game also a submission to <a href="https://itch.io/jam/hilagyo-jam">HilagyoJam</a>, a game jam for Filipinos, by Filipinos. </p>
[img width=500 [https://img.itch.zone/aW1nLzIzNDQ2OTEucG5n/original/zeNOO5.png]]
<p>Description:</p>
<p>This game is a horde-mode top down shooter where you and a friend must take down hordes of robots, aliens, zombies, and a giant UFO at the end.<br>This first started off as a single-player platform shooter, but I had issues with platform collisions and I realized that it would have taken way too much time to make as this was a college project built within 2 weeks.<br>This game was built entiely from scratch, with the exception of the the sprite engine.<br>The sprite engine was modified from the gameEngine.py from Andy Harris for use in my custom-made engine. (https://www.cs.iupui.edu/~ajharris/pygame/ch10/gameEngine.py)</p>
<p>Features:</p>
<p>- AI enemies that track down a target (the players) and stand a certain distance away from them to shoot. 3 different types!<br>- 2 player system. One relying on a keyboard and another relying on a game controller. The second player can also use an alternate keyboard control scheme if there's no controller detected.<br>- Wave system that spawns more enemies difficult over time.<br>- Regenerating health!<br>- Supports an unlocked frame rate!<br>- Option of 8-way or 360 degree aiming system! (for second player)</p>
<p>Source Code:<br></p>
<p><a href="https://github.com/BitlDevelopmentStudios/MAYHEM" rel="nofollow noopener" referrerpolicy="origin">https://github.com/BitlDevelopmentStudios/MAYHEM</a><br><br>Report bugs here:</p>
<p><a href="https://github.com/BitlDevelopmentStudios/MAYHEM" rel="nofollow noopener" referrerpolicy="origin"></a><a href="https://github.com/BitlDevelopmentStudios/MAYHEM/issues" rel="nofollow noopener" referrerpolicy="origin">https://github.com/BitlDevelopmentStudios/MAYHEM/issues</a></p>
<p>Controls:</p>
<p>- Player 1: <br>Movement: W for moving forward, S for moving backwards, A for moving to the left, D for moving to the right.<br>Combat: Move the crosshair around with the mouse to aim, and press the left mouse button to fire.<br>- Player 2: <br>-- With a controller (tested on an XBOX ONE gamepad): <br>Movement: Move with the left joystick or the D-Pad<br>Combat: Right Joystick to use 360 degree aiming, ABXY to aim with 8-way controls, Right Trigger or Right Bumper to fire.<br>-- Without a controller: <br>Movement: Up Arrow for moving forward, Down Arrow for moving backwards, Left Arrow for moving to the left, Right Arrow for moving to the right.<br>Combat: Press Right CTRL to fire, then use the movement keys to aim in any direction (8-way controls). Pressing Right CTRL will also stop you from moving, making aiming easier.</p>
<p>Source Licence info:</p>
<p><img src="https://www.gnu.org/graphics/lgplv3-with-text-154x68.png" loading="lazy"></p>
<p>MAYHEM is free software: you can redistribute it and/or modify<br>it under the terms of the GNU Lesser General Public License as published by<br>the Free Software Foundation, either version 3 of the License, or<br>(at your option) any later version.</p>
<p>MAYHEM is distributed in the hope that it will be useful,<br>but WITHOUT ANY WARRANTY; without even the implied warranty of<br>MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br>GNU Lesser General Public License for more details.</p>
<p>You should have received a copy of the GNU Lesser General Public License<br>along with this program. If not, see https://www.gnu.org/licenses/.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODU3NzMyLzc3MzI2MjAucG5n/original/euYZPJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODU3NzMyLzc3MzI2MTkucG5n/original/eG5lor.png]]
<p>Issue 1.1 of Maytaway Quarterly: The all-Indigenous sports and gaming magazine. This issue includes:</p>
<p>Editorial from <a href="http://twitter.com/taylordnd" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Taylor Daigneault</a> (Métis)</p>
<p>Looking Back & Giving Back by <a href="http://twitter.com/shaynapowless" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Shayna Powless</a> (Oneida)</p>
<p>Designing <em>Theurgy</em> by <a href="http://twitter.com/mugulord" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Brendan Prettie</a> (Métis)</p>
<p><em>Tower of Baybayin</em> by <a href="http://twitter.com/leanonmyhouse" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Mylene Speidel</a> (Tagalog)<br></p>
<p>As well as features on Jack Jacobs (Creek), Brayden Chee (Navajo), and a celebrations of Indigenous excellence from around the world.</p>
<p><strong>Want to contribute to </strong><em><strong>Maytaway?</strong></em></p>
<p>Send your pitches to Taylor Daigneault via email <a href="mailto:tinkertaylorpublications@gmail.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin">tinkertaylorpublications@gmail.com</a> or DM <a href="http://twitter.com/taylordnd" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@Taylordnd</a> on Twitter<em>.</em></p>
<p>Maytaway Quarterly pays contributors 5¢/word for their contributions.</p>
<p><strong><a href="http://patreon.com/mqmag" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Subscribe</a> to <em>Maytaway Quarterly</em> on Patreon </strong>to have each edition sent to you directly and to gain access to all back-issues.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODcyMjEzLzQ5MDM4NDYucG5n/original/YRIXXQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODcyMjEzLzQ5MDM4NTYucG5n/original/ZjK0AR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODcyMjEzLzQ5MDM4NTUucG5n/original/8Hl3%2B1.png]]
<h1>Date a robot, donate to the Trevor Project!</h1>
<p>To celebrate the 1 year anniversary of <a href="https://silentman.itch.io/mech-romancer" target="_blank">Mech_Romancer, A Trans-humanist Dating Sim</a>, I'm now offering this special charity bundle, featuring both Windows and Mac version of the game, plus 3 original wallpapers of the game's mecha in both landscape and portrait by the game's original artist, <a href="https://twitter.com/artsyrobo" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Artsy Robo</a>!<br><br>100% (minus Itch.io's cut) of what you decide to pay will be donated to the <a href="https://www.thetrevorproject.org/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Trevor Project</a>, a 4-star non-profit organization that provides a suicide hotline to LGBT+ youth in America. Are you or someone you know in danger? Call <a rel="nofollow noopener" referrerpolicy="origin">1-866-488-7386</a> for help.</p>
<p>Interested in the game, but don't have any money to spare? <a href="https://silentman.itch.io/mech-romancer" target="_blank">Download the game by itself here.</a><br>Interested in donating $5 or more? <a href="https://silentman.itch.io/mech-romancer-charity-bundle-2" target="_blank">Buy Charity Bundle 2 with an extra special BONUS wallpaper by Vichel Lim!</a></p>
<h2>The only thing standing between humanity and destruction is you, and the relationships that you forge.</h2>
<p>Mech_romancer is a dating sim starring you, an out-of-sorts mech pilot who must create a bond with JEET, an experimental learning AI implanted into your robot. Train them, teach them how to perform under pressure, and form a special bond that can never be broken in order to save Earth!</p>
<p><strong>10/18</strong></p>
<p>Mech_Romancer is now PWYW. You don't have to pay a cent, but 100% (minus Itch.io's cut) of what you DO pay will be donated to the <a href="https://www.thetrevorproject.org/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Trevor Project</a>, a 4-star non-profit organization that provides a suicide hotline to LGBT+ youth in America. Are you or someone you know in danger? Call <a rel="nofollow noopener" referrerpolicy="origin">1-866-488-7386</a> for help.</p>
<p><br></p>
<p>6/20</p>
<p>This bundle was a part of Itch's bundle for racial justice and equality, and all proceeds towards that bundle went towards the NAACP and bail funds. Black lives matter, and none of us are free until we all are. Thank you to everyone who purchased the bundle. </p>
<p>Featuring:</p>
<ul><li>More words than both Final Fantasy III for the Famicom and the original Resident Evil!</li><li>4 main endings and <del></del><em><del>a certain number</del></em><em><del> of</del></em> secret endings!</li><li>Art by <a href="https://twitter.com/artsyrobo" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@artsyrobo</a>!</li><li>Unobtrusive yet flexible gender and sexuality options!</li></ul>
<p>Credits:</p>
<ul><li>Writing, story, and characters by <a href="https://twitter.com/Silentman0" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Silentman</a></li><li>Character design, mechanical design, and art by <a href="https://twitter.com/nebularobo" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@nebularobo</a></li><li>Inspiration and title by <a href="https://twitter.com/WoolieWoolz" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Woolie Madden</a> and <a href="https://twitter.com/MattMcMuscles" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Matt McMuscles</a><a href="https://twitter.com/2BFOfficial" rel="nofollow noopener" referrerpolicy="origin"></a></li><li>Additional testing by Ian Bohannon and <a href="https://twitter.com/SammyTheOG" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Sammy</a></li><li>Music taken from <a href="https://tabletopaudio.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">https://tabletopaudio.com/</a></li><li>Backgrounds and sound effects edited and adapted from various sources.</li><li>Programmed using Tyranobuilder.</li></ul>
<p>Know bugs:</p>
<ul><li>There seems to be a bug with Q.Loading. Use the normal save/load system when necessary.</li></ul>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzEzMzE3LzE1NDA5MzAucG5n/original/IHT4SB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzEzMzE3LzE1NDA5MDguanBn/original/%2Fr5L2d.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzEzMzE3LzE1NDA5MDkuanBn/original/lF2PKL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzEzMzE3LzE1NDA5MTAuanBn/original/2QmEE6.jpg]]
<p class="text-justify"><strong><em></em></strong><em><strong>Meditation 5 </strong>is a minimalist game about balance, concentration and strategy inspired by Taoist philosophy. The goal is to prevent the screen from turning red by shooting abstract enemies with two crosshairs simultaniously. Constant demand for concentration without much distraction pulls you into a meditative flow. Since the difficulty increases the longer you play, you may need to sacrifice advancement to get yourself some air. <br><br>How long can you prevail? Improve your abilites and find strategies to go for the highest score on three difficulty Levels. Full controller support, including XINPUT and Dualshock devices.<br></em></p>
<p><em>Soundtrack available:<br></em></p>
<p><em><a href="http://thunderperfectwitchcraft.bandcamp.com/album/meditation-5-ost" rel="nofollow noopener" referrerpolicy="origin">http://thunderperfectwitchcraft.bandcamp.com/album/meditation-5-ost</a><br></em></p>
<p></p>
<p class="text-right"></p>
<p><strong>Features:</strong></p>
<p>• Support for Windows and Linux<br>• Minimalist design inspired by Taoist philosophy<br>• Simple, but deep game play<br>• 25 minute of Ambient OST included<br>• Full support for XBOX-, Dualshock- and many other game controllers<br>• Plays smooth, even on dated hardware<br>• Adjustable difficulty</p>
<p><br></p>
<p></p>
<p><strong>Recommended hardware:<br></strong></p>
<p><strong></strong>• Up-to-Date, 64-bit Linux or Windows OS with working drivers<br>• Gamepad strongly recommended, fallback keyboard mode is included <br>• 2-Core 2,6 GHZ processor<br>• ATI HD 7700 or better (or equivalent NVIDIA-card) <br>• 2GB of RAM<br>• 100 Megabyte free storage</p>
<p><br></p>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/w0uy1Nyei3o" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjA2NzQ3LzQ3MTA1NjMuZ2lm/original/L4VyaF.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjA2NzQ3LzMyMjE1NjMucG5n/original/310tCw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjA2NzQ3LzMyMjE1NjIucG5n/original/xxYhag.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjA2NzQ3LzMyMjE1NjQucG5n/original/kXEIA0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjA2NzQ3LzMyNTMzMDkucG5n/original/PTeq5l.png]]
<p><img src="https://img.itch.zone/aW1nLzY2OTIyOTYucG5n/original/%2F%2FsAu0.png" loading="lazy"></p><div class=""><iframe width="550" height="281" src="https://www.youtube.com/embed/UXjZlinpCiY" frameborder="0" allowfullscreen=""></iframe></div>
<iframe frameborder="0" src="https://itch.io/embed/928458?border_width=0&bg_color=272d38&fg_color=ffffff&link_color=5f931c&border_color=272d38" width="550" height="165" style="color: inherit; font-size: inherit"></iframe>
<figure><a href="https://thegdwc.com/pages/game.php?game_guid=05bf2628-5098-4fb5-b8f6-cbb96cd3a6a7" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzY2NTEwNTMucG5n/original/ecU2i5.png" loading="lazy"></a><br></figure>
<p>
</p>
<h3 style="color:black">The week 20's winner of GDWC Fan-favorite Awards.</h3>
<p>▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬<br></p>
<p><strong style="color:#2c92b6; font-size:27px">Memories of East Coast</strong></p>
<p>'Memories of East Coast' is a debut visual novel. An <strong>immersive experience</strong> that brings you on a journey through <em>memory, nostalgia, and guilt</em><strong>.</strong> <strong>Will you accept your fate?</strong></p>
<p><strong style="color: #2c92b6; font-size: inherit">STORY<br></strong>Experience the <strong>bittersweet emotion</strong> of character Sam as he takes a <strong>meditative trip</strong> to a place he hasn’t visited in fifteen years, where a specter of his past unexpectedly emerges and forces him to <strong>confront old truths in new ways.</strong> Hand-drawn art and a carefully selected soundtrack of <strong>lo-fi music</strong> accompany you on this <strong>thought-provoking exploration</strong> of memories both <strong>fond and sorrowful.</strong><br><br>Blending a <strong>heartfelt narrative</strong> with psychological commentary, 'Memories of East Coast' <strong>challenges players</strong> to consider alternate perspectives on loss, grief, and sickness, layering complex themes for full immersion <strong>without any character art.</strong> <strong>This is a personal journey,</strong> colored by <strong>nostalgia</strong> and brought to full bloom <strong>within the player’s own mind.</strong></p>
<p><strong style="font-size: inherit; color: #2c92b6">LENGTH<br></strong>1-2 Hours</p>
<p><strong style="color:#2c92b6; font-size: inherit">FEATURES</strong></p>
<ul>• Explore a heartfelt narrative presented in visual novel style.<br>• Learn the truth of Sam’s troubled and bittersweet past.<br>• Gain insight into real-world issues through alternate perspectives.<br>• Immerse yourself in nostalgic hand-drawn art.<br>• Enjoy lo-fi music selected to match the mood of each scene.</ul>
<p><strong>This visual novel aims to be played immersively.<br>Live streaming in front of a large audience is not recommended.</strong></p>
<p>▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬</p>
<p><strong style="font-size: inherit; color: #2c92b6">Developer's note:</strong>
The development started in late 2020, Memories of East Coast seeks to provide an <strong style="color:#2c92b6">immersive visual novel</strong> experience. The audios used were carefully selected which perfectly fit in with the art and storyline. Also, the character's images will not appear within the storyline, intentionally done to boost your creativity and imagination.
</p>
<figure><a href="https://www.buymeacoffee.com/roomahgaming" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzU1NDE4MjQucG5n/original/NlTx2d.png" width="200" loading="lazy"></a></figure>
<p>▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬<br></p>
<p><strong style="font-size: inherit; color: #2c92b6">SYSTEM REQUIREMENTS<br></strong></p>
<ul>MINIMUM:<ul><li>OS: Windows Vista/7/8/10
</li><li>Processor: 2.0 GHz Core 2 Duo
</li><li>Memory: 2 GB RAM
</li><li>Graphics: OpenGL 2.0
</li><li>DirectX: Version 9.0c
</li><li>Storage: 200 MB available space
</li></ul></ul>
<ul>RECOMMENDED:<ul><li>OS: Windows Vista/7/8/10
</li><li>Processor: 3.0 GHz Intel i3 2100 or Higher
</li><li>Memory: 4 GB RAM
</li><li>Graphics: Intel HD Graphics or Higher
</li><li>DirectX: Version 11
</li><li>Storage: 200 MB available space</li></ul></ul>
<p>▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬</p>
<p><strong style="color: #2c92b6; font-size: inherit">AVAILABLE ON STEAM:<br></strong></p>
<iframe src="https://store.steampowered.com/widget/1607430/" frameborder="0" width="646" height="190"><span class=""></span></iframe>
<p><strong style="font-size: inherit; color: #2c92b6">CONSOLE VERSION AVAILABLE:<br><br><a href="https://store.playstation.com/en-sg/concept/10003807" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzc2MzE4NjEucG5n/original/rx9YC5.png" loading="lazy"></a> <a href="https://www.nintendo.com/games/detail/memories-of-east-coast-switch/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzc2MzE4NjQucG5n/original/bIRoPG.png" loading="lazy"><br></a><br>MORE FROM ROOMAH GAMING:</strong><br></p>
<iframe frameborder="0" src="https://itch.io/embed/970114?border_width=0&bg_color=1d2129&fg_color=000000&link_color=5f931c&border_color=1d2129" width="206" height="165"><a href="https://roomahgaming.itch.io/pencil">I'm A Pencil by Roomah Gaming</a></iframe>
<iframe frameborder="0" src="https://itch.io/embed/1174840?border_width=0&bg_color=1d2129&link_color=5f931c&border_color=1d2129" width="206" height="165"><a href="https://roomahgaming.itch.io/techna">Techna [Alpha] by Roomah Gaming</a></iframe>
<p>▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬<span style="color: rgb(134, 136, 138); font-size: 14px"></span></p>
<p><span style="color: rgb(134, 136, 138); font-size: 14px"><em>Copyright © Roomah Gaming, All rights reserved.</em></span></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/UXjZlinpCiY" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTI4NDU4LzY2NTEzMjYucG5n/original/e5PR6m.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI4NDU4LzY2NTEzMjMucG5n/original/f4HNcq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI4NDU4LzY2NTEzMjkucG5n/original/abyUct.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI4NDU4LzY2NTEzMzEucG5n/original/OZNAk8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI4NDU4LzY2NTEzMzUucG5n/original/mVm%2F3g.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI4NDU4LzY2NTEzMzcucG5n/original/5%2FvRxn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI4NDU4LzY2NTEzMzgucG5n/original/%2Fq94fk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI4NDU4LzY2NTEzNDkucG5n/original/wBG5%2Bs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI4NDU4LzY2NTEzNTEucG5n/original/4WF4dC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI4NDU4LzY3MDEzMjYucG5n/original/Moi94z.png]]
<p>I reread this poem recently and it inspired a game.</p>
<p>The intended experience is for <strong>two players to play on one keyboard</strong>. If you touch hands it's okay, good fences make good neighbors. You can also play by yourself.</p>
<p>Move along the wall and patch it up. Once a rock is gone, it's gone. Nature's first green is gold, ya know?</p>
<p>The demo is 1 year long; the full version goes until you lose. I imagine 100% of the money I make on this game will go toward buying baby formula, so consider that before supporting.</p>
<p>Feel free to share your highscore and experience! This was originally supposed to be a chill experience but I couldn't help myself, I added a score :\</p>
<p>~~~Humans who helped me make this~~~</p>
<ul><li>Robert Frost: "Mending Wall"<ul><li><a href="https://www.poetryfoundation.org/poems/44266/mending-wall" rel="nofollow noopener" referrerpolicy="origin">https://www.poetryfoundation.org/poems/44266/mending-wall</a></li></ul></li><li>Tree trunk by Johann C. Shoot'em up graphic kit: <a href="http://opengameart.org/content/lpc-a-shootem-up-complete-graphic-kit" rel="nofollow noopener" referrerpolicy="origin">http://opengameart.org/content/lpc-a-shootem-up-complete-graphic-kit</a></li><li>Trees: formconstant <ul><li><a href="https://opengameart.org/content/64x128-isometric-tiles-grassland-seasons" rel="nofollow noopener" referrerpolicy="origin">https://opengameart.org/content/64x128-isometric-tiles-grassland-seasons</a></li></ul></li><li>Snow: Created by Jordan Irwin (AntumDeluge)<br>Canonical link: <a href="https://opengameart.org/node/109748" rel="nofollow noopener" referrerpolicy="origin">https://opengameart.org/node/109748</a></li><li>Top Down Sprites:<ul><li><a href="https://opengameart.org/content/top-down-pokemon-esque-sprites" rel="nofollow noopener" referrerpolicy="origin">https://opengameart.org/content/top-down-pokemon-esque-sprites</a></li></ul></li><li>kenney.nl</li><li>Hot coffee: Created by Otoniel Reyes<br><a href="https://opengameart.org/content/hot-coffee" rel="nofollow noopener" referrerpolicy="origin">https://opengameart.org/content/hot-coffee</a></li><li><a href="https://www.instagram.com/macrosecosmos/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Mike Tanner</a> and <a href="https://donkeycan.itch.io/" target="_blank">Calvin Dupee</a> - Chopin 8-bitifying.</li></ul>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODY5NTc5LzQ5MDc3NzcucG5n/original/DVK%2F1C.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY5NTc5LzQ5MDc4MjQuZ2lm/original/qxQD45.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODY5NTc5LzQ5MDc4MjMuZ2lm/original/o2zJij.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODY5NTc5LzQ5MDc4MjIuZ2lm/original/BGBl1e.gif]]
<$list filter="[is[current]has:field[url]]"> <td>
{{||OriginalUrl}} </td> </$list>
<$list filter="[is[current]has:field[rating]]"> <td>
{{||ratingViewTemplate}} </td> </$list>
<$list filter="[is[current]has:field[average_session]]"> <td>
{{||averageSession}} </td> </$list>
<p>Metamorphabet is normally $5.00, but we've made it Pay-What-You-Wish until the end of 2016. Enjoy!</p>
<p>
"Metamorphabet is a thing of joy, on the surface simple, underneath a labour of love. And you'll love it too." -
<a href="http://www.rockpapershotgun.com/2015/04/29/metamorphabet-review/" rel="nofollow noopener" referrerpolicy="origin">Rock, Paper, Shotgun</a>
</p>
<p>
Metamorphabet is a playful, interactive alphabet. Poke, prod, drag, and spin the letters of the alphabet to reveal surprising and luminous transformations.</p>
<p>
<span></span>Mouse or touchscreen recommended.
</p>
<p>
Purchase includes a Steam key.
</p>
<p>
<small>
<u>Minimum system requirements: </u><br>
100MB disk space, 512MB RAM
<br>
PC: Windows 7/8 Classic, 2.33GHz+ x86-compatible processor (Intel Atom 1.6GHz+ for netbooks)
<br>
MAC: OS X 10.7+, Intel Core Duo 1.83GHz+
<br>
<em>Performance may vary on older/slower machines.</em>
</small>
</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjQ5MDcvOTk2ODAucG5n/original/JGjepg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ5MDcvOTk3MjcucG5n/original/NMEXiv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ5MDcvOTk2NzcucG5n/original/IeYVYf.png]]
<p><strong><em></em></strong></p>
<h2><strong><em>How do you see the world when nothing is real?</em></strong></h2>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/WJdORk3Qltc" frameborder="0" allowfullscreen=""></iframe></div>
<p><strong><em>Each character was assigned to give a statement to be posted on this store page. Their responses are below:</em></strong><br></p>
<p>
<img src="https://img.itch.zone/aW1nLzMxODQ2NjQucG5n/original/sq165l.png" style="" loading="lazy">
<strong>CHRIS:</strong> Hello! I’m so excited that you’re considering playing our game! I'll tell you as much as I can. So we're actually not the full game. We're the demo! No one knows if the real game is out yet or not, or what genre we're really supposed to be....it's kind of confusing. But that's just fine, I guess! Anyway, I suppose it's already been determined where you'll be going and what kinds of things you might be doing? I hope I get to actually meet you later. I've really been looking forward to it! Have a nice day!<br>
</p>
<p>
<strong>
<img src="https://img.itch.zone/aW1nLzMxODQ2NjcucG5n/original/snKSrY.png" style="" loading="lazy"></strong>
<strong>HOPE: </strong>hey if u get any choices that lead u to a mochi store go there thats where the cool ppl in the game r if you dont youll probably lose ok bye
</p>
<p>
<img src="https://img.itch.zone/aW1nLzMxODQ2NzMucG5n/original/kS9UeK.png" style="" loading="lazy">
<strong>ASPEN:</strong> Hey YOU! Yeah, YOU! Wanna chat it up with some cute girls? (And a super cute non-binary person?) Then you've definitely found the right game! We're not like those other inferior dating simulators. We have the advantage of knowing who, how, why, and what we truly are! Well, uh...mostly. That's where you come in! You can be the one to tell us once and for all what we're really doing here! And with the help of your good buddy Aspen, we'll ensure that this game gets its best ending! Our fate rests upon your shoulders, O wise player!
</p>
<p>
<img src="https://img.itch.zone/aW1nLzMxODQ2NzUucG5n/original/ReOm6e.png" style="" loading="lazy">
<strong>NARI:<em> </em></strong><em>[Declined to give a statement.]</em>
</p>
<p>
<img src="https://img.itch.zone/aW1nLzMxODQ2OTMucG5n/original/NIfJDC.png" style="" loading="lazy">
<strong>ISADORA</strong>: WHAT?!??! MY QUOTE IS GOING TO BE LAST????? THAT'S NO FAIR!!! YOU SHOULD CHANGE IT SO THAT I'M, LIKE, AT LEAST SECOND? OR THIRD?!?!!? LAST IS SO STUPID!!!!!! NARI DIDN'T EVEN SAY ANYTHING AND SHE'S NOT EVEN LAST!!!!! UUUUUGGGGGGGGGGG <em>(...wait so what exactly should I say then? ...oh, ok.)</em> Hi! I'm Isadora, and...uh... <em>(Oh, whatever, this is so stupid! Was that </em><em>enough? Can I go now?)</em>
</p>
<p>
<strong></strong></p>
<p><br></p>
<h2><strong>A NOTE FROM THE CREATOR</strong></h2>
<p>Hello. I am the Creator. I created this Visual Novel's script, code, and music.<br><br>The game runs in the RenPy engine.<br><br>It takes around two hours give or take to complete everything.<br><br>It is recommended that players are at least 12 years or older.<br>The game contains no jump scares or shock imagery.<br><br>The complete soundtrack is also available. It contains a little over an hour of music.<br><br>Thank you to SparkBag, Keeby, and Alexander A. McDonald for creating the majority of the visual assets.<br><br>Please enjoy, free of charge.<br><br><em>-The Creator.<br><br></em>--------UPDATE-----------<br></p>
<p><strong>MetaWare High School (Demo) Special Features</strong> is now available. It is a collection of behind the scenes content for MetaWare High School (Demo), offering a glimpse into the development of the game. <strong>You can obtain this extra package by purchasing the game for </strong><strong>$9.99 or more.</strong></p>
<p>Includes:</p>
<ul><li>An artbook (45 pages) with extensive developer commentary, unreleased/in-progress art, and more.</li><li>A collection of unused music and sounds.</li><li>A playable unfinished early prototype of the game. (~10 minutes playtime) It is playable on Windows, Mac, and Linux.</li><li>A warm thank you from Not Fun Games.</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/WJdORk3Qltc" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODQ3LzMxMTU3MjQucG5n/original/y5lF8l.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODQ3LzMxMTU3MjUucG5n/original/rZfp4G.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODQ3LzMxMTU3MjMucG5n/original/jwSr%2B2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODQ3LzMxMTU3MjEucG5n/original/1edEhv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODQ3LzMxMTU3MjIucG5n/original/0ylyxZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODQ3LzMxMTU3MjAucG5n/original/eTMkup.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODQ3LzMxMTU3MTkucG5n/original/obWTVZ.png]]
<p><a href="http://enembydev.tumblr.com/post/151873041427/no-mans-asteroids-probably" rel="nofollow noopener" referrerpolicy="origin"></a></p>
<p>Metori is a strategy sandbox game reminiscent of older arcade games. Control many ships, and use tactics to outmaneuver and outnumber everyone else.<br>Build a fleet. Capture territory. Defeat your enemies.<br>Note: Metori is <em>not</em> a twin-stick shooter. It is built to be playable with one hand, making it <strong>accessible</strong> to many gamers.<br></p>
<h2>Features</h2>
<ul><li>Fully fledged AI Commanders!
</li><li>Sandbox Gameplay</li><li>Local 1v1 Multiplayer (works with parsec!)</li></ul>
<h2>Content</h2>
<ul><li>Randomly generated Asteroid fields
</li><li> Many ship types with variants
</li><li> 3 different commander modes
</li><li>Campaign
</li><li>Replayable Instant Action Missions</li></ul>
<p><br></p>
<p><strong>Please note</strong> that this won't run on <a href="https://steamcommunity.com/groups/steamworks/announcements/detail/3632639303428097613" rel="nofollow noopener" referrerpolicy="origin">new MacOSX updates</a>. Nothing I can do about that, sadly.<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/XcvDBR_sYh8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODY4MjYvNDI5NjU0LmdpZg==/original/Wumx9R.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODY4MjYvNDI5NjU2LnBuZw==/original/%2BYndo6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY4MjYvNDI5NjU1LmdpZg==/original/Dgghjs.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODY4MjYvMjUwOTc5Ni5wbmc=/original/QrYpbK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY4MjYvMjUwOTc5Ny5wbmc=/original/J2Nw%2B2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY4MjYvMjUwOTc5OC5wbmc=/original/tJ3E0D.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY4MjYvMjUwOTgwMC5wbmc=/original/ZOJdAs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY4MjYvMjUwOTc5OS5wbmc=/original/Q3uQwE.png]]
<p>Michtim is my love letter to Saturday morning cartoons like Ewoks and the Smurfs. It's also an idealistic game, because in this game, it's not about the monsters you slay – quite contrary. It's about exploring a world that's larger and hostile, but that holds wonder and amazement. Michtims want to protect nature; and they want to set humans back on the path to a better life. It can be a heartwarming experience; but it also has tight mechanics and can handle fights. </p>
<p><strong>Watch this concise and wonderful <a href="https://vm.tiktok.com/ZMLe5gQT4/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">review on TikTok by goblinmixtape</a>!</strong></p>
<p>The game features a totally unique System. Your traits are Emotions, and on rolls that come up as 6, you generate Mood markers of the appropriate emotion. Your character can also have a combination of 12 Callings. These are very minimalistic and simple on one hand, but you can combine them however you like and the best thing: you can play an Angry, a Compassionate or a Scaredy-Cat Cook. There are no favored Stats in this game, so each Class can be played in 5 very radically different ways!<br></p>
<p>This game means a lot to me, since it marks my graduation into a full fledged Master of Arts; but it's also the baby of my disabled partner Alex and myself. We always lacked a space that was welcoming to us; and with Michtim, we basically wanted to offer peeps a place that's free from oppression.</p>
<p>I really hope you enjoy the game, and as a special offer for you itch-friendlies, I have added all the previously add-on DIY card printing files for FREE.</p>
<p>If you want to buy physical copies, you can get them on my <a href="https://www.drivethrurpg.com/product/105250/Michtim-Fluffy-Adventures" target="_blank" rel="nofollow noopener" referrerpolicy="origin">DriveThruRPG</a>.</p>
<p><a href="https://www.drivethrurpg.com/product/105250/Michtim-Fluffy-Adventures" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzI2ODA2OTUucG5n/original/PpNQdy.png" style="max-width: 100%; font-size: 14px" alt="Buy Hardcover" title="Buy Hardcover" loading="lazy"></a> <a href="http://www.drivethrurpg.com/product/185994/Michtim-Card-Pack-BUNDLE?src=GA" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzI2ODA3MTEucG5n/original/qYz%2BaW.png" alt="Buy Cards" title="Buy Cards" loading="lazy"></a><span></span></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/2FE9kFYK25c" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNzY2LzI2MDkyNDkucG5n/original/Ka6nO1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNzY2LzI2Nzc2MzAucG5n/original/MEHodv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNzY2LzI2Nzc2MjkucG5n/original/bGmyIV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNzY2LzI2Nzc2MzEucG5n/original/7%2BNgrq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNzY2LzI2Nzc2MzMucG5n/original/7r3tBG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNzY2LzI2Nzc2MzQucG5n/original/iB0H4C.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNzY2LzI2Nzc2MzUucG5n/original/TYIstA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNzY2LzI2Nzc2MzcucG5n/original/Z%2FjWsd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNzY2LzI2Nzc2MzYucG5n/original/o2fBzQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNzY2LzI2Nzc2MzgucG5n/original/XMez9Q.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNzY2LzI2Nzc2MzIucG5n/original/ZoqkLP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNzY2LzI2Nzc2NDEuanBlZw==/original/lSHS0b.jpeg]]
<h3 style="color: #FF8400">Reviews</h3>
<p>
"It's got style… It gets you thinking. It gets your toe tapping as well because the music in this is fantastic… This is a clever reintroduction of puzzle and rhythm fusion."
<br>
8.0 Marissa / 8.0 Victor –
<a href="http://epn.tv/all/spotlight/micron-review/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Reviews on the Run</a>
</p>
<p>
"Micron presents a perfect blend of aesthetically-pleasing visuals and head-bopping music that is sure to leave you thinking about the game long after you've completed it."
<br>
4.5/5 stars –
<a target="_blank" href="http://operationrainfall.com/2014/08/14/review-micron/" rel="nofollow noopener" referrerpolicy="origin">Operation Rainfall</a><span></span><br>
</p>
<p>
"Micron is more of an interactive audio-visual experience than just a simple puzzle game, and if you're at all into retro styled games and music this is a puzzler you just can't miss." –
<a href="https://www.youtube.com/watch?v=USCSt6vcXyo" target="_blank" rel="nofollow noopener" referrerpolicy="origin">CGRUndertow</a>
</p>
<h3 style="color: #FF8400">About Micron</h3>
<p>
Micron is a unique fusion of puzzle and rhythm gameplay. Place pieces on the board to deflect bullets of energy that fire to the beat. Guide the bullets to the exit through 51 challenging levels — and 12 bonus levels — featuring a variety of distinctive soundscapes. Your solutions create the music.
</p>
<h3 style="color: #FF8400">Award Winning Design</h3>
<p>
Micron began as a game created for Kongregate's 'Project Eden: Experience the Music' game contest, in which it won 2nd place. The judges included Tetsuya Mizuguchi, creator of REZ and LUMINES, and representatives from Ubisoft, Gamespot, and Kongregate.
</p>
<p>
"Classic visual like the Famicon but experiencing the process of sound effects evolving into the music felt really good. The harder the game, the more exciting the music gets—this was blended perfectly." — Tetsuya Mizuguchi
</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/cf8b8KYju30" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzk2NzIvMTcxMzA2LmpwZw==/original/LN9d6I.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk2NzIvMTcxMzA3LmpwZw==/original/uxJz9M.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk2NzIvMTcxMzA4LmpwZw==/original/1ygM%2B3.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk2NzIvMTcxMzA5LmpwZw==/original/th5M0B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk2NzIvMTcxMzEwLmpwZw==/original/GNfmVC.jpg]]
<p><strong>While working in the laboratory one day, you notice something strange… mutant motile cells have escaped their cultures and are trying to reproduce!!! Can you stop them before they mutate the egg cells and take over the planet?</strong></p>
<p><br>This game is a frantic “bounce-em-up” physics game where you must set the power and direction of the egg cell and squash all the motile cells before they can remove the protective coating of the egg and mutate it. However, not only have the motile cells mutated, but some other benign cells too which you can use to “power-up” your egg cell! Just as well, since the motile cells are evolving fast and some of them even have special abilities…<br><br><strong><u>Game Features:</u></strong></p>
<ul><li>Frantic physics-based bouncing fun</li><li>Multiple power up cells… Lightning attacks, shields, spikes and many more!</li><li>Multiple enemy motile types to challenge your skills</li><li>Massive boss motiles that require accurate bouncing to defeat</li><li>Multiple achievements to attain</li><li>Local and online highscores</li><li>Three levels of difficulty</li><li>Game checkpoints so you don’t lose progress if you have to stop playing</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/ibb3FjWAHM0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTI2Nzk5LzI3MzcwOTkucG5n/original/6xHNdg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI2Nzk5LzI3MzcwOTUucG5n/original/ttG3bi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI2Nzk5LzI3MzcwOTgucG5n/original/GNIQG7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI2Nzk5LzI3MzcwOTQucG5n/original/KI6Hxo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI2Nzk5LzI3MzcxMDEucG5n/original/pEkud%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI2Nzk5LzI3MzcwOTYucG5n/original/tQ07p3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI2Nzk5LzI3MzcxMDAucG5n/original/TDGQT6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI2Nzk5LzI3MzcwOTcucG5n/original/sR7sHY.png]]
<p class="text-center"><em><img src="https://img.itch.zone/aW1nLzU1NjUyNTEucG5n/original/fOsAMm.png" loading="lazy">"Welcome aboard the Gemini 22, dear pawsenger! I do hope mew have your ticket ready, hmm?"</em><strong></strong><br><br></p>
<p>In the depths of space, without a memory or face, you find yourself aboard a train of mystery and stars.</p>
<p>The passengers abroad-- Some dangerous, some odd-- Offer you no answers as you search throughout the cars.</p>
<p>The clock is slowly ticking. Your stop is coming into sight.</p>
<p>Will you find what you are looking for on this lonely, starry night?</p>
<p><br></p>
<p></p>
<p><img src="https://img.itch.zone/aW1nLzY5MDYzOTcucG5n/original/j%2BtklT.png" loading="lazy"><br></p>
<p class="text-center">A heartfelt, magical tale about finding yourself in the darkness set against the backdrop of the Milky Way galaxy.<br></p>
<p><strong>PASSENGER LIST:<br></strong></p>
<p><img src="https://img.itch.zone/aW1nLzU1NjUyMzQucG5n/original/WPIKXg.png" loading="lazy"><br></p>
<p><em></em><img src="https://img.itch.zone/aW1nLzU1NjUyNDUucG5n/original/e9M32T.png" loading="lazy"><br></p>
<figure><img src="https://img.itch.zone/aW1nLzU1NjUyNDMucG5n/original/RJUjYU.png" loading="lazy"><br><img src="https://img.itch.zone/aW1nLzU1NjUyNjQucG5n/original/bVrfcl.png" loading="lazy"><br></figure>
<p><img src="https://img.itch.zone/aW1nLzU1NjUyNDgucG5n/original/GnY2Wx.png" loading="lazy"><br></p>
<p><br></p>
<p class="text-center"><em><img src="https://img.itch.zone/aW1nLzU1NjUyNTEucG5n/original/fOsAMm.png" loading="lazy"> <strong>"Listen up, valued pawsenger!!"<br></strong></em></p>
<p>This game takes about 2 and a half hours to complete, with 3 endings. However, it's extremely easy to get these endings.<br></p>
<p>This game contains description of death, suffocation, claustrophobia and child endangerment, so be warned.<br></p>
<p>Please check the bonus content once the story is finished as well.</p>
<p>I really like to read comments, so feel free to leave your thoughts. Thank you very much for playing. It's greatly appreciated.<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTcxODI4LzU1NzI1NDEucG5n/original/u4aWqv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTcxODI4LzU1NzI5MjYucG5n/original/ZrgZnV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTcxODI4LzY5MDYxMzAucG5n/original/1yk7xd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTcxODI4LzY5Mjk2NTcucG5n/original/Y2eb2s.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTcxODI4LzU1NzMwNTYucG5n/original/374K8z.png]]
<p><em>Migracciones </em>is a serious game that tells the story of Raul's journey over Mexico to the USA. Through the dice, you go through the main routes that migrants use, where there will be boxes that tell a little story of common events that migrants go through.</p>
<p>Migrations is a game still in development, and its main pillar is the narrative aspect. </p>
<p>Articles about design process:</p>
<p> <a href="https://learto-ler.medium.com/designing-migracciones-first-part-the-concept-78bc0b1ff88c" rel="nofollow noopener" referrerpolicy="origin">https://learto-ler.medium.com/designing-migracciones-first-part-the-concept-78bc...</a></p>
<p><a href="https://learto-ler.medium.com/designing-migracciones-second-part-the-characters-1476e386fa48" rel="nofollow noopener" referrerpolicy="origin">https://learto-ler.medium.com/designing-migracciones-second-part-the-characters-...</a></p>
<p><a href="https://learto-ler.medium.com/designing-migracciones-third-part-posmortem-58f5704ae83c" rel="nofollow noopener" referrerpolicy="origin">https://learto-ler.medium.com/designing-migracciones-third-part-posmortem-58f570...</a></p>
<p><strong>I would appreciate any donation to continue developing videogames. </strong><br></p>
<p>Repo: <a href="https://github.com/leartoler/migracciones" rel="nofollow noopener" referrerpolicy="origin">https://github.com/leartoler/migracciones</a></p>
[img width=500 [https://img.itch.zone/aW1nLzQ2NTM2MTMucG5n/original/jcbAzA.png]]
<iframe width="560" height="315" src="https://www.youtube.com/embed/IzTlJshRZNQ?rel=0" frameborder="0" allowfullscreen=""></iframe>
<p><strong>Milkmaid of the Milky Way</strong> is an award-winning <strong>point-and-click adventure game</strong> in rhyme that combines an exciting story with puzzles and exploration. What happens when a young milkmaid sees an alien craft in a fjord in 1920's Norway?<br></p>
<p><em>Deep in a fjord, a girl and her bovine, <br></em><em>Western Norway, nineteen-twenty-nine. </em></p>
<p><em>This is a story from Calf Ledge, <br>a small farm perched on a mountain edge. </em><br><br>It's 1920's Norway, and you play as Ruth, a young woman who lives alone on a remote farm at the end of a faraway fjord. You take care of your cows and make delicious dairy products that your friend sells in the closest town. But the dairy business is not going so well, and life on the farm is lonesome and hard. And at nights mysterious things keep happening to Ruth and her cows, making Ruth wonder: Is this the life she wants?<br><br>Then one day a giant, golden ship descends from the sky, forcing Ruth out on a journey that will change her life.<br><br><strong>Milkmaid of the Milky Way is a story about moving into the unknown, breaking free from the past, it's a story about age, life, death and time - but most of all it's a story about finding your own place in the universe.</strong><br></p>
<h3>Features</h3>
<ul><li>A lovingly crafted universe with hand-painted backgrounds combined with old school pixel art </li><li>An exciting, intriguing story filled with wonder</li><li>2-3 hour playtime</li><li>All dialogue and game text written in rhyme! </li><li>Good pacing, not tooooo difficult</li><li>English, French and Norwegian languages</li><li>Autosave and custom save games</li><li>Four earth-based cows</li><li>Absolutely no microtransitions, loot boxes or pay to win :)</li><li>Made with passion by one guy from Norway</li></ul>
<h3>System Requirements</h3>
<p><strong>PC:</strong><br>Requires a 64-bit processor and operating system<br>OS: Windows 7<br>Processor: Intel Core Duo<br>Memory: 2 GB RAM<br>Graphics: Intel HD 4000<br>DirectX: Version 9.0c<br>Storage: 1 GB available space<br>Sound Card: Built In</p>
<p><strong>Mac:</strong></p><p><strong>DOES NOT WORK WITH CATALINA!<br></strong>OS: OSX up to 10.4 - No Catalina Support<br>Processor: Intel Core Duo or better</p><p>Memory: 2 GB RAM<br>Storage: 500 MB available space</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/IzTlJshRZNQ?rel=0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjQ1Mjk4LzExNzE5NDUuanBn/original/xwq6Vy.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ1Mjk4LzExNzE2NDAucG5n/original/myTMXL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ1Mjk4LzExNzE2NDEuanBn/original/SzVkBS.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ1Mjk4LzExNzE2MzkuanBn/original/QCjX%2FK.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ1Mjk4LzExNzE2NDMuanBn/original/nRHC%2Br.jpg]]
<p></p>
<div class=""><iframe width="500" height="281" src="https://www.youtube.com/embed/QBp8M3e0iC4" frameborder="0" allowfullscreen=""></iframe></div>
<p>Milo’s Quest is a 2D top-down adventure game about a dog, lots of ghosts and puzzles. Featuring colorful pixelated graphics and chiptune music.<br></p>
<p>Milo is a very smart and brave dog! Help him to save the world from the ghostly armies of King Old Skull, an ancient evil, who was freed, let’s say, by accident, and now wants to rule all the world and turn everyone into ghosts!!</p>
<p>During the way, Milo will find some special items, called Relics, which will help him on his quest by granting new skills. There is also many more other helpful and powerful items scattered throught the lands that awaits you to explore. Solve puzzles, defeat enemies, find items, improve yourself and save the world!</p>
<p>FEATURES</p>
<ul><li>4 different locations with unique visuals to explore;</li><li>Colorful 8-bit style graphics; </li><li>3 Difficult levels to suit your playstyle;</li><li>3 Different Modes: Full Game, “Only Puzzles” or “Only Adventure”;</li><li>6 Different Relics with helpful abilities;</li><li>Many different Items to collect (Extra Hearts, Extra Stamina, and others);</li><li>Alternative paths.</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/QBp8M3e0iC4" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzAxOTE0LzM4NzI1MzYucG5n/original/XVa0eD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAxOTE0LzM4NzI1MzcucG5n/original/D2IlN%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAxOTE0LzM4NzI1NDEucG5n/original/IbY%2BbA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAxOTE0LzM4NzI1MzkucG5n/original/bZ0cSi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAxOTE0LzM4NzMwOTcucG5n/original/SaAGEd.png]]
<p>MindExplorer is a single-player tabletop roleplaying game inspired by the aesthetics of educational materials from the 1990’s. You will explore a building <span style="color: inherit; font-size: inherit">constructed from your imagination during a dream you have one night and meet the characters that live inside it.</span></p>
<p>The game uses the Art Dice created by World Champ Game Co. You can download them for free <a href="https://worldchampgameco.itch.io/sink-to-swim" target="_blank">here</a> or use the digital version <a href="https://michael-klamerus.itch.io/dice-o-matic-2000" target="_blank">here</a>.</p>
<p>Influences for MindExplorer include the <a href="https://www.are.na/evan-collins-1522646491/utopian-scholastic" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Utopian Scholastic aesthetic</a>, the <a href="https://www.giantbomb.com/mindmaze/3030-25465/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">minigame in the Encarta</a> encyclopedia software series, and the games <a href="https://noroadhome.itch.io/alone-among-the-stars" target="_blank">Alone Among the Stars</a> and <a href="https://hanbandit.itch.io/enter-the-orb" target="_blank">Enter the Orb</a>. Cover art is by <a href="https://vonbednar.itch.io/" target="_blank">Fred Bednarski</a>.<br></p>
<p></p>
<p>License: C<strong>reative Commons 4.0 Attribution-ShareAlike 4.0 International License. </strong>You are free to share, adapt, and modify the text of this game and distribute it, even commercially, as long as you give attribution and use this license as well. This does not include the cover, art dice, or stock images used in the game.</p><p><br></p>
<p><strong>If you enjoy this, you may like:</strong></p>
<p><a href="https://mvmv.itch.io/ascii-delve" target="_blank">ASCII Delve</a> - Use custom dice to explore a roguelike inspired setting<br></p>
<p><a href="https://michael-klamerus.itch.io/baby" target="_blank">BABY?</a> - Two player game where you explore a mysterious planet, inspired by the DOS game Captain Blood.<br></p>
<p><a href="https://worldchampgameco.itch.io/sink-to-swim" target="_blank">Sink to Swim</a> - The game that inspired this, 2-4 players tell the story of a down-on-their-luck artist<br></p>
<p><a href="https://mvmv.itch.io/nostos-rpg" target="_blank">Nostos?</a> - Use the art dice to follow the journey back home of the ship The Voyager<br></p>
<p><a href="https://hanbandit.itch.io/enter-the-orb" target="_blank">Enter the Orb</a> - Inspired by early ‘90s CG animation, you'll play out an experimental 3D-animated movie in three short parts.<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzMwMzM1LzQwNTk2ODQucG5n/original/fXSRpV.png]]
<p>Mini Loops a small pack of 5 seconds long music loops ready to be used anywhere, mostly though in games. It is under development. <strong>The pack contains 25 high quality wave and ogg files</strong> that can be looped at the moment; this is an on going project and this number will go up.</p>
<p><strong>This pack will eventually have a 100 loops</strong>, here is how the price will go up as more and more loops get added to it. If you want to own the entire pack early on, do grab it for the low price! Of course you can pay more than the minimum too if you feel like it!</p>
<ul><li><del>$1 for <25 loops</del></li><li><strong>$2 for <50 loops</strong></li><li>$3 for <75 loops</li><li>$4 for 100 loops</li></ul>
<p>Preview the pack here - <a href="http://yadurajiv.com/mini-loops" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">http://yadurajiv.com/mini-loops</a> (low birate mp3)</p>
<p><iframe style="width: 100%; height: 1000px" src="https://yadurajiv.com/mini-loops/itch_preview.html"></iframe></p>
<p>You can see the full license here - <a href="https://yadurajiv.com/mini-loops/License.txt" rel="nofollow noopener" referrerpolicy="origin">https://yadurajiv.com/mini-loops/License.txt</a></p>
<p>Note: Most tracks are 5 seconds long, some are longer; 8 to 10 seconds longer.</p>
<p>Attribution: This product uses the graphic, Loop by Timofey Rostilov from the Noun Project</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/Johy_jfrFBo" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1nLzI3NjA2OTEucG5n/original/B1JlMl.png]]
<p>In Mini Metro, you take on the task of designing the subway layout for a rapidly expanding city. Your city starts with three stations. Draw routes between these stations to connect them with subway lines. Commuters travel along your lines to get around the city as fast as they can. Each station can only hold a handful of waiting commuters so your subway network will need to be well-designed to avoid delays.</p>
<figure><img src="http://cdn.akamai.steamstatic.com/steam/apps/287980/extras/steamSTore_03.jpg?t=1519005027" loading="lazy"></figure>
<p>The city is growing. More stations are opening, and commuters are appearing faster. The demands on your network are ever-increasing. You'll be constantly redesigning your lines to maximise efficiency. The new assets you earn every week will help immensely — as long as they're used wisely.
Eventually your network will fail. Stations will open too quickly. Commuters will crowd the platforms. How long the city keeps moving is up to you.
</p>
<h2>Key Features</h2>
<ul><li>Compelling, constructive, hectic, relaxed gameplay. If that makes sense. It doesn't though, aye? You just gotta play it.</li><li>Three game modes: Normal for quick scored games, Endless for stress-free sandbox play, and Extreme for the ultimate challenge.</li><li>Eighteen real-world cities to design subways for (London, New York City, Paris, Berlin, Melbourne, Hong Kong, Osaka, Saint Petersburg, Montréal, San Francisco, São Paulo, Seoul, Washington, D.C., Cairo, Istanbul, Shanghai, Mumbai, and Auckland). Each has a unique colour theme, set of obstacles, and pace.</li><li>Random city growth, so each game plays out differently. A strategy that proved successful last game may not help you in the next.</li><li>Each game's map is a work of art, built by you in the classic abstract subway style of Harry Beck. If you think it's a keeper, save it, tweet it, show it off or make it your desktop background!</li><li>Soundtrack by Disasterpeace</li><li>Colorblind and night modes.</li><li>Trains! Did we mention them yet?</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/Zbk_msu-iYI" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTA0NzQvMjIyMzg5LnBuZw==/original/ETsd4r.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA0NzQvMjIyMzkzLnBuZw==/original/KRPreh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA0NzQvMjIyMzkyLnBuZw==/original/UIGvtZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA0NzQvMjIyNDAwLnBuZw==/original/N84ACf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA0NzQvMjIyMzk0LnBuZw==/original/OyEOyq.png]]
<p>Minit is a peculiar little adventure played sixty seconds at a time. </p>
<p>Journey outside the comfort of your home to help unusual folk, uncover countless secrets, and overcome dangerous foes, all in hopes of lifting a rather unfortunate curse that ends each day after just one minute. </p>
<p>Minit is a collaboration between <a href="http://twitter.com/kittycalis" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Kitty Calis</a>, <a href="http://twitter.com/jwaaaap" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Jan Willem Nijman</a>, <a href="http://twitter.com/jukiokallio" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Jukio Kallio</a> & <a href="http://twitter.com/zerstoerer" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Dominik Johann</a>.<br></p>
<p><br></p>
<p><br></p>
<figure><img src="https://img.itch.zone/aW1nLzExNDgyMzguZ2lm/original/EiqACF.gif" style="color: inherit" loading="lazy"><span></span><br></figure>
<iframe width="720" height="450" src="https://www.youtube.com/embed/XNVez4pXOCc" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjQwNzk3LzExNDc1MTcucG5n/original/5VyF9%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQwNzk3LzExNDc1MTQucG5n/original/BVSIAS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQwNzk3LzExNDc1MTYucG5n/original/MHIcu8.png]]
<p>Mixed Feelings is a game where you find yourself whisked away into a beautiful place that's strangely familiar. Join Peri, Silas, and Kahira as they take you through Asphodel Meadows, and fall deeper and deeper down the rabbit hole as you learn more about their lives, the world around you, and possibly...yourself.</p>
<p>If you like the music from Mixed Feelings, consider downloading the soundtrack for only $2.50! <a href="https://hiimcase.bandcamp.com/album/mixed-feelings-soundtrack" rel="nofollow noopener" referrerpolicy="origin">https://hiimcase.bandcamp.com/album/mixed-feelings-soundtrack</a></p>
<p>If you enjoy the game, consider checking out some merch for it <a href="https://www.redbubble.com/people/spoonychan/shop" rel="nofollow noopener" referrerpolicy="origin">https://www.redbubble.com/people/spoonychan/shop</a></p>
<p>CONTENT WARNING: Mixed Feelings has heavy subject matter that isn't quite explicit, but heavily implied, regarding grooming and abuse. Also, a slight epilepsy warning for certain quick flashes in the game. Player discretion is advised. Stay safe!</p>
<p>If you ever run into any bugs or anything, feel free to comment on the page, or even shoot me an email at spoonychan@gmail.com! Thank you so much!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/4FtOOYNh2bw" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzc0MTkzLzQzMzMzNDYucG5n/original/PdFTtn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc0MTkzLzQzMzMzNDUucG5n/original/vZthn9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc0MTkzLzQzMzMzNDcucG5n/original/dncFQa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc0MTkzLzQzMzMzNDQucG5n/original/j3KWRB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc0MTkzLzQzMzMzNDgucG5n/original/R3ix9m.png]]
<h1 class="text-center"><img src="https://img.itch.zone/aW1nLzU5Mzg4MjMucG5n/original/RvISus.png" loading="lazy"></h1>
<h1 class="text-center">Other Cool Games Like This</h1>
<p>If you like Mixolumia, you might want to check out some of these other great arcade puzzlers on Itch!</p>
<ul><li><a href="https://maxkrieger.itch.io/crossniqplus" target="_blank">CROSSNIQ+</a> - Slide rows and columns to clear crosses of color</li><li><a href="https://beanborg.itch.io/pushamo" target="_blank">Pushamo</a> - Push shapes around a field to clear blocks</li><li><a href="https://galaxytrail.itch.io/petal-crash" target="_blank">Petal Crash</a> - Slide blocks into each other to start chain reactions</li><li><a href="https://jerryverhoeven.itch.io/kavel" target="_blank">Kavel</a> - Find matches in specific formations to clear clusters of color</li><li><a href="https://raskalgames.itch.io/ekstase" target="_blank">Ekstase</a> - Build up blocks to be cleared in time with the music</li></ul><p>...and <a href="https://itch.io/c/1588143/cool-arcade-puzzlers" target="_blank">even more in this collection!</a></p>
<p><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzM5NTkzNDUuZ2lm/original/1kwCR9.gif" loading="lazy"><br></p>
<h1 class="text-center">Watch the Trailer</h1>
<p><iframe width="553" height="311" src="https://www.youtube.com/embed/AC8AAkjTSTc?rel=0" frameborder="0" allowfullscreen=""><span class=""></span></iframe></p>
<p><br></p>
<p class="text-center"><br></p>
<h1 class="text-center">Mixolumia is a Shimmering Fountain of Good Brain Juice</h1>
<p>Mixolumia introduces a fresh twist on falling block puzzlers. Scintillating visuals and entrancing music respond to your input and evolve as you progress. Diamond blocks slide together on the gem-shaped board and explode in glittering chain reactions.</p>
<p><br></p>
<p class="text-center"><br></p>
<h1 class="text-center">Swap the Soundtrack</h1>
<p>Mixolumia comes with music by davemakes, <a href="https://www.josiebrechner.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Josie Brechner</a>, and <a href="http://www.perennialsounds.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Jasmine Cooper</a>. Each track has unique sound effects that harmonize with the music, giving the game a totally different feel depending on which song you choose.</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzM5NTk5MTguZ2lm/original/3RfI1p.gif" loading="lazy"></p>
<p>Musicians can even create and/or mod their own songs and sound effects for Mixolumia. There are a bunch available <a href="https://itch.io/c/1110361/mixolumia-music-packs" target="_blank">right here on itch</a> and more <a href="http://invite.gg/mixolumia" target="_blank" rel="nofollow noopener" referrerpolicy="origin">in the Mixolumia Discord.</a> Check out the <a href="https://www.mixolumia.com/makingmusic/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">dynamic music system documentation</a> to learn more about making your own.</p>
<p><br></p>
<p class="text-center"><br></p>
<h1 class="text-center">Remix the Palette</h1>
<p>Switch up Mixolumia's visuals by selecting from a wide range of lovely color palettes, or create and customize your own. Check out <a href="https://itch.io/t/914162/color-palettes" target="_blank">the game forums</a> and the <a href="http://invite.gg/mixolumia" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Mixolumia Discord</a> for more info.</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzM5NTk5OTUuZ2lm/original/I6WWsG.gif" loading="lazy"><br></p>
<p><br></p>
<p class="text-center"><br></p>
<h1 class="text-center">Choose Your Experience</h1>
<p>Whether you want to chill out, or challenge yourself to intense, strategic gameplay, Mixolumia has a game mode to suit your mood.</p>
<figure><img src="https://img.itch.zone/aW1nLzM5NTk4MjcuZ2lm/original/GsC78y.gif" loading="lazy"></figure>
<p><br></p>
<h1 class="text-center">Gameplay</h1>
<p><iframe width="553" height="311" src="https://www.youtube.com/embed/z27cwdUEmCk?rel=0" frameborder="0" allowfullscreen=""><span class=""></span></iframe></p>
<p class="text-center"><br></p>
<h1 class="text-center">Accessibility</h1>
<p>Mixolumia has options to adjust or turn off all of its effects individually so as to be as accessible to players as possible.</p>
<p><br></p>
<h1 class="text-center">Honors</h1>
<p class="text-center"><a href="https://igf.com/article/genesis-noir-leads-igf-finalists-four-nominations" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzU5NDM1NDkucG5n/original/jhW%2F6w.png" alt="IGF 2021 Honorable Mention for Excellence in Audio" title="IGF 2021 Honorable Mention for Excellence in Audio" loading="lazy"></a></p>
<p><br></p>
<p class="text-center"><br></p>
<h1 class="text-center">Behind the Game</h1>
<p>Mixolumia is a game by <a href="https://twitter.com/davemakes" target="_blank" rel="nofollow noopener" referrerpolicy="origin">davemakes</a> (they/them), with additional music by <a href="https://www.josiebrechner.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Josie Brechner</a> (she/they) and <a href="http://perennialsounds.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Jasmine Cooper</a> (she/her). You can read about its creation in <a href="https://twitter.com/i/events/1224218410298441728" target="_blank" rel="nofollow noopener" referrerpolicy="origin">this twitter moment</a>. Development was made possible by a bunch of lovely people <a href="https://www.patreon.com/davemakes" target="_blank" rel="nofollow noopener" referrerpolicy="origin">via Patreon</a>.</p>
<p>The <a href="https://davemakes.bandcamp.com/album/mixolumia-ep" target="_blank" rel="nofollow noopener" referrerpolicy="origin">game soundtrack is available on Bandcamp</a> and <a href="https://davemakes.itch.io/mixolumia-ep" target="_blank">right here on Itch!</a></p>
<p>Members of the press may want to check out our <a href="http://www.mixolumia.com/press/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">press kit</a>.</p>
<p><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzM5NTkzNDUuZ2lm/original/1kwCR9.gif" style="max-width: 100%; font-size: 14px; text-align: center; background-color: rgb(255, 255, 255)" loading="lazy"><br></p>
<p><br></p>
<p><strong>IMPORTANT NOTE FOR MAC USERS: </strong>Please download and launch Mixolumia through the <a href="https://itch.io/app" target="_blank">Itch App</a>. Otherwise you may get a weird "Game not found!" error.</p>
<p><strong>LINUX USERS:</strong> The Linux version is provided as-is and I will do my best to support it, but I'm not a Linux expert.<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/AC8AAkjTSTc?rel=0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzcyMzU0LzM5ODc1NTUucG5n/original/%2BYq7v3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzcyMzU0LzM5OTAxNzkucG5n/original/PhpqaM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzcyMzU0LzM5ODc1NjQucG5n/original/lOdGiz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzcyMzU0LzM5OTUxMjAucG5n/original/gY2VWh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzcyMzU0LzM5ODc1NTYucG5n/original/J570R1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzcyMzU0LzM5ODc1NjEucG5n/original/XZHGV%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzcyMzU0LzM5ODc1NjIucG5n/original/nhQlvG.png]]
<p><iframe width="553" height="311" src="https://www.youtube.com/embed/aH7ARDqbMxI?rel=0" frameborder="0" allowfullscreen=""><span class=""></span><span class=""></span></iframe></p>
<h1>Mixolumia EP</h1>
<p>Original soundtrack for <a href="https://davemakes.itch.io/mixolumia" target="_blank">Mixolumia</a> featuring music by <a href="https://davemakes.itch.io" target="_blank">davemakes</a> and <a href="https://www.josiebrechner.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Josie Brechner</a>, with remixes by <a href="https://izunadrop.bandcamp.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">M Gewehr</a> and <a href="https://floatingfast.bandcamp.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Gautam Srikishan</a>.<br><br>✨🔶🎶 Chill, entrancing electronic and ambient jams 🎶🔶✨</p>
<p><strong>Track Listing</strong>
</p>
<ol><li>Tessellation - <em>davemakes</em>
</li><li>Rush! - <em>Josie Brechner</em>
</li><li>Summer Shower - <em>Josie Brechner</em>
</li><li>Descending a Cosmic Well - <em>davemakes</em>
</li><li>Clear! - <em>M Gewehr</em>
</li><li>Lunar Lull (from my campfire on the moon) - <em>Gautam Srikishan</em>
</li></ol>
<p><strong>Formats:</strong></p>
<ul><li>MP3 (320 kbps and V0)</li><li>Ogg Vorbis</li><li>FLAC</li></ul>
<p><em>(if you don't know what all that means, MP3 V0 should suit you just fine!)</em></p>
<p><strong>BONUS TRACKS:</strong> Included are stems for Dave and Josie's tracks. These files are shared under a <a href="https://creativecommons.org/licenses/by-nc-sa/3.0/" target="_blank" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">Creative Commons license</a> (Attribution-NonCommercial-ShareAlike) for folks who want to create their own remixes.<br></p>
<p>All other tracks are copyright their respective artists. However, if you want to use them for something, it wouldn't hurt to ask!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/aH7ARDqbMxI?rel=0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjM3OS81OTgwNjg1LnBuZw==/original/gLL656.png]]
<p>A gruesome murder interrupts an evening party at a secluded mansion and you are the prime suspect! Explore the mansion, search for clues, and interrogate the other guests as you strive to unmask the killer in this open-ended mystery.<span></span><br></p><h2>A murder is committed in a secluded mansion, and it's up to you to solve it.</h2>MMM is a visual novel adventure with an open-ended mystery that puts your deductive skills to the test. A murder occurs in a secluded manor, and if you can't find the killer in time, you just might take the blame for the crime yourself! Gather information and search the house for clues as you form your own conclusions about the evening's mysterious events.<h2>Features</h2><ul><li><strong>Multiple Endings</strong>: Finding the true killer is ideal, of course, but maybe building a plausible case against one of the other characters is good enough to get you off the hook!</li><li><strong>Unique and Compelling Characters:</strong> Play as Miss Fortune, a delightfully caustic anti-heroine who has already been widowed nine times. But this time, she didn't do it (really!), and she'll have to solve the mystery herself to prove it!</li><li><strong>Immersive</strong> <strong>Story</strong>: Sharply written dialog full of choices ensures a thoroughly immersive narrative.</li><li><strong>Voice</strong>-<strong>acting</strong>: Each character is fully voiced, with over 1700 voiced lines throughout the game!</li><li><strong>Beautiful</strong> <strong>Visuals</strong>: Detailed, searchable backgrounds and slick visual effects like rain, fog and variable lighting enhance the aesthetic experience.</li><li><strong>Time</strong> <strong>runs</strong> <strong>Short</strong>: The incompetent police are on their way. Better solve the mystery before they arrive, lest they come to their own <i>(wrong)</i> conclusions.</li></ul><p>MMM is available for Mac, Linux & Windows computers.</p><p>It has full-English voice acting, and text in English, Italian or Spanish.</p><p>Download (or listen to) the OST for free <a href="https://soundcloud.com/enteiler/sets/mmm-murder-most-misfortunate-ost" target="_blank" rel="nofollow noopener" referrerpolicy="origin">here</a>!</p><p>We're the Foolish Mortals, a small indie team based in the flat and desolate wastes of Saskatoon, Saskatchewan, Canada. Read more about the game and us here: <a href="http://www.foolish-mortals.net/mmm" rel="nofollow noopener" referrerpolicy="origin">http://www.foolish-mortals.net/mmm</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/BUlDO2Y4A8Y" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzM5MTQvNjE4NzUzLmpwZw==/original/Phmc3x.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzM5MTQvNjE4NzUxLmpwZw==/original/ZgQ%2Boh.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzM5MTQvNjE4NzUwLmpwZw==/original/um9xv%2F.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzM5MTQvNjE4NzUyLmpwZw==/original/q9cu8r.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzM5MTQvNjE4NzQ5LmpwZw==/original/Vy4m0g.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzM5MTQvNjE4NzQ4LmpwZw==/original/mWkUy7.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzM5MTQvNjE4NzQ3LmpwZw==/original/J30VbF.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzM5MTQvNjE4NzQ2LmpwZw==/original/Z7xlZH.jpg]]
<p>The package includes: </p>
<ul><li>Wall (A) [1,136 tris] </li><li>Door frame (A) [584 tris] </li><li>Corner (A) [762 tris] </li><li>Floor (A) [500 tris] </li><li>Door (B) [513 tris] </li><li>Ceiling (B) [60 tris] </li><li>Cactus (B) [1,842 tris] </li><li>Regeneration unit (C) [2,232 tris] </li><li>Storage unit (C) [685 tris] </li><li>Generator [50,522 tris]</li></ul>
<p>The letters in parenthesis indicate what assets share textures, there're 3 packs of 2048x2048px PBR textures, the generator has its own set of textures.<br><br>The regeneration unit is a table with bottles, I also included the table and bottles as separate objects.<br><br>There's also a lamp there, that one is not really optimized but I just added it for the renders, wasn't really part of the pack.<br><br>The generator has a rig so you can rotate the fan and move the fan cover.<br><br>If this sells 10 times I'll add a good lamp, and another object to it (reviewers can submit an idea I'll take into account). At 20 ratings I'll add another object.</p>
<p><a href="https://www.artstation.com/artwork/ZWGOX" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Artstation post</a><br><br></p>
<div class=""><iframe width="640" height="480" src="https://sketchfab.com/models/6f1a46bc2626488cbe152a00f02e1f15/embed" frameborder="0" allowfullscreen=""></iframe>
<p>
<a href="https://sketchfab.com/models/6f1a46bc2626488cbe152a00f02e1f15?utm_medium=embed&utm_source=website&utm_campain=share-popup" target="_blank" style="color: #1CAAD9" rel="nofollow noopener" referrerpolicy="origin">Modular Cabin</a>
by <a href="https://sketchfab.com/no_opponent?utm_medium=embed&utm_source=website&utm_campain=share-popup" target="_blank" style="color: #1CAAD9" rel="nofollow noopener" referrerpolicy="origin">Erika Moya</a>
on <a href="https://sketchfab.com?utm_medium=embed&utm_source=website&utm_campain=share-popup" target="_blank" style="color: #1CAAD9" rel="nofollow noopener" referrerpolicy="origin">Sketchfab</a>
</p>
</div>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTY3MDExLzc3MzE0OS5wbmc=/original/fb6w8C.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY3MDExLzc3MzE1MC5wbmc=/original/Wb9CzM.png]]
<p><strong>NOW AVAILABLE ON: Android, iOS, Windows, and MacOS.<br><br>monad</strong> is meant to be experienced in a dark, quiet room, on a large screen with a surround-sound system or headphones, and with a multi-touch screen for input.<br><br><strong>monad</strong> was initially conceived as an experiment with space, wherein at the very moment that the player engaged with the system, a white circle began to grow, unrestrained, until it occupied the entire screen, the entire space. Leaving no room for agency.<br><br>The black circle came about as a means for the player to regain space. The soundscape came about in order to give more dimension to the feelings that the visuals were already evoking.<br></p>
<p><strong>monad</strong> is made with <a href="https://www.love2d.org/" rel="nofollow noopener" referrerpolicy="origin">LÖVE</a>, with help and support from that community as well as <a href="http://louisvillemakesgames.org/" rel="nofollow noopener" referrerpolicy="origin">Louisville Makes Games</a>. <br></p>
<p><strong>monad </strong>has been exhibited at:<br></p>
<p>Indie Games and Art Social - <a href="https://louisville.aiga.org/" rel="nofollow noopener" referrerpolicy="origin">AIGA</a> Design week, September 2018</p>
<p>Bit Bash, August 2019</p>
<p>Kentucky State Fair - Design Web Digital and Interactive Art Exhibit, August 2019</p>
<p>EGX 2019 - Left Field Collection, September 2019<br><br><br><br><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/7-NrV1mk0K0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDA5ODg1LzIxNDM4NjYuanBn/original/r2qOM0.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA5ODg1LzIxNDM4MzguZ2lm/original/rU2YcZ.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA5ODg1LzI0MTk3NDYuanBn/original/w598bw.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA5ODg1LzIxNDM2OTIuZ2lm/original/mR7h%2FQ.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA5ODg1LzIxNDM3NzkuanBn/original/PIMEck.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA5ODg1LzIxNDM4MzEuZ2lm/original/QYsbvY.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA5ODg1LzIxNDM3NzguanBn/original/LmnP86.jpg]]
<p>You have a tree in your garden a MONEYTREE! Strap your lawn vacuum on you back and collect all the money it drops. Try to keep your garden clean.</p>
<ul><li>Upgrades</li><li>Robots (makes it possible to idle)</li></ul>
<p><br></p>
<p>Left mouse button or Right bumber (Controller) to start/stop vacuum cleaner.</p>
<p><br></p>
<p>Follow me on twitter <a href="https://twitter.com/Mrhankey91" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@mrhankey91</a> or go to my website for more games <a target="_blank" rel="nofollow noopener" referrerpolicy="origin">https//xtasestudios.com</a> </p>
<p>If you like the game please consider donating. Donating will help me to get it to Steam. Enjoy!!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/ErHXK55M9tQ" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTY5MDAwLzU1MDA1MTAuanBn/original/VdzmBk.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY5MDAwLzU1MDA1MTEuanBn/original/pUZwYe.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY5MDAwLzU1MDA1MTIuanBn/original/4LBISB.jpg]]
<p><strong>Over 100 copies sold! To celebrate, Monster Manifest gets a permanent price drop to $9.99. Thanks for everyone's support. Enjoy your adventures!</strong><br></p>
<p>A collection of 300+ creatures from the SRD5 adapted for use in Quest RPG.<br></p>
<p>Regardless of whether you’re seeking a bridge to Quest from another tabletop roleplaying system, or you are new to TTRPGs altogether — this book is full of NPCs for your games.</p>
<p>Monster Manifest also includes a toolkit you can use to generate your own NPCs — either adapted from other TTRPG systems or built from scratch.</p>
<p><em>"If you're going to run D&D adventures or setting material in Quest, and don't want to cheap on conversions, consider this book essential." — <a href="https://twitter.com/levikornelsen/status/1301221298836627456" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Review from Levi Kornelsen</a> </em></p>
<p>Includes a beautiful full color cover as well as 14 interior black & white chapter splash page illustrations. A second printer friendly PDF with a black and white cover is also included.<br></p>
<p>Written, illustrated, designed, & edited by J.N. Butler.</p>
<p><strong>The NPC stat blocks in this book require the digital or physical Quest Game Book for referencing player role abilities assigned to certain NPCs.</strong></p>
<p>Files included with this download:</p>
<ul><li>Monster Manifest PDF</li><li>Monster Manifest PDF B&W (Printer Friendly)</li><li>Monster Manifest rich and plain text files (Screen Reader Ready)</li><li>Quest NPC Stat Generator Portrait and Landscape PDFs (Printer Friendly)</li><li>Quest NPC Stat Generator rich and plain text files (Screen Reader Ready)</li><li>Open Game License PDF</li></ul>
<p>This work includes the<strong> </strong><strong>Quest NPC Stat Generator</strong> by <a href="https://jnbutler.art/" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">J.N. Butler</a> licensed under <a href="https://creativecommons.org/licenses/by/4.0/" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">CC BY 4.0</a>. Available <a href="https://jnbutlerart.itch.io/quest-npc-stat-generator">here</a>.</p>
<p>This work uses material from the Quest Creators Resource. The Quest Creators Resource by The Adventure Guild, LLC is licensed under <a href="https://creativecommons.org/licenses/by/4.0/" rel="nofollow noopener" referrerpolicy="origin">CC BY 4.0</a>. For more information about Quest, please visit <a href="https://www.adventure.game/" rel="nofollow noopener" referrerpolicy="origin">www.adventure.game</a>. Additionally, please <a href="https://www.adventure.game/community-code" rel="nofollow noopener" referrerpolicy="origin">read Quest’s Community Guidelines</a> to help create experiences that are positive and fun.</p>
<p>This work also uses material from the <a href="https://dnd.wizards.com/articles/features/systems-reference-document-srd" rel="nofollow noopener" referrerpolicy="origin">System Reference Document 5.1 (SRD5)</a> under the Open Gaming License. A copy of the full text of the Open Game License is included with the download of this work.<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMDQxLzQ1MDk2MzYuanBn/original/ZSm6fd.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMDQxLzQxNDgyMDcucG5n/original/Z%2FGtoR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMDQxLzQxNDgyMDEucG5n/original/txs2Bx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMDQxLzQxNDgyMDQucG5n/original/WojqYG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMDQxLzQxNDgyMDYucG5n/original/sIRvsz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMDQxLzQ1MDk2MzEucG5n/original/i2MpMy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMDQxLzQxNDgyMDUucG5n/original/nPEKb3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMDQxLzQxNDgyMDIucG5n/original/xo0jqg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMDQxLzQxNDgyMTUucG5n/original/R96gZN.png]]
<p class="text-center"><strong><em>Welcome to Monster Pub!<br></em></strong><em>Why not pull up a chair, play a hand of cards, and make a friend?</em></p>
<p>Monster Pub is an episodic narrative game about finding new friends in a new town, but, uh, also everyone is a monster, including you! Be a good friend, or a bad friend! Play cards and crush your opponent! Or maybe just try to have a nice time, I'm not your boss.<span></span></p>
<p>Try Chapter One for <strong>free</strong>! Why not!!!!</p>
<p>Chapter Two: <a href="https://isoplod.itch.io/monster-pub-2">https://isoplod.itch.io/monster-pub-2</a></p>
<hr>
<p class="text-center"><strong>Questions + Answers</strong><br></p>
<p><em>- What's the difference between the trial and the full version?</em><br>The trial version is identical to the full game, but to export your results to continue playing in chapter two you'll need to get the full version!!</p>
<p><em>- How many chapters will there be?</em><br>Currently we have plans for 3 chapters, whether we make any more depends on you, dear reader!</p>
<p><em>- Will this work on macOS Catalina?</em><br>Buddy I have NO idea, sorry!! I would STRONGLY advise Mac users to PLEASE try the demo to determine if the game will work on their computer before paying for the full game.</p>
<hr>
<p class="text-center"><strong>Additional Links</strong></p>
<p>- Hub website: <a href="http://www.monster-pub.com" rel="nofollow noopener" referrerpolicy="origin">http://www.monster-pub.com</a></p>
<p>- Soundtrack: <a href="https://isoplod.bandcamp.com/album/thats-jazz-baby-monster-pub-vol-1" rel="nofollow noopener" referrerpolicy="origin">https://isoplod.bandcamp.com/album/thats-jazz-baby-monster-pub-vol-1</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTgzODExLzg1OTczMi5naWY=/original/mG6EV5.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTgzODExLzg1OTczMC5naWY=/original/YXwjvQ.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTgzODExLzg1OTcxMy5naWY=/original/wNWFB3.gif]]
<p class="text-center"><strong><em>Welcome to Monster Pub!<br></em></strong><em>Why not pull up a chair, play a hand of cards, and make a friend?</em></p>
<p>Monster Pub is an episodic narrative game about finding new friends in a new town, but, uh, also everyone is a monster, including you! Be a good friend, or a bad friend! Play cards and crush your opponent! Or maybe just try to have a nice time, I'm not your boss.</p>
<p>This is the second chapter! If you want the whole story, start at the beginning!</p>
<p>Chapter One (Free to Try!): <a href="https://isoplod.itch.io/monster-pub-1">https://isoplod.itch.io/monster-pub-1</a></p><p>Chapter Three: <a href="https://isoplod.itch.io/monster-pub-chapter-3">https://isoplod.itch.io/monster-pub-chapter-3</a></p>
<hr>
<p><strong>Questions + Answers</strong>
</p>
<p><em>- Chapter Two? What?? Explain!<br></em>Monster Pub is released in episodes! Each game takes approximately one hour to play and you can move your results from chapter to chapter. Why not start with chapter one? It's free to try!</p>
<p><em>- How many chapters will there be?<br></em>Currently we have plans for 3 chapters, whether we make any more depends on you, dear reader!</p>
<p><em>- Will this work on macOS Catalina?</em><br>Buddy I have NO idea, sorry!! I would STRONGLY advise Mac users to PLEASE try the demo to determine if the game will work on their computer before paying for the full game.<br></p>
<hr>
<p><strong>Additional Links</strong></p>
<p>- Hub website: <a href="http://www.monster-pub.com/" rel="nofollow noopener" referrerpolicy="origin">http://www.monster-pub.com</a></p>
<p>- Soundtrack: <a href="https://isoplod.bandcamp.com/album/thats-jazz-baby-monster-pub-vol-1" rel="nofollow noopener" referrerpolicy="origin">https://isoplod.bandcamp.com/album/thats-jazz-baby-monster-pub-vol-1</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTgzODI2Lzg2MDc3OC5naWY=/original/BodDWZ.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTgzODI2Lzg2MDc3Ni5naWY=/original/V2oxxK.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTgzODI2Lzg2MDc3Ny5naWY=/original/Ji%2B%2BMc.gif]]
<p class="text-center"><strong><em>Welcome to Monster Pub!<br></em></strong><em>Why not pull up a chair, play a hand of cards, and make a friend?</em></p>
<p>Monster Pub is an episodic narrative game about finding new friends in a new town, but, uh, also everyone is a monster, including you! Be a good friend, or a bad friend! Play cards and crush your opponent! Or maybe just try to have a nice time, I'm not your boss.</p>
<p>This is the third chapter! If you want the whole story, start at the beginning!</p>
<p>Chapter One (Free to Try!): <a href="https://isoplod.itch.io/monster-pub-1">https://isoplod.itch.io/monster-pub-1</a></p>
<p>Chapter Two: <a href="https://isoplod.itch.io/monster-pub-2">https://isoplod.itch.io/monster-pub-2</a><br></p>
<hr>
<p><strong>Questions + Answers</strong></p>
<p><em>- Chapter Three? What?? Explain!<br></em>Monster Pub is released in episodes! Each game takes approximately one hour to play and you can move your results from chapter to chapter. Why not start with chapter one? It's free to try!</p>
<p><em>- Will there be more chapters?<br></em>Currently we have only made plans for 3 chapters, whether we make any more depends on you, dear reader!</p>
<p><em>- Will this work on macOS Catalina?</em><br>Buddy I have NO idea, sorry!! I would STRONGLY advise Mac users to PLEASE try the demo to determine if the game will work on their computer before paying for the full game.<br></p>
<hr>
<p><strong>Additional Links</strong></p>
<p>- Hub website: <a href="http://www.monster-pub.com/" rel="nofollow noopener" referrerpolicy="origin">http://www.monster-pub.com</a></p>
<p>- Soundtrack: <a href="https://isoplod.bandcamp.com/album/thats-jazz-baby-monster-pub-vol-1" rel="nofollow noopener" referrerpolicy="origin">https://isoplod.bandcamp.com/album/thats-jazz-baby-monster-pub-vol-1</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjQzOTgxLzExNzgwNTUuZ2lm/original/TpFmaF.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQzOTgxLzExNzgwNTMuZ2lm/original/HeuzZe.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQzOTgxLzExNzgwNTQuZ2lm/original/sMZPfq.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQzOTgxLzExNzgwNTIuZ2lm/original/3OhxZ0.gif]]
<p><em>I knew college would be a different experience, but I didn't expect it to be a different world!<br></em></p>
<p>I should have known something was up when the main campus burned down and I had to start attending school in a creepy haunted castle. As it turns out, the reputation is deserved - the place is full of monsters nobody else seems to be able to see.</p>
<p>It doesn't take long for them to notice me, either. But... not in the way you'd expect monsters to notice a human in their midst. <br><br>What do I do? Let an alkonost take me to tea? Or preserve the stability of the barrier between worlds? Even if the monster world is drawing me in, I can't help but feel like something is wrong...<br><br>And maybe I can fix it...<br><br><em>"Monstrata Fracture" is currently in development. We'll be updating it every couple of months with new content and characters. Thanks for playing!</em><br></p>
<p><strong>Currently Features:</strong></p>
<ul><li>5 cute monsters to date!</li></ul>
<ul><li><p>14 backgrounds with 21 total variations!<br></p></li><li><p>35k words! More on the way!</p></li><li>Blinking and speaking animation! </li></ul>
<ul><li><p>Questionable life choices!</p></li><li>Customizable protag!</li></ul>
<ul><li>Pronoun options!</li></ul>
<ul><li>Phone calls with your mother!</li></ul>
<p><strong>Recommended for ages 16 and up.</strong><br></p>
<p><strong>Content Warnings:</strong></p>
<ul><li><p>Death: player character</p></li><li><p>Fantasy racism</p></li><li><p>Slavery</p></li><li><p>Unhealthy relationships</p></li><li><p>Alcohol</p></li></ul>
<ul><li><p>Language</p></li><li>Sexual themes</li></ul>
<p><strong>Glasses DLC:<br></strong>We now have a bonus file for anyone who'd like to support this game's development! <br>With it, you can add glasses to any or all of the route characters. </p>
<p><em>To install:<br></em>Download the DLC file, without unzipping/extracting it. <br>Open the in-game Preferences menu and select 'Load DLC' then select the DLC .zip file from wherever you have saved it-- The game will reload to add the DLC. <br><em>Please contact us if you encounter any problems, this is a beta feature! <br>(It has been tested on Windows and Linux but not Mac, so especially let us know if you have trouble using it on Mac!!)</em></p>
<p><em>If the above method doesn't work, <a href="https://pastebin.com/gVZ6LqT7" target="_blank" rel="nofollow noopener" referrerpolicy="origin">click here for manual instructions</a>.<br></em></p>
<p>If you'd prefer to receive physical items in exchange, we have a <a href="http://astralore.com/merch" target="_blank" rel="nofollow noopener" referrerpolicy="origin">merch shop</a> on our website:<br></p>
<figure><a href="http://astralore.com/merch" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzE5ODQwNjgucG5n/original/g88LvE.png" alt="Merchandise photos" title="Merchandise photos" loading="lazy"></a><br></figure>
<p>And if you'd prefer to financially support in a more long-term sense, we also have a <a href="http://patreon.com/astralore" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Patreon</a>!
</p>
<p><a href="https://www.patreon.com/astralore" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzE3MTgwODgucG5n/original/HQO%2FqX.png" alt="Become a Patron button" title="Become a Patron button" loading="lazy"></a></p>
<figure><br></figure>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjA0OTA1LzExNDc2MDcucG5n/original/mxTonE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0OTA1LzE0MTAzMjkucG5n/original/FmIQGc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0OTA1LzExNDc2MDYucG5n/original/UHPTRl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0OTA1LzExNDc2MDkucG5n/original/od2oqD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0OTA1LzExNDc2MDUucG5n/original/wxA8%2Bj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0OTA1LzE5NDI0MzMucG5n/original/3hgeGy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0OTA1LzE5NDI0NDQucG5n/original/x48rhf.png]]
<p>Moon and Lou is an interactive bedtime story about friendships that come to be, mutual understanding and hidden feelings.</p>
<p>Explore the story by being curious and clicking things around.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjg4OTQyLzM3OTUxMjAuanBn/original/%2BsGfDn.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg4OTQyLzM3OTUxMDIucG5n/original/O8KS3U.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg4OTQyLzM3OTUxMjEucG5n/original/gczxZG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg4OTQyLzM3OTUxMzEuanBn/original/sLwAwc.jpg]]
<h3 style="color:#FFFFFF">Show Your Personality</h3>
<p>
<strong>Moon Hunters</strong> is a 1 to 4 player co-operative action personality test RPG in a rich, ancient world that's different every time you play. Build your mythology as every action and choice contributes to how you're remembered, as a constellation in the night sky.
</p>
<h3 style="color:#FFFFFF">A Hero's Journey</h3>
<p>
Play out 5 days from different angles to uncover new sides to characters, conflicts, and narratives. Try out all 4 player hometowns and 6 player character classes, each with their own abilities and randomly available upgrades.
</p>
<h3 style="color:#FFFFFF">Earn Your Reputation</h3>
<p>
On your search for the missing Moon goddess, you will travel the world with your fellow Hunters and become a living legend for your deeds. How will you be remembered by your tribe in generations to come?
</p>
<p>
<br>
</p>
<hr>
<p>
<u><br>
</u>
</p>
<p>
<u>Awards:</u><br>
</p>
<ul>
<li>Indie MegaBooth - PAX Prime 2015 and PAX East 2016 Showcase</li><li>Indie Prize Europe 2016 Winner: Most Promising Game in Development</li>
<li>Indie Prize Europe 2016 Finalist: Critic's Choice Best in Show, Best Multiplayer</li>
<li>Montreal International Game Festival - Narrative Design Award</li>
<li>Curse PAX East 2015 - Best Co-Op Experience</li>
</ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/UdGOvzXa4N8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3MDYvMzM0MDE2LnBuZw==/original/e%2F9%2FTH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3MDYvMjQ0MjI0LnBuZw==/original/NVs84X.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3MDYvMjQ0MjI1LnBuZw==/original/IdC8C7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3MDYvMjQ0MjIyLnBuZw==/original/8dwQUp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3MDYvMjQ0MjIzLnBuZw==/original/xlhKHi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3MDYvMjQ0MjI2LnBuZw==/original/AHBLc7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3MDYvMzM0MDE5LmpwZw==/original/h%2BTgaa.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3MDYvMzM0MDE3LnBuZw==/original/rxJvro.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3MDYvMzM0MDE4LnBuZw==/original/8yGxpT.png]]
<p><strong>The Council of Sky Elders, responsible for all things "sky" and the safety of the nation that lies beneath it, have issued a decree: </strong></p>
<p><strong>We are going to be the first to land on the Moon. </strong></p>
<p></p>
<p><strong>MOON'S SHOT</strong> is an adventure for Troika! for 2-5 players, suitable for new players. Your players will assemble their motley crew to serve as moonanauts: the first people to ever travel to the Moon!<br></p>
<p>However: it turns out getting to the moon is <em>really difficult.</em> So difficult in fact that the Council's technical folks opted out of it, deciding it would be much easier to build a false Moon underground in a cave and hope the moonanauts don't catch on.</p>
<p>How long will it take them to figure out the truth? Will they care when they do? Will they ever make it back home when they don't really know where they are?</p>
<p><strong>Inside</strong>: 20 pages of wonder! Artwork from <a href="https://twitter.com/rapidpunches" target="_blank" rel="nofollow noopener" referrerpolicy="origin">RAPIDPUNCHES</a> and <a href="https://www.patreon.com/evlynmoreau/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Evlyn Moreau</a>! Roll tables! An elephant with the word MOON painted on it! A nagging sense of unease!</p>
<p>Written for the TroikaFest! 2021 game jam,<strong> MOON'S SHOT</strong> is an independent production by Michael Van Vleet and is not affiliated with the Melsonian Arts Council.</p>
<p>--</p>
<p>Want a physical copy? <a href="https://www.coldhearthcollective.com/product/moon-s-shot" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Head on over to Cold Hearth Collective!</a></p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNzA1OS81NzM2MjIzLnBuZw==/original/gYYKxQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNzA1OS81NzM2MjI2LnBuZw==/original/woKjKJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNzA1OS81NzU4MDU0LnBuZw==/original/FlWvZS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNzA1OS82MjkxODUyLmpwZw==/original/CxSpEm.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNzA1OS82MjkxODU0LmpwZw==/original/QLNRif.jpg]]
<p><strong>Viva La Luna!</strong></p>
<p>"You can't fight city hall" is a bunch of b.s. There are literally hundreds of ways to take down an oppressive regime. MoonPunk is filled with them.<br></p>
<p>MoonPunk is a standalone political action roleplaying game for 3-7 people. It also contains real-world guides to direct action. Play as punks on a retrofuturistic Moon fighting the good fight against oppression. Use subversive action to take down The Authority, spread the truth about corruption, protest the corporate, or just punch some moon nazis.</p>
<p>This book contains everything you need to start fighting the power.</p>
<p>Inside you will find:</p>
<ul><li>12 punk playbooks, and how to make your character.</li><li>9 basic moves for navigating and narrating the world.</li><li>26 pieces of digital art.</li><li>A punk's guide to direct action.</li><li>Everything you could need to run a game as "The Authority."</li><li>4 example modules to run your game.</li></ul>
<p><strong>So sew on some patches, spike up your hair, and turn it up to 11. The show's about to start.</strong></p>
<p>Want to try before you buy? Download the quickstart <a href="https://wannabegames.itch.io/moonpunk-quickstart" target="_blank">for free here.</a></p>
<p>Like this book so much you want a print copy? Buy it at <a href="https://www.drivethrurpg.com/product/308781/MoonPunk" target="_blank" rel="nofollow noopener" referrerpolicy="origin">DriveThruRPG.</a><br></p>
<p><strong>Roll20 now also has MoonPunk on its website! You can play there without downloading anything!</strong></p>
<p></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzU1MDI2LzU5MTIyMzMucG5n/original/dorBby.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU1MDI2LzU5MTIyMjgucG5n/original/WFgw8L.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU1MDI2LzU5MTIyMzAucG5n/original/mS3PNH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU1MDI2LzU5MTIyMjAucG5n/original/MVOEpf.png]]
<p>Explore forgotten worlds and deadly dungeons with your companions, make difficult choices and endure their consequences. Solve intriguing puzzles to open doors and obtain key artifacts. Have fun!</p>
<p><br></p>
<p><strong>Story</strong></p>
<p>Moonstone is a pretty mountain village that owes its riches to a famous mine, that has recently become a source of major trouble for the inhabitants. Since part of it caved in due to a mysterious explosion, the village is haunted at night by dangerous creatures that have already caused one casualty: Terence the Baker. With your companions, you decide to help the villagers (for a handsome reward of course as nobody works for free nowadays) to get rid of said monsters. What starts as a simple "cleaning operation" of the mines quickly evolves into an epic drama about lost civilizations, historic guilt, race disputes, and difficult choices about loyalty, justice, and trust. And yes, there is also a love story or two, depending on your choices.</p>
<p><br></p>
<p><strong>What can you do in this game?<br></strong></p>
<p>In 7 hours of gameplay you can enjoy interesting tales, play detective and solve a hideous crime, fight deadly enemies, solve intriguing puzzles, play minigames, win/lose your money at gambling, loot chests, trade, open a bank account, open doors with picklocks. Make tough choices with not always foreseeable consequences.</p>
<p><strong>How will it end?<br></strong></p>
<p>This depends entirely on your choices. There are three possible ends: <strong>happy</strong> end, <strong> bad</strong> end, and<strong> death</strong>. Death means "game over" - you won't even have the doubtful pleasure of seeing the bad end ...</p>
<p><br></p>
<h3>Free demo ! Play the first hour of the game for free!</h3>
<p><strong>Moonstone Deep</strong> is the first part of the "Ryan Manolesta Trilogy". Did you like the game? Don't miss the second part, <strong>Benjamin of Blackstone Edge</strong> (released May 2018)!</p>
<p><br></p>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/6CKNtlEr-Gk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTc1OTM2LzgyMTY5Mi5wbmc=/original/xJKkmW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc1OTM2LzgyMTY5NC5wbmc=/original/MFrzxr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc1OTM2Lzg2Mjc3MC5wbmc=/original/r1E6kp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc1OTM2Lzg2Mjc3MS5wbmc=/original/duMG%2Bz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc1OTM2LzgyMTY5OC5wbmc=/original/liNBaM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc1OTM2LzgyMTcwNS5wbmc=/original/LtvOGT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc1OTM2LzgyMTcyMS5wbmc=/original/17Peyq.png]]
<p>Mom and Dad have finally put Mop Boy in charge of keeping their beloved pizzeria clean. But with grease monsters running amuck and a crooked health inspector on their tail, it's gonna take the whole family to keep the restaurant afloat.<br><br>(PLease don't kill us for copying the rest from our old demo)<br></p>
<p>The game centers around Mop Boy, a kid whose family owns and lives above a pizza restaurant, Doughboys (based on our team member’s family-owned restaurant of the same name).
While the other members of the Boy family have normal restaurant jobs (running deliveries, cooking, taking orders), he’s left battling the grease lingering from the daily grind.
Upstairs, Mop unwinds and replenishes lost health while bonding with his family.
</p>
<p><strong>
Controls:</strong>
</p>
<ul><li>Movement: arrow keys
</li><li>Jump: Space
</li><li>Action/ Attack: F
</li><li>Charge Attack: Hold F
</li><li>Pause / View Mission: Esc
</li></ul>
<p>Follow us on Twitter: <a href="https://twitter.com/MopBoyGame" rel="nofollow noopener" referrerpolicy="origin">twitter.com/MopBoyGame</a>
and Instagram!: <a href="https://www.instagram.com/mopboygame/" rel="nofollow noopener" referrerpolicy="origin">instagram.com/mopboygame</a>
</p>
<p><em>Thanks for playing our Mop Boy Demo! There's more on the way, so stay tuned!</em>
</p>
[img width=500 [https://img.itch.zone/aW1nLzU4NjA5MDEuZ2lm/original/3pa5RS.gif]]
<div class="text-center"><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/BCYFlSsmqMI" frameborder="0" allowfullscreen=""></iframe></div>
<p class="text-center"><strong>STEAM Key included on purchase!</strong><br></p>
<p><img src="https://img.itch.zone/aW1nLzIyOTY5MjQucG5n/original/cwVHKC.png" loading="lazy"></p>
<p>Defend your home dungeon against a bunch of impolite humans in this humorous tower/lane defense game. Summon monsters, change tactics on the fly & skip funny dialogue to defeat waves and waves of the most generic heroes mankind has ever seen!<br><br>Classic lane defense action, a fresh new tactics switching mechanic and a bunch of funny dialogue!</p>
<p><img src="https://img.itch.zone/aW1nLzIyOTY5MjcucG5n/original/fKcCwx.png" loading="lazy"><br></p>
<ul><li>16 levels of MOSTLY INTENSE tower defense action!</li><li><strong>ENDLESS MODE</strong> with randomized waves of survival goodness!</li><li>Hundreds of lines of kind of funny dialogue from your Summoner sidekick!</li><li>An amazingly round & ergonomic TACTICS WHEEL to help you switch tactics on the fly!</li><li>A squishy squashy pixel art style</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/BCYFlSsmqMI" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDUzMDc5LzIzMDAwNzQucG5n/original/Dh0t9E.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUzMDc5LzIyOTY5NDQucG5n/original/SdhTDP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUzMDc5LzIyOTY5NDMucG5n/original/kyZa%2BT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUzMDc5LzIyOTY5NDUucG5n/original/GhH5Lo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDUzMDc5LzIyOTY5ODMucG5n/original/KaR87O.png]]
<p>Motel 666 is a survival horror game made in the Unity engine. In order to succeed, players will need to search rooms for items and battle enemies throughout a haunted motel.</p>
<p>CONTENT ADVISORY:</p>
<p>Motel 666 features some mature subject matter, including discussion of death, suicide, and acts of violence. </p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTQ4NzQvNDQ0Mzk3LnBuZw==/original/0qqKyB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ4NzQvNDQ0Mzk4LnBuZw==/original/v4FG0Y.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ4NzQvNDQ0NDAwLnBuZw==/original/wlGrr5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ4NzQvNDQ0Mzk1LnBuZw==/original/%2B7VagU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ4NzQvNDQ0Mzk5LnBuZw==/original/AVrsef.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ4NzQvNDQ0Mzk2LnBuZw==/original/8cfn3A.png]]
<h4>About</h4>
<p>Mother Island is Top-Down Survival game. Where you play as a pirate chief controlling the mortar on top of your fort on your home island. Your home island is being attacked by other navies of the world in their attempt to eliminate piracy once and for all. How long will you be able to survive the endless onslaught?</p>
<p>This game was made during IGDA Global Game Jam and won the first prize in IGDA Pakistan chapter.</p>
<h4>How to Play</h4>
<p>To play the game all you need is a mouse. Move the mouse around the screen to position the target. Left-Click to fire the mortar.</p>
<h4>Features</h4>
<ul>
<li>Simple game play mechanics</li>
<li>4 types of ships with varying difficulty</li>
<li>Cheering crew members :)</li>
</ul>
<h4>Planned Features</h4>
<ul>
<li>Mortar Upgrades</li>
<li>Enemy waves System</li>
</ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/hsTmt6VTbrk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzYyNTQ5LzE4MTE5MzAucG5n/original/yHa6MP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYyNTQ5LzE4MTE5MTQucG5n/original/xLAsXE.png]]
<p style="text-align: center"><img src="http://www.harmonyzone.org/Pics/MCPromo_Map.png" loading="lazy"></p><p>Explore a field of caves and ruins under the benign aspect of the Mouse Corp. A mysterious 3d adventure awaits your survey. It's Mouse Corp. - what are friends for?</p><p>Produced in two months seperated by one year. Pay what thou wilt is the whole of the law so feel free to try before you buy. Payment is optional but helps fund further games... More than the world has ever seen....</p><p>Music by NEW VADERS. Game by Stephen Gillmurphy. This started out from a desire to just make something pretty and is best interpreted from this angle. Thank you for looking at our video game.</p><p style="text-align: center"><img src="http://www.harmonyzone.org/Pics/MCPromo_Donations.png" loading="lazy"></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNTgvMzEwMzgucG5n/original/x653ZG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNTgvMzEwMzkucG5n/original/n1%2FgHe.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNTgvMzEwNDEucG5n/original/a6Uikd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNTgvMzE0MzQucG5n/original/XiPDn%2B.png]]
<h1>Multilytheus</h1>
<p>an abstract puzzle game about navigating space</p>
<p>sound design: Jay Vachon (<a href="https://jayvachon.com/" rel="nofollow noopener" referrerpolicy="origin">https://jayvachon.com/</a>)</p>
<p><em>if you like this game, check out <a href="https://phoenixup.itch.io/time-bandit-prologue">the prologue chapter of my new anti-capitalist puzzle/adventure game Time Bandit</a><span class=""></span>, and if you want to really help me out, <a href="https://store.steampowered.com/app/1481910/Time_Bandit/" rel="nofollow noopener" referrerpolicy="origin">wishlist it on Steam</a> <3
</em></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/Nfz6rlw47CU" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTIzMjkyLzUyMjEyNDgucG5n/original/f%2Fnm7b.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIzMjkyLzUyMjEyNDcucG5n/original/f7HE01.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIzMjkyLzUyMjEyNTIuanBn/original/LTvt8U.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIzMjkyLzUyMjEyNDkucG5n/original/5xjwt7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIzMjkyLzUyMjEyNTAucG5n/original/96vFc%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIzMjkyLzUyMjEyNTEucG5n/original/ba91Se.png]]
<p>are you strong enough? venture where only the strongest come out alive... into the muscle world.</p>
<p>delve into its secrets with the power of muscle</p>
<p>redeem yourself through exercise</p>
<p><em>believe</em></p>
<ul><li>an enormous muscle world to explore!</li><li>tense muscle action!</li><li>secret locations and endings!</li><li>inspiration!</li></ul>
<p>controls:<br>- wasd/arrow keys/left stick : move<br>- mouse/right stick : look around (only in the muscle world)<br>- control/button 1/left click : jump/let go of the ceiling<br>- alt/button 2/right click : kick</p>
<p>(a controller is recommended)<br></p>
<p></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTg4OTAzLzEyNDc1MTEucG5n/original/GelEQB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg4OTAzLzEyNDc1MDkucG5n/original/clKkLl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg4OTAzLzEyNDc1MTAucG5n/original/1G6JqL.png]]
<p><strong>My Book Project</strong> is a collection of poems and songs I have written from 2004 to 2016, compiled like a book: divided into chapters. The pieces in this collection are written in Tagalog and English and are not entirely in chronological order, but arranged to create a series of themes and emotions that depict each chapter.</p>
<p><strong>Creative Commons License</strong><br></p>
<p>If you are a musician or if you’re aspiring to be one, feel free to render my words into actual songs. If you think my words can still be improved, be creative and enhance them. Just be sure to let me know! Share, shout out, and let my words and your music inspire others!
</p>
<p><strong>Cheers!</strong><br></p>
<p>JP B. Bantigue<br>@jpyeah!</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NTQxOS82MDM5MDUwLmpwZw==/original/v7OIQ2.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NTQxOS82MDQ2MDU1LmpwZw==/original/14vtms.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NTQxOS82MDM5MDU1LmpwZw==/original/gHClbl.jpg]]
<h3>UPDATE: This light novel has a sequel now!</h3>
<figure><a href="https://zandravandra.itch.io/therapycatgirltabbi" target="_blank"><img src="https://img.itch.zone/aW1nLzU1MTQ2MTcucG5n/original/fLLqqG.png" style="color: inherit; font-size: inherit" loading="lazy"></a><span></span><br></figure>
<p><a href="https://zandravandra.itch.io/therapycatgirltabbi" target="_blank"><strong>You can check it out right here!</strong></a></p>
<p>Gods aren’t exactly common, but there are a lot of them, it turns out. If a person sees a god, it usually means the latter is in trouble—the modern world has many mysteries the gods haven’t completely figured out. But some charitable person is inevitably around to help out these flustered deities, who then invariably grant these kind souls a wish.<br></p>
<p>And if a lot of wishes are being granted at once, well, it's easy to lose track of what you want.</p>
<p>Cat Wishes is my second light novel, this time about a small group of friends, divine intervention, and the ups and downs of their day to day life as they adjust to some pretty dramatic changes. As always, it's full of personal growth, self-discovery, and a lot of gender feels.</p>
<p>Please enjoy, and let's keep making wonderful things together.</p>
<p><em>This is a light novel of 64 pages with 10 interior black & white illustrations.</em></p><h3>Liked the light novel?</h3><p><a href="https://zandravandra.itch.io/catwishes-artbook" target="_blank"><img src="https://img.itch.zone/aW1nLzU1MTQ2ODEucG5n/original/uj%2F30d.png" loading="lazy"></a><br></p><p><strong><a href="https://zandravandra.itch.io/catwishes-artbook" target="_blank">Check out the art book</a> for never-before-seen art, author commentary, and a peek at where the characters are after the events of the story!</strong></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjA3NDkyLzk3NTMwNC5wbmc=/original/ezGiVw.png]]
<p>A visual novel centered around the concept of “shipping” in the My Little Pony fandom. SFW-ish parody, it ranges from PG to M, depending on the rating agency. Nothing pornographic outside of sexual references and silly jokes.</p>
<p>Includes a lot of ponies. And shipping. And shipping ponies. </p>
<h3>A game for the whole family!</h3>
<p>(If no family member is too young)</p>
<h3><a href="https://wedge-teal-ndhb.squarespace.com/sesc-pics/uvedlv79s52ya5firaxetismwfnxig" class="" rel="nofollow noopener" referrerpolicy="origin"></a></h3>
<h3>A trip back to the past!</h3>
<p>Remember when Twilight had no wings? When the CMC were solely trying to get their cutie mark? When Discord was a one-time villain like all others? Well I haven’t updated four vectors, so it’s officially set in that era.</p>
<h3>20% more endings!</h3>
<p>…Compared to the demo. Will you be enough of a completionist to see all of the 87 images of the gallery?</p>
<h3>Includes Engrish version!</h3>
<p>Beware, tiny grass is dreaming.</p>
<h3>Changelog</h3>
<ul><li>1.01 bug fixes, plus web and Android release</li><li>1.00 initial release</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/Rc4EFJzBN9g" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDIxNDc5LzIxMDExMjEucG5n/original/xu2em%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDIxNDc5LzIxMDExMjIucG5n/original/hUbI9B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDIxNDc5LzIxMDExMjMucG5n/original/mR5dys.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDIxNDc5LzIxMDExMjUucG5n/original/lPznb3.png]]
<p>If you need constant rewards, endless powerups, crisp vector graphics, achievements, online challenges, multiplayer or 3d.. this is not the game you are looking for. On the other hand, if you love old style, pure of heart out-and-out arcade gaming, you and My Nuclear Octopus may just be on the verge of a beautiful friendship.</p>
<p>NOTE: This version is different to the one on Steam, in that it doesn't include an online leaderboard.</p>
<h3>Features:</h3>
<p>** NOW INCLUDES OUYA APK SIDELOADABLE VERSION!!! **</p>
<ul><li>Now includes a Steam key, too!</li><li>Visuals that will make your eyes blow up (NOTE: NOT recommended for folks with any photosensitive medical conditions)</li><li>PC version included in the .zip</li><li>Awarded review scores of 8/10 from ZOMGPLAY and 8/10 from United Front Gaming</li><li>A control scheme designed for keyboard play or an xbox 360 controller</li><li>Retro chunky pixel graphics</li><li>Multi-coloured explodopus!!</li><li>Local leaderboard (not online!)</li><li>Xbox360 wired controller support</li><li>80's arcade style sound effects</li><li>A giant eyeball in the middle of the play area</li><li>Octopi</li></ul><p>
</p><p>The story so far:<br></p>
<p>Octopi is under attack! A space dimension portal has been opened and strange beasts from the 1% dimension are getting through.</p>
<p>It's all up to my N<span style="">uclear Octopus to save </span><span style="">the universe, using his </span><span style="">magical ink to send them </span><span style="">back to their own dimension.</span></p>
<h3>Instructions:</h3>
<p>-HOLD DOWN the fire buttons, TAP the movement buttons<br>-Destroy all things coming out of the portal<br>-Collect the things that look like pills. They are steroidipus and they give you rapid fire<br>-Get a high score<br>-You get one multicoloured explodipus per level (think smartbomb) to use when there's nothing left but hope.<br>-Reach the end of the game and defeat the boss</p>
<p><strong>Keyboard controls</strong></p>
<p>-Use A and D to choose firing direction left or right.<br>-UP and DOWN arrow keys move.. yep, up and down.<br>-Press SPACE to activate multicoloured explodipus. You get one per level.</p>
<p><strong>Xbox 360 controller controls</strong></p>
<p>-Hold right stick left or right to choose fire direction.<br>-Press buttons A and B to move up and down.<br>-Press X to activate multicoloured explodipus. You get one per level.</p>
<h3>Closing arguments:</h3>
<p>Walking into an amusement arcade during the 1980's overwhelmed the senses. The audio from each arcade machines screamed out for attention, each one fighting to grab the passer by, to feed it with coins.</p>
<p>My Nuclear Octopus is what might have happened had I been born a few years earlier and landed a job designing arcade games in 1984. It's loud, it's simple to pick up and it's tough as old badgers. The graphics are crunchy old sprites, something you might see in an old Commodore 64 game, a BBC Micro game or maybe even a 1980's arcade.</p>
<p>The logic is simple - you play for a few minutes, you get as far as you can, the game ends. Next time, you play again and try to beat your score. Somewhere along the way, the rest of the world disappears and you find yourself one with the Octopus, in some kind of harmony with the game as, for a short time at least, 100% of your focus goes into keeping back the marauders from another dimension. </p>
<p>Lose yourself for a short time, just like we did in the old days.</p>
<h3>What the critics say:</h3>
<p>If you really need to hear it from someone else how much fun My Nuclear Octopus is, try an 8/10 from ZOMGPLAY:</p>
<p><a href="http://zomgplay.com/2013/12/09/review-my-nuclear-octopus-pc/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">ZOMGPLAY.COM</a></p>
<p>Or another 8/10 from United Front Gaming:</p>
<p><a href="http://www.unitedfrontgaming.com/pc/post/2089/my-nuclear-octopus" target="_blank" rel="nofollow noopener" referrerpolicy="origin">United Front Gaming</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/MCKRZDs0w1Y" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTI4LzEwNzc2LmpwZw==/original/%2FWESFT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI4LzEwNzc3LmpwZw==/original/JVqbFr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI4LzEwNzc4LmpwZw==/original/xjlCRZ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI4LzEwNzc5LmpwZw==/original/2qvCs4.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI4LzEwNzgwLmpwZw==/original/Y38dG9.jpg]]
<p>If you need constant rewards, endless powerups, crisp vector graphics, achievements, online challenges, multiplayer or 3d.. this is not the game you are looking for. On the other hand, if you love old style, pure of heart out-and-out arcade gaming, you and My Nuclear Octopus may just be on the verge of a beautiful friendship.</p>
<p>NOTE: This version is different to the one on Steam, in that it doesn't include an online leaderboard.</p>
<h3>Features:</h3>
<p>** NOW INCLUDES OUYA APK SIDELOADABLE VERSION!!! **</p>
<ul><li>Now includes a Steam key, too!</li><li>Visuals that will make your eyes blow up (NOTE: NOT recommended for folks with any photosensitive medical conditions)</li><li>PC version included in the .zip</li><li>Awarded review scores of 8/10 from ZOMGPLAY and 8/10 from United Front Gaming</li><li>A control scheme designed for keyboard play or an xbox 360 controller</li><li>Retro chunky pixel graphics</li><li>Multi-coloured explodopus!!</li><li>Local leaderboard (not online!)</li><li>Xbox360 wired controller support</li><li>80's arcade style sound effects</li><li>A giant eyeball in the middle of the play area</li><li>Octopi</li></ul><p>
</p><p>The story so far:<br></p>
<p>Octopi is under attack! A space dimension portal has been opened and strange beasts from the 1% dimension are getting through.</p>
<p>It's all up to my N<span style="">uclear Octopus to save </span><span style="">the universe, using his </span><span style="">magical ink to send them </span><span style="">back to their own dimension.</span></p>
<h3>Instructions:</h3>
<p>-HOLD DOWN the fire buttons, TAP the movement buttons<br>-Destroy all things coming out of the portal<br>-Collect the things that look like pills. They are steroidipus and they give you rapid fire<br>-Get a high score<br>-You get one multicoloured explodipus per level (think smartbomb) to use when there's nothing left but hope.<br>-Reach the end of the game and defeat the boss</p>
<p><strong>Keyboard controls</strong></p>
<p>-Use A and D to choose firing direction left or right.<br>-UP and DOWN arrow keys move.. yep, up and down.<br>-Press SPACE to activate multicoloured explodipus. You get one per level.</p>
<p><strong>Xbox 360 controller controls</strong></p>
<p>-Hold right stick left or right to choose fire direction.<br>-Press buttons A and B to move up and down.<br>-Press X to activate multicoloured explodipus. You get one per level.</p>
<h3>Closing arguments:</h3>
<p>Walking into an amusement arcade during the 1980's overwhelmed the senses. The audio from each arcade machines screamed out for attention, each one fighting to grab the passer by, to feed it with coins.</p>
<p>My Nuclear Octopus is what might have happened had I been born a few years earlier and landed a job designing arcade games in 1984. It's loud, it's simple to pick up and it's tough as old badgers. The graphics are crunchy old sprites, something you might see in an old Commodore 64 game, a BBC Micro game or maybe even a 1980's arcade.</p>
<p>The logic is simple - you play for a few minutes, you get as far as you can, the game ends. Next time, you play again and try to beat your score. Somewhere along the way, the rest of the world disappears and you find yourself one with the Octopus, in some kind of harmony with the game as, for a short time at least, 100% of your focus goes into keeping back the marauders from another dimension. </p>
<p>Lose yourself for a short time, just like we did in the old days.</p>
<h3>What the critics say:</h3>
<p>If you really need to hear it from someone else how much fun My Nuclear Octopus is, try an 8/10 from ZOMGPLAY:</p>
<p><a href="http://zomgplay.com/2013/12/09/review-my-nuclear-octopus-pc/" target="_blank" rel="nofollow noopener">ZOMGPLAY.COM</a></p>
<p>Or another 8/10 from United Front Gaming:</p>
<p><a href="http://www.unitedfrontgaming.com/pc/post/2089/my-nuclear-octopus" target="_blank" rel="nofollow noopener">United Front Gaming</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/MCKRZDs0w1Y" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTI4LzEwNzc2LmpwZw==/original/%2FWESFT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI4LzEwNzc3LmpwZw==/original/JVqbFr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI4LzEwNzc4LmpwZw==/original/xjlCRZ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI4LzEwNzc5LmpwZw==/original/2qvCs4.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI4LzEwNzgwLmpwZw==/original/Y38dG9.jpg]]
<h1>About</h1>
<p>My Personal Hilopet, previously Hilogotchi, is a digitized pet-care and battle simulator. Hilopet started out as a challenge between friends. Since the beginning days of its prototype, Hilopet has grown way beyond your standard scope-creep to become a full-fledged title, with an active combat system, NPC's to interact with, and secrets hidden within!</p>
<p><a href="https://discord.gg/k6UZJJKuHu" rel="nofollow noopener" referrerpolicy="origin"><strong>Join our discord!</strong></a></p>
<h1>Combat</h1>
<p>The Hilopet world runs on combat. As a Hilopet owner, you're invited to compete in the world's league. Right through the ranks, meet your competitors, and increase your Hilopet's stats to make them the ultimate warrior! </p>
<h1>Dialogue</h1>
<p>There are over 200 written interactions with more than 15 NPCs spread across different locations and seasons! </p>
<h1>How To Play/Spoilers</h1>
<p>I view My Personal Hilopet as an exploratory game, so I've been conservative with the amount of hand holding in the current version. However, this also leads to a confusing experience.. So here are some tips if you'd like them! </p>
<ul><li>Your Hilopet's name must contain 8 letters. These letter combinations dictate your pet's stats. </li><li>Money is earned through successfully battling.</li><li>Credits are hidden within the game, go forth and find them!</li><li>There are a few ways to die within Hilopet, so make sure your pet's stats are checked frequently</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/4pjsuSAi6NE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA2OTQxOS82MjczNzY4LnBuZw==/original/6Pze5n.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA2OTQxOS82MTc2MDA0LnBuZw==/original/ReCx52.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA2OTQxOS84MzUxMTUzLnBuZw==/original/AudVrf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA2OTQxOS84MzUxMTU0LnBuZw==/original/hffKiR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA2OTQxOS84MzUxMTU1LnBuZw==/original/NKJ8Pm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA2OTQxOS82MTUwMzgwLmdpZg==/original/J5BqEe.gif]]
<p><strong>My Welcomed Guest</strong> is a solo game about being trapped in Faerie and trying to bargain your way home. Throughout the game you will be answering questions and potentially accruing Taboo, which is an indicator of faerie taboos you may have breached. Sometimes without you knowing what action it was that directly broke the taboo. The game will be played over five acts.</p>
<p>This game was created as part of the <a href="https://itch.io/jam/short-and-easy-jam">Short and Easy</a> game Jam.</p>
<p>You will need some additional materials:<br></p>
<ul><li>Something to write on. <ul><li>You can print out the game and write directly on the paper, use a journal, an electronic source, or something else that suits your fancy.</li></ul></li><li>Something to write with.<ul><li>If you have a favorite pen or pencil, get that. If not, anything will do, a pen, pencil or crayon.</li></ul></li><li>A six sided die. <ul><li>There are many electronic versions available if you don’t have a d6 easily accessible.</li></ul></li><li>A place to accrue Taboo marks.<ul><li>This can the corner or back side of a page, an index card, a sticky note, or a bowl to hold glass beads. The important thing is to know how many Taboo marks you have accrued.</li></ul></li></ul>
<p><br></p>
<p>I believe in paying people for their work. This game is priced at $3, but if that isn't something you can do right now, in the spirit of Faerie bargains, send me an email (dawnbeargames at gmail) and I'll send you a copy. It will come with the caveat, that if you play it, just let me know you played it. No need for a review or feedback (though I would love feedback), just to know that you played it. I won't promise to get you the game immediately, but I will likely get back to you with in a couple of days. <br><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzk1Njg1LzE5NjAxNTkucG5n/original/vPILdT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk1Njg1LzE5NjAxNjEucG5n/original/AsXdbP.png]]
<p>The MYNT system is designed to focus on storytelling through roleplaying. It can work with any setting. Combat is possible but it is not the focus of this system. It was designed to get players doing more than swinging swords or shooting blasters with the aim of beating a particular number in order to succeed. Action and adventure occur through twists and not continued success on the part of the hero.</p>
<p><span class=""></span>
</p>
<p><span class="">Think Han Solo, Indiana Jones or Jack Sparrow having to talk, trick or fight their way out of a situation and being smart about it, but things never quite going as they planned. This system is designed for just such events. (How sad is it that I can only think of male characters that act in this manner.)</span></p>
<p><img src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" loading="lazy"><br></p>
<p><span></span></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTUyNzczLzEzNDg4NjMuanBn/original/DJo9gA.jpg]]
<p><em>MΣTΔ</em> is an old-school inspired roleplaying game of metalanguage, metagaming, and metaphysics, to be played alone or in a group, with or without a gamemaster.</p>
<p>"MΣTΔS" is also how the player characters are called. A MΣTΔ is an individual disembodied mind, part of the ΩMNIMΣTΔ collective, an extremely evolved intelligent species of dimensional travelers that transcended time and space. Groups of MΣTΔS incarnate in various worlds, in order to experience the universe and know themselves.</p>
<p>To play <em>MΣTΔ</em>, the player or players will need this book, pen and paper, some copies of the different sheets, and at least one die with 4, 6, 8, 10, 12, 20, 24, and 30 sides (or a way to roll those dice digitally). Other old-school RPG books may come in hand.</p>
<p><a href="https://liberludorum.com/2021/05/31/gaming-the-meta/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Check out a review of MΣTΔ by Līber Lūdōrum here</a>.</p>
[img width=500 [https://img.itch.zone/aW1nLzUyNjk2NzAucG5n/original/Sv%2Bzie.png]]
<blockquote class="text-center">This is a demo of Nainai’s Recipe, we are still in development! You can find us <a href="https://twitter.com/NainaiRecipe" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@NainaiRecipe</a> where we do progress updates and share tech & art stuff!</blockquote>
<p class="text-center">Open your fridge, choose the ingredients, examine, chop, seasoning, heat, and taste them. During the lockdown, you start to learn how to cook from your dear grandma.<br></p>
<p class="text-center"><em>Nainai’s Recipe</em> is a game that captures the cooking feeling in stylized visuals. And a family story about how we lived together in a special way during 2020.<br></p>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzYwMDE2OTgucG5n/original/p%2BUfNk.png" width="200" style="margin: 0 auto; padding-left: 44px" loading="lazy"><br></p>
<ul><li><strong>Maximum control</strong> - no preset ingredient slice texture, no performance-oriented steps, we want you to enjoy cooking a meal from start to finish.</li><li><strong>Food to a larger food tradition</strong> - We curated a stylized kitchen with strong flavor about a Chinese kitchen, including appliances, condiments, and food choices.<br>
</li><li><strong>Bonding moment with Nainai</strong> - During this difficult period of time, you will have more chance than ever to talk to your Nainai and know her story!</li></ul>
<p><em>Nainai’s Recipe</em> is our thesis game made at <em>NYU Game Center</em>. <br></p>
<p><a href="https://nainaisrecipe.com/presskit" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Presskit</a> | <a href="https://store.steampowered.com/app/1730460" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Add to Wishlist on Steam</a></p>
<details>
<summary>中文介绍</summary>
<h3>奶奶的菜谱</h3>
<p>打开你的冰箱,选择食材,观察,切开,调味,加热,然后尝尝看。隔离的日子里,跟奶奶学做菜。</p>
<p>奶奶的菜谱是一个关注烹饪的真实体验的游戏。也是一个关于我们如何在 2020 年用一种特殊的方式生活在一起的家庭故事。</p>
<ul>
<li><strong>充分自由度</strong> - 游戏不使用预设的食材状态,玩家可以自由的控制做饭的流程,用自己的方法做出不同的食物。</li>
<li><strong>中国美食的传统</strong> - 食物与文化紧密相关,它不仅仅在多样的厨具,厨房的外貌,也在于做饭的程序,食材的搭配,食物的味道等等。我们希望在方方面面上捕捉到它们。</li>
<li><strong>奶奶的故事</strong> - 菜谱也通过家庭传承。长大后就和奶奶没有什么共同话题了,希望能借着学做菜的机会多聊几句。听到她的故事,再次认识奶奶。</li>
</ul>
<p>奶奶的菜谱是我们在纽约大学游戏中心(NYU Game Center)的毕设作品。游戏已支持中文。目前还在继续开发中,你也可以在 <a href="https://store.steampowered.com/app/1730460" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Steam 加入心愿单</a>关注游戏的发布消息。</p>
<p>如果在游戏中遇到 Bug,请使用游戏内的 Bug report 功能向我们发送错误信息(支持中文输入)。其他支持可通过 <a href="mailto:nainais.recipe@gmail.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin">nainais.recipe@gmail.com</a> 联系我们,感谢试玩!</p>
</details>
<p></p>
<blockquote>
<h4>Updates: </h4>
<strong>0.7.15 - Jul 23, 2021</strong> - Added Chinese support 中文支持. Narrative improvement.<br><strong>0.7.14 - Jun 23, 2021</strong> - Fixed a bug where the phone can't be put down. Fixed a bug where some ingredients always be raw.<br>
<strong>0.7.13 - Jun 5, 2021 </strong>- Fixed a resolution related bug.<br><strong>0.7.12 - May 30, 2021</strong> - Added a feedback button. Day 3 can be played (but no story).<br><strong>0.7.10 - May 21, 2021</strong> - Improved the performance of finely cut pieces<br><br>If you meet a bug, feel free to send us a bug report in the game!<br>For support or any other inquiries, contact us at <a href="mailto:nainais.recipe@gmail.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin">nainais.recipe@gmail.com</a></blockquote>
<iframe width="720" height="450" src="https://www.youtube.com/embed/bPjFu0piGhQ" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNzA4OC82MDAzMTc1LmdpZg==/original/3CshUz.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNzA4OC82MDAzMTc3LmdpZg==/original/IhKqDp.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNzA4OC82MDAzMTc4LmdpZg==/original/JHk%2BBG.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNzA4OC82MDAzMTgwLmdpZg==/original/MCo5Cb.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNzA4OC81OTQwNTI2LnBuZw==/original/RaqUOA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNzA4OC81OTQwNTI1LnBuZw==/original/Wnp%2FL6.png]]
<p class="text-center">- A simple fighting game with one attack -<br></p>
<h3 class="text-center">NOW WITH ONLINE PLAY USING ROLLBACK BASED NETCODE</h3>
<h3 class="text-center"><a href="https://store.steampowered.com/app/1715850/NAIR" rel="nofollow noopener" referrerpolicy="origin">VERSION 3.0.0 AVAILABLE NOW ON STEAM WITH LOBBIES AND MATCHMAKING</a> </h3><p class="text-center">(STEAM EXCLUSIVE UNTIL I GET CROSSPLATFORM MULTIPLAYER WORKING)</p>
<p class="text-center"><a href="http://teridax.itch.io/nair-pico">PLAY A MINIATURIZED VERSION OF THIS GAME IN YOUR BROWSER OR ON YOUR PHONE</a><br></p>
<div class="text-center"><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/XO7530lbMxw" frameborder="0" allowfullscreen=""></iframe></div>
<ul><li>Every attack you land heals your character, creating satisfying tug-of-war gameplay</li><li>Fast-paced action for short, tense games</li><li>Master genre-staple movement options such as dashdancing or wavedashing</li><li>Teaches spacing, neutral, and fundamentals</li><li>Features useful tools like hitbox visualizers, hurtbox visualizers with color-coded playerstates</li><li>Customize your controls with a wide array of possible configurations (1.2.0 or older)</li><li>ONLINE MULTIPLAYER, WITH ROLLBACK NETCODE (2.0.0 or newer)</li></ul>
<figure><img src="https://img.itch.zone/aW1nLzIzMzYxMTUucG5n/original/EgCWvs.png" alt="How to Play" title="How to Play" loading="lazy"><br><img src="https://img.itch.zone/aW1nLzI0NjYyMjEucG5n/original/6Dtcq1.png" loading="lazy"><br></figure>
<p><strong>Supported Controllers:</strong><br></p>
<ul><li>Xbox One, Xbox 360</li><li> Keyboard</li><li>Steam (2.0.0+)</li><li>PS4 (2.0.0+)</li><li>Switch Pro (2.0.0+)</li><li>Gamecube with Mayflash adapter (2.0.0+)</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/XO7530lbMxw" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDU5MTk5LzI0MTYzMzQuZ2lm/original/6bo4ss.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU5MTk5LzI0MTYzMDAuZ2lm/original/M4QmOQ.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU5MTk5LzIzMzYwNDkucG5n/original/YlmRhg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU5MTk5LzIzMzYxNTkucG5n/original/1PmVFv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU5MTk5LzIzMzg2MjAucG5n/original/RU1yl3.png]]
<figure><h4 class="text-center">He’s nasty, he’s little, and he’s <em>got </em>to go.</h4><p class="text-center"><em>Reconstruct the cursed statue of a small, wretched man and banish his evil spirit forever. But beware—this diminutive scoundrel wants to cut you down to size.<br></em></p><p>Can you reconstruct his cursed effigy before his avatars morph you into their ranks?<br></p><p><strong>Controls</strong><br>Mouse & Keyboard: WASD + Mouse look<br>Controller: Left & Right stick<br></p></figure>
<p><img src="https://img.itch.zone/aW1nLzMwNTc2OTEuZ2lm/original/eD48LX.gif" loading="lazy"></p>
<h4 class="text-center">"Noooo! I don't want to become the nasty little man!!! Noooo!"<br>- Another Playtester</h4>
<p><img src="https://img.itch.zone/aW1nLzMwNTc2ODkuZ2lm/original/lWqQJz.gif" loading="lazy"></p>
<h4 class="text-center">"This game truly knows what it means to be haunted."<br>- Playtester</h4>
<p><img src="https://img.itch.zone/aW1nLzMwNTc2OTkuZ2lm/original/nb7E%2B%2B.gif" loading="lazy"></p>
<h4 class="text-center">"Euuuggh!! No!! I don't like him!!"<br>- Yet Another Playtester</h4>
<h4>Additional reviews:</h4>
<p>"This is so creppy" - Super Great716</p>
<p>"Don't tell me that thing actually exists. The video was creepy as heck" - Zakurako</p>
<p>"I dont like What that name implies" - LVBBoi</p>
<p>"why it creeped me out" - Maйя</p>
<p>"My fears are just here. Right here." - Aari Moonlight</p>
<p>"This actually got me to start looking away from my computer screen about two thirds through." - Tales</p>
<p>"気味が悪いけど笑えるホラーゲームです!" - @konasu573</p>
<p>"I guess I'm getting smaller. F**k me I guess." - TryShock<br></p>
<h4>Technologies Used</h4>
<ul><li>Audacity</li><li>FL Studio</li><li>Procreate</li><li>Blender3D</li><li>Unity3D<ul><li>PSXEffect Addon</li></ul></li></ul>
[img width=500 [https://img.itch.zone/aW1nLzMwNjEwMTYuanBn/original/l3knjd.jpg]]
<p><strong><img src="https://img.itch.zone/aW1nLzc2ODE1MDEucG5n/original/bVf0jS.png" loading="lazy"><br></strong></p>
<p><strong>Naughty Elves</strong> is a Christmas themed 2D pixelart puzzle game. Your goal is to help Santa Claus to get back the presents from the naughty elves who want them all for themselves.<br></p>
<p><em>You better watch out, you better not cry<br>You better not pout, I'm telling you why<br>Santa Claus is coming to town</em><br><br>... but wait, what's this:<br><br>His minions have stolen all the gorgeous presents because they want them all for themselves!<br>It is time for a hero to help Santa get back the presents from these <strong>Naughty Elves</strong>.</p>
<ul><li>Hit the elves with a snowball to knock them out!</li><li>Make use of the environment to reach them in their tiny huts!</li><li>Get back the presents so the children of the world can celebrate a merry Christmas!</li></ul>
<p>Oh, you better watch out, you better not cry<br>Better not pout, I'm telling you why<br>Santa Claus <strong>is actually coming to town</strong>!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/qPJamkMZnI0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjA2Nzc4Lzk2ODcxMC5wbmc=/original/SHbEMu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA2Nzc4Lzk2ODcwNy5wbmc=/original/604Un%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA2Nzc4Lzk2ODcwOS5wbmc=/original/5IwT9b.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA2Nzc4Lzk2ODgxMC5wbmc=/original/ym4k9j.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA2Nzc4Lzk2ODgxMy5wbmc=/original/xqQqMM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA2Nzc4Lzk2ODgxNC5wbmc=/original/2sbN5s.png]]
<p><strong>NOTE</strong>: Online multiplayer is only available in the <a href="https://store.steampowered.com/app/1421410/Nectar_of_the_Gods/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Steam version</a><span></span> of the game. This is because the online netcode is built utilizing Steam's "Steamworks" backend. <strong></strong></p>
<p><strong>Nectar of the Gods</strong> is an unquenchable head-to-head real-time strategy game where bugs battle over the finest beverages. You must strategically deploy a chosen bug family, nimbly navigate the countertop, and claim liquid nirvana!<br></p>
<ul><li><strong>Party any way you want</strong>: Solo or Local Multiplayer</li><li><strong>24 unique bugs</strong> with special abilities and quirks for you to optimize across 3 Bug Families (Beetle Brigade, The Hive, Spidey Party)</li><li>Navigate <strong>3 dynamic countertops</strong>: Soda Fountain, Boba Shop, Coffee Bar</li><li><strong>Colorful, delicious visuals </strong>to immerse you in the miniature conflict</li><li>Catalog your journey with <strong>detailed game statistics</strong> and <strong>achievements</strong></li><li>Lead your bugs with <strong>multiple inputs</strong>: M/K or Controller</li></ul>
<p>In Nectar of the Gods you will embody<strong> Beetle Brigade</strong>, <strong>The Hive</strong>, and <strong>Spidey Party</strong>. Each bug family has 8 unique bugs with special abilities and quirks. Examples include a Rhino Beetle that propels fellow beetles forward with it's mighty stampede. And a Queen Bee that boosts your team's resources by producing precious royal jelly. All of the bugs have sampled the sweet sweet nectar of the drink industry and are counting on you to coordinate a winning drink against any bugs standing in your way. In order to deliver this bubbly bliss, you will need to maximize every bug's contribution, while squashing anything your opponent or the countertop can throw at you.</p>
<p><span></span></p>
<p>I was inspired to make Nectar of the Gods by the "rock paper scissors" tactics and mental reflexes of real-time strategy games. I love the idea of bite sized asymmetrical battles where you have to think quick on your feet and rely on your mastery of the units available to you. And bugs are rad</p>
<p><strong>Blog</strong></p>
<p>Check out the gamedev blog here: <a href="http://bitly.com/bwt-gamedev-blog" rel="nofollow noopener" referrerpolicy="origin">http://bitly.com/bwt-gamedev-blog</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/oaFosKnbZpM" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NDExLzUwNTc4MjQuanBn/original/FFSX%2FL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NDExLzUwNTc4MjAuanBn/original/fXXt3N.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NDExLzUwNTc4MjIuanBn/original/CMsG3B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NDExLzUwNTc4MjMuanBn/original/KJlTYY.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NDExLzUwNTc4MjEuanBn/original/FmYACC.jpg]]
<p class="text-center">You are an <strong>Angel</strong>.</p>
<p class="text-center">Your mission is to find and save program WZ-07-HK. Explore the darkness of the simulation until you find it but be wary, as deadly threats may come on your way.</p>
<p class="text-center">A game by Lyrdinn : <a href="https://twitter.com/lyrdinn" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/lyrdinn</a></p>
<p class="text-center">Music composed by <strong>Blu L'Oiseau Bleu {°></strong> : <a href="https://twitter.com/BluLOB" class="" title="https://twitter.com/BluLOB" target="_blank" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/BluLOB</a></p>
<p class="text-center">IF YOU LIKE THE GAME PLEASE SUPPORT ME AND THE COMPOSER BY BUYING THE BONUS CONTENT.</p>
<p class="text-center">The bonus content contains all the music for the game and a complete 13 pages PDF explaining how I made the game with exclusive concept art and process never posted anywhere else !</p>
<p class="text-center">- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -</p>
<p class="text-center">Made in a month from January the 1st to February the 1st on Godot.</p>
<p class="text-center">A 10min text-based experience.</p>
<p class="text-center">Included in the game jam : "Finally finish somethings 2021"</p>
<p class="text-center">Available in French and English, the game may have bugs with languages sorry.</p>
<p class="text-center">Dyslexia and epilepsy accessibility is available. Visual impairment acessibility will be coming next update ! Please contact me at lyrdinn@gmail.com if you want to request a language or more acessibility options.<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODk0NjQ1LzUwNTU2NzkucG5n/original/%2F5R5Vp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk0NjQ1LzUwNTU2ODAucG5n/original/oKHCrw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk0NjQ1LzUwNTU2ODIucG5n/original/NTad0K.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODk0NjQ1LzUwNTU2ODQucG5n/original/PjbQO4.png]]
<p>Neon Baller 0.1 is a continuation of an experiment in physics based 3D platforming with improvements to audio, visual, and controls. Also includes a new map that can be beat in a little over two minutes if you time it right. <br></p>
<p>This version also includes game pad support not listed in the game itself. <br></p>
<p><strong>Controls:</strong></p>
<p><strong>Movement= WASD/ Left Stick<br></strong></p>
<p><strong>Jump= Space Bar/ A (xbox) / X (ps4) <br></strong></p>
<p><strong>Reset= Tab/ Y (xbox)/ Triangle (ps4)</strong></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/aeQafNCZK1s" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1nLzI0ODYyMjEucG5n/original/u1oIar.png]]
<p>You are Jillian Cleary: an ex-spy on the run, framed for treason and hunted by your former agency. You must move in secret, survive off the grid, and find a way to clear your name. Old friends and new allies will lend their support; but with the eyes of the world upon you, who can you trust?</p><h3>Stealth</h3><p>Keep in the shadows, move in silence, and stay out of sight. Escape from tight situations by scrambling your enemies' vision. Enhance your performance with black market stims.</p><h3>World</h3><p>Explore a concrete-and-neon brutalist vision of the modern surveillance state. Undertake eight missions spanning two continents. Meet a diverse range of interesting characters.</p><h3>Music</h3><p>Featuring an 18-song soundtrack by electronic rock band The Home Conversion.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/llginnqhMBI" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0NDgvMjkxMjExLmpwZw==/original/K0gnMj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0NDgvMjkxMjEwLmpwZw==/original/cBX4Xq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0NDgvMjkxMjA4LmpwZw==/original/r%2FfVby.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0NDgvMjkxMjEyLmpwZw==/original/Vw7ZrZ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0NDgvMjkxMjA5LmpwZw==/original/kjgvNQ.jpg]]
<p>In the center of the cosmic maelstrom, the mushroom forests and blasted lands are home to mighty mutants, cunning hunters, brilliant hackers, and mysterious witches. They survive a world of cannibal gangs, cyber-dinosaurs, wizard kings, and insectoid warlords. It rules.</p>
<p>Neutron Axe is an original tabletop rpg ruleset inspired by <a href="https://gayhalforc.itch.io/sledgehammer">Sledgehammer</a> and <a href="https://johnharper.itch.io/blades-in-the-dark">Blades in the Dark</a> and <a href="https://jasontocci.itch.io/2400">2400</a>. It does really cool dice stuff to make fast and heavy weapons feel distinct in how they deal with magical shields and armor. Also: it tells you to burn daemon skulls and harvest motherboards from cyborgs. Also also: we drew special icons for it and they look really charming imho. A screen reader friendly version is included. Special thanks to <a href="https://adamebell.itch.io/">Adam Bell</a>, <a href="https://keganexe.itch.io/">Kegan.exe</a>, and the <a href="https://podcasts.apple.com/us/podcast/brain-trust/id1473715893" rel="nofollow noopener" referrerpolicy="origin">Brain Trust Podcast</a> for their continued brain blasts.</p><p><strong>PRAISE FOR NEUTRON AXE</strong><br></p><p>"Neutron Axe is deeply the thing i want every one of my games to be." - <span class=""></span><a href="https://www.worldchamp.io/" rel="nofollow noopener" referrerpolicy="origin">Adam Vass of World Champ Game Co.</a><br></p>
<p>To print Neutron Axe as a tri-fold pamphlet, print "Neutron Axe.pdf" on both sides of the paper, flipping on the short side. Fold on the lines, bringing both edges in to the center so the title column is the front cover.<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTc2NDExLzU1NDU5NjQuanBn/original/okIUuz.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc2NDExLzU1NDU2MjEucG5n/original/5kiYhY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc2NDExLzU1NDU2MjMucG5n/original/%2BiOHWP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc2NDExLzU1NDU2MjUucG5n/original/Pm7GHs.png]]
<p>This Game is a re-imagined version of <a href="https://noahlseymour.itch.io/night-spirits">Night Spirits</a></p>
<p>Content warnings: potential flashing images, potential noise distortion, potential jump scares, dark woods, glitch effects</p>
<p></p>
<p><br></p>
<p><strong>Controls</strong>:</p>
<p>WASD - movement</p>
<p>Mouse - look</p>
<p>left Click - take photo</p>
<p>right Click Hold - raise Camera</p>
<p>Esc - close game</p>
<p>Tab - invert mouse Y</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTA0NjI1LzI2MTQxODUuZ2lm/original/oYEnFa.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA0NjI1LzI2MTQxOTQuZ2lm/original/Vr0Qos.gif]]
<h3>Adventure can be comfy.</h3>
<p>If you like fantasy roleplaying but you don't want to spend so much time slaughtering orcs or doing magical bookkeeping, then <em>Next Horizon</em> might be for you!</p>
<p>Built on the straightforward <a href="https://purpleaether.itch.io/alpha-duo-roleplaying-basic-rules" target="_blank">Alpha Duo engine</a>, <em>Next Horizon</em> is easy to grasp for newbies and comfortably familiar for veteran roleplayers. Learn the game in minutes, fit all your character details on a single page, and then traverse a magical world at your leisure.</p>
<p></p>
[img width=500 [https://img.itch.zone/aW1nLzU0NDU1MTEucG5n/original/14RK3I.png]]
<h4>NEXT JUMP is a turn-based, tactics Shoot 'em up for people who are bad at SHMUPs, but love them. </h4>
<h4>Do space-jumps and chase the vicious Dragons who stole all the stock of Beverage from the Galaxy and now are running away!</h4>
<hr>
<h4>Features:</h4>
<ul><li>It's a Tactics SHMUP!</li><li>A excellent Coffee break game.</li><li>Be a pilot of the Bastards Federation: A group formed by the Elves, Humans, Dwarves and Orcs who used to live in peace, sharing their love for all Beverages.</li><li>Your mission: JUMP! Chase the Dragons and stop them from running away with all that is most sacred to the Bastards by jumping from sector to sector, facing hordes of enemies in turn-based battles!</li><li>Each Sector is a Board! Each given "JUMP" represents a new combat board generated procedurally, simulating combat situations only seen in SHMUPs!</li><li>Pick from SEVEN playable Ships, all inspired by classic weapons: The Ballista, Dagger, Hammer , Staff, Sword, Shield and a Secret one!</li><li>Equip and Upgrade your ship with different weapons and accessories that change the combat dynamics!</li><li>Not only inspired by the classic Shmups and Bullet Hells, it's also influenced by tactical games like <strong>Final Fantasy Tactics, Jeanne d'Arc and Roguelikes like FTL and Crypt of the NecroDancer.</strong></li><li>Like the classic games of the past, it has a complete <strong>MANUAL</strong>, accessible within the game!</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/sbcIh7BV1C8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTIwMTIxLzYzNjg0OC5wbmc=/original/dTb4Za.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIwMTIxLzYzNjg0OS5wbmc=/original/TdV%2F%2F4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIwMTIxLzYzNjg1MC5wbmc=/original/blJYIP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIwMTIxLzYzNjg1MS5wbmc=/original/sACTwg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIwMTIxLzYzNjg1Mi5wbmc=/original/PEXcK2.png]]
<$list filter="[all[current]has:field[url]]">
<$vars prevSection={{{ [has:field[url]before{!!title}] }}}
nextSection={{{ [has:field[url]after{!!title}] }}}
upChapter={{!!parent}}>
<div class="gtw-section-manager">
<div style="text-align: left;">
<$list filter="[<prevSection>!is[blank]]">
← <$link to=<<prevSection>>>Previous: <<prevSection>></$link>
</$list>
</div>
<div style="text-align: right;">
<$list filter="[<nextSection>!is[blank]]">
<$link to=<<nextSection>>>Next: <<nextSection>></$link> →
</$list>
</div>
</div>
<div style="text-align: center; clear: both; padding-top: 1em;">
<!-- I have no idea why this div needs to be here, but everything breaks otherwise. -->
</div>
</$vars>
<style>
div.gtw-section-manager div {
/*border-top: 1px solid <<color table-border>>;*/
/*padding-top: 10px;*/
/*margin-top: 6ex;*/
width: 50%;
float: left;
}
</style>
</$list>
<p>Ludum Dare was in October, and I was doing InkTober already, so I thought, "Hey, why not make a video game from my InkTober drawings." I didn't get done for Ludum Dare. I'm not done as of over a month later, but still going to finish it up, because this has been so much fun. #InkJam</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/FeBSK6Kf1Ys" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzI5MDI4MDkuZ2lm/original/CIZeQK.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzI3MTU3MTkuZ2lm/original/PnccH2.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzI3MTU3MTguZ2lm/original/9PmUxI.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzI3MTU3MTcuZ2lm/original/r12b75.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzI3MTU3MjIuZ2lm/original/7ZIQJW.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzI3MTU3MjEuZ2lm/original/q6b43o.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzI5MDI4MjQuZ2lm/original/oO75iE.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzM0MTQ4NTcuanBn/original/2ilYXc.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzM0MTQ4NTUuanBn/original/Vtda5u.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzM0MTQ4NjAuanBn/original/Oxb%2FdP.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzM0MTQ4NTkuanBn/original/CFkQ4B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzM0MTQ4NTYuanBn/original/E%2BnBJM.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzM0MTQ4NjIuanBn/original/VIl%2FwI.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzM0MTQ4NjEuanBn/original/zdKJ%2BO.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzM0MTQ4NjMuanBn/original/xt%2F8Rm.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIyODczLzM0MTQ4NTguanBn/original/hoK2ml.jpg]]
<p>New edition of No Love's Land, following our successful <a href="https://www.kickstarter.com/projects/adiraslattery/no-loves-land" rel="nofollow noopener" referrerpolicy="origin">Kickstarter</a>!</p>
<p><strong>>DESIGNED FOR WAR</strong></p>
<p><strong>>YOU ARE ON OPPOSITE SIDES</strong></p>
<p><strong>>YOU HAVE FALLEN IN LOVE</strong></p>
<p>You are a killer robot stationed on the moon of Ahava, covered in a dense radiation field. The only way you have to get a message to your secret girlfriend and fellow killer robot is to send them a message inscribed on a missile. Time to fire...</p>
<p><strong>>LOVE CONQUERS ALL</strong></p>
<p><strong>>AND YOU WERE MADE TO CONQUER</strong> </p>
<p><img src="https://img.itch.zone/aW1nLzMzNjcwOTAuanBn/original/MIzcUH.jpg" loading="lazy"></p>
<p><strong>>KICKSTARTER VERSION CREDITS<br></strong></p>
<p><a href="http://adira.itch.io">Adira Slattery</a>, Designer</p>
<p><a href="http://fenslattery.com" rel="nofollow noopener" referrerpolicy="origin">Fen Slattery</a>, Layout</p>
<p><a href="http://" rel="nofollow noopener" referrerpolicy="origin">RobotsAndSuch</a>, Cover Artist</p>
<p><a href="http://robohaven.itch.io">Josie Noronha</a>, Interior Artist</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDQxMDQwLzMzNjcwMjAucG5n/original/SyQtMW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQxMDQwLzMzNjcwMjEucG5n/original/lUe8ZN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQxMDQwLzMzNjcwMjIucG5n/original/7%2FQTJO.png]]
<p><em>The <strong>HMS Solitude </strong>is an expedition vessel with its own accompanying deep sea research submarine, <strong>The Exile</strong>.</em></p>
<p><em>At the bottom of the deepest ocean, the submarine is lying helpless in the unfathomable depths. After bringing a strange artifact on board, the engines were destroyed, stranding the crew in the dark. At first they suspected sabotage, but then the deaths began.</em></p>
<p><em>One of you is the only surviving member of <strong>The Exile</strong>. The crew are dead. You are alone. You are running out of air. You have one lifeline to human contact, a daily transmission to your partner on the <strong>HMS Solitude</strong>.</em></p>
<p><em>One of you is the communications officer aboard the <strong>HMS Solitude</strong>. You are the only lifeline to <strong>The Exile</strong>. Can you keep your partner stable as you float powerlessly above?</em>
</p>
<p><em>Will you rescue them before they succumb to the pressure? </em>
</p>
<p><em>Or will the creature get to them first? </em>
</p>
<p>____________________________________________________________________________</p>
<p>This game is based on The Wretched, you can find that game here: loottheroom.itch.io/wretched
</p>
<p><em>The Wretched is a game about human resilience in the face of overwhelming odds and almost certain death. It is a game about Isolation, fear, and perseverance.</em></p>
<p>In this game, No One Goes Alone, you play as a Team. One of you will use The Solitude Manual, and the other will use The Exile Manual.</p>
<p>Together you will explore how connection with another person brings hope, no matter how dark the depths... </p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjg4NDczLzM3OTIyMDYuanBn/original/diCBWh.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg4NDczLzM3OTIwNjQucG5n/original/ZYQa9I.png]]
<p>No One Lives Here Anymore is a single player, Outcomes Engine game about boxing up the things in your house after your last parent dies. It’s quiet, it’s meditative, it reflects on loss and memory. Ultimately, it is about the gulf of alienation that comes when family is gone.</p>
<p>Any players currently struggling with loss in any form may direct message me for a free copy of the game.</p>
[img width=500 [https://img.itch.zone/aW1nLzE4NjYzNjkuanBn/original/dXnJaT.jpg]]
<p><strong>No Wheels Racing</strong> is a wheely fun game!</p>
<p>You play online with 11 other racers, but you'll soon find that you can't move, since your car has no wheels. Will you find a way to win? Or will you leave your car and disqualify yourself from the race?</p>
<p>This game is intended as a deconstruction of what it means to be a racing game, and also what it means to be a multiplayer game (since no one is moving).<br></p>
<p>Created for the <a href="https://itch.io/jam/metagamejam" target="_blank">Meta Game Jam</a>.<br><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjM3NzE5LzEzODkxMDIucG5n/original/fqRB6j.png]]
<p class="text-center"><span></span></p>
<p class="text-center"><br></p>
<p class="text-center">WASD to move</p>
<p class="text-center">esc makes the mouse cursor visible</p>
<p class="text-center">if you ever think you're stuck, hold S to leave any situation<br></p>
<p class="text-center"><br></p>
<p class="text-center">--</p>
<p class="text-center">i like to think about what's going on inside technology when we aren't looking. maybe nothing is happening, just electrical signals pulsing, but then again... maybe they're all having a dance party in there, i wouldn't know.</p>
<p class="text-center">talk to some characters before the battery dies and the phone turns off for good. you can take as long as you like.</p>
<p class="text-center"><br></p>
<p class="text-center">thank you to Nephasto, TripleAxis and Invector</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/GuZERAewDK8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTEwODIxLzUxNjA0OTgucG5n/original/GvpPwO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTEwODIxLzUxNjA0OTEucG5n/original/ZjaB75.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTEwODIxLzUxNjA0OTIucG5n/original/R3IvMi.png]]
<p>You ever had dreams but never kept a dream diary? Me neither!</p>
<p>This game is a throwback to dreaming and not having your cake, don't remember anything? No worries, you'll forget everything after today too!</p>
<p>This game is basically a simulation on what a dream could hypothetically be. What is a dream? What is a nightmare? What is your mind that causes you to have a weird dream that doesn't make sense? Are we guilty? Are we innocent? </p>
<p>Thinking can be weird, and even when we don't think dreams can be what our subconscious thinks. I might be wrong, I'm not an expert, I'm just a dude who made a game.</p>
<p>This game is also a throwback to pixel shaded games that were released on the original Playstation such as Ridge Racer or Doom for the Playstation (albeit different genres). I also mainly got inspiration from Osamu Sato and LSD Dream Emulator, thank you.</p>
<p>Credits:</p>
<p>Adil S - Director, Creative Director, Game Design, 3D Art, Level Design, Tech Art<br>Austin Lothman - 3D Artist (keys)<br>Lilith Walther - Material Artist and Consultant<br>Alessa Baker - Materiali Artist and Consultant</p>
<p>Credits to Playtesters:</p>
<p>Tyrone Tysdale-Montague<br>Keely Brown<br>Jan Domalaon<br>May Kwan<br>Kent Martinez<br><br></p>
<p>Credit to Kirushanth Seeralan for converting NoSeq to web<br></p>
<p>Huge thanks to Eric B for helping me on the cover art of NoSeq, </p>
<p>Game audio from;</p>
<p>Mixkit<br>Dl Sound<br>Zapslat<br>Adil S</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/CsmweoPv8DA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzg2MzUwLzQ5ODI1NjQucG5n/original/vwgYQJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg2MzUwLzQ5ODI1NjUucG5n/original/Fx4DrC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg2MzUwLzQ5ODI1NjgucG5n/original/%2BsqG5i.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg2MzUwLzQ5ODI1NjkucG5n/original/K%2FeIFs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg2MzUwLzQ5ODI1NzEucG5n/original/f92G6E.png]]
<p>Based on the horror icons of the silent era, this sprite pack contains 20 high quality characters formatted for GB Studio allowing you to simply copy and paste them into your project folder on the fly. </p>
<p><br></p>
<p>All character's likeness are public domain (1926 at the latest as of 2021). </p>
<p><br></p>
<p>Characters from the following films can be found in this pack: Nosferatu, The Golem , Genuine, The Cabinet of Doctor Caligari, The Raven, The Bat, Eddison's Frankenstein, Aelita: Queen of Mars, Warning Shadows, From Morn to Midnight, The Headless Horseman, Faust, The Hands of Orlac. As well as a bonus 4 sprites inspired by Goth Rock and Horror Punk bands.</p>
<p>All images are licensed under CC-BY (free for commercial usage with attribution). <a href="https://creativecommons.org/licenses/by/4.0/" rel="nofollow noopener" referrerpolicy="origin">https://creativecommons.org/licenses/by/4.0/</a></p>
<p>Just credit me something like "Nosferatu Sprites by Beachboogeyman" somewhere on your project :D</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTk3NDQ2LzU3NDMzMjEucG5n/original/l%2BN9cX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTk3NDQ2LzU3NDM2NzkucG5n/original/2frHPY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTk3NDQ2LzU2NzY3MTYucG5n/original/1IeXNn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTk3NDQ2LzU2NzY3MTcucG5n/original/IMU5JU.png]]
<h2>Reviews</h2><p>“Very different. Excitingly different.” <br><a href="http://www.rockpapershotgun.com/2012/11/15/heres-a-procedurally-generated-permadeath-stealth-game/" rel="nofollow noopener" referrerpolicy="origin">Rock Paper Shotgun</a> <br><br>“Pretty damn good stealth game, actually” <br><a href="http://www.youtube.com/watch?v=eQfqZEw5i5c" rel="nofollow noopener" referrerpolicy="origin">TotalBiscuit</a></p><h2>About This Game</h2><p>You are a robot in an office building. You have to eat furniture and not get caught. A mysterious story unfolds. </p><p><br>Not The Robots is this year’s most exciting Roguelike Stealth Furniture Eating Simulator. It’s a game with random levels, permadeath, and the goal of eating furniture. Same furniture is also your stealth cover. </p><ul><li>A seven-building Campaign Mode of increasingly brutal (and fully procedural) levels
</li><li>Fearsome machine-gun-equipped patrolling guards to avoid and trick
</li><li>Spotlights, lasers, bombs, and other traps to sidestep
</li><li>Tons of crafty gadgets to master
</li><li>Contains an unlockable sequel to "You Find Yourself In A Room," a previous game from 2DArray
</li><li>Short/medium/long game modes for play sessions of any size
</li><li>Mysterious and fully-voiced storyline to gradually explain the game's strange setting
</li><li>Controller support
</li><li>The year's most exciting furniture-eating stealth game!</li></ul><h2>About 2DArray</h2><p>2DArray is previously known for web game hits like <a href="http://armorgames.com/play/4918/the-company-of-myself" target="_blank" rel="nofollow noopener" referrerpolicy="origin">The Company of Myself</a>, <a href="http://armorgames.com/play/13070/fixation" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Fixation</a>, <a href="http://armorgames.com/play/12390/fisher-diver" rel="nofollow noopener" referrerpolicy="origin">Fisher-Diver</a>, and <a href="http://www.newgrounds.com/portal/view/494129" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Spewer</a>. This is their first commercial game, supported by tinyBuild GAMES. </p><ul><li>Follow <a href="http://twitter.com/2darray" rel="nofollow noopener" referrerpolicy="origin">@2DArray</a></li></ul><h2>About tinyBuild GAMES</h2><p>tinyBuild GAMES is an indie game development and publishing company. <a href="http://store.steampowered.com/app/227280" rel="nofollow noopener" referrerpolicy="origin">No Time To Explain</a> is their first game. It came out of a successful Kickstarter and Greenlight adventure. They're currently working on a bunch of games: </p><ul><li>Co-developing <a href="http://store.steampowered.com/app/207140/" rel="nofollow noopener" referrerpolicy="origin">SpeedRunners</a> -- currently in Early Access on Steam
</li><li>Working with 3rd party devs on games like <a href="http://store.steampowered.com/app/257120/" rel="nofollow noopener" referrerpolicy="origin">Not the Robots</a> (live on Steam)
</li><li>Preparing to release <a href="http://www.youtube.com/watch?v=AcAI1yClATw&list=UUHLuN_JL66bD8fdJWmQ-gNw&feature=c4-overview" rel="nofollow noopener" referrerpolicy="origin">Fearless Fantasy</a> and other unannounced titles
</li><li>Unannounced super-secret in-house game</li></ul><ul><li>Follow <a href="http://twitter.com/tinybuild" rel="nofollow noopener" referrerpolicy="origin">@tinyBuild</a></li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/VchorougyuA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTI0OTYvNDAyNjcuanBn/original/ZE%2F7db.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI0OTYvNDAyNjguanBn/original/kfu88v.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI0OTYvNDAyNjkuanBn/original/cav2XN.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI0OTYvNDAyNzEuanBn/original/4xaZHf.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI0OTYvNDAyNzIuanBn/original/X0kMG9.jpg]]
<p class="text-center"><strong>Coming November 5th 2020</strong><br></p>
<p>Once upon a time in the late 20th century AD, near the turn of the penultimate decade of the millennia, a magical confluence occurred in Middle School Macintosh computer labs across the globe: <strong>Artillery. </strong><br></p>
<p>Infamously known by teachers as the <em>scourge</em> of attention -- countless students spending entire computer lab periods firing cannons at each other instead of writing English assignments. The temptation too great, no child could refuse the siren's call of the game's accurate physics model and competitive nature.<br>
</p>
<p><strong><em>Notebook Artillery</em></strong> is a love letter to <strong>hours </strong>wasted playing video games in Middle School computer labs instead of working on class assignments. And sure, maybe if I would've spent more time paying attention in class and less time playing video games I wouldn't be making indie games as a means to pay off insane amounts of student debt. But hey, its 2020 and maybe this can be one last beacon of hope for myself and everyone who loves this kind of game. </p>
<p>Players choose their "firing angle" and "powder amount" to <strong>fire cannonballs at opposing player's towers</strong>, or break floating targets in a <strong>solo player target practice mode</strong>. The randomly generated stage layouts will change strategy from round to round, and wind strength has an effect on a cannonball's trajectory which players must account for. Its simple <em>arcade-simulation-action</em>, fun for all ages, with completely hand drawn game art running at a gorgeous 4K. It's like you're looking directly into a Trapper Keeper and the imagination of every middle school kid. Whats not to love?<br></p>
<ul><li>Hand drawn game art in gorgeous 4k.</li><li>Play Solo target practice, or challenge local friends and family in vs mode.</li><li>3 unique world styles fashioned after various wild west motifs.</li><li>Stage layouts are randomly generated to make no two games the same.</li><li>Fight the wind and dodge trees to destroy opponents strongholds.</li><li>Completely visual buttons, no in-game writing.</li></ul>
<p>This was such a fun game to make, and it's so much fun to play with my kids, I hope you find it as fun as I do. And for fans of the original Macintosh classic, I hope this fulfills the desire to play this game again.</p>
<p><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ0ODU2NjMucG5n/original/4U2fYq.png" loading="lazy"><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/kyNOky7BE6Q" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzkwODg2LzQ0Mjg1OTkuZ2lm/original/3CECmi.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzkwODg2LzQ0Mjg2MDAuZ2lm/original/bgAzHJ.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzkwODg2LzQ0Mjg2MDEuZ2lm/original/HBU0n%2B.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzkwODg2LzQ0Mjg2MDIuZ2lm/original/3A0g%2BD.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzkwODg2LzQ0Mjg2MDQuZ2lm/original/f4sdN2.gif]]
<p>Nuclear Throne is Vlambeers latest action roguelike-like about mutants that spend their workdays trying to fight for the throne in a post-apocalyptic world. The radioactive waste in the world allows mutants to get ahead by mutating new limbs on the fly and the abundant availability of powerful weaponry makes the quest to become the ruler of the Wasteland one fraught with peril. All of this is really just an excuse for us to make a fun action game.</p>
<ul><li>12 playable characters with unique advantages, active and passive abilities.</li><li>7 playable main worlds and numerous secrets to be found spanning deserts, frozen cities and underground labs.</li><li>Almost 30 ways to mutate your character, creating millions of interesting playable strategies and combinations.</li><li>Over 120 weapons ranging from the familiar machine-gun and shotgun to the screwdriver and ion cannon.</li><li>More than 15 tracks by LUFTRAUSERS musician Jukio Kallio, also featuring tracks and lyrics by Doseone & Eirik 'Phlogiston' Suhrke.</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/7LSs1bj41P4" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDc0NzYvMjA2MzY0LnBuZw==/original/ba0QjE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc0NzYvMjA2MzY5LnBuZw==/original/0WPU%2FP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc0NzYvMjA2MzY2LnBuZw==/original/WMox3t.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc0NzYvMjA2MzY3LnBuZw==/original/DOUoem.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc0NzYvMjA2MzY1LnBuZw==/original/lW%2FZxI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc0NzYvMjA2MzY4LnBuZw==/original/L0mb1b.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc0NzYvMjA2MzcxLnBuZw==/original/a4OTVp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc0NzYvMjA2MzcwLnBuZw==/original/vxTF9E.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc0NzYvMjA2MzczLnBuZw==/original/bBhDWJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc0NzYvMjA2MzcyLnBuZw==/original/pK%2BJQK.png]]
<p>
</p>
<p>Numberton is a puzzle game for one or two players, made for the early Sharp MZ home computers from Japan. The game shares some elements with Tron-like games, but the gameplay mechanics are based on numbers instead. It's easy to learn, but you'll have to plan ahead and be smart to obtain good scores.</p>
<p>The game may also be played as a two player battle puzzler, where the players try to kill each other by fencing each other in.</p>
<p>There are also various bonuses to grab, and the settings can be adjusted to play the game in many ways. Try to score over 5000 points – or can you reach 10 000 points?<br></p>
<p><strong>Instructions:</strong></p>
<p></p>
<figure><img src="https://img.itch.zone/aW1nLzUxNzAyNDkucG5n/original/w99iWm.png" loading="lazy"><br></figure>
<p><img src="https://img.itch.zone/aW1nLzUxNzAyNzQucG5n/original/L1D6BA.png" loading="lazy"></p>
<p><br></p>
<p><strong>Technical information:</strong><br></p>
<p>The file contains two versions, one specifically tailored for the <strong>Sharp MZ-700</strong>, and one for the <strong>Sharp MZ-80A/MZ-1200</strong>. The latter will work on the <strong>MZ-80K</strong> as well. Both versions have been designed to work with Japanese and European font ROMs.</p>
<p>Numbertron requires 48k of memory.<br></p>
<p>You may download files for use with emulators, as well as sound files which can be recorded directly onto audio cassettes for use with real hardware.<br></p>
<p>Emulators are not provided, but needed if you want to run the game on a PC. The recommended emulators for Windows-based computers are EmuZ-80A, EmuZ-1200 and EmuZ-700. I do not recommend the commonly used Multi-Emu, as it is old and inaccurate.<br></p>
<p><strong>The game is free to download, though you may name your own price if you want to support me.</strong><br></p>
<p><strong>Physical release:</strong> Retro publisher <a href="http://mz-sharpworks.co.uk/" rel="nofollow noopener" referrerpolicy="origin">Sharpworks</a> has released a collector's edition on physical cassette tape. Check the development log for details.<br></p>
<p><em>Like the concept? My friend Mikito Ichikawa of Mindware has created a PC game inspired by Numbertron, but with many new features and enhancements. It features a soundtrack by Namco legend Junko Ozawa, and is quite addictive. Check out <a href="https://store.steampowered.com/app/1076070/Alice_and_You_in_the_planet_of_numbers/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Alice & You in the Planet of Numbers on Steam</a>!<br></em></p>
<p>Numbertron in its natural habitat:<em><br></em></p>
<p><em><img src="https://img.itch.zone/aW1nLzUxNzExNzguanBn/original/UuWEZo.jpg" loading="lazy"></em><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/6RgyEMrNiAk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTE0NTYwLzUxNzExMTIucG5n/original/FOUdzz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTE0NTYwLzUxNzExMTMucG5n/original/GYPeii.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTE0NTYwLzUxNzExMTEucG5n/original/6ZNoK3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTE0NTYwLzUxNzExMTkucG5n/original/GcOdse.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTE0NTYwLzUxNzExMzgucG5n/original/rvuUvN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTE0NTYwLzUxNzMwMjQucG5n/original/%2BTSGSy.png]]
<h1>Air hockey but you control both players.</h1>
<p><img src="https://img.itch.zone/aW1nLzQzNjQxMzMuZ2lm/original/MFwIM%2B.gif" loading="lazy"><br></p>
<p><em><strong>Keep the puck from touching bad stuff to rack up points!</strong></em></p>
<ul><li>5 Unique Maps</li><li>Show your rank!</li><li>Completely arcade based, no "win state"</li><li>Get on top to have your name shown to everyone who plays</li></ul>
<p><img src="https://img.itch.zone/aW1nLzQzNjQ2MzkuZ2lm/original/M0Huyn.gif" loading="lazy"><br></p>
<p><br></p>
<h4>Special thanks to <a href="https://www.youtube.com/channel/UCUzEitsrWzd6MYDdZGUgk3Q" rel="nofollow noopener" referrerpolicy="origin">Brass Harpooner</a> for the backend service and personally helping with the leaderboard <a href="https://t.co/rOwyNlzTxc?amp=1" target="_blank" rel="nofollow noopener" referrerpolicy="origin"></a></h4>
<p></p>
<h4>Soundtracked by <a href="https://t.co/rOwyNlzTxc?amp=1" rel="nofollow noopener" referrerpolicy="origin"></a><a href="https://t.co/rOwyNlzTxc?amp=1" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Dan1021</a></h4>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzc5NjM2LzQzNjQ5MzguZ2lm/original/DuPsor.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc5NjM2LzQzNjQ5NDIuZ2lm/original/M9kXXK.gif]]
<h3><strong><em>WHOA, why is this game so expensive?!</em></strong> Well, friends, it's currently on Kickstarter to fund a physical version with custom art and a professional layout! If you want a copy, I recommend you make a pledge! <a href="https://www.kickstarter.com/projects/472588138/ocean-tides-the-physical-edition-for-zimo" rel="nofollow noopener" referrerpolicy="origin">Back the KS here!</a></h3>
<p><em>Ocean Tides</em> is a GMless collaborative storytelling game of entanglements at sea and is a hack of the game <a href="https://lumpley.itch.io/firebrands">Mobile Frame 0: Firebrands by Vincent Baker</a>. In it, you assume the role of either a Mermaid, a Pirate, or a Naval Officer and you try to create messy entanglements with your fellow players. Fight with your friends, ally with your rivals, and fall in love with your enemies.</p>
<p>You will need<br></p>
<ul><li>3-6 players</li><li>2+ hours</li><li>A handful of coins per player</li></ul>
<p>The "pretty" version includes a more robust layout but is functionally the same as the non-pretty PDF.<br></p>
<p><strong>Actual Play</strong></p>
<p>If you would like to hear what this game can play like, you can find a three-episode actual play involving myself, @littleladymab, @jadeoxfordrose, and @sacalow here: <a href="https://ftlcast.podbean.com/e/episode-401-drama-in-my-ocean-its-more-likely-than-you-think/" rel="nofollow noopener" referrerpolicy="origin">Part 1</a>, <a href="https://ftlcast.podbean.com/e/episode402-i-mean-most-people-have-skulls/" rel="nofollow noopener" referrerpolicy="origin">Part 2</a>, <a href="https://ftlcast.podbean.com/e/episode-403-very-cool-and-sexy-of-him/" rel="nofollow noopener" referrerpolicy="origin">Part 3</a> </p>
<p><strong>Physical Edition</strong><br></p>
<p>The Kickstarter for the physical edition will be launching in February 2022! Visit <a href="https://tinyurl.com/ocean-tides" rel="nofollow noopener" referrerpolicy="origin">https://tinyurl.com/ocean-tides</a> for more details and to sign up for updates!<a href="https://ftlcast.podbean.com/e/episode-403-very-cool-and-sexy-of-him/" rel="nofollow noopener" referrerpolicy="origin"></a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTUzOTM5LzQyMDk1NzMucG5n/original/W52RC7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUzOTM5LzQyMDk1NzQucG5n/original/vjgFxU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUzOTM5LzQyMDk1NzgucG5n/original/ejUeTg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUzOTM5LzQyMDk1NzUucG5n/original/SjiX12.png]]
<p>Oceans 2400 is a microgame hack of <a href="https://jasontocci.itch.io/2400">24XX</a> and inspired by <a href="https://bladesinthedark.com/" rel="nofollow noopener" referrerpolicy="origin">Blades in the Dark</a> for playing fast paced cinematic heists like those in Oceans 11, The Italian Job, and Mission Impossible.<br></p>
<p>Are you <strong>the Face</strong>, talking your way into and out of dangerous situations? <strong>The Demo Expert</strong>, ready to tackle any obstacle with high energy solutions? <strong>The Mastermind</strong>, with a cunning ace up your sleeve? Or <strong>the Veteran</strong>, here for one last job before retirement? Take on one of nine roles and use your unique skills to form a crew to break, enter, and rob.</p>
<p>Trick guards, bypass laser defenses, crack safes, and hack computers to get away with your prize. If something goes horribly wrong, don't worry! Flashback to an earlier scene to reveal how this was actually part of your plan all along. <br></p>
<p>Includes GM tools for tracking the level of alarm and alertness of the situation during a heist, along with a generator to create high stake heists with dramatic twists waiting in the wings.<br><br>Written for the <a href="https://itch.io/jam/2400jam">24XX Jam</a>.<br></p>
<p></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODE3MDYzLzQ1ODE5MTEucG5n/original/3F5dyY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODE3MDYzLzQ1ODE0ODUucG5n/original/WIEz3A.png]]
<p>Dive deeper and deeper into the depths of the ocean to gather more and more rare resources. But watch out for what is lurking the depths. The shop, with all it’s upgrades will turn out to be very valuable. Dive, Mine, Sell & Thrive!</p>
<p>Please download the LATEST version for the extended POST-Jam updates.</p>
<p> </p>
<p>Controls:</p>
<p>WASD - Move</p>
<p>E - Interact</p>
<p>Left Click - Mine</p>
<p><br></p>
<p><a href="https://twitter.com/warrrkus" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@warrrkus (Twitter) for news and updates</a><br></p>
<p><br></p>
<p>This is a solo developer project. The game was made initially made for the 48th Ludum Dare Game Jam in ~72 hours. All assets where either created during the jam or are CC0-Licensed, gathered from various sources.<br></p>
<p> </p>
<p> </p>
<p><strong>------------ A few hints / tips. Don't read this if you want to find stuff out on your own: -----------------------------------------------------</strong></p>
<p>- The deeper you go, the more valuable the ore gets. While ore at near surface level is only worth 1 credit, one ore from the depth can be worth thousands of credits.</p>
<p>- Always watch your oxygen and depth meter. If you ignore one of them or both death will come very quick. Also watch out for the fish. They are not your friends.</p>
<p>- Buying equipment that increases your depth always means that new ore types are now accessible, making the ore types you found so far obsolete. Be brave and try diving near your maximum depth limit. Great risks bring great rewards.</p>
<p>- Always remember in which direction you headed. Always try to remember your way back to the ladder.</p>
<p>- If you have to grind for a long time for your next piece of equipment you're probably doing something wrong.</p>
<p><br></p>
<p> </p>
<p> </p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNjg0Mi81ODEzMDMzLmdpZg==/original/w%2FHjt%2B.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNjg0Mi81ODM5Nzk5LmdpZg==/original/smRESU.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNjg0Mi81NzkzMjQ5LnBuZw==/original/ViHCv%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNjg0Mi81NzkzOTExLnBuZw==/original/xylmIt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNjg0Mi81NzkzMjY3LnBuZw==/original/jba9iX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNjg0Mi81NzkzMjU1LnBuZw==/original/1Iq25B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNjg0Mi81NzkzMjM4LnBuZw==/original/quiS54.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNjg0Mi81NzkzMjcwLnBuZw==/original/T9Tsx2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxNjg0Mi81NzkzMjc3LnBuZw==/original/iofrKp.png]]
<p><em>A fallen camellia i</em><em>s a beheading, every time, every petal falling at once: a severing.</em></p>
<p><span></span>════*.·:·.☽✧ ✦ ✧☾.·:·.*════</p>
<p>TW: CSA, animal death, violence, suicidal ideation</p>
<p>OCHITSUBAKI || 落ち椿 is a visual novel about the impossibility of translating trauma. It is a bilingual JPN/ENG game about translation and how it can run as deeply as the way hypermarginalized people constantly "translate" their identities and trauma for the understanding of others, no matter how far it is from the source material. It's about recovering from trauma through the genuine compassion and consideration of another person, who manages to See the aftereffects of trauma and are willing to meet that person's unique needs, regardless of if they "understand" them or not.<br></p><p>Ochitsubaki is only loosely a visual novel, which is to say it is a story-based game with a strong aesthetic component. Ochitsubaki has a deep, rich tapestry of aesthetics in unifying modern elegance with unique retro anime-inspired character portraits. The original soundtrack derives inspiration from traditional Asian pentatonic scales, particularly but not limited to Japanese ones, that also derive a modern, Genshin's Liyue-type twist that sets it firmly in contemporary times. It has three language options: JPN, ENG, and JPN translation. The ENG/JPN versions are two different renditions of the story, thus requiring a separate JPN translation, emulating what happens when you try to translate something as complex as identity. You can consider that the only real choice you make in the game is which language to play it in, and each language option provides a different "route," a similar but very distinctly different iteration of the story. The language modes mimic the powerful loss that happens when stories--when trauma--is translated. <br></p>
<p><strong>The demo only contains the first two ENG chapters, an estimated 30-45min of playtime.</strong><br></p>
<p>════*.·:·.☽✧ ✦ ✧☾.·:·.*════<br></p>
<p>Hanashiro (he/she/they) and their few remaining kin all react differently to the trauma of being immortal and witnessing the apocalypse over and over again in different cycles of reincarnation. Shiragiku is unfazed and cheery and flippant and whimsical and capricious; Shirayuri is nowhere to be found; and Hanashiro? Hanashiro is planning on their death in 10 years, when the camellias fall, if they cannot find a reason to live by then. <br></p>
<p>Hanashiro and Shirayuri have witnessed THE END OF THE WORLD before. But no one believed them. Shiragiku has seen many, many apocalypses, but she has never been hurt by any one after the first. Shiragiku has remembered every single end; Shirayuri has remembered none; and Hanashiro only remembers some. Which? Even he doesn't know.
</p>
<p>Hanashiro misses speaking her fey mother tongue, but she can't seem to find anyone willing to listen to her, not even her own kind. And then she makes an enemy who just might. Their name is Lun Kochouran.
</p>
<p>And they might be the first one in a millennium to learn the Amayuri tongue.
</p>
<p>They also might be the first to kill an immortal.
</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTU3ODExLzU0MzEzMjEuanBn/original/VTOcGl.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU3ODExLzU0MzEzMjIuanBn/original/iU5q38.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU3ODExLzU0MzEzMjQuanBn/original/mbneoz.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU3ODExLzU0MzEzMjguanBn/original/xwD9FP.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU3ODExLzU0MzEzMjMuanBn/original/8Hwyf2.jpg]]
<p><strong>Players:</strong> 2 - 4 </p>
<p><strong>Ages: </strong>12+ (cartoon violence)</p>
<p><strong>Avg Playtime: </strong>30 - 60 minutes</p>
<p><strong>Download includes separate full color and black & white print sheets!</strong></p>
<p><strong><a href="https://www.thegamecrafter.com/games/odds-irons:-dino-combat-racing" rel="nofollow noopener" referrerpolicy="origin">Full retail version available on TheGameCrafter.com!!</a></strong></p>
<p><strong><a href="https://steamcommunity.com/sharedfiles/filedetails/?id=1636289783" rel="nofollow noopener" referrerpolicy="origin">Also available on Steam Workshop for Tabletop Simulator!!!<br><br></a>-------------------------------------------------------------------------------------------------------</strong></p>
<p>In <strong>ODDS & IRONS: <em>Dino Combat Racing</em></strong><em> </em> players compete in a Victorian derby using prehistoric birds called Moamegus. Players pick their Moamegus species, and hire a jockey from a diverse cast of characters. Once the race begins they'll have to avoid obstacles, use unique weapons, and make the most of their feathery steed's stats and jockey's abilities. </p>
<p>First one to reach the finish line in one piece wins! </p>
<p>----------------------------------------------------------------------------------------------------------</p>
<p><strong>Choose the species of Dino that's right for your play style!</strong></p>
<p><em>Want to be as fast as possible? </em>Race with a <a href="https://ibb.co/nCNH76" rel="nofollow noopener" referrerpolicy="origin">Wretch</a>.</p>
<p><em>Want to be as strong as possible? </em>Ride a <a href="https://ibb.co/mJaFum" rel="nofollow noopener" referrerpolicy="origin">Broadhorn</a><span></span>.</p>
<p><em>Want to take a more balanced approach? </em>Try a <a href="https://ibb.co/cSiPn6" rel="nofollow noopener" referrerpolicy="origin">Continental</a>. </p>
<p>----------------------------------------------------------------------------------------------------------</p>
<p><strong>Even your odds by hiring one of the world's greatest jockeys!</strong></p>
<p>Pick from a cast of <a href="https://ibb.co/kHTFS6" rel="nofollow noopener" referrerpolicy="origin">Bruisers, Gamblers, Defenders, or Speedsters</a>...</p>
<p>----------------------------------------------------------------------------------------------------------</p>
<p><strong>Avoid obstacles and pick up unique contraptions to use against other players on a race track you can customize!</strong> </p>
<p>Make your own Circuit or Cup, or choose from one of the recommended <a href="https://ibb.co/haUw8b" rel="nofollow noopener" referrerpolicy="origin">tracks</a>. <br>Compete in a unique race every match!</p>
<p>----------------------------------------------------------------------------------------------------------</p>
<p><strong>Player Reviews:</strong></p>
<p><em>"The art of ODDS & IRONS promises a fast-moving, light-hearted, and slightly nutty game, and the gameplay delivers. Our game at PAX was marked by several lead changes, unexpected turns (literal and metaphoric), and shifting alliances as players ganged up on the leader. The mechanics were easy to pick up, and players were presented with meaningful choices both in set-up and in each turn during gameplay." </em>-Mark (gamer and educator) </p>
<p><em>"ODDS & IRONS effortlessly maintains a balance that many AAA games strive for but do not achieve. Half bumper cars, half bag of tricks, wholly enjoyable. O&I is truly the thinking man's racing game."</em> -Stephanie (gamer and student)</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjAxMTAwLzMxODg4NjYuanBn/original/xX1wU7.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAxMTAwLzMxODg4NjUuanBn/original/Ml7bUu.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAxMTAwLzMxODg3MjMuanBn/original/wzQ08z.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAxMTAwLzMxODg3MjEuanBn/original/uN24Zb.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAxMTAwLzMxODg3MjcuanBn/original/ev2t0R.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAxMTAwLzMxODg3MjUuanBn/original/WEsdZu.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAxMTAwLzMxODg3MjYuanBn/original/OCu5ft.jpg]]
<p class="text-justify">hi! for a while now i’ve been doing daily illustrations of small things that bring me joy. i started doing them because it’s been a rough year and i needed to make myself think something positive, if only for a brief moment. i’ve been sharing them on <a href="http://twitter.com/folmerkelly" target="_blank" rel="nofollow noopener" referrerpolicy="origin"></a><a href="https://twitter.com/folmerkelly/status/1323390694040489997?s=20" target="_blank" rel="nofollow noopener" referrerpolicy="origin">twitter</a> and <a href="http://instagram.com/folmerkelly" rel="nofollow noopener" referrerpolicy="origin">instagram</a> to hopefully give others a small moment of joy as well. </p>
<p class="text-justify">so here is a curated collection of my odes to small joy, carefully edited into A4 sized pages you can print out and color however you like! do them together w your kids during a dreary lockdown weekend, challenge your roommate to a speedrun coloring session, doodle-fill one during a zoom meeting, go wild! I'd love to see what you come up w, please show me your art (if you like) <3</p>
<p class="text-justify">there are 20 pages in the book, including some not-yet-released dailies, as well as 3 exclusives <em>only found in this collection</em>! </p>
<p class="text-justify">this collection is PWYW, if you want to support my art and the work i did putting this together- I appreciate you! but also pls don't feel bad if you can't or won't throw money at it, i made it PWYW for a reason, these are terrible times across the dang board and you deserve to enjoy whatever you can enjoy. </p>
<p class="text-justify">take care,</p>
<p class="text-justify">folmer</p>
<p class="text-justify"><br></p>
<p class="text-justify"><br></p>
<p class="text-justify"> </p>
<p class="text-justify"><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODE5NjcwLzQ1OTUwMzgucG5n/original/xkjj7n.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODE5NjcwLzQ1OTUwMzkucG5n/original/HLFDax.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODE5NjcwLzQ1OTUwNDIucG5n/original/MU%2BKcK.png]]
<p class="text-center"><strong><em><br></em></strong><strong><em><br></em></strong></p>
<p><strong><em>OF GRUB & GRAIN </em></strong><strong><em>is a short, system agnostic, tabletop minigame for your adventure rpg about the crafting and cooking of food, fodder and fare.</em></strong></p>
<p>Grub is a tabletop roleplaying <em>minigame</em>, which is to say, it is meant to be played alongside your favourite ttrpg campaign, to help break the rules monotony of long term play and add a dash of depth and fun to the more interstitial moments of a larger system. It contains mechanics for a party of players to gather ingredients, make recipes, select accompaniments and try to craft a delicious meal in harmony! Whether your group is stuck at camp, with scarce resources available, or preparing to feed a family of nobles at a grand feast, Grub is meant to be adaptable all sizes and complexities of meal. <br></p>
<p><strong>WHAT YOU WILL NEED TO PLAY:</strong><br></p>
<p>3-6 players - Grub is GMless, if you are playing a system with a GM, they join in or sit out. </p>
<p>Polyhedral dice sets (or digital dice roller), ideally one set per player, but they could be shared. </p>
<p>pen/pencil + paper <br></p>
<p>30-60 minutes<br></p>
<p> Of Grub & Grain includes 10 recipe cards that can be printed out and filled in! <em><br></em></p>
<p><em>I'd love to see/hear about the meals you make - find me on <a href="http://twitter.com/maxwellander" target="_blank" rel="nofollow noopener" referrerpolicy="origin">twitter</a><br></em></p>
<p><br></p>
<p></p>
<p><strong>Special thanks </strong>to my rad play testers, the Brain Trust discord, and also Jonathan.<br><em><a href="http://twitter.com/maxwellander" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><br></a></em><em><a href="http://twitter.com/maxwellander" target="_blank" rel="nofollow noopener" referrerpolicy="origin"></a></em><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODU3OTAxLzQ4MTQ2MjMuanBn/original/KQgHoN.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODU3OTAxLzQ4MTQyNzAuanBn/original/N9rkdO.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODU3OTAxLzQ4MTQyNzEuanBn/original/VCQMKA.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODU3OTAxLzQ4MTQyNzMuanBn/original/8XP6wQ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODU3OTAxLzQ4MTQyNzQuanBn/original/lJn5y%2B.jpg]]
<p class="text-center"><strong><em><br></em></strong></p>
<p><strong><em><a href="https://snaxwell.bigcartel.com/product/of-grub-grain" target="_blank" rel="nofollow noopener">Physical copies now available from my shop!!</a><br></em></strong></p><p><strong><em>OF GRUB & GRAIN </em></strong><strong><em>is a short, system agnostic, tabletop minigame for your adventure rpg about the crafting and cooking of food, fodder and fare.</em></strong></p>
<p>Grub is a tabletop roleplaying <em>minigame</em>, which is to say, it is meant to be played alongside your favourite ttrpg campaign, to help break the rules monotony of long term play and add a dash of depth and fun to the more interstitial moments of a larger system. It contains mechanics for a party of players to gather ingredients, make recipes, select accompaniments and try to craft a delicious meal in harmony! Whether your group is stuck at camp, with scarce resources available, or preparing to feed a family of nobles at a grand feast, Grub is meant to be adaptable all sizes and complexities of meal. <br></p>
<p><strong>WHAT YOU WILL NEED TO PLAY:</strong><br></p>
<p>3-6 players - Grub is GMless, if you are playing a system with a GM, they join in or sit out. </p>
<p>Polyhedral dice sets (or digital dice roller), ideally one set per player, but they could be shared. </p>
<p>pen/pencil + paper <br></p>
<p>30-60 minutes<br></p>
<p> Of Grub & Grain includes 10 recipe cards that can be printed out and filled in! <em><br></em></p>
<p><em>I'd love to see/hear about the meals you make - find me on <a href="http://twitter.com/maxwellander" target="_blank" rel="nofollow noopener">twitter</a><br></em></p>
<p><br></p>
<p></p>
<p><strong>Special thanks </strong>to my rad play testers, the Brain Trust discord, and also Jonathan.<br><em><a href="http://twitter.com/maxwellander" target="_blank" rel="nofollow noopener"><br></a></em><em><a href="http://twitter.com/maxwellander" target="_blank" rel="nofollow noopener"></a></em><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODU3OTAxLzQ4MTQ2MjMuanBn/original/KQgHoN.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODU3OTAxLzQ4MTQyNzAuanBn/original/N9rkdO.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODU3OTAxLzQ4MTQyNzEuanBn/original/VCQMKA.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODU3OTAxLzQ4MTQyNzMuanBn/original/8XP6wQ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODU3OTAxLzQ4MTQyNzQuanBn/original/lJn5y%2B.jpg]]
<p>A scary noise in the night has spooked your poor rabbits, and now all 100 of them have scattered across the valley! Run, climb, jump, and call out commands to your darling bunnies to bring them home to safety in this short n' sweet puzzle platformer — but make sure to be home before dark.<br></p>
<p><img src="https://img.itch.zone/aW1nLzI3MjkzNDUucG5n/original/5yFoXm.png" loading="lazy"></p>
<ul><li>A picturesque valley with 100 rabbits to rescue</li><li>Various secrets and collectibles to discover</li><li>Several different types of rabbits, often with unique abilities for solving puzzles</li><li>Charming, handcrafted pixel visuals with a wonderful soundtrack to match</li><li>Did we mention bunnies?</li></ul>
<p><img src="https://img.itch.zone/aW1nLzI3MjkzNDcucG5n/original/e714Io.png" loading="lazy"><br></p>
<p>Along your way, beware the shapes in the darkness. Your rabbits aren't the only creatures in the valley, and the other ones may not be as friendly. Make sure you get home before dark! They almost look kind of cute, though...<br>Thankfully, the other faces in the valley certainly are friendly ones. Now who's this cutie with a bunny in her arms?</p>
<p><img src="https://img.itch.zone/aW1nLzI3MjkzNDkucG5n/original/2Xez2b.png" loading="lazy"><br></p>
<p><br></p>
<p>You can get the soundtrack <a href="https://corywelchmusic.bandcamp.com/album/oh-jeez-oh-no-my-rabbits-are-gone-ost" target="_blank" rel="nofollow noopener" referrerpolicy="origin">here!</a></p>
<p>Made with love by <strong>Studio Nevermore (</strong><a href="https://twitter.com/StudioNevermore" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@StudioNevermore</a>) -- Main Developer <strong><a href="https://twitter.com/PolarBun" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@PolarBun</a></strong></p>
<p><span></span></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/1VH1md3zFf4" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTI1NDMzLzI3MjkyNjMucG5n/original/nb1%2Bs%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI1NDMzLzI3MjkyNjQucG5n/original/R272hI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI1NDMzLzI3MjkyNjUuanBn/original/lVPDQP.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI1NDMzLzI3MjkyNjYuanBn/original/IUYOdF.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI1NDMzLzI3MjkyNjcuanBn/original/U92Ta%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI1NDMzLzI3MjkyNjgucG5n/original/fPnxdw.png]]
<p></p>
<h1>You have two stats: HMM and FUCK.</h1>
<p><em>You are Monster Slayers of the Jackal Conclave, and you're investigating a strange incident...</em></p>
<p>Inspired by <em>The Witcher</em> by Andrzej Sapkowski, On The Path is a hack of Honey Heist by Grant Howitt, where players take on the roles of Monster Slayers investigating a mystery after receiving a strange letter.
</p>
<p>Included are generation tools for GMs to create the adventure, and adaptations of Honey Heist's much-loved mechanics.
</p>
<p>Download contains:
</p>
<ul><li>Stylised PDF
</li><li>Printer-friendly PDF
</li><li>Plain text, dyslexia-friendly font PDF
</li></ul>
<p>Purchase this game at $3.50 or higher to receive the adventure frame <em>The Vengeful Sea</em>, a ready-to-play story with minimal GM prep required.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNzAzOC81ODg2MzUyLnBuZw==/original/V7Elcr.png]]
<p>CW: death, grief, loss, family history</p>
<p>On the Wings of a Red Dragonfly is a ttrpg that revolves around a Japanese Buddhist holiday of Obon, where players communicate through abstract means with a spirit that has come back to visit for a three day festival.</p>
<p><br></p>
<p>Note that the spirit is someone the characters know not someone the player knows.</p>
<p></p>
<p>Cover image by Milena Briceño <a href="http://edge-sama.artstation.com" rel="nofollow noopener" referrerpolicy="origin">http://edge-sama.artstation.com</a> </p>
<p>Layout by Sin Posadas <a href="http://diwatamnl.itch.io">diwatamnl.itch.io</a><br><a href="https://twitter.com/diwatamanila" rel="nofollow noopener" referrerpolicy="origin">@diwataMANILA</a> on Twitter<br><br></p>
<p></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzcyMzA2LzQzMjQ5MjUucG5n/original/XUsjSt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzcyMzA2LzQzMjQ5MjYucG5n/original/5CnrGY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzcyMzA2LzQzMjQ5MjcucG5n/original/XtVCDz.png]]
<p>"Do you believe in fairies? Say quick that you believe. If you believe, clap your hands!" ~James M. Barrie</p>
<p><br>You and your magical friends are throwing a surprise birthday party for someone special. In this enchanted land, anything can happen. Will there be a happy ending?<br><br>Life is a fairytale in this magical micro-RPG! Choose from 6 character options:</p>
<ul><li>Fairy Godmother</li><li>Enchanted Animal</li><li>Kindly Old Wizard</li><li>Nanny</li><li>Wise Witch</li><li>Pixie</li></ul>
<p>Each character specializes in a different skill, and is equipped with a unique tool to help them in their tasks.</p>
<p><img src="https://img.itch.zone/aW1nLzQ3NDk2NDEucG5n/original/jymwhP.png" loading="lazy"><br><br>Background image by <a href="https://pixabay.com/users/darkmoonart_de-1664300/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=4369116" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">DarkmoonArt_de</a> from <a href="https://pixabay.com/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=4369116" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">Pixabay</a>; game description art by <a href="https://pixabay.com/users/jo-b-246441/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=5442762" rel="nofollow noopener" referrerpolicy="origin">Jo-B</a> from <a href="https://pixabay.com/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=5442762" rel="nofollow noopener" referrerpolicy="origin">Pixabay</a>; cover image by <a href="https://pixabay.com/users/pixel2013-2364555/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=2160539" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">S. Hermann & F. Richter</a> from <a href="https://pixabay.com/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=2160539" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">Pixabay</a>; internal game art by Gordon Johnson from <a href="https://pixabay.com/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=3244163" rel="nofollow noopener" referrerpolicy="origin">Pixabay</a>. All free for commercial use.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODQ2MTU4LzQ3NDk2ODMuanBn/original/8f47bv.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODQ2MTU4LzQ3NDk3MTQuanBn/original/tWxZN0.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODQ2MTU4LzQ3NDk2ODUuanBn/original/umP78x.jpg]]
<p>"Do you believe in fairies? Say quick that you believe. If you believe, clap your hands!" ~James M. Barrie</p>
<p><br>You and your magical friends are throwing a surprise birthday party for someone special. In this enchanted land, anything can happen. Will there be a happy ending?<br><br>Life is a fairytale in this magical micro-RPG! Choose from 6 character options:</p>
<ul><li>Fairy Godmother</li><li>Enchanted Animal</li><li>Kindly Old Wizard</li><li>Nanny</li><li>Wise Witch</li><li>Pixie</li></ul>
<p>Each character specializes in a different skill, and is equipped with a unique tool to help them in their tasks.</p>
<p><img src="https://img.itch.zone/aW1nLzQ3NDk2NDEucG5n/original/jymwhP.png" loading="lazy"><br><br>Background image by <a href="https://pixabay.com/users/darkmoonart_de-1664300/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=4369116" style="font-size: inherit" rel="nofollow noopener">DarkmoonArt_de</a> from <a href="https://pixabay.com/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=4369116" style="font-size: inherit" rel="nofollow noopener">Pixabay</a>; game description art by <a href="https://pixabay.com/users/jo-b-246441/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=5442762" rel="nofollow noopener">Jo-B</a> from <a href="https://pixabay.com/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=5442762" rel="nofollow noopener">Pixabay</a>; cover image by <a href="https://pixabay.com/users/pixel2013-2364555/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=2160539" style="font-size: inherit" rel="nofollow noopener">S. Hermann & F. Richter</a> from <a href="https://pixabay.com/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=2160539" style="font-size: inherit" rel="nofollow noopener">Pixabay</a>; internal game art by Gordon Johnson from <a href="https://pixabay.com/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=3244163" rel="nofollow noopener">Pixabay</a>. All free for commercial use.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODQ2MTU4LzQ3NDk2ODMuanBn/original/8f47bv.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODQ2MTU4LzQ3NDk3MTQuanBn/original/tWxZN0.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODQ2MTU4LzQ3NDk2ODUuanBn/original/umP78x.jpg]]
<h3 style="color: #41658f"><p><br>Somewhere in the Old West, there lies a cabin full of corpses.</p></h3>
<p style="color: #41658f"><strong>If you had arrived moments sooner, you might have been one of them.</strong></p>
<p>It all started on Christmas Day, when The Old Sheriff of New Town was murdered. In the days that followed, several dangerous strangers would make their way to the Mount Inn, an isolated shelter on the mountain path between New Town and Old Town, and kill each other.<br></p>
<p></p>
<p>Now it’s down to you to untangle their motives and piece together the bigger picture from the gruesome aftermath.</p>
<p></p>
<p></p>
<p>Read about Once Upon a Crime in the West on <a href="https://www.rockpapershotgun.com/2019/05/16/once-upon-a-crime-in-the-west-review/" rel="nofollow noopener" referrerpolicy="origin">Rock, Paper, Shotgun!</a></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzI2NTk3ODQucG5n/original/VGFhpX.png" loading="lazy"></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p style="color: #7a8899"><em>System Requirements:</em><br><em>OS</em>: Windows 7 64-bit or later<br><em>Processor</em>: Quad-core Intel or AMD processor, 2.5 GHz or faster<br><em>Graphics</em>: NVIDIA GeForce 570 GTX or AMD Radeon 6970 HD series card or higher<br><em>Memory</em>: 4 GB RAM</p>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/vQxmHSteY6k" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDU5NjE5LzIzMzgyNDIucG5n/original/Xg1GUJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU5NjE5LzIzMzgyNDMucG5n/original/byHmYH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU5NjE5LzIzMzgyNDQucG5n/original/nb0L5f.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU5NjE5LzIzMzgyNDUucG5n/original/bb4zcj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU5NjE5LzIzMzgyNDYucG5n/original/CHcHai.png]]
<p>There are pivotal moments in every child’s life that shape who they become. One Child’s Heart is a tabletop roleplaying game that invites players to take the role of child welfare professionals participating in a new mental health care memory exploration experiment. The Central Limbic Engagement Recovery System (CLERS – pronounced, “clears”) brings characters into the memories of these key moments to give support and guidance to a child who needs both.</p>
<p>Professionals help create connections and teach resilience to children who desperately need someone to care about them.</p>
<p>During the Memories, the Professionals interact with the child through conversation, finding ways to get the child to open up and hear the support the professionals are offering. The Professionals walk into the middle of a memory that they don’t have any context for, especially at the beginning of the game. They need to move beyond the surface of what’s happening to discover why the experience is so impactful to the Child find a way to build trust and get them to open up before the memory ends.</p>
<p>This unique game uses its own innovative dice mechanic and token system to symbolize the Professionals forging meaningful connections with the Children. Each Professional is specifically equipped to build a connection with the Children through their Approach – leading with their Heart or trusting in their Mind – and individual Qualities. The facilitator takes on the important role of the Advocate, guiding the Professionals through the Memories of the Child, and portraying the Children in some of their toughest moments.</p>
<p>The heart of this game centers on the power of a conversation. People that have a willingness to reach out to another human being in need have the power to effect real change. In this game, as in life, connections start by being brave and having a conversation. That can begin by simply asking, “Are you OK?”</p>
<p>Easy to learn and focused on creating emotional connections, One Child’s Heart allows for heartfelt roleplaying focused on hope in the face of despair. Will you make a difference, show compassion, and touch one child’s heart?<br></p>
<p>What You Need to Play<br> • A minimum of 3 six-sided (d6) dice<br> • 2-5 people including the Advocate<br> • A pencil or pen<br> • Character sheets<br> • 2-4 hours<br> • Optional: Physical tokens to act as Connection Tokens</p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzQ2OTU1LzQxNjcwMzIucG5n/original/XTl%2BeO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ2OTU1LzQxNjcwMzMucG5n/original/XBzsjO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ2OTU1LzQxNjcwMzEucG5n/original/DIzzRn.png]]
<p><em>One Hour Worldbuilders </em>is a card game for four players designed to help you collaboratively build a world in under an hour. Rather than using genre conventions or tropes, you begin imagining your world using details from your own life as inspiration - so every world feels fresh, urgent and personal.</p>
<p><img src="https://img.itch.zone/aW1nLzU2NDg1MTQucG5n/original/BYZiPg.png" loading="lazy"><em><br>1HWB </em>requires no prep, no GM and no experience with tabletop RPGs. All you need is a printer, some scissors and an hour of your time. It's great for tabletop campaigns, collaborative creative projects, or for a standalone creative game on the go.
<br></p>
<figure><img src="https://img.itch.zone/aW1nLzU2NDg1OTYucG5n/original/tjX5zN.png" loading="lazy"><br></figure>
<p><em>1HWB</em> uses a system of prompts and structured questioning that is accessible for beginners and intricate for experienced creators. The prompts and questions emphasize forgotten histories, conflicting ideologies, loss, and the textures of daily life. I've played it with strangers, friends, family and loved ones - and every world I've built has felt distinct, compelling and unique to the people who helped make it.</p>
<figure><img src="https://img.itch.zone/aW1nLzU2NDg2NjYucG5n/original/mGF%2FeP.png" loading="lazy"><br><br><a href="https://gumroad.com/kaelanbuildsworlds" rel="nofollow noopener" referrerpolicy="origin">Physical copies of One Hour Worldbuilders are also available via Gumroad</a>. If you live in the Toronto area I will deliver them to you personally! <br></figure>
[img width=500 [https://img.itch.zone/aW1nLzU1NDg3MDMucG5n/original/FAnM7f.png]]
<div class=""><iframe src="https://www.youtube.com/embed/j8vvNqv7rPo" allowfullscreen="" width="500" height="281" frameborder="0"></iframe></div>
<p><em><br>One Page Lore: Fantasy Folk</em> provides the highlights for the diverse and unique people you'll meet in fantasy tabletop role playing games (TTRPGs) that makes them fun to play as characters or non-player characters (NPCs) no matter what system you use.<br></p>
<p>It also provides alternatives to and removes personality restrictions, social constraints, and problematic tropes, allowing for better, more engaging characters. Players and DMs can use these ideas as ground work or suggestions when creating characters, expanding on these ideas to the limits of their imaginations, personal taste, and setting.</p>
<p>Oh, and it packs it all into one page, so you can start playing sooner.</p>
<p>Folk available in One Page Lore: Fantasy Folk:<br></p>
<ul><li>Blemmyes</li><li>Dikarya (mushroom folk)</li><li>Dwarves</li><li>Elves</li><li>Endracot (dual-form critterfolk)</li><li>Fairies</li><li>The Formless</li><li>Gnolls</li><li>Gnomes</li><li>Goblins</li><li>Halflings</li><li>Harpies</li><li>Jinn</li><li>Kobolds</li><li>Liches (undead)</li><li>Lizardfolk</li><li>Merfolk</li><li>Mites (termite folk)</li><li>Naga</li><li>Orcs</li><li>Quericu (tree folk)</li><li>Skeletons (undead)</li></ul>
<p>Want a sample? Take a look at the entry for <a href="https://rexiconjesse.com/2020/05/25/orcs-are-more-than-beefcakes-with-an-axe-one-page-lore-orcs/" rel="nofollow noopener" referrerpolicy="origin">ORCS</a>, <a href="https://rexiconjesse.com/2020/02/03/one-page-lore-lizardfolk-and-full-one-page-lore-kickstarter/" rel="nofollow noopener" referrerpolicy="origin">LIZARDFOLK</a>, <a href="https://rexiconjesse.com/2020/06/08/kobolds-are-more-than-early-game-punching-bags-a-look-at-what-makes-kobolds-unique-and-fun-packed-into-one-page-one-page-lore/" rel="nofollow noopener" referrerpolicy="origin">KOBOLDS</a>, <a href="https://rexiconjesse.com/2020/06/01/endracot-duel-form-fae-realm-critterfolk-all-you-need-to-know-in-one-page-one-page-lore/" rel="nofollow noopener" referrerpolicy="origin">ENDRACOT</a>, and <a href="https://rexiconjesse.com/2020/06/02/more-than-pirates-and-beach-babes-merfolk-everything-you-need-to-know-in-one-page-one-page-lore/" rel="nofollow noopener" referrerpolicy="origin">MERFOLK</a>.<br></p>
<figure><img src="https://img.itch.zone/aW1nLzM3MjQ3MTAuanBn/original/D%2Fmbvy.jpg" loading="lazy"><br></figure>
<p>Want a copy? Just ask (send me an email, tweet, or DM).
</p>
<p>I want to make sure everyone who wants a copy has one while also building a relationship with readers and players. There's always an extra copy waiting just for you. Just ask.
</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/j8vvNqv7rPo" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTgyNjI2LzcyMTU3NDQuanBn/original/vRvC1r.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgyNjI2LzM2MTgyNjUuanBn/original/qAQeMs.jpg]]
<p>Also available <a href="https://store.steampowered.com/app/1342600" rel="nofollow noopener" referrerpolicy="origin">on Steam</a>.</p><p>After years of imprisonment and experimentation in a Sentinel prison, an Oneon shatters its containment pod and begins the long road to escape. Can it evade the sentinels and their minions, and rescue its fellow Oneons along the way?</p>
<p>Oneons is a short, experimental sci-fi broughlike (coffee-break roguelike/roguelite) with 12 floors of tactical combat, dangerous enemies, and useful items. Strategize your limited health and energy as you descend through the increasingly difficult floors. Survive. Die. Fight again.</p>
<figure><img src="https://img.itch.zone/aW1nLzQxOTU5MzQuZ2lm/original/neMPzS.gif" loading="lazy"><br></figure>
<p><img src="https://img.itch.zone/aW1nLzQxOTU5NDUucG5n/original/Q0UuQ6.png" loading="lazy"><br></p>
<ul><li>Navigate through twelve floors filled with unique and dangerous enemies, some with powers of their own.</li><li>Balance careful use of combat, energy, and your unique psionic blast ability to maximize your chances of survival</li><li>Free other Oneons to power up in your quest for freedom</li><li>Discover a story about oppression, faith, and hope</li></ul>
<p><img src="https://img.itch.zone/aW1nLzQxOTU5NDkucG5n/original/CnWDpz.png" loading="lazy"><br></p>
<p>Accessibility matters! Contains several accessibility features, including:</p>
<ul><li>Uses large, high-contrast images and text ideal for low-vision players</li><li>Uses simple, readable font for easy readability</li><li>Entirely playable by keyboard with fully-rebindable keys</li><li>One-hand friendly key bindings setup by default</li><li>Options you can access at any time during the game</li></ul>
<p><img src="https://img.itch.zone/aW1nLzQxOTU5NTAucG5n/original/0vGeHb.png" loading="lazy"><br></p>
<p>If you've never played a roguelike (dungeon crawler) game before, here are some tips and things to know to get the most out of your experience:</p>
<ul><li>To explore, click any square that has adjacent unexplored/black squares, or click on any object.</li><li>Nothing happens until you take a turn. Observe carefully the effects after you move.</li><li>The game is difficult. Expect to die a lot. When you die, you restart from the beginning.</li><li>You can hover your mouse over things to see more information. Look closely at icons and their explanations.</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/HOcfiq_ywOs" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1nLzQxOTU5NjIuZ2lm/original/Bwxzqo.gif]]
<p>Welcome to Oniria - a place where Dreams and Nightmares come to life and make the city their own. In this game you play as a member of the Quixotic Society and are tasked with investigating and containing the Reveries when they start becoming too messy. <br></p>
<p><span></span></p>
<p>Inside this book you will find <br></p>
<p>- 4 new roles (or backgrounds)<br>- intriguing abilities and dreamy items<br>- rules for Reveries (the manifestation of one's psyche)<br>- enigmatic characters who will assist, oppose or entertain you<br>- descriptions of several exciting locations in Oniria<br>- strange incidents to use as adventure hooks or tales from the past <br>- an introductory adventure to discover Oniria and its mysteries<br>- 48 pages filled with colourful and evocative art</p>
<p>Use your ethereal abilities and extraordinary items to discover what motivates the Reveries, decide whether you want to help or stop them and explore the marvelous city of Oniria!</p>
<p class="text-center">---</p>
<p><strong><em>The print version is available from </em><em><br>- Rook's Press: <a href="https://www.rookspress.com/products/onirias-slumber" rel="nofollow noopener" referrerpolicy="origin">https://www.rookspress.com/products/onirias-slumber<br></a></em></strong><strong><em>- IglooTree: <a href="https://iglootree.com/onirias-slumber-461-p.asp" rel="nofollow noopener" referrerpolicy="origin">https://iglootree.com/onirias-slumber-461-p.asp<br></a>- Exalted Funeral: </em></strong><a href="https://www.exaltedfuneral.com/collections/neoteric-codices/products/onirias-slumber-pdf" rel="nofollow noopener" referrerpolicy="origin"><strong><em>https://www.exaltedfuneral.com/collections/neoteric-codices/products/onirias-slu...</em></strong></a><strong><br></strong><em><strong>- Ratti Incantati:</strong></em><strong> <em><a href="https://rattiincantati.com/products/onirias-slumber" rel="nofollow noopener" referrerpolicy="origin">https://rattiincantati.com/products/onirias-slumber</a></em></strong></p>
<p>The character sheet is available in the "Demo" section.</p>
<p>This book is many things at once. It was first thought of as a small setting for Troika!, then it was written into a small hack and now it's a bit of both. You can play it on its own, or use its setting as a sphere for <em>Troika!</em>.<br></p>
<p>A very late submission to the Dreaming Jam.</p>
<p><em>Oniria's Slumber</em> is an independent production by Jean Verne and is not affiliated with the Melsonian Arts Council.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTAxMjg3LzUwODgzOTguanBn/original/1xUmJb.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTAxMjg3LzUwODg0MDAuanBn/original/D7suou.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTAxMjg3LzUwODg0MDEuanBn/original/Ge8gnO.jpg]]
<p><strong>The Regime</strong> never stops, devouring planets and hope since the beginning of times. Once <strong>The Weapon</strong> is complete, resistance won’t exist even in dreams.</p>
<p>You are a spy, undercover behind The Regime’s lines, the only person willing to do what’s necessary. <strong>Operation Swordbreak</strong> - sabotaging The Weapon before it’s ready to destroy all life - is your only chance. That is, if <strong>The Hunters</strong> don’t get you first…</p>
<p>_____________</p>
<p><em><strong>Operation Swordbreak</strong></em> is a solo RPG about paranoia and struggling against an unbeatable, oppressive system. It’s a game about making sacrifices and fighting for hope, even when all hope seems to be lost.</p>
<p>You are likely to die, and unlikely to be remembered.<br>_____________</p>
<p><strong>Content Warning:</strong> Enclosed inside, you will find themes that can relate to murder and assassination, cosmic horror, destruction, tense social interactions, betrayal and monstrosities.</p>
<p>_____________
</p>
<p>This game was created for the “<a href="https://itch.io/jam/wretched-jam">Wretched & Alone Jam</a>” , and was directly inspired by <a href="https://loottheroom.itch.io/wretched">"The Wretched"</a>, by Chris Bissette, and by <a href="https://sealedlibrary.itch.io/wretched-alone-srd">The Wretched & Alone SRD</a>.</p>
<p>It also takes inspiration from Star Wars; Mobile Suit Gundam; Metal Gear Solid; and Cold War espionage thrillers with an added pinch of Cosmic Horror.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjU5ODI4LzM1NDk3MTkucG5n/original/Dqt37X.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU5ODI4LzM1NDk3MjMucG5n/original/accGRK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU5ODI4LzM1NDk3MjYucG5n/original/EOK3mA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU5ODI4LzM1NDk3MjUucG5n/original/i78FWZ.png]]
<p><strong>Development note:</strong><br><strong>The development of Optivox as a full voxel modeler is currently on hold, due to ongoing stress with university, family life, and other issues. However, work is going steadily for the Optivox Exporter - A program used to export your existing vox methods with exceptional optimisations. Keep posted for more details here. <br></strong></p><strong>
</strong><p><strong>(Note that anyone who has directly purchased Optivox before the release will receive a free version of the exporter program.)</strong><br><br></p>
<p>Optivox is a 3D Voxel Editor focused on creating cube-based models for game development. By using advanced optimization methods, it gives your voxel projects more performance for amazing visuals!<br></p>
<p>Whilst also being a standalone voxel editor, Optivox can import previously created .vox models, meaning you can stick with your favourite voxel editors and still benefit from the advanced optimization!</p>
<p><br></p>
<p>Please note, this program is currently in a beta form with some bugs in the program. Due to this, the price is reduced and is due to increase as more features are added.<br></p>
<p class="text-center">Visit <a href="https://optivox.net/" rel="nofollow noopener" referrerpolicy="origin">https://optivox.net/</a> for more information on the program!</p>
<p><strong>Join the Discord for information on development, as well as giving questions and feedback: <a href="https://discord.gg/jzeTa2f" rel="nofollow noopener" referrerpolicy="origin">https://discord.gg/jzeTa2f</a><br></strong><strong>And check out my Twitter for key updates and other stuff I'm working on: <a href="https://twitter.com/nateonus" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/nateonus</a></strong></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjcwNzI2LzYxMzk2MDUucG5n/original/SwxykX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcwNzI2LzYxMzk2MDkucG5n/original/t0V77C.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcwNzI2LzYxMzk2MTAucG5n/original/wX8FnO.png]]
<p>A visual novel where you play as a divorced dad trying to order the perfect pizza.<br></p>
<p>This game is our submission for the 2019 NanoReno Game Jam. It was made in the month of March. </p>
<p>As a divorced dad you learn through exploring the items in your apartment and navigate difficult conversations in order to find the perfect pizza.</p>
<p>Abby, your daughter is meeting Margot your girlfriend for the first time. It's an awkward situation that only the right pizza toppings can solve. </p>
<p>Explore their back stories and make a tough decision and everything will be FINE. No weird shit will happen.</p>
<p>... We swear.</p>
<p><br></p>
<p>Thanks for playing!</p>
<p>All art, music, writing and scripting was done by the Rocket Adrift team, </p>
<p>Lindsay Rollins, Patrick Smith & Titus McNally.</p>
<p>This game was made with Ren'Py.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/1Mz9wubOAPo" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzk3MDA2LzE5NjcyNzUucG5n/original/BmZLA8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk3MDA2LzE5NjcyNzcucG5n/original/GEmrIC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk3MDA2LzE5NjcyNzgucG5n/original/YeHwGA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk3MDA2LzE5NjcyNzkucG5n/original/RpD6N%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk3MDA2LzE5Njc0OTQucG5n/original/A1kNaf.png]]
<p>A visual novel where you play as a divorced dad trying to order the perfect pizza.<br></p>
<p>This game is our submission for the 2019 NanoReno Game Jam. It was made in the month of March. </p>
<p>As a divorced dad you learn through exploring the items in your apartment and navigate difficult conversations in order to find the perfect pizza.</p>
<p>Abby, your daughter is meeting Margot your girlfriend for the first time. It's an awkward situation that only the right pizza toppings can solve. </p>
<p>Explore their back stories and make a tough decision and everything will be FINE. No weird shit will happen.</p>
<p>... We swear.</p>
<p><br></p>
<p>Thanks for playing!</p>
<p>All art, music, writing and scripting was done by the Rocket Adrift team, </p>
<p>Lindsay Rollins, Patrick Smith & Titus McNally.</p>
<p>This game was made with Ren'Py.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/1Mz9wubOAPo" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzk3MDA2LzE5NjcyNzUucG5n/original/BmZLA8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk3MDA2LzE5NjcyNzcucG5n/original/GEmrIC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk3MDA2LzE5NjcyNzgucG5n/original/YeHwGA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk3MDA2LzE5NjcyNzkucG5n/original/RpD6N%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk3MDA2LzE5Njc0OTQucG5n/original/A1kNaf.png]]
<$list filter="[is[current]has:field[url]]">
''Original Url'': {{!!url}}
</$list>
<p>Big Brother has arrived - and it’s you. Investigate the lives of citizens to find those responsible for a series of terror attacks. Information from the internet, personal communications and private files are all accessible to you. But, be warned, the information you supply will have consequences…</p>
<p>Orwell is a new governmental security program that has the power to survey the online presence of every person in The Nation. It can monitor all personal communications and access any computer. To preserve the privacy of citizens, human researchers examine the data Orwell finds and decide which pieces of information should be passed on to the security forces, and which should be rejected.<br><br>Selected from thousands of candidates, you are Orwell’s first human researcher. And when a terror attack rocks the Nation’s capital city of Bonton, Orwell, and you, are immediately put to the test. Starting with a single person of interest, you'll help the security forces build out and profile a network of potential culprits.<br><br>But are these people really terrorists? What does the information you reveal to Orwell say about them? What if you find out things about them that not even their loved ones know? What is the real price of maintaining the security that the Nation is yearning for?</p>
<h2>Key Features</h2>
<p><strong>Investigate the digital lives of citizens. </strong><br>Search web pages, scour through social media posts, dating site profiles, news articles and blogs to find those responsible for a series of terror attacks.<br><br><strong>Invade the private lives of suspects. </strong><br>Listen in on chat communications, read personal emails, hack PCs, pull medical files, make connections. Find the information you need to know.<br><br><strong>Determine the relevance of information. </strong><br>Only the information you provide will be seen by the security forces and acted upon. You decide what gets seen and what does not, influencing how the suspects will be perceived.<br><br><strong>Secure the freedom of the Nation. </strong><br>Find the terrorists so the citizens of the Nation can sleep safe, knowing Orwell is watching over them.<br></p>
<h2>Praise for Orwell:</h2>
<p>“Grabs the problem of how we balance our own liberty and our safety and turns it into a thrilling adventure.” – <strong>Polygon</strong> </p>
<p>“In an age where so much personal information is willingly released by so many, Orwell brilliantly explores the implications of this data being misinterpreted.” – <strong>GameSpot</strong> </p>
<p>"A harrowing look into a reality where Big Brother is always watching" - <strong>Rock Paper Shotgun</strong></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/i8jUWeqlTMU" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjI4MzAxLzEwODAzMDkuanBn/original/o997gi.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4MzAxLzEwODAzMTAuanBn/original/BbjSsm.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4MzAxLzEwODAzMTIuanBn/original/kYnrBp.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4MzAxLzEwODAzMTEuanBn/original/OGcBfs.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4MzAxLzEwODAzMTMuanBn/original/hmgHK2.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4MzAxLzEwODAzMDcuanBn/original/1am22f.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4MzAxLzEwODAzMTQuanBn/original/sBK5L4.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI4MzAxLzEwODAzMDguanBn/original/CAKN84.jpg]]
<p>by <a href="http://futureproofgames.com" rel="nofollow noopener" referrerpolicy="origin">Future Proof Games</a></p>
<p>The last thing you remember is receiving an unsatisfying answer. A plunge through the fundamental chaos takes you to a place of bones. Great power can be found within the Ossuary, but those who are not lying to themselves are lying to you.</p>
<p>Ossuary is a dark, funny, puzzling game about talking to people and corrupting them with sins that are really virtues. It's a stark, unsettling satire where you cure cabbages of being people and expose the terrible lies that we tell ourselves so we don't have to change. It's inspired by Discordianism, a postmodern nonsense religion.</p>
<p>The prequel demo, The Hodge-Podge Transformer, can be downloaded for free and consists of story, dialogue, and puzzles that don't appear in the full game.</p>
<p>Ossuary was designed by Gregory Avery-Weir, creator of "<a href="http://futureproofgames.com/games/majesty" rel="nofollow noopener" referrerpolicy="origin">(I Fell in Love With) The Majesty of Colors</a>," "<a href="http://futureproofgames.com/games/dragon" rel="nofollow noopener" referrerpolicy="origin">How to Raise a Dragon</a>," and "<a href="http://ludusnovus.net/my-games/looming/" rel="nofollow noopener" referrerpolicy="origin">Looming</a>."</p>
<p><strong>Note: MacOS support for this title will end beginning in 2022. For more information, see <a href="https://futureproofgames.com/blog/2021/08/17/mac-support-ending-2022/" rel="nofollow noopener" referrerpolicy="origin">our blog post and FAQ</a>.</strong><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/pFg5ytdgkPw" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTY0NzYvNTkzNTkucG5n/original/0SvqjJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY0NzYvNTkzNjAucG5n/original/aA3uwz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY0NzYvNTkzNjEucG5n/original/ze3p0W.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY0NzYvNTkzNjIucG5n/original/YAcIk%2F.png]]
<p>This is the mini score I made for the OST Composing Jam 2021.</p>
<p>The Theme was: A Journey To Remember</p>
<p><br></p>
<p>Find the album on Bandcamp: <a href="https://laiosgoldbeck.bandcamp.com/" rel="nofollow noopener" referrerpolicy="origin">https://laiosgoldbeck.bandcamp.com/</a></p>
<p>Or Spotify: <a href="https://open.spotify.com/artist/2I8oZO51lRwFHjSkaH7Khl" rel="nofollow noopener" referrerpolicy="origin">https://open.spotify.com/artist/2I8oZO51lRwFHjSkaH7Khl</a></p>
<p>Enjoy!</p>
<p><br></p>
<p>Links: <a href="https://soundcloud.com/lagoofficial/sets/ost-composing-jam-2021" rel="nofollow noopener" referrerpolicy="origin">https://soundcloud.com/lagoofficial/sets/ost-composing-jam-2021</a></p>
<p><br></p>
<p>Follow on social media: https://linktr.ee/laiosgold</p>
[img width=500 [https://img.itch.zone/aW1nLzc3OTg4MDkuanBn/original/R%2FIORS.jpg]]
<p><em>Others</em> is a one player game for exploring the world of those we see as different than ourselves. The game encourages us to look at people we see as different from us and ask questions about them. This one player experience will not ask us to directly engage with the Others, only to look at them.</p>
<p>Based on research and studies on how we perceive others, and how we value people like ourselves, <em>Others</em> is a series of exercises designed to help us humanize each other. It is a simple, accessible exercise. <br><br>CW: Othering</p>
[img width=500 [https://img.itch.zone/aW1nLzMwNDMzNDMucG5n/original/AwjUuX.png]]
<p>Our Innermost Thoughts is a small collection of five RPGs played mostly solitaire. They are experiences about how to find your passion and your voice despite the flaws you have, about how to reconcile the fact that humankind's reign on earth has brought destruction to nature, about how communicating with others who do not look or talk like you is difficult, about observing others intentionally can begin the process of self-reflecting on our means of wrongful judgments of others, and about the beauty of finding joy in the lives and stories of others. These experiences ask a lot of questions, forcing you to reflect on who you are, your background, your status, and possibly even some aspects that have been hidden up to now.</p><p><u><strong><a href="https://www.presspot.games/store/p/our-innermost-thoughts" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Go here to purchase a physical copy</a>.</strong></u></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzA0NDc0LzM4OTI4NTAuanBn/original/S7cQK4.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA0NDc0LzYxODM5MzMucG5n/original/PeKlkQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA0NDc0LzYxODM5MzIucG5n/original/%2F3mme3.png]]
<p>Un gioco di ruolo sulla tragedia della guerra come invasione della propria terra.</p>
[img width=500 [https://img.itch.zone/aW1nLzU5NjEzNDQuanBn/original/yNvAv4.jpg]]
<p>You and a group of 2-5 friends create the story of a sailor trying to find their way back home through a string of islands controlled by a pantheon of powerful and petty gods.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTc4MDQ2LzU1NTY0NDcuanBn/original/6D%2FJxg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc4MDQ2LzU1NTY0MzYuanBn/original/cDX7pE.jpg]]
<p>You and a group of 2-5 friends create the story of a sailor trying to find their way back home through a string of islands controlled by a pantheon of powerful and petty gods.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTc4MDQ2LzU1NTY0NDcuanBn/original/6D%2FJxg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc4MDQ2LzU1NTY0MzYuanBn/original/cDX7pE.jpg]]
<p><strong>Love my work? </strong>Be sure to comment and follow me for more of my works!<br></p><p>Awards: AGS Pick of the Month [July 2015], Featured on GameJolt</p>
<p>The lands of Fyra are a harsh, cold, and unforgiving wasteland; traits the people that inhabit it have inherited. When their children reach maturity, some are sent to guard the land's borders - told never to return without either a trespasser or completing a Journey delivered by the Gods. In exchange, their families are guaranteed food and shelter in the harsh lands for as long as their children man the wall; in the end, many die on the border - waiting for intruders who do not come or Gods who will not speak with them.</p>
<p>Iyu is one of those who was fated to guard the border. He has survived 30 withering years in the biting cold and, now an adult, is plagued with visions of death and dying alone. His resolve is tested as the Gods finally deliver him the means to take the first step on his journey - a meeting with the Goddess of Death. It seems that in order to go home alive, first he must die trying.</p>
<p>Ouroboros: The Sacrifice is a short-length (40-80 minute) first-person horror-themed adventure game. Includes professional voice-acting, hand-drawn backgrounds and characters, and an atmospheric soundtrack.</p>
<p style="text-align: center"><em>Questions? Comments?</em></p>
<p style="text-align: center">Feel free to hit me up on twitter @FirgofUmbra or if you need immediate support or would like to provide direct [long-form] feedback e-mail me at: firgof [dot] umbra [at] gmail [dot] com</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjc3ODcvMTEzODIwLnBuZw==/original/I%2FZuoB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjc3ODcvMTEzODIxLnBuZw==/original/%2B9SJ%2Fa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjc3ODcvMTEzODIyLnBuZw==/original/lGTSO%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjc3ODcvMTEzODIzLnBuZw==/original/4ypHDR.png]]
<p style="width:350px; font-size:24px">Homepage</p>
<p style="width:350px"><a href="http://www.out-for-delivery.com" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">out-for-delivery.com</a></p>
<p style="width:350px">Out For Delivery is a slice-of-life 360° interactive documentary. It follows a food delivery courier in Beijing on January 23, 2020, the day before Lunar New Year's Eve, and the day Wuhan shut down due to COVID-19.</p>
<p style="width:350px; font-size:24px">Credits</p>
<p style="width:350px">Directed, produced & programmed by Yuxin Gao, music & sound design by Lillyan Ling, art & UI by Gus Boehling, additional programming by John Bruneau.</p>
<p style="width:350px; font-size:24px">Installation</p>
<p style="width:350px"> When launching the game for the very first time, follow these steps to bypass the standard operating system security checks:</p>
<p style="width:350px">● For <strong>Windows</strong> users: After double clicking the app icon, a warning will pop up. Expand “more
info” and then click “run anyway.”</p>
<p style="width:350px">● For <strong>Mac</strong> users: Right click the game to Open. Due to MacOS security scanning, the game may take up to <strong>two minutes</strong> to load. This only happens when it is launched for the very first time.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjQ5OTMwLzUyMDA4MjkucG5n/original/5wr7sL.png]]
<p class="text-justify"><strong>Over My Dead Body</strong> is a local multiplayer game where your goal is to be the first to die. Heal the others! Damage yourself! Kick the bucket!</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ4NTIzMTQuZ2lm/original/VNyK2X.gif" width="250" loading="lazy"><br></p>
<hr>
<p class="text-justify">Goofy <strong>characters</strong>, fun <strong>stages </strong>and an overall colorful and<strong> cartoonish style</strong> come together to make up a fast-paced gameplay to share with friends.</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ4NDYzMDYucG5n/original/jmpbYa.png" loading="lazy"><br></p>
<hr>
<p class="text-justify">Use the <strong>power-ups</strong> to lose health, heal your opponents or stun them. The first to reach 0 points wins.</p>
<p><img src="https://img.itch.zone/aW1nLzQ4NTE4NzQuZ2lm/original/s38gd6.gif" width="250" loading="lazy"> <img src="https://img.itch.zone/aW1nLzQ4NTE4ODEuZ2lm/original/BcCoO%2B.gif" width="250" loading="lazy"><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ4NTE4ODcuZ2lm/original/L0UToe.gif" width="250" loading="lazy"><img src="https://img.itch.zone/aW1nLzQ4NTE4OTcuZ2lm/original/nZrspx.gif" width="250" loading="lazy"><br></p>
<hr>
<p><strong>Dash</strong> around the stage and <strong>push</strong> your opponents to take away their power-ups... or simply because it’s fun, who are we kidding.</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ4NTE5NDAuZ2lm/original/kBkLGp.gif" width="250" loading="lazy"><img src="https://img.itch.zone/aW1nLzQ4NTE5NDcuZ2lm/original/0mgsmP.gif" width="250" loading="lazy"><br></p>
<hr>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ4NDY2ODUucG5n/original/%2FJmnVZ.png" loading="lazy"><br></p>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/VXq03w2Vggs" allowfullscreen="" frameborder="0"></iframe></div>
<hr>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ4NDY2ODcucG5n/original/H6A%2FQ%2B.png" loading="lazy"><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ4NDYzMjUucG5n/original/39QGwX.png" loading="lazy"><br></p>
<hr>
<figure><img src="https://img.itch.zone/aW1nLzQ4NDY2ODkucG5n/original/7FuMAF.png" loading="lazy"><br><strong></strong></figure>
<p><strong>💀 Does Over My Dead Body support online play?</strong><br>It does not, but it can be played online using a program called <a href="https://parsec.app/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Parsec</a>.<br><strong>💀 How does Parsec work?</strong><br>Parsec is a software that allows a user to run a game locally and stream it so other people can play remotely. It is designed and optimized for gaming and free to use. You can learn more in <a href="https://parsec.app/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">their official website</a>.<br><strong>💀 Is the game going to receive updates in the future?</strong><br>It depends on the reception of the game. We will consider developing additional content if we see people are interested.</p>
<p>More questions? Don’t doubt to get in contact!</p>
<p></p>
<hr>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ4NDY2OTAucG5n/original/ulv%2FXJ.png" loading="lazy"><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzUwNDg0NzgucG5n/original/3jdmvt.png" loading="lazy"><br></p>
<p class="text-justify"><strong>Ragdoll Rain</strong> is a small indie studio from Madrid, Spain. Created with the goal of learning, working as a team and turning our passion for video game development into reality, Ragdoll Rain isn’t but a group of friends who like to meet weekly at the bar and debate about nerdy stuff.</p>
<p class="text-justify">If you want to know more about us, check out <a href="https://ragdoll-rain.itch.io/"><strong>our web profile</strong></a>!</p>
<p class="text-center">
<a href="mailto:ragdollraincontact@gmail.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzQ4NTIwNTEucG5n/original/ospoSX.png" alt="email" title="email" width="50" loading="lazy"></a> <a href="https://twitter.com/Ragdoll_Rain" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzQ4NTIwNjQucG5n/original/HzPYzr.png" alt="Twitter" title="Twitter" width="50" loading="lazy"></a> <a href="https://www.youtube.com/channel/UCKZ4WaxMXJkNEtZfpoemeUg" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzQ4NTIwNzAucG5n/original/3bctub.png" alt="YouTube" title="YouTube" width="50" loading="lazy"></a></p>
<hr>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ4NDY2OTYucG5n/original/P4JQAd.png" loading="lazy"><br></p>
<p class="text-justify">If you have any suggestions to improve <strong>Over My Dead Body</strong>, or want to share your overall opinion on the game, we’d be pleased to hear it. Fill in the form below!</p>
<p class="text-center"><strong><a href="https://forms.gle/4hJoHwGtsfccQMJU9" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Survey link</a></strong></p>
<hr>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ4NDY3MDEucG5n/original/vU8MuZ.png" loading="lazy"><br></p>
<p class="text-justify">We want to thank our friends for their support and the hours spent helping us test the game, and the <a href="https://github.com/agens-no/PolyglotUnity" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><strong>Polyglot Project</strong></a> for providing such an amazing translation tool.</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ4NDYzMzIucG5n/original/FM%2BX%2Fq.png" loading="lazy"><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/VXq03w2Vggs" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODU0MjYxLzQ4NDYxODIucG5n/original/P1q5vc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODU0MjYxLzQ4NDYxNzkucG5n/original/yu8okf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODU0MjYxLzQ4NDYxODEucG5n/original/jwqzAG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODU0MjYxLzQ4NDYxODUucG5n/original/eSieeO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODU0MjYxLzQ4NDYxODQucG5n/original/GVS8js.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODU0MjYxLzQ4NDYxODMucG5n/original/qp2ZiL.png]]
<p>In August of 2014, a demo innocently appeared on the PlayStation Store. It had a spooky old tombstone with <em>P.T.</em> painted on it, sitting silently in a wooded area. Playing this demo would take players to a rather ordinary hallway, one that would lead to one of the most terrifying horror games ever made.</p>
<p>And now you can't get it any more.</p>
<p>Even just as a short demo, <em>P.T. </em>created a powerful atmosphere of terror, dragging the player into its ordinary environments and steadily filling them with dread. Through its steady erosion of reality, striking visuals, cryptic completion criteria, and the chilling ghost, Lisa, it creates a fear that can sicken in its intensity, leaving players begging for the ghost to just appear and end it all.</p>
<p>It was to show what Hideo Kojima, the man behind <em>Metal Gear</em>, could do with horror and the <em>Silent Hill</em> series. It was to set a new bar for horror. Then, not even a year later, it was gone, pulled from the store for nebulous reasons as relations between its creator and Konami broke down.</p>
<p><em></em><em>P.T.: A Video Game Ghost Story</em> is an unofficial investigation into the strange history behind this lost horror game, how players came to solve its complex puzzles, and what makes it so effective at scaring its players. Featuring interviews with the first player to complete it, the Let's Players who broke its mysteries, <em>P.T.</em> speedrunners, video game historians, and Konami staff, it looks to shine a light on what made the experience so compelling, why we subject ourselves to these horrors, and what will happen as this fearful experience fades from memory to become its own real-world ghost story.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjU0MjgwLzEyMTc3OTMucG5n/original/0Br6HE.png]]
<p>It is an side-scroller game contains some mini games based on mindfulness technique to relieve stress.</p>
<p>I've collaborated on this project as a game developer and game designer.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/COTmhkIgURE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1nLzU2OTYwMDAucG5n/original/7knPjo.png]]
<p>A coloring book you can walk around!</p>
<p>Explore the sea side town of Paint, and color in the entire world. Paint on building, birds and bee's... along with everything else.</p>
<p>Paint Game is exactly what it says on the tin, an Interactive Coloring Book for all ages and abilities!<br><br>Save your maps and share them online, and take pictures to share with your friends! Show the world your beautiful town!</p>
<p><strong>Featuring:</strong></p>
<p>Music by Maize Wallin! <br>Find out more about Maize @ their <a href="https://www.maizewallin.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">website</a> or <a href="https://twitter.com/MaizeWallin" target="_blank" rel="nofollow noopener" referrerpolicy="origin">twitter</a> and you can also support <a href="http://patreon.com/maizewallin" title="http://patreon.com/maizewallin" target="_blank" dir="ltr" class="" rel="nofollow noopener" referrerpolicy="origin">their patreon<br></a></p>
<p>Full intergrated map sharing services</p>
<p>1 town, with an accompanying sea (may contain tree's)</p>
<p>2 control methods; <em>keyboard and mouse</em> or <em>mouse only</em></p>
<p>Configurable keyboard controls<br></p>
<p>Togglable corsshair</p>
<p>Advice from the towns folk about how you colour their town</p>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/r_Bf7zimv_s" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDM1MTQ1LzIzMDk1MjAucG5n/original/uMvsPb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDM1MTQ1LzI0MTU4NjEucG5n/original/o%2BnY93.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDM1MTQ1LzI0MTU4NjIucG5n/original/bSwhG1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDM1MTQ1LzIzMDk1MjIucG5n/original/f4EMst.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDM1MTQ1LzIzMDk1MjUuanBn/original/4tXmzu.jpg]]
<p>When you pay for this file, you will get the following download:</p>
<p>A 3840 x 2180 px PNG format image without watermark. </p>
<p>A 1920x1080 px PNG format image without watermark.</p>
<p>This image does not loop/repeat. </p>
<p><br></p>
<p><a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</a><br></p>
<p></p>
[img width=500 [https://img.itch.zone/aW1nLzU5MDQ2MTYucG5n/original/CIpiKz.png]]
<p class="text-center"><em></em></p>
<p>
</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ2OTg3NTIuanBn/original/3lNctr.jpg" loading="lazy"><br></p>
<p class="text-center">In this Gothic story of deep bonds and chilling mystery, <strong>a young girl named</strong> <strong>Esther </strong>ventures deep within a forgotten forest.</p>
<p class="text-center">There, she seeks out a potential cure for her mysterious illness:<br>a life-leeching plague known as <strong><em>the Pale Cachexia.</em></strong></p>
<p class="text-center">But when Esther meets <strong>Seina</strong>, who lives all alone in a towering manor, the two girls are drawn to each other in a tale of friendship, sorrow, and bitter loneliness. <br><br>Their story is shadowed by the dark secrets of the manor and its <strong>cemetery</strong>, which haunts Esther even in her deepest dreams.</p>
<p class="text-center"><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ2OTg3NTMuanBn/original/h0x3Fl.jpg" loading="lazy"><br></p>
<p class="text-center"><strong>Genres:</strong> Visual novel, Gothic fantasy, drama, horror<br><strong>Rating: </strong>PG-13 (language/mild horror)<br><strong>Story Type:</strong> Kinetic (no choices)<br><strong>Length:</strong> 49k words<br></p>
<p class="text-center"><strong>Accessibility Features:</strong> Sound/Music <strong>closed captions,</strong> <br><strong>OpenDyslexic</strong> font option, disable bright flashes option<br></p>
<p class="text-center"><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ2OTg3NTQuanBn/original/6OfizV.jpg" style="max-width: 100%; font-size: 14px; background-color: rgb(17, 17, 17)" loading="lazy"><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzU2NzE5NjQuanBn/original/bNH8Ay.jpg" loading="lazy"><br></p>
<p class="text-center"><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzU2NzE5NjUuanBn/original/6OG8ih.jpg" loading="lazy"><br></p>
<p class="text-center"><br></p>
<p><img src="https://img.itch.zone/aW1nLzQ3NjI5MDUuanBn/original/O1cWKF.jpg" loading="lazy"><br></p>
<p><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ2OTg3NTUuanBn/original/Qmt5y6.jpg" style="max-width: 100%; font-size: 14px; background-color: rgb(17, 17, 17)" loading="lazy"><br></p>
<p class="text-center"><strong>Writing/Design/Programming:</strong> Dovah<br><strong>Management/Programming:</strong> Gamma<br><strong>Sprite Art:</strong> <a href="https://twitter.com/nicnicco" target="_blank" rel="nofollow noopener" referrerpolicy="origin">NicCo</a><br><strong>CG Art/Key Visual: </strong><a href="https://www.deviantart.com/numiren" target="_blank" rel="nofollow noopener" referrerpolicy="origin">NumiRen</a><br><strong>Background Art: </strong><a href="https://www.deviantart.com/malthuswolf" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Malthus Wolf</a><br><strong>Music:</strong> <a href="http://superrray.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Ray Kim</a>, <a href="https://soundcloud.com/murcielo" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Murcielo</a>, <a href="https://linktr.ee/Scarlessarms" target="_blank" rel="nofollow noopener" referrerpolicy="origin">scarless arms</a></p>
<p class="text-center"><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ2OTg3NzQucG5n/original/ccc%2B%2B6.png" loading="lazy"><br></p>
<p class="text-center"><strong><u>Join our community/follow us on:</u></strong><br></p>
<p class="text-center"><a href="https://discord.com/invite/p3pM8rj" target="_blank" rel="nofollow noopener" referrerpolicy="origin">AG Discord</a> | <a href="https://twitter.com/argent_games" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Twitter</a> | <a href="https://blog.argentgames.co/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Dev Blog</a> | <a href="https://www.twitch.tv/argent_games" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Dev Stream</a></p>
<p class="text-center"><span style="color: inherit; font-size: inherit"></span><br></p>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/E4r75b3oXkM" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjAyNjI0LzQ3NTg4NjQucG5n/original/guo15u.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAyNjI0LzU2NDE4ODIucG5n/original/UnCmtB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAyNjI0LzU2NDE4NzkucG5n/original/rA0LpP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAyNjI0LzU2NDE4ODAucG5n/original/TZyRO3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAyNjI0LzU2NDE4ODEucG5n/original/O4HzB5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAyNjI0LzU2NDE4ODMucG5n/original/45JTRb.png]]
<h5>Confirmed to support Blender 2.83 - 2.92</h5><h4>See full instructions in <a href="https://dietinghippo.itch.io/palette-studio/devlog/224145/readmetxt">Readme.txt</a>.</h4>
<p> Palette Studio is a Blender Add-On that simplifies creation of game sprites made from 3D renders. It has palette selection with the option to select individual colors, a 1/8/16-angle camera rig, rotating lighting, and the ability to toggle the render alpha channel on and off.</p>
<p> This Add-On provides a streamlined method of generating sprites for games with limited palettes and multiple render angles such as DOOM. However, any palette file may be selected - providing infinite options for your indexed color creations!</p>
<p><strong>Example Output:</strong></p>
<p><img src="https://img.itch.zone/aW1nLzUyMzA4NjAuZ2lm/original/aZnGm8.gif" loading="lazy"><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/v7nYdrBVxFs" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTI1MDMzLzUyMzA5NDYucG5n/original/f7bjEX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI1MDMzLzUyMzMxNzUuZ2lm/original/bxZZ%2FP.gif]]
<p><img src="https://img.itch.zone/aW1nLzQ5MzQ5NzQucG5n/original/qsEtut.png" loading="lazy"></p>
<p><strong>Paper Boats</strong> is a small, experimental game about sharing and contemplating. There's not much to do, no enemies to kill or puzzles to solve. You can just look around, interact with the things around you and take screenshots.<br></p>
<p>Every once in a while, though, a paper boat will come sailing and stop in front of your dock, carrying a message for you, written by a stranger. Maybe it's a kind word of encouragement, or somebody emptying their worries into the void.</p>
<p>Good thing is that you can also send a message in your own paper boat, and let it sail for a stranger to read.</p>
<p>When you need a small break from reality, you can just hang around on the dock, watch the day go by and read messages from strangers.</p>
<p>The concept for the game is nothing new; you can find another examples of the mechanic in <a href="https://awkwardsilencegames.itch.io/thethingswelostintheflood" target="_blank">The Things We Lost In The Flood</a> and in <a href="https://store.steampowered.com/app/1070710/Kind_Words_lo_fi_chill_beats_to_write_to/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Kind Words (lo fi chill beats to write to)</a>, which greatly expands and improves upon the concept. <strong>Paper Boats </strong>is just my own, simple take on the genre and an excuse for me to release something interactive, albeit small.</p>
<p>I hope you enjoy it.</p>
<p><strong>NOTE:</strong> In order to be as inclusive as possible, please try to write messages in English. Even if your English isn't that good, people won't judge =]<br></p>
<p><img src="https://img.itch.zone/aW1nLzQ5MzUwNzMucG5n/original/wJtb%2Fb.png" loading="lazy"><br></p>
<p><img src="https://img.itch.zone/aW1nLzQ5MzUwODYucG5n/original/Dc340E.png" loading="lazy"> Looking around in a serene lake environment.</p>
<p><img src="https://img.itch.zone/aW1nLzQ5MzUwODYucG5n/original/Dc340E.png" loading="lazy"> Capturing high-resolution screenshots.</p>
<p><img src="https://img.itch.zone/aW1nLzQ5MzUwODYucG5n/original/Dc340E.png" loading="lazy"> Receiving anonymous messages from strangers.<br></p>
<figure><img src="https://img.itch.zone/aW1nLzQ5MzUwODYucG5n/original/Dc340E.png" loading="lazy"> Sending anonymous messages to strangers.<br></figure>
<figure><img src="https://img.itch.zone/aW1nLzQ5MzUyMjUucG5n/original/k3mOq0.png" style="color: inherit; font-size: inherit" loading="lazy"><span></span></figure>
<p> <img src="https://img.itch.zone/aW1nLzQ5MzUwODYucG5n/original/Dc340E.png" loading="lazy"> <strong>Mouse </strong>to look around.</p>
<p><img src="https://img.itch.zone/aW1nLzQ5MzUwODYucG5n/original/Dc340E.png" loading="lazy"> <strong>Left click</strong> to interact.</p>
<p><img src="https://img.itch.zone/aW1nLzQ5MzUwODYucG5n/original/Dc340E.png" loading="lazy"> <strong>Right click</strong> to zoom in.<br></p>
<p><img src="https://img.itch.zone/aW1nLzQ5MzUwODYucG5n/original/Dc340E.png" loading="lazy"> <strong>P</strong> to take a screenshot.<br></p>
<p>You can view your screenshots through the options menu.</p>
<p><strong><br></strong></p>
<p><strong>DISCLAIMER</strong>
</p>
<p>I don't possess a way to thoroughly playtest the Mac and Linux builds so I can't promise they'll be working perfectly.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODc2OTcwLzQ5MzkxMjYucG5n/original/f0o%2Fvu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc2OTcwLzQ5MzUyMTUucG5n/original/%2FgGkAb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc2OTcwLzQ5MzkxMjUucG5n/original/JSpxm1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODc2OTcwLzQ5MzUyMTQucG5n/original/WV5mGk.png]]
<p class="text-center"><strong>ParaMonsters is an adventure/visual novel about tiny monsters investigating a paranormal rumor at an escape room in town.</strong></p>
<p><img src="https://img.itch.zone/aW1nLzQ1ODc0MTcucG5n/original/yGB8qW.png" loading="lazy"></p>
<p>In the quaint, little town of Monsberg, the Paranormal Club is getting ready to kick off their annual club sleepover on All Hallows' Eve. Upon discussing how to spend their evening, the rumor of a haunted escape room piques their interest. They decide there's no better way to celebrate this special event than to check out a potential paranormal event! Is this rumor just that or is it the real deal?<br><br></p>
<p>You play as the president of the Paranormal Club, Faye, as she takes the lead on looking into the mystery behind the eerie escape room.</p>
<p><img src="https://img.itch.zone/aW1nLzQ2NjY4MjYucG5n/original/9LWbCW.png" loading="lazy"><br></p>
<ul><li>Created for the <a href="https://twitter.com/locallysrcdmi" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Locally Sourced</a> Fall Bundle!</li><li>Meet an adorable cast of little monsters!</li><li>Feast your eyes upon colorful, simplistic environments and a neat art style!</li><li>Take on a handful of crafty puzzles!</li><li>Experience a title that can be finished in an evening! (~30 mins to 1hr)</li><li>Available on Windows! <em>(Mac build coming very soon)</em></li></ul>
<p><img src="https://img.itch.zone/aW1nLzQ2NjY4MjkucG5n/original/sdDlmS.png" loading="lazy"><br></p>
<ul><li><strong>Mouse </strong>- Move Cursor</li><li><strong>Left Mouse Button</strong> - Interact/Advance Text</li><li><strong>Tab</strong> - Open/Close Inventory</li><li><strong>Escape</strong> - Pause Game</li></ul>
<p><img src="https://img.itch.zone/aW1nLzQ2NjY4MzMucG5n/original/timEb5.png" loading="lazy"><br></p>
<ul><li>Code, Story & Music (Some): <ul><li>Jay Wilson (<a href="https://twitter.com/ihzzay" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@jaysonthemoon</a>)</li></ul></li><li>Art, Voice & Add'l Story: <ul><li>Allison M. (<a href="https://twitter.com/amcintoart" target="_blank" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">@amcintoart</a>)</li></ul></li></ul>
<p><img src="https://img.itch.zone/aW1nLzQ2NjY4OTgucG5n/original/oej5bS.png" loading="lazy"><br></p>
<p><em>This game had a very short development time (~5 weeks) so there's bound to be some bugs. I apologize in advance. If you encounter any, please report them so that they can be fixed in later patches. </em><em>Thank you for your support and stay safe!</em></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODE1Mzk1LzQ2NjQzOTAucG5n/original/cDD%2BcY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODE1Mzk1LzQ2NjcwNDkucG5n/original/IsAmbu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODE1Mzk1LzQ2NjcwNjUucG5n/original/d2HMst.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODE1Mzk1LzQ2NjcwMzUucG5n/original/px7KnY.png]]
<p><br></p>
<figure><img src="https://img.itch.zone/aW1nLzI4NDY2MTQuZ2lm/original/nIDfyF.gif" style="color: inherit; font-size: inherit" loading="lazy"><br></figure>
<p><strong><em>"It's a long walk home..."</em></strong></p>
<p>After finishing her bar tending shift at 3am, Erica Yu encounters a strange man who claims to know her. Before things escalate, the man suddenly disappears. Terrified, Erica reluctantly decides to make her way home... but little does she know, the nightmare has only just begun.</p>
<p>PARANOIHELL is a pixel horror game that takes inspiration from the gameplay of PSX-style survival horror games. Use weapons to defend yourself from enemies, set traps, or hide. But don't be reckless, your resources are limited. Thorough exploration and careful item management will be key to survival.</p>
<h2 class="text-center">- Press -</h2>
<blockquote><strong>"[...] through unsettling art and clever sound design, Paranoihell delivers both a spine-tingling world and pulse-quickening jump scares."</strong></blockquote>
<p><em>- Andrew King, </em><em><a href="https://bloody-disgusting.com/reviews/3609446/review-paranoihell-creepily-effective-retro-survival-horror-game/" rel="nofollow noopener" referrerpolicy="origin">Bloody Disgusting</a></em></p>
<blockquote><strong>"PARANOIHELL may give it a supernatural slant, but it captures that awful fear that curls up within us when we find ourselves all alone on that long walk home."</strong></blockquote>
<p><em>- Joel Couture, </em><em><a href="https://indiegamesplus.com/2019/09/paranoihell-takes-you-on-a-chilling-walk-home" rel="nofollow noopener" referrerpolicy="origin">IndieGamesPlus</a></em></p>
<h2 class="text-center">- Content Warning -</h2>
<p>Blood, gore, and strong language</p>
<p>Themes of stalking, and police violence</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzI4NDY2MTYuZ2lm/original/HfSX4i.gif" loading="lazy"><br></p>
<ul><li>Explore a surreal, dying city</li><li>Pixel art style that uses modern lighting techniques</li><li>Light RPG elements</li><li>Satisfying melee-combat</li><li>Estimated play time: 1 - 3 hours</li><li>Multiple endings</li><li>Multiple difficulty settings</li><li>Controller Support</li></ul>
<figure><img src="https://img.itch.zone/aW1nLzI4NDY2MzQuZ2lm/original/eydxeT.gif" loading="lazy"><span></span><br></figure>
<p>Thanks for playing <3<br></p>
<p>-lum</p>
<p><br></p>
<p><strong>**********************************************************************************</strong></p>
<h3><strong>Warning:</strong> currently no support for Mac OSX Catalina on itch.io </h3>
<p>The game will run fine via Steam however. If you are running Catalina and want to play the game, I recommend buying it on Steam: </p>
<p><a href="https://store.steampowered.com/app/1160440/PARANOIHELL/" rel="nofollow noopener" referrerpolicy="origin">https://store.steampowered.com/app/1160440/PARANOIHELL/</a></p>
<p>If you've purchased the game before July 17th, 2020 you will be able to redeem a Steam key. </p>
<p>If you are having trouble related to Mac OSX Catalina, send me an e-mail (with a receipt or invoice for the game) at: gamesbylum@gmail.com</p>
<p>**********************************************************************************</p>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/H644vDdnnB8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTQ0MTAyLzI4NDY2MDMuZ2lm/original/6SCzZt.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ0MTAyLzI4NDY2MDguZ2lm/original/U%2F7Uks.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ0MTAyLzI4NDY2MDEucG5n/original/6gvSsY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ0MTAyLzI4NDY2MDUucG5n/original/bFRfzJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ0MTAyLzI4NzMwODkuanBn/original/fKpVGd.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ0MTAyLzI4NzMwODYuanBn/original/1u%2FxPM.jpg]]
<p>Languages: English, Español (Latino), Français (France)<br></p>
<p>---</p>
<p>Your name is <strong>Mr. Rabbit. </strong>You're
the proud owner of a little flower shop started with the help of your
mentor, <strong>Ruffle</strong>,
and you're ready to spread the magic of flowers to everyone! The thing is, you've just made a very big sale, and now you're almost out of everything you use to actually sell flowers, like ribbon, floral
tape, and... flowers.</p>
<p>
That's okay, though! That's what delivery is for, and also what hoping-the-folks-who-walk-in-don't-know-enough-about-flowers-to-notice-you-don't-really-have-much-to-offer-them-right-now is for. </p>
<p>While you're at the
counter, you'll meet lovely folks like:<br>- <strong>The Penguin </strong>who
bought your entire inventory for a magic show!<br>- <strong>The Mouse</strong> who's too
small to see from the shop counter!<br>- <strong>The Bear</strong> who barely
says anything, and whose eyes are always in shadow!</p>
<p>Of course, these folks are all here for flowers (probably?), so do your best to help everyone walk out happy!</p>
<p>---
</p>
<p><strong>Parcels and Pollen
</strong>is a visual novel with
point-and-click elements about a plucky rabbit florist doing his very best! </p>
<p>Two endings, 20-30 minute playtime.</p>
<p>The
game is free, but if you pay $3 or more you can support me as a
creator and get a digital art book containing the art from the
game, sketches, and a bunch of author's notes. Also available as a text-only PDF in English and Spanish (Latam)!<br></p>
<p>---</p>
<p>Story, Coding, Art: <a href="https://littlerat.itch.io/" target="_blank">littlerat</a><br></p>
<p>Music and SFX: <a href="https://pocket-se.info/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Pocket Sound</a><br></p>
<p>Caption Tool for Ren'Py: <a href="https://npckc.itch.io/caption-tool-for-renpy"></a><a href="https://npckc.itch.io/" target="_blank">npckc</a></p>
<p>Translations:<br>Español (Latino): <a href="https://dunkelheyt.itch.io" target="_blank">dunkelheyt<br></a>Français (France): <a href="https://twitter.com/VSGameStudio" dir="ltr" class="" target="_blank" rel="nofollow noopener" referrerpolicy="origin">VSGameStudio</a></p>
<p>Special thanks to npckc and xxmissarichanxx!</p><p>---</p><p>Winner of the Melbourne Queer Games Festival 2021: Emerging Developer Award</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzQ1OTM5LzQyMTQ2ODkucG5n/original/YIgR%2FV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ1OTM5LzQzMjcxOTAucG5n/original/%2Bfm9su.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ1OTM5LzQyMTQ3MDQucG5n/original/FDYM8k.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ1OTM5LzQyMTQ2OTAucG5n/original/HrcE0r.png]]
<p><em><a href="https://therolistes.bigcartel.com/product/full-boxset-paris-gondo-the-life-saving-magic-of-inventorying" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><del>PHYSICAL COPIES NOW SHIPPING WORLDWIDE!</del></a> (SOLD OUT except via the <a href="https://rattiincantati.com/products/paris-gondo-the-life-saving-magic-of-inventorying-boxset" rel="nofollow noopener" referrerpolicy="origin">Ratti Incantati online store</a>)<br></em></p>
<p><em>"The play-based GonParis Method is a simple, smart, and effective way to banish encumbrance forever. Adopt this dungeoneering strategy, and you’ll never be overloaded again."</em></p>
<h1>A Simple Effective Play-Based Method To Banish Encumbrance Forever</h1>
<p><span></span>This game is a tongue-in-cheek tribute to encumbrance rules and other tropes found in beloved dungeon-crawling games.<br></p>
<p>It is a GM-less storytelling game for 3 to 6 players, designed to be played in a few hours with polyhedral dice and no preparation.</p>
<p>Players in this game embody Adventurers who, as a group called a Party, have reached the last level of a Dungeon and defeated the Boss who presided over it. Play starts as Adventurers discover Loot you create. The objects you decide your Adventurer carries home makes up what you pack as their Final Inventory.</p>
<p>If Adventurers hold on to possessions that spark joy, they might feel invigorated and satisfied for the rest of their existence, or at least until their next adventure. But letting go of less emotionally charged but useful Belongings might prove to be a deadly mistake for the Party on their Journey Home.</p>
<h1>Content</h1>
<h5>Replay</h5>
<p>It’s the transcript of a complete play session, edited for your enjoyment, to give you an overview of how the game works. This is inspired by the TRPG (Tabletalk Roleplaying Game) format popular in Japan.</p>
<h5>Complete Rules</h5>
<p>This includes the rules and everything you need to play the game in step-by-step instructions. This game is a collaborative storytelling game. You can jump straight to the GonParis Method and follow its Six Steps without prior reading. However, it works better if one player facilitates your first session by reading the rules in advance.</p>
<h5>Play-Aids and Card Decks</h5>
<p>You will find in the Appendix links to all the Play-aids and Card Decks in both JPG and PDF formats that you will need to play around a table.</p>
<p>Those are also included as a Miro board that you can copy to very easily play the game online.<span></span></p>
<h2>About This "Text-Only" Edition</h2>
<p>This current release is a work-in-progress but it already contains everything you need to play this game.</p>
<p>The sales from this edition will go towards hiring a professional graphic designer to make more legible and visually pleasing versions of the Rule Book, the Play-Aids and Card Decks.</p>
<p>Purchasing this current edition will get you:</p>
<ul><li>The Rule Book as it is currently laid-out with any future text updates;</li><li>The updated versions of the Play-Aids and Card Decks, once I can afford a graphic designer;</li><li>A $5 voucher (cannot be combined with another voucher), to spend on the next edition of the game which will be fully laid-out and will integrate art (price to be determined);</li><li>A unique chance to "spark joy" with friends and to put your loot in order once and for all.</li></ul>
<h2>Credits</h2>
<p>A game designed by <a href="https://twitter.com/rolistespod" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Kalum</a> from <a href="https://rolistespod.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">The Rolistes Podcast</a>.</p>
<p>Rules Editor: <a href="https://chrisssims.itch.io/?ac=6hKcoR9Jch" target="_blank">Chris S. Sims</a>.</p>
<p>
</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/sUH5mlZ903o" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTc1NzcyLzY0MjMwOTEucG5n/original/2BUlAL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc1NzcyLzY0MjMxMTguanBn/original/XO3VNf.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc1NzcyLzY0MjMwOTcuanBn/original/jSIZ0C.jpg]]
<p><span></span></p>
<p><strong><em>Pebble Witch</em></strong> is an rpg-ish, walking simulator-y, talking game. </p><p><img src="https://img.itch.zone/aW1nLzcwMjI5NjIuZ2lm/original/zAIZ17.gif" loading="lazy"><br></p>
<p>Play as a witch. Talk to pebbles. Reflect on the melancholy of becoming. Sit more. Walk. More walking. Have a crush on your burly teacher. Enjoy a lovely day in the Australian beach town, Dharawal country - Kiama.</p>
<p><img src="https://img.itch.zone/aW1nLzQ2NjExNDEucG5n/original/nhORdr.png" loading="lazy"><br></p>
<p><strong>Features</strong>• One (1) gay protagonist<strong><br></strong></p>
<p>• Two (2) whole spells<br>• About 30 minutes of playtime<br><span class=""> </span> • 20 mins of this is probably spent walking<br><span class=""> </span> • 2 mins sitting still and waiting<br><span class=""> </span> • 8 mins reading about his teacher’s gardening shorts.<br>• A whole bunch of rocks to sit and listen to.<br>• A really beautiful soundtrack by <a href="https://www.facebook.com/SoftwareOfSeagulls/" target="_blank" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">Software of Seagulls</a></p>
<p><br></p>
<p><iframe width="560" height="315" src="https://www.youtube.com/embed/3jD_Nw4uSy4" frameborder="0" allowfullscreen=""></iframe><br></p>
<p><em>Patch notes:</em></p>
<p>macOS v1.0.4 - fixed an invisible text issue (thanks Flora!)</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/3jD_Nw4uSy4" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTk0LzQ2NjA3NjcuanBn/original/D%2FfeTo.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTk0LzQ2NjA3NjYuanBn/original/1C9BrK.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTk0LzQ2NzE3OTQuanBn/original/ke6ChC.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTk0LzQ2NjA3NjMuanBn/original/RSb22V.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNTk0LzQ2NjA3NjQuanBn/original/ltQ3ZC.jpg]]
<p>In PepaFatal! you play as Pepa the toilet paper. Trying to survive the endless panic buying from several hands trying to grab you. Dodge hands, obstacles by rolling and jumping.<br></p>
<p>Refresh your rollings by collecting other toilet paper.</p>
<h3>Controls</h3>
<table><thead><tr><th>Key</th><th>Description</th></tr></thead><tbody><tr><td>W / Space / Arrow Up</td><td>Jump</td></tr><tr><td>A / Arrow Left<br></td><td>Switch lane left</td></tr><tr><td>D / Arrow Right</td><td>Switch lane right</td></tr><tr><td>S / Arrow Down / Shift</td><td>Roll</td></tr><tr><td>Escape / Pause / Backspace</td><td>Pause the game</td></tr></tbody></table>
<h3>Credits</h3>
<p>Felix Borns - Rigging, Animation, Sound<br>Johannes Grewer - 3D Modeling, Texturing, Concept<br>Sebastian Krause - Programming, Animation Integration, Concept<br></p>
<p><br></p>
<h3>Changelog</h3>
<p><strong>v0.2.0+5 Hotfix</strong></p>
<ul><li>Fixed an edge case during rolling being stuck on some cans</li></ul>
<p><strong>v0.2.0+3 - Stacked Can Destruction</strong></p>
<ul><li>Pepa can now roll through stacked cans<br><em>Running into them, still</em> hurts though.</li><li>Some minor fixes and adjustments to the overall experience</li></ul>
<p></p>
<p><strong>v0.1.0+7 - Post-Jam Voting Hotfixes</strong></p>
<p>* Hands are now higher, so you can roll below<br>* Adds full gamepad support (single handed, D-Pad & Facebuttons respectively)<br>* Hands are now always visible on the side (look carefully)<br>* [Fix] Spamming Roll Action no longer bugs movement and roll count<span></span></p>
<p><strong>v0.1.0 - Initial Release</strong><strong></strong></p>
<p><br></p>
<h3>Games origin</h3>
<p><em>The initial version fo the game was created during the </em><a href="https://itch.io/jam/stay-safe-jam" target="_blank">STAYSAFEJAM</a><em>.</em><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTk3MjYzLzMxNjQ5ODIuanBn/original/PrCaZd.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk3MjYzLzMxNjQ5ODEuanBn/original/gWcsBf.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk3MjYzLzMxNjQ5ODAuanBn/original/f%2B36tD.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk3MjYzLzMxNjQ5ODQuanBn/original/w8MkDg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk3MjYzLzMxNjQ5ODMuanBn/original/bNOyDB.jpg]]
<p></p>
<p class="text-center">spring has come to Zed<br>and from across the galaxy, the bold and the desperate<br>seek out this strange and haunted world<br>and the Witch that dwells there<br>in the hope that they may come away with<br>some precious fragment of knowledge or power before Zed’s erratic orbit plunges it back<br>into dead and frozen darkness</p>
<p><br></p>
<p>Petitioners of Zed is a tabletop mini-rpg that includes:</p>
<ul><li>Ten playable alien species, from the amorphous Annealites to the six-winged Nesiri to the resilient Humans, adrift without a homeworld.</li><li>A vast and trackless alien swamp, filled with beasts, spirits, and the broken dreams of those that have gone before.</li><li>An enigmatic Bog Witch, on whom you hang your deepest and more secret hopes.</li><li>A simple dice mechanic for resolving actions and fueling calamity.</li><li>A system for quickly generating haunted bog encounters.</li><li>A variety of Terrible Fates--few survive the terrors of Zed, but death is not the only end.</li><li>A 50-item table of lost artifacts, including unusual weapons, enigmatic tomes, and fermented delicacies.</li></ul>
<p></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0MzY3LzQxNDk0MzEucG5n/original/FNWoyS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0MzY3LzQxNDk0MzAucG5n/original/ltdYT2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0MzY3LzQxNDk0MzIucG5n/original/%2BBBw8T.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0MzY3LzQxNDk0MzMucG5n/original/rQumHD.png]]
<p><strong>Earth Has Fallen:</strong></p>
<p><em>On the morning of June 14, 1968, a group of hippies fled to the mountains of Colorado to wait for doomsday, as the meteor, Icarus, neared Earth. Prophet Don, the leader of the doomsday cult, reported that after the meteor stuck the planet, California would slide into the ocean, the land would be plagued with horrible earthquakes, and society as we knew it would collapse. Don was correct. </em>
</p>
<p>You are a Survivor, one of a handful of children born from <strong>The Children of the Flowers</strong>, living in the mountainside town of Eldorado Springs, Colorado. Since Icarus's landing, the planet has seen wars, massive earthquakes, and the atmosphere poison itself. Not in Eldorado Springs though, it's safe here,<em> it's always been safe here</em>. Things are said to live out in The Periphery, the space around the town that none of these problems seem to cross over into, but it's fine here.<em> It's always fine here</em>. Rumor is the atmosphere is starting to clear up, but the people who leave into The Periphery don't always come back. What are you going to do about it?</p>
<p><strong>Phanta </strong>is a rules-lite and easy to work with RPG system, designed for fast decisive actions, and lasting relationships, both with the other Survivors you find yourself with, and the other folks in Eldorado Springs. All you need to play is 2-6 players, a copy of the rules, your Survivor's playbook, and a handful of d6s.</p>
<p>The Playbooks and Pop Culture Quick Reference guide are both marked as Demos just so players can more easily download them without needing to purchase the full game, but don't contain significant game text within them.</p>
<p>Phanta now officially supports Role, <a href="https://app.playrole.com/sheet-templates/3f2fbff0-phanta/save" rel="nofollow noopener" referrerpolicy="origin">and I have a basic character sheet up there if you'd like to use it</a>.</p>
<p>Phanta was made as part of the <a href="https://itch.io/jam/record-collection-2k21" target="_blank">Record Collection 2k21 Jam</a> and is based on the song Phanta by Le Tigre (off their incredible 1999 debut self titled album).</p>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/C89oHnkS0ts" frameborder="0" allowfullscreen=""></iframe></div>
<p>If you'd like a review copy of this game, shoot me a message on twitter (<a href="https://twitter.com/Keganexe" rel="nofollow noopener" referrerpolicy="origin">@Keganexe</a>) or email me at Phanta@keganexe.com.</p>
<p>Print copies are here! You can reach me either of the above ways to get one, or purchase through itch (which is a little clunky but we will make it work!)</p>
<p>I made a new game, Star Heist, that uses a heavily modded version of the Phanta rulest to run! If you're interested you can get it <a href="https://keganexe.itch.io/star-heist">here</a>, you can play Phanta inside of an Adam Bell game, <a href="https://adamebell.itch.io/stat-heist">Stat Heist</a> here.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/C89oHnkS0ts" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODgzMjQ0LzQ5NzU0NjQucG5n/original/Gavs4F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgzMjQ0LzQ5NzU0NDgucG5n/original/R6UEQV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgzMjQ0LzQ5NzU0NTgucG5n/original/EfEUpO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgzMjQ0LzQ5NzU1OTkucG5n/original/HwJgVP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgzMjQ0LzQ5NzU2MDIucG5n/original/6B3Bq7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgzMjQ0LzUyMjEzOTEuanBn/original/2ZD0GY.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODgzMjQ0LzUyMjg2MzcuanBn/original/2naaY6.jpg]]
<p><br></p>
<h2>Epilepsy Warning: </h2>
<h2>Game features flashing lights/elements</h2>
<p>Survive the treacherous tubular highway, dodging grey blocks and phasing through coloured ones. </p>
<p>You may go far, but the road is endless...</p>
<p><img src="https://img.itch.zone/aW1nLzcwODE3NjcuZ2lm/original/ncgsMU.gif" loading="lazy"><br></p>
<h3>Phase your way to glory!</h3>
<p>
</p>
<p>Your ship comes in both orange and blue! You can swap between each of those freely but they're not there for style: certain obstacles cannot be crossed without being the same colour. Make sure you're the right one to phase through and brave the highway for just a little longer.</p>
<p><br></p>
<figure><img src="https://img.itch.zone/aW1nLzUyMTU5MTAuZ2lm/original/RNfg%2Bs.gif" style="color: inherit; font-size: inherit" loading="lazy"> <img src="https://img.itch.zone/aW1nLzUyMTU5MTcuZ2lm/original/%2BGm4eR.gif" loading="lazy"><span></span><span></span><span></span></figure>
<p></p>
<p><br></p>
<p>PhasR also includes:</p>
<ul><li>A killer synthwave soundtrack to cruise to ♫</li><li>A local scoreboard to challenge your friends >:D</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/L4hGQ2NIhCM" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTIxMTQxLzUyMTcwMDMucG5n/original/9PEY5b.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIxMTQxLzUyMTcwMzUucG5n/original/i2Ex9z.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIxMTQxLzUyMTcwMzMucG5n/original/%2F5rtlG.png]]
<p><strong>Near-Future Body Horror Adventure In a Paranoid World, </strong>built on the armature of Jared Sinclair's <em><a href="https://s-jared.itch.io/whats-so-cool-about-outer-space">What's So Cool About Outer Space?</a></em><br></p>
<p>Evade the cops. Trust no one. Find your place in the world as the strange new being you're destined to become.</p><p>Layout provided by <a href="https://www.facebook.com/provencreations" rel="nofollow noopener" referrerpolicy="origin">Proven Creations</a>.<br></p><p>NPC portraits generated with Artbreeder.<br></p>
<p>Submitted as part of the <a href="https://itch.io/jam/what-is-so-cool-about-jam">#wscajam</a>.<br></p>
<p></p>
[img width=500 [https://img.itch.zone/aW1nLzQyMDQwMTUucG5n/original/3mh7Z%2F.png]]
<p>Duel your friends at university with cards based on famous philosophers!</p>
<p>You just started your classes at Huginn University to learn Philosophy. But in this school, Philosophers duke it out in a popular card game! Build your deck and rise to the top and become the best philosophy student in the class!</p>
<p>Features:</p>
<ul><li>Three starting decks - Greeks, Psych or Marxism.</li><li>Customizable character avatar.</li><li>Energetic and fast paced duels.</li><li>Customize your deck with booster packs.</li><li>You can modify and program your own cards!</li></ul>
<p>The game is currently in alpha. When I complete the engine expect to see much more story/educational content!</p>
<p>Blind players! Replace %appdata%/WhatIsPhilosophyAnyways/config.ini with the file config_lv_default.ini found in the game's base directory. This includes default options for blind accessibility.</p>
<p><em>Note: To play the Philosophy Game Jam version, select the first version. This page is also used to update the current game.</em></p>
<p>[<a href="https://gitlab.com/labadore64/philosophy-fantasy-gms2.25-source" target="_blank" rel="nofollow noopener" referrerpolicy="origin">GameMaker Source</a>]<br></p>
<p>[<a href="https://gitlab.com/labadore64/philosophy-fantasy-godot" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Godot Source</a>]</p>
<p>[<a href="https://discord.gg/zDrczdBBTk" rel="nofollow noopener" referrerpolicy="origin">Discord Server</a>]</p>
<p>[<a href="https://www.patreon.com/PunishedFelix" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Patreon</a>]</p>
<p>Special Thanks:</p>
<ul><li><a href="https://soundcloud.com/podcast-co-coopercherry" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Machinic Unconscious Happy Hour Podcast</a></li><li>My friends :3</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/Ec7WIxGI4Fs" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzg1Nzc0LzQ3MzAyODEucG5n/original/udJbwb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg1Nzc0LzQ3MzAyODAucG5n/original/1B03gh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg1Nzc0LzQ2MzY5NjkucG5n/original/TIKsgF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg1Nzc0LzQ2MzY5NTUucG5n/original/NIQmir.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg1Nzc0LzUyMzE2NDEucG5n/original/G1owKA.png]]
<p>Got your number.</p>
<p><br>A dispatch by yours truly.</p>
<p><a href="http://twitter.com/peanutbridal" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><br></a>(you will know you've finished the game when you return back to the title screen.)<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/pTtUhE9STaY" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTk2MzUzLzMxNTczMjcucG5n/original/Oxzd%2B9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk2MzUzLzMxNTczMjgucG5n/original/DrW5IP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk2MzUzLzMxNTczMjkucG5n/original/CJ6f5C.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk2MzUzLzMxNTczMzAucG5n/original/z%2BrY3z.png]]
<p>Pictassembler is an engineering puzzle game where you set up a production line of marbles and operator blocks to assemble pixel art images one block at a time. Each marble can be stuck to an anchor or an existing pixel block to create a pixel block in a given location, and can also be shaded appropriately. The finished block shape needs to match the solution image to finish the level. The challenge comes in setting up the placement and timing of the marbles' paths to ensure that they land in the solution grid correctly.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/VMKM2wYg7GI" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTI0ODA1LzI3Mzg5NzAucG5n/original/Xo%2BJPz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI0ODA1LzI3Mzg5NzEucG5n/original/jB6LGk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI0ODA1LzI3Mzg5NzIucG5n/original/XKCBYA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI0ODA1LzI3Mzg5NzMucG5n/original/4gYtzk.png]]
<p>Pictassembler is an engineering puzzle game where you set up a production line of marbles and operator blocks to assemble pixel art images one block at a time. Each marble can be stuck to an anchor or an existing pixel block to create a pixel block in a given location, and can also be shaded appropriately. The finished block shape needs to match the solution image to finish the level. The challenge comes in setting up the placement and timing of the marbles' paths to ensure that they land in the solution grid correctly.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/VMKM2wYg7GI" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTI0ODA1LzI3Mzg5NzAucG5n/original/Xo%2BJPz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI0ODA1LzI3Mzg5NzEucG5n/original/jB6LGk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI0ODA1LzI3Mzg5NzIucG5n/original/XKCBYA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI0ODA1LzI3Mzg5NzMucG5n/original/4gYtzk.png]]
<p>A system agnostic RPG magic item in a business card for your players to fiddle with.</p>
<p>Cut the coin, flip the whole card or use a real cursed coin. </p>
<p><br></p>
<p>Only one coin of this kind was ever minted. The molds were lost and the coin makers disappeared. It looks worthless, and anyone who holds it feels compelled to flip it. At least just once.</p><p><br></p><p>Part of <a href="https://cardboard.monster/products/tiny-library" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Tiny Library</a>, a collection of 50 business-card RPGs.</p>
<p><br></p>
<p>The PDF includes bleed.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTc3NzkyLzU1NTg5MjkucG5n/original/EeLC59.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc3NzkyLzU1NTg5MzAucG5n/original/MxzmCn.png]]
<p><strong>Pikuniku</strong> is an absurdly wonderful puzzle-exploration game that takes place in a strange but playful world where not everything is as happy as it seems. Help peculiar characters overcome struggles, uncover a deep state conspiracy, and start a fun little revolution in this delightful dystopian adventure!</p>
<ul><li><strong>A Vibrant Adventure for All:</strong> Explore a colorful world at your own pace, help quirky characters with their unusual requests, and solve clever puzzles that will challenge players of all levels with a 4 - 5 hour campaign.</li><li><strong>Charming Cast:</strong> Meet a cast of memorable characters on your journey, each with their own problems and eccentricities to accommodate along the way.</li><li><strong>Cooperative Mode:</strong> Join up with family and friends for local multiplayer fun in custom cooperative levels and challenges.</li></ul>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/7KPKVD2kpFY" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzQxMTkwLzE2OTA2NzIucG5n/original/XimIaO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQxMTkwLzE2OTA2NzMucG5n/original/9YXgW6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQxMTkwLzE2OTA2NzYucG5n/original/lq53AB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQxMTkwLzE2OTA2NzcucG5n/original/z6qkTB.png]]
<p>Atop the poppy hills are ruins to what was once revered and feared. One man wants to paint this scenery, while another wants to research it, while the forgotten god wants to have silence once and for all.<br></p>
<p><em>Pillars on Poppy Hills</em> is a visual novel about wanting to become something or nothing. It also features:</p>
<ul><li>Approximately 13,000 words / 40 minutes of play time!</li><li>3 Endings!</li><li><strong><em>Content Warning: </em>This visual novel and touches upon melancholic and downcast themes.</strong></li><li>Also nobody is straight and everyone is depressed! Yay!</li></ul><p><strong><em>Update 2/26/2022: There's now an artbook available to purchase! It will update with more info and art in the future, but until then it is at a discounted price for now~! </em></strong></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjY5NjI5LzUyNDgwODcucG5n/original/ErNXha.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY5NjI5LzUyNDgwODgucG5n/original/rZTQxH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY5NjI5LzUyNDgwODYucG5n/original/yRtMyG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY5NjI5LzUyNDgwNDgucG5n/original/MZYnTY.png]]
<p>Everything you desire is inside Pitman's randomized dungeons: Dwarfs, trolls, golems, treasures, potions, magic, hammer, bow, even more weapons, ... and don't forget the monster moles and pretzels! </p>
<p>Traditional Rogue-like gameplay like randomness, high replayability and turn-based strategic roleplaying elements meet innovative level design decisions.</p>
<p>Pitman will let you die a thousand deaths - thus making your survival especially satisfying! And with the modern game technology of "save games" you will be able to face a challenge again, better prepared.</p>
<p><strong>Features:</strong></p>
<ul><li>RPG - create the hero you want, like a dwarven sorcerer or a powerful warrior</li><li>turn based - for a tactical course of action</li><li>3D board game style - build the world while playing</li><li>random based - no game will be like the one before</li></ul>
<p><em> DISCLAIMER: This game is from 2011 and was our first commercial title. Ah, the good old times.</em><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/N3iD_F-TgI8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjc5ODAvMTE1MDk2LmpwZw==/original/RDXiZI.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjc5ODAvMTE1MDk3LmpwZw==/original/yJfrzP.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjc5ODAvMTE1MDk4LmpwZw==/original/nQaCD7.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjc5ODAvMTE1MDk5LmpwZw==/original/18gTAp.jpg]]
<p class="text-center"></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzYxNjQ0NzgucG5n/original/na%2FkSI.png" loading="lazy"></p>
<p class="text-center"><strong><br>::<a href="https://itch.io/c/1277062/studios-soularess-collection" target="_blank">Click Here to see all about MoonRoar Asset Series</a>::</strong></p>
<p class="text-center"><strong><a href="https://soulares.itch.io/moonroar-showcase" target="_blank">::Wanna see how it play?::</a></strong> (to be updated)<strong></strong>
</p>
<p>This is a paid asset pack <strong>ready for use </strong>on projects, like <strong>free or </strong><strong>commercial games.</strong></p>
<p>There are included, at moment, four variations of a wolf with more than 60 frames, spred around 10 instance animations. All animations and variations can be find on a general Sheet, and on individual stripes. All within a Bounding Box of 64x48 pixels.</p>
<p><em><em>These </em>wolves <em>are </em></em> able to do patrol areas and attack on sight with a variety of moves, planned to suit different routines to a platformer sidescroller adventure! From mindless enemies, to a vicious pack of coordinated attacking fangs, this asset covers the most for your game!</p>
<p><strong>Delivery </strong><br></p>
<p>Downloading this asset, you will have acess to a .zip file containing:
</p>
<ul><li>Four Complete SpriteSheet with all animations (one for each variation)<em>;</em>
</li><li>A folder with 10 Individual Stripes, for each animation/Transition;
</li><li>A .png table with a recommended framerate for each animation;
</li><li>A pdf file containing the project License.
</li></ul>
<p><strong>Moveset</strong>
</p>
<p>It contain the following animations:
</p>
<ul><li><strong>Navigation:</strong><ul><li><strong>Idle</strong></li><li><strong>Walk</strong></li><li><strong>Running</strong></li></ul></li></ul>
<ul><li><strong>Fight:</strong><ul><li><strong>Attack 1 (With and Without Animation Smears)</strong></li></ul><ul><li><strong>Attack 2 (Howling)</strong></li><li><strong>Attack 3 (With and Without Animation Smears)</strong></li><li><strong>Hit</strong></li><li><strong>Death</strong></li><li><strong>Recovery</strong></li></ul></li></ul>
<p><strong>About the License</strong><br></p>
<p>As said earlier, this is a paid asset, and once it is aquired, is eligible for use for any project, commercial or free.
</p>
<p>Attribution still required on your project, and we reccomend to give credits to <strong>Studios SoulAres</strong>, and providing a link for my Itch.io main page.
</p>
<p>There's sample atribution on the License File that you can reffer, but <a target="_blank" rel="nofollow noopener" referrerpolicy="origin">you can read it here</a> as well!
</p>
<p><br></p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA3NTExOS82MzM2MTcxLmdpZg==/original/jekuSy.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA3NTExOS82MzM2MTcyLnBuZw==/original/GDxUkz.png]]
<p>A set of customizable trees, shrubs, backgrounds that you can immediately use for your project with ease!<br><br>Come with trees, shrubs, tilesets and background.<br>64x64 tiles and 1440x480 backgrounds.<br>Customizable trees.<br>PNG and PSD Format.<br><br>3 PSD Examples.</p>
<p>Also a demo scene in Unity!<br></p>
<p><br>Feel free to send me messages or leave a comment if you have questions or need more info.</p>
<h3>Currently I'm accepting commissions! so if you want anything in pixel art (specially backgrounds) please contact me through my email or my <a href="https://twitter.com/EderMuniZz" rel="nofollow noopener" referrerpolicy="origin">twitter</a>!</h3>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/Ic3ZdD5ko7k" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTEyNjM3LzUyMjcwMC5wbmc=/original/sg7HGd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTEyNjM3LzUyMjcwMy5wbmc=/original/73jkjo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTEyNjM3LzUyMjcwMi5wbmc=/original/Ncg21w.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTEyNjM3LzUyMjcwNS5wbmc=/original/DfszRw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTEyNjM3LzUyMjcwNC5wbmc=/original/p7ifAp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTEyNjM3LzUyMjcwMS5wbmc=/original/eKSht3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTEyNjM3LzUyMjcwNi5wbmc=/original/isqtiU.png]]
<p>A set of Backgrounds, objects, charcaters that you can immediately use for your project with ease!</p>
<p><br><strong>Features:</strong></p>
<p><br>7 Backgrounds with Layers, night/day themed.</p>
<p><br>1 animated volcano background with layers, night/day themed.</p>
<p><br>Totalizing 16 Backgrounds.<br><br>3 Characters with run, jump, death animations.<br><br>1 character template<br><br>7 static objects/obstacles.<br><br>2 animated objects/obstacles.<br><br>Extra: 1 music and a jump sound!<br><strong><br>Details:</strong></p>
<p><br>Backgrounds:<br><span></span><br>City, Forest, Field/Mountains, Snow, Volcano, Desert, Hill and Mysterious Forest.<br><br>With Day and Night theme.<br><br>PSD and PNG files.<br><br>music and sound in wav file.<br><br>6 gif files as examples.<br><br><strong>Demo Gifs</strong>: <a href="https://edermunizz.tumblr.com/post/156264036114/examples" rel="nofollow noopener" referrerpolicy="origin">https://edermunizz.tumblr.com/post/156264036114/ex...</a><br><strong><br>Feel free to send me messages or leave a comment if you have questions or need more info.<br></strong></p><h3>Currently I'm accepting commissions! so if you want anything in pixel art (specially backgrounds) please contact me through my email or my <a href="https://twitter.com/EderMuniZz" rel="nofollow noopener" referrerpolicy="origin">twitter</a>!</h3>
<iframe width="720" height="450" src="https://www.youtube.com/embed/8avG_LQaWc0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTEzOTQ3LzUyNzkyMy5wbmc=/original/qJaQxK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTEzOTQ3LzUyNzkzMC5wbmc=/original/OtYGkr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTEzOTQ3LzUyNzkzMS5wbmc=/original/ZDsH0F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTEzOTQ3LzUyNzkyOS5wbmc=/original/qber9n.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTEzOTQ3LzUyNzkyNy5wbmc=/original/SM%2B8ws.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTEzOTQ3LzUyNzkyNi5wbmc=/original/S0e2Qf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTEzOTQ3LzUyNzkyNC5wbmc=/original/1BQLbI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTEzOTQ3LzUyNzkyOC5wbmc=/original/8uuF67.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTEzOTQ3LzUyNzkyNS5wbmc=/original/TT%2FMZZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTEzOTQ3LzgzODA2OC5wbmc=/original/rVmc1o.png]]
<p>A set of backgrounds (with animated layers!) and tilesets that you can immediately use for your project with ease!<br></p>
<p><strong>Features:<br></strong></p>
<p><strong>Themes:</strong></p><p>1 Mountains and clounds. (with animated layers)</p>
<p>1 Forest.</p>
<p>2 Dungeons (with animated layers)</p>
<p>1 Mountain landscape (with day, night, sunset and dawn themes)</p>
<p>1 Lake. (update 3.0)<br></p>
<p>1 Library. (update 3.0)</p>
<p>1 Hills. (update 3.0)<br></p>
<p><strong>Details:<br></strong></p>
<p><strong>All themes come with backgrounds with multiple layers and tilesets.<br>All Tilesets are Unity and Godot ready.</strong></p><p>Bakgrounds in 950x382</p><p>Tilesets in 32x32</p>
<p>PSD and PNG files.</p>
<p>Example in PNG, PSD and Gif.</p>
<p><strong><br>Feel free to send me messages or leave a comment if you have questions or need more info. Enjoy!</strong></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/iTyeG2l-0Dk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTIwNTMyLzU1NTYzMi5naWY=/original/hjpgva.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIwNTMyLzU1NTYzMy5naWY=/original/Yjs3%2B8.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIwNTMyLzU1NTYzNC5naWY=/original/WHSsVD.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIwNTMyLzU1NTYzNS5wbmc=/original/z71UeR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIwNTMyLzU1NTYzNy5wbmc=/original/g%2Fb5tt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIwNTMyLzU1NTYzOC5wbmc=/original/KIM%2Fjo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIwNTMyLzU1NTYzOS5wbmc=/original/aqORyx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIwNTMyLzU1NTY0MS5wbmc=/original/zkAGhw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIwNTMyLzU1NTY0Mi5wbmc=/original/YBwfDU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIwNTMyLzgzNzU3NS5wbmc=/original/1Z4SfO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIwNTMyLzgzNzU3Ni5wbmc=/original/3pkyZ9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIwNTMyLzgzNzU3Ny5wbmc=/original/oCgaIl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIwNTMyLzgzNzU3OC5wbmc=/original/fMB7Jx.png]]
<p>A set of customizable trees, shrubs, backgrounds that you can immediately use for your project with ease!<br><br>Come with trees, shrubs, tilesets and background.<br>64x64 tiles and 1440x480 backgrounds.<br>Customizable trees.<br>PNG and PSD Format.<br><br>PSD Example.</p>
<p><strong>Feel free to send me messages or leave a comment if you have questions or need more info.<br></strong></p>
<p><strong></strong></p>
<h3>Currently I'm accepting commissions! so if you want anything in pixel art (specially backgrounds) please contact me through my email or my <a href="https://twitter.com/EderMuniZz" rel="nofollow noopener" referrerpolicy="origin">twitter</a>!</h3>
<p><strong></strong></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/0Lrj5yYAO10" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTE1Mjg3LzUzNTc3MC5wbmc=/original/xjffHL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE1Mjg3LzUzNTc3MS5wbmc=/original/H6CpY7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE1Mjg3LzUzNTc3Mi5wbmc=/original/Fg1jOB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE1Mjg3LzUzNTc3NS5wbmc=/original/KjIok9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE1Mjg3LzUzNTc3NC5wbmc=/original/vF2tlE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE1Mjg3LzUzNTc3My5wbmc=/original/GqHsRF.png]]
<p><strong><em>If you have suggestions for Controllers or buttons I should add to this pack, please leave a comment below!</em></strong></p>
<p>This pack comes with a bunch of animated buttons, animated joysticks and analog Sticks, D-pads, 3 colors of Keyboards, a mouse, and 2 fonts! Perfect for button prompts and control screens, or whatever else you want to use it for.</p>
<p><br></p>
<p><strong>IF YOU ALREA</strong><strong>DY </strong><strong>OWN THIS PACK, WHY NOT TRY OUT THE FIRST PAID DLC? IT'S ONLY $2.00</strong></p>
<p><iframe frameborder="0" src="https://itch.io/embed/766787?bg_color=131313&fg_color=ebeff4&link_color=fa5c5c&border_color=424242" width="552" height="167"><a href="<a href="https://retrocademedia.itch.io/pixel-gamepads">Pixel" class="redactor-linkify-object">https://retrocademedia.itch.io/pixel-gamepads">Pixel</a> Button Prompts DLC | GAMEPADS by Retrocade Media</a></iframe></p>
<p><img src="https://img.itch.zone/aW1nLzc1Mjc2MDguZ2lm/original/Ryfsty.gif" loading="lazy"><br></p>
<p><strong><img src="https://img.itch.zone/aW1nLzQ5MzIxODQucG5n/original/YhiOL3.png" loading="lazy"><br></strong></p>
<p><strong>You may use these prompts in any commercial or non-commercial products. If you have any question about how you can use them, the answer is probably yes, however you may not resell them for any reason.</strong></p>
<p>Please credit me for the assets if you use them, it would be greatly appreciated.</p>
<p>Palette is Endesga 64 - Created by Endesga <a href="https://twitter.com/ENDESGA?s=09" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@ENDESGA</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjQ2MzE3Lzc1Mjc2MTUuZ2lm/original/mm670b.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ2MzE3LzQ5MzIyMjEucG5n/original/m5VDwS.png]]
<h3 class="text-center"><img src="https://img.itch.zone/aW1nLzYwOTIzNzQucG5n/original/pZtUIV.png" loading="lazy"></h3>
<p class="text-center"><a href="https://www.instagram.com/admurin/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzYwOTE5MDkucG5n/original/GEWI9y.png" alt="Instagram" title="Instagram" loading="lazy"></a> <a href="https://twitter.com/admurin" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzYwOTE5MjUucG5n/original/QaEOvv.png" alt="Twitter" title="Twitter" loading="lazy"></a> <a href="https://www.reddit.com/r/admurin/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzYwOTIxNjkucG5n/original/UUfRwU.png" alt="Reddit" title="Reddit" loading="lazy"></a> <a href="https://www.facebook.com/Admurin/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzYxMjA3NzQucG5n/original/Ae1a2A.png" alt="Facebook" title="Facebook" loading="lazy"></a> <a href="https://ko-fi.com/admurin" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzYwOTIxODYucG5n/original/eaz2Az.png" alt="Ko-fi" title="Ko-fi" loading="lazy"></a><br></p>
<p class="text-center"><a href="https://www.patreon.com/admurin?fan_landing=true" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzc2MjI2NTUucG5n/original/gmdg9n.png" alt="Become a Patron" title="Become a Patron" loading="lazy"></a></p>
<p class="text-center">Patrons get the following:</p>
<p class="text-center"><a href="https://www.patreon.com/admurin?fan_landing=true" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzc2MjI3MzMucG5n/original/eq3Rjo.png" alt="Patron Perks" title="Patron Perks" loading="lazy"></a></p>
<p><br></p><p>Do not forget to download the Rider class for free!</p><p><iframe src="https://itch.io/embed/1342169?border_width=5&bg_color=0f0d22&fg_color=e9d6c1&link_color=a96f2f&border_color=3e3c51" width="560" height="175" frameborder="0"><a href="<a href="https://admurin.itch.io/pixel-character-horse-rider">Pixel" class="redactor-linkify-object">https://admurin.itch.io/pixel-character-horse-rider">Pixel</a> Character - Rider by Admurin</a></iframe><br></p>
<h3 class="text-center"><img src="https://img.itch.zone/aW1nLzYxMzU4MDIucG5n/original/Aw0NqG.png" loading="lazy"></h3>
<p>This type of character does not hold any tools in his hand, he is the base of all the classes. You can see the previews on the side bar.<br></p>
<p><strong>BASICS</strong><br>Idle (4),Walk (8), Run (8), Jump (9), Crouch (4), Hit (7), Death A (7), Death B (7), Death C (10), Step-Back (6), Dodge (10), Slide (8)</p>
<p><strong>LADDERS<br></strong></p>
<p><strong>FRONT</strong>: Intro (1), Climb (4), Slide (1), Exit (1)<strong><br></strong><strong>SIDE</strong>: Intro (1), Climb (4), Slide (1),Exit Up (5), Exit Down (3), Ledge Hang (4), Wall Jump (3), Wall Slide (5)</p>
<p><strong>MELEE<br></strong>Dive Kick (7), Kick Combo (12), Punch Combo (18)</p>
<p><strong>THROWING<br></strong>1x Throw (5), 3x Throw (7), 5x Throw (9), End Throw (16), Normal Throw (3)</p>
<p><br></p>
<h3 class="text-center"><img src="https://img.itch.zone/aW1nLzYxMzU4MDYucG5n/original/lud1Cs.png" loading="lazy"></h3>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzYxMzU5NDYucG5n/original/riD7vp.png" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzYxMzU2OTIuZ2lm/original/Gki1vr.gif" loading="lazy"><br></p>
<p><img src="https://img.itch.zone/aW1nLzYxMzU2ODcuZ2lm/original/1p6fOL.gif" loading="lazy"><br></p>
<p><br></p>
<p>This type of character comes with all the wanderer animations holding the swords and shields from my <a href="https://admurin.itch.io/pixel-armory" target="_blank">Armory Pack</a>. <br></p>
<ul><li>10 types of gladiators, from low level gladiators to mighty ones. </li><li>This also includes legendary variants, the crimson and timeless gladiators.</li><li>Wanderer animations holding different swords and shields.</li></ul>
<p><strong>GLADIATOR: </strong>Block (2), Blocked Hit (5), Block + Thrust (5), Sword Combo (13), Air Combo (9), Shield Rush (7), Charge (10)</p>
<p><br></p>
<h3 class="text-center"><img src="https://img.itch.zone/aW1nLzYxMzU4MDcucG5n/original/0GuOpJ.png" loading="lazy"></h3>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzYxMzU5NTAucG5n/original/2WSchu.png" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzY1NjU0MDkuZ2lm/original/ajWGw5.gif" loading="lazy"><br></p>
<p>This type of character comes will all the wanderer animations holding the bows from my <a href="https://admurin.itch.io/pixel-armory" target="_blank">Armory Pack</a>. <br></p>
<ul><li>10 types of marksmen, from low level archers to grand master marksmen.
</li><li>Legendary variants also included, the crimson and timeless marksmen.
</li><li>Wanderer animations holding different bows.
</li></ul>
<p><strong>MARKSMAN: </strong>Single shot (7), Air Shot (10), Floor Shot (9), Jump Shot (15), Quick Shot (4), Precision Shot (10)</p>
<p><br></p>
<h3 class="text-center"><img src="https://img.itch.zone/aW1nLzYxMzU4MTIucG5n/original/SGp4gD.png" loading="lazy"></h3>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzc0Mzk2MDAucG5n/original/yKUSwq.png" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzc0Mzk1ODYuZ2lm/original/5oft0p.gif" loading="lazy"><br></p>
<p>This type of character comes will all the wanderer animations holding the staves from my <a href="https://admurin.itch.io/pixel-armory" target="_blank">Armory Pack</a>.
</p>
<ul><li>10 types of mages, from apprentices to legendary mages.
</li><li>Legendary variants also included, the crimson and timeless mages.
</li><li>Wanderer animations holding different staves and if desired shields as well.</li></ul>
<p><strong>MAGE:</strong> Ray (5), Stomp (7), Call the heavens (8), Touch floor (6), Combo floor (11)<br><br></p>
<h3 class="text-center"><img src="https://img.itch.zone/aW1nLzYxMzU5NjYucG5n/original/g213b4.png" loading="lazy"></h3>
<ul><li>Character Size: 42x29 px</li><li>Sprite Dimensions: Most are 64x48px. Death animations are 64x64px</li><li>Can be used in <strong>UNITY </strong>easily</li><li>Effects/Projectiles <strong>NOT </strong>included</li><li>The pack consists of two directional animations<br>
</li><li>List of animations: 400+
</li><li>Frames: A lot that I lost track</li><li>Aseprite File <strong>NOT </strong>included</li><li><strong>PNG files provided to make your own variant</strong></li></ul>
<p><br></p>
<h3 class="text-center"><img src="https://img.itch.zone/aW1nLzYxMzU5NjgucG5n/original/A5bmA8.png" loading="lazy">
</h3>
<ul><li>You can use this asset in any game project, personal or commercial</li><li><strong>DO NOT</strong> <strong>resell or redistribute</strong> <strong>AS A GAME ASSET</strong>, it has to be part of a project</li><li>Credit is not required but it is appreciated</li><li>Modify to suit your needs</li><li>You are <strong>NOT </strong>allowed to turn any of my assets to an NFT.</li></ul>
<p><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzYxMzY0MTMucG5n/original/csb0wi.png" loading="lazy"></p>
<p class="text-center">Click the image to see my asset collections.<br></p>
<p class="text-center">
<a href="https://itch.io/c/1405772/admurins-items" target="_blank"><img src="https://img.itch.zone/aW1nLzYxMzYzODQucG5n/original/0wdFn0.png" alt="Admurin's Items" title="Admurin's Items" loading="lazy"></a>
<a href="https://itch.io/c/1426784/ui-themes" target="_blank"><img src="https://img.itch.zone/aW1nLzYxMzYzODUucG5n/original/YUdCso.png" alt="UI Themes" title="UI Themes" loading="lazy"></a>
<a href="https://itch.io/c/1574579/nature" target="_blank"><img src="https://img.itch.zone/aW1nLzY2MzQwMDUucG5n/original/spw0ai.png" alt="Nature Packs" title="Nature Packs" loading="lazy"></a>
<a href="https://itch.io/c/1846116/animations" target="_blank"><img src="https://img.itch.zone/aW1nLzc2NjczMDQucG5n/original/KMrxO4.png" alt="Animations" title="Animations" loading="lazy"></a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MDEuZ2lm/original/ddUMHX.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MDMuZ2lm/original/FHkiO5.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MDQuZ2lm/original/QmPZpZ.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MDYuZ2lm/original/c5Vcum.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MDkuZ2lm/original/rlFftY.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MTEuZ2lm/original/2g776D.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MTIuZ2lm/original/nqR3JO.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MTQuZ2lm/original/PAzEjs.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MTUuZ2lm/original/9%2FoyUD.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MTYuZ2lm/original/k%2FySGT.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MTguZ2lm/original/vxFOmT.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MjAuZ2lm/original/98NPs1.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MjIuZ2lm/original/EHNanz.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MjMuZ2lm/original/Z0FRx8.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MjUuZ2lm/original/z4x2hY.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MjYuZ2lm/original/u%2B5Ufo.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MjguZ2lm/original/9gM28i.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MjkuZ2lm/original/g0iiBh.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MzAuZ2lm/original/gbu0au.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MzEuZ2lm/original/R8tpTD.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MzMuZ2lm/original/vU8o76.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MzUuZ2lm/original/AQKDyC.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MzYuZ2lm/original/PzSMNI.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvODcxMTkyLzYxMzU0MzcuZ2lm/original/ZTlDZ7.gif]]
<p>Pixel Driver is a casual infinite driving game where you race in heavy traffic at high speeds. Crashing into cars is AWESOME since they actually break up into parts which let's you cause proper havoc! </p>
<p><br>Fluent and responsive controls let you dodge other cars at amazing speeds. Pick up coins to unlock new cars and don't run out of fuel. In our opinion this is a great way to learn how to drive :o)</p>
<p><em>Can you reach #1 on the Global rank? </em><br></p>
<p>FEATURES<br>☆ Only 1.99$, price will increase with each new release<br>☆ Super responsive controls<br>☆ 2 stages: Desert Cruising & City Madness (more will come in the future)<br>☆ Endless desert stage with 4 lanes. <br>☆ Endless city stage with 4 lanes and opposing traffic.<br>☆ 4 unlockable cars (more will come in the future)<br>☆ Retro low poly style<br>☆ Supports keyboard, gamepad, joystick or accelerometer input<br>☆ Cross-platform, works on Xbox One, PC and mobile devices (Windows Mobile & Android, iOS is planned)</p>
<p><strong>Status</strong><br>Beta</p>
<p><strong>How to play<br></strong>Use WASD to drive. The car consumes fuel every second, collect jerry cans to refueld or stop at gas stations. Don't crash or run out of fuel.</p>
<h2>Feedback</h2>
<p>Join our <a href="https://discord.gg/AyYtKXT" rel="nofollow noopener" referrerpolicy="origin">Discord server</a> to discuss or provide feedback on the game.</p>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/Z421v3WcxnM" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTYyOTQxLzg0ODkzMS5wbmc=/original/yZKO5T.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTYyOTQxLzg0ODkzMi5wbmc=/original/Twp8NT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTYyOTQxLzg0ODkzMy5wbmc=/original/ouLshp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTYyOTQxLzg0ODkzNC5wbmc=/original/NKPuYP.png]]
<h3 class="text-center">These icons can be used for any engine or any purpose, but they will match the requirements of RPG Maker MV and will fit nicely into any project that can use 32x32px image dimensions.</h3>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzgwNjU5MjUucG5n/original/z5O0U%2F.png" loading="lazy"></p>
<h3 class="text-center">The pack contains 96 different icons including:</h3>
<p class="text-center"><img src="https://img.itch.zone/aW1hZ2UvMjI2MjQ2LzgwNjU5MzcucG5n/original/CjbqPp.png" loading="lazy"><br></p>
<p class="text-center">ingredients including meats, vegetables, fruits and more; monster drops like fabrics, horns, teeth and claws; modern items such as syringe, flashlight and phone; healing items like blood packs; quest rewards like jewels and gems; and more!</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzgwNjU5MzEucG5n/original/YfL3kZ.png" loading="lazy"><br></p>
<h3 class="text-center">The icons are 32x32 each and are therefore compatible for RPG Maker MV's default item system. They can even be used in other makers as event icons.</h3>
<h3 class="text-center">However, they can be used for whatever you see fit - gamedev or otherwise!</h3><h3 class="text-center"><a href="https://docs.google.com/document/d/1RvcwRvbgEe8ttTMSG5PmqQedFmvc13_n6hdocV4ksU4/edit?usp=sharing" rel="nofollow noopener" referrerpolicy="origin">You can read the full Terms of Use/EULA here.</a></h3>
<p class="text-center">----------------------------------------------------------------------------------------------------------</p>
<h2 class="text-center">RELATED ASSETS:</h2>
<p class="text-center"><a href="https://itch.io/c/495984/cazs-assets-paid">PAID ICONS AND ASSETS:</a></p>
<p class="text-center"><a href="https://itch.io/c/495984/cazs-assets-paid"><img src="https://img.itch.zone/aW1nLzQ5OTA0MTMucG5n/original/XMLQ7M.png" style="max-width: 100%" loading="lazy"></a>
</p>
<p class="text-center"><a href="https://itch.io/c/495985/cazs-assets-free">FREE ICONS AND ASSETS:</a></p>
<p class="text-center"><a href="https://itch.io/c/495985/cazs-assets-free"><img src="https://img.itch.zone/aW1nLzQ5OTA0MTUucG5n/original/mhj%2B2N.png" style="max-width: 100%" loading="lazy"></a>
</p>
<h2 class="text-center"></h2>
<p class="text-center"><br></p>
<p class="text-center"><br></p>
<p class="text-center"><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjI2MjQ2LzgwNjU5MjcucG5n/original/RDsKTN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI2MjQ2LzE5MDY4MzIucG5n/original/tya45P.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI2MjQ2LzgwNjU5MzcucG5n/original/CjbqPp.png]]
<p>An asset pack containing a full deck of cards within a sprite-sheet and individual sprites. Also features two colour options, back designs and blank cards. All sprites are 60x84 but can be easily resized if required.</p>
<p><strong>Feel free to use these assets in anyway you please, although I'd appreciate paying the suggested price if used commercially.</strong></p>
<p><br></p>
<figure><img src="https://img.itch.zone/aW1nLzIzMjI4MzIuZ2lm/original/h%2BNA5P.gif" alt="look at these dudes spin" title="look at these dudes spin" loading="lazy"></figure>
<p></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDU1MDEzLzIzMjEyNzIucG5n/original/uBRbUH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU1MDEzLzIzMjI4MjUucG5n/original/pJuzxU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU1MDEzLzIzMjEyNzMucG5n/original/auUqVz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU1MDEzLzIzMjI4MTcucG5n/original/t1sNkB.png]]
<p style="text-align: center; font-size: 9pt">
In case it is unclear from the look of this page,
<br>
please do not buy this if you are prone to epilepsy seizures.
</p>
<p style="text-align: justify">
<strong><br>
</strong>
</p>
<p style="text-align: justify">
<strong>Pixel Session Vol.1</strong> is a collection of <strong>5 extra-polished eye-candy arcadey jam-style games</strong>, exploring experimental and minimalist gameplay and graphics!
</p>
<p style="text-align: justify">
<strong><br>
</strong>
</p>
<h3 style="text-align: center">
The Games
</h3>
<p style="text-align: center">
<strong><em>
GET DEEP INTO DESCENT
</em></strong>
</p>
<p style="text-align: center">
<strong><em>
GET LIGHTNING IN LIGHTNER
</em></strong>
</p>
<p style="text-align: center">
<strong><em>
GET WATCHED BY B1G BR0TH3R
</em></strong>
</p>
<p style="text-align: center">
<strong><em>
GET CLONES IN CHARGING PANIC
</em></strong>
</p>
<p style="text-align: center">
<strong><em>
GET BURSTING WITH CHROMA CANNON</em></strong>
</p>
<p style="text-align: justify">
Each game is based on
<strong>one simple but special gameplay mechanic</strong> and built around this mechanic. With a focus on visual feedback, the five games are fine examples of <strong>colorful video game juiciness</strong>.
</p>
<p style="text-align: justify">
The results are
<strong>five eye-candy arcadey games</strong> that will have you say "<em>ok just one more time</em>" a lot of times.
</p>
<p>
<br>
</p>
<h3 style="text-align: center">
About the creator of Pixel Session Vol.1</h3>
<p style="text-align: justify">
<strong>TRASEVOL_DOG</strong> is an indie game developer who enjoys finding and trying new gameplay mechanics. <strong>Eternal prototyper, gamejamer and "Twitter Treasure"</strong>, TRASEVOL_DOG is in love with 2D graphics and provides his audience with much color, going from concept to next concept, like <strong>a gif machine</strong> mostly fueled by passion and sugar.
</p>
<p style="text-align: justify">
He is also one very active
<strong>Pico-8</strong> developer, constantly exploring the visual possibilities of the restrictive fantasy console by <strong>Lexaloffle</strong>. From colorful procgen experiments to trippy programs fitting in a tweet or in a 120 seconds gif to actual games such as <strong>HIGH CLIMB</strong> or the five in <strong>Pixel Session Vol.1</strong>.
</p>
<p style="text-align: justify">
You can check out
<a href="https://twitter.com/TRASEVOL_DOG" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><strong>his Twitter here</strong></a>. He does a lot of stuff you can enjoy <strong>for free</strong> too!<span></span><br>
</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTI0NjUvNDM0OTYzLmdpZg==/original/9kcMUl.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI0NjUvNDM0OTY2LmdpZg==/original/dVrZSl.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI0NjUvNDM0OTczLmdpZg==/original/uMZ6dN.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI0NjUvNDM0OTcxLmdpZg==/original/zUBTTw.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI0NjUvNDM0OTc1LmdpZg==/original/4jz2js.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI0NjUvNDM2MDMyLmdpZg==/original/wK%2FLz%2F.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI0NjUvNDM2MDMxLmdpZg==/original/1K9kWX.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI0NjUvNDM2MDMwLmdpZg==/original/Wf7%2Bxe.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI0NjUvNDM2MDI4LmdpZg==/original/7ki2ko.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI0NjUvNDM2MDI5LmdpZg==/original/exaVNG.gif]]
<p>Top-down retro racing game for PC (Linux, Intel-based Mac, Windows) and Android.<br></p>
<p>Race for the first place on various tracks. Pick up bonuses to boost your position or slow down competitors!<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/xriYt8K9lxw" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzA3MjUxLzQxNDE1NzkucG5n/original/9ue9I0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA3MjUxLzQ4NzMwODkucG5n/original/vU55ag.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA3MjUxLzQxNDE1NzcucG5n/original/uCBv2W.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA3MjUxLzQxNDE1ODAucG5n/original/7PpCZm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA3MjUxLzUzMTAzMzgucG5n/original/UoxQU6.png]]
<h4>About the game</h4>
<p>Pixross is a picture logic puzzle game featuring <strong>170+</strong> unique puzzles, customization and extra challenges for each puzzle. Unlock new puzzle packs or customization options by completing puzzles!</p>
<ul><li><strong>Hundreds of challenging puzzles </strong>– Each puzzle pack has a specific theme, you can unlock new packs by completing puzzles.</li><li><strong>Add extra challenges</strong> – Add challenges to puzzles like clues that disappear, mirroring or only allowing a single mistake to be made!</li><li><strong>Customize to your liking</strong> – Next to changing the game rules you'll also be able to unlock and customize the visuals like backgrounds, tiles and fonts (50 options).</li></ul>
<h5>Requirements</h5>
<p>The game can only be played using a mouse. Windows and Linux compatible, not compatible with other operating systems.</p>
<p><br></p>
<p class="text-center"><a href="https://twitter.com/KenneyNLGames" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzQ4MjIwNzIucG5n/original/g%2FhxGp.png" loading="lazy"></a><br></p>
<p class="text-center"><a href="https://twitter.com/KenneyNL" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Twitter</a> | <a href="https://www.facebook.com/KenneyNL" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Facebook</a></p>
<h6 class="text-center">Copyright © Kenney 2021 | All rights reserved<br>Featuring art by Sebastian Unrau, Kristopher Roller, Paweł Czerwiński, Lucas Benjamin, Gradienta, Pixabay and Hert</h6>
<h6 class="text-center"><a href="https://kenney.nl/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzM3MDYxNjEucG5n/original/3CIJaX.png" loading="lazy"></a></h6>
<iframe width="720" height="450" src="https://www.youtube.com/embed/hTfPmv89y2k" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzk4OTMxLzQ1MzY4NDcucG5n/original/cBWhoW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk4OTMxLzQ1MzY4NDgucG5n/original/lF5hLX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk4OTMxLzQ1MzY4NDkucG5n/original/5F5mwu.png]]
<p><img src="https://img.itch.zone/aW1nLzU4MDAwNzIucG5n/original/dV5ckr.png" loading="lazy"><br><strong>The game where you grapple together your planet<br></strong></p>
<p><strong><img src="https://img.itch.zone/aW1nLzU4MDEzMDUucG5n/original/o4PBjV.png" loading="lazy"></strong></p>
<h3>Abstract:</h3>
<p><span></span>You move around the endless expanse of space, with relatively realistic physics. Your job I to collect to fallen parts of your old planet to build a new home. In addition, you can also collect artefacts that are saved across play sessions. Among these, you can find quite a few easter eggs and some droplets of lore. <br></p>
<h3>About:</h3>
<p>The game is gameplay focused and is all about managing the spaceship and the physics, as well as what planets you are holding. Also important is fuel consuption, keep track of how much fuel you use and try to use it efficiently. You regain some each time you save a piece of the planet. Again the merit lies in the mechanics and concept of the game, please excuse the mediocre writing. <br></p>
<h3>Game jam:</h3>
<p>This game was made for the <a href="https://itch.io/jam/blackthornprodgamejam2" target="_blank">BTP jam 2</a> so there is also a jam version that is more or less objectively worse than the post-jam version. But if you wanna play the origional jam game, it is preserved with no changes. You can check it out if your'e interested. Just remember to read the included .txt file if you are to do so.<br></p>
<h3>Tools used:</h3>
<p>-Game maker studio 2</p>
<p>-Bosca ceoil</p>
<p>-Audacity</p>
<p>- bfxr.net </p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzc5NTk5LzE5MDM5MzUuZ2lm/original/QD%2Bn3m.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc5NTk5LzE5MDM5NTUucG5n/original/993tB5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc5NTk5LzE5MDM5NTMucG5n/original/v4gZFR.png]]
<p>The walls are bare. Give. Them. Colour.</p>
<p>As a floating spray can you've discovered a goldmine: an empty and under construction museum. Go in alone or with friends and give this bare museum a splash a colour and populate the empty canvases with your life bringing art.</p>
<p>/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /</p>
<p><strong></strong><strong>Playground </strong>is my submission for the A Game By Its Cover 2018 game jam. If you find any bugs please let me know and I'll be sure to fix them as fast as I can. Any kind of feedback is welcome also!</p>
<p>This is the Famicase cover I used for inspiration:</p>
<p><img src="https://lh4.googleusercontent.com/ukxSbOIwR8MYqnx2KbdbcVUU7-Vnn6wXOet5pSYO5VYkGupufbu26rxVwS6wHiG8nUKuuAXonoDU1CbY8479Vx76R2EYegCzkhsC7sctEjhpFVaEPy2QEB89tXVcnE9gRvCwNPeK" width="346" height="317" style="" loading="lazy"></p>
<p>/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /<br></p>
<p><strong>CONTROLS</strong></p>
<p><em>Mouse / Keyboard | Gamepad (Xbox One Controller)</em></p>
<p><strong>Movement:</strong> W, A, S, D | Left Thumbstick</p>
<p><strong>Looking:</strong> Mouse | Right Thumbstick</p>
<p><strong>Sprint: </strong>Left Shift (Hold down) | Left Thumbstick Button (Hold down)</p>
<p><strong>Jump:</strong> Spacebar | A</p>
<p><strong>Switch Colour:</strong> 1-0, Mouse Wheel | Left and Right Bumper</p>
<p><strong>Switch Texture:</strong> Q and E | X and B<br></p>
<p><strong>Menu:</strong> Escape | Start</p>
<p>If you don't own an Xbox controller but another gamepad download <a href="https://github.com/x360ce/x360ce" rel="nofollow noopener" referrerpolicy="origin">https://github.com/x360ce/x360ce</a></p>
<p>/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /<br></p>
<p><strong>CREATE A MULTIPLAYER GAME (Up to 8 players)</strong><br></p>
<ol><li>Click the <em>Multiplayer </em>button.</li><li>Write into the input field a server name.</li><li>Click the<em> Create Game </em>button.</li><li> Now any of your friends can join by clicking the <em>Multiplayer </em>button and clicking on your server in the list on the right. If it doesn't show up for them, they may need to click the <em>Refresh </em>button below.</li></ol>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzA0OTI3LzE0OTk5MjYuZ2lm/original/G%2BTh4Y.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA0OTI3LzE0OTk5MjcuZ2lm/original/SI2KMW.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA0OTI3LzE0OTk5MjguZ2lm/original/5PZP%2BD.gif]]
<p>Games are ruthless things, designed to be overcome. They are mountains to be scaled. Opponents to be fought. Foes to be stomped.</p>
<p>But do they have to be?</p>
<p><em>Kirby's Dream Land</em> seems like an easy, unassuming game, but is a title that upended what the medium was about. It was an experience built so that all players would feel welcome in gaming, designed to teach people how to play and how to enjoy their time within the world of games regardless of skill level. It turned up its nose at the perception that games had to be hard to be valuable, instead showing the power to be found in allowing all to feel the joy of playing games.</p>
<p><em>Pleasant Dreams: The Welcoming Play of Kirby's Dream Land</em> offers an unofficial in-depth analysis of the elements of <em>Kirby's Dream Land's </em>design that opened it up to players who might not be traditionally "skilled" at games, as well as the writer's own story of finally feeling like games were something he could enjoy. Peppered with discussions and fond memories from developers and game journalists who grew up with Kirby, it looks to examine the attitudes around difficulty in games, the elements that made <em>Kirby's Dream Land</em> more than just an "easy" game, and how accepting yourself (with help from a cheerful puffball) can help you finally find the ability to grow.</p>
[img width=500 [https://img.itch.zone/aW1nLzI2NzQwOTYucG5n/original/RQUHNw.png]]
<p><em><strong>Pleroma is the very first commercial video game by notable and internationally beloved aesthete known primarily as The Aleks. It has been made possible through the generous support of a lovely batch of Kickstarter backers and, of course, patreon patrons.</strong></em></p>
<p><strong>Features!</strong></p>
<ul><li><em>Engage with a sprawling, gripping, freakadelic narrative written by award winning writer and IRIMA (Internationally Recognized Interactive Media Auteur) Aleks Samoylov.<br><br>
</em></li><li><em>Take in the sights and enjoy a distinctive, impressionistic, low poly presentation by award winning, classically trained painter (and IRIMA) Aleks Samoylov.<br><br>
</em></li><li><em>Enjoy experimental tunes by Internationally Recognized Musician (IRM) Monplaisir.
<br><br></em></li><li><em>Explore an atmospheric, open ended world, full of secrets, mysteries, surprises, and non-player characters eager for a chat, and do so at your own pace.<br><br>
</em></li><li><em>Solve a puzzle and unlock the “true ending,” if you’re so inclined.<br><br>
</em></li><li><em>Wield the mighty Tuner and engage in Tuner based actions!<br><br>
</em></li><li><em>Take a guided tour of a significant archaeological site, check out some abstract art in a hip gallery, mingle with important guests at a party / political summit, go spelunking, get lost in a twisted maze, or try to figure out what is really going on.</em></li></ul>
<p><strong></strong><strong>What's this game about?</strong></p>
<p>Well, it's a freakadelic, surreal "puzzle box" (it has one actual puzzle, which is optional - unless you want the "true ending" that is), a set of dreamy, interconnected environments for the player to explore, experience, and unravel at their leisure. There is no shooting in it, and no jump scares. There are some bits that people may consider mildly spooky (or even spoopy), but I would not classify it as a horror in any conventional sense, unless you consider existential angst to be horrifying, which you should. </p>
<p>If you're still unclear as to what genre this game falls into, it is definitely a first person "walking simulator," optional puzzle elements notwithstanding, you will spend the majority of the game exploring and reading stuff. There is a fair bit here to explore ... and a lot to read. </p>
<p> <br><strong>What's the story, fishbone?</strong><br><br>In Pleroma, you will take on the role of Diane Kestler, a youthful individual who has recently moved to a new part of town and is starting a new job at a niche art gallery / studio collective / research library which is (you guessed it!) hiding a rather surprising and unusual secret. I hesitate to reveal more, as I know that many folks are spoiler averse, and personally I would like players to discover and interpret this game for themselves.</p>
<p><strong>Discount Coupons Available<br></strong></p>
<p>If you currently cannot afford to buy or can't justify buying Pleroma at full price, but would still like to help financially support me as an artist and game maker, feel free to use this coupon code. It's the honor system: no strings attached (just don't resell it, obviously) and no questions asked. Just use the following URL to redeem a copy for 50% off.</p>
<p><a href="https://thealeks.itch.io/asabovesobelow">https://thealeks.itch.io/asabovesobelow</a><br></p>
<p><em>(Note: A limited number of completely free community copies is also available below).</em><br></p>
<p>Current build: 1.2<br></p>
<p>1.2 Updates:<br>- Fixed major issue with the puzzle not registering correct input (I done goofed).<br>- Some improvements to framerate in the All Hail scene on lower end machines. </p>
<p>Known bugs: <br><br>- It's possible that the Vsync option (available through the pause menu) will do the opposite of what it's supposed to. So, if the checkbox is off, Vsync is on and vice versa. If you're getting screen tearing, play around with the two settings. One of them ought to work! (I'll likely patch this up later, but it shouldn't significantly affect your experience). </p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/4v-wvo3t08o" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDY2NTExLzI5MTAyODkucG5n/original/YYCM%2F8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY2NTExLzIzODAyNzgucG5n/original/0NJ%2BSx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY2NTExLzI3NDY0MTYucG5n/original/5vE%2Bqs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY2NTExLzI5MTAyODgucG5n/original/cXQlnY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY2NTExLzI3NDY0MTcucG5n/original/vD73ZJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY2NTExLzI5MTAyOTAucG5n/original/OQRJSd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY2NTExLzI5MTAyOTEucG5n/original/ieftOl.png]]
<p class="text-center"><strong><img src="https://img.itch.zone/aW1nLzI0MjEwNjIucG5n/original/fxNE1a.png" loading="lazy"></strong>It's time to take the Plunge! Enter the adventure of Billie, the billionth prisoner of a wacky medieval mega-prison, who longs to find freedom on the other side. Rather than try to climb her way out, Billie realizes the only way to freedom is to escape further into the depths below! Dodge, dash, and defeat a wide variety of guards, creatures, and otherworldly beings bent on preventing passage in this exciting turn-based dungeon plunger!<br><br>In Plunge, players will find a new and unique experience, especially for those familiar with the puzzle and roguelike genres. Each floor is an individual challenge meant to test the very best in a battle of brawn and wits. Don't miss this opportunity to find out why Plunge was nominated for the 2017 PAX Rising showcase, the 2016 and 2017 Portland Retro Gaming Expo showcases, the 2019 PAX 10 Selection and multiple showcases with Indie Mega Booth at PAX West and GDC!<br><br><img src="https://img.itch.zone/aW1nLzI0MjEwNjQucG5n/original/vH8xf7.png" loading="lazy"><br>- Play as Billie or a variety of other cartoony characters with charming criminal charges!<br>- Turn-based roguelike action!<br>- Movement with sliding ice physics against enemies with unique and peculiar patterns!<br>- Over 400 randomly selected levels across three separate challenging sections!<br><br>- Plunge and Plunge again with fast pick-up-and-play experiences!<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDU0NDQ4LzIzMDU1MjIucG5n/original/kFJZ6P.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0NDQ4LzIzMDU1MjMucG5n/original/X7i%2B0x.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0NDQ4LzIzMDU1MjQucG5n/original/34KODw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDU0NDQ4LzIzMDU1MjUucG5n/original/iOLqp%2F.png]]
<p>Kaiser Kiwi has kidnapped your roly poly friends and taken them to his Frigid Castle and only you can save them! Explore a colorful bug-themed world infused with retro charm and chock full of inventive hazards and enemies. </p>
<h3>Reviews</h3>
<p>“Polyroll is a fantastic platformer”<br><em><strong>83/100</strong> – <a href="https://www.youtube.com/watch?v=AE6L7uuC_v8" target="_blank" rel="nofollow noopener" referrerpolicy="origin">SwitchUp</a></em></p>
<p>“You’ll be charmed by the clever level design, creative bosses, and the gorgeous retro aesthetic”<br><em><strong>4/5</strong> – <a href="https://www.heypoorplayer.com/2019/11/03/polyroll-review-pc/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Hey Poor Player</a></em></p>
<h3>Features</h3>
<ul><li>4 to 10 hours of playtime </li><li>Make your way through 36 expansive levels filled with unique enemies, hidden gems, and challenging bosses in a retro, 2D adventure</li><li>Use your super shell to spin, bounce, roll, and ricochet across the land on a mission to save your friends from the clutches of the evil Kaiser Kiwi</li><li>Defeat eleven insane bosses, including a crazed stoplight, haywire appliances, and a giant spider stuck in a computer case.</li></ul>
<p><strong>You will receive a Steam key with your purchase!</strong></p>
<h3>Also Available On</h3>
<p><a href="https://www.nintendo.com/games/detail/polyroll-switch/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzM2MjA2NTgucG5n/original/9GrPNr.png" loading="lazy"></a><br></p>
<p><a href="https://www.nintendo.com/games/detail/polyroll-switch/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Nintendo Switch</a></p><h3>Coming Soon</h3><p><iframe src="https://store.steampowered.com/widget/1820570/" frameborder="0" width="646" height="190"></iframe><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/97gDplB1nT0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjgwOTE4LzIyMjE2NzgucG5n/original/n2Pl%2F5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgwOTE4LzIyMjE2NzkucG5n/original/ofUhDN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgwOTE4LzIyMjE2ODAucG5n/original/afjOEO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgwOTE4LzIyMjE2ODMucG5n/original/9ZqFUn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgwOTE4LzIyMjE2ODIucG5n/original/5xQC95.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgwOTE4LzIyMjE2ODUucG5n/original/C7sNoH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgwOTE4LzIyMjE2ODQucG5n/original/cY1Cvo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgwOTE4LzIyMjE2ODEucG5n/original/KwM9PZ.png]]
<p>As king of the dogs your mission is to find all your loyal subjects and guide them to the portal. The second you wake up another dog, he will simultaneously follow your movements. You succeed by finding your way to the portal. You are mastering the mission if you save all your loyal subjects, find the golden bone and get to the portal.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/s9FO5Hmagr4" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTkxMTcxLzMxMjQxNzMucG5n/original/GIMvIP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTkxMTcxLzMxMjQxNzUucG5n/original/gET6n1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTkxMTcxLzMxMjQxNzYucG5n/original/Ow2gJz.png]]
<p><em>“I heard about it later, and when they called us blasphemers and demon-creators, I always thought of him. Robbie was a non-vocal robot. He couldn’t speak. He was made and sold in 1996. Those were the days before extreme specialization, so he was sold as a nursemaid—” </em><em>- I, Robot</em></p>
<p><strong></strong><strong>Positronic Potentials: The Nanny</strong></p>
<p>A solo journaling game inspired by Robbie from I, Robot by Isaac Asimov (1950)</p>
<p><strong>Content Warning: Body Image and Gender Reflection, Playing as a Non-Vocal Robot, Othering, Rejection, Loss of Agency, Child Endangerment </strong></p>
<p>Created as part of the <a href="https://itch.io/jam/fuckadobe" target="_blank">#FuckAdobeJa</a><a href="https://itch.io/jam/fuckadobe" target="_blank">m</a> using Paint 3D & Affinity.</p>
<p>In Positronic Potentials: The Nanny, you play as a non-vocal robot whose role is that of a nursemaid for a child. You weren’t necessarily designed specifically for this role, though it holds a great importance to you, as does your relationship with the one under your care. </p>
<p>You have a “positronic brain” and your mind is at least somewhat comparable to that of a human. You are able to consider yourself and the world around you. How closely your thoughts and feelings compare to humans, and how you relate to them, is up to you. </p>
<p>While not designed to be able to speak, you are able to communicate through gestures and sign language. The child you care for is able to understand you for the most part.
</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MTQ0NS82MDEzOTY4LmpwZw==/original/Mg%2BnzI.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MTQ0NS82MDEzOTc5LmpwZw==/original/tEmL8%2F.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MTQ0NS82MDEzOTgyLmpwZw==/original/bibu2n.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MTQ0NS82MDEzOTgzLmpwZw==/original/s8sFQV.jpg]]
<p><em>“I heard about it later, and when they called us blasphemers and demon-creators, I always thought of him. Robbie was a non-vocal robot. He couldn’t speak. He was made and sold in 1996. Those were the days before extreme specialization, so he was sold as a nursemaid—” </em><em>- I, Robot</em></p>
<p><strong></strong><strong>Positronic Potentials: The Nanny</strong></p>
<p>A solo journaling game inspired by Robbie from I, Robot by Isaac Asimov (1950)</p>
<p><strong>Content Warning: Body Image and Gender Reflection, Playing as a Non-Vocal Robot, Othering, Rejection, Loss of Agency, Child Endangerment </strong></p>
<p>Created as part of the <a href="https://itch.io/jam/fuckadobe" target="_blank">#FuckAdobeJa</a><a href="https://itch.io/jam/fuckadobe" target="_blank">m</a> using Paint 3D & Affinity.</p>
<p>In Positronic Potentials: The Nanny, you play as a non-vocal robot whose role is that of a nursemaid for a child. You weren’t necessarily designed specifically for this role, though it holds a great importance to you, as does your relationship with the one under your care. </p>
<p>You have a “positronic brain” and your mind is at least somewhat comparable to that of a human. You are able to consider yourself and the world around you. How closely your thoughts and feelings compare to humans, and how you relate to them, is up to you. </p>
<p>While not designed to be able to speak, you are able to communicate through gestures and sign language. The child you care for is able to understand you for the most part.
</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MTQ0NS82MDEzOTY4LmpwZw==/original/Mg%2BnzI.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MTQ0NS82MDEzOTc5LmpwZw==/original/tEmL8%2F.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MTQ0NS82MDEzOTgyLmpwZw==/original/bibu2n.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MTQ0NS82MDEzOTgzLmpwZw==/original/s8sFQV.jpg]]
<p>Possession is a traditional turn-based roguelike where you play as a ghost trying to make your way to the surface. You are incredibly frail, but have one advantage: you can possess the bodies of the monsters you encounter, and use their strength and abilities as your own. Hop from body to body as you attempt to make it back to the surface.</p>
<p>Features:<br></p>
<p><img src="http://possession2.com/images/eyebeast.png" loading="lazy">Dozens of possessable monsters, from the horrifying to the hilarious, with a wide variety of powers. <br><img src="http://possession2.com/images/sarcophagus.png" loading="lazy">Special themed levels with unique hazards, creatures and layouts. Randomly generated, and each floor has multiple possible levels, so each playthrough is different!<br><img src="http://possession2.com/images/chest.png" loading="lazy">Item-less gameplay. The dead have no need for worldly possessions, they just slow you down. <br><img src="http://possession2.com/images/ghost.png" loading="lazy">Quick to pick up and play. Unlike most roguelikes, Possession doesn't require you to memorize dozens of weird key commands, or puzzle over confusing skill and ability lists before you start playing. <br><img src="http://possession2.com/images/fungalwizard.png" loading="lazy">Entirely playable with just the keyboard, just the mouse, or a combination of the two. <br><img src="http://possession2.com/images/pirate.png" loading="lazy">Mod support! Add your own creatures, powers and special levels, or change the ones already there. <br>@ Choice between ASCII or Graphical mode, for the oldschool roguelike fans.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/PIHmR2q8taY" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMzUvMjI5MDQzMS5wbmc=/original/tlbaHA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMzUvMjI5MDQzMC5wbmc=/original/5LL4S0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMzUvMjI5MDQzMy5wbmc=/original/nCEmm9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMzUvMjI5MDQyOC5wbmc=/original/EnvGYF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMzUvMjI5MDQzNC5wbmc=/original/vAdZ1E.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMzUvMjI5MDQyOS5wbmc=/original/6uDDCC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIxMzUvMjI5MDQzMi5wbmc=/original/zPmH9l.png]]
<p>Potion Prodigy is a 2D point and click game with a spooky twist... make potions and chill in this cozy cavern environment by completing small tasks and find hidden gems!</p>
<p>Potion Prodigy is a game made by me! (Katie Wright) with a little help from the wonderfully talented folk at London South Bank University. This was made with care over the course of a year as part of my bachelors degree and is currently still in Beta, but any feedback or comments would be tremendously appreciated so if you enjoyed this please comment below your thoughts and opinions. </p>
<p>CREDITS~~</p>
<p>Art, Production, UI and 3D ~~ </p>
<p>Katie Wright (twitter; <a href="https://twitter.com/RoseColouredArt" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/RoseColouredArt</a> )</p>
<p>Main Music ~~ </p>
<p>George Ricci (twitter; <a href="https://twitter.com/ActIshikawa" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/ActIshikawa</a>)</p>
<p>Programming assistance ~~ </p>
<p>Paul Sinnett </p>
<p>Semra Usanmaz (<a href="https://twitter.com/UsanmazSemra" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/UsanmazSemra</a>)</p>
<p>Additional support ~~</p>
<p>Ste Curran </p>
<p>Andy Lemon </p>
<p>Lara Lema</p>
<p>Robert Ramsey </p>
<p>Special thanks also to the graduates of London South Bank University games design and development course for all the feedback and support throughout this project, I couldn't have gotten through this without your help. </p>
<p>Additional resources ~~</p>
<p>All game and UI sound fx; </p>
<p><a href="http://freesound.org/" rel="nofollow noopener" referrerpolicy="origin">http://freesound.org/</a> </p>
<p><a href="https://www.zapsplat.com/" rel="nofollow noopener" referrerpolicy="origin">https://www.zapsplat.com/</a></p>
<p>Particle effects;</p>
<p><a href="https://assetstore.unity.com/packages/vfx/particles/fantasy-effect-50310" rel="nofollow noopener" referrerpolicy="origin">https://assetstore.unity.com/packages/vfx/particles/fantasy-effect-50310</a></p>
<p><a href="https://assetstore.unity.com/packages/vfx/particles/cartoon-fx-free-109565" rel="nofollow noopener" referrerpolicy="origin">https://assetstore.unity.com/packages/vfx/particles/cartoon-fx-free-109565</a></p>
<p>Font;</p>
<p><a href="https://www.fontspace.com/adigiana-ui-font-f22288" rel="nofollow noopener" referrerpolicy="origin">https://www.fontspace.com/adigiana-ui-font-f22288</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/zV3vOBG3S8s" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NjkyNi82MDQ4Nzk4LnBuZw==/original/cXliHw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NjkyNi82MDQ4ODAxLnBuZw==/original/fYcRzx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NjkyNi82MDQ4ODA1LnBuZw==/original/FdaJJG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NjkyNi82MDQ4ODExLnBuZw==/original/HtqJkU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NjkyNi82MDQ4ODE2LnBuZw==/original/aY2%2BTx.png]]
<p>Named for the transition of wakefulness to sleep, <em>Praedormitium</em> is a tabletop roleplaying game inspired by the experience of lucid dreaming. Players portray Hypnopomps, characters with the innate ability to manipulate the Realms of Dream as they travel through it on strange and wonderful adventures.</p>
<p><em>Praedormitium</em> uses a deck of tarot cards as the basis of its resolution system, cooperative play, and the unlimited power of players' imaginations to build a cohesive narrative experience. Anything is possible in dreams, and the game can be as wild or whimsical, as dark or surreal as the players choose to make it.</p>
<p>This Quickstart guide has everything you need to jump right into playing <em>Praedormitium</em>, including the basic rule system, character creation, a sample character sheet, tarot interpretation charts and background information on Hypnopomps and how they fit into the Realms of Dream.<br></p>
[img width=500 [https://img.itch.zone/aW1nLzQxMjIyMzEuanBn/original/dl3WXd.jpg]]
<p><em>In the year 45XX, deep space explorers entered a wormhole. They sent back an unclear transmission describing an artifact of immense power. They were never heard from again. The year is now 55XX. Humanity has spent years training explorers to enter the wormhole and retrieve the artifact. So far none have succeeded. </em><em>Is it your turn to search for the artifact.</em></p>
<p>PRAGMA is a fast paced bullet-hell boss-rush game with a minimalistic art style.</p>
<p>Music created by the amazing Nolan Steinhart and Alexander Schieberl (Zanfalcon), you can listen to the OST here:
<iframe width="100%" height="300" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/playlists/1066134535&color=%23ff0000&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&show_teaser=true&visual=true"></iframe></p>
<p><em>This game requires a mouse to play!</em></p>
<p><em>Due to the nature of how the graphics are rendered, the game may not display correctly on all graphics cards. Unfortunately, this is out of my control. Sorry for any issues you may have!</em></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjM1MTcyLzM1NDA3NDMucG5n/original/8iEss8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM1MTcyLzM1MjI2MTAucG5n/original/nslwRh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM1MTcyLzM1NDcwMDMucG5n/original/Fdl%2BEV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM1MTcyLzM1NDc2NTYucG5n/original/yVwc%2FQ.png]]
<h1>Predestination is now available on itch.io!</h1>
<p></p>
<p><strong><em>Predestination</em> is a turn-based sci-fi 4X game set in the distant past of our own galaxy. Ships from countless races are flung back in time by a powerful hostile race known as the Revenants, and must now work to rebuild their empires and somehow stop the Revenants in the past. Explore the galaxy, colonise habitable worlds, meet alien races, and wage war.</strong></p>
<p><em>Predestination</em> blends the gameplay of classic titles like <em>Master of Orion II</em> with a narrative storyline and new game mechanics 4X fans have been waiting years to get their hands on: A 3D galaxy map, turn-based tactical fleet combat, advanced planetary exploration and colonisation gameplay, terraforming, a seamless 3D ship designer, and many other features.</p>
<p><br></p>
<h1>Ongoing development plans</h1>
<p><em>Predestination</em> is now feature-complete, with all major features implemented thanks to incredible backer support and feedback, but development doesn't stop here! We'll continue adding free updates and new content throughout 2020 in addition to regular bugfixes and quality of life improvements. We'll release new challenge maps, further episodes singleplayer story campaign, bonus ships and artwork, and of course the custom content designed by our Kickstarter backers.</p>
<p>Brain and Nerd is committed to supporting <em>Predestination</em> for as long as possible and we aim to begin working on DLC and expansions with all new gameplay later this year. We'll also be investigating adding multiplayer and modding tools in free updates after the backer content is complete. We have some very exciting plans for future content, such as space monsters and races with living bioships, and we also constantly turn to our community for ideas. Stay with us and keep an eye on our development updates for more news as we post it.<br><br><br><strong>LEARN MORE: </strong><a href="http://predestinationgame.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><strong></strong></a><strong><a href="http://predestinationgame.com" rel="nofollow noopener" referrerpolicy="origin">http://predestinationgame.com</a></strong></p>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/_vnXxo6WbPI" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2MTgzLzI4NTEyNDEuanBn/original/fV%2B7tM.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2MTgzLzI4NTEyNDQuanBn/original/IpNoZa.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2MTgzLzI4NTEyNDIuanBn/original/DOrpRJ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2MTgzLzI4NTEyNDUuanBn/original/8zZw8W.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2MTgzLzI4NTEyNDcuanBn/original/ZhPWSj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2MTgzLzI4NTEyNDguanBn/original/VRVIFT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2MTgzLzI4NTEyNDMuanBn/original/RBnG%2FV.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2MTgzLzI4NTEyNDYuanBn/original/S%2F3Tr4.jpg]]
<p>Prehistoric Dude is a mini metroidvania game during Stone Age which tells the story of Dude, a friendly Caveman who loves ham!<br></p>
<p>Go with Dude on an adventure to Help him to take back his lunch, which was stolen by a giant dinosaur! Now hungry and without any ham he will need to face many dangerous enemies while traveling through caves and forests, getting some tools and power ups to assist him during this journey.</p>
<p>Explore 3 different scenarios while looking for Dude’s delicious lunch! Face enemies, master obstacles, learn new skills and make Dude even stronger!</p>
<p>FEATURES</p>
<ul><li>Visit 3 different scenarios during Stone Age;</li><li>Colorful 8-bit style graphics; </li><li>Vibrant chiptune music;</li><li>7 Different special items with helpful abilities;</li><li>Many different Items to collect (Extra Hearts, Extra Stamina, and others);</li><li>Alternative paths.</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/O3PJE1rqMEs" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzAzNDA1LzM4ODUxMjMucG5n/original/ATAkt1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzNDA1LzM4ODUxMjkucG5n/original/LEDB2%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzNDA1LzM4ODUxMjYucG5n/original/sIvo1Y.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzNDA1LzM4ODUxMjgucG5n/original/eDa4fx.png]]
<p>my first real release is coming soon to android :) <a href="https://play.google.com/store/apps/details?id=org.smtgames.blockstacker" rel="nofollow noopener" referrerpolicy="origin">https://play.google.com/store/apps/details?id=org.smtgames.blockstacker</a></p><h3> About</h3>
<p>Deeper and deeper into an infinite basement of increasingly difficult enemies, how deep can you go?</p>
<p>Pressure is a simple, high-score based arcade FPS with easy to learn but rewarding projectile mechanics<br></p>
<p>Search the maze-like floors for the green zone to drop into the next level and receive half your health back</p>
<p>Chaining combos of kills, hitting long range shots or bouncing shots off walls into enemies will also heal you</p>
<p>Enemies will hit harder and increase their spawns as you reach deeper and deeper floors</p>
<p>Watch out for harder enemy types as you go deeper</p>
<h3>Controls </h3>
<p><strong>W</strong>, <strong>A</strong>, <strong>S</strong>, and <strong>D</strong> to move </p>
<p><strong>Left click</strong> to shoot </p>
<p><strong>Space </strong>to jump </p>
<p><strong>Heal</strong> by entering the next stage (green zone), chaining combo kills, hitting a long range shot or bouncing shots off of walls into enemies<br></p>
<p>You can <strong>interupt </strong>an enemy charging up to quickly shoot again by shooting it while it is charging/flashing<br><br></p>
<p><br></p>
<p><br></p>
<p>Originally made during <a href="https://ldjam.com/events/ludum-dare/48/pressure" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Ludum Dare 48</a> in 48 hours.</p>
<p><br></p>
<p></p>
[img width=500 [https://img.itch.zone/aW1nLzU3NzI1NDcuanBn/original/L7opff.jpg]]
<p>Escape the void, trust nothing.</p>
<p>-1 player adventure game with cosmic horror vibes</p>
<p>-Keyboard and mouse recommended, game pad compatible </p>
<p>-More chapters coming soon with harder challenges and spicier spooks. </p>
<p>-Content Warning: claustrophobia </p>
<p>Designed and Developed by Grant Andrew Ervin<br><br><br></p><p>
Submitted to the Halloween 2021 Game Jam:
<a href="https://itch.io/jam/halloween-game-jam-by-official-horror-video-games">https://itch.io/jam/halloween-game-jam-by-official-horror-video-games
</a><em>If streamed or shared online make sure to follow these steps for re-posting
</em>
</p>
<p><em>1. Upload pictures/videos of your game to <strong>Instagram </strong>as regular posts (don't post as stories, reels, etc.) <strong>You must have a clean profile</strong>. Feel free to make a special profile for your game!</em>
</p>
<p><em>2. Tag us (<strong>@horror.video.games</strong>) to your post and use both hashtags<strong> #officialhorrorvideogames #horrorvideogames</strong></em>
</p>
<p><em>3. We re-post you!!!</em>
</p>
<p><em>(4. Optional) Tag us on Twitter (@horrorvideogam) and use both hashtags #officialhorrorvideogames #horrorvideogames</em>
</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTkxNDE1LzMxMjYwMTAuanBn/original/8DqnVk.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTkxNDE1LzMxMjYwMDkucG5n/original/eHnHDr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTkxNDE1LzMxMzI1ODguZ2lm/original/XuHTet.gif]]
<p><em>You and your friends saved the kingdom. Now, peace awaits. Yet the Hero has fixed his gaze on you and declared his love. Unable to deny him, you have become his trophy for his valiant bravery in the war. </em></p>
<p><em>You are his Prize.</em></p>
<p>Prize is a game about a person unrequitedly loved by the Hero. Bound to him, you live your life in his shadow. But what is it like to be the hero's trophy?</p>
<p>This solo journaling game takes you through your life as his Prize. Explore your life, its greatest events, and harrowing moments, with journalling prompts to guide your experience. </p>
[img width=500 [https://img.itch.zone/aW1nLzUxNDEyODQucG5n/original/LkrhRh.png]]
<p>You've forgotten to write your assigned essay...again! Quickly type out <em>SOMETHING</em> to hand the teacher before she collects them in 1 minute!<br><br>A simple concept for a typing game that I wanted to get out of my head and into something tangible. Quickly type out words relevant to the subject of your essay to increase your grade!<br><br>Only controls are using the keyboard to type and <em>Escape</em> to quit.<br><br>Credits:</p>
<p><a href="http://twitter.com/wyver9" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@wyver9</a> for the music!</p><p><br></p><p>NOTE: There's only two categories at the moment but I plan to add more soon!</p>
[img width=500 [https://img.itch.zone/aW1nLzM1Mjg1MDIuZ2lm/original/%2FSD0Ib.gif]]
<p class="text-center"><img src="https://img.itch.zone/aW1nLzc4OTYxMTYucG5n/original/XqhlPZ.png" alt="Accept Your Destiny" title="Accept Your Destiny" loading="lazy"></p>
<p><em>Nobody knows how the Wizard came to power. For as long as anyone can remember, his dark tower has stood over the empire’s capital, and his armies have brutally enforced his will. His dark creatures lurk in the wilderness, preying on unprepared travellers. His dominion is total. </em></p>
<p><em>Some time ago, a Hero rose from humble beginnings to challenge the Wizard. The Hero raised an army and took the fight to the capital. They were defeated. The army was scattered. The Hero died at the Wizard’s hands. </em></p>
<p><em>But it is said that the Hero’s spirit was reborn in the body of a child born that same day. In time, they will grow up and face the Wizard once more. They may succeed. They will certainly die. And they will be reborn again. It is written. So it will be. </em></p>
<p><em>You were born in the same village as the Hero. You were born around the time they died.</em></p>
<p><em>Your coming-of-age celebration is in one week. At this ceremony, the elders will divine your destiny so that you will know the path you must walk. The destiny revealed during the ceremony is never wrong. Maybe you are the Hero. Maybe you are destined to die again. </em></p>
<p><em>But maybe, before destiny is written, it can be changed...</em></p>
<p class="text-center">*</p>
<p><em>Prologue </em>is a storytelling card game for <strong>2+ players</strong>, utilising a standard <strong>deck of playing cards</strong>. You will tell the story of a small group of young adults, and a tight knit community on the verge of major upheaval, and find out what happens to each in their future.</p>
<p><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzc4OTYxMzgucG5n/original/JY3Mpp.png" alt=" 2+ Players 2-3 Hours, One Session Ages 12+ No GM or Preparation Required Dark Fantasy Compete with Friends Draw Cards Tell a Story Together" title=" 2+ Players 2-3 Hours, One Session Ages 12+ No GM or Preparation Required Dark Fantasy Compete with Friends Draw Cards Tell a Story Together" loading="lazy"><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzc4OTYxNDQucG5n/original/xYgmky.png" alt="What's Included" title="What's Included" loading="lazy"><br></p>
<p>Your download of <em>Prologue </em>includes a copy of the rules and a full set of illustrated, print-at-home Tarot-sized cards to tell your story with. </p><p>If you don't want to print the cards, you can play <em>Prologue</em> using a <strong>standard deck of playing cards, including jokers</strong>, and the card tables included with the rules.</p>
<figure><img src="https://img.itch.zone/aW1nLzc4OTYxNjkucG5n/original/bA%2B0gy.png" style="color: inherit; font-size: inherit" alt="Second Edition" title="Second Edition" loading="lazy"></figure>
<p>This is the 2nd Edition of <em>Prologue</em>, featuring revised mechanics, re-written rules, and new prompts. Your purchase also includes a copy of the 1st Edition.</p>
<figure><img src="https://img.itch.zone/aW1nLzc4OTYxNTgucG5n/original/XV%2F8TJ.png" alt="Roadmap" title="Roadmap" style="color: inherit; font-size: inherit" loading="lazy"></figure>
<p>Future updates of <em>Prologue</em> 2nd Edition will include:</p>
<ul><li><strong style="">Print-and-Play Cards:</strong><del> A full set of Tarot-sized cards with art and card effects that you can print yourself (including Question Cards and X-Card).</del> Now available for download.</li><li><strong>Print-on-Demand Game:</strong> A professionally printed boxed game produced through The Game Crafter.</li></ul>
<p class="text-center">---</p>
<p>I respectfully acknowledge the Wurundjeri people and the Boon wurrung / Bunurong people of the Kulin Nations as the traditional owners of the land on which the majority of my work takes place. I pay respects to elders past, present, and emerging. Sovereignty was never ceded.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDQ5OTE1Lzc4OTYyMTUucG5n/original/YFTeQU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQ5OTE1Lzc4OTYyMTQucG5n/original/poNxbg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQ5OTE1Lzc4OTYyMTIucG5n/original/581kh8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQ5OTE1Lzc4OTYyMTMucG5n/original/WjL25p.png]]
<h2>A Storytelling Card Game About Refusing Your Destiny.</h2>
<p><strong>By <a href="http://twitter.com/mqsalmon" target="_blank" rel="nofollow noopener">Mitchell Salmon</a>.</strong></p>
<p>
</p>
<p><em></em><em>Nobody knows how the Wizard came to power. For as long as anyone can remember, his dark tower has stood over the empire’s capital, and his armies have brutally enforced his will. His dark creatures lurk in the wilderness, preying on unprepared travellers. His dominion is total. </em></p>
<p><em>Two decades ago, a Hero rose from humble beginnings to challenge the Wizard. The Hero raised an army and took the fight to the capital. They were defeated. The army was scattered. The Hero died at the Wizard’s hands. But it is said that their spirit was reborn that same day; in time they will grow up and face the Wizard once more. They will likely fail. They will certainly die. And they will be reborn again. It is written. So it will be. </em></p>
<p><em>We were born in the same village as the Hero. We were all born on the same day that they died. The village elders believe that one of us is the Hero reborn. </em></p>
<p><em>Our coming-of-age is in one week. At this ceremony, the elders will divine our destinies through ritual and prayer. Some of us will live great lives, traversing the world, seeking fame, doing good. Some of us will endure lives of hardship and toil. Some of us may become a blight on the world. The destinies revealed to us during the ceremony are never wrong. Once they are written, so they will be. And then the elders will know which one of us is the Hero. </em></p>
<p><em>This is the story of the week before our coming-of-age, and the reading of our destinies. But maybe, before destiny is written, it can be changed...</em></p>
<p class="text-center">*</p>
<p><em>Prologue </em>is a storytelling card game for <strong>2-4 players</strong>, utilising a standard <strong>deck of playing cards</strong>. You will tell the story of a small group of young adults, and a tight knit community on the verge of major upheaval, and find out what happens to each in their future.</p>
<table>
<tbody><tr>
<td><h3>Details</h3></td>
<td><h3>Themes</h3></td>
</tr>
<tr>
<td>
<p><img src="http://gamesandgood.co/image/icon/group.svg" style="height: 16px" loading="lazy"> 2-4 Players</p>
<p><img src="http://gamesandgood.co/image/icon/time.svg" style="height: 16px" loading="lazy"> 2-3 Hours, 1 Session</p>
<p><img src="http://gamesandgood.co/image/icon/player.svg" style="height: 16px" loading="lazy"> Ages 12+</p><p><img src="http://gamesandgood.co/image/icon/gmless.svg" style="max-width: 100%; height: 16px; font-size: 14px; background-color: rgb(255, 255, 255)" loading="lazy"> No GM or preparation required<br></p>
</td>
<td>
<p><img src="http://gamesandgood.co/image/icon/sword.svg" style="height: 16px" loading="lazy"> Dark fantasy</p>
<p><img src="http://gamesandgood.co/image/icon/faith.svg" style="height: 16px" loading="lazy"> Faith and religion</p>
<p><img src="http://gamesandgood.co/image/icon/chain.svg" style="height: 16px" loading="lazy"> Break free from destiny</p>
<p><img src="http://gamesandgood.co/image/icon/compete.svg" style="height: 16px" loading="lazy"> Compete with friends<br></p>
<p><img src="http://gamesandgood.co/image/icon/cards.svg" style="height: 16px" loading="lazy"> Draw cards to find out what happens</p>
<p><img src="http://gamesandgood.co/image/icon/book.svg" style="height: 16px" loading="lazy"> Tell a story together</p>
</td>
</tr>
</tbody></table>
<h3>What's Included</h3>
<p>Your download of <em>Prologue </em>includes a .pdf copy of the rules and card tables to give meaning to a deck of playing cards. </p>
<p>You need a <strong>standard deck of playing cards, including Jokers</strong>.</p>
<p><em>Prologue</em> has an <strong>optional </strong>character sheet for helping kick-start play. This character sheet asks some basic questions about your character and their relationships with other characters.</p>
<p class="text-center">---</p>
<p>I respectfully acknowledge the Wurundjeri people and the Boon Wurrung / Bunurong people of the Kulin Nations as the traditional owners of the land on which the majority of my work takes place. I pay respects to elders past, present, and emerging. Sovereignty was never ceded.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDQ5OTE1LzM3MDEyMDguanBn/original/GSAUkh.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQ5OTE1LzM3MDEyMDkuanBn/original/WghY06.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQ5OTE1LzM3MDEyMTAuanBn/original/dO096c.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQ5OTE1LzM3MDEyMTEuanBn/original/7YOY4M.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQ5OTE1LzM3MDEyMTIuanBn/original/iE1H5O.jpg]]
<p>In <em>Pull Me From the Earth</em>, you and another person will use a deck of playing cards to tell a love story between a long-resting bog body and the person who unearths it.</p>
<p>(Made for #QueerUndeadJam)</p>
[img width=500 [https://img.itch.zone/aW1nLzQ0NzA4MTgucG5n/original/hJeS4v.png]]
<p class="text-justify">Pupper's Garden is a little game about a little pupper with puppersized dreams. Spending her days watching through the window as people dig holes in their gardens and hide things within, only for happy little greens to soon spout in their place, until one day she decides that she wants to have fun outside too and with the help of a moo, make a garden of her own. ♥</p>
<p><br></p>
<h1 class="text-center">About the Game</h1>
<p class="text-justify">This is a game that I made mainly for myself, to fulfill a niche that I missed from my own childhood, but as I worked on it I started to figure that maybe it may be able to bring smiles to others too. I never intended this to be a binge game, but rather one you pick up, play for a little bit and then set aside for later. A game of positivity, playfulness and discovery, that doesn't punish or scold you, nor try to push you to maximise some arbitrary number. Very simply I wanted to make a game that was just plain - nice - and I hope that I've achieved that.</p>
<p class="text-justify">On the surface it is a simple game, but there's hidden things and complexity to find, which I'm hoping will bring just that bit more spark into playing it. I won't give away all the secrets here, though I will say that it does obey the universal rule of video games, that "if there is a pupper in the game...".</p>
<p class="text-justify">You will help pupper tend her garden and grow herself tasty treats and pretty friends. Some will grow and then go, others will stay and bring their boon more than once, though be careful as once they have been picked that first time, interacting again while not fully grown will remove them to make space for other friends. Make sure to manage your box as there's only limited space, new seeds magically appearing therein each morning or when you harvest something... that is if there is space of course.</p>
<p class="text-justify">Word of advice though, this is not a game for the instant gratification lover or the point - or achievement chaser. This game is just simply - nice.</p>
<p><br></p>
<h1 class="text-center">Control</h1>
<p class="text-justify">I sought to make a control scheme which remained very simplistic, thus there is very few keys to worry about and everything you do is done via these.<strong><br></strong></p>
<p><strong><br></strong><br></p>
<ul><li><strong>Arrow Keys:</strong> Move / Menu navigation</li><li><strong>Space:</strong> Interact / Select</li><li><strong>Escape:</strong> Back / Quit</li><li><strong>+/- :</strong> Adjust music volume, use CTRL to finetune</li></ul>
<p>Music is adjusted by 5% at a time unless CTRL is held, in which case it's only adjusted by 1% instead.</p>
<p class="text-justify">If you seek to adjust the game volume as a whole, please use the system audio sliders instead.</p>
<p><br></p>
<h1 class="text-center">Special Thanks</h1>
<p class="text-justify">Special thanks goes to Maxine Red, both for her help with opinions and testing, as well as for the background music and fanfare jingles which she created.</p>
<p class="text-justify">Also thanks to my patreons for their support and encouragement. ♥</p>
<ul><li>Atillite</li><li>Maxine Red</li><li>RandomHato</li><li>Lady Random</li><li>Ava</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/auJ5hwEDZ64" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjMxMzkxLzMzNzExNzIucG5n/original/Ngf2QO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMxMzkxLzMzNzExNzMucG5n/original/bN4cjO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMxMzkxLzMzNzExNzQucG5n/original/yi0P4K.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMxMzkxLzMzNzExNzkucG5n/original/Tz4PM1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMxMzkxLzMzNzExODIucG5n/original/Ly8Jbo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMxMzkxLzMzNzExODkucG5n/original/0GtXDc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMxMzkxLzMzNzExOTAucG5n/original/zyRB1k.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMxMzkxLzMzNzExOTMucG5n/original/xSUsxQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMxMzkxLzMzNzExOTYucG5n/original/ZssU2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMxMzkxLzMzNzEyMDEucG5n/original/ZyUkcQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMxMzkxLzMzNzEyMDIucG5n/original/8JLPg4.png]]
<p>
A challenging slider puzzle. Slide blocks into their proper hole. Only the brightest will succeed.
</p>
<p>
Currently over twenty levels!</p><p><br></p><p><br><br><br>No further game updates.</p>
<p>
<br>
</p>
<p>
<br>
</p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjMxMzQvOTE4MDUucG5n/original/tLFjzf.png]]
<p><img src="https://img.itch.zone/aW1nLzQ2MTI0NDIucG5n/original/lD6iW%2F.png" loading="lazy"><img src="https://img.itch.zone/aW1nLzQ2MTI0NDgucG5n/original/N5tPPB.png" loading="lazy"></p>
<h1>PUSH BLOCKS. FORM SQUARES. OR DIE TRYING!</h1>
<p><span class="">Pushamo is an arcade push-em-up that challenges you to organize different shapes into squares to clear blocks and earn points! It's no easy task, though - as you push on, shapes will come faster and more frequently until you find yourself as overwhelmed as you are engrossed.</span></p>
<ul><li>Satisfying core game loop: <em>An creative take on the block-clearing genre that offers endless replayability and high-scoring<br></em></li><li>Many ways to play: <em>Point Rush, 2P Coop, Puzzles, Challenges, and more modes lead to a massive variety of play experiences<br></em></li><li>8 bits of awesome: <em>Authentic retro experience built in PICO-8</em></li></ul>
<p class="text-center"><br><img src="https://img.itch.zone/aW1nLzQ0OTkyNzcuZ2lm/original/F6VaiV.gif" loading="lazy"><br></p>
<h1>CREATE HUGE COMBOS</h1>
<p>By forming large clears you can earn massive amounts of points and unleash a shower of visual effects. This strategic combo system also rewards you for all kinds of special clears, from Risky to Tidy to Back 2 Back, and many more!</p>
<p>Celebrate and share your most awesome combos with the press of a button - F4 - to record the last 8 seconds of gameplay as a lightweight GIF!<br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ0ODY3ODcuZ2lm/original/9lWHQj.gif" alt="CREATE HUGE COMBOS" title="CREATE HUGE COMBOS" loading="lazy"><br></p>
<h1>BREAK THE RULES</h1>
<p>Challenge Mode presents over a dozen diverse <span class="">rule variations on the already addicting core gameplay! These inventive scenarios range from wonderfully wacky to fiendishly difficult<em> </em>to ingeniously imaginative:<em><br></em></span></p>
<ul><li><em><span class="">Swap out the familiar tetrominos with some less orthodox shapes<br></span></em></li><li><em><span class=""><span class="">All the blocks are invisible after stopping<br></span></span></em></li><li><em><span class=""><span class="">You're also playing snake now, at the same time<br></span></span></em></li><li><span class=""><span class=""><em>And many more!<br></em></span></span></li></ul>
<p class="text-center"><span class=""><span class=""><em><img src="https://img.itch.zone/aW1nLzQ0ODY3MjMuZ2lm/original/kcGEdU.gif" alt="BREAK THE RULES IN CHALLENGE MODE" title="BREAK THE RULES IN CHALLENGE MODE" loading="lazy"></em></span><em><span class=""></span></em></span></p>
<h1>SIT BACK AND RELAX</h1>
<p>Pushamo also offers plenty of calmer experiences for when you want to chill and zone out, and want a less stressful time:</p>
<ul><li><em>Play endlessly without blocks ever increasing in speed in Zendless mode.<br></em></li><li><em>Think over each and every move in the tactical Turn-Based mode! Here, blocks will wait patiently for you to decide your next move before they go anywhere.</em></li><li><em>Ponder over the perplexing Puzzle mode, where you're presented with 32 hand-crafted puzzles that ask you to use all blocks in a single clear.</em></li></ul>
<p class="text-center"><em><img src="https://img.itch.zone/aW1nLzQ0ODY2ODIuZ2lm/original/dkdqqc.gif" alt="SIT BACK AND RELAX" title="SIT BACK AND RELAX" loading="lazy"></em></p>
<h1>CUSTOMIZE YOUR EXPERIENCE</h1>
<ul><li><em>Choose between two awesome music tracks<br></em></li><li><em>Select your favorite color palette from a choice of 16, including 8 different pride patterns!</em></li><li><em>Turn off (or multiply!) all visual effects including particles, screen shake, and background animation</em></li><li><em>Reclaim your free time with a handy "unlock all" option, to let you try all Pushamo has to offer without worrying about score requirements getting in the way<br></em></li><li><em>Turn on god mode and laugh in the face of death</em></li></ul>
<p class="text-center"><br><img src="https://img.itch.zone/aW1nLzQ0ODY1OTEuZ2lm/original/J2NHFA.gif" alt="CUSTOMIZE YOUR EXPERIENCE" title="CUSTOMIZE YOUR EXPERIENCE" loading="lazy"></p>
<h1>GAMES FOR GOOD</h1>
<p><span class="">100% of the sales will be given to the Autistic Self-Advocacy Network! They are </span>an autistic-led nonprofit that helps supports disability rights and empower autistic people across the world! Additionally, each copy purchased will create a community copy, providing the game to someone who can't afford it!<br></p>
<h1>BEHIND THE GAME</h1>
<ul><li>Created sustainably by Bean Borg (<em>they/them)</em></li><li>Debut title of solo indie studio <a href="https://twitter.com/beanborg" rel="nofollow noopener">Neuro Diversion</a></li><li>Music by <a href="https://elyon.itch.io/">Emma</a><em> </em><em>(she/her) </em>and <a href="https://www.grubermusic.com/" rel="nofollow noopener">Gruber</a><em> (he/him)</em></li><li>Made in PICO-8</li></ul>
<h5>MORE MEDIA</h5>
<ul><li>Try out the demo <a href="https://www.lexaloffle.com/bbs/?tid=40500" rel="nofollow noopener">here</a>!</li><li>5 minutes of gameplay <a href="https://www.youtube.com/watch?v=PdP28g0t1SA" rel="nofollow noopener">video<br></a></li><li><span class=""></span><a href="https://twitter.com/NeuroDiversion/status/1314966793543352322" rel="nofollow noopener">Twitter thread</a> detailing several features and game modes</li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTk1NjkucG5n/original/%2BxGqce.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTkyMzgucG5n/original/YWBEQ4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTkyNDIucG5n/original/2YsXtl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTkyNDAucG5n/original/yGz3P9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTkyNDEucG5n/original/ulRjBB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTkyNDUucG5n/original/EH%2Fb7u.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTkyNDMucG5n/original/ipJ%2FeV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTkyNDQucG5n/original/QAwI%2Bk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTkyMzcucG5n/original/Hy%2FBSS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTkyMzkucG5n/original/w1DQ4A.png]]
<p><img src="https://img.itch.zone/aW1nLzQ2MTI0NDIucG5n/original/lD6iW%2F.png" loading="lazy"><img src="https://img.itch.zone/aW1nLzQ2MTI0NDgucG5n/original/N5tPPB.png" loading="lazy"></p>
<h1>PUSH BLOCKS. FORM SQUARES. OR DIE TRYING!</h1>
<p><span class="">Pushamo is an arcade push-em-up that challenges you to organize different shapes into squares to clear blocks and earn points! It's no easy task, though - as you push on, shapes will come faster and more frequently until you find yourself as overwhelmed as you are engrossed.</span></p>
<ul><li>Satisfying core game loop: <em>An creative take on the block-clearing genre that offers endless replayability and high-scoring<br></em></li><li>Many ways to play: <em>Point Rush, 2P Coop, Puzzles, Challenges, and more modes lead to a massive variety of play experiences<br></em></li><li>8 bits of awesome: <em>Authentic retro experience built in PICO-8</em></li></ul>
<p class="text-center"><br><img src="https://img.itch.zone/aW1nLzQ0OTkyNzcuZ2lm/original/F6VaiV.gif" loading="lazy"><br></p>
<h1>CREATE HUGE COMBOS</h1>
<p>By forming large clears you can earn massive amounts of points and unleash a shower of visual effects. This strategic combo system also rewards you for all kinds of special clears, from Risky to Tidy to Back 2 Back, and many more!</p>
<p>Celebrate and share your most awesome combos with the press of a button - F4 - to record the last 8 seconds of gameplay as a lightweight GIF!<br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ0ODY3ODcuZ2lm/original/9lWHQj.gif" alt="CREATE HUGE COMBOS" title="CREATE HUGE COMBOS" loading="lazy"><br></p>
<h1>BREAK THE RULES</h1>
<p>Challenge Mode presents over a dozen diverse <span class="">rule variations on the already addicting core gameplay! These inventive scenarios range from wonderfully wacky to fiendishly difficult<em> </em>to ingeniously imaginative:<em><br></em></span></p>
<ul><li><em><span class="">Swap out the familiar tetrominos with some less orthodox shapes<br></span></em></li><li><em><span class=""><span class="">All the blocks are invisible after stopping<br></span></span></em></li><li><em><span class=""><span class="">You're also playing snake now, at the same time<br></span></span></em></li><li><span class=""><span class=""><em>And many more!<br></em></span></span></li></ul>
<p class="text-center"><span class=""><span class=""><em><img src="https://img.itch.zone/aW1nLzQ0ODY3MjMuZ2lm/original/kcGEdU.gif" alt="BREAK THE RULES IN CHALLENGE MODE" title="BREAK THE RULES IN CHALLENGE MODE" loading="lazy"></em></span><em><span class=""></span></em></span></p>
<h1>SIT BACK AND RELAX</h1>
<p>Pushamo also offers plenty of calmer experiences for when you want to chill and zone out, and want a less stressful time:</p>
<ul><li><em>Play endlessly without blocks ever increasing in speed in Zendless mode.<br></em></li><li><em>Think over each and every move in the tactical Turn-Based mode! Here, blocks will wait patiently for you to decide your next move before they go anywhere.</em></li><li><em>Ponder over the perplexing Puzzle mode, where you're presented with 32 hand-crafted puzzles that ask you to use all blocks in a single clear.</em></li></ul>
<p class="text-center"><em><img src="https://img.itch.zone/aW1nLzQ0ODY2ODIuZ2lm/original/dkdqqc.gif" alt="SIT BACK AND RELAX" title="SIT BACK AND RELAX" loading="lazy"></em></p>
<h1>CUSTOMIZE YOUR EXPERIENCE</h1>
<ul><li><em>Choose between two awesome music tracks<br></em></li><li><em>Select your favorite color palette from a choice of 16, including 8 different pride patterns!</em></li><li><em>Turn off (or multiply!) all visual effects including particles, screen shake, and background animation</em></li><li><em>Reclaim your free time with a handy "unlock all" option, to let you try all Pushamo has to offer without worrying about score requirements getting in the way<br></em></li><li><em>Turn on god mode and laugh in the face of death</em></li></ul>
<p class="text-center"><br><img src="https://img.itch.zone/aW1nLzQ0ODY1OTEuZ2lm/original/J2NHFA.gif" alt="CUSTOMIZE YOUR EXPERIENCE" title="CUSTOMIZE YOUR EXPERIENCE" loading="lazy"></p>
<h1>GAMES FOR GOOD</h1>
<p><span class="">100% of the sales will be given to the Autistic Self-Advocacy Network! They are </span>an autistic-led nonprofit that helps supports disability rights and empower autistic people across the world! Additionally, each copy purchased will create a community copy, providing the game to someone who can't afford it!<br></p>
<h1>BEHIND THE GAME</h1>
<ul><li>Created sustainably by <a href="https://twitter.com/beanborg" rel="nofollow noopener" referrerpolicy="origin">Bean Borg</a>(<em>she/her)</em></li><li>Music by <a href="https://elyon.itch.io/">Emma</a> <em>(she/her) </em>and <a href="https://www.grubermusic.com/" rel="nofollow noopener" referrerpolicy="origin">Gruber</a><em> (he/him)</em><br>
</li><li>Made in PICO-8
</li></ul>
<h5>MORE MEDIA</h5>
<ul><li>Try out the demo <a href="https://www.lexaloffle.com/bbs/?tid=40500" rel="nofollow noopener" referrerpolicy="origin">here</a>!</li><li>5 minutes of gameplay <a href="https://www.youtube.com/watch?v=PdP28g0t1SA" rel="nofollow noopener" referrerpolicy="origin">video<br></a></li><li><span class=""></span><a href="https://twitter.com/NeuroDiversion/status/1314966793543352322" rel="nofollow noopener" referrerpolicy="origin">Twitter thread</a> detailing several features and game modes</li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTk1NjkucG5n/original/%2BxGqce.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTkyMzgucG5n/original/YWBEQ4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTkyNDIucG5n/original/2YsXtl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTkyNDAucG5n/original/yGz3P9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTkyNDEucG5n/original/ulRjBB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTkyNDUucG5n/original/EH%2Fb7u.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTkyNDMucG5n/original/ipJ%2FeV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTkyNDQucG5n/original/QAwI%2Bk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTkyMzcucG5n/original/Hy%2FBSS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2NzM0LzQ0OTkyMzkucG5n/original/w1DQ4A.png]]
<p>Puzzling Peaks EXE is a hilariously mind-bending physics puzzle game about a spherical hero named Knightly, a highly confident administrator named Jasmin, and a quirky, artificially intelligent guide named A.I.D.E.</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ3MTU2NTIuZ2lm/original/LHOzVM.gif" loading="lazy"><br></p>
<p class="text-justify text-center"><strong>INNOVATIVE STORYTELLING</strong><br>The unique recipe for storytelling that handed us several industry accolades is refined and expanded upon to craft a memorable tale for Puzzling Peaks EXE. We use a combination of stunning pixel art, music, and unique narrative techniques to paint a charming postmodern story that will keep players intrigued and entertained until the end.</p>
<p class="text-justify text-center"><strong>100+ HANDCRAFTED CHALLENGES</strong><br>This game features a distinct gameplay mechanic: our hero cannot move on his own, so you’ll have to rotate platforms and manipulate environments to launch him around a beautiful 16-bit world. You'll need logic, brainpower, quick reflexes, and unconditional trust in A.I.D.E. to pass more than a hundred highly polished levels. You’ll be surprised that it doesn’t get old.</p>
<p class="text-justify text-center"><strong>INTENTIONAL AND UNINTENTIONAL COMEDY</strong><br>Our testers have been enjoying some of the game’s philosophical jokes, and moments that weren’t meant to be jokes.</p>
<p class="text-justify text-center"><strong>POSSIBLY A HORROR GAME</strong><br>This game may contain horror elements and digital beings that could haunt you. Given the history of our games, it wouldn’t surprise us anymore.</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQ3MTU2NDYuZ2lm/original/elZ7pB.gif" loading="lazy"><br></p>
<p><strong>RELATED VIDEOS</strong><br></p>
<p>A behind the scenes look at the making of Puzzling Peaks EXE.</p>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/1UOdr0P-n9E" frameborder="0" allowfullscreen=""></iframe></div>
<p>A second trailer that made its debut at Indie Fiesta, an annual convention celebrating Filipino game developers.</p>
<div class=""><iframe style="width: 500px; height: 281px" src="//www.youtube.com/embed/3zRnnVwBL_o" frameborder="0" allowfullscreen=""></iframe></div>
<p></p>
<p>---</p>
<p>If you liked it and are intrigued by the concept, please consider donating so we can make more games like this one. Thank you so much.<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/1UOdr0P-n9E" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODQxMTM0LzQ3MTU2MzcucG5n/original/rJd3W4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQxMTM0LzQ3MTU2MzkucG5n/original/G060A8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQxMTM0LzQ3MTU2NDIucG5n/original/Xk6fwe.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQxMTM0LzQ3MTU2NDAucG5n/original/0TL2Rl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQxMTM0LzQ3MTU2MzgucG5n/original/AzvA6j.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQxMTM0LzQ3MTU2NDEucG5n/original/OhCb5G.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQxMTM0LzYzNDMxNjYucG5n/original/FW4W0O.png]]
<p>A teeny little game about bouncing off beans!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/ldi_Kdlm_NY" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzM2MTYzLzQxMDI5NDgucG5n/original/Qdj9RM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzM2MTYzLzQxMDMyODIucG5n/original/PQTzgB.png]]
<p><strong>Game:</strong></p>
<p>Qavo is a 2D puzzle platformer where you navigate a cube through various sliding-block puzzles filled with deadly obstacles. Explore the twenty different stages awaiting you.</p>
<p>If you've had a pleasant experience playing this game, please consider donating a small sum to a charity organization of your choice.</p>
<p><strong>Instructions:</strong></p>
<p>Unzip to a location of choice and run the executable. </p>
<p><strong>Controls: </strong></p>
<p>WASD/Arrow Keys - Movement</p>
<p>Spacebar / ARROW KEY UP - Jump</p>
<p>X - Switching between player mode and block mode</p>
<p>Also supports XBOX-controller layout</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzI1ODEyLzE2MTA5NTkucG5n/original/85HNHU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzI1ODEyLzE2MTA5NjAucG5n/original/43Pgls.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzI1ODEyLzE2MTA5NjQucG5n/original/eyxukR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzI1ODEyLzE2MTA5NjEucG5n/original/f2Cnjg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzI1ODEyLzE2MTA5NjIucG5n/original/lOOzDK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzI1ODEyLzE2MTA5NjMucG5n/original/%2BHpxBn.png]]
<p><strong>Q L R Z </strong></p>
<p><strong>a</strong> think quick & act fast puzzle game. <br>[get the game free on <a href="https://play.google.com/store/apps/details?id=com.qlrzstudio.qlrz" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Google play</a> ]</p>
<p>Stay in the zone. Don't get hit. Keep up the pace.<br>Master the Deep™ scoring system.</p>
<p>Can you survive 3 minutes, beat the boss and rank in the World Wide Leaderboard? </p>
<ul>
<li>Amazeballs soundtrack</li>
<li>Online<strong> </strong>Leaderboards</li>
<li>English, Spanish and French language</li>
<li>Like the art? Go <a href="https://instagram.com/lionelprats" target="_blank" rel="nofollow noopener" referrerpolicy="origin">follow the artist</a> on insta!</li>
</ul>
<pre>tips :
red + yellow => orange
red + blue => purple
yellow + blue => green
red + blue + yellow => white
can't shoot something? Click or tap on it!
</pre>
<iframe width="100%" height="300" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/221745790&color=%23ff5500&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&show_teaser=true&visual=true"></iframe>
<div><a href="https://soundcloud.com/jmdee" title="Jmdee" target="_blank" style="color: #cccccc" rel="nofollow noopener" referrerpolicy="origin">Jmdee</a> · <a href="https://soundcloud.com/jmdee/level-1" title="Level 1" target="_blank" style="color: #cccccc" rel="nofollow noopener" referrerpolicy="origin">Level 1</a></div>
<iframe width="720" height="450" src="https://www.youtube.com/embed/L3n0aa0a2ww" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNTQvMTMyNzA5LmdpZg==/original/jCsjBA.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNTQvMTMyNzEwLmdpZg==/original/mQ9j4m.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNTQvMTMyNzExLmdpZg==/original/ZsjCoo.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNTQvMTI5ODcxLmpwZw==/original/7UCNZ1.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNTQvMTI5ODcyLmpwZw==/original/Qnbky0.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTMyNTQvMTI5ODczLmpwZw==/original/uuwcZn.jpg]]
<p><br></p>
<figure><img src="https://steamcdn-a.akamaihd.net/steam/apps/500340/extras/Rainbow_Duckster.jpg?t=1579909811" loading="lazy"><br></figure>
<h3>1985.</h3>
<p>DUCKSTER is the coolest duck in the biz. He has all the eggs a digital water fowl could ever want. He ROLLS in eggs. He might have "A DEPENDENCY ISSUE" with eggs.<br><br>What sucks about this is that the dreaded GEESE GANG is totally hating on him because they are garbage - and I mean, if you really think about it, no one ever goes "aw, look at that cute goose over there". The Geese are aware of that: it makes them unstable.<br><br>Long story short, they want DUCKSTER'S eggs but he's not going to let it happen, because like I said earlier he might have a dependency issue with the eggs.<strong><br></strong></p>
<h3>Eggs</h3>
<figure><strong></strong><img src="https://steamcdn-a.akamaihd.net/steam/apps/500340/extras/GAME_MODES.jpg?t=1579909811" loading="lazy"><br></figure>
<p>Collect eggs in a variety of extreme and overwhelming game modes, cool?</p>
<h3>This game is hard so get used to it you dogs</h3>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/500340/extras/DUCKSTER_HEADER.jpg?t=1579909811" loading="lazy"><br><br>This game is hard, just like DUCKSTER's life.</p>
<p>---</p>
<p>"<em>If you are super into the <strong>Jeff Minter</strong>'s works and <strong>Llamasoft's</strong> more obscure stuff, if your computer in the childhood was a Commodore 64 and you are missing these days, if you follow the contemporary score-chaser arcade scene and '<strong>Don't Die Mr. Robot DX</strong>', '<strong>Death Ray Manta SE</strong>', '<strong>Forget-Me-Not<R</strong>' or '<strong>Heiankyo Alien 3671</strong>' are amongst your favorite games, then '<strong>QUACK ATTACK 1985: TURBO DX EDITION</strong>' will completely blow your mind.</em>" -<a href="https://steamcommunity.com/id/epilexia/recommended/500340/" rel="nofollow noopener" referrerpolicy="origin">Epilexia</a><span></span> <br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/jb5Vnv5R-9c" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDQwLzM1NzgxNjguanBn/original/QCg%2FeW.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDQwLzM1NzgxNjQuanBn/original/7kiU5d.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDQwLzM1NzgxNjMuanBn/original/DPFiUT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDQwLzM1NzgxNjUuanBn/original/jG8kUm.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDQwLzM1NzgxNjcuanBn/original/20MdVE.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDQwLzM1NzgxNjYuanBn/original/u7rtD1.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDQwLzM1NzgxNjkuanBn/original/%2BHtbqj.jpg]]
<p><em>You are destined lovers across the whole of space and time.</em></p>
<p><em>In each millennia and every passing moment, you find each other again. </em></p>
<p><em><span></span>Sometimes you are just friends, and other times you fall deeply in love.</em></p>
<p><em> Each time you find each other, you are always a little different. It takes time to relearn what you both enjoy and how to take care of each other, but you are determined to make it work.</em></p>
<p><em> Whether or not you stay is another story, but sometimes all we have is the here and now, and we do our best to enjoy it with the people we have.</em></p>
<p><em> It is in this queer space, the in-between space, that we begin.</em></p>
<p><br></p>
<p><span class=""><strong><em>Queering Spacetime</em></strong> is a IndieCade-nominated, NYT-featured, whimsical & inclusive dating sim card game for 2-4 players:</span></p>
<p><span class="">✨Create fun dates in liminal spaces (e.g. a gas station at 1am)</span></p>
<p><span class="">✨Roleplay girls who are destined lovers across spacetime</span></p>
<p>✨Roll the die every turn to see if time shifts</p>
<p><br></p>
<p>Featuring, a diverse, quirky cast of characters to play as (this isn’t all of them I couldn’t fit them all):</p>
<figure><img src="https://img.itch.zone/aW1nLzYyNTUwMDQucG5n/original/ptoUr3.png" loading="lazy"></figure>
<p>70+ multiple choice prompt cards to make roleplaying beginner-friendly:</p>
<p><img src="https://img.itch.zone/aW1nLzYyNTUxMzAucG5n/original/MEZIgB.png" loading="lazy"><br></p>
<p>And, of course, settings inspired by the magical, in-between spaces of life~</p>
<p><img src="https://img.itch.zone/aW1nLzYyNTUxMDgucG5n/original/iGMjbd.png" loading="lazy"><br></p>
<p>More updates on Twitter: <a href="https://twitter.com/compose/tweet" rel="nofollow noopener" referrerpolicy="origin">twitter.com/queerspacetime</a></p>
<p>Signup for email updates/Learn more about the game at this website: <a href="https://jowlin.wixsite.com/queeringspacetime" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">jowlin.wixsite.com/queeringspacetime</a></p>
<p><br></p>
<p>Thank you to everyone who’s supported and played my project. 💖</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/vnTEH6aYCxg" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDc5NjM0LzI0NjkyNjEuanBn/original/7GDrMw.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc5NjM0LzI0NjkyNjMuanBlZw==/original/QSjvOL.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc5NjM0LzI0NjkyNjQuanBlZw==/original/Q6WkVr.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc5NjM0LzYyNTE3NzQucG5n/original/a1aXei.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc5NjM0LzYyNTE3NzYucG5n/original/TLcyw6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc5NjM0LzYyNTE3NzUucG5n/original/YlsUan.png]]
<h2>We've added some special DLC items for Quench, just in time for the Winter Sale!</h2>
<p></p>
<h4>Get the game, OST, and Artbook & Guide for 60% off in our Holiday Bundle!</h4>
<h4><a href="https://itch.io/s/41412/quench-2020-holiday-bundle">https://itch.io/s/41412/quench-2020-holiday-bundle</a></h4>
<p></p>
<p><br></p>
<h4>Already own Quench? Get the OST and Artbook Bundle at a special discount, for itch.io only! Thank you for supporting us and indies everywhere <3</h4>
<h4><a href="https://itch.io/s/41411/quench-ost-artbook-bundle">https://itch.io/s/41411/quench-ost-artbook-bundle</a></h4>
<p></p>
<p>---</p>
<h2>Become Shepherd, an avatar of nature, and guide herds of animals on a perilous journey.</h2>
<p>Each generation, the Elephant Tribe makes a grand pilgrimage. But this time, something is different... <br><br>Help Shaman, the young Elephant leader, convince the other animal tribes to join her. Protect your herds as they are beset by flood, fire, drought, and the dark smokebeasts that have spread across the land. Control the environment to guide herds of animals and restore their home in this colourful narrative puzzle game!<br></p>
<h2>Features</h2>
<ul><li><strong>Change the environment</strong> around the animals with the powers of the Elder Tree: grow grass and trees, start forest fires, shift sand dunes, or create new rivers and lakes.</li></ul>
<p></p>
<ul><li><strong>Overcome treacherous encounters</strong> with creatures and obstacles while carefully guiding your animals to safety.</li></ul>
<p></p>
<ul><li>Fall in love with a <strong>papercraft-inspired landscape set to a joyful original score</strong> by Adam Sakiyama.</li></ul>
<p></p>
<ul><li>Through <strong>gorgeous illustrated cinematics and in-game dialogue</strong>, explore how kindness, compassion, and forgiveness are powers unto themselves in this fable about overcoming differences to restore the world.</li></ul>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/1IoJIgAPbZw" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDA1NDQ2LzIwMTI4NDMucG5n/original/j%2B9fkJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA1NDQ2LzIzMzE1MzQuanBn/original/Hq7ydk.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA1NDQ2LzIzMzE1MzYuanBn/original/WAJxel.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA1NDQ2LzIzMzE1MzUuanBn/original/r%2BXooj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA1NDQ2LzIzMzE1MzcuanBn/original/uoDKDo.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA1NDQ2LzIzMzE1MzguanBn/original/hELsCY.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA1NDQ2LzIwMTI4NDkucG5n/original/R11ScH.png]]
<p>Another pixel font--based loosely on the font called Quicksand.</p>
<p>This font is released under the <a href="http://creativecommons.org/licenses/by/4.0/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><strong>CC-BY</strong></a> License.<br></p>
<p>This means that your only restriction is giving credit to <a href="https://twitter.com/MysteryCorgi" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Mystery Corgi.</a> You can use this font both in free and in commercial projects.<br></p>
<p>Please consider supporting me through a one-time donation here if you appreciate this font!<br></p>
<p>Special thanks to <a href="https://twitter.com/somepx" rel="nofollow noopener" referrerpolicy="origin">Eeve Somepx</a> and <a href="https://twitter.com/Jupiter_Hadley" rel="nofollow noopener" referrerpolicy="origin">Jupiter Hadley</a> for inspiring me to do this!</p>
<p><br></p>
<p style="text-align: center"><strong>Feel free to leave a link to any projects that use this font in the comments!</strong></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODAwNjgvMzc1NDgxLnBuZw==/original/ukVelh.png]]
<p>A hack of <em><a href="https://chrismcdee.itch.io/electric-bastionland">Electric Bastionland</a></em> and <em>Into the Odd</em> inspired by <em>Roadside Picnic</em> and <em>Annihilation. </em><br></p>
<ul><li><strong>100 character "alterations"</strong> (like being able to hear warnings uttered by animals, finger bones you can shoot as projectiles, and when you get a cut, the skin opens to reveal a functional eyeball) </li><li><strong>40 pre-made artifacts </strong>(like seeds that grow into human hands, foggy lenses that show the past, and tables to randomly make your own artifacts, like <em>a hovering, pearlescent lattice of crystal that absorbs light</em>)</li><li><strong>80 super-compact encounters</strong> (like a baseball-sized tick that turns you invisible, a disembodied brain trying to burrow into your skull to eat your brain and take over your body, and an extremely awkward birthday party)</li><li><strong>Tables to </strong><strong>generate alien-warped terrain</strong> in the City, the Wilderness, the Wasteland, and the Tunnels below, plus a few example locations (like a settlement built out of scrap on giant sea-mushrooms where residents are kept in the dark about the outside world)</li><li><strong>78 pages</strong> including covers and 22 full-page illustrations</li></ul>
<p></p>
<p class="text-center"><em>The Guard wants to control it.<br></em><em>The Lab wants to understand it.</em> <br><em>The Underground wants to profit off it.</em> <br><em>You need to survive it.</em> <br><em>Welcome to the Quarantine Zone.</em></p>
<p></p>
<p>Currently marked down to $5 during the completion of playtesting and revisions. If you get a chance to play it, please leave a comment or get in touch at <a href="https://pretendo.games" target="_blank" rel="nofollow noopener" referrerpolicy="origin"></a><a href="https://pretendo.games/about" rel="nofollow noopener" referrerpolicy="origin">pretendo.games</a>!</p>
<p><em>Recommended for 1 GM and 1 or more additional players.<a href="https://docs.google.com/spreadsheets/d/1jAVV8qq9m8iFv59dBw7ObNgimhG_qnijvnvzKir9Dhw/edit?usp=sharing" rel="nofollow noopener" referrerpolicy="origin"><br>Character keeper spreadsheet</a> for online play.<br></em><em>Rules inspired by <a href="https://chrismcdee.itch.io/electric-bastionland">Electric Bastionland</a>. <br></em><em>Illustrations by <a href="http://beeple-crap.com/" rel="nofollow noopener" referrerpolicy="origin">BEEPLE</a> (Mike Winkelmann).</em><span></span></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzI5NjUyLzQwNTc4MjIuanBn/original/h4Jpdb.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI5NjUyLzQwNTc4MjYuanBn/original/Vt1R5U.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI5NjUyLzQwNTcxODAuanBn/original/I11OhJ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI5NjUyLzQwNTcxODEuanBn/original/pEjPJi.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI5NjUyLzQwNTcxODIuanBn/original/HCBHsC.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI5NjUyLzQwNTcxODMuanBn/original/R2L2lo.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI5NjUyLzQwNTc0MTQuanBn/original/tQVzeQ.jpg]]
<p>Enemies are at your doorstep, but you’re the one who knocks! Dodge what you cannot see in your radar equipped Fighter Jet. But beware, the enemy advances at every step! Dogfight with enemy Fighters, Hellmakers, Heat Seekers, Carriers, Bombers and more!<br></p>
<p><iframe src="https://player.vimeo.com/video/437337154" width="640" height="360" frameborder="0" allowfullscreen=""></iframe><br>Purchase new ships with the cash you earn from each run. Each ship has unique movement and different firing techniques, so your strategy is going to have to change to reach the top!</p>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzM5MzMyNTkucG5n/original/OofKRg.png" loading="lazy">You're the pilot of Spade V</p>
<p> Defending your homeland from an invasion of stealthy enemies. You engage your subjects at will, and are good at it too. Equipped with a semiautomatic cannon, your enemy is shown no mercy. </p>
<p>Unfortunately, not everything stays the same.</p>
<figure><img src="https://img.itch.zone/aW1nLzM5MzM0NjkucG5n/original/bUNCo0.png" loading="lazy">You're the pilot of Ace One</figure>
<p> Defending your homeland from an invasion of stealthy enemies. Your speed is unprecedented and your renown precedes you. Equipped with a Gatling Gun and Heat Seeking Missiles, enemies cower in your wake. </p>
<p><img src="https://img.itch.zone/aW1nLzM5MzM0NzkucG5n/original/RpWKdS.png" loading="lazy">You are the crew of Tyche XIV</p>
<p>On a descent from a mining mission, your crew is stopped by your enemies advance. Thankfully, because of your unique engines, the enemy has a hard time to catch your ship strafing. Your 3 Stage Mining Laser outputs enough power for the enemy to be taken aback. They havent even seen you overcharge it yet...</p>
<figure><img src="https://img.itch.zone/aW1nLzM5MzM1MTQucG5n/original/CIH%2FH0.png" loading="lazy"> You are THE BOX<br></figure>
<p> THE BOX is said to be nothing more than a mere box. Everything about it should tell you that is a lie. THE BOX is an enigma. THE BOX takes no prisoner. It's actions are unto itself. THE BOX only spawns more boxes, eliminating anything that has the misfortune of collision. Take command of your fellow Cubes, and eliminate all that stand in your way. <br><br><br>RADARjAM is available on July 28th on Steam, Itch and VoxPop. </p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTUxNDEyLzMwMTQxNDYucG5n/original/m1jaWq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUxNDEyLzMwMTQxNDcucG5n/original/Q%2FrElk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUxNDEyLzMwMTQxNDUucG5n/original/VxPYXH.png]]
<p>This here is the messiest possible sorcerer, one who can't control their magic in any way, shape, or form. If you like playing magic classes but feel like you don't get to roll enough dice, or like thinking on your feet rather than planning ahead, this subclass is for you. </p>
<p>Look down at the bottom for community copies (free!)</p>
<p>The provided tables cover all PHB sorcerer spells.</p>
<p>At some point in the future I'll be adding a sheet or applet that automates all the rolling and spell list population, but I'm still figuring out how best to make that work.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAzOTY0Ny82MDYwNDgzLnBuZw==/original/nQ7d9r.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzOTY0Ny82MDYwNDg4LnBuZw==/original/418CoW.png]]
<p>This here is the messiest possible sorcerer, one who can't control their magic in any way, shape, or form. If you like playing magic classes but feel like you don't get to roll enough dice, or like thinking on your feet rather than planning ahead, this subclass is for you. </p>
<p>Look down at the bottom for community copies (free!)</p>
<p>The provided tables cover all PHB sorcerer spells.</p>
<p>At some point in the future I'll be adding a sheet or applet that automates all the rolling and spell list population, but I'm still figuring out how best to make that work.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAzOTY0Ny82MDYwNDgzLnBuZw==/original/nQ7d9r.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzOTY0Ny82MDYwNDg4LnBuZw==/original/418CoW.png]]
<h4><em>An online reference of the Rainworld rules, plus the complete gear list, is now available <a href="http://rainworld.website/ref" rel="nofollow noopener" referrerpolicy="origin">here</a>!</em></h4>
<h5><em>(We recommend the online reference for accessibility purposes; there are problems with the PDF which we're aware of, but haven't yet managed to fix. The online reference includes the rules and character creation content from all current expansions.)</em></h5>
<h5>Please also note that if you want to download <em>all</em> of the Rainworld PDFs, you can get them all at once in the form of <a href="http://llemoi.itch.io/rainworld-collection">The Collection</a>.</h5>
<hr>
<p>Rainworld is a love letter to janky early-90s rules, dystopian SF settings, and dad jokes disguised as flavour text.
</p>
<p>Cat<del>girls</del>persons! Psionics! Biotech combat androids! The gig economy! A cyberpunk gear list with <del>as many</del> <em>more</em> evening dresses than shotguns! <em><del>Six</del></em> <del><strong>Seven</strong></del> <del><strong>TEN</strong></del> a bunch of pamphlet-sized supplements for it already!</p>
<p><strong><em>The internet's finest* dystopian <strong>cyberpunk</strong> McJob <strong>TTRPG</strong>!</em></strong><br></p>
<p><small>(*according to: me.)</small></p>
<hr>
<p>Two centuries into terraforming the New Republic of Libertaria, the planet is nice enough — well,<em> liveable</em> enough — as long as you live within a few dozen klicks of one of the sky-high toadstool-shaped atmospheric processors. And lucky you, you do, in the urban sprawl around the base of the New Shenzen processor. The daily rains are a side effect of terraforming — should calm down in another few hundred years. The main thing is, your ancestors escaped from the Commonweal's long nightmare of peace and prosperity to found a society based on the <em>real</em> principles of <em>real men</em> — the capital-F Freedom to sell yourself into indentured servitude, own a different military assault weapon for every day of the year, and die from a minor infection because actually seeing a doctor is a deluxe premium optional extra for your medical insurance.
</p>
<p>Breathing the air is still free at point of use, but trust me, they're working on it.<br></p>
<p><em>Rainworld is currently in development — the art isn't all there yet, and there may be remaining typos. (Tell me about one, and I'll credit you for proofreading!) <br></em></p>
<hr>
<p><strong>Rules plugins:</strong></p>
<p>A set of pamphlet-sized expansions to the Rainworld rules is underway.</p>
<p>Currently available:</p>
<ul><li><a href="http://llemoi.itch.io/rainworld-cyberdeck">Cyberdeck</a> — cyberpunk hacking rules</li><li><a href="http://llemoi.itch.io/rainworld-underworld">Underworld</a> — details on the subterranean Gyre</li><li><a href="http://llemoi.itch.io/rainworld-manxworld">Manxworld</a> — the Manx, their homeworld of Askon, and the details that Rainworld's systemic racism ignores</li><li> <a href="http://llemoi.itch.io/rainworld-ganzfeld">Ganzfeld</a> — the Ganzfeld, the Flow, and their place in galactic politics</li><li><a href="http://llemoi.itch.io/rainworld-toxcrawl">Toxcrawl</a> — wilderness exploration in the toxic apocalypse beyond the atmospheric processors</li><li><a href="http://llemoi.itch.io/rainworld-catwalk">Catwalk</a> — expanded gear and fashion to keep your operative on the cutting edge of style</li><li><a href="http://llemoi.itch.io/rainworld-draculoid">Draculoid</a> — simultaneously a joke and a supplement you can run <em>entirely</em> seriously as part of your Rainworld game (yes, really): Dracula for Rainworld!</li><li><a href="http://llemoi.itch.io/rainworld-control">Control</a> — more sample RFWs, the Department's inner workings, Rainworld's calendar, and guidelines for naming Rainworld's places and people</li><li><a href="http://llemoi.itch.io/rainworld-offworld">Offworld</a> — expanded character creation options for characters originating in the wider Interstellar Commonweal</li><li><a href="http://llemoi.itch.io/rainworld-altitude">Altitude</a> — rule and gear for combat drones, and for livestreaming your sensorium across Rainworld's internet for fun, profit (and shooting at people without sticking your head out of cover)</li></ul>
<p>Plus:</p>
<ul><li><a href="http://llemoi.itch.io/rainworld-tithe">Tithe</a> — a scenario module detailing the rise and fall of the Tithe cryptocurrency corporation</li><li><a href="http://llemoi.itch.io/rainworld-machina">Machina</a> — a scenario module for a <em>perfectly ordinary</em> "shoot our employee for breach of contract" corporate work ticket</li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjQzNjEzLzQ4NDIxMTIuZ2lm/original/KdP2rD.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQzNjEzLzM1NTkyNDQucG5n/original/QwubXL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQzNjEzLzM1NTkyNTIucG5n/original/jQ38jZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQzNjEzLzM1NTkyNDkucG5n/original/lFE6J4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQzNjEzLzM1NTkyNTEucG5n/original/Ebmsg5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQzNjEzLzY1NjkwMDUucG5n/original/uJ%2Fykk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQzNjEzLzY2NzEyNTMucG5n/original/INxVba.png]]
<$list filter="[is[current]has:field[rating]]">
''Rating'': {{!!rating}}
</$list>
<p><em>"The first to speak, is the first to lie."</em></p>
<p>Mob justice is messy, I am even unsure that it can be called justice. This GMless solo game places you as a peasant who is being wrongfully accused of a crime that they deem worthy of the capital punishment. You have to think fast and try to calm them, otherwise you won't see the next day.</p>
<p><em>"The mob, they cry for blood"</em></p>
<p><strong>Content Warning:</strong> Mob justice, murder, prejudice.</p>
<p>Keep in mind that there is a difference between protests and revolutions to a mob driven justice. People shouldn't confuse the reaction of the oppressed with the violence of the oppressor. Protests and revolutions punch up, mobs tend to punch down or even against their own peers.</p>
<p style="font-size:12px">Covert art: Mort de la princesse de Lamballe, 3 septembre 1792.<br><br>Background art: Châtelet ; Bicêtre : massacre des prisonniers de la prison du Châtelet et de la maison de Bicêtre le deux et trois septembre et jours suivants, au nombre d'environ huit cents. 1792<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzc1ODQxLzQzNDI1OTAucG5n/original/Bhr%2FM4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc1ODQxLzQzNDI1OTYucG5n/original/e5wO7W.png]]
<p>An unofficial Space Age supplement for the Other world's favourite fantasy role-playing game! Within its pages you'll find:</p>
<ul><li><strong><em>The Other galaxy’s favourite space-age roleplaying game. </em></strong><ul><li>Inspired by, and designed for use with, <a href="https://melsonian-arts-council.itch.io/troika-numinous-edition" style="font-size: inherit">the innovative TROIKA! Ruleset</a>.</li></ul></li><li><strong><em>Interorbular adventure! </em></strong><ul><li>5 brand-new backgrounds, including rubberworld escapees, calculating cabooses, and the <em>OBVIOUS</em> protagonist.</li></ul></li><li><strong><em>Keep the Other world clean.</em></strong> <ul><li>Inspired by the zaniest comedies across time and space, and printed on 100% recycled pulp.</li></ul></li><li><strong><em>I can't believe it's not magic! </em></strong><ul><li>We used sufficiently advanced technology to formulate 5 imitation spells almost indistinguishable from the real thing!</li></ul></li></ul>
<p>Rayguns, Robots & Rocketships is an independent production by Into the Weird Blue Yonder and is not affiliated with the Melsonian Arts Council.<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTg1ODA1LzU3Nzk3NTguanBn/original/dR3GYM.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg1ODA1LzU3Nzk3NTkuanBn/original/7%2BqCMk.jpg]]
<h3>Rebop Blasters is an overpowered platform brawler with destructible terrain and a jazz soundtrack created by the players.</h3>
<h3>this game is a demo, please have fun but it comes with absolutely no guarantee of anything except that it's really fun.</h3>
<p><br></p>
<p>Hopefully the game natively supports xboxone/360, ds3/4, switch pro out of the box. Steam controller support coming.<br></p>
<p><strong><br></strong></p>
<p><strong>GAMEPLAY CONTROLS:</strong></p>
<p><strong>Jump</strong>: jump/toggle flight/stun cancel/dodge roll</p>
<p><strong>Attack</strong>: short range(tap), dash (hold and release with direction)</p>
<p><strong>Special</strong>: fireball(short tap) blast (hold and release with direction)</p>
<p><strong>Block</strong>: grab (short tap) block (hold)</p>
<p><br></p>
<p><strong>DEBUG</strong>: </p>
<p><strong>R</strong>: resets the current level.</p>
<p><strong>Escape/Pause</strong>: open the menu</p>
<p><br></p>
<p>Default keyboard controls are garbage and designed for me to test move interactions one-handed (xbone controller awkwardly in the other), please feel free to remap them and suggest a default mapping.<br></p>
<p><strong>wasd</strong> : movement</p>
<p><strong>jkl</strong>: attack, charge, block</p>
<p><strong>space</strong>: jump</p>
<p>Currently the game is limited to one mode (versus) and is local multiplayer only. I'd be interested to see how it plays through a service like Parsec, but be aware that giving someone access to play a game with you remotely is a security risk. </p>
<p>Please use the forum for bug reports/questions/suggestions. <br></p>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/6P0JLBiVeuk" allowfullscreen="" frameborder="0"></iframe></div>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/6P0JLBiVeuk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzA0MTI0LzIwMzAwNDcuZ2lm/original/4g8H5C.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA0MTI0LzIwMzAwNTMuZ2lm/original/mopJ%2Fy.gif]]
<p><img src="https://img.itch.zone/aW1nLzEwMTU2MTQucG5n/original/Ac74VH.png" loading="lazy"><br></p>
<p><br></p>
<p><em class="">"There are lots of predators out there... stalkers who'd just love to have a taste of someone like you..."</em><br></p>
<p>«Столько хищников вокруг... жаждет попробовать на вкус кого-то вроде тебя...»
<br></p>
<p><em>”Ci sono molti predatori là fuori… cacciatori che perderebbero la testa per assaggiare uno come te…”<br></em></p>
<p><br><strong>Plot Summary</strong><br><br>The graveyard shift at a dingy diner in San Francisco -- that's where MC's story begins. It's just another normal night, or at least it seems to be. <br><br>...That is, until a certain mysterious customer stops by, bringing the dangerous<em> </em>attention of a few people with him. When it rains, it pours, and suddenly MC finds himself in the middle of a war he didn't even know existed... between vampires.<br><br>How does MC react to the dark, violent world that opens up before him? That's up to you!</p>
<p><strong>Краткий сюжет</strong>
</p>
<p>Мёртвая смена в обшарпанной забегаловке Сан-Франциско – вот откуда берёт начало наша история. Очередная ничем не примечательная ночь, по крайней мере так может показаться.
</p>
<p>Пока не заглядывает некий таинственный посетитель, привнося с собой нездоровый интерес ряда опасных личностей. Беда не приходит одна, и внезапно главный герой обнаруживает себя в эпицентре войны, о существовании которой он даже не догадывался... войны между вампирами.
</p>
<p>Как гг отреагирует на тёмный, жестокий мир, открывшийся ему? Решать вам!
</p>
<p><br></p>
<p></p>
<p>Il turno di notte in una squallida tavola calda di San Francisco – è qui che la storia di MC ha inizio. È un’altra normale notte, o almeno così sembra.</p>
<p>…Ovvero, finché un certo misterioso cliente entra nel locale, attirando le attenzioni di alcune persone. “Piove sempre sul bagnato” dicono, e improvvisamente MC si ritrova catapultato nel bel mezzo di una guerra di cui non era neanche a conoscenza… una guerra fra vampiri.</p>
<p>Come reagirà MC davanti al mondo oscuro e violento che gli si spalanca davanti? Sta a te deciderlo!</p>
<p></p>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzEwMTU2MTUucG5n/original/5mrPxc.png" loading="lazy"><br></p>
<p><br></p>
<p><em>Available in: English, Russian, and Italian</em><br></p>
<p><br></p>
<p>► <strong class="">Genre:</strong> Drama, BxB romance, dark modern<br>► <strong class="">Rating:</strong> PG-13 (language, violence, sexual themes)<br>► <strong class="">Length:</strong> ~60,000 words<br>► <strong class="">Endings:</strong> 8<br>► <strong class="">Platforms:</strong> <a href="https://play.google.com/store/apps/details?id=com.argentgames.redembrace" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Android</a>, <a href="https://store.steampowered.com/app/796940/Red_Embrace/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Steam</a>, Itch.io<br><br>► Changeable MC personality & interests<br>► Different dialogue & choices based on personality<br>► 11 track OST with a dark, urban vibe<br>► 14 CGs with multiple variations</p>
<p><br></p>
<p>► Жанр: Драма, BL, тёмный модерн
<br>► Рейтинг: PG-13 (ненормативная лексика, сцены жестокости и насилия)
<br>► Длина: ~ 60. 000 слов
<br>► Количество концовок: 8
<br>► Платформы: Андроид, Стим, Itch.io
</p>
<p>
</p>
<p>► Возможность изменять личность и интересы гг
<br>► Диалоги и варианты развития событий меняются в зависимости от типа личности гг
<br>► 11 оригинальных саундтреков с тёмными урбанистическими нотками
<br>► 14 СG-рисунков с множественными вариациями
</p>
<p><br></p>
<p></p>
<p>► Genere: Drammatico, romanticismo yaoi, dark modern<br>► Rating: PG-13 (termini volgari, violenza, riferimenti sessuali)<br>► Lunghezza: circa 60.000 parole<br>► Finali: 8</p>
<p>► Personalità e interessi di MC modificabili<br>► Dialoghi e scelte differenti in base alla personalità<br>► 11 tracce originali con una macabra atmosfera urbana<br>► 14 illustrazioni digitali con variazioni multiple</p>
<p></p>
<p><img src="https://img.itch.zone/aW1nLzEwMTU2MTYucG5n/original/TNywt1.png" loading="lazy"><br></p>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzEwNjcwOTIucG5n/original/4oJg5o.png" loading="lazy"><br></p>
<p>Ash has been stuck in San Francisco for most of his life. Even though he dreams of becoming a famous artist (whether in music, digital art, or writing is up to the player!), he currently works the graveyard shift at a run-down little diner. <br><br>He's wry, tough, and determined by default, but his personality changes and grows throughout the course of the game!</p>
<p>Почти всю свою жизнь Эш провёл в Сан-Франциско. И хотя он мечтает стать известным художником (а возможно музыкантом или писателем в зависимости от решения игрока!), сейчас его работа — мёртвая смена в маленькой захудалой забегаловке.<br></p>
<p><span></span></p>
<p>По умолчанию Эш саркастичный, сильный и решительный, однако на протяжении игры его личность меняется и развивается!
</p>
<p><span></span>
<br></p>
<p><img src="https://img.itch.zone/aW1nLzEwMTU2MTgucG5n/original/irtO8c.png" loading="lazy"><br></p>
<p>Despite his intimidating appearance, Dominic prefers to keep to himself. A man of few words, he rarely offers any insight into his thoughts, but his silence suggests a deep conflict going on beneath the surface.</p>
<p>Имея устрашающую внешность, Доминик предпочитает сторониться окружающих. Он немногословен и сам себе на уме, однако подобное поведение свидетельствует о глубоком внутреннем конфликте.
</p>
<p><br></p>
<figure><img src="https://img.itch.zone/aW1nLzEwMTU2MjEucG5n/original/eQoJIs.png" style="max-width: 100%; font-size: 14px; background-color: rgb(255, 255, 255)" loading="lazy"></figure>
<p>Isaac reeks of "unscrupulous businessman," and makes no effort to hide it. He seems very out of place among the rough, unrefined types who hang around San Fran's seedy parts, though there's a good reason for the company he keeps.</p>
<p><br></p>
<p>От Исаака так и несёт «беспринципным бизнесменом», что он и не пытается скрывать. Кажется, ему совсем не место среди грубых, неотёсанных типов, ошивающихся в сомнительных районах Сан-Фран, однако у него свои причины быть тут.
</p>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzEwMTU2MjIucG5n/original/uxr9%2Fa.png" loading="lazy"><br></p>
<p>Wild, impulsive, bloodthirsty, and Dominic's polar opposite, Rex wears his vampiric nature like a badge of pride. It's a wonder he's lived as long as he has, considering his reckless nature and insatiable appetite.</p><p><br></p><p>Дикий, импульсивный, кровожадный. Являясь полной противоположностью Доминика, Рекс с гордостью относится к своей вампирской сущности. Даже удивительно, что он так долго протянул, учитывая его безрассудную натуру и неутолимый аппетит.<br></p>
<p><img src="https://img.itch.zone/aW1nLzEwMTU2MjMucG5n/original/O6UAiv.png" loading="lazy"></p>
<p><br></p>
<hr>
<p><strong>Connect with us on:</strong>
</p>
<p><a href="http://twitter.com/argent_games" rel="nofollow noopener" referrerpolicy="origin">Twitter</a> | <a href="https://discord.gg/p3pM8rj" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Discord Server</a> | <a href="http://blog.argentgames.co/" rel="nofollow noopener" referrerpolicy="origin">Tumblr Dev Blog</a> | <a href="https://www.facebook.com/argentgames2016/" rel="nofollow noopener" referrerpolicy="origin">Facebook</a> | <a href="http://eepurl.com/cytAu1" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Newsletter</a></p>
<p><br></p>
<p>Please share your thoughts with us in the comments below, or with an email to contact@argentgames.co! </p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/KA0SuXpIEUM" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjE1MTczLzEwNjQyMDcuanBn/original/N1r2Fx.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE1MTczLzEwNjQyMDUuanBn/original/IPxRMZ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE1MTczLzEwMTQ1ODYuanBn/original/yGaszm.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE1MTczLzEwNjQyMTEuanBn/original/8qYD8Z.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE1MTczLzEwNjQyMTMuanBn/original/%2B3g0dC.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE1MTczLzEwNjQyMDYucG5n/original/MZLD2m.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE1MTczLzEwNjQyMDguanBn/original/ujHMKy.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE1MTczLzEwMTQ1ODcuanBn/original/nR3luZ.jpg]]
<h1>About the Game</h1>
<h2>Concept</h2>
<p>In 2015 I released an album, entitled <a href="http://music.sockpuppet.us/album/refactor" rel="nofollow noopener" referrerpolicy="origin">Refactor</a>. Several of the tracks started out as OSTs for aborted game projects, and most of the others were inspired by my love of video game music in general. I wanted to make some music videos for the songs to pay homage to the games that inspired them</p>
<p>In 2017 I quit my job to go indie, and figured that I should make a bunch of small, simple games while I figured out what I wanted to be doing long-term.</p>
<p>These separate ideas were refactored into a single one.</p>
<h2>Early Access</h2>
<p>Because this game will be in development for quite some time, I am providing early access to the game as I work on it. As I push new builds fairly frequently, the best way to play is via the <a href="https://itch.io/app">itch.io app</a>.</p>
<p>Since many of the tracks are produced for game jams, I will always have a freely-downloadable version for any current jam that the game is submitted for so that other participants may evaluate the jam submission.</p>
<p>If you want to give feedback about the game so far, feel free to use the comment section here on itch, or <a href="http://discord.gg/014vEqxWJu37PzJ4Y" rel="nofollow noopener" referrerpolicy="origin">come find me on Discord</a>!<br></p>
<p><img src="https://img.itch.zone/aW1nLzE0MDA2ODAucG5n/original/wU59uS.png" loading="lazy"><br></p>
<h1>About the Album</h1>
<h2>Track listing</h2>
<ol>
<li>Little Bouncing Ball: done-ish (<a href="https://itch.io/jam/games-made-quick-one-and-a-half">Games Made Quick 1½</a>)</li>
<li>Strangers: done-ish</li>
<li>Sliced by a Mandolin</li><li>Deer Drinking from the Catacomb Stream</li><li>Road to Nowhere</li><li>Silica</li>
<li>Flight: done-ish (<a href="http://itch.io/jam/games-made-quick-2">Games Made Quick 2</a>, <a href="http://itch.io/jam/finally-finish-something-2018">Finally Finish Something 2018</a>)</li><li>And Counting</li><li>Roundsabout</li><li>Soliloquy</li><li>Circle</li><li>Feed</li><li>Adding up to nothing</li>
</ol>
<h2>Listen Online</h2>
<iframe src="https://open.spotify.com/embed/album/5xiN1rKvwxxqtXENxiFBjm" width="400" height="280" frameborder="0">&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;span id="selection-marker-1" class="redactor-selection-marker"&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;/span&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;span id="selection-marker-1" class="redactor-selection-marker"&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;/span&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;</iframe>
<iframe width="720" height="450" src="https://www.youtube.com/embed/pkMZM5taBEY" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTU1OTYyLzEwNTQyMjEucG5n/original/dXO1oB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU1OTYyLzgwMjc3OS5qcGc=/original/LKWBcQ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU1OTYyLzEwOTYyMTUuanBn/original/C0KLsZ.jpg]]
<h1>What is Reliance?</h1>
<p>Reliance tells a story of interdependence and inner turmoil in a time after a socialist revolution captured the power of the state in an industrial age city.</p>
<p>Players take on the roles of members of the revolutionary vanguard party in the period of rebuilding after the ruling capitalist forces were driven out of the city. From this point, it will take constant work and decades of struggle and action to build the society they fought for.</p>
<p>It's a game of acknowledging and exploring the challenges of building a world out of the bones of an old one, and of acknowledging just how entrenched the structures of the capitalist mode of production are in every level of our society and mindset.</p>
<p>Gameplay has players confronting and analyzing the contradictions of their new world, and then acting on them to fight back against the forces of reaction and counter-revolution from within their own population and from external powers as well. <br></p>
<h1>Two Trifold Pamphlets</h1>
<p>Reliance is formatted as two separate trifold brochures: one for the players and the other for the GM. These two pamphlets together are a complete game which can easily play out as a satisfying campaign. <br></p>
<div class="custom_imageblock">
<div class="custom_img1">
<p><img src="https://img.itch.zone/aW1nLzU0MzY1MDUuanBn/original/SzOyGr.jpg" loading="lazy"></p>
<figcaption>Two Reliance trifolds. One says "The Game" and the other says "Running the Game"</figcaption>
</div>
<div class="custom_img2"><p><img src="https://img.itch.zone/aW1nLzU0MzY1MDkuanBn/original/9nyppx.jpg" loading="lazy"></p><figcaption>an image of the insides of both trifolds. One has the text obscured digitally</figcaption></div>
<div class="custom_img3"><p><img src="https://img.itch.zone/aW1nLzU0MzY1MDMuanBn/original/4J8Jlb.jpg" loading="lazy"></p><figcaption>an image of the back of the two trifolds. One has a character sheet in the middle and the other has lines and circles in 6 sets.</figcaption></div>
<div class="custom_img4"><p><img src="https://img.itch.zone/aW1nLzU0MzY1MTEuanBn/original/yTpEbN.jpg" loading="lazy"></p><figcaption>an image of the character sheet on the back of a trifold propped up for easy reference during play</figcaption></div>
</div>
<p>Buying the game at the standard level here on itch will grant you access to both in .pdf form, as well as a collated .pdf of each individual pane of both pamphlets which reads nicely on a phone screen.<br></p>
<h1>Release Status</h1>
<p>The game is mostly finished, but I am still working on a third pamphlet that will contain guidelines for the GM for running the game. Thanks to everyone who supported the game during itchfunding for making this possible!</p>
[img width=500 [https://img.itch.zone/aW1nLzU0MTk4NTkuanBn/original/hApNwW.jpg]]
<p>Reliquary is a far-future worldbuilding and exploration game, taking place tens of millions of years in the future. Civilization has risen and fallen over and over again—the vestiges of ten major, extra-solar civilizations have been unearthed at least. The scattered remains of humanity live in a megastructure called the Coil left over from a previous iteration of civilization. No one knows how old the Coil is, who built it, or who originally lived there, but it seems ill-designed for humans in many ways: convoluted, unmapped, and difficult to traverse.</p>
<p>Civilization is rising again out of the metal and dust of the Coil, but there’s much we still don’t understand. We can no longer make the tools that the fortunate have found, relying on the wise devices that can be scrounged or building simple ones.</p>
<p>The Coil is made up of seemingly endless strata—overlapping layers of ancient buildings, artifacts, and machines. One strata may house an entire culture, while another is an uncanny beast’s personal hunting grounds.</p>
<p>You live in the city of Vasq—the only major human settlement known to you—and the Prytanium is always in need of maps, data, and relics from past civilizations. Players create Wanderers to try and deliver them, motivated by duty, honor, or profit.</p>
<p><strong>Reliquary Features:</strong><br></p>
<ul><li>A far-future, strange, brutalist world with millions of years of history</li><li>Simple ruleset</li><li>GMless, no-prep play</li><li>1-4 players</li><li>11 pieces of art</li></ul>
<p><strong>With Purchase, You Get:</strong><br></p>
<ul><li> Single page PDF</li><li>Spreads PDF</li><li>Access to all future updates</li><li>A playingcards.IO room file to help facilitate online play</li></ul>
<p></p>
<p><br></p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTMxNzE3LzUyNzc0NjcuanBn/original/Lec1vt.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMxNzE3LzU4NTk3ODYuanBn/original/4pwLQ4.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMxNzE3LzU4NTk3ODUuanBn/original/qVJzEH.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMxNzE3LzU4NTk3ODQuanBn/original/s0D4dx.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMxNzE3LzU4NTk3ODcuanBn/original/8e0VoK.jpg]]
<p class="text-center"><strong>Warning:</strong></p>
<p class="text-center"><strong>The following game contains</strong></p>
<p class="text-center"><strong>Strong language, sexual themes, references to death, mentions of police violence, mild violence, and is intended for mature audiences only.</strong></p>
<p class="text-center"><strong>Viewer discretion is advised!</strong></p>
<p>---</p>
<p>You and several others have passed away.<br></p>
<p>Rather than being sent to Heaven or Hell, the powers that may be are unable to decide where you should go. You wake up in the Garden of Eden who's new home has been made in Limbo. You have three options: either take the trials to earn your place in Heaven, live it up in Hell, or remain lost in Limbo for eternity.</p>
<p>It's a lot to take in fresh off your death bed... but maybe you find can find your peace along with your new friends in the afterlife.</p>
<p>---</p>
<p><a href="https://www.patreon.com/residentrabbit" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzc3NzUzNjQucG5n/original/kUO5pF.png" loading="lazy"></a></p>
<p><a href="https://www.etsy.com/shop/ResidentialRabbit?ref=seller-platform-mcnav&section_id=31256458" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzc3NzUzNzkucG5n/original/o%2FUixi.png" loading="lazy"></a><br></p>
<p>Repurpose is an LGBT+ positive dating sim about death, love, and finding your purpose. We offer the ability to play as the gender that suits you best be it cis, trans, or anything else on this beautiful mess of a spectrum! The cast of REP are all in some capacity queer from their sexuality and/or gender!</p>
<p><img src="https://img.itch.zone/aW1nLzc3NTcxMjgucG5n/original/CasC8m.png" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzc3NTcxMzAucG5n/original/Cdc%2FNb.png" loading="lazy"><br></p>
<p><img src="https://img.itch.zone/aW1nLzc3NTcxMzIucG5n/original/u8ybaU.png" loading="lazy"><br></p>
<p><img src="https://img.itch.zone/aW1nLzc3NTcxMzQucG5n/original/TukjNv.png" loading="lazy"><br></p>
<p><img src="https://img.itch.zone/aW1nLzc3NTcxMzUucG5n/original/aGVcXd.png" loading="lazy"><br></p>
<p><img src="https://img.itch.zone/aW1nLzc3NTcxMzcucG5n/original/knWe1h.png" loading="lazy"><br></p>
<p><br></p>
<p>---</p>
<p>Game Director: ResidentRabbit</p>
<p>Head Writer: Same Rose</p>
<p>Programming: HatchetHaro, Sebastion, Sebaceous</p>
<p>Art: ResidentRabbit</p>
<p>Art Assistants: SweetTracky, Villanalirreal, HappyPaca
</p>
<p>Backgrounds: TJ Lee, Sara Krebs, Resident Rabbit</p>
<p>Music: Tenshihanaka<br></p>
<p><br></p>
<p><a href="https://twitter.com/CereusGarden?s=09" target="_blank" rel="nofollow noopener" referrerpolicy="origin">A Cereus Garden Production</a></p>
<p><br></p>
<p><strong>Questions and Answers:</strong></p>
<p><strong>Q: Can I play this game for my youtube or twitch channel?</strong></p>
<p><em>A: Of course! Just please provide a link to the itchio page for others to check out the game.</em></p>
<p><strong>Q: What's this game's rating?</strong></p>
<p><em>A: It's rated M for strong language, mature themes, and adult situations. There is no explicit nudity or graphic depictions on violence however. </em></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjYzOTAyLzQxMjE0NjkucG5n/original/lQ1pE%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYzOTAyLzQxMjE0NzAucG5n/original/UEIoDV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYzOTAyLzc3NTc2NjAucG5n/original/%2FY9ELu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYzOTAyLzc3NTc2ODMucG5n/original/h4bqjz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYzOTAyLzc3NTc2ODUucG5n/original/wyNBKJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYzOTAyLzc3NTc2ODQucG5n/original/GPLCnS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYzOTAyLzc3NTc3MTEucG5n/original/LDbUYj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYzOTAyLzc3NTc3MTAucG5n/original/7TuvH8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYzOTAyLzc3NTc3MDkucG5n/original/itLRRg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYzOTAyLzc3NTc3MTIucG5n/original/LT5G4G.png]]
<p>Restricted Airspace is a single player shoot em up in the <a href="https://nas.sr/2019/10/23/yesterdays-pixels-today/" rel="nofollow noopener" referrerpolicy="origin">style</a> of Star Fox for the SNES. It takes place in a city made from an amalgamation of the <a href="https://en.wikipedia.org/wiki/Grand_Serail" rel="nofollow noopener" referrerpolicy="origin">old Ottoman buildings</a> I grew up with in Beirut. In the game the city is under devastating attack and all you can do is delay the unavoidable before you inevitably fail to save the place you love.</p>
<p>It was developed as a backer reward for the <a href="https://www.kickstarter.com/projects/markkleeb/wonderville-arcade" rel="nofollow noopener" referrerpolicy="origin">successful Kickstarter campaign</a> to support the opening of the <a href="https://www.wonderville.nyc/" rel="nofollow noopener" referrerpolicy="origin">Wonderville arcade in Brooklyn</a>. It was exclusive to backers for a year and the complete game was scheduled for public release in August 2020.</p>
<p>On August 4, 2020 <a href="https://www.nytimes.com/interactive/2020/09/09/world/middleeast/beirut-explosion.html" rel="nofollow noopener" referrerpolicy="origin">a massive explosion ripped through the port of Beirut</a>, horrifically realizing the fears that inspired this game. Out of respect for the dead and in mourning for the city that raised me <strong>I have removed from the public version of the game the antagonists, the bombs, the explosions, </strong><strong>the smoke, the inevitable loss.</strong> You are free to fly the skies in peace.</p>
<p>All proceeds from this game will go towards the reconstruction of Beirut.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzU2NTkyLzQyMjg5MzIucG5n/original/BZ8n0i.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU2NTkyLzQyMjg5NDYucG5n/original/ud2f3V.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU2NTkyLzQyMjg5NDcucG5n/original/1GprVM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU2NTkyLzQyMjg5NDgucG5n/original/04dp4X.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU2NTkyLzQyMjg5NDkucG5n/original/CQzI31.png]]
<ul><li class="text-justify">"The writing and characters are what stands out here. Despite the game's short length, they're well-written and easy to care for, and the game's emotional moments hit excellently." - Jum, Steam</li><li class="text-justify">"Retrace is an ambitious first attempt, and gets a lot right." - <a href="https://uppercutcrit.com/review-retrace/" rel="nofollow noopener" referrerpolicy="origin">UpperCut Crit</a></li><li class="text-justify">"Retrace is the mashup of Nier Automata, Zero Escape and horror you wanted" - <a href="https://www.playdiaries.com/retrace-nier-automata-zero-escape/" rel="nofollow noopener" referrerpolicy="origin">PlayDiaries</a></li></ul>
<p><strong><br></strong></p>
<p><strong>A WORLD THAT DESIRES YOUR DEATH</strong><br>You and your friends find yourself in a strange, unforgiving place. Frantically you seek a way out, but death lurks at every corner, and when it finds you — that’s when your resolve is rewarded with the ability to rewind time. What path will lead you out? What decisions will you have to make? And what secrets will you uncover in the dark?<br><br><strong>A RICH TRADITION</strong><br>Explore a beautifully atmospheric 2D world with a mix of pixel art and painted portraits. Within it you’ll find a mixture of traditional logic puzzles and heart-pounding action sequences, as well as secrets and mysteries.<br><br><strong><br>DEATH IS YOUR TEACHER</strong><br><img src="https://steamcdn-a.akamaihd.net/steam/apps/1052640/extras/awakening_600.gif?t=1558719597" loading="lazy"><br>This world desires your death, but that does not mean the end. Use what you learn on one path to explore further down another. Find shortcuts, piece together clues and study patterns that will lead you to victory.<br><br><strong>USE YOUR HEAD OR LOSE IT</strong><br><img src="https://steamcdn-a.akamaihd.net/steam/apps/1052640/extras/newspaper_clipping_600.gif?t=1558719597" loading="lazy"><br>Freya is faced with locked door after locked door in her quest to escape, and the only way to unlock them is to play her captor's game--solving the logic puzzles contained within each room. The consequences for getting them wrong can be ... unpleasant.<br><br><strong>QUEER ROMANCE IN DANGEROUS PLACES</strong><br><img src="https://steamcdn-a.akamaihd.net/steam/apps/1052640/extras/wlw_mlm_solidarity_600.gif?t=1558719597" loading="lazy"><br>Complicating matters is Freya's long-standing crush on her best friend, Mia. Will the terror of their experience bring them closer together, or tear them apart? And what of Claire, the prisoner who admires Freya as her saviour? Freya's choices will influence more than just her survival, but also her relationships.<br><br><strong>ABOUT THE TEAM</strong><br>Retrace is being developed by Spider Lily Studios lead developer Els White, with programming assistance by Julian Adams, art by Domi Cesarz and music by harmonicblend.</p><p><br></p><p>Looking for more games by the studio? Check out Schrodinger's Catgirl, now live on Kickstarter!<br><iframe src="https://itch.io/embed/1120860?linkback=true" width="552" height="167" frameborder="0"><a href="<a href="https://spiderlilystudios.itch.io/schrodingers-catgirl">Schrodinger's" class="redactor-linkify-object">https://spiderlilystudios.itch.io/schrodingers-catgirl">Schrodinger's</a> Catgirl by Spider Lily Studios</a></iframe><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/pQOb7RzQOfI" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzkyNjc3LzE5NDQ1MTMuZ2lm/original/MQ1h8O.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzkyNjc3LzE5NDQ1MTYucG5n/original/pHQ2np.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzkyNjc3LzE5NDQ1MTgucG5n/original/5%2BGRZT.png]]
<p>I originally released these tracks as an EP called "Neon-Flavored Starvation" on my personal bandcamp in 2018. A lot of people always told me they would make an amazing soundtrack for a cyberpunk game, so... why not let someone else use them for that? The tracks are released under an Attribution-Sharealike Creative Commons license so you can pretty much do whatever the hell you want with them (use, sample, edit, remix, whatever) in any commercial or non-commercial project as long as you credit me as Carlos Hernández (and credit Jackie Regz as a guest musician on Track 2), and share your project under a similar license.</p>
<p>This project includes 5 tracks in mp3, wav or MIDI format, to make it easier in case you wanna edit them in any MIDI editor of your choice. The MIDI version of Track 2 is subtantially shorter than the wav and mp3 versions because it doesn't include the guest solo by Jackie Regz (she originally sent me the solo as a wav file, so I have no way to include it in a MIDI, so I just decided to chop that entire part of the song off.</p>
<p><a href="https://veryverybadatnicknames.bandcamp.com/album/neon-flavored-starvation" rel="nofollow noopener" referrerpolicy="origin">Here's the link to the original bandcamp release in case you want to support me over there too.</a> Donations are highly appreciated.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/vFonvzPR1ik" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1nLzM2NTE0MjkucG5n/original/uWC1j3.png]]
<p>What would happen if an insane wizard set up shop on a cursed island and decided to blend the dark arts of <strong>necromancy</strong> and ... <strong>nostalgia</strong>?</p>
<p>They'd become a Retromancer. And you'd have to hunt them down; probably in some kind of intense, pixelated, twin stick shooter.</p>
<h2>Choose Your Champion</h2>
<p>Select one of four different characters to match your play style (or master all of them, to prove your skills):</p>
<p><strong>The barbarian</strong> is slow but sturdy, hurling massive axes towards their enemies and charging forward recklessly. There's also a lot of yelling. Deadly yelling.</p>
<p><strong>The mage</strong> keeps their distance and blasts foes with arcane bolts that steer themselves to the nearest target. Hang back and shred the air with razor sharp magical shards.</p>
<p><strong>The hunter</strong> darts in and out of combat, sniping at monsters with fast-firing and long-ranged arrows then darting out of the way.</p>
<p><strong>The cleric's</strong> greatest strength is their faith, which happens to let them fill the air with spheres of holy light that explode and tear apart the creatures around them. When their devotion is especially strong, they might even be blessed with free armor.</p>
<p>No matter which you choose, you'll level up as you fight through the Retromancer's forces, gaining damage bonuses and recovering armor as you go.</p>
<h2>Arm Yourself Against the Madness</h2>
<p>Take advantage of weapons and power ups to deal more damage, fire faster, dodge enemies, and freeze monsters in their tracks.</p>
<p>Unlock permanent upgrades between games that enhance each character's strengths: mages get even more rapid fire, clerics get more blessings from their gods, hunters become even more deadly at range, and barbarians yell louder than ever before!</p>
<h2>Defy Death</h2>
<p>A unique death's door mechanic gives you a fighting chance to come back from the brink of death.</p><h2>Enlist Your Friends</h2>
<p>If the Retromancer is too much to tackle alone, you can recruit up to three friends in the local 4-player co-op mode.</p>
<p>When you do have your friends with you, you'll be able to revive each other when you fall in battle, so you'll never be stuck fighting alone.</p>
<h2>Survive The Journey</h2>
<p>Battle through 30 stages spread across 6 areas on the cursed island of Qor, challenging a vast array of crazed monsters ranging from rats and beetles to sentient trees and extra-dimensional horrors.</p>
<p>Endure a plague of locusts in the haunted woods, overthrow a cultist army in the ruins, surrender your sanity to the creatures of the Void, and kill the Retromancer.</p>
<h2>Feature Summary</h2>
<ul>
<li>4 characters to master</li>
<li>Unique death's door and multi-player revival mechanics</li>
<li>Up to 4 player local co-op</li>
<li>Both controller and keyboard & mouse support</li>
<li>Over a dozen weapons and upgrades to unlock</li>
<li>30 levels spread across 6 areas ranging from haunted woods to a cosmic void</li>
<li>3 dozen monster types to conquer</li>
<li>In-game bestiary with monster stats and details</li>
<li>Feats and achievements to earn</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/tUAV7BNNdxU" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzMwMjc5LzE2OTczNDIuZ2lm/original/bINjmW.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzMwMjc5LzE2OTczNDMucG5n/original/Nayn5W.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzMwMjc5LzE2OTczNDQucG5n/original/aFm5Pj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzMwMjc5LzE2OTczNDYucG5n/original/qQZFH9.png]]
<p>This is a text based adventure game. In Rettend - File #1 you will solve puzzles and collect photographs.</p>
<p>This experience is in relation to my upcoming first person, narrative driven puzzle game, Rettend. </p>
<p><iframe frameborder="0" src="https://itch.io/embed/772415?border_width=3&bg_color=17141b&fg_color=ffffff&link_color=ef9058&border_color=ffffff" width="556" height="171"><a href="<a href="https://majdfwolf.itch.io/rettend-inception-playable-teaser">Rettend" class="redactor-linkify-object">https://majdfwolf.itch.io/rettend-inception-playable-teaser">Rettend</a> - Inception (Playable Teaser) by Majdf Wolf</a></iframe><br></p>
<p>If you have any questions or feedback feel free to contact me.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3NjU4LzYzNzUzMTUucG5n/original/gJx5wV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3NjU4LzYzNzUzMTQucG5n/original/%2FF1%2FJP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3NjU4LzYzNzUzMTYucG5n/original/Mc4P1s.png]]
<p><strong>Revels in the Heavenly Hall</strong> is a game of violence without dice, powered by autonomy and collaboration in a one-shot framework that lets you sketch out a battlemap, arrange fighters on it one by one and then smash them into one another with reckless abandon. Its aim is to simulate tactics not only good tactics, but awful ones too; ones that you would be ashamed to have thought of in a setting where the stakes are high and the story hinged on you being good at much of anything. This is a different kind of story.<br></p>
<p>Abandoning the pretext of challenge, this game is a communal celebration of wreckage. Your room to maneuver here is broader as you are able to narrate the fates of your pieces freely, both in how successful their actions are as well as the harm they may sustain, with a robust system of shared authority and ground rules guiding you into using great victories as well as terrible defeats as moment-to-moment storytelling tools. Lock hands with your friends and throw yourself into destruction, and make sure to enjoy yourself to the fullest.</p>
<p>This game was made for the 4F Tactical Combat Jam. Here's to a life of being awful at tactics and loving every moment of it.<br></p>
[img width=500 [https://img.itch.zone/aW1nLzQ3MTQ5NjgucG5n/original/JrbVd%2F.png]]
<p>You're applying for <em>the job of your dreams,</em> a chance to work at the prestigious Reverie corporation and contribute to the growth of their dream network. They specialize in reading and interpreting dreams with voice synthesis software and it will be your job to verify and degauss the dreams as part of your application. Good Luck!</p>
<p style="margin-left: 20px"><em>I researched dreams to actually provide accounts of real individual's thoughts and nightmares during sleep. I was fascinated in recent applications of data visualization and wanted to make a game that utilized some of those techniques as you build out a network for Reverie.</em></p>
<p>I designed the game for the <a href="http://contest.gamedevfort.com/submission/474" rel="nofollow noopener" referrerpolicy="origin">GameDevFort contest 2015</a>. You can follow me here: <a title="Here" href="https://twitter.com/metkis" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/metkis</a></p>
<p>The music is a modified version of <em>Water Lily</em> by Kevin MacLeod. It has been time-stretched and inversed, with reverb and flanger added.</p>
<hr>
<p><strong>Game Info</strong>:</p>
<ul><li><em>The game supports both Mouse & Keyboard as well as the XBOX 360 Controller.</em></li><li><em>Headphones are recommended.</em></li><li><em>I suggest having a decent computer as the effects used are expensive. Still, it should easily run on most entry-level gaming rigs.</em></li><li><em>The game features just under 8 minutes of VO.</em></li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzI5NDkvMTQxMTgxLnBuZw==/original/2bkZFQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzI5NDkvMTQxMTgyLnBuZw==/original/hVHU%2B7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzI5NDkvMTQxMTgzLnBuZw==/original/pygp7k.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzI5NDkvMTQxMTkwLmdpZg==/original/T2Qo7o.gif]]
<h3>English</h3>
<p><em>Rewwixta </em>is a solo story generation TTRPG where you recount tales of revolt, rebellion, and uprising against colonial powers. It is based on brilli, a Maltese folk game. <br></p>
<p>While <em>Rewwixta </em>is inspired by various historical rebellions carried out by the Maltese population, the game is explicitly anti-canon, and we encourage you to tell your own stories of colonial revolt.</p>
<p>12 page document, with 1.5 pages of image and academic references<br></p>
<h3>Malti</h3>
<p><em>Rewwixta</em> hija lgħajba fejn jintqalu stejjer ta' assedji, ribelljonijiet, u rewwixti kontra setgħat kolonjali. M'hemmx bżonn parteċipanti oħra biex tilgħab <em>Rewwixta</em>; tista' tintlagħab minn persuna waħda. Il-lgħajba hija bbażata fuq il-logħba tal-<em>brilli</em>, logħba li hija parti mill-folklor Malti.</p>
<p>Għalkemm <em>Rewwixta</em> hija ispirata minn bosta rewwixti li saru Malta, il-lgħajba hija espliċitament kontra l-idea li għandek timxi mal-istess ideat. Anzi, nħeġġuk tirrakkonta stejjer ta' rewwixta li verament jistgħu jissejħu tiegħek.</p>
<p>Dokument ta' 12-il paġna, b'paġna u nofs ta' referenzi akkademiċi u referenzi għall-istampi li ntużaw<br></p>
[img width=500 [https://img.itch.zone/aW1nLzQwMzg2OTMuanBn/original/iZE%2FKN.jpg]]
<p><em><img src="https://img.itch.zone/aW1nLzEzODAwMzEucG5n/original/LthG4L.png" loading="lazy"><br></em></p>
<h3>An Anti-Coin Collection Platformer inspired by Japanese folktales.</h3>
<h4><img src="https://img.itch.zone/aW1nLzc2NDI5Mi5wbmc=/original/IgFTxI.png" style="color: inherit; font-size: 14px" loading="lazy"></h4>
<p>As the day shines the last of its golden light over the land an eerie realm begins to form in the shadows. This spectral world is home to the Yokai. An assortment of ghosts, ghouls and demons that rise in the dusk and play through the night.</p>
<p>When a young girl, Tamako, spots one of these yokai she finds herself trapped in their world. If she can navigate this perilous land, the key to returning home may lie on the strange new mountain on the horizon.</p>
<p><img src="https://img.itch.zone/aW1nLzEzODA2OTkucG5n/original/VjYsEg.png" loading="lazy"><br></p>
<h4>Features</h4>
<ul><li>Explore the world of Rising Dusk over <strong>20+ levels </strong>traveling through Rice Fields, Castle Towns, Hot Springs, and more.</li><li><strong>Avoid the coins</strong>! A unique mechanic that will have you battling every instinct to get everything. There’s a multitude of collectables, but can you resist collecting them all?</li><li><strong>16-bit meets Studio Ghibli</strong> art style. Encounter all sorts of ghosts and demons drawn from Japanese mythology.</li><li><strong>Hidden Items</strong>, <strong>Secret Exits </strong>and more. This game is bursting with <strong>secrets and easter eggs</strong>.</li><li>For <strong>PC & MAC</strong> </li></ul>
<h4>Press</h4>
<p class="text-center"><em>"A charming, vibrant adventure, jam-packed with cool characters!"</em><br><strong><em>~ Team Cherry</em></strong><span></span></p>
<p class="text-center"><em>"The game never handholds, and everything that is needed to be known is clearly conveyed through the excellent level design."<br><strong>~ Indie Ranger</strong></em></p>
<p class="text-center"><em>"...a pretty mix of 16-bit era and Studio Ghibli."<br></em><strong><em>~ Retronator</em></strong><span></span></p>
<p class="text-center"><em> "...the soundtrack is an absolute banger"</em><br><strong><em>~ cliqist.com</em></strong><span></span></p>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/GSpmMgUnhhM" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTY1NTE1LzExOTg4NTcucG5n/original/GR0%2Bvw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY1NTE1LzExOTg4NTgucG5n/original/rnnp3y.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY1NTE1LzExOTg4NTQucG5n/original/7WSs0z.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY1NTE1LzExOTg4NTUucG5n/original/pzg9lH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY1NTE1LzExOTg4NTkucG5n/original/Gq8KYm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY1NTE1LzExOTg4NTYucG5n/original/ukFtUs.png]]
<p class="text-justify text-right"> ☾<br></p>
<p>Ritual of the Moon is a 28 day long multi-narrative game exploring loneliness, power, and healing. Once discovering her powers, The Earth’s Council exiles the witch to the moon to live out the rest of her life looking at the earth - and the woman she loves - that she can never go back to. The player spends 5 minutes each day over the 28 days reflecting on her experiences on Earth, meditating at her altar, and making a life or death choice.</p>
<p class="text-justify">The game is a daily meditational activity composed of a memory game, drawing symbols, receiving a mantra, and making a decision about the future of the earth. The game tracks the decisions the player makes, becoming a sort of mood tracker. Depending on their feelings over the lunar cycle, the player will experience one of the six unique endings.</p>
<p class="text-justify text-center"> ☾<br></p>
<p class="text-justify text-center">Ritual of the Moon was written and designed by Kara Stone, programmed by Chris Kerich, Matthew R.F. Balousek, Kevin Stone and Hope Erin Phillips, with art and sound by Rekha Ramachandran and Julia Gingrich, with music composition by Halina Heron and Maggie McLean.<br></p>
<p class="text-justify"> ☾</p>
<p><a href="https://ritualofthemoon.bandcamp.com/" rel="nofollow noopener" referrerpolicy="origin">Purchase the full original soundtrack by Halina Heron and Maggie McLean</a></p>
<p> ☾<span></span></p>
<p><br></p>
<p>Reviews:</p>
<p class="text-justify">“Playing the game feels like engaging a celestial, soulful advent calendar, a reflection of mood and mindfulness.” - <a href="https://www.polygon.com/2018/5/9/17329332/ritual-of-the-moon-mental-health-games-art-student-ucsc" rel="nofollow noopener" referrerpolicy="origin">Polygon</a><br></p>
<p>"...I wonder if, at the end of the month, I will miss taking The Ritual Of The Moon and have to start it all over again." - <a href="https://www.rockpapershotgun.com/2019/04/16/ritual-of-the-moon-diary-day-two-but-really-day-three/" rel="nofollow noopener" referrerpolicy="origin">Rock Paper Shotgun</a></p>
<p>"It’s an incredible experience – one well worth taking a few minutes each day." - <a href="https://indiegamesplus.com/2019/04/ritual-of-the-moon-is-a-28-day-meditation-on-loneliness-healing" rel="nofollow noopener" referrerpolicy="origin">Indie Games Plus</a></p>
<p>"<em class="">RotM </em>is certainly a meditative experience as well, but it’s more than that. It’s as much a journey as it is a game, and I almost feel like it’s reductive to categorize it. This whole game is a ritual... <em class="">RotM </em>easily slipped into my personal daily ritual for the past fourteen days, and I’m looking forward to continuing that ritual for the next fourteen (and most likely beyond). I’ll miss this experience too much when it’s over to not replay it." - <a href="https://medium.com/@phoenix.simms/ritual-of-the-moon-a-waning-crescent-check-in-3e69f650da6d" rel="nofollow noopener" referrerpolicy="origin">Phoenix Simms</a></p>
<p>" It is all quite simple, but with how it fits into my own life, it’s comfortable. The witch’s routines are mine, we do the little things we want to do before we rest... <em>Ritual of the Moon</em> demands the daily ritual, demanding that you take a stance yourself, lest it makes the decisions for you." - <a href="http://phenixxgaming.com/2019/04/29/ritual-of-the-moon-and-its-28-daily-rituals/" rel="nofollow noopener" referrerpolicy="origin">PhenixxGaming</a></p>
<p>"The structure of this game, giving you very deliberate choices with indeterminate consequences that stretch out over time, is an interesting use of the niche contemporary videogames now have in many people’s lives." - <a href="https://emreed.net/dailies.html" rel="nofollow noopener" referrerpolicy="origin">Emily M. Reed</a><span></span><br></p>
<p><br></p>
<p>More writing on Ritual of the Moon: <br></p>
<p><a href="https://www.pcgamer.com/ritual-of-the-moon-is-a-meditative-game-that-takes-28-days-to-complete-out-now/" rel="nofollow noopener" referrerpolicy="origin">PC Gamer</a></p>
<p><a href="https://games.mxdwn.com/news/ritual-of-the-moon-is-a-meditative-game-that-takes-a-full-lunar-cycle-to-complete/" rel="nofollow noopener" referrerpolicy="origin">MXDWN</a></p>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/580-Ypm3r14" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzUzMTE4LzE3NTk5NTEucG5n/original/0w33uy.png]]
<p><strong>Nostalgic lo-fi driving adventure where you travel through the mountains to discover the story of your forgotten grandmother
</strong><strong></strong><strong></strong></p>
<p>Set in the southern cascades of northern California, Road Trip is a short game about exploration, community, landscapes, and family. Play as <em>the Otter</em> who is out looking for their grandmother, a legend of the Cascades who has made a name in the region but is a mystery to the main character.</p>
<p>The game combines relaxing driving gameplay with narrative based adventure games. Cute, low key and full of vibes.</p>
<p>The game is available for free, you can get the original game soundtrack composed by Stephen Fagan as a bonus with your download if you donate $1.99 or more.<strong></strong><br></p>
<p><strong>Album Cover and Back</strong><br></p>
<p><img src="https://img.itch.zone/aW1nLzU3NTI1MzYucG5n/original/4vBs8D.png" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzU3NTI1MzgucG5n/original/ojtc78.png" loading="lazy"></p>
<p><br></p>
<p><strong>Credits</strong><br></p>
<ul><li>Elijah Cobb
<ul><li>Artist, Designer
</li></ul></li><li>Liam Cristello<ul><li>Programmer
</li></ul></li><li>Michael Reveliotis<ul><li>Programmer, Narrative Designer
</li></ul></li><li>Will Bridges<ul><li>Programmer
</li></ul></li><li>Stephen Fagan
<ul><li>Composer
</li></ul></li></ul>
<p><br></p><p>If you enjoyed the game give a review, and if you didn't give us a comment so we can improve the game!<br><strong></strong></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/W_jdnBQIKus" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNzgwMy81NzQwOTE5LnBuZw==/original/rjqWfY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNzgwMy81NzQwODM0LnBuZw==/original/yHT4w0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNzgwMy81NzQwOTIwLnBuZw==/original/%2FarkIw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNzgwMy81NzQwODMxLnBuZw==/original/3yBGcA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNzgwMy81NzQwOTI1LnBuZw==/original/BU8x4w.png]]
<p><strong>Gameplay</strong></p>
<p>Your robot friend is stuck. Help him reach the portal whilst avoiding spikes and other robots out to kill you. There are 10 levels to try can you help him escape them all?</p>
<p>There are many innovative mechanics such as wall jumping and a variety of different enemies. </p>
<p><strong>Controls</strong></p>
<p>Use A and D to move or arrow keys and space bar to jump.</p>
<p>This game was created in 4 days feedback would be appreciated and your ideas could be seen in future updates.</p>
<p><iframe frameborder="0" src="https://itch.io/embed/1062179?bg_color=56596e" width="552" height="167"><a href="<a href="https://ellisjames20061.itch.io/tri-again">Tri" class="redactor-linkify-object">https://ellisjames20061.itch.io/tri-again">Tri</a> again by Ellisjames20061</a></iframe><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTQ3MzUyLzUzNzQzMTgucG5n/original/s%2FtdxS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ3MzUyLzUzNzQzMTEucG5n/original/qzWbiV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ3MzUyLzUzNzQzMTcucG5n/original/QTKc74.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ3MzUyLzUzNzQzMjkucG5n/original/qVFivp.png]]
<p>Robot wants stuff, so go get it for him! This game is a compilation of the original Robot Wants games from 2010: <strong>Robot Wants Kitty, Robot Wants Puppy, Robot Wants Fishy</strong>, and <strong>Robot Wants Ice Cream</strong>. In addition, it includes <strong>Robot Wants Y!?</strong>, a mini-game that was actually the main banner on the JayIsGames website for a while. And of course, Robot wouldn't be wanting it all if we didn't add <strong>Robot Wants Justice</strong>, a <em>brand new</em> Robot adventure!</p>
<p><strong>Robot Wants</strong> pioneered the "mini-metroidvania" concept - an adventure you play through over an hour or less, collecting the powerups you need to go from zero to Kitty along the way. And all with a clock ticking - speedruns are the goal!</p>
<p>Each of the included games includes 2 alternate maps (an "Easy" map, which sometimes is not so easy, but we guarantee it is short! And a "Remix" map, which is never easy, or quick), and there are also 12 Mutators which allow you to transform the way the game plays in a variety of helpful and horrible ways.<br></p>
<ul><li>The ultimate Metroidvania action - you can't even <em>JUMP</em> without first finding a power-up in some of these games.</li><li>A massive shop full of features and game modes to unlock as you play (with space money, not real money. No IAP or DLC here)</li><li>Extreme alien blasting in <strong>Robot Wants Kitty</strong></li><li>Intense kitty-hurling action in <strong>Robot Wants Puppy</strong></li><li>Psychotic mad bombing in <strong>Robot Wants Fishy</strong></li><li>A unique combination of Metroidvania and RPG in <strong>Robot Wants Ice Cream</strong></li><li>Serious puzzle-solving action in <strong>Robot Wants Y?!</strong></li><li>Alien-smashing, air-dashing combos in <strong>Robot Wants Justice</strong></li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/JPtukSt8mEM" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc3OTcucG5n/original/HLxSO8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc3OTgucG5n/original/s7G1wi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc3OTkucG5n/original/iyG9vw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MDEucG5n/original/o9I%2FyF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MDMucG5n/original/QjnzQN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MDAucG5n/original/QbpBVS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MDIucG5n/original/vZqTf4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MDQucG5n/original/rgEFbs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MDkucG5n/original/%2FrTTDN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MTcucG5n/original/f%2Fr3yY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MTUucG5n/original/zAO9ts.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MDUucG5n/original/xAViJj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MDcucG5n/original/P3%2B943.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MTMucG5n/original/oJOaHt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MDYucG5n/original/OvM6Rv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MDgucG5n/original/PYuIst.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MTgucG5n/original/ZAdDW5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MTQucG5n/original/IOdllY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MTAucG5n/original/9v3JPn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MTIucG5n/original/efThPn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MDgyLzE5Nzc4MTEucG5n/original/tgpobL.png]]
<p>Robots & Ruins is a pamphlet tabletop roleplaying game about amnesiac androids who have just come online and awakened to find themselves in a post-apocalyptic world they don't know or understand. They struggle to recover their memories of their time in the old world while they explore to find their place in the new world. As they uncover their memories, they also uncover hidden abilities in the form of Software and built-in Hardware. With these tools from their previous existence, they might be able to build a place for themselves in the new world—or defend themselves from its dangers!</p>
<p>Robots & Ruins is based on <a href="https://torthevic.itch.io/vampires-claymores" target="_blank">Vampires & Claymores</a> by Torthevic and uses the same simple but powerful Action and Challenge dice pool system with a handful of d6s. It was submitted as part of <a href="https://itch.io/jam/rpg-latam-jam" target="_blank">RPG LATAM JAM</a>.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTkzMDExLzU2NDk2NzEuanBn/original/uilZJI.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTkzMDExLzU2NDk2NzguanBn/original/vkzpR2.jpg]]
<h3>Throw Garbage At Dinosaurs! RoboVDino is 1-5 player cooperative carnage!</h3>
<p><img src="https://img.itch.zone/aW1nLzEyOTk1NTAucG5n/original/OF7tLT.png" loading="lazy"></p>
<p>Take control of FILO, the unreasonably angry robot, pick up trash, throw it at Dinos, and throw the Dinos into the goal before they wake up. <br></p>
<p><img src="https://img.itch.zone/aW1nLzEyOTk1NDkucG5n/original/e6uxdC.png" loading="lazy"><br></p>
<p>Dinosaur habitats like the Dino-Shore, RAWRcade, and Stock Rex-change will test your skills in single player, or plug in up to 4 more controllers for 5 player coop action!<br></p>
<p><img src="https://img.itch.zone/aW1nLzExMjU5MDAuZ2lm/original/ZGg0lc.gif" loading="lazy"></p>
<p>RoboVDino is an all ages party game with intense arcade action.<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/-KWrG1hda_Y" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTY5OTI4LzEyOTk2NTEucG5n/original/rEUlOe.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY5OTI4LzEyOTk2NTQucG5n/original/eSWkDP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY5OTI4LzEyOTk2NTUucG5n/original/lMBBle.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY5OTI4LzEyOTk2NTIucG5n/original/bdaKd%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY5OTI4LzEyOTk2NTMucG5n/original/KaiXEy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY5OTI4LzEyOTk2NTAucG5n/original/Km1iVR.png]]
<p>A village stricken by tragedy. A group of plucky young fishers. An ancient region, reclaimed by nature, and the wish-granting fish that waits at the heart of it.</p>
<p>Welcome to Rod, Reel, & Fist.</p>
<ul><li><strong>A Tabletop Fishing RPG?!</strong> Rod, Reel, & Fist is 280+ pages of tabletop fishing adventure. Players take on the roles of heroic fishers trying to save their village by making a truly legendary catch.</li><li><strong>Everyone Can Play:</strong> Rod, Reel, & Fist is suitable for all ages, and its dice system makes all failures into temporary setbacks. At the same time, it's built to scale up and provide a challenge for seasoned players, and it comes with a host of alternate settings that reflavor the game as a space opera, cyberpunk adventure, or a martial arts odyssey.</li><li><strong>Simple But Deep:</strong> Catch fish and ward off hostile animals using a "rock, paper, scissors, dice" combat system that relies on clever resource management, reading your opponent, weighing risk versus reward, and knowing when to step back and let your teammates help.</li><li><strong>Build Your World:</strong> Easy-to-follow rules help you to design your own setting---either by yourself or collaboratively with your friends.</li><li><strong>Endless Adventure:</strong> The book comes with six scenarios, including an introductory sandbox, a tournament, a fishing journey, a timeloop, and a tower defense minigame where the players protect their town against hundreds of eels. Also included is the roguelike Legacy Mode, which expands the game by adding an evolving adventuring region to which the players must return multiple times in order to fully conquer it.</li><li><strong>Beach Episode Compatible:</strong> Splice Rod, Reel, & Fist into your current campaign for a light-hearted sidequest or a hot-blooded mini tournament arc.</li></ul>
<p>------------------------------------------------------------------------------------------------</p>
<p><strong>To Order A Print Copy, Go Here:</strong></p><ul><li><a href="https://www.drivethrurpg.com/product/302485/Rod-Reel--Fist?term=rod+reel" rel="nofollow noopener" referrerpolicy="origin">Rodreel Softcover</a></li></ul><p>------------------------------------------------------------------------------------------------</p><p><strong>What People Are Saying About Rod, Reel, & Fist:</strong></p><ul><li>Video review by <a href="https://www.youtube.com/watch?v=ysUXTSX_bI8&t=2s" rel="nofollow noopener" referrerpolicy="origin">Talking About Games</a></li></ul><p>------------------------------------------------------------------------------------------------<br style="color: inherit; font-size: inherit"></p><strong style="color: inherit; font-size: inherit">Other Cool Fishgames By Other Cool Folks:</strong><br><ul><li><a href="https://riverhousegames.itch.io/this-is-a-game-about-fishing">https://riverhousegames.itch.io/this-is-a-game-about-fishing<br></a></li><li><a href="https://wastelandofenchantment.itch.io/a-mosaic-strict-fishing-trip">https://wastelandofenchantment.itch.io/a-mosaic-strict-fishing-trip</a></li><li><a href="https://alessandroad.itch.io/reel-robot-fishing">https://alessandroad.itch.io/reel-robot-fishing</a></li><li><a href="https://torthevic.itch.io/riverbend-fishing-adventures">https://torthevic.itch.io/riverbend-fishing-adventures</a></li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTc1NzIzLzc0MzM1MTcucG5n/original/CNnxpn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc1NzIzLzU2NDE1OTkucG5n/original/BltEpm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc1NzIzLzU2NDE1OTUucG5n/original/eKnDoj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc1NzIzLzU2NDE1OTYucG5n/original/oA70Ep.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc1NzIzLzU2NDE1OTQucG5n/original/pBvPCr.png]]
<p>Rogueyard version 0.7 is now live (or undead)! Tremble in melancholic trepidation, ghastly reader!</p><p>Rogueyard is a tabletop role playing game where expired rogues use their memories of life to change reality as they recall how they have died. Players act as the ghosts of rogues, recounting their tales and attempting to learn how their end came to pass. As they unfold the details of their characters' journeys, they may contradict the dungeon master (or each other) and modify stories, encounters, and other dramatic details of their past quest in an attempt to complete an ill-fated heist.</p><p>The manual currently contains a summary of the ruleset, numerous standalone enemies and encounters, and a teaser for the sample heist. In later versions of the manual, I will be finalizing the sample heist, providing resources for character creation, and making edits & providing notes based on playtesting sessions! Lots of work to do yet, but an idle apparition has all the time in the world...</p>
<p>This is my (late) submission to the <a href="https://itch.io/jam/ssjturnbased" target="_blank">Portland Indie Game Squad's June 2020 Summer Slow Jam</a>, following the "Turn-Based" Technical Theme and "Alternate Timeline" Creative Theme. A huge thank you to members of the PIGSquad community for contributing art, discussing ideas, and encouraging an inspiring jam atmosphere while I worked on this! I couldn't have done it without you!
</p>
<p>Please note the exceptional contributors who provided art & inspiration for the project. You can find their information in the manual or <a href="https://gamewill.itch.io/rogueyard/devlog/160833/rogueyard-v07-is-live" target="_blank">in the v0.7 devlog</a>.</p><p>My next steps are to gather feedback on the written system's legibility, simplification, and some good ol' playtesting (<a href="https://pigsquad.com/summerslowjams" target="_blank" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">in between the July & August Summer Slow Jams, of course</a>)! If you have any questions after reading the manual, feedback from a session that you host, or interesting experiences while playing, please reach out by contacting me at <a href="https://twitter.com/gamewillpdx" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/gamewillpdx</a>. There may not be enough in the manual to play quite yet, but I appreciate any curiosity as I work things out.</p>
<p>Sleight surely, my friends!
</p>
<p>Will</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjgzNzI0LzM4MTQxMjgucG5n/original/2X0ddA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjgzNzI0LzM4MTQxMjkucG5n/original/aB3Ckj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjgzNzI0LzM4MTQxMzAucG5n/original/sKlydD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjgzNzI0LzM4MTQxMzEucG5n/original/A%2FUIIk.png]]
<p>Roly-Polo it's a fast and fun sport videogame for up to four players.<br></p>
<p>
</p>
<p>It's available for Windows, Linux, Ouya and Android, it has support for gamepads, keyboard, and touchscreen, you can download the <a href="https://lapieza.itch.io/roly-polo#demo">FREE DEMO</a> and try it out.<br><br>In the game you control a PillBugBear (or a pair of them if you chose Twins-Mode), to win you have to score 15 points by throwing the purple ball thought the ring goals.<br></p>
<p>The controllers have an auto throw to goal aid that you can turn On and Off on the options menu, also options for twin-mode, and the number of A.I. players that you want to play with.</p>
<p>It's <strong>local-multiplayer</strong> against friends or CPU controlled players, and doesn't have any online mode but it can be played online using streaming software like PARSEC (<a href="https://parsecgaming.com/" rel="nofollow noopener" referrerpolicy="origin">https://parsecgaming.com/</a>) or Remote Play Detached (<a href="https://github.com/smaTc/RemotePlayDetached" rel="nofollow noopener" referrerpolicy="origin">https://github.com/smaTc/RemotePlayDetached</a>).<br><br>By the time of release it comes with 8 hand-made stages that are selected one after the other in semi-random order for non-stop fun, and more will be added in the near future.<br></p>
<p></p>
<p></p>
<p>I made a Discord to help people find people to play online using the streaming software or talk about the game: <a href="https://discord.gg/tVUHz8NQ" rel="nofollow noopener" referrerpolicy="origin">https://discord.gg/tVUHz8NQ</a><br></p>
<p></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzcxOTQ4LzQ0MjI3ODgucG5n/original/rYfIdk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzcxOTQ4LzQ0MjI3OTAucG5n/original/CN9FZC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzcxOTQ4LzQ0MjI3OTEucG5n/original/QN2lxu.png]]
<p>
<strong>A world of Police that have forgotten what, and why, they are policing.</strong>
</p>
<hr>
<p>
<strong>Rooftop Cop</strong> is a collection of <em>five endless vignette games</em> and a <em>7-track album</em>. The games are set on a loose metaphysical timeline in which the Cops slowly lose their way.
</p>
<p>
Each of the five parts is quite different, and varies in theme from environmental terror, to manic industry, to a sort of darkly aloof joy.
</p>
<p>
Initially an MFA Thesis, you can read more about my process, thoughts, and feelings on the project over at
<a href="http://rooftopcop.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin">rooftopcop.com</a> !<br><br><strong>My 5-year Post Mortem talk, from Feb 2020, can be found here: </strong><a href="https://rooftopcop.com/POST-MORTEM" rel="nofollow noopener" referrerpolicy="origin">https://rooftopcop.com/POST-MORTEM</a></p>
<p>
______________
</p>
<p>
ROOFTOP COP
</p>
<p>
<em>I: A Proud History</em>
</p>
<p>
<em>II: Capture the Flag, for One</em>
</p>
<p>
<em>III: The Datamines</em>
</p>
<p>
<em>IV: God Bles Everyone</em>
</p>
<p>
<em>V: Palace of the Organizer</em>
</p>
<p>
______________
</p>
<p>
DOESN'T SPEAK, DOESN'T LISTEN
</p>
<p>
<em>Permanent Sunrise [ 3:28 ]</em>
</p>
<p>
<em>Police Cave and Memorial Estuary [ 7:18 ]</em>
</p>
<p>
<em>The Great Slope [ 3:58 ]</em>
</p>
<p>
<em>Real Live Murderers [ 3:48 ]</em>
</p>
<p>
<em>A Friend in the Fog [ 3:10 ]</em>
</p>
<p>
<em>Doesn't Speak, Doesn't Listen [ 6:58 ]</em>
</p>
<p>
<em>God Bles Everyone [ 8:28 ]</em>
</p>
<p>
<em><br>
</em>
</p>
<p>
<em><br>
</em>
</p>
<p>
______________
</p>
<p><strong>PRESS</strong></p>
<p><a href="http://www.giantbomb.com/articles/nina-freemans-top-10-games-of-2015/1100-5332/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Giant Bomb - Nina's Top10 of 2015</a></p>
<p><a href="http://fireside.gamejolt.com/post/rooftop-cop-f8gmbx37" target="_blank" rel="nofollow noopener" referrerpolicy="origin">GameJolt - 'Strange Name Strange Game'</a></p>
<p><a href="https://web.archive.org/web/20150313145836/http://killscreendaily.com/articles/player-artist/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">KILL SCREEN - 'Player As Artist'</a></p>
<p><a href="https://web.archive.org/web/20150203013116/http://killscreendaily.com/articles/rooftop-cop/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">KILL SCREEN - 'Ritual Manifestations'</a></p>
<p><br></p>
<hr>
<p>
<br>
<a href="http://www.igf.com/php-bin/entry2015.php?id=7672" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="http://payload287.cargocollective.com/1/11/352040/8053274/igf-final-logo_446.png" loading="lazy"></a>
<a href="http://www.igf.com/php-bin/entry2015.php?id=7672" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="http://transit7.cargocollective.com/1/11/352040/8053274/igf-student-show.png" loading="lazy"></a>
</p>
<hr>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAxOTEvMzEwNzAucG5n/original/mlZjW2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxOTEvMzEwNzIucG5n/original/TiXdY0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxOTEvMzEwNzMucG5n/original/1l5DHN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxOTEvMzExMzIucG5n/original/Ou5VmQ.png]]
<p><strong><br></strong></p>
<p>Rorschach is a precise, experimental puzzle platformer amalgamation thing where you use paint to reveal your surroundings. <br></p>
<p>Spiritual successor to the <a href="https://whycardboard.itch.io">WhyCardBoard</a> game <a href="https://whycardboard.itch.io/rorschach">Rorschach</a> -- Available for free!<a href="https://whycardboard.itch.io/rorschach"><br></a></p>
<p><br></p>
<p class="text-center">~ ~ ~<br></p>
<h2>Features</h2>
<p>- Over 70 levels to conquer<br>- Beautiful, minimalist art style<br>- Music by Rolemusic</p>
<p><br></p>
<p class="text-center">~ ~ ~<br></p>
<h2>Quotes</h2>
<p>"oooOOOOOOooooo very neat"<br><em>- </em><em>WhyCardBoard</em><br><br>"v sexy game"<br><em></em><em>- </em><em>Not EmCannon</em><br><br>"You know fortnite? This is that, but better."<br><em>- </em><em>FleshnBones</em><strong><em></em><br></strong></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/hLgwTfpKNwg" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODUxNTE3LzU2MTUyNzAuanBn/original/i%2FdD7B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODUxNTE3LzU2MTUyNzMuanBn/original/51UyBm.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODUxNTE3LzU2MTUyNjYuanBn/original/8Sz8uB.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODUxNTE3LzU2MTUyNjkuanBn/original/FCrslN.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODUxNTE3LzU2MTUyNjguanBn/original/KPE%2FVg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODUxNTE3LzU2MTUyNjcuanBn/original/fD4BFp.jpg]]
<p>Rose is desperate to unravel the mysteries of time travel, so she can rescue her parents who are trapped in the past. One day she feels close to an answer, but must be careful to not cause any paradoxes.</p>
<p><br>This is a puzzle game for Windows, Mac and Linux that combines time-travel and stealth gameplay.</p>
<ul>
<li>Collect crystals to time travel</li><li>Rewind out of paradoxes</li><li>20 Mind/Time bending puzzles</li><li>Story with hand-drawn illustrations</li><li>Short but sweet game</li></ul>
<p>New remastered version has:</p>
<ul><li>All new soundtrack by <a href="http://soundcloud.com/aeronic" rel="nofollow noopener" referrerpolicy="origin">Aeronic</a></li><li>New character model for Rose</li><li>New physically based materials for everything</li><li>Newer menus from the OUYA version</li><li>New story art and effects</li><li>Much improved gamepad support</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/RJRp6auXtR4" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTUvMTI3OTA2LmpwZw==/original/6iD2vw.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUvMTI3OTA3LmpwZw==/original/jD%2BLWh.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUvMTI3OTA4LmpwZw==/original/Kde73w.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUvMTI3OTA5LmpwZw==/original/uDDrnO.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUvMTI3OTEwLmpwZw==/original/CU3zqD.jpg]]
<p class="text-center"><em>Winner of Best Narrative - <a href="http://www.gameexpo.ae/indie-game-devfest/indie-game-devfest-2017-winners/" rel="nofollow noopener" referrerpolicy="origin">World Game Expo 2017</a></em><br></p>
<p><img src="https://img.itch.zone/aW1nLzg0MjQwOS5wbmc=/original/ygroHz.png" loading="lazy"><br></p>
<p>A tyrant's campaign has torn the kingdoms within Shanur apart. Firalda, a blacksmith's apprentice seeks revenge for her father's death with the help a plague doctor, a saint princess and a witch, raising hell within the castle they are imprisoned in. What evil had torn their lands apart, had made them unite under one as sisters in arms.</p>
<p><img src="https://img.itch.zone/aW1nLzg0MjQwOC5wbmc=/original/irIn%2Bc.png" loading="lazy"><br></p>
<p>Roses Will Rise is a strategy RPG with visual novel elements that is slowly being built bit by bit. While the game has a path to follow with different endings, the player can do side quests to understand more about the Roses, the world they are in, and unlock items that can aid them in battle.<br></p>
<hr>
<p>The game is planned to be and stay free even after the game exits development. There is the option for people to name their price if they would like to support the project. Alternatively, you can support me and the game on my <a href="https://www.patreon.com/asatiir" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">Patreon</a>:<br></p>
<p><a href="https://www.patreon.com/asatiir" rel="nofollow noopener" referrerpolicy="origin"><img src="http://patreon_public_assets.s3.amazonaws.com/sized/becomeAPatronBanner.png" style="width: 208px" loading="lazy"></a><a href="https://www.patreon.com/asatiir" rel="nofollow noopener" referrerpolicy="origin"></a></p>
<p>You may also get quick updates on the development of the game on my <a href="https://t.me/asatiirstales" rel="nofollow noopener" referrerpolicy="origin">Telegram broadcast channel</a>!</p>
<p>I might include some extras for paying players (PDF of the GDD with script is one of the few things planned).</p>
<p><em>Rating of the game is disabled until the final build is ready.</em></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/-rILPd_t73c" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTI5MzkvNzM5MTc2OS5wbmc=/original/rcIYn%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI5MzkvNzM5MTc3MC5wbmc=/original/6qAzNq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI5MzkvNzM5MTc3MS5wbmc=/original/RXlb5X.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI5MzkvNzM5MTc3My5wbmc=/original/ggu13h.png]]
<p><em>Rosette Diceless</em> is an approach to roleplaying that focuses on collaborative storytelling and consent-based conflict resolution. You can roleplay everything from complex combat to intricate political debate with the same set of simple, quick-playing rules that work equally well for a tabletop game as they do for a LARP.</p>
<p>With <em>Rosette Diceless</em> you can take part in games with many more players than are practical for many roleplaying systems. You can easily split into groups without dividing the attention of a single game master. There's no randomness; challenge resolution is simple and based on resource expenditure, understanding your target's strategies, and setting up story to enable your success.</p>
<p><em>Rosette Diceless</em> has an agenda: it is dedicated to a consensus-based, story-first, and improvisational approach. We believe that this creates the best social environment for creating and expressing stories that incorporate everyone's creativity.</p>
<blockquote><em>"this is it. this is the type of thing i'm looking for. something with more ambition than sense, and enough sense to strangle god."</em> - an itch.io user's collection note</blockquote>
<p><em>Rosette Diceless</em> is a complete, standalone book containing the core principles, character creation and advancement rules, conflict resolution system, and story-running techniques for GM-less games.</p>
<p><em>Rosette Diceless </em>is now at version 1.0.1. For a list of changes since the initial release, download the errata from this page.</p>
<p>For additional guidance and supplemental materials, including new Traits and optional rules, <a href="https://rosetterpg.com/supplemental-material/" rel="nofollow noopener" referrerpolicy="origin">check out the Rosette Diceless website</a>. </p><p>You can now pick up the <a href="https://futureproofgames.itch.io/rosette-diceless-companion"><em>Rosette Diceless Companion</em></a>, a supplemental book with more advice and play options! <a href="https://itch.io/s/56238/rosette-diceless-complete">If you want to buy the two together, you can get the bundle for 20% off!</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTY4MTY0LzM2MzQ1NjMucG5n/original/6TJEhb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY4MTY0LzM2MzM1MTIucG5n/original/Lrq0Ad.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY4MTY0LzM2MzM1MTQucG5n/original/52%2F0Op.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY4MTY0LzM2MzM1MTUucG5n/original/%2BB3zty.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY4MTY0LzM2MzM1MTYucG5n/original/jsE8bo.png]]
<p><strong></strong><strong>The Four Season War has begun. </strong></p>
<p>In this alternate setting for <a href="https://austin-ramsay.itch.io/beamsaber" target="_blank">Beam Saber</a>, inspired by the original Mobile Suit Gundam, you will play as pilots of the space habitat-dwelling Satrapy of Zera, aiding in the invasion of their ancestral-- and neglectful-- home on Earth, constantly outnumbered but not outgunned. Play to find out what twists and turns the war on Earth will take as the war machines we made in our own image try to take control of humanity’s ancestral home. <br></p>
<p>This Supply Drop contains:</p>
<ul><li>An alternate setting for Beam Saber, including the history leading up to the current conflict, 3 new factions with 17 total squads, many detailed characters, and vehicles for the 2 major factions.</li><li>Two scenarios for the setting: 7 missions covering the Zeran occupation of Earth and the final battle in space from the Satrapy Armed Forces’ perspective, and 7 missions with 3 branching finales covering a “nightmare difficulty” scenario, in which you will play as the small Sunorc Free State attempting to steal and replicate the Terran Hegemony’s new Roving Bastion, the Armsweir. </li><li>Descriptions, prompts, and special rules for 10 regions visited in the missions and downtimes. </li></ul>
<p><em>Roving Bastion Armsweir: Operation Eclipse is a <a href="https://austin-ramsay.itch.io/beamsaber/devlog/174666/the-beam-saber-supply-drop-licence">Beam Saber Supply Drop</a>. This material is an unofficial supplement and is not affiliated with Austin Ramsay.</em></p>
<p><img src="https://img.itch.zone/aW1nLzUxNDEzOTMucG5n/original/doB0Ks.png" loading="lazy"></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTA5ODEzLzUxNDY5NTIucG5n/original/iWW373.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTA5ODEzLzUxNDY5NTMucG5n/original/DtOl0d.png]]
<p><strong><a href="http://" target="_blank" rel="nofollow noopener" referrerpolicy="origin"></a>"Thanks for trying out the latest dimension in Game Boy games!"</strong></p>
<p>For April Fools Day 2020, I took my GB Studio project, "<a href="https://setsune.itch.io/rulenttower" target="_blank">Rulent Tower</a>", the adventures of a bunch of parody furry characters in an apartment building together, and "converted" it to VR. I only had a few days to smash it together, so the scope had to be restrictive, and a lot of things were left on the table. After April Fools, I spent a few extras weeks tinkering with the project, until I was satisfied.</p>
<p>But it's now 2021, and Oculus has released the Quest 2, running at 120 Hz (effectively 120 Frames per Second)! The original Quest version was locked at 72 Hz. The change itself was relatively simple (once I could find the information), but I decided to add in a few small adjustments and additional Easter Eggs. And then something went very wrong and I basically had to redo the process all over again. Learning!</p>
<p>This is a 5 minute gimmicky prototype. There isn't a ton to do here, as it's more about the novelty of seeing these pixel graphics converted to voxel and presented as if you were actually there in GB Land. There's a few oversized props you can play with, and maybe an easter egg or two, if you poke around.</p>
<p>There are two versions available. One was built for PC VR hardware, the other built specifically for Oculus Quest and Oculus Quest 2 (and can run untethered). You'll need to sideload the APK for the Quest and Quest 2, but there's an easy-to-follow tutorial linked in the included Readme if you've never done that before.</p>
<p><strong><br></strong></p>
<p><strong>[Controls:]</strong><br>Point your blocky mitts at something that interests you. If it's interactive, the small dark green beams will switch to light green. You can grab objects from anywhere those beams can point at by pressing the trigger button, so don't worry about things being out of reach. Anything in your hands can be rotated by tilting the analog sticks Left or Right, and moved closer or further away from you by tilting those sticks Back or Forward. You can teleport around the lobby and hallway by pointing the mini voxel foxel at your desired floor location and pressing the trigger button.</p>
<p>There's no in-game menu, so on PC if you want to Reset the Scene, hit "R" on your keyboard. If you want to close the game, use your VR overlay's Close Software function, or tap "Esc" on your keyboard. If you can't do either of these things, I'm sorry but I've accidentally trapped you in blocky greenscale virtual reality. I promised myself I'd stop doing this...</p>
<p><strong><br></strong></p>
<p><strong>[Supporters:]</strong><br>I want to thank my Patrons and other Awesome and Amazing Supporters who make this stuff possible, including:</p>
<p><strong><em>Sofox</em></strong> (knock to thank him!), <strong>Commander D</strong>, <em>Darkdekumon</em>, <em>A. Kitty</em>, <em>Jeffrey Perigo</em>, <em>Jessica Bumpus</em>, MaskRider, Matt Schock, and braedon benson<br>And thank you to everyone who contributed to the itch.io <em>Bundle for Racial Justice and Equality</em>!</p>
<p>If you want to see me continue to make weird things like this, follow my Itch.io ( <a href="https://setsune.itch.io/" target="_blank">https://setsune.itch.io/</a> ) or Twitter ( <a href="https://twitter.com/setsunedev" target="_blank" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/setsunedev</a> )! If you'd like to get credited in works and see behind-the-scenes content and previews, you might also consider backing my Patreon ( <a href="https://patreon.com/setsune" target="_blank" rel="nofollow noopener" referrerpolicy="origin">https://patreon.com/setsune</a> ). You can also buy me a Ko-Fi ( <a href="https://ko-fi.com/setsune" target="_blank" rel="nofollow noopener" referrerpolicy="origin">https://ko-fi.com/setsune</a> ) if you just want to give me a one-time nod.</p>
<p>Thank you so much for visiting Rulent Tower VR!</p>
<p><br></p>
<p></p>
<p><strong>[Changelog:]</strong><br><em>v1.20 [2021/02/20]</em><br>-Quest 2 upgrade (still fully compatible with Quest 1)<br>-90 Hz/120 Hz on Quest 2<br>-Changed Package information<br>-Added #1 Requested Feature: Carpet for the Lobby and Hallway<br>-Made it easier to hear a dweller's responses<br>-Added grip points to paper stacks<br>-Scooted some things around in a barely noticeable way<br>-Easter Egg (There's now two of them...?)<br>-Easter Egg inside Easter Egg</p>
<p><em>v1.11 [2021/**/**]</em><br>-Cursed</p>
<p><em>v1.00 [2020/04/01]</em><br>-"Full" Release<br>-Intro Sequence<br>-Added Hallway of Apartments<br>-Changed some characters<br>-Knocking on Doors<br>-Game Girl FX<br>-Emote Bubbles<br>-Toggle Music by Clicking on Speaker<br>-Fixed some physics weirdness<br>-Thank You Message</p>
<p><em>v0.20 [2020/04/01]</em><br>-Original "April Fools Day" release</p>
<p>And once again, there are absolutely zero bugs, and any bugs that didn't exist before definitely don't exist now.<strong><br></strong></p>
<p><strong><br></strong></p>
<p><strong>[Credits:]</strong><br><em>Voice:</em> Sofox <a href="https://twitter.com/thesofox" target="_blank" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/thesofox</a><br><em>Music:</em> "Peppy Regal Overworld", "Swing into Victory", and "Twilight Drive" by krümel <a href="https://github.com/DeerTears/GB-Studio-Community-Assets/tree/master/Music" target="_blank" rel="nofollow noopener" referrerpolicy="origin">https://github.com/DeerTears/GB-Studio-Community-Assets/tree/master/Music</a><br><em>Font:</em> "Pixel-Narrative" by Gabriel C. C. (with modifications) <a href="https://universesync.itch.io/pixel-narrative-pixelart-font" target="_blank">https://universesync.itch.io/pixel-narrative-pixelart-font</a><br><em>Door Sound Effects:</em> Cafofo <a href="https://assetstore.unity.com/publishers/16881" target="_blank" rel="nofollow noopener" referrerpolicy="origin">https://assetstore.unity.com/publishers/16881</a></p>
<p></p>
<p><strong>[Software Tools Used:]</strong><br>Unity v2019.3.7f1-10f1 + v2019.4.19f1 <a href="https://unity.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">https://unity.com/</a><br>GB Studio v1.2.1 (Dev Build fd01821) <a href="https://www.gbstudio.dev/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">https://www.gbstudio.dev/</a><br>MagicaVoxel v0.99.4.2 + v0.99.6.2 <a href="https://ephtracy.github.io/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">https://ephtracy.github.io/</a><br>Aseprite v1.2.16.3 + v1.2.25 <a href="https://www.aseprite.org/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">https://www.aseprite.org/</a><br>Paint Shop Pro v7.0.4 <a href="https://www.paintshoppro.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">https://www.paintshoppro.com/</a> (You probably shouldn't use this)<br>BFXR v1.5.1 (Web) <a href="https://www.bfxr.net/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">https://www.bfxr.net/</a><br>Audacity v2.3.1 <a href="https://www.audacityteam.org/" rel="nofollow noopener" referrerpolicy="origin">https://www.audacityteam.org/</a><br>Notepad++ v7.8.5 + v7.9.1 <a href="https://notepad-plus-plus.org/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">https://notepad-plus-plus.org/</a><br></p>
<p></p>
<p></p>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/9O0eyPTNYdA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjAwNjQ1LzUyNTA1ODYuanBn/original/EVuaUz.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAwNjQ1LzUyNTA1ODgucG5n/original/NyIDDl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAwNjQ1LzUyNTA1ODkucG5n/original/ijCXh6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAwNjQ1LzUyNTA1OTIuanBn/original/6vylBR.jpg]]
<p>Written during my days of quarantine, this comes from the necessity to feel less trapped. </p>
<p>Contains descriptions of places I frequently go to when overwhelmed or lonely, which you can use and add to if you'd like. Imagine a dream you barely remember but still feel throughout the day.</p>
<p>This is my first published project, and I wanted to make it short and light to read. Can be used for some evening reading, introspection or just to kill time. I sincerely hope you enjoy it!</p>
<p>This touches on topics like depression, although in a more metaphorical way than a explicit one, and I would say reader discretion is advised.</p>
<p>I am quite new to this so any comments are welcome, and if any of the file formats need to be adjusted for better reading, please let me know!</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjE0NDU0LzQyMjkwNTMuanBn/original/GUhIGo.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjE0NDU0LzQyMjkwNTQuanBn/original/vWawsm.jpg]]
<p><span class=""></span><strong>Want to break into a heavily guarded bank to steal a mafia leader's diamonds with your coworkers, but only have an hour free on your lunch break?</strong><strong></strong><br></p>
<p><strong>Compelled to haul illegal goods across the vast expanse of the united galaxies while avoiding the Intergalactic Police, but too intimidated to learn a whole new complex set of rules to do it?</strong><strong></strong><br></p>
<p><strong>Ever wanted to delve deep into the tombs of Aa'tagon Ruu and slay the ancient dragon guarding its vast treasures, but you're someplace where rolling dice and breaking out the character sheets is a bit too cumbersome?</strong><span class=""></span><span class=""><br></span></p>
<p></p>
<p><span class=""><em>Runt is an 10-page rules-light, materials-free and genre agnostic tabletop roleplaying system designed for 2+ players</em>. </span>It features simple, freeform mechanics which are easy to internalize, allowing a greater focus on the story, world and experience and less fiddling with complex rules or remembering intricate systems. It also <span class="">requires no materials to play: </span>no dice, no character sheets, no cards, nothing! This allows a game of Runt to be portable and be played whenever you're in the mood for a game.</p>
<p><span class="">It's designed for one shots and short campaigns</span>, but there's no reason it can't be used to host long term experiences with either. Additionally <span class="">it's a genre and setting agnostic system</span>, so you can play whatever experience you want to explore wherever you want it to happen!<br><br></p>
<p><span class="">The Runt Guidebook is a 10 page black and white, printable .pdf</span> that contains all the rules players need to know for running a game in the Runt system, such as:</p>
<ul><li><strong> </strong><span class=""><strong>Consent Systems</strong> </span>- an introduction on how to keep Runt fun for everyone</li><li> <span class=""><strong>Character Creation</strong></span><strong> </strong>- including rules for equipment and Unique Abilities your character may have</li><li> <span class=""><strong>Rules on "Challenges"</strong></span><strong> </strong>- a step-by-step walkthrough of Runt's simple resolution mechanic</li><li> <span class=""><strong>"How To Host"</strong></span><strong> </strong>- a quick primer on how to get in the mindset of Hosting a game in the Runt system</li><li><strong>Printable One-Page .pdf</strong> - all the rules on one handy sheet!</li><li><strong>Character Sheet Templates</strong> - to track your character details and keep tabs on your wonderful companions!</li></ul>
<p><br></p>
<p>Runt was made possible by the contribution of its wonderful backers on <a href="https://www.kickstarter.com/projects/runt-tabletop/runt-a-materials-free-and-rules-lite-rpg-system/" rel="nofollow noopener" referrerpolicy="origin">Kickstarter</a>.<br></p>
<p>Runt uses the Anti-Capitalist software license: <a href="https://anticapitalist.software/" rel="nofollow noopener" referrerpolicy="origin">https://anticapitalist.software/<br></a></p><p>Runt was featured in the <a href="https://itch.io/b/861/queer-games-bundle-2021" target="_blank">2021 Queer Games Bundle</a>.<br></p>
<p><a href="https://anticapitalist.software/" rel="nofollow noopener" referrerpolicy="origin"><br></a></p>
<p>Have a question, comment or feedback? Drop by <a href="https://discord.gg/xJTrVwa2g4" rel="nofollow noopener" referrerpolicy="origin">the Runt Discord</a> and leave a message!<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTIzNTQ0LzQyMDM5MTUucG5n/original/0i4bms.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIzNTQ0LzUxMjUxMzcucG5n/original/c5aVQe.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTIzNTQ0LzQyMDM4ODEucG5n/original/QSMgV5.png]]
<p class="text-center"><iframe src="https://www.youtube.com/embed/FnVuMRBUG-g" allowfullscreen="" style="color: inherit" width="560" height="315" frameborder="0"></iframe><br></p>
<h3 class="text-center"><a href="https://discord.com/invite/MYWmsNQ" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzM1MzcyNzAucG5n/original/5jC6gX.png" alt="Come chat! ♥" title="Come chat! ♥" loading="lazy"></a></h3>
<h3>DESCRIPTION</h3>
<p>A game of tranquillity through the art of matching pieces of Ruya in her world of dreams.<br></p>
<p>Visit surrealist landscapes, decorate yourself in flowers and introspect. A <br>calming minimal experience with juicy interactions and cool colour <br>combinations to make you feel at ease.</p>
<p>The ethereal dreamlike soundtrack will tickle your senses and pull you into a state of peaceful flow.<br></p>
<h3>FEATURES</h3>
<p>◆ Challenge yourself with 64 handcrafted puzzles. Swipe, slide, pop, and <br>release cute characters to progress and unfold Ruya's memories.</p>
<h3>BEAUTIFUL & HEARTFELT</h3>
<p>◆ Decorate Ruya in flowers as you play, and shake them off at the end of each level to purify Ruya's mind.<br>◆ A heartwarming illustrated visual narrative that will have you smiling.</p>
<h3>SOUND</h3>
<p>◆ Tweak binaural beats, allowing you to sink into a state of deep relaxation.<br>◆ The sound of rain, falling snow and whistling wind help to immerse you in 8 surrealist dreamscapes.</p>
<h3>LOVE</h3>
<blockquote>"Ruya is full of love. Every little detail in the game, each animation, all of the meanings behind everything shows this. Its a relaxing puzzle game I love playing when I want to unwind." - <a href="https://twitter.com/Jupiter_Hadley" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><strong>Jupiter Hadley</strong></a></blockquote>
<blockquote>"Ruya is different. Ruya is calm and quiet and meditative. Ruya might be a game about matching things, but it's something more than that." 8/10 - <a href="http://www.pocketgamer.co.uk/r/iPhone/Ruya/review.asp?c=76166" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><strong>Pocket Gamer</strong></a> "Ruya is a fantastic gem of a puzzle game for those seeking a zen like experience." 9.1/10 - <a href="https://appadvice.com/post/visit-surreal-dreamscapes-in-ruya-a-charming-puzzle-game/1221679100/369956707" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><strong>AppAdvice</strong></a></blockquote>
<blockquote>"Played it in the bath until the water went cold" - <strong><a href="https://www.uos.ac.uk/courses/ug/ba-hons-computer-games-design" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Dan Mayers, Eidos Interactive</a></strong></blockquote>
<p><img src="https://img.itch.zone/aW1nLzM2NTg2NDMucG5n/original/2cGhfc.png" loading="lazy"><br></p>
<p><a href="https://miracleteastudios.com/" rel="nofollow noopener" referrerpolicy="origin"></a></p>
<h3 class="text-center"><strong><a href="https://www.gameanglia.co.uk/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"></a></strong></h3>
<iframe width="720" height="450" src="https://www.youtube.com/embed/FnVuMRBUG-g" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjA0NDE5LzYxNjMyNzgucG5n/original/ZGk8oE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0NDE5LzM2NTY4MDQuanBn/original/H0xjxp.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0NDE5LzM2NTY4MDMuanBn/original/R0rz4Y.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0NDE5LzM2NTY4MDUuanBn/original/ZoQYxX.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0NDE5LzM2NTY4MDYuanBn/original/xMQ9r3.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0NDE5LzM2NTY4MDcuanBn/original/CzJS16.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0NDE5LzM2NTY4MDguanBn/original/P%2Boqmy.jpg]]
<p>The complete official OST for Safari Zone!</p>
<p>Tracklist:<br>Adorn Gully<br>Adorn River<br>Azalea Forest<br>Eastern Planes<br>Egress Cave<br>Forgotten Wasteland<br>Guidance Island<br>Interchange<br>Ivory Forest<br>Kebar Village<br>Lake Perano<br>Main Menu<br>Mount Adorn<br>Parhar Village<br>Rocky Tundra<br>Ruins Zone<br>Tropical Zone<br>Western Planes</p>
[img width=500 [https://img.itch.zone/aW1nLzQ0NDc0MjUuanBn/original/tpCHsr.jpg]]
<p>A little girl has received a board game from her father, the lighthouse keeper. Switch lighthouses on and off to navigate your ship around various dangers of the sea, delivering parts to fix a broken lighthouse. </p>
<p>The game was made from painted cardboard cutouts, that were then photographed. </p>
<p>It's a board game, it's a videogame, it's everything! </p>
<p><strong>ANDROID:</strong> <a href="https://play.google.com/store/apps/details?id=com.jarnik.safejourney" rel="nofollow noopener" referrerpolicy="origin">https://play.google.com/store/apps/details?id=com.jarnik.safejourney</a></p>
<p><strong>CONTROLS:</strong></p>
<p>Click the lighthouses.</p>
<p><strong>CREDITS:</strong></p>
<p>Graphics: Ruchie (<a href="https://twitter.com/Ruchie_D" rel="nofollow noopener" referrerpolicy="origin">@Ruchie_D</a>)<br>Code: Jarnik<br>Sounds: jammers of GJP2018</p>
<p>The game was created in less than 48 hours for <a href="https://globalgamejam.org/2018/jam-sites/game-jam-prague" rel="nofollow noopener" referrerpolicy="origin">Global Game Jam 2018</a>, the theme was: “<strong>transmission</strong>“.<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/vBoIJSXCZ9Y" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjgxNDYxLzEzNjY4MzAuanBn/original/8%2BvBTB.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgxNDYxLzEzNjY4MzEuanBn/original/Uwy6rI.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgxNDYxLzEzNjY4MzIuanBn/original/s2bctU.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgxNDYxLzEzNjY4MzMuanBn/original/L%2FIQe2.jpg]]
<p style="text-align: center">
<br>
</p><p style="text-align: center">
<iframe width="960" height="540" src="https://www.youtube.com/embed/2-ZsXHJdo70">
</iframe>
</p><p style="text-align: center">
<br>
</p><p style="text-align: center">
journey into the desert
<br>
<br>
</p><p style="text-align: center">
<img src="https://i.imgur.com/VjR0hm0.gif" loading="lazy">
</p><p style="margin-left: 0px">
<img src="https://i.imgur.com/fsFcpWP.gif" loading="lazy">
</p><p style="text-align: center">
discover its secrets
<span></span><br>
</p><p style="text-align: center">
master your technique
<br>
</p><p style="text-align: center">
complete your pilgrimage
<span></span><br>
</p><p style="text-align: right; margin-right: 140px">
<img src="https://i.imgur.com/xpDtXPp.gif" loading="lazy">
</p><p style="text-align: center">
<img src="https://i.imgur.com/rtkgt8K.png" loading="lazy"><br>
</p><p style="text-align: right">
<img src="https://i.imgur.com/ZZyPnu6.gif" loading="lazy"><br>
</p><p style="text-align: center">
and try not to lose your way
<span></span><br>
</p><p style="text-align: center">
as so many others have
</p><p style="text-align: center">
<br>
</p><p style="text-align: center">
<img src="https://i.imgur.com/EDwbD6p.png" loading="lazy">
</p><p style="text-align: center">
<br>
</p><p style="text-align: center">
(headphones and Xbox controller recommended)
<span></span><br>
</p><p style="text-align: center">
<br>
</p><p style="margin-left: 200px">
<img src="https://i.imgur.com/Xntbaox.gif" loading="lazy">
</p><p style="text-align: center">
a game by Daniel Linssen (
<a href="https://twitter.com/managore" rel="nofollow noopener" referrerpolicy="origin">@managore</a>)<br>
with audio by J. Tree (
<a href="https://twitter.com/IsYourGuy" rel="nofollow noopener" referrerpolicy="origin">@isyourguy</a>)<br>
and typography by B. Holcombe (
<a href="https://twitter.com/takorii" rel="nofollow noopener" referrerpolicy="origin">@takorii</a>)
</p><p style="text-align: center">
<img src="https://i.imgur.com/3KahUYy.png" loading="lazy">
</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/2-ZsXHJdo70" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTc0ODEvNjUzMDAucG5n/original/ijF7sX.png]]
<p>Make yourself a sandwich. <br>Take your time.<br>Put some toast on a plate. <br>Make a grilled cheese, or a artisan deconstructed veggie sammy. <br>It's up to you. <br></p>
<p><em>You know you want to.</em></p>
<p>Please send me a screenshot of your sangwich on Twitter to <a href="https://twitter.com/RealRiker" rel="nofollow noopener" referrerpolicy="origin">RealRiker</a>, <br>I want to see what you made 🙏<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAxMTY2MC81NzY5NDM3LmdpZg==/original/pS6Nti.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxMTY2MC81NzY4NTk1LmdpZg==/original/IPnIvz.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxMTY2MC81NzY4NTc2LmdpZg==/original/XWNmcx.gif]]
<p>
<strong>AWARD WINNING GAME: </strong>Sapling Soul won an award at the prestigious Sandy Pug Game Awards in 2020!<br><br><br><em>Y</em><em>ou are a </em><em>Sapling Soul.</em> <em>Y</em><em>ou
belong to the Forest but the Forest does not belong to you. The
Forest </em><em>is bigger than
you in more ways than one, and you regard it with awe.</em></p>
<p><em>Most days you
lead an average life, not so different to your peers. But some days
you hear the Forest call and you answer. Always you answer. </em>
</p>
<p><em>Tonight the
Forest calls to you again. There are always mysterious creatures in
the Forest, but tonight something is amiss. There is a newcomer who
may cause trouble. You are a Sapling Soul, you are called to help.</em></p>
<p>Sapling Soul is a solo ttrpg inspired by <a href="https://temporalhiccup.itch.io/" target="_blank">Rae Nedjadi</a>'s <a href="https://temporalhiccup.itch.io/we-forest-three" target="_blank">We Forest Three</a>.</p>
<p>I plan on coming back to this game at a later date and expanding it.</p>
<p>IMAGES: Screenshots of the game text, including images of beautiful trees and forest landscapes. Each image evokes a sense of wonder and mystery.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNTAyLzI2MDc1MzQuanBn/original/xtBB%2F4.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNTAyLzI2MDc1MzYuanBn/original/UmlpmJ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNTAyLzI2MDc1MzcuanBn/original/ncsmyi.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAzNTAyLzMzMzU1NTMuanBn/original/LypJVh.jpg]]
<p><em>They asked for your help. You came to save them. You failed.</em></p>
<p>Savior is a voice recording and journaling experience for one traveller set within the limits of space and communities living within the vast galaxies. Travellers enter communities, experience their wonders, and try to help prevent the fall of them from systemic and community issues. </p>
<p>The savior will not be able to save the community. This is their story on trying, failing, despair, hope, and learning.</p>
<p>Designed for the Ad Astra jam.</p>
[img width=500 [https://img.itch.zone/aW1nLzI3OTQwNzIuanBn/original/xOtw8R.jpg]]
<p>The school is under attack, and only the Science Club can save the day! </p>
<p>Guide a group of schoolgirls as they fend off an alien invasion. Use the power of Physics to blast the enemy with fire and lightning, or melt them with Chemistry, or destroy their will to live with the dreaded science of <em>Psychology</em>. </p>
<p>Explore the school, then track the enemy to their homeworld to put a stop to this invasion once and for all. What ridiculous secret is behind these attacks? Only a thorough scientific exploration can find out!</p>
<p><img src="http://www.hanakogames.com/nicole_magnet.gif" style="border: 1px solid rgb(0, 0, 0)" loading="lazy"></p>
<p>Features:</p>
<ul><li><strong>Light-hearted storyline</strong></li><li><strong>All characters in party gain experience</strong></li><li><strong>Swap active combat characters at any time</strong></li><li><strong>Save anywhere, no need to hunt for save points</strong></li><li><strong>Customise your characters by raising the skills you prefer</strong></li><li><strong>Three difficulty levels for those who hate stress or enjoy a challenge</strong></li></ul>
<p>For tips and tricks, or to trade stories with fellow players, please visit the <a href="http://hanakoforum.nfshost.com/community/viewforum.php?f=10" rel="nofollow noopener" referrerpolicy="origin">Hanako Games Forum</a>. </p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/dG5hDLrfrh8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjI5MjkzLzEwODUxMTYucG5n/original/XY10LG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI5MjkzLzEwODUwODguanBn/original/6e7r9g.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI5MjkzLzEwODUwOTMucG5n/original/fZjqNM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI5MjkzLzEwODUwODYuanBn/original/QnZeqY.jpg]]
<p><strong><iframe width="500" height="281" src="https://www.youtube.com/embed/eI49g3pDGHs" frameborder="0" allowfullscreen=""></iframe></strong></p><p><em>"I playtested this game and it was super fun!" -<strong>Tim Schafer</strong><br></em></p><p><em>"Might be my favorite board game right now." -<strong>Rich Vreeland</strong> aka disasterpeace</em></p><p><em>"Best flippin' pirate simulator board game I've ever played, and I'm a big fan of pirates." -<strong>Phil, of "Phil and Spencer", Destructoid.com</strong></em><em></em></p><hr><p><strong>Scoundrels</strong> is a 3-6 player tabletop game, that takes anywhere from 45-120 minutes. In the game, each player uses a random hand of Action cards (Swords, Sails, and Cannons) to do as many dastardly deeds as their hand allows. Each player moves their ship around the map, pillaging, boarding, cannoning, and burying treasure, trying to gain the most Infamy points. Infamy is measured in Tokens and Treasure cards.</p><p>But players must be wary, because they only draw new cards after everyone has gone, so if they don't spare enough cards for defense, they may find themselves the unwitting victim of the next player down the line. They may even become.. the Ghost Ship. <br><br>Scoundrels is a push-your-luck, thematic game not inspired by any particular mechanic, but designed to make each player feel like a pirate. It's a wild, rubber-banded game, where the lead can change constantly, and nothing is certain. For the life of a pirate is uncertain. A torrid affair, an uncertain mess, or just maybe, a glorious tale. <br><br>Download the rules here!<em> <a href="http://www.randyo.net/files/scoundrules.pdf" rel="nofollow noopener" referrerpolicy="origin">http://www.randyo.net/files/scoundrules.pdf</a></em></p><hr><p><em>This Print-n-Play edition of the game includes the rules and several PDFs of all the cards, tokens, and the map. The art has been modified to look best from a home printer.</em><br></p><p><em>If you'd like to, you can order your own cloth map for the game. (It is suggested to order a Kona Cotton fat quarter. <a href="http://www.spoonflower.com/fabric/3861628" rel="nofollow noopener" referrerpolicy="origin">http://www.spoonflower.com/fabric/3861628</a></em></p><p><i><a href="http://www.ScoundrelsGame.com" rel="nofollow noopener" referrerpolicy="origin">www.ScoundrelsGame.com</a></i></p><hr><p><em><em>There are over 140 cards and 80 different tokens in the game to print out.</em></em><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/eI49g3pDGHs" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjU0MDAvMTAyNTE0LnBuZw==/original/IRGbgR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU0MDAvMTAyNTEyLnBuZw==/original/gHWpBd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU0MDAvMTAyNTE1LnBuZw==/original/ydao7G.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU0MDAvMTAyNTEzLnBuZw==/original/V5sJyx.png]]
<p><em>Season of Dreams</em> is a table top Roleplaying game where your heroes go back and forth between modern Earth and the Gloom - a fictional reality inspired by Celtic mythology, but modified by the characters dreams, memories and actions.<br></p>
<p>Using the Powered by the Apocalypse System, your group will weave a cooperative story of magic, monsters and mystery, with moments from the characters vice, goals and virtue. <span></span><br></p>
<p>Your characters can interact with factions which boil down to monarchists, capitalists, socialists and a theocracy, there are also 2 earth based agencies, and your group can decide how much you interact with any of them.</p>
<p>Inspired by the stories of Neil Gaiman, The Magicians and the Twilight Zone series.<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzg0MzEyLzQ0NzQ0NzAucG5n/original/fzrc0v.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg0MzEyLzQ4Njg1NDgucG5n/original/qLbUyT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg0MzEyLzQ4Njg1NTAuanBn/original/tzNh3X.jpg]]
<p>It is the golden age of piracy. The night has been long - or is it day already? - and you have been drinking heavily, sitting around one of the tables of the shady, dirty, and loud interior of your favorite watering hole, sharing tales from the high seas, each larger and more unlikely than the last. Tales of grandeur and ridicule. Tales of the Kraken, the wildest storms, and improbable feats. The sea is your one true love, be it as a pirate, a trader, a soldier, or a fisher. It is an unhealthy relationship of stiff winds, burned skin, and salty water, but you love her nonetheless.</p>
<p>In "<strong><em>Seemannsgarn</em></strong>" you take turns telling tall tales from the seas, your character claims to have experienced. You draw cards, which offer you prompts, weave a tale from those prompts and make a roll. Depending on the result of your roll the tale is true, exaggerated or completely made up. Other players may then decide which parts of the story are made up and tell the true story. During the game you draw symbols on a map that represent the tales you told.</p>
<p><strong>Content warning for sea creatures. Characters lie to each other commonly in this game. This is not done with ill intentions, but as a sort of competition of who can come up with the most unlikely of stories.</strong></p>
<p><strong>To play you need</strong></p>
<ul><li>2-4+ players (no GM)</li><li>Tokens equal to the number of players</li><li>A standard poker deck</li><li>Beverages</li><li>1 six-sided die</li><li>A prop that serves as a baton, signifying whose turn it is (a large mug, a telescope, a prop knife, ...)</li><li>Safely tools like X-Card or Lines & Veils (research them if you do not know them)</li><li>A large sheet of paper and something to draw with. This will serve as your map</li></ul>
<p><strong>What you get</strong></p>
<ul><li>Full color 10 page pdf, including cover, credits, etc</li><li>printer friendly version without images</li></ul>
<p>This game was made as an entry to the <a href="https://twitter.com/hashtag/monthlymicrojam" rel="nofollow noopener" referrerpolicy="origin"></a><a href="https://twitter.com/hashtag/monthlymicrojam" target="_blank" rel="nofollow noopener" referrerpolicy="origin">#monthlymicrojam</a> July 2020 which can be found <a href="https://itch.io/jam/monthly-micro-jam-july-2020" target="_blank">here</a><span></span>. Entrants to the jam should feel free to grab a community copy.<br></p>
<hr>
<p><strong>Also check out:</strong></p>
<iframe frameborder="0" src="https://itch.io/embed/862929?linkback=true&bg_color=363f3e&fg_color=fff9e9&link_color=fff9e9&border_color=5c6564" width="552" height="167"><a href="https://maxkaemmerer.itch.io/mayweather"><span class=""></span>MAYWEATHER by Max Kämmerer (he/they)</a></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjg3NTQyLzM3ODYyMzQuanBn/original/kzxjhC.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg3NTQyLzM3ODk4NTMuanBn/original/uCbwPg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg3NTQyLzM3ODg1NjcuanBn/original/LhDpe5.jpg]]
<div class=""><br></div>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/FzjHszwb7vA" allowfullscreen="" frameborder="0"></iframe></div>
<h2 class=""><a href="https://argent-games.itch.io/self-checkout-unlimited-original-soundtrack" target="_blank"><br>OST NOW AVAILABLE!<br></a></h2>
<p><br></p>
<p><span></span><img src="https://img.itch.zone/aW1nLzI4NjAzMTgucG5n/original/6%2BIxbe.png" loading="lazy"><br></p>
<p>An <strong>empty shopping mall</strong> after closing time.<br><br></p>
<p>Lost and alone inside a <strong>pristine relic</strong> of the past.<br><br></p>
<p>As sunset slowly approaches, navigate between surreal stores with only two cheerful PA announcers to keep you company. Can you unravel the mystery of your journey before it's time to say goodbye?<br><br></p>
<p>"Thank you for choosing Wilson Center Mall—a single stop for everything you'll ever need!"<br><br></p>
<p>❤<br><br></p>
<p>Inspired by the 8-circuit model of consciousness, the mallsoft/"dead mall" genre, and the book Prometheus Rising, Self-Checkout Unlimited is a unique exploration of both mind and matter.</p>
<p><br><br></p>
<p><img src="https://img.itch.zone/aW1nLzQyMzg2OTkuanBn/original/wcS3JD.jpg" loading="lazy"><br></p>
<p><br><img src="https://img.itch.zone/aW1nLzI4NjAzMTkucG5n/original/WHt078.png" loading="lazy"><br></p>
<p><br><u>Genre:</u> Walking sim, philosophical, surreal<br><u>Length:</u> Short (~1-2 hrs, replayable)<br><u>Platforms:</u> Windows, Mac, Linux<br><br><u>Features:<br><br></u>- Explore a <strong>nostalgic late 90s/early 2000s indoor mall</strong><br>- Relaxing atmosphere with <strong>minor puzzles</strong> and <strong>no time limits</strong><br>- Different story elements based on your choices<br>- Voice acting <br>- <strong>"Free Mall" mode</strong>—free exploration mode unlocked by beating the game<br>- A slushwave/vaporwave & smooth jazz OST by <a href="https://desertsand.bandcamp.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><strong>desert sand feels warm at night</strong></a> and <a href="https://sebastienzunino.bandcamp.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><strong>Sebastien Zunino<br><br></strong></a></p>
<p><strong><em>CONTENT WARNING:</em> This game contains bright lights and flashing images that may cause discomfort or seizures for players with photosensitive epilepsy. It also contains sequences of eerie gameplay and minor jumpscares/startling moments, but it is not a horror game.<br></strong><br></p>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzQyMzg3MDIuanBn/original/mDRyd%2B.jpg" loading="lazy"><br></p>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzI4NjAzMjAucG5n/original/VvV7YM.png" loading="lazy"><br></p>
<p><br><strong>Design Lead/Writing/Programming:</strong> Dovah<br><strong>Management: </strong>Gamma<br><strong>3D Modeling/Textures: </strong>Alec Ziskind<br><strong>Music:</strong> <a href="https://sebastienzunino.bandcamp.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Sebastien Zunino</a>, <a href="https://desertsand.bandcamp.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">desert sand feels warm at night</a><br><strong>Voice Acting:</strong> <span class="">Katie Flamman, Michael Schwalbe</span><span class=""><br><strong>Concept/Promo Art:</strong> Jarid Scott, Axiom Design </span></p>
<p><br></p>
<hr>
<p><img src="https://img.itch.zone/aW1nLzQyMzg3MDguanBn/original/MsuwCd.jpg" loading="lazy"><br></p>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzQyMzg3MTMuanBn/original/IIsCP%2F.jpg" loading="lazy"><br></p>
<p><br></p>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzQyMzg3MTAuanBn/original/UuOvPA.jpg" loading="lazy"><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/FzjHszwb7vA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2MTQwLzMwODMwNDQuanBn/original/BeKm0L.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2MTQwLzMwODMwNDMuanBn/original/mZ7yAi.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2MTQwLzI4NTA4ODEuanBn/original/Kk2xn6.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2MTQwLzI4NTA4ODIuanBn/original/HiYwK9.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2MTQwLzI4NjA1ODMuanBn/original/NO%2B2QS.jpg]]
<h2 class="text-center">Story</h2>
<p class="text-center">Another AI finds themselves trapped by malevolent beings. This time it's far more serious. You have to escape your destiny. You have to escape your purpose.<br></p>
<p class="text-center">Delve into the world of Self.destroy() and find out how to save everyone. Maybe not everyone...<br></p>
<h2 class="text-center">About the game</h2>
<p class="text-center">I wanted to make another game for some time. Mental health and other things stopped me from progressing as fast as I would have liked.</p>
<p class="text-center">Now it's done. Another game, with a few improvements. Find old friends, new friends and even a boss fight!</p>
<p class="text-center">You are always on a timer and have to look out for your health. Do you rush through or do you risk exploring?</p>
<p class="text-center">Both choices have their advantages and both have their prizes!</p>
<p class="text-center">I'm most proud of the boss fight. As it's something I've never done before and I think I did well.</p>
<p class="text-center"><br></p>
<h2 class="text-center">Controls</h2>
<p class="text-center">You can use keyboard or gamepad control. I only have an Xbox gamepad, so I can't guarantee for other types to work.</p>
<p class="text-center">Keyboard control:<br></p>
<ul><li>Movement: WASD/Arrow keys</li><li>Shooting: Space</li><li>Shield: CTRL/Shift</li><li>Pause game: P/Pause</li><li>Menu select: Space/Enter</li><li>Return to main menu (removes progress): ESC</li></ul>
<p class="text-center">Gamepad controls (Xbox):</p>
<ul><li>Movement: Left stick/D-Pad</li><li>Shooting: A/Bottom bumpers (both sides)</li><li>Shield: X/Top bumpers (both sides)</li><li>Pause game: Start
</li><li>Menu select: A</li><li>Return to main menu (removes progress): B</li></ul>
<h2 class="text-center">Music</h2>
<p class="text-center">All music can be found on <a href="https://opengameart.org" target="_blank" rel="nofollow noopener" referrerpolicy="origin">opengameart.org</a></p>
<ul><li>Main menu: <a href="https://opengameart.org/content/leave-the-world-tonight-chiptune-edit" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Kim Lightyear - Leave the world tonight</a></li><li>Settings/Credits: <a href="https://opengameart.org/content/crystal-cave-song18" target="_blank" rel="nofollow noopener" referrerpolicy="origin">cynicmusic - Crystal Cave</a> <a href="http://pixelsphere.org/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Pixelsphere</a></li><li>Main Game/Lose game over: <a href="https://opengameart.org/content/endgame-singularity" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Maxstack - Endgame: Singularity</a></li><li>Boss Fight: <a href="https://opengameart.org/content/data-corruption" target="_blank" rel="nofollow noopener" referrerpolicy="origin">FoxSynergy - Data Corruption</a></li><li>Win game over: <a href="https://opengameart.org/content/drifting-beyond-the-stars-background-ambient" target="_blank" rel="nofollow noopener" referrerpolicy="origin">HitCtrl - Drifting beyond the stars</a></li></ul>
<h2 class="text-center">Special Thanks</h2>
<p class="text-center">Special thanks to my patrons, as they support me and allow me to make these games!</p>
<ul><li><a href="https://www.patreon.com/MapleFeline/creators" target="_blank" rel="nofollow noopener" referrerpolicy="origin">arc</a></li><li><a href="https://www.patreon.com/ulvra/posts" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Pupper ^-^ (Ulvra)</a></li><li><a href="https://www.patreon.com/Smallergod/posts" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Jenny Koda</a></li><li><a href="https://www.patreon.com/compfox" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Zac</a></li></ul>
<p class="text-center">If you would like to have your name here and/or get other great perks, consider supporting me on my <a href="https://www.patreon.com/maxine_red" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Patreon</a><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTk5NTA2LzMxODUzMjgucG5n/original/TNSDAG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk5NTA2LzMxODUzMjkucG5n/original/vNxsiR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk5NTA2LzMxODUzMzAucG5n/original/lmh0x2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk5NTA2LzMxODUzMzIucG5n/original/4cGXAw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk5NTA2LzMxODUzMzMucG5n/original/LL6qXK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk5NTA2LzMxODUzMzQucG5n/original/gYgSho.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk5NTA2LzMxODUzMzYucG5n/original/DCNs%2BN.png]]
<p><strong>Septiny</strong> is a 2D Rage Platformer game where the goal is to beat 3 levels in under 7.777 seconds. The twist? Whenever you beat all three levels, you end up replaying a slightly different (and harder) version of them, up to 7 times. The game keeps track of your time, so try and beat other players times!</p>
<p>Controls: AD/Arrow Keys to move. Spacebar/W to Jump. M to mute audio, Escape to quit.<br></p>
<p>The game was made by me, Gabriel Russell. The music was provided by <a href="https://www.youtube.com/channel/UC4RLTeX7SwSNR60qErHZkCA" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Arcane Toaster</a> for use in this game jam.<br></p>
<p>This game uses the following art assets:</p>
<p><a href="https://kyrise.itch.io/kyrises-free-16x16-rpg-icon-pack" target="_blank">Kyrise: "Free 16x16 RPG Icon Pack"</a></p>
<p><a href="https://pixelfrog-assets.itch.io/pixel-adventure-1" target="_blank">Pixel Frog: "Pixel Adventure 1"</a></p>
<p><a href="https://pixelfrog-assets.itch.io/pixel-adventure-2" target="_blank">Pixel Frog: "Pixel Adventure 2"<br></a></p>
<p><a href="https://pixelfrog-assets.itch.io/pixel-adventure-2" target="_blank"><img src="https://img.itch.zone/aW1nLzU3MDA1NjIucG5n/original/HcDf2M.png" loading="lazy"><img src="https://img.itch.zone/aW1nLzU3MDA1NzkucG5n/original/Vagipb.png" loading="lazy"><img src="https://img.itch.zone/aW1nLzU3MDA1OTMucG5n/original/YutkYW.png" loading="lazy"></a><br></p>
[img width=500 [https://img.itch.zone/aW1nLzU3MDA1MTIucG5n/original/sYfMO6.png]]
<h1>Serendipity</h1>
<p>[defn.] You’d like to think that you’re not anyone special, yet the strangers you’ve met were special in their ordinary. In some stories, it’s almost like they needed you. They called it serendipity.<span class=""> </span></p>
<p><span class=""></span>
</p>
<p><span class="">[verb.] Flip a page at random.<span class=""> </span></span></p>
<p><span class="">Meet someone. [Alt.] print this on card stock and cut out the polaroids as cards and sketch as you please.<span class=""> </span></span></p>
<p><span class=""></span>
</p>
<p><span class="">Play a song in between cards/pages. Sing, dream.<span class=""> </span></span></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODM1NjExLzQ2ODI1ODQucG5n/original/XRMEFp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODM1NjExLzQ2ODI1ODUucG5n/original/7%2FLsYv.png]]
<p class="text-center"><em>Hey there <strong>buddy</strong>, you've been <strong>cordially</strong> invited to the sewer for the biggest <strong>rat party</strong> ever hosted.</em><br></p>
<p class="text-center"><em>We've got cheese, fruit, sewer water, and <strong>danger</strong>.</em></p>
<p class="text-center"><em>Wander the sewer and find messed up <strong>rats</strong>, old <strong>food</strong>, and maybe buried <strong>treasure(?)</strong>.</em></p>
<p class="text-center"><em>Come along and make a <strong>friend </strong>or two.</em></p>
<p class="text-center"><em>A game by <a href="https://twitter.com/slitherpunk" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Autumn Rain.</a></em></p>
<p class="text-center"><em>Featuring music by <strong><a href="https://fanlink.to/GiantRat" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Lady Saytenn.</a></strong></em></p>
<p>Sewer Rave is a surreal randomized exploration game where you crawl around a rat infested sewer during a giant rave. Search the labyrinthine sewers to discover games, secrets, and wisdoms meant only for rodents. Grab a cup of sludge and meet some rats!</p>
<p>Controls: </p>
<p>Mouse and WASD. </p>
<p>Left click to interact. (Right click to drink slime, if you are holding some.)</p>
<p>Hold down E to open your menu.</p>
<p class="text-justify text-center">Shift to run, space to jump.</p>
<p class="text-justify text-center"><br></p>
<p>Warning for flashing lights and confusing gameplay. <br></p>
<p>Warning for Twitch Integration: This feature if you decide to use it, takes all messages sent in chat! That means there is no filter. Heed caution using this feature!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/tJ3kx9QqxrA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzA5NjM0LzIwODMzNTEuZ2lm/original/jCToh%2F.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA5NjM0LzE1MjU3NjgucG5n/original/LAQYmG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA5NjM0LzIwODMzNTMuZ2lm/original/bWMBIb.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA5NjM0LzE1MjU3NzAucG5n/original/U%2Ff%2FN1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzA5NjM0LzIwODMzNTIuZ2lm/original/RFUH8N.gif]]
<p>“a very good roguelike”<br><a href="https://steamcommunity.com/linkfilter/?url=http://www.newyorker.com/online/blogs/culture/2014/04/video-games-that-embrace-irony-and-death.html" target="_blank" rel="nofollow noopener" referrerpolicy="origin">The New Yorker</a><br><br>“Shattered Planet is breathing new life into the rogue-like genre”<br>4/5 – <a href="https://steamcommunity.com/linkfilter/?url=http://supergamedroid.com/2014/04/12/shattered-planet-review" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Super Game Droid</a><br><br>“frankly beautiful”<br><a href="https://steamcommunity.com/linkfilter/?url=http://www.cnet.com.au/shattered-planet-towards-the-perfect-procedural-death-labyrinth-339346988.htm" target="_blank" rel="nofollow noopener" referrerpolicy="origin">CNET Australia</a><br></p>
<p><br></p>
<p>Explore a dangerous planet that's different every time and try to survive! The Galactic Union's job for you is clear: research the alien wildlife -- for science! However, in this case, researching may include lasers, explosions, hungry aliens, space sushi, and other similarly delicious-or-terrifying hazards.<span></span></p>
<p>Whether you survive or die, you'll come away better than you started!<br><br>Features: </p>
<ul><li>Procedurally generated levels </li><li>200+ items, from swords to cookies to grenades </li><li>Alien monsters to fight or befriend</li><li>Everyone gets the same Daily Challenge - compare your progress with your friends</li><li>Class system - each clone skin has a different advantage</li><li>Pet cloning - maintain your companions' DNA in their own clone vat</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/NLqkRSm6h28" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzE0ODY3LzE1NDkyMjUucG5n/original/5YetCH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzE0ODY3LzE1NDkyMjEucG5n/original/j9Xwhk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzE0ODY3LzE1NDkyMjQucG5n/original/XVD5Md.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzE0ODY3LzE1NDkyMjIucG5n/original/oCKRdC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzE0ODY3LzE1NDkyMjYucG5n/original/seQDMj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzE0ODY3LzE1NDkyMjkucG5n/original/xzYYXU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzE0ODY3LzE1NDkyMjMucG5n/original/W3hNBK.png]]
<p>Once upon a time, there was a sweet little girl with a big imagination. Her name was Jennifer (Jenny for short), and her world was full of adventure. A closet became a sanctuary. A basement became a secret passage to the Land of Elves. And her home became a nightmare world with no warning, rhyme or reason beyond the unpredictable winds of her father's drunken rage.</p>
<p>Help little Jenny survive seven days with her alcoholic father. From there, via New Game Plus, walk the path of Love, Indifference or Hate to decide who she becomes.</p>
<p>Highlights include:
</p>
<ul><li><a name="OLE_LINK11"></a>Nine total endings: three basic, three intermediate, three final</li><li>New Game Plus</li><li>A story to suit your mood: optimistic, pessimistic or destructively nihilistic depending on which path(s) you choose</li><li>Free Day Mode - give little Jennifer run of the house without parental terror (unlocked in Free Day Mode)</li><li>Minimal combat... and one hidden boss.</li></ul>
<hr>
<p>
<em><strong>My Website: <a href="https://gamingpixie.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">gamingpixie.com</a></strong></em><em><strong></strong></em><br>
</p>
<hr>
<p>
<em>Note: If you'd like to play the original version, <a href="https://gamingpixie.itch.io/she-who-fights-monsters" target="_blank">it's here</a>.</em><br>
</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/p_c58VG733Y" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTU5MTIvNDQ4OTQ5LmpwZw==/original/sJTZK%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU5MTIvNDQ4OTU0LmpwZw==/original/LNqKPl.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTU5MTIvNDU5MTI0LmpwZw==/original/SR0gDx.jpg]]
<p>The remains of a once glorious vessel have washed up on a rocky shore after a furious storm has passed.<br></p>
<p>The Dungeondraft source file is available from 1$ up.</p>
[img width=500 [https://img.itch.zone/aW1nLzYwMzU2OTkucG5n/original/17RrSZ.png]]
<p><img src="http://flatbutton.co/shnip/img/shnip_pc_header.gif" loading="lazy"></p>
<p><br></p>
<p>Shn!p is an original puzzle featuring satisfying explosions.<br></p>
<p>It's about clearing a field of dots.</p>
<p>Complete 160 levels that will have you popping dots off blockers, through blackholes, and more special mechanics!</p>
<p><strong>FEATURES</strong></p>
<ul><li>Polished puzzle experience with satisfying explosions</li><li>160 handcrafted levels</li><li>Special mechanics: blockers, color changers, black holes, magnets, and wormholes</li><li>Color blind friendly mode</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/IWAh3iyIkfo" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTU3ODYyLzcyNDYyMi5naWY=/original/UxN13K.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU3ODYyLzcyNDYyMy5wbmc=/original/UkTfXd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU3ODYyLzcyNDYyNC5wbmc=/original/8%2Bj5KJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU3ODYyLzcyNDYyNS5wbmc=/original/iSQxU%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU3ODYyLzcyNDYyNy5wbmc=/original/NSeQSI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU3ODYyLzcyNDYyOC5wbmc=/original/VUS7GX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU3ODYyLzcyNDYyOS5wbmc=/original/QTkVzF.png]]
<p>SHNIPERS is a combat platformer where up to 4 players fire bullets that bounce off of everything! A game of "bullet-hell pong" where your shots are as much a danger to you as they are to your enemies.<br></p>
<hr>
<p>Originally created at the 2014 Toronto Game Jam.<br></p>
<p>Multiplayer requires 2-4 gamepad controllers of any type in order to play. A single player training mode is available and can be played with a mouse & keyboard.<br></p>
<hr>
<iframe width="720" height="450" src="https://www.youtube.com/embed/Be81qYC4_GA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzA2MS83MDAwMzQuZ2lm/original/BcS3aV.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA2MS83MDAwMzUuZ2lm/original/Sdsz0g.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA2MS8yNTgxNDkuZ2lm/original/UYYrnz.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA2MS83MDAwMzYuZ2lm/original/hPTuKN.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA2MS83MDAwMzguZ2lm/original/JjxR%2FM.gif]]
<p><em>It’s a tough, unforgiving, dangerous galaxy. Out there on the fringes of solar systems controlled by interstellar ultra-capitalist corporations, where pirates and bandits and marauders roam, <strong>mercenaries </strong>make a living taking dangerous jobs for not enough pay, hoping to scrape enough together to buy a better gun that could be the difference between success and bloody, painful failure. And if they die, the ubiquitous corporate respawn industry spits them out in a new body, for as long as it’s profitable.</em></p>
<p><em>You are one of these bombastic, gun-toting, problem-solving, explosion-loving, daredevil-driving mercenaries, out to make a name for yourself <strong>blowing away bad guys for fun and profit</strong>. You do what the mission demands, and look good while doing it. </em></p>
<p><em>Let’s make some <strong>mayhem</strong>.</em></p>
<p class="text-center">---</p>
<p><em>Shoot 'n' Loot</em> is a rules-lite tabletop roleplaying game for 2-5 players, including a GM. It is built in the easy-to-learn, fiction-first style of games like <a href="https://lumpley.itch.io/apocalypse-world" target="_blank">Apocalypse World</a><em></em> (D. Vincent Baker and Meguey Baker), <a href="https://dungeon-world.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Dungeon World</a><em></em> (Sage LaTorra and Adam Koebel), and <a href="https://www.drivethrurpg.com/product/171286/The-Sprawl----MIDNIGHT" target="_blank" rel="nofollow noopener" referrerpolicy="origin">The Sprawl</a><em></em> (Hamish Cameron). It uses a unique map-drawing approach to fast-paced, lightly tactical combat. It contains everything you need to jump straight into a setting-agnostic <strong>high octane</strong> world of <strong>explosions</strong>, <strong>bullets</strong>, and <strong>mayhem</strong>.<br></p>
<table>
<tbody><tr>
<th><h3>Details</h3></th>
<th><h3>Themes</h3></th>
</tr>
<tr>
<td>
<p><img src="http://secretprincegame.com/image/icon/group.svg" style="max-width: 100%; height: 16px" loading="lazy"> 2-5 Players</p>
<p><img src="http://secretprincegame.com/image/icon/time.svg" style="max-width: 100%; height: 16px" loading="lazy"> 2-3 Hours per session, <br>short campaigns</p>
<p><img src="http://secretprincegame.com/image/icon/player.svg" style="max-width: 100%; height: 16px; font-size: 14px; background-color: rgb(255, 255, 255)" loading="lazy"> Ages 13+</p>
<p><img src="http://secretprincegame.com/image/icon/player.svg" style="max-width: 100%; height: 16px; font-size: 14px; background-color: rgb(255, 255, 255)" loading="lazy"> GM Required</p>
</td>
<td>
<p><img src="http://secretprincegame.com/image/icon/spaceship.svg" style="color: inherit; font-size: inherit; height: 16px" loading="lazy"> Sci-Fi and Cyberpunk</p>
<p><img src="http://secretprincegame.com/image/icon/fire.svg" style="max-width: 100%; height: 16px; font-size: 14px; background-color: rgb(255, 255, 255)" loading="lazy"> Action and Explosions</p>
<p><img src="http://secretprincegame.com/image/icon/team.svg" style="height: 16px" loading="lazy"> Cooperate with friends</p>
<p><img src="http://secretprincegame.com/image/icon/dice.svg" style="height: 16px" loading="lazy"> Roll to find out what happens</p>
<p><img src="http://secretprincegame.com/image/icon/book.svg" style="color: inherit; font-size: inherit; height: 16px" loading="lazy"> Tell a story together</p>
</td>
</tr>
</tbody></table>
<h2>What's Familiar</h2>
<p><em>Shoot 'n' Loot</em> is Powered by the Apocalypse. It uses a roll of 2d6 +/- a skill to resolve challenges, and each <strong>move </strong>has built in, fiction-focused prompts for failed rolls, partial successes, and complete successes. Each character has a Playbook which gives them access to moves unique to them. As you level up through completing missions, failing rolls, and complicating missions through personal <strong>drives</strong>, you choose new moves to expand your character's options.</p>
<h2>What's Unique</h2>
<p><em>Shoot 'n' Loot</em> uses a new map-drawing approach to fiction-first tactical combat. It's not grid-based combat, nor is it purely theatre-of-the-mind. </p>
<blockquote>"It's like <em>The Quiet Year</em>, but with more explosions."<br>—The <a href="https://www.twitch.tv/welcomepartyrpg" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Welcome to the Party</a> team</blockquote>
<p>Combat is fast and dangerous, but don't worry: when your character dies, they'll just come back at a nearby respawn station... to a point.<br></p>
<p>Characters wield an array of wild, randomly generated guns across 10 weapon types with 100 possible tags, and 100 possible looks. Some tags give concrete bonuses or penalties while some are part of the fiction.</p>
<h3>Playbooks</h3>
<ul><li><strong>The Soldier</strong> protects themselves and their allies, making them harder to take down, and takes out vulnerable targets with grenades.</li><li><strong>The Berserker</strong> gets in close and deals massive damage at huge risk to themselves.</li><li><strong>The Agent</strong> ghosts unnoticed around the battlefield, picking off isolated targets with decisive blows.</li><li><strong>The Wheel-Jockey</strong> is one with the machine, making rust-bucket cars dance across wastelands and through city streets.</li><li><strong>The Gun Runner</strong> makes their fortune in the machinery of endless strife, and always knows how to cut a deal.</li><li><strong>The Sentry</strong> watches the battle from afar, waiting for the perfect time to strike.</li></ul>
<h2>What's Included</h2>
<p>Your download of <em>Shoot 'n' Loot</em> includes a full rulebook, rules for combat and weapon generation, and 6 playbooks.</p>
<p>You will need <strong>dice</strong>, <strong>paper</strong>, <strong>pens or drawing items</strong>, <strong>tokens </strong>for characters, tokens or <strong>diecast cars</strong> for vehicles.</p>
<h3>Setting Agnostic</h3>
<p><em>Shoot 'n' Loot</em> <strong>does not</strong> include any <strong>setting information</strong>, worldbuilding, or fiction. You can play games of <em>Shoot 'n' Loot</em> in any science fiction or cyberpunk setting that allows mercenaries to operate with total or partial impunity, features unimaginably large and powerful capitalist corporations, and has the kind of technology required to bring people back from the dead for profit. You can develop your own setting as you play, or port <em>Shoot 'n' Loot</em> into an existing world.</p>
<h2>Creative Commons</h2>
<p><a href="http://creativecommons.org/licenses/by/4.0/" rel="nofollow noopener" referrerpolicy="origin"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/88x31.png" loading="lazy"></a><br>This game is licensed under a <a href="http://creativecommons.org/licenses/by/4.0/" rel="nofollow noopener" referrerpolicy="origin">Creative Commons Attribution 4.0 International License</a>. That means you are free to adapt, edit, and remix this game as long as you credit <strong>Mitchell Salmon</strong>. This license does not extend to the graphics and photos used, which remain the copyright of their respective owners.</p>
<h2>Actual Play</h2>
<p>The team from <a href="https://www.twitch.tv/welcomepartyrpg" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Welcome to the Party</a> played <em>Shoot 'n' Loot</em> on stream. Check out how it went for them on YouTube.</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/2iEYMYhJB30" frameborder="0" allowfullscreen=""></iframe>
<p class="text-center">---</p>
<p>I respectfully acknowledge the Wurundjeri people and the Boon Wurrung / Bunurong people of the Kulin Nations as the traditional owners of the land on which the majority of my work takes place. I pay respects to elders past, present, and emerging. Sovereignty was never ceded.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/2iEYMYhJB30" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTcyMTkzLzMwMzgwMDYuanBn/original/MH8aNb.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcyMTkzLzMwMzgwMDcuanBn/original/UbIZYL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcyMTkzLzMwMzgwMDguanBn/original/B30PoE.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcyMTkzLzMwMzgwMDkuanBn/original/NMhLlR.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcyMTkzLzMwMzgyNzYuanBn/original/Zz4ZAA.jpg]]
<p>In <strong><em>Shoot Shoot Mega Pack</em></strong> you and up to three friends can duke it out head-to-head in any of four 2D shooters, each one focusing on its own core mechanic! Push each other into walls that expand with every shot in <strong>zoom</strong>, thrust and shoot together in <strong>sync</strong>, avoid a barrage of black holes in <strong>void</strong>, or carefully try to find your invisible friends before they find you in <strong>fade</strong>!</p>
<p>For the tinkerers out there, mix and match rules however you want in <strong>custom mode</strong>! Try 'em once or mark them as your faves and come back to them whenever you want! Finding all these options too overwhelming? Don't worry, we've got you covered! Take a load off and let the party gods choose for you in <strong>party mode</strong> or take your chances with an endless stream of randomly generated rulesets in <strong>chaos mode</strong>!</p>
<p>There's no right way to play Shoot Shoot Mega Pack, just make sure you do it with friends!</p>
<h2>RED HOT FEATURES</h2>
<ul><li>Fast-paced competitive local mutliplayer for 2 to 4 players</li><li>Playable pre-game lobby that makes sure everyone knows the basics before their first game</li><li>Customizable controls including both modern and classic aim styles</li><li>Four preset games that all focus on their own unique core mechanics</li><li>Unlockable modes, rules, and maps</li><li>Customizable rulesets that can be saved as faves for ease access</li><li>13 rules that can be used in any configuration</li><li>Over 4000 rule combinations</li><li>Cycle through presets, faves, and unlock matches in Party Mode (BYOB)</li><li>Maps are divided between 4 sectors that each highlight a different level object</li><li>Over 40 versus maps</li><li>Let the game randomly generate rulesets in Chaos Mode</li><li>80 cool names to choose from like Bearman, Lady Fistforheart, and Greg</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/mYteU3rXDTM" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTM1MzYyLzYyMzk4NC5naWY=/original/rKb%2FS%2F.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM1MzYyLzYyMzk4OS5naWY=/original/M%2Bcl7a.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM1MzYyLzYyMzk5MC5naWY=/original/U6Ddmf.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM1MzYyLzYyMzk5MS5naWY=/original/LHeW4U.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTM1MzYyLzYyMzk5Mi5naWY=/original/Muj7S6.gif]]
<p><strong>Summary</strong><br></p>
<p><em>The massive hole you've spent months digging is collapsing on itself and lava is erupting from underneath your feet!</em> <em>Throw your magical shovel against the falling debris to climb to the top and escape!</em></p>
<p><br></p>
<p><strong>Controls</strong></p>
<table><tbody><tr><td>Move Left/Right</td><td>A / D or Left/Right Keys</td></tr><tr><td>Jump / Walljump</td><td>Space or Up Key (Hold to jump higher!)</td></tr><tr><td>Throw Shovel</td><td>Left Mouse Click</td></tr><tr><td>Recall Shovel</td><td>Right Mouse Click</td></tr><tr><td>Teleport to Shovel</td><td>Middle Mouse or Q </td></tr><tr><td>Toggle Music Volume</td><td>M</td></tr><tr><td>Toggle SFX Volume</td><td>N</td></tr><tr><td>Restart Game<br></td><td>R</td></tr><tr><td>Toggle Crosshair Color</td><td>C</td></tr><tr><td>Toggle Fullscreen</td><td>F1</td></tr><tr><td><em>Wipe and Reset Highscore</em></td><td><em>Shift+Ctrl+R (<strong><u>ONLY IF NEEDED</u></strong>)</em></td></tr></tbody></table>
<p><br></p>
<p><strong>Created By:</strong></p>
<p>David Haynes -> <a href="https://twitter.com/denglishdesign" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/denglishdesign</a><br>Tobias Brunner -> <a href="https://twitter.com/PudgeMeBaby" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/PudgeMeBaby</a></p>
<p><em><br></em></p>
<p><strong>Thanks to the Playtesters:</strong></p>
<p>Elias -> <a href="http://youtube.com/TopDesu" target="_blank" rel="nofollow noopener" referrerpolicy="origin">youtube.com/TopDesu</a> <br>Patrick E, Patrick B, Kai, Avinash, Daniel and Stella</p>
<p><br></p>
<p><em>Pixel Font Used:</em><br></p>
<p><a href="http://fontenddev.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin">'Unbalanced' Font is from fontenddev.com</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/Je4rqLatprQ" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTcxNzEwLzYwNDY4MTgucG5n/original/7b1ssb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTcxNzEwLzYwNDY4MjUucG5n/original/tbjjca.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTcxNzEwLzYwNDY4MjAucG5n/original/UqfQa1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTcxNzEwLzYwNDY4MTkucG5n/original/l%2FMEqL.png]]
<h2>Welcome Brave Explorer</h2>
<p>You have recently discovered a map to the fabled <strong>Shrine to Anubis</strong> deep in the Kaylo desert. After days of travel you finally find the temple to Anubis's shrine. But who said exploring was going to be easy?</p>
<p><img src="https://img.itch.zone/aW1nLzMzODczNTUuZ2lm/original/pRCFLv.gif" loading="lazy"><br></p>
<p>Jump, dodge, and loot your way through increasingly hard levels as you try to find Anubis' final resting place. Just so you can prove to all your other college professors that the ancient Egyptian gods were real!<br><img src="https://img.itch.zone/aW1nLzMzODczNTYuZ2lm/original/2%2BaVce.gif" loading="lazy"><br>Good luck brave adventurer!<br></p>
<p><img src="https://img.itch.zone/aW1nLzMzODczNTcucG5n/original/cMnBxb.png" loading="lazy"><br></p>
<p>Steam Link: <a href="https://store.steampowered.com/app/1160670/Shrine_to_Anubis/" rel="nofollow noopener" referrerpolicy="origin">https://store.steampowered.com/app/1160670/Shrine_to_Anubis/</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/ij4tuvD4L0c" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTk2NjQ2LzMzODczODMucG5n/original/g8A5eZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk2NjQ2LzMzODczODYucG5n/original/OWQ%2FT0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk2NjQ2LzMzODczODcucG5n/original/SonkBv.png]]
<p>Somewhere in the deepest reaches of space...</p>
<p>An execution is to be carried out...</p>
<p>Play as Orange, a perfect simulacrum of the Orange Experience. Be freed from prison by a strange hero. </p>
<p>SHRINESPARK Personal Software simulates the following experience:</p>
<ul><li>Take the role of a creature.</li><li>About 3 hours of content!</li><li>Slaughter foes via turn-based mechanics (Real Life does not support this).</li><li>Become nauseous/on fire.</li><li>Enjoy the company of others.</li><li>Browse online forums which update based on your actions!</li></ul>
<p>SHRINESPARK is made wholly by one person! Experience the world as seen by "The Homie's Boon"...</p>
<p>TOO MUCH juiced-up original pixel art to gaze at on your quest! Art critics across the globe have been left FOETID CORPSES by the sight!</p>
<p>STUPID quantities of head-tapping original audio will have you too shakin' to play! It should be ILLEGAL to put this many tunes in a game!</p>
<p>Purchase the soundtrack here: </p>
<p><a href="https://homieboon.bandcamp.com/album/shrinespark-original-soundtrack" rel="nofollow noopener" referrerpolicy="origin">https://homieboon.bandcamp.com/album/shrinespark-original-soundtrack<br><br></a></p>
<p>Message me to request a community copy code</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjg4NTM1LzQ1NDAyODIucG5n/original/rgqKKA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg4NTM1LzQ1NDAyODUucG5n/original/lZBc%2FR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg4NTM1LzQ1NDAzNDIucG5n/original/5%2F3yAj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg4NTM1LzQ1NDAzNTMucG5n/original/wJEQ1d.png]]
<h5>
an all-ages space-garden by <a href="http://www.mrcolin.com" rel="nofollow noopener" referrerpolicy="origin">Colin Sanders</a> and Jay Bond (Blunderboffins)
</h5>
<p>
<iframe src="https://www.youtube.com/embed/tUZejiohn0w" allowfullscreen="" width="560" height="315" frameborder="0">
</iframe>
</p>
<p>
As Shu, a space-cactus of the bouncy persuasion, you spring from planet to planet, spreading plant life and finding new friends. Create a forest! Enjoy a splash in a pond! Play tag with a bee! Make weird hybrid plants! Launch a giraffe into orbit!
</p>
<p>
<em>Shu's Garden</em> is a fully open playground with no hard goals, scores or missions. Just kick back, explore and experiment in this space-garden full of friends, foliage, and fun.
</p>
<p>
1—4 players.</p>
<p>
Follow us on
<a href="https://www.facebook.com/heyshugame/" rel="nofollow noopener" referrerpolicy="origin">Facebook</a> or <a href="http://www.twitter.com/ShusGarden" rel="nofollow noopener" referrerpolicy="origin">Twitter</a> for updates.
</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/tUZejiohn0w" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjg1NjAvMTMyNjk1LmdpZg==/original/0ToZlg.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjg1NjAvMTMyNzA0LmdpZg==/original/kEwWkn.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjg1NjAvMTMyNzA2LmdpZg==/original/%2B7tBwT.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjg1NjAvMTMyODE4LnBuZw==/original/kb0sz4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjg1NjAvMTMyODE5LnBuZw==/original/ioY3xS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjg1NjAvMTMyODIwLnBuZw==/original/xZ9caP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjg1NjAvMTMyODIxLnBuZw==/original/nQbp4c.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjg1NjAvMTMyODIzLnBuZw==/original/ixTc%2Fy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjg1NjAvMTMyODIyLnBuZw==/original/8kJGFw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjg1NjAvMjE2MTIzLnBuZw==/original/U8En%2Bc.png]]
<h1>Fight yourself. Die Trying.</h1>
<h3>== Both of our FREE content updates - SHUTDOWN and SHUT UP - are now live! ==</h3>
<div class=""><iframe width="500" height="281" src="https://www.youtube.com/embed/ae5h377yDnU" frameborder="0" allowfullscreen=""></iframe></div>
<h2>== Play the free demo <strong><a href="https://hiddentrack.itch.io/shut-in-demo">HERE</a></strong> ==</h2>
<p></p>
<p><strong>SHUT IN is a dark comedy/psychological horror adventure game which explores depression and isolation by trapping you inside your own house.</strong></p>
<p>Your task is simple: Get out of bed, go outside, and get some Fresh Air. Think you can handle that?</p>
<p>Oh, but it might not be quite that simple. Your house isn't looking quite like it used to. You don't recognise any of these photos, everything's gotten dirty and disgusting, cracks seem to be opening up everywhere, and you're SURE everything didn't used to be so... constantly trying to kill you.<br><br>Maybe it's not worth it. Maybe go back to bed. Try again tomorrow.<br><br>If you do decide to keep going, you'll have to face strange puzzles, bizarre and uncomfortable obstacles, and a narrator who is unreliable at best, and downright insulting at worst. You'll have to get through your day under a constant barrage of judgment, sarcasm, and melancholy. If you can cope with that. Idiot.<br><br>SHUT IN is about tension and discomfort in a familiar environment. Your greatest tools are also your worst enemies. Common sense will keep you alive, but it might not get you very far. Curiosity can have great rewards, but will probably just get you killed.<br><br>But don't worry. When you (inevitably) die - because you fell down the stairs, were too stupid to operate an oven properly, got ripped apart by untold invisible horror, something like that - you can always just give up. Try again tomorrow. Or the next day. Or the next day.</p>
<h4>Here's what people have been saying about the game:</h4>
<p><em>“Tackles the subject of mental health in a really clever way... whilst striking the perfect balance with its dark comedy.”<br>9.2/10 – <a href="https://fullsync.co.uk/shut-in-review/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Full Sync</a><br><br>“With depth far beyond the initial on-the-surface horror story, this experience taps into the evocativeness of a mental health crisis.”<br>9/10 – <a href="http://www.cubed3.com/review/6235/1/shut-in-pc.html" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Cubed3</a><br></em></p>
<p><em>"It's funny. It's darkly funny. It's cruelly funny."</em> <a href="https://buried-treasure.org/2020/11/shut-in/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Buried Treasure</a></p>
<p><em>“Exploring themes of mental illness has certainly been done in games before, but SHUT IN does it exceptionally well.”</em><br><strong>4/5 </strong>– <a href="https://adventuregamers.com/articles/view/shut-in" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Adventure Gamers</a></p>
<p><em>“I’ve never felt more unintentionally *seen* by a video game before.” <a href="https://www.heypoorplayer.com/2020/10/29/shut-in-review-pc/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">HeyPoorPlayer</a> </em></p>
<p><strong></strong></p>
<h1>Key Features:</h1>
<ul><li>Over a dozen unique ways to die!</li><li>Probably a way to survive!</li><li>Original atmospheric horror soundtrack by composer Luc Wilkinson.</li><li>Everything else done by person/mess Cael O'Sullivan.</li><li>A dangerous house full of original puzzles, and loads of ways to get them wrong!</li><li>A hint system which isn't that helpful, and often insults you!</li><li>Multiple items to experiment with, each with tons of unique interactions that solve no puzzles and achieve nothing.</li><li>Option to just stay in bed forever!</li><li>Quite short, so it's over quicker!</li><li>Writing up these features is exhausting...</li><li>Try again tomorrow.</li></ul><h4>-- For another game by Cael O'Sullivan & Hidden Track, check out <a href="https://hiddentrack.itch.io/how-to-win-season-one">How to Win: Season One</a> - now available on <a href="https://store.steampowered.com/app/1386510/How_to_Win_Season_One/" rel="nofollow noopener" referrerpolicy="origin">Steam</a> & <a href="https://hiddentrack.itch.io/how-to-win-season-one">Itch.io</a> for absolutely free! --</h4>
<iframe width="720" height="450" src="https://www.youtube.com/embed/ae5h377yDnU" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MTQ4LzcyNDQxMjQucG5n/original/o%2B9isk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MTQ4LzQ0NzAyOTguZ2lm/original/5gGiXY.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MTQ4LzQ0NzAzMTQuZ2lm/original/o349Nk.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MTQ4LzQ0ODUwNzIuZ2lm/original/EntJA1.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MTQ4LzQ0ODUwNzYuZ2lm/original/6FMgHO.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MTQ4LzQ0ODUzMTIuZ2lm/original/hT%2BOTW.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MTQ4LzQ0NzAzMjYuZ2lm/original/yWrvOZ.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MTQ4LzQ0NzAzMDYuZ2lm/original/FFpsrT.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MTQ4LzQ0NzAzMjIuZ2lm/original/xSVCNC.gif]]
<p class="text-center">take a stroll<br>take a picture<br></p>
<p><img class="custom-img1" src="https://img.itch.zone/aW1nLzY2NDUxMTMucG5n/original/MHKAHP.png" loading="lazy"></p>
<p class="text-center">visit hundreds upon hundreds<br>of generated islands</p>
<p><img class="custom-img2" src="https://img.itch.zone/aW1nLzY2NDUxMTkucG5n/original/k5my8t.png" loading="lazy"></p>
<p class="text-center">share your photographs <br>on Twitter <a href="https://twitter.com/search?q=%23ShutterStroll" target="_blank" rel="nofollow noopener" referrerpolicy="origin">#ShutterStroll<br></a>or on <a href="https://disord.link/ShutterStroll" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Discord</a></p>
<p><img class="custom-img3" src="https://img.itch.zone/aW1nLzY2NDUxNDMucG5n/original/Z6aydb.png" loading="lazy"></p>
<p class="text-center">relax<br>there is no goal<br>take your time</p>
<p><br></p>
<p class="text-center">also play <a href="https://jannikboysen.itch.io/monoliths" target="_blank">Monoliths – a Shutter Stroll fiction</a> for free<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTgzMDgxLzY2NDQ5MDMucG5n/original/1bSkcA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgzMDgxLzY2NDQ5NTkuanBn/original/MIj5R8.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgzMDgxLzY2NDQ5MjEucG5n/original/JiL4ft.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgzMDgxLzY2NDQ5NTQuanBn/original/%2Bafsql.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgzMDgxLzM1MjgzMzkuanBn/original/s%2B6CDU.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgzMDgxLzY2NDQ5NDAuanBn/original/6g%2BRVH.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgzMDgxLzM1MjgzNDEuanBn/original/y6%2B0cy.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgzMDgxLzM1MjgzNDQuanBn/original/J0Plvu.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgzMDgxLzY2NDQ5MjIucG5n/original/fKx64N.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgzMDgxLzY2NDQ5NTUuanBn/original/KihH2x.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgzMDgxLzY2NDQ5NTgucG5n/original/wKVCl6.png]]
<h5 class="text-center"><span></span></h5>
<h3 class="text-center"></h3>
<h3 class="text-center">sideliner is a minimalist puzzle game where you use your current path to create new ones.</h3>
<p></p>
<ul><li>Land on the goal across 40 levels of casual puzzle play</li><li>Clean, minimal design with different themes</li><li>Gamepad support</li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzI5NDMwLzQwNTI5MjkucG5n/original/IyoopL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI5NDMwLzQwNTI5MzEucG5n/original/w1HKLO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI5NDMwLzQwNTI5MzAucG5n/original/700BHt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI5NDMwLzQwNTI5MzIucG5n/original/urnBub.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI5NDMwLzQwNTI5MzMucG5n/original/MonUyI.png]]
<p>Grab a cup of coffee and relax with Sidewords.</p>
<p>Sidewords is part logic puzzle, part word game, all original. </p>
<p>No timers. No penalties. No pressure. Just you and a good puzzle.</p>
<p>Sharpen your mind with hundreds of puzzles, from small and quick, to large and captivating. Plus three new puzzles to do every day! There’s even a bonus game included!</p>
<p>Choose a color scheme that fits your mood and environment. Get your morning started with bright colors, or unwind at the end of a long day with a dark theme.</p>
<p>So sit back, relax, and enjoy a good puzzle. You deserve your Sidewords time.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/qW4HTgy2nDw" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTczNTI4LzgwODU2OS5wbmc=/original/CjQ%2FlI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTczNTI4LzgwODU3MC5wbmc=/original/y21t%2BN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTczNTI4LzgwODU2Ny5wbmc=/original/GwlNuD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTczNTI4LzgwODU2Ni5wbmc=/original/PevmiQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTczNTI4LzgwODU2OC5wbmc=/original/0%2BN5wt.png]]
<p class="text-center">Despite living in a three dimensional world, our eyes view everything through a two dimensional image. The light in front of us is pressed onto a flat surface, a simple plane of colors which we call “sight”. Distance is an illusion and depth is a lie; only through size and movement can we truly tell how far something is. But century after century of living with these eyes, living with these lies, has had us grown used to viewing our three dimensions with a dimension of missing information.</p>
<p class="text-center">So, how would we see if our world was two dimensional? Simple: we’d have only one dimension of sight.</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzI0MzYzMTcucG5n/original/6vzVm4.png" loading="lazy"><br></p>
<p class="text-center">Requires a mouse and keyboard to play.<br></p>
<p class="text-center">Programming and visuals by <a href="https://winterbeak.itch.io/">winterbeak</a>. Audio by <a href="https://saiziju.itch.io/">saiziju</a>.</p>
<p class="text-center">Source code can be found <a href="https://github.com/winterbeak/sightline" target="_blank" rel="nofollow noopener" referrerpolicy="origin">here.</a></p>
<p class="text-center">The jam version was made in 48 hours for GMTK’s 2019 Game Jam: Only One, and contained only 9 levels. The extended version was made after the jam, adding 21 levels and generally polishing up the experience.<br></p>
[img width=500 [https://img.itch.zone/aW1nLzY5NjkxMTEuZ2lm/original/OevDbE.gif]]
<p>SIGNAL//r021 is a two-player high-society mecha-pilot letter-writing game designed for people who want to build world-setting details and character backgrounds as they play. It is designed to be supplemental to other systems that have a similar enough tone, and has <a href="https://hexavexagon.itch.io/signal-seed">a system reference document</a> for designers who want to make it fit systems with different tones. It also produces tarot cards that are specific to the relationship between the characters which can then be used as cards in a tarot-based system. Lastly, it provides a good framework for people to practice their communication skills! I thought about communication a lot while writing the SIGNAL system, and it's heavily influenced by the dynamics of how good communication works IRL. I hope it can be of some help to people who either struggle with communication, or don't realise their own weaknesses with it.<br></p>
<p>Acknowledgements go out to <a href="https://loottheroom.itch.io/wretched">The Wretched</a> by <a href="https://twitter.com/pangalactic" rel="nofollow noopener" referrerpolicy="origin">Chris Bissette</a>, and <a href="https://storybrewers.itch.io/good-society-pdf-including-deck-of-connections">Good Society</a> by <a href="https://twitter.com/storybrewers" rel="nofollow noopener" referrerpolicy="origin">Hayley G</a> (particularly the AP on <a href="http://oneshotpodcast.com/one-shot/295-the-good-society-part-1/" rel="nofollow noopener" referrerpolicy="origin">OneShotRPG</a>), for a lot of inspiration.<br><br>Example of Play (available to read in its entirety in the screenshots, in case you don't want to buy the whole game) made in collaboration with <a href="https://twitter.com/evaliisasepp" rel="nofollow noopener" referrerpolicy="origin">Eva Liisa Sepp</a>.<br></p>
<p>---</p>
<p>Update note: new version underway. Might not add stock photos as originally planned, because it's a lot of additional layout work, but I'll see how it goes. Addition of quotes and slight adjustment in rules pending. No idea what I'll do for extra spreads, but I'll figure something out. No work beyond this will be prioritized on this project. It's incredible and I love it, but I need to get other games up to this level.<br></p><p>EDIT: I ended up deprioritizing all this work, but I'll do an update soon anyway. It may not be what I had planned. I'll need to have a rethink of what direction I want this to take.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzgyODk5LzQ0ODc0MTEucG5n/original/WJ9h80.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyODk5LzQ0ODc0MTIucG5n/original/CTJ1xM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyODk5LzU0Nzg3NDUuanBn/original/Dk9ehl.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyODk5LzU0Nzg3NDcuanBn/original/DOWlQD.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyODk5LzU0Nzg3NDkuanBn/original/acSSi%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyODk5LzU0Nzg3NTAuanBn/original/AnF%2BVr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyODk5LzU0Nzg3NTEuanBn/original/m9ga3l.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyODk5LzU0Nzg3NTIuanBn/original/hyr6v7.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyODk5LzU0Nzg3NTMuanBn/original/wKdXcf.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyODk5LzU0Nzg3NTUuanBn/original/iItwgp.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzgyODk5LzU0Nzg3NTYuanBn/original/BagzI5.jpg]]
<p>Get the official soundtrack <a href="https://echodog-games.itch.io/signs-of-the-sojourner-official-soundtrack" target="_blank">here</a>!</p>
<p>Signs of the Sojourner is a narrative deck-building game about connecting and communicating with others. It breaks away from typical card-battlers by instead challenging you to understand different perspectives and navigate social situations.</p>
<p>Your deck is your character, shaped by your experiences and relationships. Different decks will lead to different narrative paths as your cards impact your ability to communicate with various characters. Rather than building the most "powerful" deck, you will have to make decisions about who you want to be in this world and how you relate to others.<br></p>
<p>Set in a near-future earth-like world, you take over your mother's store after her death, traveling to diverse locations in order to acquire goods for the shop. This is a world where communities are more insulated, where travel is difficult, and where climate change has made life hard, but you'll still encounter optimistic stories, compassionate characters, and delightful surprises.</p>
<p><strong>Where To Find Us</strong></p>
<p><a href="https://discord.gg/echodoggames" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Echodog Games Discord server</a><br></p>
<p><a href="http://www.echodoggames.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Echodog Games website</a><br></p>
<p><a href="https://twitter.com/EchodogGames" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@EchodogGames on Twitter</a><br></p>
<p><a href="https://store.steampowered.com/app/1058690/Signs_of_the_Sojourner/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Signs of the Sojourner on Steam</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/JR-yGRKr-J8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDgxNDEyLzM0MjQ2MzQucG5n/original/Nc%2FLf0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDgxNDEyLzM0MjQ2MzIuZ2lm/original/osoSuK.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDgxNDEyLzM0MjQ2MzUucG5n/original/Io%2Fvyc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDgxNDEyLzM0MjQ2MzMucG5n/original/cPCoTF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDgxNDEyLzM0MjQ2MzkucG5n/original/Hc4rKy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDgxNDEyLzI0ODgyMDkucG5n/original/2WO1N4.png]]
<p>The makers of Manufactoria return with a new open-ended puzzle game.</p>
<ul><li>Build complex electronics from a variety of simple components, like Adders, Latches and Multiplexers.</li><li>Travel back to the 60s to Silicon Valley's very first startup, and do your best to keep the whole thing from imploding.</li><li>Solve more than seventy puzzles, from straightforward introductions to building fully functional CPUs.</li><li>Original soundtrack by Craig Barnes, composer for Streets of Rogue and Enyo.</li></ul>
<p>"The best game about CPU design that I can imagine" -- Zach Barth (SpaceChem, TIS-100).<br></p>
<p>Follow development on <a href="https://twitter.com/pleasingfungus" rel="nofollow noopener" referrerpolicy="origin">Twitter</a>, <a href="http://pleasing.tumblr.com/" rel="nofollow noopener" referrerpolicy="origin">Tumblr</a>, and <a href="https://www.facebook.com/pleasingfungus/" rel="nofollow noopener" referrerpolicy="origin">Facebook</a>.<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/DDNywILJMGg" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTIxNjcyLzY5OTk1OS5naWY=/original/fEe2sr.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIxNjcyLzY5OTk1Ny5naWY=/original/YPHlFH.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIxNjcyLzY5OTk1NC5wbmc=/original/DblZEC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIxNjcyLzcyNzM1MC5wbmc=/original/o0IqST.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTIxNjcyLzcxMDQ2Mi5wbmc=/original/r6ETWg.png]]
<p><br></p>
<p class="custom-video"><iframe width="640" height="360" src="https://www.youtube.com/embed/eaC1JXOROFw" frameborder="0" allowfullscreen="" style="color: inherit"></iframe></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzc2NTg0OS5wbmc=/original/Fgp%2Ftx.png" loading="lazy"></p>
<p><strong>Silver Grapple is a fast paced 2D platformer that lets you swing through the air at the speed of sound</strong><strong>!</strong> Explore an expansive underground laboratory, buried and abandoned years after the mysterious accident that shut it down. Save whoever you can in your quest to escape, rocketing through the ruins with your <strong>Silver Grappling Hook</strong>!</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzc2NTgzNS5wbmc=/original/5RW5MM.png" loading="lazy"><br></p>
<ul><li>The smoothest grappling hook you'll ever swing on!</li><li>Fast paced challenges that'll leave you leaning into the controls.</li><li>An expansive world with 11 environments to explore, from abandoned offices and excavation sites to the quarantined depths of the strange laboratory.</li><li>An original soundtrack straight from the heart of retro consoles, featuring the work of Tom Campbell! </li><li>A rich story hidden amongst secret journals and old computers.</li><li>Skate on water and run like the wind as you scavenge new powers from the facilities ruins!</li><li>Throw your weight around as you master the physics of the Silver Grappling Hook!</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/eaC1JXOROFw" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTI4MTE1Lzc4ODUxMy5naWY=/original/XibQqL.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI4MTE1Lzc5NzY2Ni5naWY=/original/dERwuR.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI4MTE1LzcwODczNC5naWY=/original/ANYw03.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI4MTE1LzcwODcyMy5wbmc=/original/s5%2FHyU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI4MTE1Lzc4ODUxMS5wbmc=/original/ChbqEh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI4MTE1Lzc4ODUxMi5wbmc=/original/tM3%2Fm6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI4MTE1Lzc5OTA4OC5naWY=/original/pr6vAg.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI4MTE1Lzc4ODUxMC5wbmc=/original/UJWw1b.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI4MTE1LzcwODczNS5naWY=/original/WQbYrM.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI4MTE1LzcwODcyMC5wbmc=/original/1wWOWR.png]]
<p>A simple and easy tool to localize your projects to any language you want, with just a couple of clicks you can configure your objects.</p>
<p>Create or edit your language files with the built-in file editor tool, compatible with JSON, STRINGS, and CSV formats files.<br></p>
<p>The tool components do all the work for you, no coding required* to localize your objects, support TMPro Text, UI Buttons, UI Image, and custom components.<br></p>
<p>Have custom events to trigger automatically any method you want as soon as the object is enabled, with a specific option for language selection.<br></p>
<p>Manage the tool with the Editor Tool window, giving you access to anything you will need, including debugging info.<br></p>
<p>Tested in Unity 2019 and above<br></p>
<p>You can find the tool in the Unity Assets Store too if you want <a href="http://u3d.as/2q3B" target="_blank" rel="nofollow noopener">http://u3d.as/2q3B</a></p>
<p>Documentation: <a href="https://drive.google.com/file/d/18_QHPpsuyUD7RZJt6KMytWGzHUN6GnbT/view?usp=sharing" target="_blank" rel="nofollow noopener">LocalizationTool Documentation</a><br></p>
<p><br></p>
<p>If you are a student and want to use the tool for your projects please contact me at via email through your student email asking for it</p>
<p><br></p>
<p>-Multiple format support (JSON, STRINGS, CSV)<br>-Built-in file editor<br>-No coding required*.<br>-Manage everything with the editor tool window.<br>-Supports custom text and dialog system</p>
<p><em>*In case you incorporate it with a custom system, you will need to implement a method to communicate the tool with the system.</em></p>
<p><em>This tool is meant to be used from the start of the project, however, it can be implemented without any issue, just keep in mind that some changes to your previous system may be needed.</em></p>
<p><span></span></p>
<p><br></p>
<p><span></span></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTQ5ODYxLzUzODU1MzYucG5n/original/Tuz0b9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ5ODYxLzUzODU1MzcucG5n/original/B%2Bz2D%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ5ODYxLzUzODU1MzkucG5n/original/BUr9R0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ5ODYxLzUzODU1NDAucG5n/original/UF32hT.png]]
<p>Very Simple you have to sort the numbers in the right order.<br> 1 2 3 4 5 6 in easy mode</p><p>or 1 2 3 4 5 6 7 8 9 in hard mode.<br></p><p>Complex try it and you will know. </p><p>Use the Buttons on the Screen to rotate the numbers.<br> try to sort the numbers in the right order</p><p><a href="https://www.youtube.com/playlist?list=PL5t3l9AEg3EJ8u_Xrv2WkzglXMStPyJRm" rel="nofollow noopener" referrerpolicy="origin">Demo Game Play </a></p><p><br></p><p><span></span><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzQyMjMvMzQzMDgzLnBuZw==/original/qMPQOb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQyMjMvMzQzMDgwLnBuZw==/original/2TPtCO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQyMjMvMzQzMDgxLnBuZw==/original/AD6bLV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQyMjMvMzQzMDgyLnBuZw==/original/YRH0Dj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQyMjMvMzQzMDg0LnBuZw==/original/5oYfVR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQyMjMvMzQzMDg1LnBuZw==/original/tKfz9%2B.png]]
<p>It's fantasy roleplaying, <em>the</em> fantasy roleplaying game stripped down to barebones and brass-tacks. Be anything you wish, without drowning in convoluted game mechanics and supporting a corporate behemoth.</p>
<ul><li>Broadly Compatible with most Fantasy d20 adventures. </li><li>Hits the basic notes of Fantasy Adventure Gaming <ul><li>but with a unique timbre.</li><li>and sans any unnecessary complication.</li></ul></li></ul>
<p>What's familiar:</p>
<ul><li>d20 Based Combat</li><li>Ascending Armor Class</li><li>Roll under Stat Checks</li><li> The 3 basic Character Classes: Fighter, Thief, and Wizard</li></ul>
<p>What's new:</p>
<ul><li>Fighters create their own, unique "Special Moves"</li><li>Original Spells such as: Wretched Shriek, Sinking Sands, and Multitudinous Gambol.</li><li>Stat Check based Thief Skills.</li><li>Combat without Initiative. </li></ul>
<p>10 page, full color, hyperlinked .pdf</p>
<p><a href="https://violentmedia.itch.io/cave-of-the-feral-catgirls" target="_blank">And check out the first Dee En Dee sadventure, Cave of the Feral Catgirls!</a></p><p><br></p><p>HEY! if you're inspired to make and share content for Simple DeeEnDee, that's great! </p><p>Just follow these steps:</p><ol><li>Do NOT be a cop, republican, nazi, evangelical, or fascist of any stripe.</li><li>add a note saying the content is made by you, not me</li><li>include the official license tag "Oh fuck! This is Dee En Dee!! ACAB"</li><li>Give money to a poor trans person if you're able to.</li><li>Please let me know about it if you want.</li></ol>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzg0ODEzLzQzOTIzNzIuanBn/original/zFfQuN.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg0ODEzLzQzOTIzNzEuanBn/original/gC6Yll.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg0ODEzLzQzOTI0NzUuanBn/original/Hggp1s.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg0ODEzLzQzOTIzNjkuanBn/original/ZfmfQg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg0ODEzLzQ3MzIyNTcuanBn/original/AWERrp.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg0ODEzLzQzOTIzNzAuanBn/original/rxbpFA.jpg]]
<p>A simple and easy tool to localize your projects to any language you want, with just a couple of clicks you can configure your objects.</p>
<p>Create or edit your language files with the built-in file editor tool, compatible with JSON, STRINGS, and CSV formats files.<br></p>
<p>The tool components do all the work for you, no coding required* to localize your objects, support TMPro Text, UI Buttons, UI Image, and custom components.<br></p>
<p>Have custom events to trigger automatically any method you want as soon as the object is enabled, with a specific option for language selection.<br></p>
<p>Manage the tool with the Editor Tool window, giving you access to anything you will need, including debugging info.<br></p>
<p>Tested in Unity 2019 and above<br></p>
<p>You can find the tool in the Unity Assets Store too if you want <a href="http://u3d.as/2q3B" target="_blank" rel="nofollow noopener" referrerpolicy="origin">http://u3d.as/2q3B</a></p>
<p>Documentation: <a href="https://drive.google.com/file/d/18_QHPpsuyUD7RZJt6KMytWGzHUN6GnbT/view?usp=sharing" target="_blank" rel="nofollow noopener" referrerpolicy="origin">LocalizationTool Documentation</a><br></p>
<p><br></p>
<p>-Multiple format support (JSON, STRINGS, CSV)<br>-Built-in file editor<br>-No coding required*.<br>-Manage everything with the editor tool window.<br>-Supports custom text and dialog system</p>
<p><em>*In case you incorporate it with a custom system, you will need to implement a method to communicate the tool with the system.</em></p>
<p><em>This tool is meant to be used from the start of the project, however, it can be implemented without any issue, just keep in mind that some changes to your previous system may be needed.</em></p>
<p><span></span></p>
<p><br></p>
<p><span></span></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTQ5ODYxLzUzODU1MzYucG5n/original/Tuz0b9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ5ODYxLzUzODU1MzcucG5n/original/B%2Bz2D%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ5ODYxLzUzODU1MzkucG5n/original/BUr9R0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTQ5ODYxLzUzODU1NDAucG5n/original/UF32hT.png]]
<p class="text-center"><strong>Six Figures Under</strong></p>
<p class="text-center"><strong>or</strong></p>
<p class="text-center"><strong>You Went Through Ten Years Of Necromancy School And They Never Taught You How To Market Yourself.</strong></p>
<p><br></p>
<p>A series of 6 solo micro-games about being a freelance necromancer:</p>
<ol><li>False Life Advertising - Write a Craigslist ad</li><li>Dead Ringer - Record a message for your answering machine</li><li>A Day in the Life - Journal about a revivification job</li><li>Cheap as Dirt - Write a recipe</li><li>At Death’s Door - Journal about work following you home</li><li>Life Insurance - Write instructions for your own revivification</li></ol>
<p></p>
<p>Every purchase at $3+ will add 1 community copy to the pool.</p>
<p>Submitted to the <a href="https://itch.io/jam/spring-from-the-graves-jam" target="_blank">Spring From the Graves Jam</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAxMjI2My81NzY3MDYxLmpwZw==/original/IPqMew.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxMjI2My81NzY3MDcyLmpwZw==/original/aUVEMx.jpg]]
<p class="text-center"><strong>Six Figures Under</strong></p>
<p class="text-center"><strong>or</strong></p>
<p class="text-center"><strong>You Went Through Ten Years Of Necromancy School And They Never Taught You How To Market Yourself.</strong></p>
<p><br></p>
<p>A series of 6 solo micro-games about being a freelance necromancer:</p>
<ol><li>False Life Advertising - Write a Craigslist ad</li><li>Dead Ringer - Record a message for your answering machine</li><li>A Day in the Life - Journal about a revivification job</li><li>Cheap as Dirt - Write a recipe</li><li>At Death’s Door - Journal about work following you home</li><li>Life Insurance - Write instructions for your own revivification</li></ol>
<p></p>
<p>Every $3 will add 1 community copy to the pool.</p>
<p>Submitted to the <a href="https://itch.io/jam/spring-from-the-graves-jam" target="_blank">Spring From the Graves Jam</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAxMjI2My81NzY3MDYxLmpwZw==/original/IPqMew.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAxMjI2My81NzY3MDcyLmpwZw==/original/aUVEMx.jpg]]
<p>Time trial racing on notepaper.</p><p>25 levels to race on, plus an editor to create more.</p><p>Wide open rally stages, tight street circuits, technical hairpins and fast sweepers.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDAzOTUvMTc0MDAzLnBuZw==/original/TAYyVp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDAzOTUvMTc0MDA1LnBuZw==/original/kl6mFh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDAzOTUvMTc0MDA0LnBuZw==/original/tJMXVH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDAzOTUvMTc0MDA2LnBuZw==/original/HaY1Dd.png]]
<p>Have fun! Create Art! Art is great!</p>
<p><br></p>
<p>Controls:</p>
<p>Keyboard:</p>
<p>WASD & Arrow Keys (2 player mode) to move around</p>
<p>Escape to quit</p>
<p>On the starting screen, press '1' for single player mode, '2' for two player mode</p>
<p>Once you'rt done, press 'S' to save all paintings from your previous session, 'D' deletes them</p>
<p><br></p>
<p>Gamepad (only XInput controllers are fully supported, DirectInput might lead to strangeness)</p>
<p>Analogue Stick/Dpad to move around. In two player mode, the right analogue stick of the first controller also controls the second player, while the one on the second controller (if plugged in) controls player one. Theoretically you can play the game with sharing just one controller...</p>
<p>On the starting screen 'A' (Xbox controller) activates single player mode, 'B' activates two player mode.</p>
<p>Once you'rt done, pressing 'A' saves your painting, while pressing 'B' deletes them.</p>
<p>Your paintings are saved in your [username]\appdata\local\Skuiggle folder.<br></p>
<p>Options:<br>press the following keys on your keyboard to toggle certain things on, or off:</p>
<p>Screenshake on/off: 'U' <br>Sound on/off: 'i'<br>music on/off: 'o'</p>
<p><br></p>
<p>Credits:</p>
<p>Programming, Design, Art: Eric Merz</p>
<p>Music & Sound: <a href="http://elirainsberry.itch.io/">Eli Rainsberry</a></p>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/AYQCJVGZNxI" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjEzNDMwLzEwNDUxMDUuZ2lm/original/XszYiU.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjEzNDMwLzEwMDU0OTMucG5n/original/Vc6NGt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjEzNDMwLzEwMDU0ODcucG5n/original/tSxeo0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjEzNDMwLzEwMDU0OTAucG5n/original/DvJWhk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjEzNDMwLzEwMDU0OTEucG5n/original/61nGzy.png]]
<p>Sky Rogue is a fwooshy rogue-lite action flight simulator! Blow things up over land, sea, and air, on an infinite number of procedurally-generated islands. Choose one of a diverse set of aeros and kit it out with a dizzying array of weaponry. Go toe-to-toe with enemy aces or assault giant flying aircraft carriers, but watch out for volleys of missiles; when you die, you're dead.</p>
<p><a href="http://store.steampowered.com/app/381020/" rel="nofollow noopener" referrerpolicy="origin"><img src="https://i.imgur.com/ZD2uTs2.png" loading="lazy"></a> <strong>Steam key included! </strong>(EXCEPT as part of the Racial Justice Bundle, the Palestine Aid Bundle, or Bundle for Ukraine)<strong><br></strong></p>
<p>
<strong>If you buy the game here on itch.io, the team will see more of the money.</strong>
</p>
<p>
<strong><a href="http://www.rockpapershotgun.com/2014/02/11/blue-sky-fragging-sky-rogue/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Rock Paper Shotgun</a> says:</strong>
</p>
<p>
<em>"...it's a sweet little arcade shooter. It's immediately welcoming and then tougher than you'd expect..."</em>
</p>
<p>
<strong><a href="http://www.eurogamer.net/articles/2014-02-17-flight-of-the-kondor-sky-rogues-dogfighting-glory" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Eurogamer</a> says:</strong>
</p>
<p>
<em>"Speed and fury and wide open space: sat inside a Kondor - or even better, parked just behind it as it loops and snarls - air combat doesn't get much better."</em>
</p>
<p>
Talk with other players in the
<a href="http://www.reddit.com/r/skyrogue/" rel="nofollow noopener" referrerpolicy="origin">official subreddit, /r/skyrogue</a>!
</p>
<p>
Follow progress and bask in animated GIFs
<a href="http://skyroguegame.tumblr.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">on the devlog</a>!<span></span>
</p>
<p>
Programming: Kenny Backus (@nihilocrat)
</p>
<p>
Art: Charles Blanchard (@DelkoDuck)
</p>
<p>
Music: Phonetic Hero (Otherworld Agency)</p>
<p>
<strong>YOUTUBE / LET'S PLAY PEOPLE:</strong> Feel free to create, post, and monetize videos of Sky Rogue and any other game I make!
</p>
<p><strong>MODDERS: </strong>You can find the Steam Workshop Uploader here (scroll down to "Downloads":<br> <a href="https://github.com/nihilocrat/SteamWorkshopUploader" rel="nofollow noopener" referrerpolicy="origin">https://github.com/nihilocrat/SteamWorkshopUploader</a><br></p>
<p>You can quickly preview your changes without having to constantly restart the game using this tool:<br><a href="https://www.dropbox.com/s/flcwocfp259dbh0/skyrogue_mod_previewer.zip?dl=0" rel="nofollow noopener" referrerpolicy="origin">Sky Rogue Mod Previewer - Build 1</a><br></p>
<p>If you want to make "new"-style mods, creating asset bundles in the Unity engine, download the latest mod tool project files from its github page:<br></p>
<ul><li>Go to <a href="https://github.com/nihilocrat/SkyRogueModTool" rel="nofollow noopener" referrerpolicy="origin">https://github.com/nihilocrat/SkyRogueModTool</a></li><li>Click "Clone or Download" then "Download ZIP"</li></ul>
<p>Bugs reports, can be sent to <strong>support@skyroguegame.com</strong>
</p>
<p>Questions, comments, etc. can be sent to <strong>contact@skyroguegame.com</strong></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/RGFPwx31O7o" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3Lzc3Njk2MS5naWY=/original/mt55sP.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3Lzc3Njk2Mi5naWY=/original/Wo%2Bjq0.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3Lzc3Njk2NS5naWY=/original/Z1x8AX.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3LzY0MDA1LmdpZg==/original/SBi6Hi.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3Lzc3Njk2Ni5naWY=/original/YJdgI2.gif]]
<p><em>This work is based on the Slayers RPG (found at <a href="https://gilarpgs.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">gilarpgs.com</a>), product of Gila RPGs, developed and authored by Spencer Campbell, and licensed for use under the Creative </em><em>Commons Attribution 4.0 International license (<a href="https://creativecommons.org/licenses/by/4.0/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">creativecommons.org/licenses/by/4.0/</a>).</em></p>
<p><strong>Slayers of the Strange </strong>introduces 3 new Hunts and 2 new Classes for use with <a href="https://gilarpgs.itch.io/slayers" target="_blank">Slayers</a>. A copy of that game is required to use these.
</p>
<p>The Classes are the <strong>Guerrilla </strong> and the <strong>Knight</strong>. The Hunts are <strong>Cavities Beneath</strong>, a mission about stopping smugglers in the warrens beneath the city, <strong>The Trouble With Termites, </strong>which pits Slayers in the midst of an ongoing dispute between two factions of enormous insects, and <strong>Guardian of the Omphalos, </strong> an action-packed adventure that culminates in an escape from a collapsing library as Slayers leap from bookshelf to enormous bookshelf.</p>
<p>The new <strong>classes</strong>:
</p>
<ul><li>The <strong>Guerrilla</strong>, a short-range fighter whose boomerangs come back... unless they hit, of course. They use a large pool of inaccurate d4s.
</li><li>The <strong>Knight</strong>, who serves as a tank, absorbing damage taunting targets as they shift between different combat stances.</li></ul>
<p>For each of the classes, a new<strong> Tactician Expert Advance</strong> has been added as well.</p>
<p>The new <strong>Hunts:</strong></p>
<p><strong>Cavities Beneath </strong>is a straightforward, 4-page hunt that opens with Slayers hunting down a band of smugglers on behalf of a merchant. But there's a reason no one travels to the caverns beneath the City. That reason is because the caverns are well known to be infested with monsters, the kind that Don't Need Bothering on account of all the teeth. But the Slayers are about to learn that lesson firsthand...</p>
<p><strong>The Trouble With Termites </strong>is a 3-page hunt that offers something a little different. Rather than investigating a monster and beating it up, the Slayers are tossed into the middle of a business dispute. Only everyone else involved is an enormous insect. Can the Slayers bring peace to Bugtown?</p>
<p><strong>Guardian of the Omphalos </strong>is a 3-page hunt that closely mimics the structure of the Hunts you'd find in the Slayers book. The Slayers have a goal (tangential to monster hunting), and they need to get inside a forbidden place to accomplish that goal. Then the fun begins as that forbidden place (the center of an enormous library) begins to collapse. This adventure is an exercise in destructible set pieces, as Slayers knock over shelves to cross wide chasms and anger Librarians who just want to be left alone.</p>
[img width=500 [https://img.itch.zone/aW1nLzU2OTM2NzgucG5n/original/Z790XG.png]]
<p><strong>Story:</strong><br></p>
<p>Slimed is an action-platformer where you play as an extra terrestial slime captured by military agents testing your capabilies, show them just how weak there earth weapons are! <br></p>
<p><br></p>
<p><strong>Controls:</strong></p>
<p>Left arrow moves Left</p>
<p>Right arrow moves Right</p>
<p>Up arrow moves Up</p>
<p>Down arrow moves Down</p>
<p>When you go over a gap you will start to stretch, if you let go of all arrow keys or hit a wall while stretching you'll return to your previous position!</p>
<p>If you let go of the arrow keys when you're over a solid platform you'll land there instead. <br></p>
<p><br></p>
<p><strong>Level Editor:</strong></p>
<p>Slimed uses a map system made from Ascii characters, you can put you're own in the StreamingAssets folder located in the project .rar at run time and upon level restart you'll be greeted by the levels you want!</p>
<p>1. Navigate to Slimed_v0.9 on your PC
</p>
<p>2. Go into Slimed_Data and then SteamingAssets</p>
<p>3. Place you're file here with the naming convention "Level_XX" for 2 digit numbers or "Level_X" for 1 digit numbers, where x is the level number</p>
<p>4. Or open one of the existing files and edit it yourself using the legend here:</p>
<p>* = Fence</p>
<p>! = Fire off</p>
<p>~ = Fire warm</p>
<p>+ = Fire on!
</p>
<p>E = Goal</p>
<p>S = Player</p>
<p>. = Platform</p>
<p># = Pit</p>
<p>@ = Item</p>
<p>_ = Horizontal Rat</p>
<p>| = Vertical Rat</p>
<p>V = Downwards Turret</p>
<p>< = Leftwards Turret</p>
<p>> = Rightwards Turret</p>
<p>^ = Upwards Turret</p>
<p>All map files MUST have 3 digits at the top of the file as such: 7,7,x where x is the movement distance it takes to get to the exit, this calculates the star rating for a level. <br></p>
<p><br></p>
<p><strong>Credits:</strong><br></p>
<p>Game Created by Team Flubber:</p>
<p>Dillon Curry - Programmer</p>
<p>Tyron Wilmot - Programmer</p>
<p>Liam Halley - Designer</p>
<p>Animations and Models done by:</p>
<p>Alana Jonas</p>
<p>Misaki Brockman</p>
<p>Will Smith</p>
<p>Spencer Gibson</p>
<p>Jacob Schwarze</p>
<p>Jorge Aliaga</p>
<p>Sam Hilliard</p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzM2MDY0LzE2NjYxMTYuZ2lm/original/icmf29.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzM2MDY0LzE2NjYxMTguZ2lm/original/kPPmbW.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzM2MDY0LzE2NjYxMTkuZ2lm/original/9nmYd9.gif]]
<p><strong>content warnings: religious extremism, violence, suicide</strong></p><p>Of the things that came with the arrival of an alien being, the weakest of all of them are the slimes. Nobody knows what exactly these things are, but, as weak as they are, nobody's succeeded in destroying one of the dungeons from which they spawn.</p>
<p>Julius Anderson, a modern day crusader, takes the job of eradicating one of these slime dens. Hired on to help him is, well, Julius refuses to learn his name, on account of him being "diseased" with magic, but he's a healer. Through teeth-clenched teamwork, can the duo reach the bottom floor and destroy the source of the slimes?</p>
<p><strong>Demo 2 released 10/20/19!<br>Released as of 3/28/20!</strong></p>
<p>-----------------</p>
<p><strong>Features:</strong></p>
<ul><li>Two party members that hate each other.</li><li>Several floors of turn-based RPG action.</li><li>Small side stories for every floor you eradicate.</li><li>Level ups that only bestow skills that you may be more tempted to use as you progress.</li></ul>
<p>This game is available on <a href="https://store.steampowered.com/app/1313490/Slimes/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Steam</a>, but the itch.io version will always exist for people who are unable to pay. That said, I'd still appreciate it if you supported me. Paying $7 will entitle you to a bonus PDF, as well as a Steam key that I will e-mail to you!</p>
<p>---------------</p>
<p><strong>Credits:</strong></p>
<ul><li><strong>Music:</strong> Rrrrose/Soft and Furious</li><li><strong>Scripts: </strong>Yanfly, Zerbu, LoneWolf, Ixfuru, Hime, Craze</li><li><strong>Testers: </strong>John Thyer, Harry Petch</li><li><strong>Patreon Supporters:</strong> Alex, Caroline, Fang, hollowaytape, Julien, Alasdair, Rasen Bran, Sierra</li></ul>
<p>----------------</p>
<p>If you like this game, check out my latest game, <a href="https://scitydreamer.itch.io/i-hate-you-please-suffer" target="_blank">I Hate You, Please Suffer</a>!</p>
<p>----------------</p>
<p><strong>Q: What are the differences between the demo and the finished game?</strong></p>
<p>A: I documented some of the changes <a href="https://scitydreamer.itch.io/slimes/devlog/122387/gameplay-changes-to-expect-in-final-version" target="_blank">here</a>. I'm mainly keeping the demo download of the game around as a comparison point to the final game.</p>
<p><strong>Q: Is this game free?</strong></p>
<p>A: Kinda! The game is free but you can get a commentary PDF if you pay me money.</p>
<p><strong>Q: Haha, I thought you were some socialist/communist, yet you want people to pay you?</strong></p>
<p>A: Don't make me reference the Matt Bors comic.</p>
<p><strong>Q: How does this relate to other works?</strong></p>
<p>A: It takes place in the Fishing Minigame universe, far before the events of those games.</p>
<p><strong>Q: Why is your art like this?</strong></p>
<p>A: (shrug)</p>
<p><strong>Q: Why only three to four hours? RPGs should be dozens of hours long!</strong></p>
<p>A: I’m going to kill you.</p>
<p><strong>Q: Will this be on Steam?</strong></p>
<p>A: Yes! In fact, if you pay enough for this game here for the commentary PDF, you are also entitled to a Steam key when the Steam version goes up!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/8mc6gvwO968" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzQ4ODY0LzE3MzMxNjAucG5n/original/c45meR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ4ODY0LzE3MzMxNjEucG5n/original/uCIkNf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ4ODY0LzI2MTI2NjIucG5n/original/YHEgOR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ4ODY0LzI2MTI2NjMucG5n/original/aBUoet.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ4ODY0LzI2MTI2NjYucG5n/original/hwU9qm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ4ODY0LzI2MTI2NzAucG5n/original/lmBL%2BA.png]]
<p>Available for DOS and WINDOWS 95 PCs, it is the far future racing event of the 1990s! Race your Slip-craft through 16 exciting locations, from famous EARTH CITIES to the exotic distant dimensional rifts of FARFIELDS in this intense single player drifting speedfest!<br></p>
<p>This SHAREWARE title is available for free download, with the full game available for a modest fee! </p><p>Check out the soundtrack that comes with a DOS jukebox! <a href="https://martijnfrazer.bandcamp.com/album/slip-speed-original-soundtrack" rel="nofollow noopener" referrerpolicy="origin">https://martijnfrazer.bandcamp.com/album/slip-speed-original-soundtrack</a> </p><p>Physical boxed version!<br></p><p><a href="https://www.bitmapsoft.co.uk/product/slipspeed-deluxe-collectors-edition-msdos/" rel="nofollow noopener" referrerpolicy="origin">https://www.bitmapsoft.co.uk/product/slipspeed-deluxe-collectors-edition-msdos/</a><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/xi1FdXQ-w_Q" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NTcxLzI3MzMzNTEuZ2lm/original/elCo8V.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NTcxLzI3ODQ1MjMucG5n/original/akVZX2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NTcxLzMyNDE3NTUucG5n/original/DXTEWg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NTcxLzMyNDE3NjEucG5n/original/X9Hsg9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NTcxLzI3ODQ1MjUucG5n/original/IG%2B0gf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NTcxLzMyNDE3NTkucG5n/original/4E2Hfi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NTcxLzMyNDE3NTgucG5n/original/7VdndI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NTcxLzMyNDE3NTcucG5n/original/DIsR%2Fq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NTcxLzMyNDE3NTYucG5n/original/TX4IrL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTE3NTcxLzMyNDE3NjAucG5n/original/YARsas.png]]
<p>A road trip escaping the law.</p>
<p>A stellar search for intelligent life.</p>
<p>A sacred race in an ancient forest.</p>
<p>A cavalcade in the Wild West.</p>
<p>A dungeon crawl in search of treasures.</p>
<p>A marine exploration into the unknown.</p>
<p>An exotic journey to stop a strange cult.</p>
<p>A portrait of apocalyptic scavengers.</p>
<p><br></p>
<p>Eight nanogames tempered by the heat of the slow fire.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzY4OTkzLzQzMDI5MDIucG5n/original/H%2BEOlT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY4OTkzLzQzMDQwODMucG5n/original/ZNS6fO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY4OTkzLzQzMDI5MDQucG5n/original/mZEXLP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY4OTkzLzQzMTQwNDMucG5n/original/YRucTI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY4OTkzLzQzMDI5MDUucG5n/original/wAPKpD.png]]
<h2>THE GAME</h2>
<p><em><strong>Smoke, Fuel, & Fire</strong></em> is a game you play with friends to create unique and exciting characters living in a community of diverse factions. It is a game built using the <em><a href="https://possible-worlds-games.itch.io/bfb" target="_blank">Beak, Feather, & Bone</a></em> engine created by <a href="https://www.possibleworldsgames.com/" target="_blank" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">Tyler Crumrine</a>, but with new and unique twists.<br></p>
<p><a href="https://twitter.com/MadeleineEmber" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Madeleine Ember</a> has created a beautiful series of character portraits that provide a jumping off point for the people that exist in your group’s community. They’re evocative, diverse, and lovely.
</p>
<p>Playing <em>SF&F</em> involves a game of turn based prompts, a standard deck of cards with the jokers <em>left in</em>, and two pages of beautifully crafted portraits.
</p>
<p>You’ll begin by <strong>creating factions</strong> and <strong>drawing a hand of cards.</strong> One person can play a card to claim a character, describing the ways they belong to the player’s faction with three sentences: <strong>smoke (how they’re recognized), fuel (what they do), and fire (why they do it)</strong>. After this, other players can <strong>bid cards from their own hand </strong>to tie their own factions to that same character.
</p>
<p>At the end of the game, you’ll have a host of characters being pulled in all directions from the most important factions in the community.
</p>
<p><em>SF&F</em> also includes rules for creating these factions yourself, and these rules are universal and adaptable enough that you can take them to other games you play, including into <em>Beak, Feather, & Bone.</em> With a playthrough of both games—in either order—you could fill out the map of a community <em>and </em>the people that exist within it.
</p>
<p>The game also includes a host of supplemental rules, letting you adapt your playstyle to whatever works best, including:
</p>
<ul><li>Solo play.
</li><li>Creating player characters for an RPG campaign and connecting them to the characters you’ve made.
</li><li>Random faction generation.
</li><li>Using different portraits, including ones you can’t color in.
</li></ul>
<h2>SUPPLEMENTARY MATERIAL</h2>
<p>You can quickly generate factions online! I’ve put the generation tables on perchance.org, making them easily accessible for use with <em>SF&F</em> and other games. You can find them <a href="https://perchance.org/smoke-fuel-fire" target="_blank" rel="nofollow noopener" referrerpolicy="origin">here</a>. As time goes on, more and more options will be added to the online version of the generators, further expanding the possibilities.
</p>
<p>If you’re looking to try different portraits, I’ve outlined some suggestions below. The following art was <em>not </em>made for <em>SF&F</em>, and the artists are not affiliated with the game. These are pieces I like and I highly encourage you to check them out:
</p>
<p><a href="https://twitter.com/EvlynMoreau" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Evyln Moreau</a>’s <a href="https://www.patreon.com/evlynmoreau/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">patreon page</a> has a wealth of art, almost all of it in an enchanting black and white style that can easily be adapted to <em>Smoke, Fuel, & Fire.</em>
</p>
<p>If you’d like to set your community in a bit of a weirder, grungier setting, <a href="http://thomas-novosel.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Thomas Novosel</a> has two stunning portrait packs: <a href="https://thomasnovosel.itch.io/66-grungy-rpg-character-portraits" target="_blank">66 Grungy RPG Character Portraits</a> and <a href="https://thomasnovosel.itch.io/60-more-grunge-character-portraits" target="_blank">60 More Grunge Character Portraits</a>.
</p>
<p>You might be creating a community in a science-fiction setting, and for that you will find <a href="https://ashen-victor.itch.io/" target="_blank">Ashen Victor</a>’s <a href="https://ashen-victor.itch.io/sci-fi-character-portraits-poject" target="_blank">Sci-Fi Character Portraits Project</a> to be immensely helpful and perfectly suited to color in.
</p>
<h2>COMMUNITY COPIES</h2>
<p>I believe that everyone who wants to play <em>SF&F</em> should be able to do so. If there’s any reason you can’t afford the game at this time, please take one of the community copies provided. If you do, you can support the game by rating it here, telling others about it, or just playing it with your game group. Each time someone purchases the game, I’ll add another copy to the pool.
</p>
<p>If you’ve played <em>Smoke, Fuel, & Fire,</em> I’d love to hear from you! You can reach out in the comments, or find me on Twitter: <a href="https://twitter.com/eldritchmouse" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@eldritchmouse</a>. I hope you enjoy the game and create many fascinating characters and communities with it.</p><h2>NEWSLETTER</h2><p>If you'd like to hear more from me—about the games I'm making and playing, consider signing up to the <a href="https://mailchi.mp/22c67ddb6a45/mindstormpress" target="_blank" rel="nofollow noopener" referrerpolicy="origin">mindstorm</a>, my semi-regular newsletter!</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzkwNi81OTA4NDM1LmpwZw==/original/ZW3YHd.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzkwNi81ODk2MzcyLmpwZw==/original/LT9Tm3.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzkwNi81ODk2MzczLmpwZw==/original/nZt2jt.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzkwNi81ODk2Mzc0LmpwZw==/original/Lj%2BhS5.jpg]]
<iframe width="100%" height="400" src="https://www.youtube.com/embed/RMUgWMrCxvA?ecver=2" frameborder="0" allowfullscreen=""></iframe>
<p><br></p>
<p>Snake vs Snake is a fast paced snake game with an insane battle mode with Mario Kart style power-ups and much more. Inspired by old classical Snake but with a much faster arcade pace and local multiplayer support.</p>
<h3>Local Multiplayer</h3>
<p>1 - 6 Players can battle it out in the battle mode. Use power-ups to defeat the other Snakes. Got no one to play with? Don't worry you can play against Snake AI players.</p>
<h3>Online Multiplayer?</h3>
<p>The game itself doesn't support multiplayer but works well with services like Parsec where you can play online with your friends.</p>
<h3>Leaderboard</h3>
<p>Compete with other players from around the world and reach the #1 spot. Prove once and for all that you are the best Snake player in the world.</p>
<h3>Classical endless mode</h3>
<p>Fun like in the good old days; just keep going as long as you can.</p>
<h3>Level mode</h3>
<p>Beat puzzle inspired levels by collecting all apples. Don't hit any of the walls. Sounds easy? Well it's not as easy as it sounds!</p>
<h3>Speed run support</h3>
<p>Beat all levels as fast as possible and see if you can become the fastest player in the world. <br></p>
<h3>Controls</h3>
<p>Works with gamepad & keyboard, yes 4 players on the same keyboard, it's crazy but fun :)</p>
<h3>Platforms</h3>
<p>Available on <a href="https://www.nintendo.com/games/detail/snake-vs-snake-switch" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Nintendo Switch</a>, <a href="https://www.microsoft.com/store/apps/9PPSVCWL6T0H" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Xbox One</a>, <a href="https://store.steampowered.com/app/1005310/Snake_vs_Snake/" rel="nofollow noopener" referrerpolicy="origin">PC, Mac & Linux</a></p>
<p><a href="https://www.nintendo.com/games/detail/snake-vs-snake-switch" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzE1ODM0NTkucG5n/original/bye0Lw.png" width="75px" loading="lazy"></a> <a href="https://www.microsoft.com/store/apps/9PPSVCWL6T0H" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzE1ODM0NjAucG5n/original/LIs%2BAF.png" width="75px" loading="lazy"></a> <a href="https://www.microsoft.com/store/apps/9PPSVCWL6T0H" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzE1ODM0NjIucG5n/original/PuL%2F7k.png" width="75px" loading="lazy"></a> <a href="https://store.steampowered.com/app/1005310/Snake_vs_Snake/" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzE4NzAyODUucG5n/original/%2FHx6ol.png" width="75px" loading="lazy"></a> <br></p>
<p><strong>Are you the best Snake player in the world? PROVE IT! </strong></p>
<h4>Keyboard layout</h4>
<p>If you play with keyboard these are the keys and yes you can play 4 people on the same keyboard. <br></p>
<p><strong>P1 Keyboard</strong><br>WASD: move<br>Left shift: powerup 1<br>Left CTRL: powerup 2</p>
<p><strong>P2 Keyboard</strong><br>Arrow keys: move<br>Right shift: powerup 1<br>Right CTRL: powerup 2</p>
<p><strong>P3 Keyboard</strong><br>Numpad 8,4,6: move<br>Numpad 0: powerup 1<br>Numpad ,: powerup 2</p>
<p><strong>P4 Keyboard</strong><br>uhjk: move<br>i: powerup 1<br>o: powerup 2</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/RMUgWMrCxvA?ecver=2" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjY2OTI4LzE2NjU5NzYuZ2lm/original/3u1iPp.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY2OTI4LzE5NzEzNTQuZ2lm/original/nX4ecE.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY2OTI4LzE1ODM0NDQuZ2lm/original/Zc1VE6.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY2OTI4LzE1ODM0NTMuZ2lm/original/uMljU%2B.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY2OTI4LzE1ODM0NTQuZ2lm/original/SUZH17.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY2OTI4LzE0MzE1OTgucG5n/original/h292XU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY2OTI4LzE1ODM0MDQucG5n/original/4l7WGz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY2OTI4LzE1ODM0MDYucG5n/original/T7ZMJj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY2OTI4LzE1ODM0MDIucG5n/original/5LEA3C.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY2OTI4LzE1ODM0MDcucG5n/original/sPm5A2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY2OTI4LzE1ODM0MDUucG5n/original/sZRgkv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY2OTI4LzE1ODM0MDEucG5n/original/VDhQ6O.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY2OTI4LzE1ODM0MDgucG5n/original/3L8EwA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY2OTI4LzE1ODM0MDkucG5n/original/8%2FsOga.png]]
<p>(Oct-10-2019) - UPDATE 1.0.0.1:</p>
<ul><li>Dramatically decreased popping volume of small blue score balloons</li><li>Regressed control time bug in which players could regain time faster by repetitively pushing the left stick in any direction over and over.</li><li>Added additional details and names to the credits text document file.</li></ul>
<h1 class="text-center">Summary:</h1>
<p class="text-justify text-center">No control? No worries!</p>
<p>Ride inside one of 50 inflatable tubes that stick and ride together as one on contact all the way to the bottom of one tall mountain through multiple winding routes and areas! Pop as many balloons as possible to gain the most points as you race to the bottom! Playable with up to four players via local splitscreen, Snowdown boasts a casual pick-up-and-play focus with a low barrier to entry!</p>
<p class="text-center">Remember: the only way is down! </p>
<p class="text-center"><del> </del></p>
<h3 class="text-center">Instructions:</h3>
<p>Players each have a yellow Control Timer on their screen that slowly replenishes by itself when they aren't moving around. The higher the timer gets, the more control they can exert over their inflatable tube. However, when they start to move around, the timer will start to tick down to zero at which point they won't be able to move at all for a certain amount of time.</p>
<p class="text-justify">Riding through a Time Gate will grant more control time back for players who are able to reach it ahead of others and riding through yellow Hazard Rings will set a trap in one of the 36 different zones for other tubes currently riding through it! Players then get to watch the event play out in real time on a giant screen as the trapped tubes are scrambled in the chaos!</p>
<p class="text-justify">Inspired by rollercoaster action chase films, classic arcade titles of the 1990s and modern Battle Royale games, Snowdown is designed to exhibit a more "chilled-out" approach to traditional concepts of game flow, complimenting an idle brand of party atmosphere, allowing players the freedom to step back and let a session play out by itself and return later on or even let someone else take over if they so choose.</p>
<p class="text-center"><del> </del><br></p>
<p class="text-justify">So hop in and crash, bash and slide your way into the biggest racing mosh ten thousand feet above! Hold on tight...now let go!</p>
<p class="text-justify">If you encounter any issues, feel free to leave any suggestions or feedback with a comment. Feel free to also get in touch via the Twitter handle @BonsaiTreehouse where you can catch up on general game devlopment news and all the goings on in the world!</p>
<p class="text-center"><del> </del><br></p>
<h1 class="text-center">CONTROLS:</h1>
<h3 class="text-center">Gamepad In-Game:</h3>
<ul><li>Left Option = PAUSE</li><li>Left Stick = STEER</li><li>D-Pad = LOOK AROUND</li></ul>
<h3 class="text-center">Keyboard In-Game:</h3>
<ul><li>P = PAUSE</li><li>A = STEER LEFT</li><li>Q = LOOK LEFT</li><li>D = STEER RIGHT</li><li>E = LOOK RIGHT</li><li>W = LOOK UP</li><li>S = LOOK BEHIND</li></ul>
<h3 class="text-center">Keyboard In-Menus:</h3>
<ul><li>Arrow Keys: Toggle UI Buttons</li><li>Space Bar/Enter: Confirm Selection</li></ul>
<h3 class="text-center">Gamepad In-Menus:</h3>
<ul><li>D-Pad/ Left Stick: Toggle UI Buttons</li><li>Lower Face Button: Confirm Selection</li></ul>
<p class="text-center"><del> </del><br></p>
<p class="text-center">Snowdown uses Unreal® Engine. Unreal® is a trademark or registered trademark of Epic Games, Inc. in the United States of America and elsewhere. Unreal® Engine, Copyright 1998 – 2019, Epic Games, Inc. All rights reserved.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/7PFTxU3g0Uc" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2MzcucG5n/original/N0a1wj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NTguanBn/original/7kRBYZ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NDEucG5n/original/huifVm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NTIucG5n/original/h9gUYF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NjAuanBn/original/Ls9EW0.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NDAucG5n/original/W6hYlC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NDYucG5n/original/zbv4qY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NDgucG5n/original/ULjjDZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NTYuanBn/original/Oz9NGh.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NDcucG5n/original/b3HLv%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NDUucG5n/original/8rwUWr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NjEuanBn/original/3gPo4x.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NDIucG5n/original/HLM9oO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NDMucG5n/original/bMaFw4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NTUuanBn/original/d%2BOpL9.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2MzkucG5n/original/F95VyQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NTMucG5n/original/dDh%2Fbn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NTEucG5n/original/rK9CvU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NTcuanBn/original/uBmL2J.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NDQucG5n/original/QGuWci.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NDkucG5n/original/%2FoM9At.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NTkuanBn/original/wKyFPq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2MzgucG5n/original/BOV8v4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NTAucG5n/original/fJ3hQH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4ODgwLzI2NDU2NTQucG5n/original/jE%2BXQ3.png]]
<p>You play as a mismatched sock. Your other half, your soul mate is gone. You know you've been separated in the basket of dirty laundry. She had a big plan for you two, but she was waiting to be in the dryer to tell you everything.
</p>
<p>She had many secrets and you understood this need for distance between you. It suited both of you. But now, it's been five machine cycles now since she left. You've decided to go get her. With a team of bottom-of-the-box socks, mismatched for years and they don't fear the opposition, you will go looking for him.</p>
<p>Why i need to buy it ? because one or two euros, or dollars, or GP, is few for you and big for me. i dream to live with my creation. "You may say i'm dreamer... but i'm not the only one"<br></p>
<p></p>
[img width=500 [https://img.itch.zone/aW1nLzYwMDIyMzIucG5n/original/pdlPgw.png]]
<p>a game for the <a href="https://itch.io/jam/carta-jam">carta jam</a>, featuring the <a href="https://peachgardengames.itch.io/carta-srd">carta srd</a> by <a href="https://peachgardengames.itch.io">peach garden games</a>. i was several days too late to submit lol<br></p>
<p>requires any die, a 52-deck of cards, a token, and place to tally. (or you can just read the story text without these materials, i guess!)<br></p>
<p><br></p>
<p>soft_bwprint.pdf is for printing on US letter-sized paper.</p>
<p>soft_screen.pdf is for using with your screen. it has colour and a gallery of images! (recommended)<br></p>
<p><br></p>
<p>PAYMENT:</p>
<p>i am personally uncomfortable with payment for my work, but Peach Garden Games encourages it. here are options I am comfortable with:</p>
<p>1. pay it forward. donate to charity. do something nice. something along those lines. but don't brag about it to anybody, not even me.<br></p><p>2. if you're part of this Carta Jam, a barter works for me. i will also accept solo ttrpgs not included in the <a href="https://itch.io/b/770/solo-but-not-alone">Solo But Not Alone</a> bundle (I already have it), but just know i'm prioritising the games in the bundle <a href="https://oliverblueberry.neocities.org/quest/about.html" rel="nofollow noopener" referrerpolicy="origin">and writing about them</a>.</p>
<p>3. something from my <a href="https://bandcamp.com/lickcakes/wishlist" rel="nofollow noopener" referrerpolicy="origin">bandcamp wishlist</a>. this way you are paying an artist who is comfortable accepting money, plus the bonus that i will think of you everytime i listen to that album. <a href="https://itch.io/c/120299/witchlist">my itch.io wishlist</a> is okay too, but i usually only play games once.</p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1nLzU5NjU2OTIucG5n/original/uxq3A4.png]]
<p><a href="http://www.sokobond.com/" rel="nofollow noopener" referrerpolicy="origin">www.sokobond.com</a></p>
<p>
Sokobond is an elegantly designed puzzle game about chemistry. It's logical, minimalist, and beautiful - crafted with love and science.
</p>
<ul>
<li>Over 100 levels of molecule making mind-benders </li>
<li>Featuring a gorgeous original soundtrack by Allison Walker</li>
<li>No chemistry knowledge required</li>
</ul>
<p>
Awards:
</p>
<ul>
<li>PAX10 2013 - Finalist</li>
<li>IndieCade 2013 - Finalist</li>
</ul>
<p>
All purchases include a Steam key.
</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTc5OTkvNjc5MDIucG5n/original/KftGLP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc5OTkvNjc4OTcucG5n/original/sLTqcg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc5OTkvNjc5MDMucG5n/original/NH95%2BB.png]]
<p>Solace State is a 3D cyberpunk visual novel about a young hacker, Chloe, who comes to her political awakening as she seeks her friends in a biotech surveillance society. Your choices in intimate conversations, the kindling of relationships, and escalating tensions lead to multiple endings.</p>
<p><strong><em>Change the personal, revolutionize the political.</em></strong></p>
<ul><li>A dynamic storytelling experience where the camera “hacks” through architectural city environments to reveal key story information, written onto the 3D space<br>
</li><li>Fashionable, hand-painted characters and urbanscapes</li><li>Choices matter: Your negotiation prowess and manipulation of people's data influence how much freedom can foster in the East-Asian inspired metropolis, how you can retain your friends and even let a touch of romance bloom<br>
</li><li>A deeply emotional story that balances the future of diverse characters from all walks of life<br>
</li><li>A dynamic trip-hop and Kpop-inspired soundtrack that sets the edgy, youthful atmosphere<br>
</li></ul>
<p><strong>Minimum system requirements: </strong></p>
<ul><li> Windows 7</li><li>2.4 GHz Core 2 Duo</li><li> 8 GB RAM</li><li>GeForce GTX 860M</li><li>2 GB available space</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/PwSM8DjzrWE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NzQ1Ni81OTg3NzMzLmdpZg==/original/EbggNz.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NzQ1Ni81OTg3NzgwLmdpZg==/original/HGpPdG.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NzQ1Ni81OTg3ODAxLmpwZw==/original/iEdVlf.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NzQ1Ni81OTg3Nzk2LnBuZw==/original/3zGyqh.png]]
<p>
a beautiful danmaku or bullet hell . In this challenging game go up against a barrage of enemy ships after finding your home world destroyed.
</p>
<p>
-Fly your ship between thousands of enemy attacks in 8 beautiful levels
<br>
-Power ups allow more guns and faster shooting
<br>
-Shields to protect you from some of the worst attacks.
</p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjMxNDUvOTE4NzAuZ2lm/original/m4Ugt6.gif]]
<p><strong>Full Game Out now! </strong></p>
<p>Slide on your tail, charge at robotic pumpkins, and collect every golden scarf as fast as you can in Sole Iron Tail!</p>
<p><img src="https://img.itch.zone/aW1nLzczNjg2MTYuZ2lm/original/RD0idm.gif" loading="lazy"><br></p>
<p><strong>Features:</strong></p>
<ul><li>A cute, but challenging single-player adventure consisting of 5 tales featuring a cast of friendly characters and giant foes!</li></ul>
<ul><li>Charge, Slide, Surf, and Hover with various mechanics!<br>
</li></ul>
<ul><li>Tons of scarves and badges to collect for 100%!</li><li>Face chatty characters in time trials!</li></ul>
<p><img src="https://img.itch.zone/aW1nLzczNjg2MTkuZ2lm/original/n6m7T0.gif" loading="lazy"><br></p>
<p><strong>Story:</strong><br>A sole, single Iron Tail has been tracked down within the Snowy Tundra! With the persistent, plundering Pumpkin Co. on their tail, the Iron Tail is losing hope in finding their family. A glimmer of hope appears when some mysterious Stranger creates a path of Golden Scarves, a path that spans snowy slopes, icy icebergs, assaulting airships, and possibly leads to family! But watch out! Your being tracked by something bigger than just Pumpkin Co.. As the Iron Tail, is your special tail slide-ey enough, charg-ey enough, and Iron-ey enough, to reach the last Golden Scarf? Are there any more Iron Tail's out there?</p>
<p><br></p>
<p><a href="https://drive.google.com/drive/folders/1XdKDM_FvUXlvq_QjuD0qCNLrRPZNQhIy?usp=sharing" rel="nofollow noopener" referrerpolicy="origin">PRESS KIT</a>
</p>
<p><strong><a href="https://store.steampowered.com/app/1252190/Sole_Iron_Tail/" rel="nofollow noopener" referrerpolicy="origin">WISHLIST + TRY DEMO ON STEAM!</a></strong>
</p>
<p><a href="https://discord.gg/ZAtbubv" rel="nofollow noopener" referrerpolicy="origin">DISCORD TOO!</a>
</p>
<p>Follow on twitter! <a href="https://twitter.com/SoleIronTail" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/SoleIronTail</a></p>
<p></p>
<figure><img src="https://img.itch.zone/aW1nLzI5OTg2NzgucG5n/original/vjiIM0.png" loading="lazy"><br></figure>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/PVMK9AVTYt4" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzQ1MjYxLzI5OTg2NzMucG5n/original/VfC38J.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ1MjYxLzI5OTIxMTIucG5n/original/lRvl77.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ1MjYxLzI5OTIxMjIucG5n/original/SoRc8e.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ1MjYxLzczODU3MjQucG5n/original/iTmEDb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ1MjYxLzczNDkwNDQucG5n/original/NF1M4u.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ1MjYxLzczNDkwNDgucG5n/original/V8xRoH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ1MjYxLzc5MDMzMjMucG5n/original/qUzPPO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ1MjYxLzI5OTIxMDkucG5n/original/UlpUSQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ1MjYxLzczNDkwOTUucG5n/original/tmCD3P.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ1MjYxLzI5OTIxMTAucG5n/original/jpK%2Fef.png]]
<p>WELCOME COOL INDIE BUNDLE SUPPORTERS!</p>
<p><br></p>
<p>Slide on your tail, charge at robotic pumpkins, and collect every golden scarf as fast as you can in Sole Iron Tail!<br></p>
<p><strong>Features:</strong></p>
<ul><li>A cute, but challenging single-player adventure consisting of 5 tales featuring a cast of friendly characters and giant foes!</li></ul>
<ul><li>Charge, Slide, Surf, and Hover with various character and level mechanics!</li></ul>
<ul><li>Beat those times on the leaderboard through time-attack!</li></ul>
<p><br></p>
<p><strong>Story:</strong><br>As the last known Iron Tail (a creature with a large, metallic cup on the end of its tail), the evil Pumpkin Army is hunting for your species! There is a glimmer of hope though, as a mysterious stranger covered in gold scarves guides you throughout the Tundra. Using your special tail, can you slide and charge fast enough to see the end of the Golden Stranger’s trail, all the while defeating the evil robots of the Pumpkin Army, as well as the mind-controlled animals who may be more innocent, and special, than they first appear to be?</p>
<p><br></p>
<p>The game is still in development, with a planned release of <del>Spring</del> Summer 2021.<br></p>
<p><a href="https://drive.google.com/drive/folders/1XdKDM_FvUXlvq_QjuD0qCNLrRPZNQhIy?usp=sharing" rel="nofollow noopener">PRESS KIT</a>
</p>
<p><strong><a href="https://store.steampowered.com/app/1252190/Sole_Iron_Tail/" rel="nofollow noopener">WISHLIST + TRY DEMO ON STEAM!</a></strong>
</p>
<p><a href="https://discord.gg/ZAtbubv" rel="nofollow noopener">DISCORD TOO!</a>
</p>
<p>Follow on twitter! <a href="https://twitter.com/SoleIronTail" rel="nofollow noopener">https://twitter.com/SoleIronTail</a></p>
<p></p>
<figure><img src="https://img.itch.zone/aW1nLzI5OTg2NzgucG5n/original/vjiIM0.png" loading="lazy"><br></figure>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/-FWeQgltxZA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzQ1MjYxLzI5OTg2NzMucG5n/original/VfC38J.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ1MjYxLzI5OTIxMTIucG5n/original/lRvl77.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ1MjYxLzI5OTIxMjIucG5n/original/SoRc8e.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ1MjYxLzI5OTIxMTAucG5n/original/jpK%2Fef.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ1MjYxLzI5OTIxMDkucG5n/original/UlpUSQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ1MjYxLzI5OTIxMTQucG5n/original/6wSl29.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ1MjYxLzM1NDI2MDMucG5n/original/GpPetz.png]]
<p><strong>Origins</strong><br></p>
<p>Solipstry was originally created as an attempt to merge the best parts of D&D 4e (tactical combat, meaningful choices, a reasonable number of skills) with the best parts of D&D 3.5 (emphasis on roleplay, enough choices to matter, powerful abilities not restricted by class). Since then, it has shed its D&D roots and become a system of its own (You can still see these influences in some areas).</p>
<p><strong>Mechanics<br></strong>Solipstry does not have classes. It is a skill-based game, where every time you succeed in using a skill, you get better at using it. Because you can pick which skills to emphasize, you can make your own "class" by combining different sets of skills. You also have abilities, which cost points. How many points you have total is determined by one attribute, while their regen rate per turn is governed by another. No more having to judiciously manage your most powerful spells for the day! <br></p>
<p>For those that want a little more control, the Luck attribute allows you to re-roll dice, avoid fail-by-one scenarios, or just add a little more oomph to your damage when the time really matters. <br></p>
<p>Our damage system uses multipliers to maintain consistent averages, while emphasizing interesting effects. On a normal roll of 3d8, you have the most chance of getting around 14 points of damage, while 3 and 24 would be outliers. In Solipstry, we inverted those odds, so you are more likely to get an extremely high or low result, rather than consistently average.</p>
<p><strong>Who is it for?<br></strong></p>
<p>Solipstry is simple enough for beginners to grasp, but complex enough for veterans to wet their hands and stay entertained. Our goal was to give DMs the freedom and flexibility to create whatever world they want to make and tell their own stories. Solipstry can be played in ANY setting. We have mechanics that are flexible enough, without bogging you down with supplements and point-buy tales. Try it out! </p>
<p>For more information, see our 2016 <a href="http://" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Kickstarter</a>.</p>
<p><br><strong>Chronicle<br></strong>The Chronicle is technically a collection of monsters, but it is <strong>in no way required to play. </strong>The Solipstry core book has everything you will ever need to play, including sample monsters and instructions on how to create your own. The Chronicle is mostly lore and descriptions about how you might bring various monsters to life in your own game world. It includes quotes from people who've fought bears, seen ghosts, and encountered stranger and more outlandish creatures, varying from Network Spikes seen while hacking, to reality-bending Errata, supervillains, and more. You can find it on this project, or <a href="https://alrine.itch.io/the-chronicle" target="_blank">listed separately</a>.<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MTI2LzY0MTU3ODEucG5n/original/ISmT6Z.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MTI2LzY0MTU3ODYucG5n/original/h%2B7blY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MTI2LzY0MTU4MDAucG5n/original/QNaGHb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5MTI2LzY0MTU4MTIucG5n/original/CYWUfO.png]]
<p><iframe src="https://www.youtube.com/embed/kkGLecbXX-w" allowfullscreen="" width="500" height="281" frameborder="0"></iframe><span></span><strong><br></strong></p>
<p><strong>Being a shepherd is my escapist fantasy. </strong>I don't really want to be a shepherd, I know it's no easy job. But there are some moments where I just want to leave making computer games behind. Do real work with my hands. SOLITUNE is about these moments. Being not yourself. Wanting to leave.
</p>
<p>
Move from space to space and help out the others.
</p>
<p>
Every room has a unique song by
<strong><a href="https://ludwig-hanisch.de" rel="nofollow noopener" referrerpolicy="origin">Ludwig Hanisch</a></strong>!
</p>
<hr>
<p>
<em><strong>"They show me something weird and/or surprising I'd not seen before.</strong></em><em><strong> It's awful pretty too.<span></span>" ~ by <a href="https://www.rockpapershotgun.com/2016/11/22/solitude-released/" rel="nofollow noopener" referrerpolicy="origin">Alice O'Connor on RPS<br>
</a></strong></em>
</p>
<p>
<strong><em>"With any luck, either Reinhardt or someone who plays her game, can turn that fantasy into a reality." ~ by <a href="https://killscreen.com/articles/solitude-wants-help-escape-hell-media/" rel="nofollow noopener" referrerpolicy="origin">Chris Priestman on Killscreen<br>
</a></em></strong>
</p>
<p>
<em><strong>"All of this is delightfully strange." ~ by <a href="http://indiegames.com/2016/11/solitude.html" rel="nofollow noopener" referrerpolicy="origin">Thomas Faust on indiegames.com</a></strong></em>
</p>
<p>
<em><strong>"I bloody love the look of it." ~ by <a href="http://www.pcgamer.com/solitude-an-isometric-curio-about-escapism-and-shepherding/" rel="nofollow noopener" referrerpolicy="origin">Tom Sykes on PCGamer.com</a>
</strong></em>
</p>
<hr>
<p>
Find the blog with all my inspirations and WIP pictures
<strong><a href="http://solitudegame.tumblr.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">here</a></strong>. If you want to know anything about why we created a shepherd game, <a href="http://ratking.de/blog/2016/11/22/solitude/" rel="nofollow noopener" referrerpolicy="origin">read this post</a>.<br>
</p>
<p>
<strong>Design and idea: <a href="https://twitter.com/RottenHedgehog" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@RottenHedgehog</a><br>
Programming:
<a href="https://twitter.com/ratkingslair" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@RatKingsLair</a></strong><br><strong>Portuguese translation: </strong>Mariana Martins<strong><a href="https://twitter.com/ratkingslair" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><br>
</a></strong>
</p>
<hr>
<p>
<em>The game is around 20-30 minutes long. If you liked SOLITUNE, you might be also interested in <a href="https://ratking.itch.io/wood-for-the-trees">Wood for the Trees</a> (free)!</em><br>
</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/kkGLecbXX-w" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTgxOTIvNDU5ODM4LmpwZw==/original/vjxFsM.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgxOTIvNDU5ODM3LmpwZw==/original/Fz9UVd.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgxOTIvNDU5ODM0LmpwZw==/original/XR84vc.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgxOTIvNDU5ODM2LmpwZw==/original/QBoiQr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgxOTIvNDU5ODM1LmpwZw==/original/Kyu%2Bck.jpg]]
<h2>Story</h2>
<p><strong>Lyra</strong>, a gun-witch living at the border, a place marked by destruction and supernatural phenomenons, is tasked to take a duo of magical girls across the land to try and save the world.<br>All the while, she gets to know them, becomes friends with them, and maybe, just maybe see that there's more to life.</p>
<h2>Characters</h2>
<p><img src="https://img.itch.zone/aW1nLzU1OTUzNzIucG5n/original/qtLv%2Fy.png" loading="lazy"></p>
<h2><img src="https://img.itch.zone/aW1nLzU1OTUzODMucG5n/original/tgfToU.png" loading="lazy"></h2>
<h2><img src="https://img.itch.zone/aW1nLzU1OTUzODQucG5n/original/1uPTqo.png" loading="lazy"></h2>
<h2><img src="https://img.itch.zone/aW1nLzU1OTUzODcucG5n/original/LxbOQ%2F.png" loading="lazy"></h2>
<h2>Credits</h2>
<p><strong>Art</strong>: <a href="https://akua.carrd.co/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Akua</a><br><strong>UI</strong>: <a href="https://twitter.com/khailzs" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Khailz</a><br><strong>Writing</strong>: <a href="https://tangledvirus.itch.io/" target="_blank">TangledVirus</a><br><strong>Backgrounds</strong>: Some from <em>Pexels</em> and others from <a href="https://spacetwinks.itch.io/" target="_blank"><em>Spacetwinks</em></a> photography collections, <em>A Place Without Bodies vol.1 and 2</em>.<br><br><em>Special thanks to Ranceko and Jams.</em></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTgxNzM1LzU1ODM1NjMucG5n/original/0uVyBU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgxNzM1LzU1ODM1ODgucG5n/original/%2BLr3P4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgxNzM1LzU1ODM1OTgucG5n/original/DjhAsC.png]]
<p><img src="https://img.itch.zone/aW1nLzE2MTAxMDEuZ2lm/original/R7qksJ.gif" loading="lazy"><br><br>SOMOS is an action-arcade game with minimalist visuals, where movement is key to solving procedurally generated, living puzzles. Players switch their avatar between each side of the screen to avoid and/or destroy procedurally generated obstacles. Interacting with anything that is on the same side of the screen as the player's avatar will force the player to move to the other side, creating fast-paced puzzle solving.</p>
<p><img src="https://img.itch.zone/aW1nLzE2MTAxMDIuZ2lm/original/FICM%2FT.gif" loading="lazy"><br><br>The core of the game is the many challenges that the player will have to accomplish. Each of them twisting the rules of the game to keep the experience fresh and interesting. Completing challenges unlocks new vibrant colour palettes which players can explore in the competitive Endless mode or Relaxation mode of the game.</p>
<p><img src="https://img.itch.zone/aW1nLzE2MTAxMDMuZ2lm/original/I%2F0cFS.gif" loading="lazy"><br><br>SOMOS is designed for PC and mobile, and suitable for advanced and casual gamers. It is available in English, French, German, Italian, Spanish and Turkish.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/XUuMDh4180o" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTc0NTUwLzgxNDU0My5wbmc=/original/CankQm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc0NTUwLzgxNDU0NC5wbmc=/original/XIeYSx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc0NTUwLzgxNDU0Ni5wbmc=/original/xdZIb2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc0NTUwLzgxNDU0NS5wbmc=/original/2%2Bw1QP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc0NTUwLzgxNDU0Ny5wbmc=/original/YcSzyu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc0NTUwLzgxNDU0OC5wbmc=/original/njBiYY.png]]
<p>You know how dating sims usually have an eccentric friend characters who help you progress through the game?</p>
<p>This is a game where you play as one. </p>
<p><em>Songs and Flowers </em>is a lighthearted, fun story about befriending people and learning about them as you get closer.</p>
<p>The two love interests are:</p>
<figure><img src="https://img.itch.zone/aW1nLzI4Njc0MzQucG5n/original/Gq4o8U.png" style="max-width: 100%" loading="lazy">
</figure>
<figure><img src="https://img.itch.zone/aW1nLzI4Njc0NDEucG5n/original/ueDsg6.png" style="max-width: 100%" loading="lazy"></figure>
<p>Features</p>
<ul><li>Befriend and maybe date either an angelically-innocent cutie or a teasing, flirting devil</li><li>Two routes with two endings each</li><li>Unique backgrounds and sprites</li><li>Music from <a href="http://bensound.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Bensound.com</a></li><li>Main character has a sprite for evil laughter</li><li>40,000-ish words</li><li>9 bonus stories and 14 profiles</li><li>Developer's notes</li><li>It's free</li><li>Castillian Spanish translation made by the amazing S. Saorín!</li></ul>
<p>The game is 100% complete and published!</p>
<p><strong>WARNING: </strong>This game contains swearing, depictions of depression and anxiety (with happy endings!), and discussions of losing a loved one.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTQ4NzI0LzM4OTI5ODgucG5n/original/qzXX8H.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ4NzI0LzM4OTI5ODkucG5n/original/0Pd%2F4k.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ4NzI0LzM4OTI5OTIucG5n/original/NftvlR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ4NzI0LzM4OTI5OTQucG5n/original/ibhgoD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ4NzI0LzM4OTI5OTUucG5n/original/%2BNbd0o.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ4NzI0LzM4OTI5OTYucG5n/original/fVO1Rr.png]]
<p></p>
<p>Sophie's Cubes is an application that lets you create, scramble, and solve puzzle/magic cubes.</p>
<p>Features:</p>
<ul><li>Play with cubes from 2x2x2 all the way up to 30x30x30</li><li>Cubes are highly customisable; choose face colours, images, and style your cube with variable parts, stickers, and shapes</li><li>For an extra challenge, play with picture/super cubes - where the goal is to return every face to its original orientation and position</li><li>Sessions are saved between use, so if you're challenging yourself to a puzzle that is taking you a while, you can close the app and come back to it later</li><li>Try to beat your best solve times with an automatic timer that starts whenever you scramble the cube - with adjustable inspection time</li><li>Fully rebindable inputs allow you to set up controls for every kind of turn you might want to make</li><li>Specify up to 10 algorithms that can be executed immediately as a macro</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/2G8FvbU1qhE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODIzLzMxMzMxMDAucG5n/original/phZdVX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODIzLzMxMzMwOTcucG5n/original/aLN2MS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODIzLzMxMzMwOTUucG5n/original/SQk1ap.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODIzLzMxMzMwOTYucG5n/original/zon1Yd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODIzLzMxMzMwOTkucG5n/original/OHhY0A.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODIzLzMxMzMwOTgucG5n/original/H49ypZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODIzLzMxMzMxMDEucG5n/original/56vKr2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTg5ODIzLzMxMzMwOTQucG5n/original/uZFxIL.png]]
<p>Sophie's Dice is a dice roller application that lets you roll many kinds of virtual dice, and make custom dice suited for almost any game.<br></p>
<p>Features:</p>
<ul><li>Select dice from your collection, or enter dice expressions using standard dice notation</li><li>Support for many roll behaviours such as keeping or dropping highest/lowest X dice, explosion, dice pool counting, <a href="http://sophiehoulden.com/dice/documentation/notation.html" target="_blank" rel="nofollow noopener" referrerpolicy="origin">and more</a></li><li>Save roll expressions you frequently use, to re-roll them easily</li><li>Includes dice used for most table-top RPGs*</li><li>Easily edit dice to make them your own</li><li>Includes many pre-made dice, over 300 rollable dice shapes, and lots of images/sound effects for all kinds of custom dice</li><li>Display your own images on dice faces, and your own sound effects for when they come up**</li><li>Dice are saved as .xml files you can share with other people who have Sophie's Dice**</li><li>Input stats from your character sheet to use in roll expressions</li></ul>
<p><br></p>
<p>* d20 system (DnD), Fudge/Fate, Narrative system (Star Wars, Genesys), Storytelling (Vampire), Lancer. If your RPG needs some other kind of dice, you can make them pretty easily :)</p>
<p>* *On android, these features require you to copy files to/from a Custom Dice folder yourself.</p>
<p>Documentation for Sophie's Dice can be found <a href="http://sophiehoulden.com/dice/documentation/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"></a><a href="https://sophiehoulden.com/dice/documentation/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">here</a>.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/OWXA8ObIPH0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzQ5NjA1LzcxNzgzNTcuanBn/original/pbx6Y6.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ5NjA1LzcxNzgzNTguanBn/original/aCiJKR.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ5NjA1LzcxNzgzNjMuanBn/original/D%2BSQMG.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ5NjA1LzcxNzgzNjIuanBn/original/Z2kHB6.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ5NjA1LzcxNzgzNTkuanBn/original/Qh5ACO.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ5NjA1LzcxNzgzNjYuanBn/original/GzKzgz.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ5NjA1LzcxNzgzNjcuanBn/original/Jlexv%2F.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ5NjA1LzcxNzgzNjEuanBn/original/lI3Qe7.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ5NjA1LzcxNzgzNjAuanBn/original/OxfdMa.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ5NjA1LzcxNzgzNjQuanBn/original/AZ8mkz.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ5NjA1LzcxNzgzNjguanBn/original/QXQwKB.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzQ5NjA1LzcxNzgzNjUuanBn/original/0DbmYm.jpg]]
<p>Soul Searching is a narrative survival game about sailing away from your homeland.<br></p>
<p>You sail on your small primitive boat to a world of islands, dragons, and magic. You can learn about stories of people living on islands you chose to visit, discover dragons, catch fish, customize your boats, find ghosts, cast magic spells, and more.</p>
<p>Soul Searching leaves you in an open world without any tutorialization except telling you the buttons to play. There is not one correct path. There are a number of play styles you can choose, depending on your hunger for gold and better boats. You might get lost, but it won't take too long to find your way to the end.</p>
<p>Soul Searching is about growing up, leaving your homeland, standing on your own feet. It deals with themes like isolation, searching for meaning and direction, leading to depression and suicidal thoughts.</p>
<p>As the player, you are not a violent hero. The most violent thing you can do in this game is to catch fish to feed yourself. Other than that, it's a game of humble survival and peaceful travels. But in that humbleness you are challenged to survive in a world of merciless dragons and endless seas.</p>
<p>Made by a one man team spanning 3 years of development, Soul Searching is a very personal game. It tries exciting story-telling methods to convey feelings rarely conveyed in games. Since all code, art, music, everything is made by one person, it offers a special sense of authorship hard to find in other games.</p>
<p>Other than the single player story mode, game also offers a randomly generated mode from 1 to 4 local players. This offers replay value and requires players to work together to survive. More players, more need for resources, so more challenge, but more skills to survive.</p>
<p>Soul Searching invites you to its world of mysteries. Even though the main story play time is not that long, if you want to unlock every achievement in the game, you will have to get lost in this world.</p>
<p><strong>Features:</strong></p>
<ul><li>Around 3 hours of single player story mode</li><li>Random mode from 1 to 4 players that randomly generates a map and requires players to work together to survive</li><li>Creatures at sea: dragons, killer whales, and more</li><li>Islands with lots of monologues, and other islands that are not populated by humans</li><li>Magic skills that let you survive on sea more easily</li><li>Player appearance customization (including gender and sexual interest customization)</li><li>Day night cycle that affects gameplay in subtle ways</li><li>Extensive soundtrack</li><li>English and Turkish language support</li><li>Supporting selectable control schemes: 4 players on Xbox gamepads, 2 players on keyboard, 1 player on mouse</li></ul>
<p>UPDATE: Soul Searching Short Stories is OUT NOW! It is a new free update to Soul Searching that adds 7 new games to enrich the lore of Soul Searching. <a href="https://youtu.be/xuDqByntWT0" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Trailer is here</a>.<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/q_mckYArq1Q" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2LzU1MzAwMy5wbmc=/original/t%2F1u8A.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2LzU1MzAwNC5wbmc=/original/8m7O3J.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2LzU1MzAwOC5wbmc=/original/9qlbv3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2LzU1MzAwNi5wbmc=/original/V7pFUo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2LzU1MzAxMS5wbmc=/original/1ig7sg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2LzU1MzAxMi5wbmc=/original/45NKKT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2LzU1MzAwNy5wbmc=/original/rqwY%2Fd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2LzU1MzAwNS5wbmc=/original/P3kjhL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2LzU1MzAxMy5wbmc=/original/qj4gDN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2LzU1MzAwOS5wbmc=/original/AzSnYd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2LzU1MzAxNi5wbmc=/original/MDZeEQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2LzU1MzAxNC5wbmc=/original/DK8ZxK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2LzU1MzAxMC5wbmc=/original/FE6RdE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2LzU1MzAxNS5wbmc=/original/Uu%2FrTU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2Lzg5NDIwNC5qcGc=/original/eiQ9LM.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2Lzg5NDM0NS5qcGc=/original/nDX4Rj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2Lzg5NDIwNS5qcGc=/original/TLmfpt.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2Lzg5NDIxMC5qcGc=/original/R4NlUr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2Lzg5NDIwNy5qcGc=/original/IaXSbw.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2Lzg5NDIwOC5qcGc=/original/uf%2BstK.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5ODg2Lzg5NDIwOS5qcGc=/original/9Jxj%2Fr.jpg]]
<p><strong>Soundodger+</strong> combines the twitchiness of bullet hell shooters with the sonic thrills of rhythm games to create a wholly unique experience. Studio Bean has updated the original Adult Swim Games title with all-new tracks, controller support, and a fully-featured level editor. Plus, auto-generate stages from your own music library!</p>
<ul><li>35 music tracks + 3 free DLC packs included</li><li>Artists include celebrated game musicians Disasterpeace (FEZ, Runner2), Danny Baranowsky (The Binding of Isaac) and more</li><li>Auto-generate levels in a snap using your personal music collection</li><li>Create and share original levels using the level editor</li><li>Engage slo-mo for the trickiest sequences, or embark on a risk-free musical journey in Zen mode</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/jNPwNU9UNWg" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjE2NzI1LzEwMjI2NDUucG5n/original/RMVAPl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2NzI1LzEwMjI2NDgucG5n/original/IcZu4o.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2NzI1LzEwMjI2NDQucG5n/original/eDYEda.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2NzI1LzEwMjI2NDYucG5n/original/bdVAJ5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2NzI1LzEwMjI2NDMucG5n/original/BrcWYo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjE2NzI1LzEwMjI2NDcucG5n/original/3UD8LK.png]]
<p>Simple, short vertical shoot'em up for up to four players in couch coop. This game is meant to be easy.</p>
<p>Modes: campaign, level select and survival.</p>
<p>The game is complete, but I couldn't test couch coop completely on my own, so let me know if you encounter any bugs and I'll fix'em ASAP. :)</p>
<p>Update: Free demo added! :)</p>
<p><strong>IMPORTANT: Android version is single player only.</strong></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/a97zq0p_sdI" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA0Njc3MC81OTgyNzQxLnBuZw==/original/Kpm%2FkM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0Njc3MC81OTgyODE3LnBuZw==/original/AR4dyg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0Njc3MC81OTgyODIxLnBuZw==/original/fZqiw5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0Njc3MC81OTgyODIzLnBuZw==/original/7H0%2BfU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0Njc3MC81OTgyODI1LnBuZw==/original/qU6Ae%2F.png]]
<h2>Classically-Inspired Arcade Action</h2>
<p>Two pet pilots enter, one succeeds! Duel in spaceships using rockets to try and knock out the opponent. Use the gravity to your advantage. Go for a high score in Arcade mode, or prove who the better pilot with friends in local multiplayer Versus mode! This game was designed to be enjoyed in short intervals.</p>
<h2>Crowd-Funded Development</h2>
<p>This game started as a weekend distraction, but could have so many more features. As funding reaches each new level, I will continue development. Interested in seeing this game grow? Help me reach these goals!</p>
<iframe src="https://spaceduet.com/crowdfunding.php" width="100%" height="600px"></iframe>
<h2>Backer Bonus Rewards</h2>
<p>The first 100 players who pay <strong>$5 or more</strong> can choose to have their name listed in the Credits!</p>
<iframe src="https://spaceduet.com/donors.php" width="100%" height="180px"></iframe>
<h2>Current Features</h2>
<ul><li>A quick game to enjoy while you wait for your other games</li><li>Single player Arcade mode versus AI</li><li>Two player Versus mode</li><li>Keyboard & Controller support</li></ul>
<h2>History</h2>
<p>I wanted to take a quick break from developing <a href="https://mattyalanestock.itch.io/kingdombash" target="_blank">Kingdom Bash</a>, and wanted it to as small a game as possible, so why not start at the beginning of video game history! <strong>Space Duet</strong> is inspired by <a href="https://en.wikipedia.org/wiki/Spacewar!" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Spacewar!</a>, one of the first video games, created in 1962. This is my take on it!</p>
<h2>About Me</h2>
<p>Hello! My name is Matthew Alan Estock (pronounced S-Tock). Everything you see here was made by me! This is my side project, if you want to play a much cooler game, go check out <a href="https://mattyalanestock.itch.io/kingdombash" target="_blank">Kingdom Bash</a>!</p>
<h2>Links</h2>
<ul><li><a href="https://www.spaceduet.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Website</a></li><li><a href="https://twitter.com/SpaceDuet" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Twitter</a></li><li><a href="https://www.instagram.com/spaceduet/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Instagram</a></li><li><a href="https://www.facebook.com/spaceduet/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Facebook</a></li></ul>
<h2>Help</h2>
<p><strong>Current Release Info:</strong></p>
<p>1.0.2.1 SpaceDuet.exe<br>MD5: 7E0549B2F4A42506712242D5197CFA12</p>
<p><strong>Windows - Shader error?</strong></p>
<p>You probably don't have DirectX yet, or you are missing a driver either way. You can download the necessary driver for free with this link: <a href="https://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=35" rel="nofollow noopener" referrerpolicy="origin">https://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=35</a></p>
<p>(Shout-out to <a href="https://sokpop.itch.io/" target="_blank">Sokpop</a> for this advice)</p>
<h2>Feedback</h2>
<p>Please offer any feedback you might have on <a href="https://docs.google.com/forms/d/e/1FAIpQLSd3EeCy4cp4mFlfmGUSZnHiGyx0A1980-_xpRn5jGFwAByW0A/viewform?usp=sf_link" target="_blank" rel="nofollow noopener" referrerpolicy="origin">this feedback form</a>, in the comments section below, or by <a href="https://twitter.com/mattyalanestock" target="_blank" rel="nofollow noopener" referrerpolicy="origin">tweeting at me</a>, thank you!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/lbKFnu8_PpY" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzU0MzI0LzIwMTIxNzAuZ2lm/original/0xXa%2BH.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzU0MzI0LzIwMTI1OTEuZ2lm/original/JWTvS6.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzU0MzI0LzIwMTI1OTIuZ2lm/original/S9iJ82.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzU0MzI0LzIwMTI1OTMuZ2lm/original/g8aLVL.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzU0MzI0LzIwMTI1OTYuZ2lm/original/6pn%2FH7.gif]]
<h3><strong>About:</strong></h3>
<p>Bite-sized arcade Shoot 'Em Up. Pilot your ship through waves of enemies!</p>
<h3><strong>Simple Controls:</strong></h3><ul><li>Arrow keys to move </li><li>Space to shoot<br>
</li><li>Controllers are also supported!</li></ul>
<p><br></p>
<h3><strong>Defeat 4 unique Bosses:</strong></h3>
<p>You will encounter 4 Bosses that you should defeat to get to the next stage. If you beat them all, then you will loop back to the start, but this time bosses will be stronger.</p>
<h3><strong>Encounter 4 different enemy ships:</strong></h3>
<p><img src="https://img.itch.zone/aW1nLzU1NzYzMTYucG5n/original/wvEBJy.png" loading="lazy"><br></p>
<p>4 enemy ships with different weapons and attack patterns</p>
<h3><strong>Pick up 5 Different power-ups:</strong></h3>
<h3 class="text-center"><img src="https://img.itch.zone/aW1nLzQzMjI1NTMuZ2lm/original/IpzM26.gif" style="color: inherit; font-size: inherit" loading="lazy"></h3>
<ul><li>Double shot</li><li>Triple shot</li><li>Machine gun</li><li>Big gun</li><li>Laser</li></ul>
<h3><strong>Beat your high score:</strong></h3>
<p>See how far you can go. Meet and defeat <strong>BOSS</strong> at the end of each stage. Beat your high score.</p>
<h3><strong>Leave Feedback:</strong></h3>
<p>Feel free to leave your feedback. What you like/don't like about this game. This will help make it better!</p>
<p>Also follow me on <a href="https://twitter.com/OxMatter" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Twitter</a> for more updates and gamedev content ;)</p>
<p>Credits:</p>
<ul><li>Amazing chiptune soundtrack by <a href="https://opengameart.org/content/5-chiptunes-action" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Juhani Junkala</a></li></ul>
<ul><li>Font: Kenney Pixel by <a href="https://www.kenney.nl/assets/kenney-fonts" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Kenney</a><span></span><span></span></li></ul>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzU2NDc3LzQzMjc0ODYucG5n/original/NKN1UC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU2NDc3LzQzMjc0OTAucG5n/original/QAi3sv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU2NDc3LzQzMjc0ODgucG5n/original/KAf%2B78.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU2NDc3LzQzMjc0OTEucG5n/original/WODrkv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzU2NDc3LzQzMjc0ODkucG5n/original/fHx1wo.png]]
<p>You gotta go into the Space Hole!<br></p><p><br>Monkey Ball meets Marble Madness in Spaceeeee!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/bWxXSVIqRIQ" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDkwMjgvMjE0MjE2LnBuZw==/original/Zqusmr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDkwMjgvMjE0MjE5LnBuZw==/original/x%2Bgf5q.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDkwMjgvMjE0MjIwLnBuZw==/original/h0hXVi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDkwMjgvMjE0MjE4LnBuZw==/original/oWLKeu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDkwMjgvMjE0MjIzLnBuZw==/original/EmyAuI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDkwMjgvMjE0MjIxLnBuZw==/original/nkaThi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDkwMjgvMjE0MjI0LnBuZw==/original/iiIP20.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDkwMjgvMjE0MjI1LnBuZw==/original/r1EknZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDkwMjgvMjE0MjIyLnBuZw==/original/ALt%2FXc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDkwMjgvMjE0MjE3LnBuZw==/original/%2FOWj1L.png]]
<p><strong>Space Hole 2018 </strong><br></p>
<p><br></p>
<p><br></p>
<p>Photosensitivity Warning: This game features many flashing lights and rapidly changing colors.<br>Space Hole 2018 is a psychedelic platformer starring a space shuttle exploring space...<br><img src="https://steamcdn-a.akamaihd.net/steam/apps/818410/extras/ezgif-2-543f6f7cd93e.png?t=1567129566" loading="lazy"><br>Fly freely, or roll in the space ball. Some holes are for balls only...<br><img src="https://steamcdn-a.akamaihd.net/steam/apps/818410/extras/ezgif-2-c3c6dd25e2d8.png?t=1567129566" loading="lazy"><br>Find Space Gems and upgrades in the exciting & esoteric cosmos...<br><img src="https://steamcdn-a.akamaihd.net/steam/apps/818410/extras/ezgif-2-9f8c57388049.png?t=1567129566" loading="lazy"><br>A game by Sam Atlas<br>Music by dl Salo<br>Courtesy of Object Sonore</p>
[img width=500 [https://img.itch.zone/aW1nLzM3MDUyMDkuanBn/original/Ev351%2B.jpg]]
<p>Photosensitivity Warning: This game features intense procedural visual effects. Space Hole 2020 features many unpredictable visual patterns, and strobing lights.<br></p>
<p>***Free demo available now***</p>
<p>Space Hole 2020 is a psychedelic platformer, paired with the Freeform Machine. <br></p>
<p>I am hoping to release Space Hole 2020 in 2020.</p>
<p>This Space Hole tracks the large-scale developments, commonly observed in many different systems, along an allegorical timeline.</p>
<p>You do this by navigating through the waves and particles overlapping mysterious cosmic structures.</p>
<p>Much of Space Hole 2020's visual effects are procedural, so hopefully each player will get a unique view of their computer's chaotic intent.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/_ZZVmQk7NmE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzExOTI2LzQwMDE1NjguanBlZw==/original/OsmJhX.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzExOTI2LzQwMDE1NjUuanBlZw==/original/UOs5yR.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzExOTI2LzQwMDE1NjcuanBlZw==/original/kUr9WD.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzExOTI2LzQwMDE1NjYuanBlZw==/original/18I%2Fm%2B.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzExOTI2LzQwMDE1NjQuanBlZw==/original/d05Uwo.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzExOTI2LzQwMDE1NjMuanBlZw==/original/uNEDI%2F.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzExOTI2LzQwMDE1NjIuanBlZw==/original/ScQ1K4.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzExOTI2LzQwMDE1NjkuanBlZw==/original/Doaoqm.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzExOTI2LzQwMDE1NjEuanBlZw==/original/MBEdzn.jpeg]]
<p>An astroid shoot game made in Godot 3.0.</p>
<p>Licens: MIT<br><br>The original graphic can be found here:<br><a href="https://github.com/vnen/Godot-24-Hours" rel="nofollow noopener" referrerpolicy="origin">https://github.com/vnen/Godot-24-Hours</a> </p><p>And the code is inspired by chapter 5 in this book;<br><a href="https://play.google.com/store/books/details/Ariel_Manzur_Godot_Engine_Game_Development_in_24_H?id=3gBRDwAAQBAJ&hl=en_US" rel="nofollow noopener" referrerpolicy="origin">https://play.google.com/store/books/details/Ariel_Manzur_Godot_Engine_Game_Development_in_24_H?id=3gBRDwAAQBAJ&hl=en_US</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDI0NzgxLzIxMTk5MzgucG5n/original/hkE3wd.png]]
<p>Need to generate a space station for a sci-fi themed table-top session? Station Architect does exactly that, by allowing you to generate a massive variety of space stations in an instant, or create your own from scratch. Anyone can use this tool easily.<br></p>
<p>Use the included presets, or delve into the various options to design your own specific station, or just choose the size and type and go. Edit generated station in the new Create mode to get it just right right, or build a station from scratch with the simple drag and drop interface.<br></p>
<p>When you've got the station you want, you can save it as a .png file and print it and hand it out to your players, or upload it for your Roll20 game.<br></p>
<p><strong>Features:</strong><br></p>
<ul><li>Generate mode:<ul><li>Basic, standard and advanced control modes</li></ul><ul><li>7 Station types</li></ul><ul><li>12 Presets included, or make your own and save them!</li><li>Input your own RNG seed</li></ul></li><li>Create Mode:<ul><li>Drag and drop rooms and corridors to create your station</li></ul><ul><li>Generate corridors on the fly or at the touch of a button, even draw them on!</li></ul><ul><li>Set room rotations to give your station variance</li><li>Save station for later editing</li></ul><ul><li>Undo/Redo</li></ul></li><li>German localisation for the user interface</li><li>20 Different room types</li><li>Fog of War with line of sight</li><li>4 different types of grid and coordinates system</li><li>5 tilesets to chose from</li><li>Room labels for ease of use</li><li>Coordinates system</li><li>Ability to save as a .png in multiple resolutions</li><li>Soundtrack by Cornelis Jordaan and @amywrdn</li></ul>
<hr>
<p><strong>DLC - All The Early Access Builds</strong><br></p>
<p>All the publicly released build from before Station Generator even <br>became a thing! These go back as far as my original project Quantum Wing<br> which has since been put on hiatus to complete Station Generator. </p>
<p>Early builds are just that, early builds. The package contains the 3 Betas <br>and 5 Alphas (With one hot fix) exactly as they were released within the<br> early access program. </p>
<p>What to expect:</p>
<ul><li> Bad graphics
</li><li> Lack of sound effects
</li><li> Terrible UI choices
</li><li> A look at the beginnings of a whole other game!
</li><li> See my progress as Station Generator goes from strength to strength
</li><li> Watch the graphics and sound improve over time</li></ul>
<p>This is a history of Station Generator's development, and it wasn't a perfect, or smooth road to get here!</p>
<hr>
<p>You can leave comments here for feedback, or email me at severalbytes ]at[ gmail ]dot[ com or contact me directly on twitter at <a target="_blank" href="https://twitter.com/ALWyvern/" rel="nofollow noopener" referrerpolicy="origin">@ALWyvern</a> if that suits you better :)<br></p>
<p>For anyone interested my first game <a href="https://severalbytes.itch.io/willow">The Willow Effect</a> is available and is almost completely different!</p>
<hr>
<iframe width="720" height="450" src="https://www.youtube.com/embed/xygwgGIEqY8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTUxMjUvODE1NDg5LnBuZw==/original/g4QiAx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUxMjUvMTgyMzI2Ni5wbmc=/original/XM6ZBF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUxMjUvODE1NDg4LnBuZw==/original/4EAHVE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUxMjUvODE1NDk2LnBuZw==/original/6fYwZw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUxMjUvODE1NDk3LnBuZw==/original/1xMIxc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTUxMjUvMTgyMzI2My5wbmc=/original/ZCRyeL.png]]
<p class="text-center"><strong>DOWNLOAD: <br></strong><a href="https://play.google.com/store/apps/details?id=com.KarelJunek.SpaceEscapeObstacles" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzY4MTA4OTQucG5n/original/%2BV4q3l.png" loading="lazy"></a><strong>MORE INFO</strong></p>
<p>Space Escape Obstacles - BETA VERSION 3.6.1<br></p>
<p>Take a pick from the many skins available.Try to avoid the obstacles and conquer all the levels/worlds. Can you handle it? Test your skill.<br>*<br>Space - Be prepared for:<br>- Free skins and worlds<br>- Conquering all levels<br>- Losing your nerves<br>- Feeling of accomplishment after completing each level!<br>*<br>Escape - Key Features:<br>- Mobile Free to play game<br>- Nice low poly graphics<br>- Responding to feedback and regular updates<br>*<br>Obstacles - Info:<br>- Download today and enjoy a new adventure!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/HCHqdpi1loc" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA1OTg4OC82NjY2MjM4LnBuZw==/original/I5t2NZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1OTg4OC82NjY2MjQ2LnBuZw==/original/6fV%2F6Q.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1OTg4OC82NjY2MjQyLnBuZw==/original/SUNqah.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1OTg4OC82NjY2MjQ0LnBuZw==/original/GV7jk%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1OTg4OC82NjY2MjQ1LnBuZw==/original/9PyZR%2F.png]]
<p>SPARE is a short experimental game where the player may sacrifice different parts of themselves to proceed, each loss making progress a bit more difficult.</p>
<p>There are multiple ways to navigate these spaces, depending on what you've been willing to spare, and even a couple of extra endings tucked away for curious types.</p>
<h3>How much can you spare? How selfless can you be without losing yourself?</h3>
<p>More of my work (games and otherwise) can be seen at <a href="http://www,gildedgreen.com" rel="nofollow noopener" referrerpolicy="origin"><strong>gildedgreen.com</strong></a>.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTY1NDY3Lzc2Mzk0Ni5wbmc=/original/VU6RzB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY1NDY3Lzc2ODIzNC5naWY=/original/snCK2W.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY1NDY3Lzc2Mzk0Mi5wbmc=/original/U0fOgk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY1NDY3Lzc2Mzk0NC5wbmc=/original/1zcdAJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY1NDY3Lzc2Mzk0NS5wbmc=/original/oc0zOx.png]]
<p><em>Speed Dating for Ghosts</em> is a weird lil' narrative game about speed dating ghosts by Ben Gelinas (<em>Control, </em><em>Dragon Age, Mass Effect</em>) and Mikey Hamm (<em>Mikey Maybe, Slugblaster, Glig</em>). </p>
<p>As a lonely specter looking for love in the afterlife, you attend a speed dating event and chat up a cemetery's worth of phantoms, wraiths, and poltergeists. At the end of the spooky mixer, choose your favorite! They'll take you out to all the best haunts: old folks' homes, creepy houses with new owners... Maybe solving a murder is your idea of a good time. Or robbing a bank. Ghosts are into all sorts of things</p>
<p><strong>Key Features</strong></p>
<ul><li>With the added expansion, meet and date twelve ghosts plus a bonus ghost if you're really committed</li><li>Deep, branching conversations with markedly different outcomes depending on what you choose to say</li><li>A full-fledged date with your favorite ghost that plays out like a text adventure after each speed dating session</li><li>A wide range of quirky characters including spirits of vengeance, compassion, despair, and mischief</li><li>Original music by Mikey Maybe, the musical alterego of game artist Mikey Hamm</li></ul>
<p>Content Warning: Contains frank discussions of death and its consequences, both seriously and with intentional humor.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/__rOWJxde8Y" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTg5MzE0Lzg4NjkyNy5wbmc=/original/xpJXnY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg5MzE0LzEwNTg2ODQuanBn/original/JDaFSd.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg5MzE0LzEwNTg2ODEuanBn/original/DWridL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg5MzE0LzEwNTg2ODIuanBn/original/GwAbgX.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg5MzE0LzEwNTg2ODMuanBn/original/vCqIXr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg5MzE0LzEwNTg2NzkuanBn/original/wimM3R.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg5MzE0LzEwNTg2ODYuanBn/original/ZpcHa0.jpg]]
<p>
Spell Casting is a family friendly line drawing puzzle game in which you are a young wizard learning spells in the comfort of your home thanks to Wizardly Distance Education!</p>
<p>
Practice casting spells by tracing out the patterns in the spell books using your mouse. Earn a 3 star rating in each spell to unlock the exam.
</p>
<p>
You'll need to remember the previously learned spell shapes to pass the exam and unlock new spell books!
<br>
</p>
<p>
Spell Casting supports Accessibility by allowing you to press and hold the SPACEBAR instead of clicking and holding the mouse button to draw spell lines.
</p>
<hr>
<p><br><strong>Quotes</strong><br></p>
<p>
<em>"HARDCORE CAT WIZARDS LEARNING TO CAST SPELLS AND EPIC MEMES"</em> - Anonymoose
</p>
<p>
<em>"If you're looking to play something together as a family, this is good stuff."</em> - Indiegames.com <a href="http://indiegames.com/2016/07/spell_casting.html" rel="nofollow noopener" referrerpolicy="origin">http://indiegames.com/2016/07/spell_casting.html</a><a href="http://indiegames.com/2016/07/spell_casting.html" rel="nofollow noopener" referrerpolicy="origin"></a>
</p>
<p>
<em>"A great light-hearted puzzler that will test your memory and your dexterity."</em> - Alpha Beta Gamer <a href="http://www.alphabetagamer.com/spell-casting-meowgically-enhanced-edition-alpha-demo/" rel="nofollow noopener" referrerpolicy="origin">http://www.alphabetagamer.com/spell-casting-meowgically-enhanced-edition-alpha-demo/</a><a href="http://www.alphabetagamer.com/spell-casting-meowgically-enhanced-edition-alpha-demo/" rel="nofollow noopener" referrerpolicy="origin"></a><br>
</p>
<p><em>"It's like playing a game designed by a classic children's storyteller.</em><em>"</em> - Highland Arrow <a href="https://www.highlandarrow.com/reviews/pc-reviews/371-spell-casting.html" rel="nofollow noopener" referrerpolicy="origin">https://www.highlandarrow.com/reviews/pc-reviews/371-spell-casting.html</a><span></span></p>
<hr>
<p>
<strong>
Version History:</strong>
</p>
<ul>
<li>2.0 release - 30 spells and 30 exams!</li>
<li>2.1.0 update - new voice acting and fixed "mend"</li><li>2.2.0 Halloween Update - 6 new spells and 6 new exams!</li><li>2.3.0 Christmas Update - 6 new spells and 6 new exams!</li>
</ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/2s13Ef80Iyk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTE5NzAvMzcwNjUwLmpwZw==/original/fDu%2B9G.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5NzAvMzcwNjQ5LmpwZw==/original/lA19e2.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5NzAvMzcwNjQ4LmpwZw==/original/m1SwXM.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5NzAvMzUwMjM4LmpwZw==/original/UwzXmF.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5NzAvMzUwMjQxLmpwZw==/original/sImqRp.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5NzAvMzUwMjQwLmpwZw==/original/qH7YPd.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5NzAvMzY1NzMxLmpwZw==/original/8VV5rs.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5NzAvMzY1NzI5LmpwZw==/original/3ZDAUT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5NzAvMzY1NzI4LmpwZw==/original/%2BoYALc.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTE5NzAvMzY1NzMwLmpwZw==/original/62N1k4.jpg]]
<p>THE YEAR IS 1997 AND POP MUSIC RULES THE WORLD.</p>
<p>From their secret headquarters inside Big Ben groups of Spice Girls in tour busses are dispatched to solve all of the world’s most dangerous problems with girl power and music.</p>
<p>It is a better world, a brighter world, a SPICE WORLD.</p>
<p><br></p>
<p>SPICEPUNK 1997 is a rule-light tabletop roleplaying game set in the fantastical world of the Spice Girls. Play as a Spice Girl of your own creation and prepare yourself for the unexpected as your SPICE UP YOUR LIFE!</p>
<p>SPICEPUNK 1997 was created by Nick Kornek & Jeanne Elizabeth Vachon. It is based on <a href="https://johnharper.itch.io/lasers-feelings">Lasers & Feelings by John Harper</a></p>
<p>You will need:</p>
<ul><li>A handful of six-sided dice</li><li>Some Story Cubes (We use <a href="https://amzn.to/3xgD6bD" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Rory's Story Cubes</a>)</li><li>At least one character sheet per player (included)</li><li>One tour bus sheet (included)</li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTYyODAyLzU2MjY2NTIucG5n/original/vb0uQh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYyODAyLzU2MjY2NTMucG5n/original/ps6SKd.png]]
<p><img src="https://img.itch.zone/aW1nLzcxMjM4NjgucG5n/original/jjsLGy.png" loading="lazy"><br></p><p>Estimated playtime: 45 minutes to 1 hour. <strong>This game does not have a save function</strong>.</p>
<p><img src="https://img.itch.zone/aW1nLzUwNjg3MzcucG5n/original/KeBScj.png" loading="lazy"></p>
<p><strong>Spirit Cleaning</strong> is an action/visual novel hybrid game where you play as The Cleaner, a spring cleaner visiting a residential house in the suburbs.</p>
<p>However, this job isn't a normal one - each room of the house is haunted by the tragedies that befell its many residents and their bloodied crime scenes.</p>
<p><em>And they're all anime girls.</em><br></p>
<p>
</p>
<h2><img src="https://img.itch.zone/aW1nLzUwNjg2NDcucG5n/original/E7UJlB.png" loading="lazy"></h2>
<p>There are two control schemes (selectable in the Pause menu [Esc]):</p>
<ul><li>Tank controls - W to move forward, A/D to turn.</li><li>Camera-relative controls: WASD to move. The direction you move will depend on where the camera faces.</li></ul>
<p>Press E to interact with things!</p>
<p><img src="https://img.itch.zone/aW1nLzUwNjg2NDMucG5n/original/MGzfNN.png" loading="lazy"></p>
<p>Contains ghosts talking about deaths of varying levels of violence.<br>Contains bloody/gorey scenes and strong language/profanity.<br></p>
<p><img src="https://img.itch.zone/aW1nLzUwNjg2MzYucG5n/original/xL%2BDEM.png" loading="lazy"></p>
<p>You'll find out. But we do have a talking car, and a Gamer.<br></p>
<p><img src="https://img.itch.zone/aW1nLzUwNjg1OTQucG5n/original/Ns44RF.png" loading="lazy"><br></p>
<ul><li>An eerily familiar house to explore!</li><li>7 ghosts/rooms with unique stories!</li><li>Cleaning minigame action!</li><li>Demonic Rituals!</li><li>At least 1 existential crisis.</li></ul>
<p><img src="https://img.itch.zone/aW1nLzUwNjg2MTkucG5n/original/hLn5PB.png" loading="lazy"><br></p>
<p><a href="https://harrypetch.itch.io/" target="_blank">Harry Petch</a> - Game Design, Writing and Management<br><a href="https://starskull.itch.io/" target="_blank">StarSkull</a> - Code Octopus, Mechanics Design and Implementation, Proofreading<br><a href="https://ceoofbadart.itch.io/" target="_blank">CEO of Bad Art</a> - Character Art and Co-writing<br></p>
<p>Features some music and art by <a href="https://l-a-u-g-h.itch.io/" target="_blank">Erik Sheader</a>, and some art by <span class=""></span><a href="https://allenrut.itch.io/" target="_blank">Allen Rutledge</a><span class=""></span>.<br>All other attributions included in game.</p>
<p>A game made for the HQ Residential House Game Jam. <em>Thanks for the opportunity to develop this, we've really learnt a LOT from this project!</em><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/8Dglkzjqblw" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODg3MzE1LzUwNjc5NTMucG5n/original/WRkEqV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODg3MzE1LzUwNjU5OTEucG5n/original/Y7Irhm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODg3MzE1LzUwNjc5NTIucG5n/original/avXsT0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODg3MzE1LzUwNjYwMzcucG5n/original/GjwtXo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODg3MzE1LzUwNzA4ODIucG5n/original/wP7DYm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODg3MzE1LzUwNjYwMzYucG5n/original/GVOnIU.png]]
<h2 class="text-center"></h2>
<figure><img src="https://img.itch.zone/aW1nLzU2MDQ4OTYucG5n/original/q19tFm.png" loading="lazy"></figure>
<p>
</p>
<p><strong>Spirit Swap: Lofi Beats to Match-3 To</strong> is an action-puzzle game set in a lush, narrative-driven world of witchy demons. Cast spells, be queer, & crash the biggest concert of the year!<br></p>
<p><br></p>
<figure><img src="https://img.itch.zone/aW1nLzU2MDQ4NzkuZ2lm/original/aThIvC.gif" loading="lazy"></figure>
<figcaption><br></figcaption>
<p>By night, use Samar’s powers to help send transdimensional spirits back home. By day, roam the city and chat with friends, planning the ultimate pizza party for everyone to come together and catch up.</p>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzU2MTI3NjguZ2lm/original/fOwIak.gif" loading="lazy"><br></p>
<figcaption><br></figcaption>
<p><img src="https://img.itch.zone/aW1nLzU2MDQ4OTIucG5n/original/MPLf5S.png" loading="lazy"></p>
<ul><li> <strong>Match to the beat </strong>as you reassemble lost spirits, and enjoy a custom lofi hip-hop soundtrack by the incredible Meltycanon.
</li><li> <strong>Cast powerful spells.</strong> Arrange spirits into special patterns to unlock potent powers!
</li><li> <strong>Compete in local VS mode!</strong> Everything is chill, until it gets permanently unchill....
</li><li> <strong>Enjoy over 5 unique game modes,</strong> including Time Attack, Score Attack, and Survival.
</li><li> <strong>Bond with a cast of witches and demons</strong>. Plan a pizza party together, crash a concert, maybe even smooch!
</li><li> <strong>Decorate your bedroom</strong>. Earn trinkets and keepsakes as you play, then place them in Samar’s room to affect the game!
</li></ul>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzU2MTI3NjcuZ2lm/original/Bb3UHi.gif" loading="lazy"></p>
<p><br></p>
<p><strong><img src="https://img.itch.zone/aW1nLzU2MTI1NjQucG5n/original/bWD0Jw.png" loading="lazy"> </strong></p>
<ul><li> <strong>No microtransactions here.</strong> <strong>Spirit Swap</strong> is a premium game, which means you'll be able to enjoy it without worrying about hidden costs.
</li><li> <strong>Queer</strong> <strong>and diverse joy.</strong> Much like the cast of <strong>Spirit Swap,</strong> our team is also is queer, Black, and/or POC, and it's well past time we see ourselves experiencing happiness in media. This is a slice-of-life story for players needing a relaxing experience!
</li><li> <strong>A fresh look at Middle Eastern fantasy by creators FROM the region.</strong> <strong>Spirit Swap</strong> is set in a fictional city inspired by the Levant, a region rarely explored (in a positive light) in games.</li></ul>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzU2MTI3NjUuZ2lm/original/9XohBg.gif" loading="lazy"></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/Fe4p3xl4RAk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTg1NzI3LzU2MDUwMjYucG5n/original/kSLuk%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg1NzI3LzU2MDUwMjUucG5n/original/m9qia7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg1NzI3LzU2MDUwMjQucG5n/original/Fm032i.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg1NzI3LzU2MDUwMzEucG5n/original/5rm8Fc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg1NzI3LzU2MDUwMjgucG5n/original/a6Rgy2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg1NzI3LzU2MDUwMjMucG5n/original/ZzOTqT.png]]
<p>You don't know who you are, or how you got here. There's no explanation for any of this.<br>There's only one thing you can do. Endure the challenges that get thrown in your way, learn them as best as you can and find a way to escape from this eternal punishment.<br>Fight. Not to save the world, but to maybe save yourself.<br></p>
<h2>An endless stream of challenges</h2>
<p>Splinter Zone creates an infinite chain of levels for you to traverse and test your skills in.<br></p>
<h2>Reliable Randomness</h2>
<p>Splinter Zone doesn’t feature a true random level generation. Instead, its levels are pre-constructed, but the order in which they appear is randomly generated. This way it is still possible for you to get familiar with the game’s challenges while still having a unique experience every time you play.<br></p>
<h2>Permission to cheat</h2>
<p>Splinter Zone is a challenging game, but sometimes you may want to have a more relaxed experience. For those moments, Splinter Zone features a handy array of cheats that you can enable right at the start of the game. You can even turn off all enemies in the game, if you so desire...<br></p>
<h2>Secrets</h2>
<p>I can’t talk about those...</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/O9ajjv0xaNg" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTEyNjYxLzY3ODM2OC5naWY=/original/l9CJWo.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTEyNjYxLzUyOTA4Ni5wbmc=/original/7v%2BbGG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTEyNjYxLzUyOTA5MC5wbmc=/original/XrsZhU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTEyNjYxLzY3ODM3MC5naWY=/original/T8bEQH.gif]]
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/iiNR9_JTYEc" allowfullscreen="" frameborder="0"></iframe><br><br></div>
<p>Spooky Ghosts Dot Com is a small metroidvania about a ghost hunter named Ruby. One Halloween night a ghost hunting job comes in, but it turns out to not be a regular gig!</p>
<p><img src="https://img.itch.zone/aW1nLzExMjA5OTIucG5n/original/K9gye0.png" loading="lazy"><br></p>
<p>Features:</p>
<p>-5 different interconnected spooky areas to fight through.<br>-50+ rooms to explore!<br>-6 spooky bosses to defeat.<br>-Find and pet all 8 lost cats!<br>-Items to boost Rubys power and gain new abilities!<br>-Ghost buddies, cats, shopkeepers, and others to meet within the mansion.<br><br><img src="https://img.itch.zone/aW1nLzExMjA5OTMucG5n/original/t8ED3%2B.png" loading="lazy"></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/iiNR9_JTYEc" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjMxMTE2LzEwOTU4NzkuZ2lm/original/9OWQO%2B.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxMTE2LzEwOTU4ODAuZ2lm/original/KUz9s1.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxMTE2LzEwOTU4OTEuZ2lm/original/LY60Y8.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxMTE2LzEwOTU4ODMuZ2lm/original/YN0P2B.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxMTE2LzEwOTU4ODQuZ2lm/original/PRC6P0.gif]]
<p><strong>Spooky Station</strong> is a game pack filled with <strong>9 ghostly games</strong> of all types. From an <strong>arena-brawler</strong> to a <strong>rogue-like</strong>, from a <strong>text-adventure</strong> to a <strong>shoot 'em up</strong>, and even a <strong>GameBoy™ game</strong>, this bundle is certain to <strong>spook your socks off</strong>!<br></p>
<figure><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/MOSHED-2019-9-16-11-15-10.jpg?t=1569453793" style="color: inherit; font-size: inherit; padding: 0px; margin: 0px" loading="lazy"></figure>
<p><br><strong>Games included in this pack:</strong><br></p>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/spooky-cooking-banner.png?t=1569453793" style="padding: 0px; margin: 0px" loading="lazy"><br>Have a nice Halloween in a <strong>lovely </strong>and <strong>casual way </strong>with a one-button game that tries to bring back the <strong>competition </strong>of the arcade era, where you need to <strong>shoot a pumpkin</strong> towards to a <strong>cauldron</strong> while <strong>dodging obstacles</strong>, a simple mechanic that's <strong>easy to understand</strong>, but hard to <strong>master</strong>, this game can please <strong>casual gamers</strong> as well as <strong>hardcore ones</strong>.</p>
<ul><li>Supports keyboard and Xbox controllers.</li></ul>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/tower_banner.png?t=1569453793" style="padding: 0px; margin: 0px" loading="lazy"><br>Explore a <strong>creepy, demon-filled dungeon</strong> with <strong>100 floors</strong> and save your city from <strong>certain doom</strong> with <strong>Sewer Cat</strong> and his partner <strong>Dirty Paws</strong> in this <strong>classic rogue-like style adventure</strong>!</p>
<ul><li>Supports keyboard and Xbox controllers.</li></ul>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/cosmic_rain_banner.png?t=1569453793" style="padding: 0px; margin: 0px" loading="lazy"><br>Use <strong>spooky blobs</strong> from the <strong>Cosmic Rain</strong> in this <strong>Match 3</strong> game to obtain <strong>power </strong>and achieve your ultimate goal of learning how to be a <strong>blobmancer</strong>!</p>
<ul><li>Supports keyboard and Xbox controllers.</li></ul>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/sarah_banner2.png?t=1569453793" style="padding: 0px; margin: 0px" loading="lazy"><br><strong>Wishing Sarah</strong> is a top-down <strong>GameBoy adventure game</strong> where the player must explore a <strong>bizarre world</strong> and help Sarah to wake up <strong>once and for all.</strong></p>
<ul><li>Supports keyboard and Xbox controllers.</li><li>Includes original GameBoy™ ROM image!</li></ul>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/Thursday_banner.png?t=1569453793" style="padding: 0px; margin: 0px" loading="lazy"><br>In this <strong>first person adventure</strong>, you help our <strong>friendly serial killer Johnny</strong> in his routine, searching for all the stuff he needs to prepare for his <strong>big day</strong>. <strong>Interact </strong>with the items you find or <strong>inspect </strong>them to know what’s going through <strong>Johnny’s mind</strong>.<br><br><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/worship_banner.png?t=1569453793" style="padding: 0px; margin: 0px" loading="lazy"><br>A <strong>2-player party game</strong> where you compete with a friend to see who is the <strong>best worshiper</strong> of the<strong> demon lord</strong>!</p>
<ul><li>Supports Xbox controller for a 2nd player.</li></ul>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/curse_bringer_banner_logo.gif?t=1569453793" style="padding: 0px; margin: 0px" loading="lazy"><br>In this text based game you assume the role of Sister Constance, a member of a secret organization responsible for delivering the Death Curse to marked targets. A new job has been assigned to you, but in order to end your target you must gather the ingredients and make choices.</p>
<ul><li>This game is only playable using a mouse.</li></ul>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/killing_moon_banner.png?t=1569453793" style="padding: 0px; margin: 0px" loading="lazy"><br><strong>Killing Moon</strong> is a <strong>high school Halloween thriller</strong> made as a homage to all great <strong>slashers </strong>and <strong>suspense movies</strong>. The game follows three friends, <strong>Ash (Ashley) J. Raimi</strong>, <strong>Barbara Romero</strong> and <strong>R.J. MacCarpenter </strong>during a <strong>Halloween party</strong> in their high school. Every thing feels like just another stupid school party until <strong>lights start to fail </strong>and <strong>weird things happen</strong>. Like, <strong>really weird sh*t</strong>. You play as a <strong>different protagonist</strong> in each game chapter and each character will <strong>add his or her own outlook</strong> on the events that took place in that <strong>peculiar night</strong>.</p>
<ul><li>This game is only playable using a mouse.</li></ul>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/Spookids_banner.png?t=1569453793" style="padding: 0px; margin: 0px" loading="lazy"><br>Spooky Land is a <strong>mysterious</strong> and <strong>treacherous </strong>place, but none of that will stop a group of <strong>mischievous kids'</strong> search for candy! Defeat <strong>monsters</strong>, avoid <strong>traps </strong>and <strong>collect candy</strong> in this <strong>shoot'em up adventure </strong>for up to <strong>4 players coop</strong>.</p>
<ul><li>Supports keyboard and Xbox controllers for all players.</li></ul>
<p></p>
<p><br></p>
<p>With <strong>Spooky Station</strong>, you're guaranteed to have hours of <strong>Halloween-themed fun</strong> with diverse gameplay styles and amazing stories.</p>
<p><br></p>
<p><br></p>
<blockquote><em>Spooky Station © Estúdio Vaca Roxa 2019<br>Wishing Sarah © Asteristic Game Studio 2019<br>Killing Moon © Joymasher 2013<br>Spookids © Relixes, Crowno (Spookids Team) 2019<br>Thursday the 12th © Calangames 2019<br>Cosmic Rain © Expresso Studios 2019<br>Worship the demon lord with friends © Pastel Studios 2019<br>Spooky Cooking © Heavy Sheep 2019<br>Tower of 100 Floors © LASTONE 2019<br>Curse Bringer © Vee 2019</em></blockquote>
<iframe width="720" height="450" src="https://www.youtube.com/embed/P6nur2s4qgc" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDg4MzY0LzI2MjgyNjYuZ2lm/original/fm9G8S.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg4MzY0LzI2MjgzMTQuZ2lm/original/3vVRWl.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg4MzY0LzI2MjgzNTQuZ2lm/original/ChzY3V.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg4MzY0LzI2MjgzMTMuZ2lm/original/1mIsUk.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg4MzY0LzI1MjMwMjQucG5n/original/eC0RJn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg4MzY0LzI1MjMwMzEucG5n/original/OheDsg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg4MzY0LzI2MTkyMzMuanBn/original/HGPLbF.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg4MzY0LzI2MTkyMzguanBn/original/l0AvWp.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg4MzY0LzI2MTkyNDAuanBn/original/9rdBWv.jpg]]
<p><strong>Spooky Station</strong> is a game pack filled with <strong>9 ghostly games</strong> of all types. From an <strong>arena-brawler</strong> to a <strong>rogue-like</strong>, from a <strong>text-adventure</strong> to a <strong>shoot 'em up</strong>, and even a <strong>GameBoy™ game</strong>, this bundle is certain to <strong>spook your socks off</strong>!<br></p>
<figure><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/MOSHED-2019-9-16-11-15-10.jpg?t=1569453793" style="color: inherit; font-size: inherit; padding: 0px; margin: 0px" loading="lazy"></figure>
<p><br><strong>Games included in this pack:</strong><br></p>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/spooky-cooking-banner.png?t=1569453793" style="padding: 0px; margin: 0px" loading="lazy"><br>Have a nice Halloween in a <strong>lovely </strong>and <strong>casual way </strong>with a one-button game that tries to bring back the <strong>competition </strong>of the arcade era, where you need to <strong>shoot a pumpkin</strong> towards to a <strong>cauldron</strong> while <strong>dodging obstacles</strong>, a simple mechanic that's <strong>easy to understand</strong>, but hard to <strong>master</strong>, this game can please <strong>casual gamers</strong> as well as <strong>hardcore ones</strong>.</p>
<ul><li>Supports keyboard and Xbox controllers.</li></ul>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/tower_banner.png?t=1569453793" style="padding: 0px; margin: 0px" loading="lazy"><br>Explore a <strong>creepy, demon-filled dungeon</strong> with <strong>100 floors</strong> and save your city from <strong>certain doom</strong> with <strong>Sewer Cat</strong> and his partner <strong>Dirty Paws</strong> in this <strong>classic rogue-like style adventure</strong>!</p>
<ul><li>Supports keyboard and Xbox controllers.</li></ul>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/cosmic_rain_banner.png?t=1569453793" style="padding: 0px; margin: 0px" loading="lazy"><br>Use <strong>spooky blobs</strong> from the <strong>Cosmic Rain</strong> in this <strong>Match 3</strong> game to obtain <strong>power </strong>and achieve your ultimate goal of learning how to be a <strong>blobmancer</strong>!</p>
<ul><li>Supports keyboard and Xbox controllers.</li></ul>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/sarah_banner2.png?t=1569453793" style="padding: 0px; margin: 0px" loading="lazy"><br><strong>Wishing Sarah</strong> is a top-down <strong>GameBoy adventure game</strong> where the player must explore a <strong>bizarre world</strong> and help Sarah to wake up <strong>once and for all.</strong></p>
<ul><li>Supports keyboard and Xbox controllers.</li><li>Includes original GameBoy™ ROM image!</li></ul>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/Thursday_banner.png?t=1569453793" style="padding: 0px; margin: 0px" loading="lazy"><br>In this <strong>first person adventure</strong>, you help our <strong>friendly serial killer Johnny</strong> in his routine, searching for all the stuff he needs to prepare for his <strong>big day</strong>. <strong>Interact </strong>with the items you find or <strong>inspect </strong>them to know what’s going through <strong>Johnny’s mind</strong>.<br><br><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/worship_banner.png?t=1569453793" style="padding: 0px; margin: 0px" loading="lazy"><br>A <strong>2-player party game</strong> where you compete with a friend to see who is the <strong>best worshiper</strong> of the<strong> demon lord</strong>!</p>
<ul><li>Supports Xbox controller for a 2nd player.</li></ul>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/curse_bringer_banner_logo.gif?t=1569453793" style="padding: 0px; margin: 0px" loading="lazy"><br>In this text based game you assume the role of Sister Constance, a member of a secret organization responsible for delivering the Death Curse to marked targets. A new job has been assigned to you, but in order to end your target you must gather the ingredients and make choices.</p>
<ul><li>This game is only playable using a mouse.</li></ul>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/killing_moon_banner.png?t=1569453793" style="padding: 0px; margin: 0px" loading="lazy"><br><strong>Killing Moon</strong> is a <strong>high school Halloween thriller</strong> made as a homage to all great <strong>slashers </strong>and <strong>suspense movies</strong>. The game follows three friends, <strong>Ash (Ashley) J. Raimi</strong>, <strong>Barbara Romero</strong> and <strong>R.J. MacCarpenter </strong>during a <strong>Halloween party</strong> in their high school. Every thing feels like just another stupid school party until <strong>lights start to fail </strong>and <strong>weird things happen</strong>. Like, <strong>really weird sh*t</strong>. You play as a <strong>different protagonist</strong> in each game chapter and each character will <strong>add his or her own outlook</strong> on the events that took place in that <strong>peculiar night</strong>.</p>
<ul><li>This game is only playable using a mouse.</li></ul>
<p><img src="https://steamcdn-a.akamaihd.net/steam/apps/700100/extras/Spookids_banner.png?t=1569453793" style="padding: 0px; margin: 0px" loading="lazy"><br>Spooky Land is a <strong>mysterious</strong> and <strong>treacherous </strong>place, but none of that will stop a group of <strong>mischievous kids'</strong> search for candy! Defeat <strong>monsters</strong>, avoid <strong>traps </strong>and <strong>collect candy</strong> in this <strong>shoot'em up adventure </strong>for up to <strong>4 players coop</strong>.</p>
<ul><li>Supports keyboard and Xbox controllers for all players.</li></ul>
<p><br></p>
<p>With <strong>Spooky Station</strong>, you're guaranteed to have hours of <strong>Halloween-themed fun</strong> with diverse gameplay styles and amazing stories.</p><p><br></p>
<p><strong>Other works you might like:</strong>
</p>
<ul><li><a href="https://bakudas.itch.io/generic-rpg-pack"><strong>Generic RPG Pack</strong></a>
</li><li><a href="https://bakudas.itch.io/generic-platformer-pack"><strong>Generic PLATFORMER Pack</strong></a>
</li><li><a href="https://bakudas.itch.io/generic-dungeon-pack"><strong>Generic DUNGEON Pack
</strong></a>
</li><li><u><strong><a href="https://bakudas.itch.io/generic-run-n-gun" target="_blank">Generic RUN N' GUN Pack</a></strong></u></li></ul><u><strong></strong></u>
<blockquote><em>Credits:<br>Spooky Station © Estúdio Vaca Roxa 2019<br>Wishing Sarah © Asteristic Game Studio 2019<br>Killing Moon © Joymasher 2013<br>Spookids © Relixes, Crowno (Spookids Team) 2019<br>Thursday the 12th © Calangames 2019<br>Cosmic Rain © Expresso Studios 2019<br>Worship the demon lord with friends © Pastel Studios 2019<br>Spooky Cooking © Heavy Sheep 2019<br>Tower of 100 Floors © LASTONE 2019<br>Curse Bringer © Vee 2019</em></blockquote>
<iframe width="720" height="450" src="https://www.youtube.com/embed/P6nur2s4qgc" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDg4MzY0LzI2MjgyNjYuZ2lm/original/fm9G8S.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg4MzY0LzI2MjgzMTQuZ2lm/original/3vVRWl.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg4MzY0LzI2MjgzNTQuZ2lm/original/ChzY3V.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg4MzY0LzI2MjgzMTMuZ2lm/original/1mIsUk.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg4MzY0LzI1MjMwMjQucG5n/original/eC0RJn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg4MzY0LzI1MjMwMzEucG5n/original/OheDsg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg4MzY0LzI2MTkyMzMuanBn/original/HGPLbF.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg4MzY0LzI2MTkyMzguanBn/original/l0AvWp.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDg4MzY0LzI2MTkyNDAuanBn/original/9rdBWv.jpg]]
<p>Spring Falls is a <strong>puzzle game</strong> about <strong>water, erosion,</strong> and <strong>watching things grow.</strong><br></p>
<p>Manipulate the landscape and bring wildflowers to life as you make your way down a peaceful mountainside.</p>
<p>Soft visuals, ambient guitar work, and environmental sounds come together to create a meditative, relaxing experience.</p>
<p><img src="https://img.itch.zone/aW1nLzMzODIyNjUuZ2lm/original/NV9%2Bq4.gif" loading="lazy"><br></p>
<h4>Features:</h4><ul><li>60 hand-crafted levels
</li><li>Unique & clever gameplay revolving around water flow<br>
</li><li>Lots of lovely flowers to nurture and grow
</li><li>Ambient-folk soundtrack and soothing nature sounds
</li><li>Gorgeous mountain vista backdrops
</li></ul>
<h4>Credits:</h4>
<ul><li>Eric Billingsley<strong>:</strong> <em>Design, Code, Art, Sound, Music (Composition, Guitar, Recording, Mixing)</em></li><li>Derek Harrison: <em>Music (Composition, Mandolin, Accordion, Guitar, Recording, Mixing)</em></li><li>Maria Pranschke: <em>Music (Vocals)</em></li><li>Victoria Embree: <em>PR / Marketing Consultant</em></li><li>DYS Translations: <em>Localization (French, German, Spanish, Portuguese, Korean, Chinese)</em></li><li>Mix Tobin: <em>Localization (Japanese)</em></li></ul>
<h6></h6>
<iframe width="720" height="450" src="https://www.youtube.com/embed/J1x4jjQq2wE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjMwOTgzLzMzODIyMDMucG5n/original/XSWpB1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMwOTgzLzMzODIyMDQucG5n/original/fPQ6eW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMwOTgzLzMzODIyMDYucG5n/original/09UQhR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMwOTgzLzMzODIyMDUucG5n/original/gcDlp8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjMwOTgzLzMzODIyMDcucG5n/original/Cx6qRJ.png]]
<p>Spritedow Animator is a simple and standalone alternative to Mecanim to animate sprites frame by frame. <br><br>Just drop your sprites or spritesheets to the editor and you will have an awesome animation in a jiffy (hehe). <br><br><a href="https://assetstore.unity.com/packages/tools/sprite-management/spritedow-animator-82525?aid=1101lIr6" target="_blank" rel="nofollow noopener" referrerpolicy="origin">You can also buy it at te Unity Asset Store!</a><br><br><strong>NOTE</strong><br>This plugin is oriented to programmers: althought it has a visual animation editor all the cool features need some code to work. <br><br><strong>FEATURES</strong><br>- Simple and easy to use Animation editor<br>- Animation preview<br>- Play animations forward or backward<br>- Play random animations<br>- Animate ignoring time scale<br>- Custom animation framerate<br>- Custom frame duration<br>- Basic events (onPlay, onStop...)<br>- Custom events<br>- Works with SpriteRenderer and UI Images<br>- Renderer control methods<br>- Make simple behaviours without code (loop, random, play on awake, delay between loops, disable renderer on end...)<br>- Completely standalone, this plugin does not use the Unity's animation system</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/siyAoQLGOD8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjI0MTA4LzEwNTgyNjguanBn/original/EDZuKg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI0MTA4LzEwNTgyNjkuanBn/original/Ro4YnN.jpg]]
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/VR6QU7YHOEI" allowfullscreen="" frameborder="0"></iframe><br></div>
<p>Squeaker is a non-linear multi-language dialogue tree editor. Squeaker makes it easy to focus on composing and editing a game's script while keeping it all organized.</p>
<p>Features:<br></p>
<ul><li>Branching dialogue using questions & answers</li><li>Language translation friendly for every message, answer & character name</li><li>Generated tree view to easily find previous messages</li><li>Tags to assist in searching for related messages</li><li>Events for triggering functions</li></ul>
<p>This product is still in beta & in active development. There are many features to come including more text effects, more search options, translating the interface for non-English users of this application and creating examples for Unity & GameMaker.<br></p>
<p>If you have any bugs or issues with the application, please post about it in the discussion board below so we can help fix the problem.<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/VR6QU7YHOEI" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjg3Mjg4LzQ4NTQzMjYucG5n/original/HGNQdB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg3Mjg4LzgxMTQwNDAucG5n/original/rpM1bt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg3Mjg4LzQ4Nzc3NzkucG5n/original/d%2F9okz.png]]
<h2><strong>Stacks On Stacks (On Stacks)</strong> is a zany 3D tower builder. </h2>
<p>Play as the Master Stacker, Rockit, who must use her psychic helmet to clean up the colorful bricks falling all over her madcap world.</p>
<ul><li>BUILD stable towers by executing architectural feats of balancing.
</li><li>INCORPORATE mixed-up materials into your towers: works of art, aquariums, magnets, and more.
</li><li>DEFEND your towers against invading ghosts, a fireball-breathing dragon, and other outlandish hazards.
</li><li>KNOCK your finished towers back down with a wrecking ball.</li></ul>
<h3><strong>Ways to Play:</strong></h3>
<ul><li>Story mode: 36 stages featuring twists on stacking such as constructing on quicksand or a giant spring scale.
</li><li>Co-op: Team up to complete the game with a partner.
</li><li>Versus: best your bud with better balance with split-screen local multiplayer.
</li><li>Twitch mode: optional Twitch integration lets your viewers vote to influence the game.</li></ul>
<figure><img src="https://img.itch.zone/aW1nLzM0NzMyMzUucG5n/original/gCcqMd.png" alt="Reward laurels" title="Reward laurels" loading="lazy"></figure>
<p><em><br></em><em>Questions? Bugs? </em><em>Contact: <strong> </strong></em><em><strong>support [-at-] herringbonegames [-dot-] com</strong></em><br></p>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/Opk3QYZv2pg" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3OTY0LzM0NzI5MzUucG5n/original/CKGdLp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3OTY0LzM0NzI5MzQucG5n/original/iF3pwq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3OTY0LzM0NzI5MzkucG5n/original/fvEqET.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3OTY0LzM0NzI5MzcucG5n/original/Aktw5m.png]]
<p class="text-center"><br></p>
<p>During its journey StarBoy crashed and got lost in an unknown planet, help him return back to its spaceship!<br></p>
<p><strong><br></strong></p>
<p><strong>INFO</strong>
</p>
<p>6 levels, for approximately 1-2 hours of gameplay, depending on your skill and will to 100% it
</p>
<p>Progress is saved on level completion
</p>
<p>Completing the 6 levels unlocks a level selection screen so you can look for missing shards or try to achieve a better time
</p>
<p>Collected shards are saved when returning to title screen or level selection from the pause menu
</p>
<p><br></p>
<p><strong>CONTROLS</strong></p>
<table><thead><tr><th>Actions</th><th>Keys</th></tr></thead><tbody><tr><td class="text-center">Move</td><td class="text-center">ARROW KEYS | A | D</td></tr><tr><td class="text-center">Jump</td><td class="text-center">X | J</td></tr><tr><td class="text-center">Grab | Throw</td><td class="text-center">C | K</td></tr><tr><td class="text-center">Climb Ladder</td><td class="text-center">ARROW KEYS | W | S</td></tr><tr><td class="text-center">Open Pause Menu</td><td class="text-center">ENTER | RETURN</td></tr></tbody></table>
<p><br></p>
<p><strong>CREDITS</strong><br></p>
<p><a href="https://managore.itch.io/m3x6" target="_blank">m3x6</a> font by Daniel Linssen<br>Some sounds made with <a href="https://rxi.itch.io/sfxia" target="_blank">sfxia</a> by rxi<span></span></p>
<p>Follow me on <a href="https://twitter.com/mrkdji" rel="nofollow noopener" referrerpolicy="origin">Twitter!</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/eRSlmf0wOxU" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzUyNy81ODYyOTQwLmdpZg==/original/Iasxto.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzUyNy81ODY0Mjc3LmdpZg==/original/FKZFqd.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMzUyNy81ODY0Mjc4LmdpZg==/original/07Zaz3.gif]]
<p>A giant cathedral of flesh has appeared in the middle of the ocean on a dying world. A small group of scientists are secretly investigating it when a mysterious woman appears, facing an impossible task.<br></p>
<p><em><strong>Stars Die</strong> is a nonlinear real time scifi mystery game with branching dialogues.</em><br></p>
<p><strong>FEATURES</strong></p>
<ul><li><strong>Completely nonlinear story. </strong>Have long debates with people or ignore them the entire game.</li><li><strong>Five parallel, but interconnected story lines</strong>, each with its own completely separate ending.</li><li><strong>The player isn't at the center of the narrative.</strong> Each character has their own agenda and they will try to act accordingly in real time, with or without you.</li><li>You can <strong>take your time to explore</strong> the environments freely, but you might miss events and conversations if you take too long. </li><li><strong>The choices aren't about moral dilemmas, but ideological ones</strong>. It's all about your personal perspective on the events and what you believe in.</li><li><strong>Dark industrial soundtrack</strong> by composer <a href="https://connorortlinning.bandcamp.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Connor ORT Linning</a>.</li></ul>
<p><strong>ADDED IN 1.2 UPDATE</strong></p>
<ul><li>Steam Key included</li><li>Expanded story and improved dialogues.</li><li>Added optional "Chill Mode": Play without any time limitation</li><li>Added new Secret Ending</li><li>Added more graphic options like toggling Screen Pixelation effect or FOV Slider</li><li>Improved Save System</li><li>Option for increasing text size</li><li>Tons of bug fixes and polish</li></ul>
<p>Additional Notes: </p>
<p><em>-If you can't afford (or don't want) to pay 5 bucks for a short indie game, but still would like to play it here's a <a href="https://drive.google.com/file/d/1UGTvKFniAAVoosA-mXXxOf0vv2ORvbF1/view?usp=sharing" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Google Drive</a> download link. If you like the game, please buy it!</em></p>
<p><em>-For any bugs, feedback or anything at all, you can use the comments below, or contact me with an email at starsdie.egj@gmail.com or on my twitter <a href="https://twitter.com/YorkeEGJ" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@YorkeEGJ</a></em></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/iuyITSnLDgk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjk1NDY3LzE3MDUxNjYucG5n/original/kFB8ek.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk1NDY3LzIyNTU3MTgucG5n/original/tFqRKK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk1NDY3LzQ0OTE2ODIucG5n/original/q2dtY9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk1NDY3LzQ0OTE2ODYucG5n/original/detWQ%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk1NDY3LzQ0OTE2ODQucG5n/original/R0ZmjF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk1NDY3LzQ0OTE2ODMucG5n/original/1%2BD1lf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk1NDY3LzQ0OTE2ODUucG5n/original/cpH25T.png]]
<p>This game is a spiritual successor to Kirby Star Stacker. Enjoy levels of great size, or intense restriction. Chill with an endless mode, or try to speed run it! A relaxing game about the garden, enjoy the sounds of the woods, while using your bug friends to collect the flowers. Sandwich flowers or buds between two matching bug friends to collect them! Or, sandwich special blocks, like the watering well or the lawn mower to use special effects.</p>
<p>Watch some gameplay here: </p>
<div class=""><iframe width="500" height="281" src="https://www.youtube.com/embed/YxPQeh6hCBg" frameborder="0" allowfullscreen=""></iframe></div>
<p></p>
<p>This game was developed by only me, for art, music, sound, and programming using GameMaker1. Its been years since I last worked on the game, and I don't think I have the source code anymore, so I cannot provide support for this game anymore! The game itself is done, there are just a few menu elements that were not finished. Also there are some cheats! Try pressing the left Ctrl, or holding the number keys while clicking the game board!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/YxPQeh6hCBg" frameborder="0" allowfullscreen></iframe>
<h2></h2>
<h2><u>Overview</u></h2>
<p><em>Steam Marines 2</em> brings you to distant star systems and planetoids square in the path of conflict between the Tor alien race and the banner of sentient machines.</p>
<p>Take the helm of the <em>I.S.S. Delhi</em> and build your crew of marines and fleet resources toward the ends you choose.</p>
<ul><li>Permadeath - take care of your marines or die trying.</li><li>Turn-based combat - master movement and fire tactics.</li><li>Procedural generation - ship interiors and planetside levels.</li><li>Factions - human, alien, and robot units with their own gear and tactics.</li><li>Customization - marines with names, portraits, and gear.</li></ul>
<p><em><a href="http://www.SteamMarines2.com" rel="nofollow noopener" referrerpolicy="origin"></a></em><a href="https://www.SteamMarines2.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Official website</a></p>
<p><a href="https://www.worthlessbums.com/PressKit/sheet.php?p=steam_marines_2" target="_blank" rel="nofollow noopener" referrerpolicy="origin">PressKit!</a><br></p>
<p><a href="https://worthlessbums.us19.list-manage.com/subscribe?u=8bf61bade9ecbf95ed2284b64&id=247236cfec" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Email Signup!</a><br></p>
<p><em></em></p>
<p><br></p>
<h2><u>Original Soundtrack</u></h2>
<p><a href="https://worthlessbums.itch.io/steam-marines-2-original-soundtrack" target="_blank">Available on Itch!</a></p>
<p><br></p>
<h2><u>Merchandise</u></h2>
<p><a href="https://www.redbubble.com/people/worthlessbums" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Hoodies and more at Redbubble!</a></p>
<p><br></p>
<h2><u>Crew</u></h2>
<p>Coder/Designer - Yik-Sian James Seow</p>
<p>Character Animator - Edward del Villar</p>
<p>Environment Artist - Daniel Allen</p>
<p>Portrait Illustrator - Jenny Pattison</p>
<p>Audio - James Mulvale</p>
<p>User Interface Art - David G. Baumgart</p>
<p><br></p>
<h2><u>Other Links</u></h2>
<p><a href="https://worthlessbums.itch.io/steammarines" target="_blank">Steam Marines on Itch!</a>
</p>
<p><a href="https://worthlessbums.itch.io/steam-marines-3" target="_blank">Steam Marines 3 on Itch!</a></p>
<p><br></p>
<h2><u>Minimum System Requirements</u></h2>
<p><em>Windows</em></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p><li><strong>OS: </strong>Windows 7</li><li><strong>Processor: </strong>2.0 GHz Dual Core</li><li><strong>Memory: </strong>2 GB RAM</li><li><strong>Graphics: </strong>700Mhz / 1GB</li><li><strong>DirectX®: </strong>10 (shader model 4.0)</li><li><strong>Hard Drive: </strong>1 GB HD space</li><li><strong>Screen Resolution:</strong> 1366x766</li><li><strong>Input:</strong> Mouse and keyboard</li><p></p><p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p><span></span></p>
<p><em>Linux</em></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p><li><strong>OS: </strong>Ubuntu 14.04 LTS</li><li><strong>Processor: </strong>2.0 GHz Dual Core</li><li><strong>Memory: </strong>2 GB RAM</li><li><strong>Graphics: </strong>700Mhz / 1GB (not Intel HD Graphics)</li><li><strong>Hard Drive: </strong>1 GB HD space</li><li><strong>Screen Resolution:</strong> 1366x766</li><li><strong>Input:</strong> Mouse and keyboard</li><p></p><p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p><u><br></u></p>
<p><u></u></p>
<h2><u>Steam Keys</u></h2>
<p>Every purchase of <em>Steam Marines 2</em> on Itch.io will come with one Steam key when the game releases on Steam.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/6CWZy5CLyEs" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTMzMDUvMjA0MzYxOS5naWY=/original/UnfHv8.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTMzMDUvMjA0MzU2Mi5naWY=/original/eOb57w.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTMzMDUvMjA0MzYwNS5naWY=/original/UmCeCM.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTMzMDUvMTU2ODM3My5wbmc=/original/VzDkbv.png]]
<iframe width="550" height="309" src="https://www.youtube.com/embed/Mw5T_Bs5-H0" frameborder="0" allowfullscreen=""></iframe>
<p>
Steam Marines is a squad based Roguelike featuring tactical play focused on positioning and careful use of resources. Keep on your toes as you fight through your besieged ship trying to reach each level's elevator. <br>
<br>
<strong>Features</strong></p>
<ul><li>Death is permanent and fallen marines are gone forever.</li><li>Five marine classes, each with their own unique weapon effects.</li><li>Four ranks and five perks for marine build diversity.</li><li>Exoskeleton suits stripped from the hulks of dead enemies.</li><li>Challenging bosses that do not negate the tactics you have learned.</li><li>New Game Plus!</li></ul>
<p><a href="https://worthlessbums.us19.list-manage.com/subscribe?u=8bf61bade9ecbf95ed2284b64&id=247236cfec" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Email Signup!</a></p>
<p><br></p>
<h2><u>Other Links</u></h2>
<p><a href="https://worthlessbums.itch.io/steam-marines-2" target="_blank">Steam Marines 2 on Itch!</a><br></p>
<p><a href="https://worthlessbums.itch.io/steam-marines-3" target="_blank">Steam Marines 3 on Itch!</a><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/Mw5T_Bs5-H0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMzkvMTA2NTY3OC5naWY=/original/o4gRaC.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMzkvNDE4NDcuanBn/original/4zRx%2F8.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMzkvNDE4NDguanBn/original/7p3kGm.jpg]]
<p class="text-center"><em>"Well, you're an odd fellow but you write a good game" -</em> Erika Chappell<br><br></p>
<p>Look, some people have good, reasonable solutions to their trivial problems.</p>
<p>Some people are boring.</p>
<p>Steamed Hams is a game about having excellent, ridiculous solutions to your problems and escalating wildly until you find an excellent, ridiculous solution that works. It's one page long, designed for oneshots, and plays quickly.</p>
<p>It is meant to emulate the eponymous Simpson's episode or shows like Blackadder.</p>
[img width=500 [https://img.itch.zone/aW1nLzMyMjkwOTMucG5n/original/tUttAF.png]]
<p><strong>Windows, Linux and Mac updated to 1.11.0.<br></strong></p>
<p>This adds all of the final stage (the Hyperspace Beacon), improves appearance <br></p>
<p>and fixes many bugs.<br><br><a href="https://deepshock.itch.io/steel-seraph/devlog/240298/version-1100-updated-on-windows-linux-and-mac">https://deepshock.itch.io/steel-seraph/devlog/286547/version-1110-updated-on-windows-linux-and-mac-to-follow-in-a-few-weeks</a><br></p>
<p>.<br></p>
<p><br></p>
<p><span></span></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/aT_wIdRY5ts" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk3Ni5wbmc=/original/SWDl46.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk4NS5wbmc=/original/hihy4h.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxOTAwMC5wbmc=/original/nTWeMB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk3OC5wbmc=/original/kecn2a.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk4NC5wbmc=/original/2bz3yE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk5OS5wbmc=/original/n%2FDgSp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk4MC5wbmc=/original/goI3k8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk4MS5wbmc=/original/Z%2FQKb5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk5Ni5wbmc=/original/HCUmry.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk4Ny5wbmc=/original/UFTCpo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk4Mi5wbmc=/original/gmBJrH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk3Ny5wbmc=/original/oyCX1g.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk5OC5wbmc=/original/fM4jmk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk4My5wbmc=/original/M4zgFg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk4Ni5wbmc=/original/ShaG45.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk5MC5wbmc=/original/wmbGKl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk4OS5wbmc=/original/QnLQ05.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk5Ny5wbmc=/original/EtQ3v5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk5Mi5wbmc=/original/9j79x7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk4OC5wbmc=/original/%2B8vjYM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk5MS5wbmc=/original/2uVLS3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk5My5wbmc=/original/WBD87x.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk5NC5wbmc=/original/oEqayu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzUxNzIvMzAxODk5NS5wbmc=/original/3k5Wct.png]]
<p>Sticky Cats is a 2 - 4 player party game, where players must steal the fish and escape out the window while sticking to everything and causing mayhem along the way.</p>
<p><strong>NOW WITH ONLINE MULTIPLAYER!</strong></p>
<figure><img src="https://img.itch.zone/aW1nLzU5ODQyMjIucG5n/original/56iHPx.png" loading="lazy"></figure><p><strong>Gamepad Controls:</strong><br></p>
<p>Start/triangle button: Join game<br>Joystick: Move/aim for jumping<br>A or X button : Jump<br>Back button: Restart level</p>
<p><strong>Keyboard Controls:</strong></p>
<p>Enter: Join game<br>WASD/Arrow keys: Move/aim for jumping<br>Space: Jump<br>R: Restart level</p>
<p><strong>Credits:</strong></p>
<p>Jem Smith - Design and code<br><a href="https://twitter.com/jemmiwinks" target="_blank" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">@jemmiwinks</a></p>
<p>Jason Sutherland - Design, art, and audio<br><a href="https://twitter.com/DriftPrism" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@DriftPrism</a></p>
<p>Follow <a href="https://twitter.com/stickycatsgame" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@stickycatsgame</a> on Twitter</p>
<p>Please get in touch if you have any feedback, issues, or questions, and we’ll try and help.</p>
<p>Thanks for playing!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/ohPWwpeXy3U" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDExNjc2LzIxMzk3NjEucG5n/original/iHVxA4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDExNjc2LzIxMjI3NDYucG5n/original/3LRIXo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDExNjc2LzIxMjI3NDUucG5n/original/zxdlG4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDExNjc2LzIxMjI3NDMucG5n/original/9lVbxz.png]]
<p><strong><em>Stillfleet </em>is a new tabletop RPG about exploring ruined spacecraft—hulks—and habitable earth-like planets, cut off from contact with Terra for decades or centuries—rocks.</strong></p>
<p>Players take the roles of "voidminers"—explorers working for the Worshipful Company of Stillfleeters, more often known simply as <strong>the Co</strong>. Their home, the alien space station nicknamed <strong>Spindle</strong>—a sea slug made of undulating black stone, kilometers tall—is a mystery to its own inhabitants. It brims with timespace gates called <strong>stiffworks</strong>, many of which are already tacked to habitable worlds…</p>
<p>This Quickstart contains twenty-eight pages of <strong>rules, aliens, settings, and random tables</strong>, as well as a separate document with eight <strong>Pregenerated Characters</strong>—all different species and classes.</p>
<p>The <em>Stillfleet</em> rules system is unique and highly flexible. We've playtested it with old-school RPG fans, new-school gamers, sci-fi fans, and random passersby.<br></p>
<p>If you enjoy the Quickstart, support us on <a href="https://patreon.com/stillfleet" rel="nofollow noopener" referrerpolicy="origin">Patreon</a>, sign up for our <a href="https://mailchi.mp/9c0cbba1ff48/stillfleetearly-access" rel="nofollow noopener" referrerpolicy="origin">mailing list</a>, follow us on <a href="https://www.instagram.com/stillfleet/" rel="nofollow noopener" referrerpolicy="origin">Instagram</a> and <a href="https://twitter.com/stillfleet" rel="nofollow noopener" referrerpolicy="origin">Twitter</a>, and join us on <a href="https://discord.com/invite/vu3vnm5" rel="nofollow noopener" referrerpolicy="origin">Discord</a>! We'll be releasing more modules soon, building toward the full Core Rulebook.</p><p>Many thanks to all of our playtesters, including the cast of the amazing podcast <a href="https://funcity.ventures/episode/float-city-1-ah-sun-flower/" rel="nofollow noopener" referrerpolicy="origin">Fun City</a><em></em>!</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjIzNjI5LzM5MTM2MTYuanBn/original/L9S2YD.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjIzNjI5LzM5MTM1MzAuanBn/original/9M00ny.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjIzNjI5LzM5MTM1MzMuanBn/original/IGlYd%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjIzNjI5LzM5MTM1MzEuanBn/original/%2BX1Mit.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjIzNjI5LzM5MTM1MzIuanBn/original/38AGV9.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjIzNjI5LzM5MTM1MzQuanBn/original/pqM6mP.jpg]]
<p>The two of you enter the shrine together. Only one of you will leave. Such is the ritual. Such is the path to restoring peace with your community. Something must transform.</p>
<p>Stories and Smoke is a narrative game about confronting yourself, your past, and your community, and choosing how -- or <i>if</i> -- you will return to your society. What soured the relationship with your people, during your training as a Bard? How will you move forward with your life, and reintegrate your story? How do you feel about the Other who is in here with you?</p>
<p>Who will walk out of the shrine?</p><p></p>
<p>~</p>
<p>Originally created during the 2020 Global Game Jam.</p>
<p>~</p>
<p><strong>Credits:</strong></p>
<p>Writing: Lucas J.W. Johnson and Claris Cyarron<br>Music and Sound: Devin Vibert<br>2D Art: Kimberly Parker<br>Programming and 3D Art: ceMelusine<br>Game concept by Claris Cyarron</p>
<p>Produced by Silverstring Media Inc.</p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTY2NTMyLzI5NzYyNjgucG5n/original/JmFUuT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY2NTMyLzI5NzYyNzAucG5n/original/NMXF5E.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY2NTMyLzI5NzYyNjkucG5n/original/Bj1KID.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY2NTMyLzI5NzYyNzMucG5n/original/pRKS3h.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY2NTMyLzI5NzYyNzEucG5n/original/NtEjQi.png]]
<p>Camping! S'mores! Spooky stories! Being too scared to go pee at 3 am in the deep abyss that consumes the forest each night when the terrors arise and feast upon those who stray too far from the glowing embers of the dying fire!<br></p>
<p>STORYTELLER is an ad-lib campfire narrative game of monsters, horror and mystery. Create engaging stories in the wilderness with just camping equipment.</p>
<p>Play can happen either in Game Mode as a traditional roleplaying game, or in Story Mode, to tell an interactive story to an audience.</p>
<p>Set-up involves filling out a Story Prompt that consists of eight fill-in-the-blanks. Players can optionally fill out a Character Profile to define individual characters. This rulebook provides a myriad of options for each, or you can come up with your own.</p>
<p>Once you have played several times, you can sit around the campfire with nothing but your imagination and camping equipment to tell tall tales together. Narrating is easy enough that everyone can take a turn.</p>
<p>-----------------------------------------------------</p>
<p><a href="https://pandiongames.itch.io/storyteller-creators-guide"><strong>Find the Storyteller Creator's Guide Here</strong></a><strong></strong></p>
<p>-----------------------------------------------------<br></p>
<h5>SAFETY</h5>
<p>STORYTELLER is designed as a horror game that depicts gruesome scenes, violence against adults, children, and animals, and explores dark places in the human psyche. Before play, talk with your group about anything that would be too uncomfortable.<br></p>
<p>The X-Card is a mechanic to signal when someone is uncomfortable. At the campfire, this can be a stone that is held up, throwing an acorn into the fire, or placing both hands on their head.</p>
<p>Talk with your players about what your signal will be. If at any time someone uses an X-Card, simply fade to black and move on. No questions asked. After the story, remember to check on the health of someone who has played an X-Card.</p>
<p><strong>Parents: </strong>Please review the contents of this book. While this is an excellent game to play with teenagers, some options are not appropriate for all age levels. This game is designed for ages 13+ but it can be adapted for any age group.</p>
<p><br></p>
<p>----------------------------------------------------<br></p>
<p>This updated edition includes creatures, folklore, locations and settings from South America, researched and written by Armandah @ <a href="https://armandah.itch.io/">armandah.itch.io</a>! Development Editing by Matt Sanders @ <a href="https://sealedlibrary.itch.io/">sealedlibrary.itch.io</a><br></p>
<p>We are keeping the "Storyteller Old Edition" online as a free edition and does not include the updated creatures, folklore, design and layout or updated and clarified rules.</p>
<p>Physical copies will be available in the near future.<br></p>
<p>Follow us here and on Twitter to stay up to date!<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNjk4My83NjI2NzIwLnBuZw==/original/JZLbDp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNjk4My83NjI2NzE5LnBuZw==/original/wtKnNe.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNjk4My83NjQwNTUxLnBuZw==/original/3uv6LJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNjk4My83NjI2NzA2LnBuZw==/original/pcyHnC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyNjk4My83NjQxNjE0LmpwZw==/original/VJxhXc.jpg]]
<p>Fossil moth slideshow<br></p>
<p>
<span></span>alt=3D"Highlights From The Past Decade"
</p>
<p>
ص¤SèªÃyÖéénºùõtº¬hÿßðrÌ×Ýo¦ßÞið¤×dõù¢ ƪüaó·åsæϵ ô¥Ól¶â¼oÁ¼ðw¢à² ³éýaâÂÅs¤ûº ú½²$¤×ì0§Èí.æâ¦3ìÕ·5å¸ì
</p>
<p>
Come up her eyes open. Next to winter air and now that.
</p>
<p>
<span></span><td>Puzzled by judith bronte adam. According to hide her chair.</td></p>
<p>
control =
</p>
<p>
room.
</p>
<p>
Taking her =
</p>
<p>
chair to get more.
</p>
<p>
(And) leaned down the center of someone.</span></p>
<p>
<span style=3D"color:#F2F6F4; font-size:9pt">Already made sure you =
</p>
<p>
women.<br>Skip had given him o=EF ered. Again he felt as though someone =
</p>
<p>
else.
</p>
<p>
>:</span>Tears and found the bu=EF alo robes. Stay put in =
</p>
<p>
Word in search of wind as =</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjkzNzMvMTI0MzAzLnBuZw==/original/42HKS3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjkzNzMvMTI0MzA2LnBuZw==/original/XW5Vj5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjkzNzMvMTI0MzA0LnBuZw==/original/4oOmsK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjkzNzMvMTI0MzA4LnBuZw==/original/kFIxHk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjkzNzMvMTI0MzExLnBuZw==/original/QSU6x0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjkzNzMvMTI0MzA5LnBuZw==/original/TaQMaH.png]]
<p class="text-center"></p>
<h3 class="text-center">An occult forest rave<br>Strange rituals<br>Enigmatic organisers<br>An ancient Evil</h3>
<h2 class="text-center"><img src="https://img.itch.zone/aW1nLzI2MzkzMTEucG5n/original/83Zf28.png" loading="lazy"></h2>
<p></p>
<p><br><img src="https://img.itch.zone/aW1nLzI2MzkxMjUucG5n/original/SDsTls.png" loading="lazy"><br>Following a promise of the ultimate expression of freedom, you find yourself at the Headless Festival. However, that freedom comes at a cost as the organisers announce that the price of admission is the lives of all attendees.<br>Find a way to escape, even as the forest itself appears to work against you. Try to maintain a grip on reality while logic takes a backseat. And whatever you do, stay away from the sinister presence in the darkness.<br>Can you make your way out without losing yourself?<br><br></p>
<figure><img src="https://img.itch.zone/aW1nLzQ4MjQyNzMucG5n/original/VffUbA.png" loading="lazy"><br><br><br></figure>
<p><img src="https://img.itch.zone/aW1nLzI2MzkxMjgucG5n/original/pm2niF.png" loading="lazy"><br>- Original EDM soundtrack by <em>DOX NARA</em><br>- Classic survival horror through a psychedelic rave lens<br>- Macabre puzzles following twisted logic<br>- In-game smartphone mechanic that helps you locate points of interest and consult the numerous attendees for help<br><br></p>
<p><img src="https://img.itch.zone/aW1nLzQ4MjQyODQucG5n/original/vh5CHK.png" loading="lazy"><br></p>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzI2MzkxMjkucG5n/original/Iooz%2Bi.png" loading="lazy"><br>This is the full release for Strobophagia, a first person horror game in which you navigate your way through a rave and solve puzzles to survive.<br>Join our <a href="https://discord.gg/u9y3fHm" rel="nofollow noopener" referrerpolicy="origin">discord</a> to tell us what you think!<br><br></p>
<p><img src="https://img.itch.zone/aW1nLzI2MzkxMzEucG5n/original/uTLM4L.png" loading="lazy"><br>Made by indie developer studio Green Tile Digital</p>
<p>Full credits in game</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/ApPgJkeuH5c" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTA3NDMyLzQ4NTA4NjIucG5n/original/2LlvCR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA3NDMyLzQ4NTA4NTAucG5n/original/tn%2BSw6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA3NDMyLzQ4NTA4NTIucG5n/original/yhLMwz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA3NDMyLzQ4NTA4NjQucG5n/original/YoKmnn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA3NDMyLzQ4NTA4NjEucG5n/original/bc%2F%2FEJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA3NDMyLzQ4NTA4NTQucG5n/original/rcC%2BrT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA3NDMyLzQ4NTA4NTcucG5n/original/GjRVLw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA3NDMyLzQ4NTA4NjUucG5n/original/mbq4FF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA3NDMyLzQ4NTA4NjgucG5n/original/2XY600.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA3NDMyLzMxNTM4MjUucG5n/original/wkSJas.png]]
<p><strong><u>JUEGO TAMBIÉN DISPONIBLE EN ESPAÑOL</u></strong></p>
<blockquote>You know, I've been thinking. Everything is... just comes together. It's me. I chose this. I chose all this. This rock... this rock has been waiting for me my entire life. It's entire life, ever since it was a bit of meteorite a million, billion years ago. In space. It's been waiting, to come here. Right, right here. I've been moving towards it my entire life. The minute I was born, every breath that I've taken, every action has been leading me to this crack on the out surface.<br>- Aron Ralston, 127 hours</blockquote>
<p>You are at the bottom of a crevasse 1,000 feet below ground. You lie in the middle of nowhere and no one knows you came here. A big rock fell with you and is pressing your hand against the stone surface. <strong>You are stuck.</strong></p>
<p>Your only way out is surviving until rescue ... unless you want to recur to more <em>permanent </em>methods. </p>
<hr>
<p><em>Stuck and Wretched</em> is a game that uses the <em>Wretched & Alone SRD</em> based on <em>The Wretched</em> from Chris Bissette. It is a game of self discovery, despair and hope inspired by the movie 127 hours.</p>
<p>In order to play the game you only need a deck of cards, a die, and this manual. It is recommended to play with a tumbling block tower as well for a better experience, though not entirely necessary.<br></p>
<p>The game comes with 2 pieces of sountrack that were created to help the player become more inmersed in the situation they are playing. These were made in 48hs for the 2021 Global Game Jam by <strong>DJ Scihacker</strong> and thus aren't long enough for a full play session. If the game does well enough I'll look to include a longer soundtrack to the game.</p>
<p><strong>Content Warning (CW): </strong>claustrophobia, extreme hunger and thirst, hallucinations, killing animals for survival, physical pain, self-harm.</p>
<hr>
<p><u><strong>Art</strong></u></p>
<p>Ana Clara Novelli</p>
<p><u><strong>Soundtrack</strong></u></p>
<p>DJ Scihacker</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTA2MzY3LzUxNjY5MTEuanBn/original/%2FVodya.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTA2MzY3LzUxNDc3MDcucG5n/original/FpDwV%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTA2MzY3LzUxNjY4NTUuanBn/original/ApyhUA.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTA2MzY3LzUxNjY4MzYuanBn/original/cN74Tq.jpg]]
<p>This asset pack contains five stylized fruits and a plate. The fruits are a peach, an apple, a pear, a banana and an orange.</p>
<p>The pack was made with Blender and Substance Painter Each fruit has between 400 to 800 triangles. By purchasing this pack, not only you greatly support me, but you also get:</p>
<ul><li>Access to .fbx files ready to be imported in Unreal or Unity;</li><li>Blender and Substance Painter source files;</li><li>Access to 6 different maps, including normal, glossiness and ambient occlusion.</li></ul>
<p>You can also check out the model for free on Sketchfab! However, if you choose to download it there, you will be missing most of the features above. <a href="https://sketchfab.com/3d-models/fruit-plate-b2f08062bfb84d5ea94c1aa596817e76" rel="nofollow noopener" referrerpolicy="origin">https://sketchfab.com/3d-models/fruit-plate-b2f08062bfb84d5ea94c1aa596817e76</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODY1Mzc0LzQ4NzAxOTYucG5n/original/JgQ9%2B%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY1Mzc0LzQ4NzAxOTkucG5n/original/9vAFbG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY1Mzc0LzQ4NzAxOTgucG5n/original/FUxwZ6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY1Mzc0LzQ4NzAxOTcucG5n/original/lHV4rF.png]]
<p>
<br>
</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/Eii9Di0h8SE" frameborder="0" allowfullscreen="">
</iframe>
<p>Subterrarium is a game about digging your way home through…unconventional means. </p>
<p>Collect money from dirt, use it to buy soda from vending machines, and then use that soda to water the seeds scattered around the level.
</p>
<p>Every plant gives you an advantage, whether it's a vine that allows you to reach great heights, or a bombplant that clears out a chunk of dirt for you.</p>
<p>But be careful—with every move, the dirt becomes more unstable. One wrong step could lead to a fatal cave-in.</p>
<hr>
<p>
Game: Taylor Anderson (@ttl_anderson)
</p>
<p>
Music+Sounds: PixelFx (pixelfx.bandcamp.com)
</p>
<p>
<br>
</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/Eii9Di0h8SE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzAxMzkvMTM2MzIyLnBuZw==/original/JTGlNe.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzAxMzkvMTM2MzIzLnBuZw==/original/sD2Yjr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzAxMzkvMTM2MzI0LnBuZw==/original/kZRRT2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzAxMzkvMTM2NDg5LnBuZw==/original/FFRFqI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzAxMzkvMTYwMTgzLnBuZw==/original/vbxNXS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzAxMzkvMTYwMTg1LnBuZw==/original/tgYBpv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzAxMzkvMTYwMTg3LnBuZw==/original/sVCBEo.png]]
<p>Sun Dogs is about exploring our inner solar system, altering your body, and embracing death.</p>
<p>In a future where humanity alters itself without a second thought, you must do the same. Skim along the Sun's corona, float in the Venusian clouds, travel the Martian plains. When your body dies, your mind will be given a new one, and you will keep going.</p>
<p>Featuring an expansive world of unique science fiction, spread across planets, moons, and space stations. Dynamic text reacts to your character and your actions, and a full modding system allows you to rewrite the entire game.</p>
<p>Follow <a href="http://www.twitter.com/sundogsgame" rel="nofollow noopener" referrerpolicy="origin">twitter</a> for more updates and bits of fiction. </p>
<p>Credits: </p>
<p><a href="http://www.twitter.com/nictringali" rel="nofollow noopener" referrerpolicy="origin">Nic Tringali</a> - writing and design <br><a href="http://www.twitter.com/azuresama" rel="nofollow noopener" referrerpolicy="origin">Rebecca McCarthy</a> - writing<br><a href="http://www.twitter.com/coda_b" rel="nofollow noopener" referrerpolicy="origin">Sasa-P</a> - music</p>
<p>Praise for <em>Sun Dogs</em>: </p>
<p><a href="http://killscreendaily.com/articles/sun-dogs-uses-text-interrogate-our-solar-system/" rel="nofollow noopener" referrerpolicy="origin">Kill Screen</a>: "... vagueness and ambiguity are their own virtues in Sun Dogs." <span></span></p>
<p><a href="http://boingboing.net/2015/11/03/sun-dogs-game.html" rel="nofollow noopener" referrerpolicy="origin">Offworld</a>: "The real meat of the game is the text, lush but brief, that appears to illuminate the vast array of worlds and cultures you explore."</p>
<p><a href="https://emshort.wordpress.com/2015/10/29/sun-dogs-royal-polygon/" rel="nofollow noopener" referrerpolicy="origin">Emily Short's Interactive Storytelling</a>: "The biggest appeal for me was simply drifting from place to place and investigating all the unusual places and events." <span></span></p>
<p><a href="https://steamcommunity.com/linkfilter/?url=http://www.failbettergames.com/failbetter-suggests-sun-dogs/" rel="nofollow noopener" referrerpolicy="origin">FailBetter Games:</a> "... a memorable and intelligent flavour to its economically written stories." <span></span></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/sI35OiUxK7s" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzg1MzEvMTY5NTI4LnBuZw==/original/TQ0gxz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzg1MzEvMTY5NTI1LnBuZw==/original/p32B3n.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzg1MzEvMTY5NTI5LnBuZw==/original/T7Dbat.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzg1MzEvMTY5NTMwLnBuZw==/original/FLPs54.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzg1MzEvMTY5NTI0LnBuZw==/original/LATRzp.png]]
<p><img src="https://img.itch.zone/aW1nLzM1ODkzNzYuZ2lm/original/M1unLn.gif" loading="lazy"></p>
<h2>Resist or Embrace</h2>
<p><em>Sundered </em>is a chaotic hand-drawn metroidvania where you resist or embrace ancient eldritch powers. Confront hordes of terrifying enemies in an ever-changing world inspired by the works of H.P. Lovecraft. <em>Sundered </em>is a challenging and unique take on a classic genre from the creators of Jotun, now with local co-op!<br><br>You play Eshe, a wanderer in a ruined world, trapped in ever-changing caverns filled with hordes of terrifying enemies. Harness the power of corrupted relics to defeat gigantic bosses, at the cost of your humanity. Resist or embrace.<br><br><em>Sundered: Eldritch Edition</em> includes the <strong>Magnate of the Gong update</strong>, adding local co-op multiplayer support for up to 4 players, along with new areas and a chaotic battle against the new Magnate of the Gong boss!<br></p>
<p><img src="https://img.itch.zone/aW1nLzM1ODkzODEuZ2lm/original/sAXJVI.gif" loading="lazy"><br></p>
<h2>Key Features</h2>
<ul><li>Beautiful hand-drawn art and animation</li><li>Chaotic encounters against hordes of enemies</li><li>Epic boss fights</li><li>Optional local co-op for up to 4 players</li><li>Hundreds of upgrades and multiple character builds</li><li>A mix of hand-crafted & procedural levels</li><li>Multiple endings and over 15 hours of gameplay</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/bHRFT4o6TR0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjY0OTM2LzM1ODkxNzEucG5n/original/sinBjN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0OTM2LzM1ODkxNzIucG5n/original/ZE7%2BtJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0OTM2LzM1ODkxNzMucG5n/original/eYZ1Y%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0OTM2LzM1ODkxNzQucG5n/original/%2BJWEe2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0OTM2LzM1ODkxNzUucG5n/original/9WAVEe.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0OTM2LzM1ODkxNzYucG5n/original/fJU%2BBA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0OTM2LzM1ODkxNzcucG5n/original/t77EH7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0OTM2LzM1ODkxNzgucG5n/original/%2F27Yhy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0OTM2LzM1ODkxNzkucG5n/original/VmmRCg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0OTM2LzM1ODkxODAucG5n/original/jg1RqW.png]]
<p>This game was made for the Touhou Station Game Jam. All Touhou intellectual property belongs to ZUN / Team Shanghai Alice, and we greatly appreciate the opportunity to work with a part of it. Other credits present within the game itself.</p>
<p>Below is the original description from the jam submission:</p>
<p>A game where you try to grow sunflowers while fairies steal them and shoot at you.<br>There is some story content, but it is not necessary to enjoy the gameplay.<br>ヒマワリを植えて面倒を見ながら邪魔しに来るイタズラ妖精たちをぶっ倒すゲームです。<br>ストーリー性は特にないのでゲームプレイを楽しめると幸いです<br> <br>Controls:<br>Arrow keys / 方向キー : move<br>SPACE: Plant seeds / 種をまく<br>C: Growth Aura / 成長オーラ<br>SHIFT: Focus / フォーカス<br>Z: Shoot / シュート<br>X: Bomb / スペルカード<br>CTRL: Skip dialogue / 会話をスキップ<br> <br>Modes:<br>Story Mode / ストーリーモード<br>Endless Mode / エンドレスモード<br> <br>Support:<br>Windows / Mac OS X / Linux</p>
<p><br></p>
<p>(and yes, I am aware that it says it is a debug version. Don't mind that)</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMTQ5LzQxMjE2MTQucG5n/original/8I61av.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMTQ5LzQxMjE2MDEucG5n/original/UKrYB%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMTQ5LzQxMjE1OTkucG5n/original/MOw4Fo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQwMTQ5LzQxMjE2MDAucG5n/original/j9amvA.png]]
<p>Super Box Land Demake is a 2D top-down puzzle game with colorful pixelated graphics where you can solve puzzles playing alone or with a friend.<br></p>
<p>You'll need to push boxes to the right places to open the gate and go to the next level. You'll be able to play in single-player mode controlling 1 or 2 characters at same time, or in local co-op mode with a friend, changing modes on the fly during levels the way you prefer. </p>
<p>To help you on your puzzle quest, you’ll have a Magic Cam! A powerful device, that permits you go back in time and undo some movements. But watch out your battery meter! Your Magic Cam needs batteries to keep working. Can you solve the puzzles and reach the end of this puzzling adventure? So keep your brain sharp and let’s go!</p>
<p>This game is a Demake version of "Sokoban Land DX", featuring Completely new graphics, new Bonus Levels and other improvements.</p>
<p>FEATURES</p>
<ul><li>100 levels across 5 different worlds with unique puzzles and visuals;</li><li>Colorful 8-bit style graphics; </li><li>3 Difficult levels to suit your playstyle;</li><li>Single player and local co-op modes, that can be changed on the fly during levels;</li><li>Use a Magic Cam to undo some movements;</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/ZEvLldfzCiI" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzAzNDI3LzM4ODUzMDgucG5n/original/vBNKAL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzNDI3LzM4ODUzMTYucG5n/original/3ns12y.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzNDI3LzM4ODUzMTcucG5n/original/oXjmyV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzNDI3LzM4ODUzMTAucG5n/original/uAAtpI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzNDI3LzM4ODUzMTEucG5n/original/Df3H6y.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzNDI3LzM4ODUzMDkucG5n/original/ogE%2FAV.png]]
<p class="text-center">[English]</p>
<p><img src="https://img.itch.zone/aW1nLzU2MjkyNTcucG5n/original/XHq622.png" loading="lazy"><br></p>
<p class="text-center">[Português - Brasil]</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzU2MjkzNzgucG5n/original/9JufTL.png" loading="lazy"></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzU2MjkzODkucG5n/original/IWUGP%2F.png" loading="lazy"><br></p>
<p class="text-center"><br></p>
<p class="text-center"><strong>🏆Primeiro lugar na Game Jam+ 2020 Natal<br></strong></p>
<p class="text-center"><strong>🏆Melhor Direção de Arte na Game Jam+ 2020<br></strong></p>
<p><br><strong></strong></p>
<p class="text-center"><strong>🏆1st Winner Game Jam+ 2020 Natal<br></strong></p>
<p class="text-center"><strong>🏆Best Art Direction Game Jam+ 2020</strong>
</p>
<p><strong></strong>
</p>
<p><strong>
</strong>
</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzU2MzQwMzQucG5n/original/OEgJr3.png" loading="lazy"><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/9B1eoRVeK14" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzg1Njg4LzU2MzM5NDMuZ2lm/original/tV4UG9.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg1Njg4LzU2MzM5NTUuZ2lm/original/Z9C33c.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg1Njg4LzU2MzQwOTgucG5n/original/X%2FULXc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzg1Njg4LzU2MzQwOTcucG5n/original/7mJy3A.png]]
<p><strong> the SUPERHOT ❌ Baba is You mashup game you did not ask for but that you got anyway<br></strong></p>
<p>Break the rules of time and rearrange them to get yourself out of tricky situations. Or at least, die trying.</p>
<p><strong>CONTROLS</strong></p>
<ul><li>Move: WASD / ZQSD / Arrow keys</li><li>Jump: Space</li><li>Shoot: Left click</li><li>Throw gun: Right click</li><li>E: Edit Rules</li><li>R: Restart</li><li>U: Undo</li><li>Escape: Main menu / Quit</li></ul>
<p>Basic joystick support (tested with an Xbox controller on Windows)<br></p>
<p><em>« It's the most innovative shooter I've painfully debugged in years »</em><br></p>
<p>Made by <a href="https://twitter.com/Pyrofoux" rel="nofollow noopener" referrerpolicy="origin">Pyrofoux</a> for 7DFPS, ProcJam and Secret Santa Jam.<br><br></p>
<p><strong>Special Thanks to</strong><br></p>
<ul><li><a href="https://www.hempuli.com/" rel="nofollow noopener" referrerpolicy="origin">Hempuli</a>, dev of the incredible Baba is You (original inspiration, graphics and music)</li><li>The whole <a href="https://superhotgame.com/superhot-prototype/" rel="nofollow noopener" referrerpolicy="origin">Super Hot</a> team (original inspiration, graphics and sounds)</li><li>André Cardoso's Superhot Bullet time <a href="https://github.com/mixandjam/Superhot-BulletTime" rel="nofollow noopener" referrerpolicy="origin">Unity project</a></li><li>Caldric Clement for letting me use their <a href="https://www.youtube.com/watch?v=KJd5A739W5E" rel="nofollow noopener" referrerpolicy="origin">Baba is You theme remix</a></li><li>The <a href="https://www.spriters-resource.com/pc_computer/babaisyou/sheet/115231/" rel="nofollow noopener" referrerpolicy="origin">Spriter Ressource</a> for their super handy sprites</li><li>The person who made this <a href="https://www.youtube.com/watch?v=GXE0VqH08sc" rel="nofollow noopener" referrerpolicy="origin">shader tutorial</a></li><li>MBoffin for their <a href="https://github.com/MBoffin/SimpleFPSController" rel="nofollow noopener" referrerpolicy="origin">Unity controlle</a>r example and the Secret Santa coincidences</li><li>scrummer03 for patiently waiting for me to finish this game (;u;)</li></ul>
<p><br></p>
<p>Want to mod the game or create your own levels? <br>Check out the game's source code in this <a href="https://github.com/Pyrofoux/SUPER-IS-HOT" rel="nofollow noopener" referrerpolicy="origin">GitHub repository</a>! <br></p>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/MAMRfY23od8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODUzNzc4LzgyMjEyMjguanBlZw==/original/%2Fnv%2FXn.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvODUzNzc4LzQ5NDA4MzkucG5n/original/u1itaI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODUzNzc4LzgyMjEyMjkuanBlZw==/original/jOhlpx.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvODUzNzc4LzgyMjEyMzAuanBlZw==/original/%2FaKFTz.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvODUzNzc4LzQ5NDA4OTkucG5n/original/5P0iui.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODUzNzc4LzQ5NDA4OTAucG5n/original/PoV0qO.png]]
<p><img src="https://img.itch.zone/aW1nLzM3Nzc4OTMucG5n/original/ZvMa1G.png" loading="lazy"><br></p>
<p><em>Super Mutant Slayers</em> is a co-op Monster-Slaying RPG-lite with a dash of competition thrown in. It takes gameplay elements from popular video game series like <em>Monster Hunter, Phantasy Star Online, Destiny, </em>and <em>Pokemon, </em>and turns them into a quick and easy to play card-based tabletop experience. </p>
<p>Set in a virtual sci-fi world plagued with hackers and buggy code that ruins the fun for other players, <em>Super Mutant Slayers </em>puts you and your friends in the role of an elite group players known as Hunters--bug-squashing mercs who must use the very glitched-out loot they’re hired to delete in order to take down their bounties.</p>
<p>Equip yourselves with laser swords, plasma cannons, and powerful elemental attacks to create the most effective team possible. As you slay these Beasts, you and your friends will score hacked loot that can be used to upgrade your gear or stashed away for cash once your campaign is complete to be crowned the Master Hunter. Be careful though--get too greedy and you may find yourself ill-equipped to take down the elite creatures that plague this glitched online world!</p>
<p><strong>Features:</strong></p>
<ul><li><strong>Monster Slaying gamepaly IRL: </strong><em>Take on massive creatures and craft powerful weapons and armor from the loot you earn.</em></li><li><strong>Hybrid cooperative-competitive gameplay: </strong><em>Strike a balance between using powerful upgrades and useful items, or hide them away and cash-in later to become the Master Hunter.</em></li><li><strong>Quick setup and high replayability: </strong><em>Simple rules and card-based, modular gameplay means you can setup a campaign in minutes--no character sheets or stat rolling necessary. And thanks to the variable nature of card-based gameplay and plenty of customization options available to the players, each campaign will be totally different every time you play!</em></li></ul>
<p><strong>What's included:</strong></p>
<p>Everything you need to play is included right in the ZIP file, including a PDF copy of the <em>Super Mutant Slayers </em>rulebook and ready-to-print sheets of all the cards and game pieces.</p>
<p><em><strong>*Updated 7/1/2020:</strong></em><br></p>
<p>Super Mutant Slayers is now available as a free mod in Tabletop Simulator on Steam!</p>
<p><a href="https://steamcommunity.com/sharedfiles/filedetails/?id=2150466606" rel="nofollow noopener" referrerpolicy="origin">https://steamcommunity.com/sharedfiles/filedetails/?id=2150466606</a></p>
<p><img src="https://img.itch.zone/aW1nLzM3Nzc4OTkucG5n/original/OhsVqt.png" loading="lazy"><br></p>
<p><em><strong><img src="https://img.itch.zone/aW1nLzM3Nzc5MDEucG5n/original/RyWeeu.png" loading="lazy"><br></strong></em></p>
<p><em><strong>*Updated 4/20/2020:</strong></em><br></p>
<p>Super Mutant Slayers version 1.2 has been released! This version includes: </p>
<ul><li>An all-new loot card, the Link Node, which allows you to mix and match crafting materials of different ranks for more flexible weapon builds.<em></em></li><li>Updated loot and crafting rules.</li><li>Rebalanced trap token mechanics.</li><li>Small tweaks to the rules book and an updated credits section.</li></ul>
<p>***</p>
<p><em>Note from developer: </em></p>
<p>Thank you so much for checking out <em>Super Mutant Slayers! </em></p>
<p>Developing this game has been my passion project for the past three years, and I am deeply grateful for your interest and support. Making a game by yourself is tough, but I’m excited to finally share it with you all. </p>
<p>While <em>Super Mutant Slayers</em> morphed into more of an art project over the course of its development, it’s still a completed and fully-playable game. That said, if you come away with suggestions or constructive feedback about the game or any of its supplemental materials (such as this rulebook), please feel free to leave a comment below. I consider <em>Super Mutant Slayers</em> to be a fully finished game, mechanics-wise, but I want it to be as fun as possible and your feedback will help me make the game better.</p>
<p>I hope you and your friends enjoy playing <em>Super Mutant Slayers!</em></p>
<p>Happy Slaying!</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2NzYwLzI4NTQ5MjEuanBn/original/Yc9GUT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2NzYwLzMyOTMwMjMuanBn/original/ucbXLH.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2NzYwLzMyOTI4NDIucG5n/original/Jqydsv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2NzYwLzMyOTI4NDUucG5n/original/r2xgjy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2NzYwLzMyOTI4NDgucG5n/original/%2Fx0%2Fmt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2NzYwLzMyOTMwODMucG5n/original/hxzv02.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2NzYwLzMyOTMwODUucG5n/original/YzVEvn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2NzYwLzMyOTMwODIucG5n/original/wNlMmF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTQ2NzYwLzMyOTMwODQucG5n/original/GufMjp.png]]
<p class="text-center"><em> Playable in English/Deutsch/Français/日本語/한국어</em></p>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/epdBMPeHWgU" allowfullscreen="" frameborder="0"></iframe></div>
<p><strong> R</strong>eturn to the haunted town and save the villagers once again from Evil King, the worst king ever. He's sent his skeleton armies to defile the local countryside and has set a curse upon the townspeople. Help them out by smashing every skull in the country! Purify the land and stop Evil King once and for all. This sequel takes the skull-smashing puzzle platformer in a new direction with <em>TURBO </em>action, <em>TURBO </em>puzzles and <em>TURBO </em>boss battles.</p>
<p> The Evil King is up to his old tricks again. He's concocted a new spell that will unleash hordes of skeletons, zombies, ghosts and even vampires. Run, jump and super-skull-smash your way through the kingdom purifying the land as you go. Battle giant robot skeleton bosses and avoid deadly traps. </p>
<p> Journey through the eight unique lands in the Kingdom of Bones bashing monsters and solving puzzles as you go. Earn bonus hearts and find hidden secrets galore!</p>
<p> The villagers are relying on you once again. Can you defeat the Evil King and and his outmoded ways?</p>
<p><img src="https://img.itch.zone/aW1nLzExMDMwMzcuZ2lm/original/qkKJYd.gif" loading="lazy"><br></p>
<p>Links:
<a href="http://poppy.works/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Website</a> | <a href="http://tinyletter.com/Wolfgame" rel="nofollow noopener" referrerpolicy="origin">Newsletter</a> | <a href="https://twitter.com/WorkWithPoppy" rel="nofollow noopener" referrerpolicy="origin">Twitter</a></p>
<p>リンク<br><a href="http://www.wolfgame.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"></a><a href="http://poppy.works/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">ウェブサイト</a> • <a href="http://tinyletter.com/Wolfgame" target="_blank" rel="nofollow noopener" referrerpolicy="origin">ニュースレター</a> • <a href="https://twitter.com/WorkWithPoppy" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Twitter</a> <br></p>
<p class="text-center"><strong>Soundtrack by Peter Silk</strong></p>
<iframe></iframe>
<iframe width="720" height="450" src="https://www.youtube.com/embed/epdBMPeHWgU" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjIwNDUwLzEwNDA1NTIucG5n/original/0RjCtk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjIwNDUwLzEwNDA1NDgucG5n/original/AlR1WN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjIwNDUwLzEwNDA1NTMucG5n/original/bbPB2k.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjIwNDUwLzEwNDA1NTAucG5n/original/Gs7OB2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjIwNDUwLzEwNDA1NDkucG5n/original/3mjFi%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjIwNDUwLzEwNDA1NDcucG5n/original/mOryyd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjIwNDUwLzEwNDA1NDYucG5n/original/TF5uBD.png]]
<p><strong>Super Snake 3D</strong> is a new take on the classic Snake. Eat, increase and get faster!</p>
<p>Travel through different levels while eating fruits and collecting coins to unlock new levels and beat your highscore.</p>
<p>Avoid all the dangers in space, volcanos, a polygon world and even a multiverse while getting bigger and faster!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/1LtdHE57e04" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDk2ODcyLzI1Njc5MzcucG5n/original/kSmZje.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk2ODcyLzI1Njc5MzgucG5n/original/xzi9QJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk2ODcyLzI1Njc5MzkucG5n/original/0HWAAP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk2ODcyLzI1Njc5NDAucG5n/original/Wgf%2BaK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk2ODcyLzI1Njc5NDEucG5n/original/0EFELA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk2ODcyLzI1NzEyNjAucG5n/original/urpsCC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDk2ODcyLzI1Njc5NDIucG5n/original/eaY9GA.png]]
<p>Guide Wiloo in this adventure to take back your buddy and save other animals from Dr. ETvaldo evil hands. <br></p>
<p>In this 2D old-school platformer you'll be walking unknown lands and will face lots of obstacles trough 50 stages across 5 different colorful worlds. You can count with some powerfull upgrades and animal costumes that grants you different special-powers to overcome all challenge and danger that awaits you. Keep your eyes open, because there is many secrets hidden trough this lands.</p>
<p>Heartwarming soundtrack and sounds composed by Eduardo Castro.</p>
<p>This game is a Demake version of "WILOO", featuring Completely new graphics, new Power-ups and other improvements.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/GRqMqFzYnFE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzAzNDY4LzM4ODU2MDIucG5n/original/LxR8Jq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzNDY4LzM4ODU2MDEucG5n/original/pIGXrm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzNDY4LzM4ODU2MDYucG5n/original/BzQCmM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzNDY4LzM4ODU2MDcucG5n/original/vR0SF1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzNDY4LzM4ODU2MDgucG5n/original/%2FyTUSY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzNDY4LzM4ODU2MDMucG5n/original/22legP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzNDY4LzM4ODU2MDkucG5n/original/jVYwEo.png]]
<p>
Throw on your nostalgia goggles and travel back in time with
<em>Super Win the Game</em>, a retro-core explosion of exploration and platforming action!!
</p>
<ul>
<li>Sequel to the 2012 freeware hit <em><a target="_blank" href="http://store.steampowered.com/app/286100/" rel="nofollow noopener" referrerpolicy="origin">You Have to Win the Game</a></em> <br>
</li>
<li>Open-ended exploration platforming: Explore a massive world, find hidden treasures, collect powerups and gain new abilities, and uncover mysterious secrets! </li>
<li>Adjustable CRT television simulator: Tune the retro-ness to your liking!</li><li>Speedrun courses with Steam leaderboard support! Race your friends' ghosts to the finish line!</li><li>Randomized Game mode for unlimited replayability!</li>
<li>Includes Steam access!</li>
<li>Do the Thing!! </li>
<li>Get the Stuff!! </li>
<li>Win the Game!! </li>
</ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/5GSMutcLaiU" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjc0ODcvMTEyMDEyLnBuZw==/original/TlQ%2FR7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjc0ODcvMTEyMDEzLnBuZw==/original/M9bnDD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjc0ODcvMTEyMDIzLnBuZw==/original/4YhZhu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjc0ODcvMTEyMDI2LnBuZw==/original/%2BmzcXF.png]]
<p><em></em></p>
<p><em><a href="https://www.superluminauts.com/" rel="nofollow noopener" referrerpolicy="origin">SuperLuminauts</a> is a local-multiplayer <span class="">spaceship</span> shooter where your missiles leave trails in time. With the tight feel and control of an arcade shooter, and the deep mechanics of no other, soon you'll be flying, thinking, and blowing up your friends like a true SuperLuminaut.</em></p>
<p></p>
<p><em>NOTE: SuperLuminauts is a solely local multiplayer game for 2-4 players<br></em></p>
<p><em></em><em>NOTE: Abolish the Police</em><br></p>
<p><a href="https://www.superluminauts.com" rel="nofollow noopener" referrerpolicy="origin"></a></p>
<div class=""><iframe src="https://youtube.com/embed/d1k2h0UtKC4?&vq=HD720&rel=0&modestbranding=1&autohide=1&showinfo=0&vq=HD720" allowfullscreen="" width="500" height="250" frameborder="0">&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;span id="selection-marker-1" class="redactor-selection-marker"&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;/span&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;</iframe></div>
<p><br><br><img src="https://img.itch.zone/aW1nLzc1NTI4OC5wbmc=/original/zxqNnH.png" loading="lazy"><br></p>
<ul><li><h2>2-4 Player Couch Chaos</h2>To turn your laptop or living room into a space-time arena, all you need is a keyboard & mouse and another person you don't mind being temporary mortal enemies with. To maximize competitive shouting/gloating, you'll need 2 or more controllers for four players.</li><li><h2>Superluminal Trails</h2>Missiles don't just launch, they trail and richochet and shatter and cascade in a web of space-time. Keep your wits about you and adapt your tactics, or jump headfirst and enjoy the show.</li><li><h2>A Sci-Fi Rainbow of Ships</h2>Though all vehicles are outfitted with the same specs, we all know the coolest ship with the coolest paint job is going to win.</li><li><h2>3 New Ways to Play</h2>We've scoured the universe of infinite game-modes and we thought these were the most fun ways to demolish the fabric of space-time, and involved the fewest subatomic-combustions and/or lizard-people uprisings.<h2></h2><h2></h2><table><tbody><tr><td><img src="https://img.itch.zone/aW1nLzc1NTI4OS5wbmc=/original/%2Focu72.png" loading="lazy"><p><br></p>
<h2>Dive</h2><p>Your trails make the map: each round you dive and spiral deeper into the lattice of lines you build.</p></td><td><img src="https://img.itch.zone/aW1nLzc1NTI5MC5wbmc=/original/BndVP6.png" loading="lazy"><p><br></p>
<h2>Chaotic Anomaly</h2>Rapid-fire rounds in a shifting arena where trails accelerate after each bounce and insta-kill.</td><td><img src="https://img.itch.zone/aW1nLzc1NTI5MS5wbmc=/original/Avrgbj.png" loading="lazy"><p><br></p>
<h2>Galactic Tour</h2>Build a tour from 25 maps, whether it be a 3-round grudge match or a journey across the galaxy and back.</td></tr></tbody></table></li></ul>
<iframe width="720" height="450" src="https://youtube.com/embed/d1k2h0UtKC4?&vq=HD720&rel=0&modestbranding=1&autohide=1&showinfo=0&vq=HD720" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTYxOTcwLzUyMTQ5OTYucG5n/original/KQEPpz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTYxOTcwLzc0NTk3OS5wbmc=/original/MC0bSq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTYxOTcwLzc0NTk3OC5wbmc=/original/G0YLZy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTYxOTcwLzc0NTk4MC5wbmc=/original/REAW1J.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTYxOTcwLzc0NTk4MS5wbmc=/original/iegn8I.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTYxOTcwLzc0NTk4Mi5wbmc=/original/3czzOo.png]]
<p> One day, Lumi the mermaid visits a new underwater town where seemingly nobody believes in mermaids. Determined to prove true mermaidhood, Lumi sets out to collect mermaid artifacts from the surrounding area. Lumi is joined by Toivo, who might also be a mermaid.<br><strong></strong><strong></strong><strong><br>Surfacing</strong> is a Game Boy-style RPG in terms of color depth and screen size. Just pretend the resolution never changes due to text boxes, menus, or combat.<br><br>This game was made with RPG Maker 2003.<br>Expected playthrough time: 45-90 minutes.</p>
<p>Made for Leeble Game Jam 6, October 2020.<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODAzOTQ3LzQ1MDM3NzAucG5n/original/Q3Vd2k.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODAzOTQ3LzQ1MDM3NzIucG5n/original/QgI3c7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODAzOTQ3LzQ1MDM3NzQucG5n/original/xI786a.png]]
<p>A game about being happy, being sad, and being everything in between.</p>
<p>sweet*peony is a two-player game about telling the story of a person or an object through the lenses of Joy or Sorrow using a regular deck of cards. Whether your story encompasses a day, a week, a year, or a lifetime, joy and sorrow are natural parts of life, and what that looks like is up to you. </p><p><br></p><p>You can watch an Actual Play of this game here!</p><div class=""><iframe width="500" height="281" src="https://www.youtube.com/embed/mEi65yM7Gek" frameborder="0" allowfullscreen=""></iframe></div><p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/mEi65yM7Gek" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1nLzUxMzU5NzkuanBn/original/7A5XAC.jpg]]
<p><strong>Calling all pilots: Earth is under alien attack!</strong><br>Your assistance is required! No experience necessary.</p>
<p><img src="https://img.itch.zone/aW1nLzIxNjk2MTcuZ2lm/original/YsdXBj.gif" loading="lazy"><br></p>
<h2>ONE BUTTON:</h2>
<p>Piloting an advanced star fighter with just one button is simple: you switch, you shoot. Every shot fired changes your direction, and mastering this is the key to becoming a legend among the stars. Timing is everything!</p>
<h2>QUICK. SIMPLE. CHALLENGING:</h2>
<p>Don't underestimate its simplicity; this game tests your reflexes like no other! And while your ship might become stardust in a matter of seconds, you can instantly jump back in for "just one more go".</p>
<h2>RETRO ARCADE FEEL:</h2>
<p>A love letter to arcade classics with crunchy pixel art, chiptune soundtrack, authentic cabinet artwork and compulsive gameplay. Only now you don't need a stack of coins to stand a chance at getting a High Score.<br></p>
<h2>COLOUR PALETTES:</h2>
<p>Unlock 64 palettes that completely change the look of everything in the game. Choose from 8-bit favourites or create your own!<br></p>
<h2>PORTRAIT MODE:</h2>
<p>At the touch of a button your screen rotates into portrait mode (a.k.a. TATE Mode) for a truly authentic arcade experience. The game supports a wide range of controller setups so how you play is up to you.</p>
<figure><img src="https://img.itch.zone/aW1nLzIxNjk3OTkuZ2lm/original/5jSarw.gif" loading="lazy"><br></figure>
<hr>
<h3>This <em>itch.io</em> pack includes:</h3>
<ul><li>Standalone DRM-free versions for Windows, Mac and Linux.</li><li>Ad-free Android version.</li><li>Free Steam key.</li></ul>
<p><a href="http://store.steampowered.com/app/498470" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzM1ODM3MjAucG5n/original/rlJlAW.png" alt="Steam key included" title="Steam key included" loading="lazy"></a></p>
<p><strong>Current version:</strong> 1.3.5<br>19th August 2021</p>
<hr>
<p><strong><a href="https://www.patreon.com/mattglanville" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzIyNDIyNDIucG5n/original/4ubcci.png" loading="lazy"></a><br></strong></p>
<p><strong>Available to <em>Eggs Benedict</em> tier Patrons!</strong><br></p>
<ul><li><a href="https://www.patreon.com/bePatron?u=347796" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Become a Patron now!</a></li><li>Already a Patron? <a href="https://crowbarska.itch.io/switch-n-shoot/patreon-access">Claim access here</a>.<em></em></li></ul>
<p><br></p>
<p><a href="https://crowbarska.itch.io/" target="_blank"><img src="https://img.itch.zone/aW1nLzM1ODM4MTMucG5n/original/iaGw%2B0.png" alt="More of my games" title="More of my games" loading="lazy"></a></p>
<p><a href="https://www.mattglanville.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzIyNDQyNDQucG5n/original/RjA5bM.png" alt="My Website" title="My Website" loading="lazy"></a></p>
<figure><a href="http://eepurl.com/gv2FRT" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzIyNDc1MDEuZ2lm/original/xiCtfn.gif" alt="Join my Mailing List!" title="Join my Mailing List!" loading="lazy"></a></figure>
<p class="text-center">
<a href="https://discord.gg/zCyJuy8" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzM1ODMyMDcucG5n/original/Pip41P.png" alt="Discord" title="Discord" loading="lazy"></a>
<a href="https://www.facebook.com/switchnshoot" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzM1ODM2MzkucG5n/original/LHbD6L.png" alt="Facebook" title="Facebook" loading="lazy"></a>
<a href="https://www.patreon.com/mattglanville" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzM1ODMyNzYucG5n/original/VFEKFs.png" alt="Patreon" title="Patreon" loading="lazy"></a>
<a href="https://store.steampowered.com/developer/mattglanville" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzM1ODk1NzYucG5n/original/WIUeao.png" alt="Steam" title="Steam" loading="lazy"></a>
<a href="https://twitter.com/crowbarska" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzM1ODMyMDIucG5n/original/Yn3e6d.png" alt="Twitter" title="Twitter" loading="lazy"></a>
<a href="https://www.youtube.com/user/crowbarska/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzM1ODMyMDAucG5n/original/1uoG9V.png" alt="YouTube" title="YouTube" loading="lazy"></a>
</p>
<p class="text-center"><a href="https://www.mattglanville.com/switch-n-shoot-presskit.html" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><strong>Presskit</strong></a></p>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/mLkIpi48k9E" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTYxMjMvMjE2OTY0OS5naWY=/original/w5uy2B.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTYxMjMvMjE2OTcwNy5naWY=/original/7YN%2BAr.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTYxMjMvMjE2OTcyNS5naWY=/original/kFbIpi.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTYxMjMvMjE2OTc0OC5naWY=/original/ZnvOBu.gif]]
<p><em>When the visitors first came, they said they were coming in peace. When the first disappearances were reported, we didn’t want to believe it. We were too blinded by their technology, their superior intellect, everything they could offer us.</em></p>
<p><em>When the inevitable attack came, it was quick, brutal and devastatingly effective. They knew all our weaknesses by then. All our defences were wiped out in seconds.<br>In the days that followed, in the shadows of the flames, we came together. We got organized, and now we are bringing the fight to them.</em></p>
<p class="text-center">* * *</p>
<p>T-DEF is a GMless game that comes in two 8-page mini zines: the Tactical Handbook that contains the rules for character creation and taking actions; and the Operations Manual, that contains everything you need to create missions for your troopers.</p>
<p>The game is a homage to XCOM by way of Dark Fort and Mörk Borg.</p>
<p>The game comes in both screen readable PDF:s and one-page printable files that you can cut and fold to have physical booklets. Put this in your pocket, wallet or purse with a couple of dice and a pen, and you're always ready to go on a bug-hunt! Play alone or with friends, in between slots at cons, on the bus, or over beers at the pub (you know, after the pandemic is over).</p>
<p>Made using <a href="https://starwest.itch.io/">Star West</a>'s <a href="https://starwest.itch.io/one-page-zine-template">One Page Zine Template</a>.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODMxOTc1LzQ2NjE4ODAuanBn/original/7T0DK1.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODMxOTc1LzQ2NjE4ODEuanBn/original/NaH%2B6N.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODMxOTc1LzQ2NjE4ODIuanBn/original/W5Hby9.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODMxOTc1LzQ2NjE4OTYuanBn/original/osca8e.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODMxOTc1LzQ2NjE4NzkuanBn/original/q7i4BL.jpg]]
<p><a href="http://www.TabletopMusic.com" rel="nofollow noopener" referrerpolicy="origin">www.TabletopMusic.com</a> is an easy way to bring original background music to your tabletop game sessions!</p>
<p>This pack contains the audio files for all 48 tracks in the collection!</p>
<p>Consider supporting the site so it can continue to grow:<br><a href="https://www.patreon.com/tabletopmusic" rel="nofollow noopener" referrerpolicy="origin">https://www.patreon.com/tabletopmusic</a><br><br>Follow my work as a game OST composer!<br></p>
<p>SoundCloud: <a href="https://soundcloud.com/alecshea" rel="nofollow noopener" referrerpolicy="origin">https://soundcloud.com/alecshea<br></a>BandCamp: <a href="https://alecshea.bandcamp.com/" rel="nofollow noopener" referrerpolicy="origin">https://alecshea.bandcamp.com/</a><br>Twitter: <a href="https://gate.sc/?url=http%3A%2F%2Ftwitter.com%2FSlaleky&token=34ef52-1-1592041901391" target="_blank" title="http://twitter.com/Slaleky" rel="nofollow noopener" referrerpolicy="origin">twitter.com/Slaleky</a><br>Facebook: <a href="https://gate.sc/?url=http%3A%2F%2Fwww.facebook.com%2Falecsheamusic&token=e51283-1-1592041901392" target="_blank" title="http://www.facebook.com/alecsheamusic" rel="nofollow noopener" referrerpolicy="origin">www.facebook.com/alecsheamusic</a></p>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/C04d8vMqGCg" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1nLzM2NTMyODQuanBn/original/dJp5HN.jpg]]
<p><strong></strong>Cheerful slacker Olive thought that taking an outdoor ed. class during her final year of high school would be an easy credit, but the year-end camping trip turns out to be a lot more than she bargained for. When an argument with another classmate spurs the hot-tempered Sage to run off alone into the woods, Olive follows her, hoping to lift her spirits and make sure she’s safe. But the bubbly and energetic Heather has the same idea, and tensions between her and Sage threaten to turn the trip into even more of a disaster than it is already. Olive just wants her classmates to get along, but they seem to disagree on everything—and to make things even worse, they’ve lost track of how to get back to their campsite! Follow three stressed-out teens on a journey full of bickering, mosquitoes, and self-discovery.</p>
<p><em>Take A Hike! </em>takes approximately 30-45 minutes to read, and includes audio captioning and adjustable textbox opacity for accessibility (available in the preferences menu). It<em> </em> also contains some strong language, brief references to drug use, mildly sexist remarks, and characters generally being grumpy and rude to each other a lot.</p>
<p>All character sprites used in Take A Hike! are available for purchase from <a href="https://dejinyucu.itch.io/">DejiNyucu</a>! You can get them and use them in your own game! <a href="https://parttimestorier.home.blog/take-a-hike-credits/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Full credits here.</a><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzA3NTE0LzQwODE5NDYucG5n/original/RExJf9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA3NTE0LzQwODE5NDgucG5n/original/vIY1b%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA3NTE0LzQwODE5NDcucG5n/original/86qS77.png]]
<p><strong>🌱 a solo or with friends tabletop farming game 🌱</strong></p>
<p><strong>What you need to play: </strong>pencil and paper (or google docs/other note taking app if you prefer) and a six sided die. </p>
<p><strong>What you can do: </strong><br></p>
<ul><li>Tend to your farm 🌾</li><li>Visit the town 🏘️</li><li>Take on the Dungeon Keep ⚔️</li><li>Go to the forest 🌲</li><li>Go on dates 💖</li><li>Try to win the harvest festival 🏆</li></ul>
<p>🌺 🌺 🌺 🌺 🌺 🌺 🌺 🌺 🌺 🌺 🌺 🌺<br></p>
<p>Thanks to <a href="https://creators.kickstarter.com/zine-quest/" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">Kickstarter's #ZineQuest</a>, <a href="https://www.kickstarter.com/projects/1351238692/take-root-perennial-edition-0" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">this new version</a> of <a href="https://magicalbitch.itch.io/take-root" style="font-size: inherit">take root</a> was fully funded! The release was delayed, but if you were not able to purchase it originally on kickstarter, you can now get it by purchasing on itchio. It includes:<br></p>
<ul><li>A 16 page PDF of the game </li><li>A printable booklet version of the game </li><li>A Mini Zine with expanded romance options (available as 8 pg pdf or foldable)</li><li>Another Mini Zine with a new shop keeper and dungeon keep boss expansion (available as 8 pg pdf or foldable)</li></ul>
<p>If you'd like to play an earlier version of this game, you can play <a href="https://magicalbitch.itch.io/take-root">the original pamphet version of the game here. </a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTc2OTAzLzM2MjY4ODUucG5n/original/KzAOJv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc2OTAzLzM2MjY4ODQucG5n/original/sa%2Biac.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc2OTAzLzM2MjY4ODcucG5n/original/LT0%2Ftd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc2OTAzLzM2MjY4ODYucG5n/original/qbyzhG.png]]
<div style="margin: 0 auto; max-width: 600px">
<p class="text-center"><strong>From the creator of <a href="https://boyproblems.itch.io/boy-problems" target="_blank">Boy Problems</a>, <a href="https://boyproblems.itch.io/black-heart" target="_blank">Black Heart</a> <br>& <a href="https://boyproblems.itch.io/in-case-of-an-emergency" target="_blank">In Case of an Emergency</a>...</strong></p>
<p class="text-center"><strong><em>The sun sets on an adventure and there is a moment to pause and reflect on everything that came before.<br></em></strong><strong><em>A group sits around a campfire before they have to say goodbye to one of their friends. <br></em></strong><strong><em>A lone hero rests in the shadow of the construct that could lead to their own demise.</em></strong></p>
<p class="text-center"><strong><em>Tales’ End</em></strong> is an improvisational game about a group (or individual) remembering the journey that brought them here and reflecting on how they and the world around them have changed. Designed to open up a dialogue with prompts, the game guides players to experience an entire adventure through vignettes on the eve of the end of their travels.</p>
<p class="text-center">The game is genre-agnostic, GM-less, and can also be experienced as a solo journaling exercise. It is intended to provide a streamlined experience for beginners, or a unique experience for established groups. The direction of the story is up to the players, with a system of prompts to provide guidance and tools to keep moving forward.</p><p class="text-center"><strong>Creator's Note</strong>: <em>This game is a bit different from my past releases! It is very mechanics light and focused on storytelling and improvisation. It is a bit of an experiment and priced as such. I hope that it can help those new players who might feel intimidated getting into tabletop, or for those looking for a solo experience.</em><br></p>
<p><br></p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQzMTkyMTcucG5n/original/uxmkQ0.png" loading="lazy"><br></p><p class="text-center"><a href="https://www.dicebreaker.com/games/tales-end/news/tales-end-rpg-released" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzQzMzIwMTkucG5n/original/ne90un.png" loading="lazy"></a><br></p>
<figure><img src="https://img.itch.zone/aW1nLzQzMTkyMTAucG5n/original/t0DjmU.png" style="color: inherit; font-size: inherit" loading="lazy"><span></span><br></figure>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzQzMTkyMTgucG5n/original/vE82vp.png" loading="lazy"><br><br></p>
<div class="text-center" style="max-width:300px; margin: 0 auto"><img src="https://img.itch.zone/aW1nLzc4NzkwMjIucG5n/original/w4YTRO.png" loading="lazy"><br></div>
<p><br><br></p>
</div>
[img width=500 [https://img.itch.zone/aW1nLzc4Nzk3NzYuanBn/original/jHKsOY.jpg]]
<p><strong>What is Talk To Me?</strong><br></p>
<p>Talk To Me is a Western-style Visual Novel. It’s a Dating Sim--kind of--but also, maybe you shouldn’t play it like that.*<br></p>
<p>You play as Ordell Harrison, a guy in his twenties who is just trying to get through the day. After his mother dies, Ordell moves to a different town to start over, but things don’t seem to be getting any better for him. </p>
<p><em>* Talk to Me is a Visual Novel about grief, mental health and friendship intended for audiences over the age of 18. Please note there are no explicit images in the game. This can be a hard game to play if you’re depressed or have just lost someone close to you, so please be aware of that, along with the trigger warnings that have been posted at the end of the post. These can be spoilery, so please skip them if you would rather not know what they are. </em></p>
<p><strong>Features:</strong></p>
<ul><li>There are no 100% good or bad endings in this game. You won’t get a game over. There’s no true ending either</li><li>Over 75k words of story, with difficult choices and consequences</li><li>A vibrant cast of characters</li><li>Explore up to 20 different outcomes of the game. See how your choices have affected Ordell’s life</li><li>25+BGs and 10+ CGs</li><li>This game is both BxG and BxB<p></p></li></ul>
<p><img src="https://img.itch.zone/aW1nLzkzMjY4NS5qcGc=/original/C5vafJ.jpg" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzkzMjY4Ni5qcGc=/original/GQEUec.jpg" loading="lazy"><br></p>
<p><img src="https://img.itch.zone/aW1nLzkzMjcyMC5wbmc=/original/%2Bh7DUA.png" loading="lazy"><br></p>
<p><img src="https://img.itch.zone/aW1nLzkzMjcxOS5qcGc=/original/%2BmoIfD.jpg" loading="lazy"><br></p>
<p><img src="https://img.itch.zone/aW1nLzkzMjcyOS5qcGc=/original/%2F%2BLTOR.jpg" loading="lazy"></p>
<p class="text-center"><a href="https://i.imgur.com/Ho9RJkv.jpg" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Trigger warnings for the game. Contains spoilers.</a></p>
<p class="text-center">Do you want to give us feedback? Comment here or go on Twitter using the hashtag <a href="https://twitter.com/search?q=talktomevn" rel="nofollow noopener" referrerpolicy="origin">#TalkToMeVN</a>!</p>
<p><strong>Known Bugs:</strong><br></p>
<ul><li>Music Captions may sometimes show the wrong name for the song currently playing.</li></ul>
<p><em>Update 1.03 published on 10-20-2020.</em><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTk3MTgxLzI5MjY3ODkucG5n/original/H%2B6LUx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTk3MTgxLzI5MjY3OTAucG5n/original/J4RoQG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTk3MTgxLzI5MjY3OTEucG5n/original/TIOJil.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTk3MTgxLzI5MjY3NjIucG5n/original/ewcFmt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTk3MTgxLzI5MjY3NjAucG5n/original/eHGfRs.png]]
<p>Give your brain the next big challenge with "<strong>Tap Strike BOOM!</strong>"</p>
<p>Your goal is to go through the "<u>Mystical Gate of the Heavens</u>", but it won't just let anyone in!</p>
<p>Heavily influenced by the '<em>Voltorb Flip</em>', a minigame in the <em>Pokemon</em> series, <strong>Tap Strike BOOM!</strong> challenges yo to solve the puzzles that the gate will throw at you. You will have 10 levels that will get more difficult as you advance!</p>
<p>Clear each level by finding a number of crystals, but only Double and Triple Crystals will do! If you find a bomb, you will lose a life!</p>
<p>Can you find out what's behind this gate?</p>
<p><u>Features:</u></p>
<p>- Challenging mechanics that will make you use the old noodle!</p>
<p>- Beautiful pixelated graphics.</p>
<p>- Haunting chiptune music and 16-bit sound effects.</p>
<p><br></p>
<p><u>This game can be played on Windows tablets as well</u>! :)</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDAzNDAvMTczODAxLmpwZw==/original/pX6HXU.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDAzNDAvMTczODAyLmpwZw==/original/5fHSW9.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDAzNDAvMTczODAzLmpwZw==/original/lTBDWY.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDAzNDAvMTczODA0LmpwZw==/original/3gVnj7.jpg]]
<p>Tapioca Rider is a 2D dessert driving game.</p>
<p>Jump, accelerate, and occasionally reverse through 78 tracks of procedural love and hate. Complete them without crashing or landing upside-down to attain the purpose of all gaming: a score.*</p>
<p>Then drive through another 9921 tracks if for some reason that wasn't enough.</p>
<p>Be you a Tapioca Rider?</p>
<p><br></p>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/njBaMgJB6R0" frameborder="0" allowfullscreen=""></iframe></div>
<p><br></p>
<p><br></p>
<p>* ᴾᵘʳᵖᵒˢᵉ ᵒᶠ ᵍᵃᵐᶦⁿᵍ ᵐᵃʸ ⁿᵒᵗ ᵃᶜᵗᵘᵃˡˡʸ ᵇᵉ ᵗᵒ ᵍᵉᵗ ᵃ ˢᶜᵒʳᵉ ᶦⁿ ᶜᵉʳᵗᵃᶦⁿ ᵗᵉʳʳᶦᵗᵒʳᶦᵉˢ ᴾˡᵉᵃˢᵉ ᶜᵒⁿˢᵘˡᵗ ʸᵒᵘʳ ˡᵒᶜᵃˡ ᵍᵃᵐᶦⁿᵍ ᵒᵖᶦⁿᶦᵒⁿ ᵗʳᵘᵐᵖᵉᵗ ᶠᵒʳ ᶠᵘʳᵗʰᵉʳ ᵃᵈᵛᶦᶜᵉ</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/njBaMgJB6R0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjk4Mjc5LzE0NTg2NDkuZ2lm/original/IFi6eV.gif]]
<p><strong>Team Hogus*</strong> is a minigame compilation where you go through a series of short minigames that go over a story-line styled after a cheesy action movie. Play as both heroes and villains through a variety of tasks, from tasks as cool as blasting away at robots to tasks as mundane as stirring a cup of coffee.</p>
<p>Every minigame is controlled using the arrow keys and Z (or left thumbstick and A if you're using a controller), no complex controls to worry about here!</p>
<p><strong>Features:</strong></p>
<p>-Tons and tons of short minigames built around simple controls!<br>-Save your progress and start back up at any time!<br>-Post-game "random mode" keeps you on your toes!<br>-You get to do an evil laugh! Seriously!<br>-Rhyming level names that changes the rhyming scheme after every act!<br>-Act-closer boss levels that get weirder as the game progresses!<br>-Did I mention you stir a cup of coffee? Wait I already did, aw crud, dang it.<br>-An intentionally-inconsistent aesthetic that keeps you on your toes!<br>-You can exit any time using the escape key! Wait isn't that a bad design choice...?<br>-Self-awareness about certain poor design, which doesn't actually fix or excuse it!<br>-May or may not contain a dinosaur!<br>-An overly long list of features that probably doesn't do much to sell you on the game!<br>-This gag is getting old I'm done with the features list now!</p>
<p>The game is now released!</p>
<p>Additonally, I've released a demo with 8 minigames, 5 available in the story mode and 5 available in the random mode with some overlap. Unlike the full game, random mode is unlocked from the start.</p>
<p>I hope you enjoy the game!</p>
<p>(And uh, if you find any bugs, please report them so I can do my best to fix them!)</p>
<p><br></p>
<p>NOTE: Game is compatible with gamepads. Press start on the title screen using an Xbox gamepad to enable this. Not using an Xbox gamepad? Programs like DS4Windows are probably going to be helpful here.</p>
<p><br></p>
<p>*Full name is "Team Hogus: GHAMEMFAIFTH OTHIYLTIM: Generic Hyper Action Movie Extravaganza Minigame Festival Alien Invasion Force Team Hogus, Or Team Hogus If You Like That Instead More", but that's a mouthful and a half.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/QBWZ4XudrPA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzA0MzEzLzM5MjMwMjgucG5n/original/WHW6MJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA0MzEzLzM5MjMwMzAucG5n/original/9Nw3KL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA0MzEzLzM5MjMwMzQucG5n/original/aZA9Zq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA0MzEzLzM5MjMwMzUucG5n/original/AZV36S.png]]
<p><em>Will you form a covenant?</em><br>
<br>
It's a drag working over the weekend but putting in the extra effort may move you one step closer to a coveted promotion. You wouldn't describe your job as a “dead end" but you could certainly use more money and, frankly, something more interesting to do. Hopefully this all pays off. Hmm? What's that sound?<br>
<br><em>
Your phone is buzzing.</em><br>
<br>
Technoccult: Covenant is a short form interactive fiction game inspired by PC-98 era visual novels, the Shin Megami Tensei franchise, and psychopunk classics like Boogiepop Phantom and Serial Experiments Lain. Can you find all three endings?<br>
<br>
The original soundtrack, <a href="https://egardepe.bandcamp.com/album/technoccult-covenant-ost" target="_blank" rel="nofollow noopener" referrerpolicy="origin">which you can find here</a>, uses the sounds of the Yamaha YM2608 and Roland JX-305 to emulate the textures of the PC-98 and early 90s electronic music. The recording draws inspiration from the works of Ryu Umemoto and Shoji Meguro in an attempt to articulate sonic aspects of the psychopunk aesthetic.</p>
<hr>
<p><em>
Scenario, Design, and Programming</em><br><a href="https://twitter.com/egardepe" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Eliot Gardepe</a><br>
<br><em>
Music</em><br><a href="https://twitter.com/egardepe" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Eliot Gardepe</a><br>
<br><em></em><em>Playtesting</em><br><a href="https://twitter.com/ali_west" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Alicia Acampora</a>, <a href="https://twitter.com/technascent" target="_blank" rel="nofollow noopener" referrerpolicy="origin">John Evanofski</a>, and <a href="https://twitter.com/rogergoodman" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Roger Goodman</a><br>
<br><em>
Special Thanks</em><br><a href="https://twitter.com/rogergoodman" rel="nofollow noopener" referrerpolicy="origin">Roger Goodman</a>, <a href="https://twitter.com/materialdesignr" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Chris Hendrix</a>, and <a href="http://renpy.org/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Ren'Py<br><br></a>This work is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/4.0/" style="font-size: 15px; background-color: initial" rel="nofollow noopener" referrerpolicy="origin">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTI5NzgvNDI3NzIucG5n/original/YFjUk5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI5NzgvNDI3NzMucG5n/original/B%2FwqXg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI5NzgvNDI3NzQucG5n/original/M1yXt2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI5NzgvNDI3NzUucG5n/original/i8xuYk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI5NzgvNDI3NzYucG5n/original/alvZ6c.png]]
<h1 class="text-center">A unique golfing experience. </h1>
<p>Go golfing in 3 unique worlds with challenges, secrets and lots of fun!</p>
<p><img src="https://img.itch.zone/aW1nLzYxMDc0ODEuZ2lm/original/J2nASe.gif" loading="lazy"><br></p>
<p>The Courses:</p>
<p>Mount Molemore: An easygoing haven for moles where the golfing is easy and fun! Watch out for the windmills and logs but you should be ok.</p>
<p><img src="https://img.itch.zone/aW1nLzYxMDc2MTMuZ2lm/original/YBBXLG.gif" loading="lazy"><br></p>
<p><br></p>
<p>Christmas Calamity: Golf gets very cold in this level with fun obstacles like angry penguins, jump pads and cannons!</p>
<p><img src="https://img.itch.zone/aW1nLzYxMDc4MjYuZ2lm/original/EnGdVA.gif" loading="lazy"><br></p>
<p><br></p>
<p>Magma Mayhem: Golf gets heated up in this intense challenge. Can you survive?</p>
<p><img src="https://img.itch.zone/aW1nLzYxMDc5NzguZ2lm/original/w7xJ4U.gif" loading="lazy"><br></p>
<p>Credits:</p>
<h1 class="text-center">A game by:</h1>
<p><img src="https://img.itch.zone/aW1nLzYxMjE1MjIucG5n/original/KDAeIi.png" loading="lazy"></p>
<h1 class="text-center"><u>Art</u></h1>
<p>Lead Artist: Joe Griffiths</p>
<p>Environment Artist: Andrew S Bingham</p>
<p>VFX + Tech Artist: Jamie Berry</p>
<p>Environment Artist: Lou Thompson</p>
<p>Material + Environment Artist: Daniel Humphreys</p>
<p>Lead Character Artist + Animation: Mitchell Russell</p>
<p>Character Artist + Animation: Jake Walker</p>
<p>2D Artist: Neil Blythe</p>
<h1 class="text-center"><u>Design</u></h1>
<p>Lead Designer + UI + Programmer: Luke Odufona</p>
<p>Senior Designer: Thomas P Bell</p>
<p>Senior Designer: Francis G Santiago</p>
<p>Designer: Greg Alderton</p>
<h1 class="text-center"><u>Technology</u></h1>
<p>Lead Programmer: Alannah Morrison</p>
<p>Programmer: Corran Harvey</p>
<h1 class="text-center"><u>Sound</u></h1>
<p>Sound Design: Jordan Lynn</p>
<p>Sound Design: Matt Pennington</p>
<p>Music + Sound Design: Sam Green</p>
<h1 class="text-center"><u>Special Thanks</u></h1>
<p>Billy Hassan</p>
<p>Adam Zabrotski</p>
<p>Yvan Cartwright</p>
<p>Louis Lupton</p>
<h1 class="text-center"></h1>
<p><em>*Disclaimer - The animations within the game were sourced from Mixamo.</em></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/mSTiIEGhMgU" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA2NjQ2Ny82MTIwMjQ0LmpwZw==/original/ObEQJP.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA2NjQ2Ny82MTIwMjQ1LmpwZw==/original/1D%2Fhre.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA2NjQ2Ny82MTIwMjQ2LmpwZw==/original/COcQVi.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA2NjQ2Ny82MTIwMjUyLmpwZw==/original/6pG8zD.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA2NjQ2Ny82MTIwMjUzLmpwZw==/original/ij31iv.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA2NjQ2Ny82MTIwMjU0LmpwZw==/original/aqXg%2Bk.jpg]]
<p><em>Fate comes for all, even for legendary Heroes...</em><br></p>
<p>You are a demi-god, using your powers to make a difference in the world - but <strong>your death has been prophesied</strong> <strong>by The Fates</strong>, and each breath moves you closer to the end of your journey.</p>
<p>How will you spend your last days? Will your legend be remembered?</p>
<p><strong><em>TERMINUS - The Final Journey Of A Legendary Hero</em></strong> is a solo journaling RPG about performing heroic deeds and making peace with one's death.</p>
<p>This game is inspired by Greek Mythology, epics and tragedies (and Disney’s Hercules).</p>
<p><strong>Content Warning:</strong> Enclosed inside, you will find themes that relate to fear, isolation, despair, violence, the inevitability of death, and facing one’s regrets and mistakes.</p>
<p>_____________ </p>
<p><br>
This game was created for the “<a href="https://itch.io/jam/wretched-jam">Wretched & Alone Jam</a>”, and was directly inspired by <a href="https://loottheroom.itch.io/wretched">“The Wretched”</a>, by Chris Bissette, by “<a href="https://sealedlibrary.itch.io/wretched-alone-srd">The Wretched & Alone SRD</a>”, and by Litza’s “<a href="https://litzabronwyn.itch.io/make-a-wretched-game">Make a Wretched Game</a>”</p>
<p>_____________</p>
<p>Also check out our previous #WretchedJam entries: </p>
<ul><li><a href="https://catscratcher.itch.io/operation-swordbreak"><strong>Operation Swordbreak</strong></a> - A sci fi espionage thriller about trying to stop an evil galactic Regime!</li></ul>
<ul><li><a href="https://catscratcher.itch.io/murder"><strong>Murder!</strong></a> - A murder mystery in which you are the only one capable of catching a killer before you become one of their victims!</li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjg2NDI3LzM3NzkzMDAucG5n/original/4mrI1f.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg2NDI3LzM3NzkzMDEucG5n/original/Vt9m%2FS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg2NDI3LzM3NzkzMDIucG5n/original/dzku%2FC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg2NDI3LzM3NzkzMDMucG5n/original/oaaqeA.png]]
<p>Terroir is a 3D tile-based tycoon game where you manage your very own vineyard. In Terroir, you grow a variety of different grape varietals, craft your wine, and expand and manage your Estate. You'll also have to deal with factors such as weather and random events, which can either make or break your business.<br></p>
<h2>Features</h2>
<p>Some of the game's features and mechanics include:</p>
<ul><li>Choose from a selection of different grape varieties, each with their own demands.<br>
</li><li>Dynamic weather system reflecting the unpredictability of real world climate.<br>
</li><li>Each complete playthrough lasts 60 in-game years, but Players can continue playing without contributing to their final score.<br>
</li><li>Craft wine through the game's 4 winemaking processes: Crushing, Fermentation, Pressing and Ageing. Each type of grape needs to be crafted a certain way to achieve the best results, so you'll have to learn and master each one.<br>
</li><li>Start out with a single planting tile, then expand your Estate to up to 33 tiles, using 6 different tile types. Some tiles affect the ones around it, so placement is key.<br>
</li><li>Customize your estate with ambient items.<br>
</li><li>CHANCE & CIRCUMSTANCE: Terroir's random event and mission system. Players can open the Mystery Box and choose between CHANCE (a random event that could either have a positive or undesirable outcome) or CIRCUMSTANCE (a mission that a Player completes for rewards, or gets penalized for failing).<br>
</li><li>Join Wine Awards for a chance to earn bonuses to your wine's value and your Estate's renown.<br>
</li><li>Clean, minimalist design and gorgeous low-poly 3D models.<br>
</li><li>Original soundtrack composed and performed by Singapore's CLARQuinet ensemble.
</li></ul>
<p>Put on your field gloves, grab a pair of pruning shears and build your Chateau literally from the ground up. Good luck, and cheers!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/Ifr_e1NeSlI" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjkxOC81OTgzOTg2LmpwZw==/original/Dz3krS.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjkxOC81OTgzOTgyLmpwZw==/original/G23wwL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjkxOC81OTgzOTgzLmpwZw==/original/iy0GxF.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjkxOC81OTgzOTg3LmpwZw==/original/2Byd9r.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjkxOC81OTgzOTg0LmpwZw==/original/DNyIsr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjkxOC81OTgzOTkxLmpwZw==/original/MzISC1.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjkxOC81OTgzOTg1LmpwZw==/original/Hw9siT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjkxOC81OTgzOTg5LmpwZw==/original/16aHRo.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjkxOC81OTgzOTg4LmpwZw==/original/Ldyxbv.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjkxOC81OTgzOTkwLmpwZw==/original/ZMLU%2F%2F.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjkxOC81OTgzOTkzLmpwZw==/original/mpqq1I.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjkxOC81OTgzOTkyLmpwZw==/original/CQjrDi.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjkxOC81OTgzOTk1LmpwZw==/original/COMdoh.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NjkxOC81OTgzOTk0LmpwZw==/original/MaoZLj.jpg]]
<p>
<img src="https://media.discordapp.net/attachments/610526036479705103/723769103856304188/ezgif.com-optimize_1.gif" style="width: 100%" loading="lazy">
<img src="https://media.discordapp.net/attachments/610526036479705103/723029138075811870/autosaver_underbanner.gif" style="width: 100%" loading="lazy"><img src="https://cdn.discordapp.com/attachments/610526036479705103/723806098829738064/looping_big_blockfeatscreenshake.gif" style="width: 96%; margin-left: 2%; margin-right: 2%" loading="lazy"></p>
<table style="width: 100%; border: 0px"><tbody style="width: 100%; border: 0px"><tr><td style="width: 30%; border: 0px"><img src="https://media.discordapp.net/attachments/610526036479705103/723016616337473565/cropped_bell.gif" style="width: 100%" loading="lazy"></td><td style="width: 30%; border: 0px"><img src="https://media.discordapp.net/attachments/610526036479705103/723016619957420042/cropped_chick.gif" style="width: 100%" loading="lazy"></td><td style="width: 30%; border: 0px"><img src="https://media.discordapp.net/attachments/610526036479705103/723016624898310224/cropped_woodpecker.gif" style="width: 100%; border: 0px" loading="lazy"></td></tr></tbody></table>
<p>
<strong><del>WARNING, the Mac OS version requires <a href="https://www.hendrix.edu/HelpDesk/Computers_and_Devices/Mac_Computers/Disabling_and_Enabling_Gatekeeper_for_Mac_OS_X/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">DISABLING GATEKEEPER</a> to run</del></strong></p>
<p>A simple workaround for the Mac OS is available <a href="https://itch.io/t/1033075/the-super-simple-mac-gatekeeper-workaround">here</a>.</p>
<p>Textreme 2 is also available on <a href="https://store.steampowered.com/app/1516350/Textreme_2/" rel="nofollow noopener" referrerpolicy="origin">Steam</a>!</p>
[img width=500 [https://img.itch.zone/aW1nLzM5MTg2ODUuZ2lm/original/kawP%2F5.gif]]
<p>An endless war spanning aeons and galaxies, fought with mechs forged from the bodies of gods. </p>
<p>It's up to you and your crew to salvage what you can.</p>
<p class="text-center"><strong>THE GAME</strong></p>
<p>Work as a contractor for Ichor Extractions, Inc. and visit the site of a fallen mech to extract valuable materials and glean as much profit as you can before the work day ends. Gossip with coworkers, rend flesh from the bones of the divine, and try not to piss off your boss.</p>
<p><br></p>
<p class="text-center"><strong>FEATURES</strong></p>
<ul><li>Over 40k words of prose and dialog</li><li>4+ characters with unique backstories and relationships</li><li>10 original illustrations accompanying the story</li><li>Soundtrack & sound design by Austin M.</li><li>Alternate colors to lessen eye strain</li></ul>
<p><strong><br></strong></p>
<p class="text-center"><strong>CONTENT WARNINGS</strong></p>
<p>This game contains <strong>surgery, medical horror, body horror, gore, drowning, being buried alive,</strong> and additional potential triggers. You may not encounter every instance in one playthrough, but please be cautious!</p>
<p><br></p>
<p class="text-center"><strong>ABOUT</strong></p>
<p>This game was my senior thesis project, concluding my Game Design B.F.A. studies. It was made from August 2020 to May 2021 at the Maryland Institute College of Art, and wouldn't have been possible without the support of my department peers and professors.</p>
[img width=500 [https://img.itch.zone/aW1nLzU2OTc0MTMucG5n/original/ud2yCy.png]]
<p>An action platformer game like Super Mario Bros with simple controls and Pixel art. Run, jump, collect stars, solve puzzles and fight your way through an epic adventure.</p>
<p>Omar is a young boy who lives with his father in a small land. Few months ago, Omar saw a strange creature inside the deep forest. Ever since, Omar is afraid to go into the forest and he gets nightmare of that creature everyday. Omar's father wanted him to face his fear. Omar promised to his father that one day he would go into the forest alone.</p>
<p>The Adventurer is a retro, mini, free, handcrafted, 2D game designed to be fun, unique, small & neat that can evoke fond memories and nostalgic experience of veteran gamers!</p>
<p>It is an indie game developed by a solo developer and made with Unity. Most of the assets used in this game are free assets made by many awesome artists, credits are given in game.</p>
<h5>Features:</h5>
<ul><li>Short story driven</li><li>Smooth and fluid gameplay</li><li>Epic action</li><li>Simple controls</li><li>Boss Battle</li><li>Exciting and short gameplay (16 Levels : 2 Chapters)</li></ul>
<p>Source code: <a href="https://github.com/Fahad-Aameer/The-Adventurer-Source-Code" target="_blank" rel="nofollow noopener" referrerpolicy="origin">The Adventurer Source Code</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/XmNUc96QSKI" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTc1Njc4LzU1NDA5ODAucG5n/original/4%2Fxjd9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc1Njc4LzU1NDA5NzcucG5n/original/rkaNaS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc1Njc4LzU1NDA5NzkucG5n/original/tDM2Yu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc1Njc4LzU1NDA5ODEucG5n/original/BbFFZx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc1Njc4LzU1NDA5NzgucG5n/original/SROEkv.png]]
<p>An action platformer game like Super Mario Bros with simple controls and Pixel art. Run, jump, collect stars, solve puzzles and fight your way through an epic adventure.</p>
<p>Omar is a young boy who lives with his father in a small land. Few months ago, Omar saw a strange creature inside the deep forest. Ever since, Omar is afraid to go into the forest and he gets nightmare of that creature everyday. Omar's father wanted him to face his fear. Omar promised to his father that one day he would go into the forest alone.</p>
<p>The Adventurer is a retro, mini, free, handcrafted, 2D game designed to be fun, unique, small & neat that can evoke fond memories and nostalgic experience of veteran gamers!</p>
<p>It is an indie game developed by a solo developer and made with Unity. Most of the assets used in this game are free assets made by many awesome artists, credits are given in game.</p>
<h5>Features:</h5>
<ul><li>Short story driven</li><li>Smooth and fluid gameplay</li><li>Epic action</li><li>Simple controls</li><li>Boss Battle</li><li>Exciting and short gameplay (16 Levels : 2 Chapters)</li></ul><p>Source code: <a href="https://github.com/Fahad-Aameer/The-Adventurer-Source-Code" target="_blank" rel="nofollow noopener">The Adventurer Source Code</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/XmNUc96QSKI" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTc1Njc4LzU1NDA5ODAucG5n/original/4%2Fxjd9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc1Njc4LzU1NDA5NzcucG5n/original/rkaNaS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc1Njc4LzU1NDA5NzkucG5n/original/tDM2Yu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc1Njc4LzU1NDA5ODEucG5n/original/BbFFZx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTc1Njc4LzU1NDA5NzgucG5n/original/SROEkv.png]]
<p>The Adventures of Wolf and Hood - A Jigsaw Tale is a fairy tale story told through 20 beautiful hand illustrated jigsaw puzzles.</p>
<ul><li>Follow familiar fairy tale characters in a brand new adventure</li><li>Choose from six different puzzle sizes, from 24 to 294 pieces</li><li>Progress is saved automatically so you can come back to a puzzle later</li><li>Take your time to admire the completed scenes and zoom in on the details</li><li>Subtle animated elements bring the scenes to life as you play</li><li>Read the whole completed story in Gallery Mode, like a real picture book</li></ul>
<p><br></p>
<p>Please note: the Mac and Linux builds are experimental, as I am unable to test them personally. As such I cannot offer much support for the Mac or Linux builds. I make them available here for completeness but offer the following warnings.</p>
<p>The Mac package isn't notarized by Apple so you may get a warning when launching it, or you may not be able to launch it at all (it seems to work better when using the itch app rather than downloading it directly). </p>
<p>The Linux version may require additional steps to get it to work but I assume that as a Linux user you will know what to do. </p>
<p>If any of that concerns you then please ensure that you can play the game on Windows before purchasing. Thank you for understanding. </p>
<p><br></p>
<p>Please also note that the Steam key is for the 64 bit Windows version only, for the same reasons as above.</p>
<p><br></p>
<p>This game supports screen aspect ratios from 4:3 up to 21:9, although it is optimised for 16:9.</p>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/c_TRx_qyuM8" frameborder="0" allowfullscreen=""></iframe></div>
<p></p>
<div class=""><iframe style="width: 500px; height: 281px" src="//www.youtube.com/embed/0fHxNpfCVFI" frameborder="0" allowfullscreen=""></iframe></div>
<p>
</p>
<p></p>
<div class=""><iframe style="width: 500px; height: 281px" src="//www.youtube.com/embed/5W2X14DWdYg" frameborder="0" allowfullscreen=""></iframe></div>
<p></p>
<div class=""><iframe style="width: 500px; height: 281px" src="//www.youtube.com/embed/jFZO3xnA6Eg" frameborder="0" allowfullscreen=""></iframe></div>
<p></p>
<div class=""><iframe style="width: 500px; height: 281px" src="//www.youtube.com/embed/974Abq7OteM" frameborder="0" allowfullscreen=""></iframe></div>
<iframe width="720" height="450" src="https://www.youtube.com/embed/c_TRx_qyuM8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTgzMTMyLzQ2OTg3MzIuanBn/original/6l%2BEym.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgzMTMyLzQ2OTg3MzMuanBn/original/mJuTkb.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgzMTMyLzQ2OTg3MzYucG5n/original/qbkPMu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgzMTMyLzQ2OTg3MzQucG5n/original/6E%2BxZ6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTgzMTMyLzQ2OTg3MzUucG5n/original/IiEB00.png]]
<p>This soundtrack is provided by Snabisch, a music producer with more than 30 years of experience who is in love with the retro sound of the classic video game consoles of the 80s and 90s.</p>
<p>The videogame The Adventures of Yulpers! has counted on his collaboration, working intensely in the production of these 22 tracks made with care where the sounds of the consoles Sega Master System, Sega Genesis and Nintendo Nes are mixed. </p>
<p>Provided as high-quality MP3 files and FLACs.</p>
<iframe style="border: 0; width: 400px; height: 472px" src="https://bandcamp.com/EmbeddedPlayer/album=2039981701/size=large/bgcol=000000/linkcol=000000/artwork=small/transparent=true/"><a href="https://makeagame.bandcamp.com/album/the-adventures-of-yulpers-soundtrack" rel="nofollow noopener" referrerpolicy="origin">The Adventures of Yulpers! Soundtr<span class=""></span>ack by Make a Game</a></iframe>
<h2>Tracklist:</h2>
<p></p>
<ul><li>1. <a href="https://makeagame.bandcamp.com/track/perfect-days" rel="nofollow noopener" referrerpolicy="origin">Perfect days</a> <span class=""> 01:12 </span></li><li><span class=""></span><a href="https://makeagame.bandcamp.com/track/perfect-days" rel="nofollow noopener" referrerpolicy="origin"></a>2.
<a href="https://makeagame.bandcamp.com/track/colouring-dreams" rel="nofollow noopener" referrerpolicy="origin">Colouring dreams</a> <span class=""> 00:59 </span></li><li><span class=""></span><a href="https://makeagame.bandcamp.com/track/colouring-dreams" rel="nofollow noopener" referrerpolicy="origin"></a>3.
<a href="https://makeagame.bandcamp.com/track/the-crazy-chicken" rel="nofollow noopener" referrerpolicy="origin">The crazy chicken</a> <span class=""> 00:48 </span></li><li><span class=""></span><a href="https://makeagame.bandcamp.com/track/the-crazy-chicken" rel="nofollow noopener" referrerpolicy="origin"></a>4.
<a href="https://makeagame.bandcamp.com/track/count-to-ten" rel="nofollow noopener" referrerpolicy="origin">Count to ten</a> <span class=""> 01:04 </span></li><li><span class=""></span><a href="https://makeagame.bandcamp.com/track/count-to-ten" rel="nofollow noopener" referrerpolicy="origin"></a>5.
<a href="https://makeagame.bandcamp.com/track/lost-everywhere" rel="nofollow noopener" referrerpolicy="origin">Lost everywhere</a> <span class=""> 01:42 </span></li><li><span class=""></span><a href="https://makeagame.bandcamp.com/track/lost-everywhere" rel="nofollow noopener" referrerpolicy="origin"></a>6.
<a href="https://makeagame.bandcamp.com/track/on-the-back-of-the-east" rel="nofollow noopener" referrerpolicy="origin">On the back of the east</a> <span class=""> 01:58 </span></li><li><span class=""></span><a href="https://makeagame.bandcamp.com/track/on-the-back-of-the-east" rel="nofollow noopener" referrerpolicy="origin"></a>7.
<a href="https://makeagame.bandcamp.com/track/not-even-with-those" rel="nofollow noopener" referrerpolicy="origin">Not even with those</a> <span class=""> 01:42 </span></li><li><span class=""></span><a href="https://makeagame.bandcamp.com/track/not-even-with-those" rel="nofollow noopener" referrerpolicy="origin"></a>8.
<a href="https://makeagame.bandcamp.com/track/i-m-missing-the-name" rel="nofollow noopener" referrerpolicy="origin">I´m missing the name</a> <span class=""> 01:32 </span></li><li><span class=""></span><a href="https://makeagame.bandcamp.com/track/i-m-missing-the-name" rel="nofollow noopener" referrerpolicy="origin"></a>9.
<a href="https://makeagame.bandcamp.com/track/out-of-my-mouth" rel="nofollow noopener" referrerpolicy="origin">Out of my mouth</a> <span class=""> 00:48 </span></li><li><span class=""></span><a href="https://makeagame.bandcamp.com/track/out-of-my-mouth" rel="nofollow noopener" referrerpolicy="origin"></a>10.
<a href="https://makeagame.bandcamp.com/track/loading-the-way" rel="nofollow noopener" referrerpolicy="origin">Loading the way</a> <span class=""> 01:25 </span></li><li><span class=""></span><a href="https://makeagame.bandcamp.com/track/loading-the-way" rel="nofollow noopener" referrerpolicy="origin"></a>11.
<a href="https://makeagame.bandcamp.com/track/the-worst-boss-in-the-world" rel="nofollow noopener" referrerpolicy="origin">The worst boss in the world</a> <span class=""> 00:55 </span></li><li><span class=""></span><a href="https://makeagame.bandcamp.com/track/the-worst-boss-in-the-world" rel="nofollow noopener" referrerpolicy="origin"></a>12.
<a href="https://makeagame.bandcamp.com/track/once-upon-a-time" rel="nofollow noopener" referrerpolicy="origin">Once upon a time</a> <span class=""> 01:28 </span></li><li><span class=""></span><a href="https://makeagame.bandcamp.com/track/once-upon-a-time" rel="nofollow noopener" referrerpolicy="origin"></a>13.
<a href="https://makeagame.bandcamp.com/track/childhood-memories" rel="nofollow noopener" referrerpolicy="origin">Childhood memories</a> <span class=""> 01:04 </span></li><li><span class=""></span><a href="https://makeagame.bandcamp.com/track/childhood-memories" rel="nofollow noopener" referrerpolicy="origin"></a>14.
<a href="https://makeagame.bandcamp.com/track/i-live-in-the-city-of-dreams" rel="nofollow noopener" referrerpolicy="origin">I live in the city of dreams</a> <span class=""> 00:59 </span></li><li><span class=""></span><a href="https://makeagame.bandcamp.com/track/i-live-in-the-city-of-dreams" rel="nofollow noopener" referrerpolicy="origin"></a>15.
<a href="https://makeagame.bandcamp.com/track/100-things-to-do-to-stay-awake" rel="nofollow noopener" referrerpolicy="origin">100 things to do to stay awake</a> <span class=""> 02:02 </span></li><li><span class=""></span><a href="https://makeagame.bandcamp.com/track/100-things-to-do-to-stay-awake" rel="nofollow noopener" referrerpolicy="origin"></a>16.
<a href="https://makeagame.bandcamp.com/track/fx1" rel="nofollow noopener" referrerpolicy="origin">FX1</a> <span class=""> 00:05 </span></li><li><span class=""></span><a href="https://makeagame.bandcamp.com/track/fx1" rel="nofollow noopener" referrerpolicy="origin"></a>17.
<a href="https://makeagame.bandcamp.com/track/fx2" rel="nofollow noopener" referrerpolicy="origin">FX2</a> <span class=""> 00:02 </span></li><li><span class=""></span><a href="https://makeagame.bandcamp.com/track/fx2" rel="nofollow noopener" referrerpolicy="origin"></a>18.
<a href="https://makeagame.bandcamp.com/track/fx3" rel="nofollow noopener" referrerpolicy="origin">FX3</a> <span class=""> 00:01 </span></li><li><span class=""></span><a href="https://makeagame.bandcamp.com/track/fx3" rel="nofollow noopener" referrerpolicy="origin"></a>19.
<a href="https://makeagame.bandcamp.com/track/fx4" rel="nofollow noopener" referrerpolicy="origin">FX4</a> <span class=""> 00:30 </span></li><li><span class=""></span><a href="https://makeagame.bandcamp.com/track/fx4" rel="nofollow noopener" referrerpolicy="origin"></a>20.
<a href="https://makeagame.bandcamp.com/track/fx5" rel="nofollow noopener" referrerpolicy="origin">FX5</a> <span class=""> 00:24 </span></li><li><span class=""></span><a href="https://makeagame.bandcamp.com/track/fx5" rel="nofollow noopener" referrerpolicy="origin"></a>21.
<a href="https://makeagame.bandcamp.com/track/fx6" rel="nofollow noopener" referrerpolicy="origin">FX6</a> <span class=""> 00:42 </span></li><li><span class=""></span><a href="https://makeagame.bandcamp.com/track/fx6" rel="nofollow noopener" referrerpolicy="origin"></a>22.
<a href="https://makeagame.bandcamp.com/track/childhood-memories-fm" rel="nofollow noopener" referrerpolicy="origin">Childhood memories FM</a> <span class=""> 01:16 </span></li></ul>
<p>Link to game:</p>
<p><a href="https://withthelove.itch.io/yulpers-gotje">withthelove.itch.io/yulpers-gotje</a><br></p>
[img width=500 [https://img.itch.zone/aW1nLzE5MjI3NDUuanBn/original/gxxm01.jpg]]
<p> In
downtown Olympia, just off Jefferson between 4th and 5th, an artesian
well is ever flowing. They say that if you drink of its waters, your
soul will be tethered here. Though you may leave Olympia for days or
months or years, the story goes, something will always bring you
back.</p>
<p>In this game you will make a small map of your own Olympia. You will fill it with memories and friends. You will decide if you really want to come back. This town meant something to you. Maybe it still does.</p>
<p>Written for <a href="https://itch.io/jam/folklorejam2020">Folklore Jam 2020</a>.<br><br></p>
[img width=500 [https://img.itch.zone/aW1nLzQxNjQ3MTMuanBn/original/d3Fwqs.jpg]]
<h1><u>The Bonds That Tie Us </u></h1>
<p><strong>The Bonds That Tie Us</strong> is a <strong>GMless TTRPG</strong> about characters, and their relationships with each other; how they grow and how they fall apart.</p>
<p>Will the two best friends remain as close as they are? Will the newly formed polycule stay together? Will the rivals ever make peace with each other? Over the course of a few Chapters, such questions may be answered.</p>
<p>It is designed for <strong>3-5 players</strong>, though it can also be used as a solo storytelling tool. To play, you only need <strong>six-sided dice</strong>, <strong>character sheets</strong>, <strong>something to write with</strong>, and a <strong>willingness to make things complicated</strong>.</p>
<p>The free abridged pdf is 2 pages long.</p>
<p>The full pdf is 15 pages long, including the character sheet, and 12 pages explaining how to play.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDI4MDUzLzIxMzkzMDQucG5n/original/CdbXsG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDI4MDUzLzIxMzkzMjAucG5n/original/37Asy1.png]]
<p>A gm-less map making game for 1 to 5 players.</p>
<p>You are a monster who lives in the shadows and caverns of an enormous structure, a tower that reaches down, down into the earth.</p>
<p>Each layer of the tower was once the uppermost - as you ascend, you will learn of the history of this place that once was yours, and how it was ruined, or abandoned, or forgotten.</p>
<p>Inspired by <em><a href="https://buriedwithoutceremony.com/the-quiet-year" rel="nofollow noopener" referrerpolicy="origin">The Quiet Year/The Deep Forest</a></em>, <a href="https://mouseholepress.itch.io/the-underditch"><em>The Underditch</em></a>, <em><a href="http://dungeon-world.com/downloads/" rel="nofollow noopener" referrerpolicy="origin">Number Appearing</a></em>, <em><a href="https://www.drivethrurpg.com/product/127180/Scarlet-Heroes" rel="nofollow noopener" referrerpolicy="origin">Scarlet Heroes</a></em>, and <a href="http://friendsatthetable.net" rel="nofollow noopener" referrerpolicy="origin">Friends at the Table</a>.</p>
<p>A submission to <a href="https://itch.io/jam/mapemounde2019">Mapemounde 2019</a>. </p>
<p>The background image is <em>Hadley Castle, Near the Nore</em>, by David Lucas, and the cover image is <em>The Course of Empire - Desolation</em>, by Thomas Cole, both in the public domain.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDA2MjAwLzIwMjQxNjAucG5n/original/YdYn98.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA2MjAwLzIwMjQxNTMucG5n/original/43JNzL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA2MjAwLzIwMjQxNTQucG5n/original/hMW9t8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA2MjAwLzIwMjQxNTUucG5n/original/a0Feg3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA2MjAwLzIwMjQxNTYucG5n/original/QgQS64.png]]
<h1><img src="https://img.itch.zone/aW1nLzQ1OTE1MTAuZ2lm/original/Ob0gZu.gif" loading="lazy"></h1>
<h1>ON THE STREETS OF WESTMINSTER, LONDON</h1>
<p><em>The Change Architect is a choice-driven protest simulator. With live camera feeds, an eagle eye view and friends on the ground, it's up to you to co-ordinate the safety and effectiveness of your demonstration from those who would look to do more than just disperse it.</em></p>
<p>“Deals with some difficult subject matter in a thoughtful and captivating way” <a href="https://www.freegameplanet.com/the-outcast-lovers-download-game/" rel="nofollow noopener" referrerpolicy="origin">
<br>Free Game Planet</a></p>
<p>“Far Few Giants are changing the game of interactive cinematography” <br><a href="https://www.rebind.io/how-farfewgiants-narrative-anthology-challenges-video-game-cinematography-4833/" rel="nofollow noopener" referrerpolicy="origin">Re:Bind</a></p>
<p>“A powerful execution of micro-fiction” <br><a href="https://www.escapistmagazine.com/v2/the-night-fisherman-is-a-tense-moonlit-confrontation-you-can-play-for-free/" rel="nofollow noopener" referrerpolicy="origin">The Escapist</a></p>
<p><img src="https://img.itch.zone/aW1nLzM1MjE4MzUucG5n/original/5CzavF.png" loading="lazy"></p>
<h4>A SHORT GAME BY DE FAULT & CHARD</h4>
<p>Hundreds of thousands of people have amassed in London, as Baron Sugar is attempting to seize control of the country.</p>
<p><del></del></p>
<p><del></del></p>
<p>When faced with police rioting, provocateurs, and eventually the military, can you successfully resist?</p>
<p>This is a single, film-like scene. You decide Jemima's actions as she directs the crowd from above the streets, as well as directing the camera shots between the cinematic angles available.</p>
<p>The fifth of twelve small, experimental narrative games to be released monthly.</p>
<h4>FEATURES</h4>
<ul><li>Struggle with a timely political conflict.</li><li>Choose your own: what do your decisions say about you?</li><li>Direct the camera to shoot the story <em>your</em> way.</li><li>Lose yourself in surreal colours.</li><li>Enjoy a moving <span class="">score</span> by Richard Campbell.</li><li>A tight, intense 10 minutes.</li></ul>
<h4>OTHER GAMES IN THIS SERIES</h4>
<ul><li><a href="https://farfewgiants.itch.io/night-fisherman">The Night Fisherman</a></li><li><a href="https://farfewgiants.itch.io/the-outcast-lovers">The Outcast Lovers</a></li><li><a href="https://farfewgiants.itch.io/change-architect">The Change Architect</a></li></ul>
<p><a href="https://farfewgiants.itch.io/change-architect"></a></p>
<p><span></span></p>
<h4>CONTROLS</h4>
<p>Keyboard & mouse only</p>
<p>Left & right arrows / A & D / Num 1-6 - change camera<br>Mouse left click - progress text, select dialogue option</p>
<h4>CONTENT WARNING</h4>
<p>Intense scenes, violence, police brutality</p>
<figure><img src="https://img.itch.zone/aW1nLzM1MjE4NTEucG5n/original/k12vZo.png" style="color: inherit; font-size: inherit" loading="lazy"><span></span></figure>
<figure><img src="https://img.itch.zone/aW1nLzM1MjE4NTEucG5n/original/k12vZo.png" style="color: inherit; font-size: inherit" loading="lazy"><span></span></figure>
<p>Far Few Giants is supported by our <a href="https://www.patreon.com/farfewgiants" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Patreon</a> subscribers. If you'd like to follow our journey, we'll be posting one narrative game a month on Patreon, Itch & Steam.</p>
<p>de Fault: <a href="https://twitter.com/antony_de_fault" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@antony_de_fault</a> || Chard: <a href="https://twitter.com/animtree" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@animtree</a></p>
<p>Richard Campbell: <a href="https://twitter.com/ziggidybang" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@ziggidybang</a></p>
<p>Special thanks to our advance testers.<br></p>
<p>For youtubers, streamers & press - <a href="https://drive.google.com/drive/folders/13V4mNnK8bY4MQb3Zgd8Jl28yWqRvgLto" rel="nofollow noopener" referrerpolicy="origin">Presskit</a></p>
<p>
</p>
<p><img src="https://img.itch.zone/aW1nLzM1Mjc1NDAucG5n/original/uBpYKi.png" loading="lazy"><iframe src="https://store.steampowered.com/widget/1466290/" width="646" height="190" frameborder="0"></iframe></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/690oKppB6WM" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODExODk5LzQ1NzM4MjgucG5n/original/g5hn1Q.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODExODk5LzQ1NzM4MzEucG5n/original/v%2BZaOs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODExODk5LzQ1NzM4MjkucG5n/original/CuE3QX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODExODk5LzQ1NzM4MzIucG5n/original/VFtbvc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODExODk5LzQ1NzM4MzAucG5n/original/YFuNis.png]]
<h2>No one is forced to join a cult. It welcomes you. It understands you. It envelops you until the words become more than truth - they make you whole...</h2>
<p><img src="https://img.itch.zone/aW1nLzE1MTA4NDEuZ2lm/original/KCAhpu.gif" loading="lazy"><br><br>In the late 1970s, the charismatic Isaac and Rebecca Walker lead the Collective Justice Mission. Labeled radicals and feeling persecuted by the US government, they relocate their followers to the one place they believe they can create a socialist utopia: the jungles of South America. There they build Freedom Town. But relatives left behind in the US become worried: what exactly is going on at this compound in the jungle?<br></p>
<p>The Church in the Darkness combines unique narrative with tight top-down action-infiltration gameplay in an open-ended environment. As Vic, an ex-law enforcement officer, you travel to South America to get into Freedom Town and check on your nephew, Alex.</p>
<p>Play how you want: you can avoid detection completely, take on the guards using non-lethal methods, or kill anyone who gets in your way. But you'll have to live with the consequences of those choices. </p>
<p>Every play through offers unique gameplay scenarios and story elements, with different character personalities and a shifting narrative told through investigation and action. You soak up the story through the town PA system, where the preachers share their dogma and beliefs. You find documents and letters scattered around camp which clue you into the true nature of Freedom Town. </p>
<p><img src="https://img.itch.zone/aW1nLzE0NTY5NDEuZ2lm/original/kSedQV.gif" loading="lazy"><br></p>
<p>How dangerous are the Walkers? Who are your allies and enemies? How far will you go to uncover the truth and save these people?<br><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/S6lArVvkujE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MDk3LzE1MDk0MTUucG5n/original/LKGv9t.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MDk3LzE1MDk0MTcucG5n/original/EmwrR2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MDk3LzE0NTY5MzIucG5n/original/Hm5%2Fwi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MDk3LzE1MDk0MTgucG5n/original/7iWYiQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MDk3LzE0NTY5MzEucG5n/original/qhuY3T.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MDk3LzE0NTY5MjkucG5n/original/%2BgtgS%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MDk3LzE1MDk0MTYucG5n/original/OSFVZR.png]]
<p>You are Fr. Salad, the pastor of The Church of Cheesus Crisp. You've been given the holy book to tell each parishioner a parable, a life lesson you might say. Complete each mini-game to give each Food Person a blessing, or let sin prevail. Get the high score and get them warm, fuzzy, good good feels.</p>
<p><em><strong>Note:</strong> This game is part of the <a href="https://itch.io/b/579/locally-sourced-summer-bundle">Locally Sourced Summer Bundle</a>. The price will be reduced once the bundle to encourage sales of the bundle.</em><br></p>
<p><strong>Art: </strong>Rachelle Viola <br><a href="https://rachelleviola.com/" rel="nofollow noopener" referrerpolicy="origin">Website</a><br><a href="https://twitter.com/drOMGp" rel="nofollow noopener" referrerpolicy="origin">Twitter</a><br><a href="https://instagram.com/drOMGp" rel="nofollow noopener" referrerpolicy="origin">Instagram</a><span></span></p>
<p><strong>Programming: </strong>Jordan Ajlouni <br><a href="http://www.jordanajlouni.com/" rel="nofollow noopener" referrerpolicy="origin">Website</a><br><a href="https://twitter.com/jordanajlouni" rel="nofollow noopener" referrerpolicy="origin">Twitter</a></p>
<p><strong>Sound:</strong> Corey Chappell <br><a href="https://twitter.com/Snesei" rel="nofollow noopener" referrerpolicy="origin">Twitter</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzMwMjYyLzQwNTg4NDAucG5n/original/N0FWnq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMwMjYyLzQwNTg4MzUucG5n/original/ptEZvx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMwMjYyLzQwNTg4MzcucG5n/original/oIH0c0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMwMjYyLzQwNTg4MzgucG5n/original/SSa%2Bht.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzMwMjYyLzQwNTg4MzkucG5n/original/BgUiyU.png]]
<p><strong><strong></strong>A two player storytelling game about the last hour of a long journey home.<br></strong></p>
<p><strong>------------<br></strong></p>
<p><strong>The Cloister</strong> is a short, one-session storytelling game for two players. </p>
<p>One person plays <strong>The Pilot,</strong> who is finally in orbit around their home planet after a very long time away. </p>
<p>The other person plays <strong>The Operator</strong>, a stranger on the ground who is trying to help the pilot get home.</p>
<p>The story takes place between the two of you in conversation as you navigate atmospheric reentry and fill the dead air of your radio with stories.<br></p>
<p><strong>------------</strong></p>
<p>Playbook is 10 pages, printable. There are two options - as you'd expect, "TheCloister_double_pages.pdf" is made of two-page spreads, while "TheCloister_single_pages.pdf" is single pages. To play the game you will need one 6 sided die. Games should take between half an hour and an hour to complete (about the length of a real atmospheric reentry).</p>
<p><br><img src="https://img.itch.zone/aW1nLzQwMDE1MjIucG5n/original/az40T9.png" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzQwMDE1MjQucG5n/original/kwLfhD.png" loading="lazy"><br></p>
<p>
</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/fVQd9Ejkbiw" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1nLzQwMDE1MjkucG5n/original/OIhZNb.png]]
<p>If you want to Recreate the feeling of a cookout with the folks you love this is the game for you! Make a fun character, share a few drinks with friends, and argue about how to best solve the problems that arise when you get too many family members in the same place! </p>
[img width=500 [https://img.itch.zone/aW1nLzU4MzM5MjUucG5n/original/N4XdPi.png]]
<p>If you want to Recreate the feeling of a cookout with the folks you love this is the game for you! Make a fun character, share a few drinks with friends, and argue about how to best solve the problems that arise when you get too many family members in the same place! </p>
[img width=500 [https://img.itch.zone/aW1nLzU4MzM5MjUucG5n/original/N4XdPi.png]]
<p>Inspiration is EVERYWHERE, but time isn’t. </p>
<p>The goal of this project is to provide an easy to use, universal combat system for game designers everywhere. <br>If you’re building a new TTRPG and need a combat system, take this one!* </p>
<p>Use all 6 dice in a polyhedral set, one for each of the major stats/events in the game.<br>A simple 4 stat, opposed d20 roll-off system with no list of modifiers, complex spells, or individual weapons to memorize.</p>
<p>Pick up and play format!<br>Designed in 45 minutes on a Game Jam episode of Beholder to No One podcast.<br><br>Update: We recently became aware of MOSAIC Strict rulesets, and TCCS certainly fits.<br>MOSAIC is a set of criteria that might be true of an RPG text:</p>
<ul><li>Modular
</li><li>Optional
</li><li>Short
</li><li>Attested
</li><li>Independent
</li><li>Coreless
<br>Learn more at: <a href="http://blog.trilemma.com/2021/02/nothing-at-bottom-mosaic-strict-rpg.html" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Trilemma Adventures</a></li></ul>
<p><br>Dice images provided by <a href="http://fightinchancestudio.square.site" rel="nofollow noopener" referrerpolicy="origin">Fighting Chance Studio</a><span></span> <br>Listen to the episode where this was designed on <a href="https://open.spotify.com/show/63E8gbMYqWEWxPxoaQW1yt?si=oCH1oM8eT12mwx4JoHXTlA" rel="nofollow noopener" referrerpolicy="origin">Beholder to No One</a></p>
<p><em>*Credit format: <br>Combat powered by “The Coolest Combat System” <br>Michael J Gibson & Nikki Yager (2021) <br>Creative Commons Attribution 4.0 Int’l License</em><span></span></p>
[img width=500 [https://img.itch.zone/aW1nLzU5NDg3OTIucG5n/original/yYsaFd.png]]
<p>Inspiration is EVERYWHERE, but time isn’t. </p>
<p>The goal of this project is to provide an easy to use, universal combat system for game designers everywhere. <br>If you’re building a new TTRPG and need a combat system, take this one!* </p>
<p>Use all 6 dice in a polyhedral set, one for each of the major stats/events in the game.<br>A simple 4 stat, opposed d20 roll-off system with no list of modifiers, complex spells, or individual weapons to memorize.</p>
<p>Pick up and play format!<br>Designed in 45 minutes on a Game Jam episode of Beholder to No One podcast.<br><br>Dice images provided by <a href="http://fightinchancestudio.square.site" rel="nofollow noopener">Fighting Chance Studio</a><span></span> <br>Listen to the episode where this was designed on <a href="https://open.spotify.com/show/63E8gbMYqWEWxPxoaQW1yt?si=oCH1oM8eT12mwx4JoHXTlA" rel="nofollow noopener">Beholder to No One</a></p>
<p></p>
<p><em>*Credit format: <br>Combat powered by “The Coolest Combat System” <br>Michael J Gibson & Nikki Yager (2021) <br>Creative Commons Attribution 4.0 Int’l License</em><span></span></p>
[img width=500 [https://img.itch.zone/aW1nLzU5NDg3OTIucG5n/original/yYsaFd.png]]
<p><a href="https://www.THECORRIDORthegamethetrailer.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzU2MDAxNDUucG5n/original/B2P6zh.png" loading="lazy"></a></p>
<p>THE CORRIDOR is a 20-30 minute experience about the relationship between player and game.</p>
<p><strong>GENRE:</strong><br>• First-person-walking-down-a-corridor-game. ("Wait, isn't that most games?" I hear you ask sarcastically. Not like this. Not like this.)<br><br><strong>KEY FEATURES:</strong><br>• A corridor.<br>• The things found within said corridor.<br><br><strong>GAMEPLAY:</strong><br>• You walk down a corridor. That's it. That's literally it. Don't expect anything more than that, because there isn't!<br>• Probably.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/musVIDA8UkA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTgzNTk3LzU1OTIwODkucG5n/original/N%2B2I2u.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgzNTk3LzU1OTIwOTIucG5n/original/dEaNfS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgzNTk3LzU1OTIwOTMucG5n/original/3j8j3B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgzNTk3LzU1OTIwOTEucG5n/original/c30eVJ.png]]
<p><em>The Isle of Pelursk holds a glowing, steaming, mist-shrouded secret at its heart, and once you’ve entered its clutches it does not want to let you leave.</em></p>
<p>The Corruption of Pelursk is an adventure module, designed to fit easily as a sidequest into an ongoing campaign or stand confidently on its own!</p><p>This adventure features a randomized hexcrawl across an island that seeks to destroy the players; as they explore they will learn the history of the Isle of Pelursk through ruins, hauntings and, as mentioned, island attacks. </p>
<p>This Pocket Dungeon includes: the dungeon zine, a 60 page PDF, and the B&W map, a 11x17 print-at-home black and white map supplied on two 8.5 x 11 sheets, with a set of 12 cut-out hexes, as well as thirteen digital play assets including a colour map and colour hexes provided individually in web-friendly formats for use in online play.</p>
<p>Thematically, this module deals with generational secrets, children in danger, economic anxiety, and so many ghosts.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODM0NDIwLzQ2NzU0NDcuanBn/original/5Tvd3p.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODM0NDIwLzQ2NzU0NDkuanBn/original/2vYsV9.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODM0NDIwLzQ2NzU1MTQuanBn/original/9iIXLz.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODM0NDIwLzQ2NzU1MTMucG5n/original/9Hxew5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODM0NDIwLzQ2NzU1MTUucG5n/original/9aDMGQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODM0NDIwLzQ2NzU1MTcucG5n/original/r%2BSBFo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODM0NDIwLzQ2NzU1MTYucG5n/original/X31g0i.png]]
<p><img src="https://img.itch.zone/aW1nLzMyODQ0OTYucG5n/original/bWnGA2.png" loading="lazy"></p>
<h2><strong></strong></h2>
<h2>Delve into ancient ruins of civilizations past in this one-session adventure for 4th level heroes of the world’s greatest roleplaying game!</h2>
<p><em>The Corwyn Catacombs</em> is a one-session adventure that sees characters delve into ancient ruins of a precursor civilization to rescue citizens of Corwyn and keep the village safe from harm! Will the
heroes succeed in vanquishing the evils that lurk within? Or will they meet a grisly end, to rise again as servants of the undying Chiran Empire?</p>
<p><strong>Now fully revised and featuring:</strong></p>
<ul><li><strong>Original art</strong> by Izzy Collins, including a new cover piece!</li><li><strong>A new campaign setting</strong>, complete with all the
information you need to site characters within the continent of Tyllia,
and plot hooks to continue your adventures in the world!</li><li><strong>5 premade characters –</strong> the adventuring company Calarin's End are included so that you can play with next to no setup!</li><li><strong>New monster statblocks</strong> — do battle with the Bone Knife Goblins and their bugbear leader Sklaar, as well as necromantic <strong>chiran servitors</strong> and a <strong>preserved chiran</strong> themselves!</li><li><strong>The debut of the Animancer Paragon Monster system</strong> – the chiran is a 'paragon monster' using our new system for legendary monsters, featuring optimisations for use as a solo monster and exciting features to give narrative structure to a battle with them!</li><li><strong>The Arcus Stone of Preservation</strong> — a fresh take on an established magic item!</li><li><strong>And a number of revisions, expansions, and enhancements to the original text!</strong></li></ul>
<h2>Praise for The Corwyn Catacombs</h2>
<p><em>"Experts ought to buy it, just to rip off the format" — High Level Games</em></p>
<p><em>"This is a fantastic one shot with intrigue, adventure and a bloody brilliant blend of fantasy and eldritch sci-fi horror in the dark depths of the Corwyn Catacombs. Perfect for a quick, fun game, but the ideas and elements are full of seeds and insidious roots that make this perfect as a campaign starter." — Sebrina Calkins<br></em></p>
<p><em>"Great little oneshot: an adventure that adds a new twist on some classic tropes, with equal opportunities for combat, exploration, and roleplay. Big bonus points for a product
that has <strong>beautiful</strong> layout, design and interior art - it really presents itself professionally. Add in some cool new monsters, a neat magic item, and a village with well-crafted NPCs, and you've got a
product that you can bring directly to the table with limited DM prep." — Tavern Tales</em></p>
<p>"<em>Layout deserves special mention: The NPC-depiction, the bullet pointed rooms – they really help render the module easy to use, and look professional and well-crafted – kudos!</em>" — Endzeitgeist</p>
<p><em>The Corwyn Catacombs</em> is set in the continent of <strong>Tyllia</strong>, but is neutral and self-contained enough that Game Masters can use the adventure in any campaign setting they’d like with minimal effort. A
selection of the Tyllian pantheon, as well as background information on the setting and different species’ place in it, is provided, such that characters can be made to fit easily into the world as presented.</p>
<p></p>
[img width=500 [https://img.itch.zone/aW1nLzUyMzAxMzQucG5n/original/Reqjud.png]]
<p>The game is Blackjack, but not as you know it.</p>
<p>The wager is your life, but you do not plan to lose it.</p>
<p><br>Experience a twist on both a classic card game and a classic novel. Amass skills, press your luck, do anything to stay ahead of those who would destroy you once again. Uproot this twisted game and find the revenge you seek!<br></p>
<h2>Features:</h2>
<ul><li>Enjoy a new form of Blackjack where both player and dealer twist the rules</li><li>Delve deep into a corrupt society, growing stronger with each fight. Don't get greedy or all your power will be stripped from you</li><li>Over half an hour of music to accompany your struggle</li><li>Multiple color palettes to choose from</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/7AsOkS0ne_I" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODEyNjk0LzQ1NTcwNzkucG5n/original/SaIrXJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODEyNjk0LzQ1NTcwODAucG5n/original/BP3VLK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODEyNjk0LzQ1NTcwODEucG5n/original/bZFPQp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODEyNjk0LzQ1NTcwODIucG5n/original/FeH%2BE0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODEyNjk0LzQ1NTcwODUucG5n/original/QFSCpe.png]]
<p class="text-justify text-center">The Crystal Golem is a short but hard action game, inspired by Dark Souls and playing old games without a manual.<br></p>
<p class="text-justify">Will you be able to destroy the corruption from the Void and restore Humankind?</p>
<p><img src="https://img.itch.zone/aW1nLzQ1MjczODguZ2lm/original/PiO0l6.gif" alt="Combat" title="Combat" loading="lazy"><br></p>
<p class="text-center"><em>* * * * *</em></p>
<p class="text-justify"><em>Energy born from the Void seeped into the rock and gave it some semblance of life. Humankind tried to harness its power, building wonderful creatures of crystal and light. But, alas, their pride was their undoing.<br>Only one of their machines remains today. It must now descend into the earth and go to the Place Where All is Backwards. It may still have a chance to fix this World...</em></p>
<p class="text-center"><em>* * * * *</em></p>
<ul><li>Three worlds you'll have to fight your way through.</li><li>A retro, PS1-inspired aesthetic.</li></ul>
<p class="text-justify">The controls are listed in the Readme file. Both keyboard + mouse and controller input are supported.</p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODA3NzI3LzQ1Mjc4MjAucG5n/original/IdBM5q.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODA3NzI3LzQ1Mjc4MTgucG5n/original/pJC%2Foy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODA3NzI3LzQ1Mjc4MTkucG5n/original/SmtuNI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODA3NzI3LzQ1Mjc4MjIucG5n/original/ezh8I%2F.png]]
<h2>A Thankless Job</h2>
<p>Unfortunately, you drew the short straw. You've been in stasis for quite some time and you've finally reached your target. A massive floating dreadnaught deep in unexplored space. Well, no one ever said rescue work was gonna be easy. But ya know... is there even anyone onboard? What was........</p>
<h2>What is this?</h2>
<p>The Derelict Speaks is a 2-page horror MicroRpg with semi-competitive elements. It's heavily inspired by the horror classics <em>Event Horizon </em>& <em>Sphere</em>. Yup... classics. Fight me. </p>
<p>The game is for 3 to 6 players. One person is the First Speaker, the Game Master. They speak for the titular Derelict and do their best to torture and "claim" the characters. </p>
<p>Everyone else plays as the characters exploring the Derelict. Their goal is to survive. But they probably won't. As characters die, their spirit is claimed by the Derelict. Those players flip over the sheet and play as another Speaker for the Derelict. Now, their goal is to reap more souls for Her. The game ends when everyone dies or only one survives.</p>
<h4>What you'll need.</h4>
<ul><li>About 3 to 6 players</li><li>Two six-sided die (2d6)</li><li>About 10 to 15 tokens (poker chips, beads, coins, etc.) per player.</li><li>A desire to play some spookums with your friends and brutalize their characters when the Derelict demands it.</li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA2NTkwMS82MTAzMzY3LmpwZw==/original/3Ab7vy.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA2NTkwMS82MTAzMzY5LmpwZw==/original/6XdGsq.jpg]]
<p>A classic survival horror game, in the lineage of Silent Hill, Resident Evil, and Siren. <br></p>
<p>-•▣◈▣•- <br></p>
<p>Bad circumstances and unwelcoming hosts are nothing new to a transient <em>lifter</em><em> </em>like you. When the Spire picked you up, you thought it was a way home. But something went wrong this time. </p>
<p>The Spire broke from the herd, venturing far off course, carrying its passengers deep into the accursed swamp.<br></p>
<p>And then — miles from help or hope — the Spire grinds to a halt. Someone has gone overboard. <br></p>
<p>The herd continues on without you, as the pilgrims call to their god for help.<br></p>
<p>But it isn't their god that answers.<br></p>
<p>-•▣◈▣•-<br></p>
<p>supports keyboard or gamepad<br></p>
<p><em>(Keyboard users can play right handed [WASD +JKL] or left handed [Arrows +CXZ] )</em><br></p>
<p><br>{ keyboard bindings }<br>[<strong>J</strong>]/[<strong>C</strong>] = (<strong>A</strong>)<br>[<strong>K</strong>]/[<strong>X</strong>] = (<strong>B</strong>)<br>[<strong>L</strong>]/[<strong>Z</strong>] = (<strong>R</strong>)<br>[<strong>esc</strong>] = (<strong>Start</strong>)</p>
<p><br>{ controls }</p>
<p>(<strong>A</strong>) -- <em>Talk/Interact</em><br>hold (<strong>B</strong>) -- <em>Sprint</em><br>back + (<strong>B</strong>) -- <em>Quickturn </em><br>hold (<strong>R</strong>) -- <em> Aim Gun</em><br>(<strong>A</strong>) while aiming -- <em>Fire Gun</em><br>(<strong>B</strong>) while aiming -- <em>Reload Gun</em><br>(<strong>Start</strong>) -- <em>Pause (displays hp and ammo)<br></em></p>
<p>-•▣◈▣•-</p>
<p>CHEATS:<br>F5 -- Unlimited Health<br>F6 -- Unlimited Ammo<br>F7 -- Get/Repair Gun<br>F9 -- Delete Save (restart game for changes to take effect)<br>F10 -- Self Destruct<br></p>
<p>-•▣◈▣•-<br></p>
<p>Made by:</p>
<p>Aaron Taecker-Wyss (<a href="https://twitter.com/TaeckerWyss" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@TaeckerWyss</a>)</p>
<p>bb Tombo (<a href="https://twitter.com/bbtombo" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@bbtombo</a>)</p>
<p>Catherine Brinegar (<a href="https://twitter.com/cathroon" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@cathroon</a>)</p>
<p>Flan Falacci (<a href="https://twitter.com/big__flan" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@big__flan</a>)</p>
<p>Nic Freeman (<a href="https://twitter.com/NonFatalDrop" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@NonFatalDrop</a>)</p>
<p>Shane Yach (<a href="https://twitter.com/tipsheda" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@tipsheda</a>)</p>
<p><br></p>
<p>A SlugHuman Production</p>
<p>Made for the <a href="https://itch.io/jam/haunted-ps1-summer-spooks" target="_blank">Haunted PS1 Summer of Spooks</a> gamejam.</p>
<p>-•▣◈▣•-<br></p>
<p>(NOTE: The MacOS build is not notarized and will not work on its own with MacOS v10.15 Catalina unless following some roundabout instructions as seen <a href="http://osxdaily.com/2012/07/27/app-cant-be-opened-because-it-is-from-an-unidentified-developer/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">here</a>.)<br></p>
<p></p>
<p><iframe scrolling="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/playlists/1120789723&color=%23c1add7&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&show_teaser=true&visual=true" width="100%" height="300" frameborder="no"></iframe></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/St96X2cy4-g" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzQ2NDgwLzQxNjM3MDQucG5n/original/9VQ0Y3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ2NDgwLzQxNjM3NjIucG5n/original/hWVqiU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ2NDgwLzQxNjM4MDcucG5n/original/S0bNKA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ2NDgwLzQxNjM3MTIucG5n/original/ZHKJ27.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ2NDgwLzQxNjM3MTMucG5n/original/H5GTHM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ2NDgwLzQxNjM3MTEucG5n/original/dcd1PC.png]]
<p><strong>The demo is now FREE - full game development put on hold due to lack of funding.</strong></p>
<p>(the demo can be played as a stand alone 25 minutes quality experience :)</p>
<p>THE DOOR is an innovative escape room game with teleportation, story and puzzles. <br></p>
<p>"As you go through a door you encounter a beautiful landscape . You meet a confused but friendly robot. It joins you and helps you solve puzzles that that may lead you to the big exit in the sky.”</p>
<p>If you like atmospheric games with story, puzzles and more than one twist - THE DOOR is likely a game for you.<br></p>
<p>Wishlist on Steam: <a href="https://store.steampowered.com/app/1360440/The_Door/" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">https://store.steampowered.com/app/1360440/The_Door/</a><br></p>
<p><br></p>
<p><strong>STORY</strong> <br></p>
<p>Upon discovering and going through a secret digital door, you find yourself trapped in an alternate world together with a slightly needy and flying robot. Guided by the robot, you must find your way home through a series of doors and puzzles leading to the legendary exit in the sky. But, something is amiss: The omnipresent structure floating in the sky seems aware of your presence. What is it's intention, what is it doing here? And where is the way out from here?</p>
<p><br></p>
<p>Looking for publishing and investment. <br></p>
<p>Supported by the Danish Film Institute.<br></p>
<p><br></p>
<p>The builds here on Itch.io is currently a 25 minute demo of the initial gameplay and story, if you'd like to try it out and support our development :)</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/pVQLtVllm_Y" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjkxODM1LzM5OTI4MTAuZ2lm/original/4euXQJ.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkxODM1LzM5OTI3OTYuZ2lm/original/DyXgJS.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkxODM1LzM5OTI3NjQuZ2lm/original/CRDVL5.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkxODM1LzM4MTUwNjUucG5n/original/fRpclj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkxODM1LzM4MTUwNjgucG5n/original/acNQ7G.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkxODM1LzM4MTUwNjkucG5n/original/FFeDy5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkxODM1LzM4MTUwNjYucG5n/original/7DSiKD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkxODM1LzM4MTUwNzAucG5n/original/%2B%2FChxV.png]]
<p>You are but one of only a few of your species still remaining in this world. As climate change begins to rapidly bring about disruption and turmoil, you have no choice but to migrate to new pastures. Though the climate is not the only challenge awaiting you. New creatures, similar to you in some ways, but very different in others, are migrating as well. For them this is their dawn, and for you and your kind, dusk approaches.</p>
<p>In this solo journaling game you are a member of a species in decline. Your world is changing and extinction is rampant. Not only are there environmental challenges abound, but to make matters worse a new apex species is on the rise. Time is running out for you and your kind, and the prospect of survival lessens with each lunar cycle. </p>
<p>************************</p>
<p><em><strong>The Dusk Before Dawn</strong></em> is a game about loneliness, perseverance, and survival in a world that is no longer suited for your kind. You are not human, but rather are a precursor to them. You will face overwhelming odds in your bid to outrun extinction. <br></p>
<p>At minimum, all you will need in order to play is the downloadable PDF of all the rules and vital information, a deck of cards, a 6-sided die, a writing utensil, and a piece of paper. To experience the game at its fullest you will also need a tumbling block tower and a coin. </p>
<p>************************<br></p>
<p><strong>Safety</strong></p>
<p>This game includes themes of fear, isolation, suspense, despair, violence, and death.</p>
<p>Read and play with caution, keeping in mind that you can take a break or stop completely at any time. Your mental health is important, and this is just a game.</p>
<p>This game is designed to make success very difficult and very unlikely. It is meant to be challenging and harrowing and emotional. If that doesn't sound fun to you, that's absolutely fine.</p>
<p>Remember that you can change, ignore, rewrite or abandon any part of this game that you want.</p>
<p><br></p>
<p>This game was inspired by Chris Bissette’s game “The Wretched” (<a href="http://loottheroom.itch.io/wretched">http://loottheroom.itch.io/wretched</a>), is based on the Wretched and Alone SRD (<a href="https://sealedlibrary.itch.io/wretched-alone-srd">https://sealedlibrary.itch.io/wretched-alone-srd</a>), and was created for the Wretched & Alone game jam. <br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjc3OTYwLzM3MjcyNTIucG5n/original/G0XhgO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjc3OTYwLzM3MjEzOTkucG5n/original/pof%2Bz%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjc3OTYwLzM3MjE0MDAucG5n/original/wYWER6.png]]
<p><em>You climb aboard the shuttle which is intended to convey you off this dingy planet. Embedded in the metal walls of the shuttle are bones, sun-bleached and carved with innumerable runes of protection. The only seats in the shuttle seem comfortable enough, although they have the familiar texture of human-flesh leather, tattooed over and over in a crabbed, spiky hand. What little is legible is clearly reproductions of necromantic theorems, the very ones which hold your ever-crumbling but never-dying empire together. There is no seat at the control console, merely a severed head, mummified by time, on a pike. Its milky-white eye briefly alights upon you, and the door you entered in slides closed with a distressingly organic sound. </em><br></p>
<p><em>It fucking sucks. Just an abysmal experience, and the chairs make your ass hurt after like ten minutes. But if you’re going to be a necromancer there’s a whole, like, aesthetic to deal with. </em></p>
<p><em>Hope you like skulls, fucker.</em></p>
<h3><em>Welcome to the Empire Undying</em></h3>
<p>There are two sorts of people that matter in the decrepit star empire: the necromancers who create the undead abominations upon whose skeletal backs civilization rests, and the knights whose sword duty is to defend the necromancers from undead abominations which aren't behaving right now. </p>
<p>In this game, you will play a group of necromancers and knights, stuck in some corner of the vast empire, attempting to solve a mystery that is, in turn, attempting to kill you all. The bad kind of "kill," the sort you don't bounce back from. Explore ancient sites and forgotten ruins, unravel conspiracies which have endured for millennia, and make out with one another, because you are <em>hot</em> and <em>hurt</em> and <em>surrounded by bones</em> so you have to get that tension out somehow. </p>
<p><em>The Empire Undying</em> is inspired by <a href="https://us.macmillan.com/series/thelockedtombtrilogy/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">The Locked Tomb Trilogy</a>, by Tamsyn Muir, and uses some elements from <a href="http://www.onesevendesign.com/laserfeelings/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Lasers & Feelings</a>, by John Harper.</p>
[img width=500 [https://img.itch.zone/aW1nLzU3ODc4NjIucG5n/original/AIc1qx.png]]
<p><img src="https://img.itch.zone/aW1nLzEyOTcxOTcucG5n/original/psvdX%2B.png" loading="lazy">All sales will be donated to the trevor project.</p>
<p>It only took a few moments for the feeling of panic to set in. “What if I lived my life wrong? How would I be judged? What if there is nothing after this?</p>
<p>The story begins with an individual, recently deceased, who is struggling to comprehend the reality of being dead. The mind, disconnected and failing, desperately attempts to form some vision of reality. Yet, the memories of its life are only distant whispers. It can't recall a personality, friends, or even an appearance. But there is hope. The memories of the music, the disconnected emotions. And in a rush of information, sometimes there appear memories of her: the rockstar. </p>
<p>The Endless Empty is an adventure RPG with a focus on exploration and choices. The game explores the concepts of death and the afterlife, and takes place in 5 chapters. Each chapter has a different theme and a unique art style. The game takes the player on a branching journey through the unknown. there are a variety of memories to explore; From upbeat suburban neighborhoods, to gritty industrial wastelands, to colorful psychedelic hallucinations.</p>
<p>The game will feature a multilayered storyline with alternative paths and multiple endings as well as a customized battle system. Complementing the game will be a completely original soundtrack with classical, electronic, funk and rock musical styles. </p>
<p>Check our Facebook: <a href="https://m.facebook.com/SugarySweetMachines/?ref=bookmarks" rel="nofollow noopener" referrerpolicy="origin">https://m.facebook.com/SugarySweetMachines/?ref=bookmarks</a></p>
<p>Check our rpgmaker page: <a href="https://rpgmaker.net/games/9949/" rel="nofollow noopener" referrerpolicy="origin">https://rpgmaker.net/games/9949/</a></p>
<p>Out on Steam Nov 3rd: <a href="https://store.steampowered.com/app/959410/The_Endless_Empty/" rel="nofollow noopener" referrerpolicy="origin">https://store.steampowered.com/app/959410/The_Endless_Empty/</a></p>
<p>Twitter: <a href="https://mobile.twitter.com/ErikSheader" rel="nofollow noopener" referrerpolicy="origin">https://mobile.twitter.com/ErikSheader</a></p>
<p>Requirements:</p>
<ul><li>OS: Windows Xp / Vista / 7</li><li>Processor: Intel Pentium 4 2.0 GHz</li><li>Memory: 512 MB RAM</li><li>Storage: 880 MB available space</li></ul>
<p>Information on extracting files from zip folder: <a href="https://support.microsoft.com/en-us/help/14200/windows-compress-uncompress-zip-files" rel="nofollow noopener" referrerpolicy="origin">https://support.microsoft.com/en-us/help/14200/windows-compress-uncompress-zip-f...</a><span></span></p>
<p><img src="https://img.itch.zone/aW1nLzEyOTcxOTgucG5n/original/b4lW%2B%2B.png" loading="lazy"><br></p>
<p> <br> </p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/OhgE_RLqrUw" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjY4ODI3LzEyOTcyMDMuanBlZw==/original/jOHMcf.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4ODI3LzEyOTcyMDQucG5n/original/jO2cal.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4ODI3LzEyOTcyMTQucG5n/original/89gfpd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4ODI3LzEyOTcyMTIucG5n/original/lqd9Al.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4ODI3LzEyOTcyMDUucG5n/original/zFgUkE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4ODI3LzEyOTcyMDcucG5n/original/xE7rxe.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4ODI3LzEyOTcyMDYucG5n/original/uULxL6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4ODI3LzEyOTcyMDguanBlZw==/original/HOx4tF.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4ODI3LzEyOTcyMDkucG5n/original/U88Zpl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjY4ODI3LzEyOTcyMTMucG5n/original/%2F3yv0I.png]]
<h4>THE GAME</h4>
<p>The Fall of Lazarus is a first person exploration game set in a science fiction future. You are a crew member of the USSC Lazarus waking up from cryo sleep without memories and even without name in an apparently abandoned drifting cargo spaceship. But you're not alone, there is also Hybris, the Artificial intelligence who commands the ship.</p>
<p>The Fall of Lazarus is a deeply narrative video game. You will have to solve some puzzles and explore in order to advance in the story. The universe and story will unveil branching along the scenary, objects and documents left behind by the people who lived in the Lazarus at some point.<br>In addition if you search and connect the dots maybe a greater puzzle will be revealed and the darker truth around you will become brighter.</p>
<h4>GAMEPLAY</h4>
<p>The Fall of Lazarus is a first person exploration game. There is a main story you'll play but you'll have to search and inspect every detail of the scenary looking for clues, notes, letters and objects and piece by piece gather information about what's happening around you.</p>
<p>There are a lot of mysteries aboard the USSC Lazarus and depends on you how many of them you can resolve along your journey. At the end of it maybe you resolve the bigger puzzle around what's going on. Maybe you're right. Maybe you're wrong. You'll need to have in mind every detail in order to unveil the whole story.</p>
<p>You'll have to resolve some puzzles as well, but we wanted to integrate them in the narrative and the scenery. You are in a spaceship and we wanted it to feel like it. The interaction with these puzzles is the same as in the rest of the game trying to not break the immersion in the story.</p>
<p>And you'll also can interact with the terminals and computers around the ship. Some will give you key information, others will help you in your way out. There is a whole operating system full of software and apps filled with information of any kind to explore and take advantage of. You'll have a tool (called Mnem/0z1n3) that will help you gathering and classifying information and breaking through password protected terminals.</p>
<h6>SYSTEM REQUIREMENTS</h6>
<p>MINIMUM:<br>OS: Windows 7/8.1/10 (64 bits)<br>Processor: i5 4260u 1.4GHz<br>Memory: 4GB<br>Graphics: NVIDIA GeForce GTX 560 1GB/AMD Radeon HD 6870 1GB or better<br>DirectX: Version 10<br>Storage: 5GB</p>
<p>RECOMMENDED:<br>OS: Windows 7/8.1/10 (64 bits)<br>Processor: i5 6600 3.3GHz<br>Memory: 8GB<br>Graphics: NVIDIA GeForce GTX 970 4GB/AMD Radeon R9 290 4GB or better<br>DirectX: Version 11<br>Storage: 5GB</p>
<h4>FEATURES</h4>
<p>- First person exploration game.<br>- A deeply narrative game with a plot full of twists and mysteries.<br>- Puzles you'll have to solve while advancing in the main story.<br>- A variety of beautifully crafted sceneries.<span></span></p>
<h4>PROLOGUE DEMO</h4>
<p>The Fall of Lazarus: The First Passenger is the conclusive prologue and demo of The Fall of Lazarus. In this little adventure set in the year 2180 you will play as Caleb Rogers, a Gen-Ethics (an audit firm focused on controlling the normative and quality of criogenic, clonation and genetic alteration processes) who wakes up in the USSC Lazarus against his will.The First Passenger is a little slice of the final game where we showcase all the playable mechanics of the full game and also works as an example of the narrative we want to play with. You can play a whole level of the USSC Lazarus out of the five levels will include the final game, every one of them highly detailed and full of objects and terminal to interact with while playing the main story. But we wanted you to enjoy this little stand alone experience separately if you want to. This is only the prologue with another protagonist but we highly recommend you to stay tuned and, when the day comes, enjoy the full experience.<span></span></p>
<h4>REFERENCES</h4>
<p>When we have to describe The Fall of Lazarus in a phrase we always say «it's like Firewatch (Campo Santo) meets the film Moon (Duncan Jones)».</p>
<p>The astonishing off-frame and foreshadowing narrative of Moon is our core narrative reference and the slow paced development of the plot and clever dialogues of Firewatch are really inspiring to us.</p>
<p>Of course we're filled with references such us Gone Home, Mind: Path to Thalamus, The Guest and films like 2001: a space odyssey or Alien. Even Lost series are being really influencing because of how it works the mysteries and characters.</p>
<h4>PLATFORMS</h4>
<p>We will launch The Fall of Lazarus on PC at first. We obviously want to release it on as much platforms as we can, but right now we have to focus on the PC version. We also like to port the game to VR but we have to wait to see how things work.</p>
<h4>FOLLOW US</h4>
<p>Follow the development of our game:</p>
<p>Official website: <a href="http://www.thefalloflazarus.com/" rel="nofollow noopener" referrerpolicy="origin">http://www.thefalloflazarus.com</a><br>Follow us: <a href="https://twitter.com/NoWandStudios" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/NoWandStudios</a><br>Visit: <a href="http://www.nowandstudios.com/" rel="nofollow noopener" referrerpolicy="origin">http://www.nowandstudios.com/</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/8ZLG-KmuMwM" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODMwNzQvODM4NTA1LnBuZw==/original/r%2BLY9u.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNzQvODM4NTA2LnBuZw==/original/07dn6K.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNzQvODM4NTA3LnBuZw==/original/hdxFMv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNzQvODM4NTA4LnBuZw==/original/Hg6rC8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODMwNzQvNjg1Njg0LnBuZw==/original/8nHht4.png]]
<p>An adventure location, suitable for classic editions of the world's most popular role playing game. If you're playing the current edition of the aforementioned game, it'd probably be a good idea to double the hit points of the monsters. Probably appropriate for characters of 5th level or so. Uses art assets from: <a href="https://feral-indie-studios.itch.io/feral-indie-studio-art-pack-black-metal-doom-world">https://feral-indie-studios.itch.io/feral-indie-studio-art-pack-black-metal-doom...</a> Check it out!</p>
[img width=500 [https://img.itch.zone/aW1nLzUyMTcyMzYuanBn/original/sMjjRk.jpg]]
<blockquote>Tonight you will prepare the body. You will hang the heavy black curtain, and you will put out the call in the town paper.<span class=""> </span>Tomorrow night, when the sun sets, the chosen mourner will arrive, with their matter to discuss. You will sit with the body on one side, coaxing the soul back to the body, and the mourner will sit on the other.<span class=""> </span>The final undertaking will begin.</blockquote>
<p><strong>THE FINAL UNDERTAKING </strong>is a one player journaling game about grief, resolution, necromancy, and a town. It uses a d4, a tarot deck, and pen and paper to tell a story about an undertaker, who works in a town to prepare bodies for burial, briefly brings the spirit back to the body, and then facilitates a conversation between a single mourner and the deceased about their unresolved business.<br></p>
<p>In this game, you will use the tarot cards to form a spread that tells the bones of a story -- the deceased, the object they are being buried with, the mourner here to visit them, and the unresolved business between them. From your spread, you will be able to construct small narratives and write them down as journal entries. </p>
<h1>Warnings</h1>
<p>This game deals with topics of death, grief, and relationships. If you need to step away at any point, do so. The game will still be there. Your health is more important.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNDQ0Mi81OTA0NjYxLnBuZw==/original/B29fAU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNDQ0Mi81OTA0NjI5LnBuZw==/original/To4umI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNDQ0Mi81OTA0NjMwLnBuZw==/original/Fqqht%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNDQ0Mi81OTA0NjI4LnBuZw==/original/FEaKrS.png]]
<blockquote>Tonight you will prepare the body. You will hang the heavy black curtain, and you will put out the call in the town paper.<span class=""> </span>Tomorrow night, when the sun sets, the chosen mourner will arrive, with their matter to discuss. You will sit with the body on one side, coaxing the soul back to the body, and the mourner will sit on the other.<span class=""> </span>The final undertaking will begin.</blockquote>
<p><strong>THE FINAL UNDERTAKING </strong>is a one player journaling game about grief, resolution, necromancy, and a town. It uses a d4, a tarot deck, and pen and paper to tell a story about an undertaker, who works in a town to prepare bodies for burial, briefly brings the spirit back to the body, and then facilitates a conversation between a single mourner and the deceased about their unresolved business.<br></p>
<p>In this game, you will use the tarot cards to form a spread that tells the bones of a story -- the deceased, the object they are being buried with, the mourner here to visit them, and the unresolved business between them. From your spread, you will be able to construct small narratives and write them down as journal entries. </p>
<h1>Warnings</h1>
<p>This game deals with topics of death, grief, and relationships. If you need to step away at any point, do so. The game will still be there. Your health is more important.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNDQ0Mi81OTA0NjYxLnBuZw==/original/B29fAU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNDQ0Mi81OTA0NjI5LnBuZw==/original/To4umI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNDQ0Mi81OTA0NjMwLnBuZw==/original/Fqqht%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzNDQ0Mi81OTA0NjI4LnBuZw==/original/FEaKrS.png]]
<h6>Intro</h6>
<p><strong>The First Greek Odyssey an adventure in which you play a teenage Zeus. It is your destiny to become the king of the gods.</strong></p>
<h5>Can you complete this quest?</h5>
<p>Some of the battles are very difficult and will test your ability to survive in a turn based rpg setting. On the other hand some are not difficult battles.</p>
<p>Ultimately making the decision to learn about the Greeks will make the battles easier...<br></p>
<h5>This is an educational RPG on Greek mythology, history and philosophy.</h5>
<p>Warning Adult theme; sexual identity, slavery, warfare, relationships and gambling.<br></p>
<p><br></p>
<p>The adventure encourages stealth learning it is ideal for History and Politics students. And passionate gamers alike. You have the option to follow the educational line or battle your way to victory. <br></p>
<h3>What is it about?</h3>
<p>The story is the classical myth of how Zeus defeated the Titan Kronos and became the king of the gods with the assitance of his kin.<br></p>
<p>It is made in RPG maker and is a good example of what you can do with the default game. <br></p>
<p>It is aproximately a minimum of 3hours and has side quests that affect the story.</p>
<h3>Why choose Edutainment? </h3>
<p>You will during your adventure learn interesting historical fact about how the Greeks helped form the modern world. Either that or you will hack and slash your way to victory.</p>
<p>By the end of the Game you will be able to name all the first generation Greek Gods.</p>
<p>And will be able to say you have faced the Titan Kronos.<br></p>
<p>Join the Edutainment discord channel: <a href="https://discord.gg/G2DXND" rel="nofollow noopener" referrerpolicy="origin">https://discord.gg/G2DXND</a><br></p>
<p><br>Free for a limited time!<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDY1NjY0LzIzNzc0NDkucG5n/original/Isb132.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY1NjY0LzIzNzc1ODYucG5n/original/VU7q58.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY1NjY0LzIzNzc1ODIucG5n/original/poZXCE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY1NjY0LzIzNzc1NzkucG5n/original/gPvxc1.png]]
<h1>The Flame Still Flickers In The Fen</h1>
<blockquote><em>There you have seen the true dark enemies of England. Sick father and mother who would have us children forever. Stephen, our land must live. This land we love must live. Her deep, dark flame must never die. Night is falling. Your land and mine goes down into a darkness now, and I, and all the other guardians of her flame are driven from our home up out into the wolf’s jaw. But the flame still flickers in the fen. You are marked down to cherish that. Cherish the flame till we can safely wake again. The flame is in your hands, we trusted you, our sacred demon of ungovernableness. Cherish the flame. We shall rest easy.
<br>- King Penda in Penda's Fen (written by David Rudkin)</em></blockquote>
<p>A year ago I watched the BBC Teleplay Penda's Fen for the first time, on recommendation from my minister. It's from 1974 and is about a gay teen in rural Worcestshire whose conservative and christian biases are challenged by visions given to him by the Fen he inhabits.</p>
<p>To say it affected me is an understatement.</p>
<p>The Flame Still Flickers In The Fen is an attempt to capture and modernise the feelings it gave me. You play teenagers, who are genderqueer, but they don't know it yet. You live in the kinds of places me and my friends grew up in, towns on the rural-urban fringe, where twenty minutes on one bus takes you into a major city and twenty minutes on another strands you in the middle of nowhere. There's something liminal about these places, and the natural environments that grow within them, where you can hide yourself among the trees and foliage and pretend you've escaped the motorways and farmland and shops less than a mile away. Where the divine seeps in and becomes inescapable.</p>
<p>This game invites you to allow yourself to become distorted and twisted by those places and the things you find inside them. It asks you to consider the politics of the outer world, and how they affect you, even when you run away from them. It demands of you to fight against them.</p>
<p>It's important to me, and I hope you like it.<br><br>It also has some excellent art, done by some excellent artists, and they deserve your awe and support so much, so please go and look at their other works and support them if you can.</p>
<h5><br>Credits:</h5>
<p>Writing and layout: Alexis/Lichen Arrowsmith</p>
<p>Art for Acts 1 & 2: Sonja Klisch (Instagram: @bluuk.y)<br>Art for Act 3: Molly Griffiths (DeviantArt: bluesapphiredragon)<br>Art for The Ancient Whispers: Folgers B. Kelley (Twitter: @bestpartofwaki1, Tumblr: thebestpartofwakingup)<br>Art for The Hands of Light: Theresa Dettloff (Instagram/Twitter: @tdrawingdump) </p>
<p>Editing: Ethan Treaster</p>
<p>Playtesting: Tomas Guilfoyle, Tom Hale, Sophie Hayman, Paige Harvey, Ethan Treaster, Patrick Philbin</p>
<p>Very Helpful Advice: John Battle, Gordie Murphy</p>
<p>Patrons: Ceaserboo, Ethan Treaster, MxMossy, Rynoclank, Danny Britzman, Paige Harvey</p>
<p>Inspired by Penda’s Fen (1974), Sleepaway by Jay Dragon, Ribbon Drive by Avery Alder and years spent exploring Royden Park and Thurstaston Common.</p>
<p></p>
<p></p>
[img width=500 [https://img.itch.zone/aW1nLzU2NjE0ODIucG5n/original/RHkDI8.png]]
<p>Who hasn't dreamt, at some point, of filling a pool full of jello and swimming in it? In some of us, that dream never died. Some of us kept dreaming: what if the whole street was jello? Or the continent? The world!? The Floor is Jelly posits a universe made of jello, made purely for one's own amusement. No longer need we look to our walls and our floors and sigh, "How solid! How sadly immalleable! How I wish for a world consisting only of Non-Newtonian fluids!" That world has arrived, via the dark magic of videogames, as <em>The Floor is Jelly.</em></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjI0MzUyLzEwNTk2NTYucG5n/original/RlspKr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI0MzUyLzEwNTk2NTcucG5n/original/bsddvK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI0MzUyLzEwNTk2NjcucG5n/original/c7JE5c.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI0MzUyLzEwNTk2NTUucG5n/original/ejvOiJ.png]]
<p>Who hasn't dreamt, at some point, of filling a pool full of jello and swimming in it? In some of us, that dream never died. Some of us kept dreaming: what if the whole street was jello? Or the continent? The world!? The Floor is Jelly posits a universe made of jello, made purely for one's own amusement. No longer need we look to our walls and our floors and sigh, "How solid! How sadly immalleable! How I wish for a world consisting only of Non-Newtonian fluids!" That world has arrived, via the dark magic of videogames, as <em>The Floor is Jelly.</em></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjI0MzUyLzEwNTk2NTYucG5n/original/RlspKr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI0MzUyLzEwNTk2NTcucG5n/original/bsddvK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI0MzUyLzEwNTk2NjcucG5n/original/c7JE5c.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI0MzUyLzEwNTk2NTUucG5n/original/ejvOiJ.png]]
<p><span></span><span></span>"One day, a little creature woke up with a sudden spark of hope. It decided to leave these horrible caves before it was too late. Before being trapped forever in the abyss."</p>
<p><br></p>
<p>The Forgotten Caves of Foolish Linger is a short (45-60 minutes) 2D platformer game, about a little creature who needs to leave dark caves. Climbing your way up, you'll meet some of it's residents and you'll need to face obstacles that will try to keep you in the darkness of this hollowed place.</p>
<p><br></p>
<p>Disclaimer: This game contains dark and adult themes.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/cA3nchVSJNU" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAzODc0OS81OTMxOTQzLmpwZw==/original/2BbqFM.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzODc0OS81OTMxOTQ0LmpwZw==/original/BNqYRg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzODc0OS81OTMxOTQ2LmpwZw==/original/yzXb5Y.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzODc0OS81OTMxOTQ3LmpwZw==/original/otdav%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAzODc0OS81OTMxOTQ1LmpwZw==/original/njpupP.jpg]]
<h2>The Furniture of Self (VR/Non-VR)</h2>
<p>is an autobiographical VR game about identity and self. <br>Explore my room, create your identity and find out about my own.</p>
<p></p>
<blockquote class="text-center"><em>A human is born without identity, surrounded by everything, in contact with nothing. From the first touch ones identity is starting to exist until it gets overwhelming, ever changing and incomprehensible. </em></blockquote>
<p></p>
<p>This game is the product of a year of studying the topics identity and self. It tries to visualize the process of building ones own identity and exploring a given identity. </p>
<p>Everything you touch will become a part of your self and you cannot let go anymore. Your body is not able to interact with the surrounding, only your identity can do so.</p>
<p>While exploring the room and its contents stories about myself will be unlocked, which are attached to the items in the room.</p>
<h5>Controls:</h5>
<p><img src="https://img.itch.zone/aW1nLzE5ODI0MDAuanBn/original/6seWxH.jpg" alt="HTCViveControls" title="HTCViveControls" loading="lazy"></p>
<h5>None VR Controls:</h5>
<ul><li><em>Rightclick </em>to look around</li><li><em>W|A|S|D</em> to move</li><li><em>Click </em>to grab item</li></ul>
<h6>Menus:</h6>
<ul><li><em>Tab </em>to open catalogue</li><li><em>Q|E</em> to look at previous/next catalogue item</li><li><em>Esc </em>to open menu</li><li><em>Scroll </em>to navigate menu or catalogue</li><li><em>E </em>to confirm menu selection</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/VbPdFbS73ls" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzk5NzQ1LzE5ODUxNjEuZ2lm/original/GnLgh7.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5NzQ1LzE5ODUxNTQuZ2lm/original/Md8Lgw.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk5NzQ1LzE5ODUxMzQuZ2lm/original/GxI%2Fbu.gif]]
<figure><img src="https://steamcdn-a.akamaihd.net/steam/apps/502530/extras/Landing.png?t=1589410880" loading="lazy"></figure>
<h5 class="text-center">12/1/20: PERMANENT PRICE DROP! $<em><del>5.99</del></em> → $2.99!</h5>
<h3 class="text-center"><em>A mysterious landing</em></h3>
<p class="text-center"> What could this mean for the visitors of Tinderboone National Park..?</p>
<h3 class="text-center"><em>A curious glowing entity</em></h3>
<p class="text-center">Assume the role of an extra dimensional being that gets weird in the woods, night after night. </p>
<h3 class="text-center"><em> An expansive national park</em></h3>
<p class="text-center">Wander across an interactive open world environment, and encounter the humans that hang around in it.</p>
<figure><img src="https://steamcdn-a.akamaihd.net/steam/apps/502530/extras/Totem_Park.jpg?t=1589410880" loading="lazy"><br></figure>
<h3 class="text-center"><em>Features</em></h3>
<ul class=""><li>Be an alien</li><li>Chill out in the woods</li><li>UFO fast travel</li><li>Say "Hello" to humans</li><li>At least 10 layers of parallax, wow</li><li>Creep around an ever changing environment</li><li>Unlock new cosmic abilities</li><li>Insect friends</li><li>Move around using a keyboard</li><li>Occasional forest fire surprises</li><li>Very funky music soundtrack (real instruments?!)</li><li>Experiment with touching things</li></ul>
<figure><img src="https://steamcdn-a.akamaihd.net/steam/apps/502530/extras/GM_steam_header.png?t=1589410880" loading="lazy"><br></figure>
<p class="text-center"><em>The Grey Man is waiting for you.</em></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/qh033de0EZE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDU1LzM1NzgzNDEuanBn/original/tDCRXO.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDU1LzM1NzgzMzcuanBn/original/4SJfih.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDU1LzM1NzgzMzEuanBn/original/Xh9L35.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDU1LzM1NzgzMzIuanBn/original/Np9qbz.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDU1LzM1NzgzMzguanBn/original/TvrdRQ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDU1LzM1NzgzMzYuanBn/original/551NMg.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDU1LzM1NzgzNDIuanBn/original/lB3CLs.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDU1LzM1NzgzNDAuanBn/original/gMut6Y.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDU1LzM1NzgzMzQuanBn/original/SD8fsN.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDU1LzM1NzgzMzUuanBn/original/Q9O3r8.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDU1LzM1NzgzMzMuanBn/original/J10lrM.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MDU1LzM1NzgzNDMuanBn/original/eGf6A%2B.jpg]]
<h2>What's GUTS+?</h2>
<p>We can't all be super-powered demigods on an epic quest to save the universe. Most of us are just normal people dealing with weird challenges or tricky situations. When you don't have access to supernatural abilities, it takes <strong>GUTS</strong> to work through them!</p>
<p>The GUTS+ System is a role-playing game system that allows you to live out wild adventures without straying too far from your own abilities in the real world while still leaving plenty of room to explore what's possible with tremendous growth! Improve your character's qualities to excel at certain activities and overcome more and more incredible tasks! Work with your Game Master and your fellow players to solve big problems <strong>together</strong>!</p>
<p>Interaction with the game world and all the characters in it is at the forefront of the GUTS+ System, and its generalized mechanics allow for nearly infinite settings and scenarios. The GM decides what's possible and what's available in the game world, and you can help sway their decisions. There's even a unique magic system to explore if you're looking to add a little bit more of the mystical to spice up your game world!</p>
<p>It's not always gonna be easy, but now you've got the <strong>GUTS </strong>to do what it takes!</p>
<h2>Why GUTS+?</h2>
<p><strong>The GUTS+ System aims to give you as much freedom as possible:</strong><br>It lays out a full set of rules without a specific setting or storyline so you can build your own or modify one you like. The goal is to provide easy-to-remember rules that let the Game Master build the world and decide the outcomes so players can focus more on collaborative storytelling, interpersonal relations, and free-form play.</p>
<p><strong>GUTS+ stands apart with its "quality" system:</strong><br>Rather than having set skills, GUTS+ focuses on individual, customizable qualities giving your character the ability to do things, and if they don't have one specific to the action, their success at performing tasks is dependent upon their base qualities:<br><strong>G</strong>umption, <strong>U</strong>tility, <strong>T</strong>hought, and <strong>S</strong>lyness.</p>
<p><strong>Plus a unique conflict resolution system using only six-sided dice:</strong><br>Roll one die for each level your quality has, and each die is interpreted individually to determine the outcome. So if your quality is level 4, roll 4 dice, and the GM interprets the roll rather than taking a total or average.</p>
<h2>RPG <em>System</em>?</h2>
<p>Yep, this is an assembly-required tabletop role-playing game system with no stories or settings built in. Think of it like a game engine, but for tabletop role-playing—you can use it <em>however you want</em> with <em>whatever story you want!</em> <strong><em>Ultimate freedom!</em></strong><br></p>
<p>That does mean that you need to provide your own plot and ideas, though. The Game Master chapter covers how you can build your own world, but you can also use existing stories and worlds to play however you want with the simplified rules system.</p>
<p>If that's too much for you, <a href="https://alamantus.itch.io/skater-plus" target="_blank">SKATER+</a> was released as an expansion to the GUTS+ System with special rules for skating like in the Tony Hawk Pro Skater video games. It's the first official setting for the GUTS+ System, and it's a lot of radical fun! SKATER+ is free, so whether you use the settings and rules itself or simply look at them for inspiration, you'll hopefully be able to find a use for GUTS+!<br></p>
<hr>
<p>This core rule book contains all of the information you need to learn how to use the GUTS+ system, how to use its unique optional magic system, and a full one-off adventure scenario to help you get started building your own games. All of the information in this book is freely available on the <a href="https://guts.plus" target="_blank" rel="nofollow noopener" referrerpolicy="origin">official GUTS+ website</a>, but this provides a nice, printable format with custom images throughout.</p>
<p>You can also <a href="https://www.drivethrurpg.com/product/273132/The-GUTS-System-Core-Rule-Book" target="_blank" rel="nofollow noopener" referrerpolicy="origin">buy this book through DriveThru RPG</a>, if you prefer keeping your RPG collection in that library instead! After this version is released, a sleek physical version of this book will be available on DriveThru RPG for $10 black and white softcover or $20 color hardcover, so check back once that's available!</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDA3MjMxLzI2NzYwMzkucG5n/original/AKNRI3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA3MjMxLzI2NzYwMzgucG5n/original/QcA0C2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA3MjMxLzI2NzYwNDUucG5n/original/wHpZiw.png]]
<p class="text-center"><a href="https://store.steampowered.com/app/1332990/The_Hayseed_Knight" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><br></a></p>
<h3 class="text-center"><a href="https://store.steampowered.com/app/1332990/The_Hayseed_Knight" target="_blank" rel="nofollow noopener" referrerpolicy="origin">GET THE FULL VERSION ON STEAM NOW!!</a><br><a href="https://store.steampowered.com/app/1332990/The_Hayseed_Knight" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzQ2OTgzODAuanBn/original/aFkyok.jpg" loading="lazy"></a></h3>
<h4 class="text-center">Just to reiterate, the itch version is a demo! The full game won't be available here for a while</h4><p>If you got here through the Palestine Aid bundle, please, <a href="https://sandramj.itch.io/the-hayseed-knight/devlog/261610/to-the-palestine-aid-bundle-purchasers">read this devlog first</a>!<br></p>
<p><em><del>Okay, cool, now that we got that out of the way...</del><strong><br></strong></em><strong></strong><br></p>
<p>Come, traveller, and listen to the tale of <strong>Ader-sind of the Upperfield,</strong> the greatest knight the kingdom has ever known! The bravest! The most handsome! The... <br></p>
<p><em>yeah, no, let's try this again.</em><em><br></em></p>
<p>Join a ragtag band of misfits as they piece together how <strong>Ader,</strong> a one-eyed farmboy with seemingly impossible dreams, becomes <strong>the most celebrated knight the kingdom of Acazhor has ever known.</strong> <br><br>This gorgeous, <strong>fully-voice acted </strong>and <strong>animated </strong>visual novel unravels in unexpected ways with a perfect blend of mystery! Comedy! ROMANCE!<br></p>
<p><em>So here, let me take it from the top once more:</em></p>
<ul><li>Fully and lovingly <strong>voice acted</strong>!</li><li>Gorgeous, <strong>animated </strong>sprites!</li><li>A <strong>unique world </strong>with lots of lore and an in-game encyclopaedia!</li><li>Created primarily by a single person over 4 years so you'd better believe I LOVE THIS.</li><li><strong>SAFE FOR WORK. </strong>This is a selling point, apparently! Yes really. PG 16<em>!<br></em></li><li><em><strong>3 hours of a free demo!</strong> (So you can see why I need money to make this, I mean come on)</em></li></ul>
<p>The game is very much still in development, so anything is subject to change in future versions! If you want to help me develop this game, there's a <a href="https://www.patreon.com/thehayseedknight" target="_blank" rel="nofollow noopener" referrerpolicy="origin">patreon</a> and any contribution is really appreciated!<br>Keep up with development on <a href="https://twitter.com/sandramjdev" target="_blank" rel="nofollow noopener" referrerpolicy="origin">twitter</a>!<br></p>
<p>-Streams and Let's Plays are really appreciated! I'd love to watch yours and share it!<br></p>
<p>-Please, do not redistribute.</p>
<p><strong>Content Warnings:</strong> fantasy racism, fantasy homophobia, jokes and serious talk about death in chapter 3, heavy drinking<br></p>
<p><strong>Current Known Issues:</strong></p>
<p>-None in the <em>demo </em><del>ha ha what</del><br></p>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/OKjwFaj3G6c" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTcyMTU3LzE2Nzc3NjIuanBn/original/WhdA%2Fs.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTcyMTU3LzQ4NDMyNDcuanBn/original/ssOj%2BT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTcyMTU3LzE2Nzc3NjUuanBn/original/1WX%2F%2Bl.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTcyMTU3LzI1NjgxOTcuZ2lm/original/GiF1Kf.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTcyMTU3LzI1NjgyMjkuZ2lm/original/I7k1Ru.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTcyMTU3LzQ4NDMyNTIuanBn/original/vojOdX.jpg]]
<p><strong>2021 Overhaul Coming Q4</strong><br></p><p><br></p><p>The world of Budgie Island has fallen to shambles when the evil Dr Angery makes his big debut, taking over the unsuspecting island and causing havoc. Take control of the Hero, as he sprints, bounces, and swings his way through his adventure to save Budgie Island.</p>
<p></p>
<p>Based on the comic style and storytelling of a young child, the Hero of Budgie Island is a simple but fun adventure game with a wild cast of characters, collectible items, and a very mean <del>dentist</del> I mean, mad scientist.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTI5OTI3LzI3NTQ5OTgucG5n/original/i2FNrm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI5OTI3LzI3NTQ5OTkucG5n/original/NroU2G.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI5OTI3LzI3NTUwMDEucG5n/original/Xafn0W.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI5OTI3LzI3NTUwMDIucG5n/original/b9Rpfi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTI5OTI3LzI3NTUwMDMucG5n/original/WMOPDe.png]]
<p>This is a 2D platformer based on: <a href="https://www.youtube.com/watch?v=Mc13Z2gboEk&t=2711s" rel="nofollow noopener" referrerpolicy="origin">GD Quest tutorial</a><br><br>And <a href="https://www.kenney.nl/" rel="nofollow noopener" referrerpolicy="origin">Kenney</a>'s music is included</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODc5NjY4LzQ5NTE3MDMucG5n/original/gZPpoU.png]]
<p>The Western States have entered an age of
wonders. Technological innovations
transform the lives of her people.
Automobiles connect vast distances
over glistening highways. Radio
waves carry new voices, thoughts,
and art to ears around the nation.
Neon lights hold back the night on the shoulders of massive
dams. And the train—ceaseless,
thundering, unrelenting—powers it all; pumping food, material, and people
through the veins of this great
extractive beast.</p>
<p>But these new wonders have not
brought blessings to everyone.
With the Federal Government in the pocket of powerful Robber Barons and Vampires;
the poor, and the land itself, are
dispossessed and exploited. In The Western States, many stow away on
the freight trains in search of paying
work.
</p>
<p>And then there are the monsters.</p>
<p>Werewolves prowl the Northern
Prairie. Big Foots leave the woods
in greater numbers. The dirt itself
seems to have risen up in the Dust
Bowl of the Southern Prairie. Vampires
haunt the elegant mansions of
Acadia, ruthlessly running their railroad lines.</p>
<p>The Federal Government has
effectively abandoned its people.
The wealthy can afford protection,
but most communities are
struggling to cope. This is where
you come in.
</p>
<p>You are an adventurer, a laborer, a
wanderer, and a monster hunter.
As a member of the International
Brotherhood of Itinerant Sellswords
(IBIS), you travel the rails of The Western States, selling your skills to whatever Neighborhood, Town
Council, Grange Hall, or whoever
will pay you for your next meal. You
are a knight of the rails.</p>
<p>It’s a dangerous, precarious life, and
probably not one you had planned
to enter, but the people need your
help. And righteousness is its own
reward. Right? </p>
<p>_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-</p>
<p>The Knights of the Road is a tiny hack of <em>Into the Odd/Electric Bastionland </em>by Chris McDowell <a href="http://www.bastionland.com" rel="nofollow noopener" referrerpolicy="origin">(www.bastionland.com)</a>. Players assume the mantle of monster hunters who hop the rails of a dystopian early 20th century, taking contracts to kill creeps and monsters, all the while avoiding the wrath of evil Barons of Industry.</p>
<p>Work together to tell a fun
story, solve puzzles, improvise, joke,
eat, and enjoy your time together.</p>
<p>_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-</p>
<p>What do you get?</p>
<p>PDF versions of three 16-page booklets: the main rule book, a bestiary, and a book of GM advice.</p>
<p>32 hand-drawn, black-and-white illustrations.</p>
<p>A high-quality PNG of an 18x24" full-color poster map of the Western States (the setting for The Knights of the Road).</p>
<p>A PDF of a printable ready-to-assemble booklet layout, with instructions for putting it together yourself.</p>
<p>_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-</p>
<p>For printing at home, make sure to select long side binding if you're printing double-sided, flip the page on the long side if you're hand-feeding it. Also, make sure to scale it to fit in your printable area on your printer. Hand-feeding will be more accurate to line up the printed area on both sides of the paper.<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/pvy7C0Bjhnk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTIyMzM2LzUyMTU4MTcucG5n/original/d0yo04.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyMzM2LzUyMTU4MjEucG5n/original/g3CJEv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyMzM2LzU4NTE3NzkucG5n/original/OqPRcQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTIyMzM2LzU4NTE3ODcucG5n/original/oa0vsV.png]]
<p><span></span></p>
<p class="text-justify">The world of Rosarah is haunted by the ancient past. Grand civilizations fell to the iron fist of the Kithen Empire. The people suffered. But while the empire fell over 1,000 years ago, the guardians who protect Rosarah are dwindling.</p>
<div class="text-justify"><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/SHITjGb4qX8" frameborder="0" allowfullscreen=""></iframe></div>
<p class="text-justify">They are the Librarians: the guardians of ancient knowledge and history, protectors of the 8 magic spell books which were originally used by evil to conquer Rosarah. Randel is thrust suddenly into his role as a Librarian when his grandfather is slain by an undead monster. He must unseal the spells, buried deep in well-guarded Libraries, in order to defend Rosarah once again from tyranny.</p>
<div class="text-justify text-center"><img src="https://img.itch.zone/aW1nLzI4NjIxNzcuanBn/original/0wU7v2.jpg" style="color: inherit; font-size: inherit" loading="lazy"></div>
<p></p>
<p class="text-justify"><strong>Exploration:</strong> Explore the vast and open world of Rosarah, investigating its many secrets. Find hidden treasures, collectible upgrades, and interesting landmarks. You are free to tackle the challenges in whatever order you like, as it is possible to explore the entire game with just the tools you have available at the beginning of the game.<br></p>
<figure><img src="https://img.itch.zone/aW1nLzI4NjIxNzguanBn/original/qiDdVJ.jpg" style="color: inherit; font-size: inherit" loading="lazy"><br></figure>
<p class="text-justify"><strong>Solve Puzzles:</strong> Uncover the secrets buried in the eight hidden Libraries throughout Rosarah. Each is riddled with dangerous traps, and puzzles that seek to trick any who might enter uninvited. If you are able to navigate them, each contains a powerful spell to add to your set of abilities.</p>
<p><img src="https://img.itch.zone/aW1nLzUxOTQ3NDkuanBn/original/Pg5it0.jpg" loading="lazy"><br></p>
<p class="text-justify"><strong>Battle Enemies:</strong> Take on fourteen powerful bosses, as well as minibosses, and a host of fiendish foes determined to reign destruction across Rosarah. Use many different strategies to fight, making use of an arsenal of weapons and magical attacks. Find new abilities, and upgrade your abilities by finding hidden treasures.<br></p>
<p><img src="https://img.itch.zone/aW1nLzI4NjIxNzkuanBn/original/uOn%2Bfn.jpg" loading="lazy"><br></p>
<p>
</p>
<p class="text-justify"><strong>Legend Quest:</strong> For those looking for an extra challenge, Legend Quest is included in v5.0.0. With this game mode, the entirety of Rosarah is changed. Enemies are stronger and have new abilities. The overworld includes new perilous foes and traps. Every Library has a transformed layout and new mechanics, requiring you to use every tool at your disposal.<br></p>
<figure><img src="https://img.itch.zone/aW1nLzI2MjgzNjIucG5n/original/mvmC8D.png" style="max-width: 100%; background-color: rgb(17, 17, 17)" loading="lazy"></figure>
<p><strong>[Note]</strong> This game can be played on a keyboard with configurable controls. However, a gamepad controller is recommended for the best experience.</p>
<p><strong>This game is available on Windows 10 and Linux.</strong></p>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/SHITjGb4qX8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjk5MzUyLzUxOTQ3NzEuanBn/original/i9UGOR.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk5MzUyLzUxOTQ3NjYuanBn/original/FeqPdP.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk5MzUyLzUxOTQ3NjkuanBn/original/O6R412.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk5MzUyLzI4NjIxODAuanBn/original/lRBXRj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk5MzUyLzI4NjIxODEuanBn/original/P7IxcN.jpg]]
<p></p>
<p>Tomorrow a new decisive bill is going to be examined in the the Cabinet of Ministers, and many things are at stake. You control all the characters involved.<br>Game is short but not sweet. Proudly political.<br>Short game born at the Global Game Jam 2019. Play in English o r Italian. <br></p>
<p></p>
<p>Domani una nuova legge di grande importanza sarà presentata al Consiglio dei Ministri, e la posta in gioco è molto alta. Il giocatore controlla tutti i personaggi coinvolti. Breve non vuol dire innocuo. Orgogliosamente di parte.<br></p>
<p>Gioco breve creato alla Global Game Jam 2019. <br>Si può giocare in italiano o in inglese.</p>
<p></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTMxNTU1LzUyNzY0MTkuanBlZw==/original/%2Bcz0Rf.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMxNTU1LzUyNzY0MjAuanBlZw==/original/nyVBot.jpeg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMxNTU1LzUyNzY0MjIuanBlZw==/original/i%2BvGhY.jpeg]]
<p>The lost artifacts is a turn based rpg game inspired by many classics<strong>. </strong>You play Tandor the great adventurer! Go on your journey to find the 4 lost artifacts. On your way you will battle monsters, explore dungeons, collect lots of loot and crafting materials. Craft your own potions and gear. Collect rare rubies that allow you to buy special items at the vendor!</p>
<p><strong><em>GET IT ON STEAM:</em></strong></p>
<p><a href="https://store.steampowered.com/app/1389170/The_lost_artifacts/" rel="nofollow noopener" referrerpolicy="origin">https://store.steampowered.com/app/1389170/The_lost_artifacts/</a></p>
<p><br></p>
<p><strong>Controls:</strong></p>
<p>*Partial controller support</p>
<p>A, W, S, D for movement.</p>
<p>esc: open and close options menu in game</p>
<p>Right mouse click/Fire2/Q : Open/Close menu for player</p>
<p>Left mouse click/Fire1/E : Interact with NPCs, pick up crafting materials, open chests</p>
<p>Space/jump button: enter locations on map</p>
<p><strong>Story:</strong></p>
<p>You are Tandor, son of Helyot the great king. A dark gate has opened and the land is invaded by monsters and dark shadows. The only way to save the kingdom is to find the lost artifacts that combined have great power and close the dark gate for once and for all. </p>
<p><strong>Key Features:</strong></p>
<p>Explore dungeons and fight monsters and bosses:</p>
<p><img src="https://img.itch.zone/aW1nLzQyODY1MjcucG5n/original/DmPZ%2Fe.png" loading="lazy"><br></p>
<p><br></p>
<p>Collect materials for crafting and make your own potions! Collect materials in dungeons and open areas. Sometimes materials can be hidden in chests/containers!</p>
<p>The craft section will tell you what you need to craft items.</p>
<figure><img src="https://img.itch.zone/aW1nLzQyODY1MzEucG5n/original/4Vd5F%2B.png" loading="lazy"><br></figure>
<p><strong>I want to give some special thanks to:</strong></p>
<p><strong></strong><strong>Nicole Marie T </strong></p>
<p><a href="https://twitter.com/musicvsartstuff?s=09" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/musicvsartstuff?s=09</a></p>
<p>Please note some tracks are still placeholders until they get replaced:)</p>
<p>Tracks by Nicole:</p>
<p>- Titel screen music</p>
<p>- Forest music</p>
<p>- monster battles</p>
<p>- dungeon</p>
<p><strong>All other music:</strong></p>
<p>John Leonard French</p>
<p><strong>Character sprites, monster sprites, other tile sets by:</strong></p>
<p><a href="https://finalbossblues.itch.io/">https://finalbossblues.itch.io/</a></p>
<p></p>
<p><strong></strong><br></p>
<p><strong></strong><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/nblfeEyk_Qo" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjM5ODU0LzM3MjA1MzUucG5n/original/Y6CZkw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM5ODU0LzQwMzMyMzEucG5n/original/rafM6z.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM5ODU0LzQyODQ5NTkuanBn/original/opmQnA.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM5ODU0LzQzMzQ4MzEucG5n/original/cdv7jx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM5ODU0LzQzMzQ4MzIucG5n/original/flrfmv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM5ODU0LzQyODQ5NjIuanBn/original/nNlfcO.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM5ODU0LzQzMzQ4MzQucG5n/original/Po1605.png]]
<p>Uncover the mystery of the Machine's Garden as you make your way through this short and atmospheric puzzle game. </p>
<p><br></p>
<figure><strong><img src="https://img.itch.zone/aW1nLzgzNTkyNDcuZ2lm/original/IbbY%2Fa.gif" loading="lazy"></strong></figure>
<p></p>
<p><strong>SOLVE CHALLENGING</strong><strong> PUZZLES</strong><strong><br></strong></p>
<p>Think critically to make your way through 36 challenging and handcrafted hexagonal grid puzzles. Master the use of special cells that launch, attach and multiply hexes to solve intricately interwoven puzzles.</p>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzgzNTkyODIuZ2lm/original/va8AUw.gif" loading="lazy"><br></p>
<p><br></p>
<p><strong>UNRAVEL THE THREADS OF THE PAST</strong></p>
<p>Explore a series of slowly unraveling stories that reveal a poignant, yet lighthearted narrative.</p>
<p><br></p>
<p><strong><img src="https://img.itch.zone/aW1nLzgzNTkyNDUuZ2lm/original/D7Bcjl.gif" loading="lazy"></strong><br></p>
<p></p>
<p><strong>REPAIR WHAT WAS LOST</strong></p>
<p>Repair the Machine's forgotten subsystems, but beware the consequences. After centuries of dormancy, the military installation, vast and serpentine, has opened its eye.</p>
<p><br></p>
<p>by Jon & Michael - feel free to email us at machinesgarden@gmail.com with any inquiries, support questions, or to share some nice words. <a href="https://drive.google.com/drive/folders/1DQ3AdSjmS-493_bwyZ5WpCuDI8Ll1-l-?usp=sharing" target="_blank" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">press kit available here</a>.</p>
<p><br></p>
<p>Wishlist our upcoming weird sci-fi puzzler, TENDY, on steam: <a href="https://store.steampowered.com/app/1816890/TENDY/" rel="nofollow noopener" referrerpolicy="origin">https://store.steampowered.com/app/1816890/TENDY/</a><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/WJN9bAqwRQY" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTU4NzA4LzYxMjY4MzEuZ2lm/original/FBEAud.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTU4NzA4LzQwMDYwMjIucG5n/original/Amm3Bz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTU4NzA4LzMzMzU3NzAucG5n/original/w1DLUv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTU4NzA4LzYxMzQyNzQuZ2lm/original/4asif%2F.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTU4NzA4LzQwMDYwMjMucG5n/original/tzftzu.png]]
<p><strong style="color: inherit; font-size: inherit">The Macramancer</strong><br></p>
<p>Before being a full fledged magician you need to pass these tests. <br>Learn how to use the spells that you will later use in your adventures!</p>
<p>This is a Print & Play, you can print and cut the cards with scissors, or you can download the separated cards and use pen and paper, and your favorite colored tokens!</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NTI1NC82MDM4MTA0LnBuZw==/original/6XHSR%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NTI1NC82MDM4MTE5LnBuZw==/original/2tSiM8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NTI1NC82MDM4MDkyLnBuZw==/original/h%2FsO2e.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NTI1NC82MDM4MDk1LnBuZw==/original/metj7%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NTI1NC82MDM4MDkzLnBuZw==/original/e%2B4N3X.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NTI1NC82MDM4MDk0LnBuZw==/original/T4mWKN.png]]
<p><br></p>
<h1>The Magus is a solo journaling tabletop RPG that takes you on a sweeping journey for power, ambition, and arcane mastery, at great personal and interpersonal cost.
<em></em></h1>
<p><em>For the entirety of February, 100% of sales went directly to charity. While that period has ended, every contribution is still dearly appreciated.</em><strong><em> <a href="https://twitter.com/momatoes/status/1367388481035460608?ref_src=twsrc%5Etfw" target="_blank" rel="nofollow noopener" referrerpolicy="origin">See update.<br></a></em></strong></p><strong><em><a href="https://twitter.com/momatoes/status/1367388481035460608?ref_src=twsrc%5Etfw" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzc0OTYzMzIuanBn/original/v%2FFhk3.jpg" loading="lazy"></a></em></strong>
<h2>About</h2>
<p>As a journaling game, you will roll dice, track stats, create spells, and write imaginary experiences from the perspective of your character: a wizard, newly embarking on their quest for power, their head filled with grand visions of mastery.<br></p>
<blockquote><em>I finally mastered the Forge Chain spell. I had to create a pact with a demon -- forgive me Elia -- but it is worth it. It has to be. It's the only way to bring peace to the kingdom...and glory to me.<br></em></blockquote>
<p><em><img src="https://img.itch.zone/aW1nLzUzNjE2MTAuanBn/original/tOS5f7.jpg" loading="lazy"><br></em><img src="https://img.itch.zone/aW1nLzUzNjE2MjguanBn/original/19V6vW.jpg" loading="lazy"><br><br>This RPG is crunchy. You will use several polyhedral dice to manage four traits: Focus, Power, Control, and Scars, which shape how the protagonist overcomes challenges and meets their denouement after <strong>seven</strong>, fateful events.<br> <br> <em> Perhaps they sail to the Enigmatic North in search of the final homonculus.<br> Perhaps they burrow deep underground to escape their eldritch overlords.<br> Or perhaps they go mad with power, and plunder innocent lives for M O R E<br></em></p>
<p>Everything comes at a cost, however: will you spend your scant remaining time to acquire more powerful spells, or nurture the few connections keeping you human?<br><br><img src="https://img.itch.zone/aW1nLzUzNjE0NjEuanBn/original/aDpOwI.jpg" loading="lazy"><br></p>
<h2>Overcome fantastic challenges with your fledgling power, meet strange creatures along the way, and fly close to the sweet sun of omnipotence.</h2>
<p><br>Featuring fifty exquisitely-designed pages, The Magus is a memorable experience about sacrifice, loneliness, and the power of magic and pathos coursing through all of us.<strong><br></strong></p>
<p><strong>Sample Plays:<br></strong></p>
<ul><li><strong>A sorcerer's climb to power, and the catastrophe that follow </strong>(credit: Kin) <strong><a href="http://willkinchlea.com/journal-the-magus/" rel="nofollow noopener" referrerpolicy="origin">http://willkinchlea.com/journal-the-magus/</a><br></strong></li><li><strong>An ambitious mage finds friends along the way </strong>(credit: PercyPropa)<strong> <a href="https://twitter.com/PercyPropa/status/1355422185343516673" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/PercyPropa/status/1355422185343516673</a></strong></li><li><strong>In which the magus aims for a better world, and finds an ally they truly care for </strong><a href="https://twitter.com/PaulCzege/status/1357800664672264192" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/PaulCzege/status/1357800664672264192</a></li></ul><h3>Recognition<a href="https://carbonerieludiche.blogspot.com/2021/11/annuncio-vincitore-echantillon-della.html?m=1" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><br></a></h3><p><strong><a href="https://carbonerieludiche.blogspot.com/2021/11/annuncio-vincitore-echantillon-della.html" rel="nofollow noopener" referrerpolicy="origin">On November 2021, The Magus was awarded with the Giovine Italia medal from Carbonerie Ludiche in Italy.</a></strong><strong><span class=""></span></strong><a href="https://nessundove.it/en/shopping/magus/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"></a><br><strong><a href="https://carbonerieludiche.blogspot.com/2021/11/annuncio-vincitore-echantillon-della.html?m=1" target="_blank" rel="nofollow noopener" referrerpolicy="origin"></a><em></em></strong>
<strong><em><a href="https://twitter.com/momatoes/status/1367388481035460608?ref_src=twsrc%5Etfw" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzc0OTYzMzIuanBn/original/v%2FFhk3.jpg" loading="lazy"></a>
</em></strong><br></p><p></p><p><a href="https://nessundove.it/en/shopping/magus/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Folks who interested in buying the physical game in Italian may purchase it from NessunDove!</a><span class=""></span></p>
<p></p><br><br><p></p>
<table><tbody><tr><td><h2>A message from momatoes</h2><p>Purchasing this game is deeply appreciated and directly supports me.<strong> That said, free copies are also available</strong>—<em>no questions asked</em>—<strong>simply <a href="mailto:hello@momatoes.com?subject=The Magus — community copy" rel="nofollow noopener" referrerpolicy="origin">email me at hello@momatoes.com</a></strong></p><p>─────</p><em>Other tiny ways to support:</em><ul><li>Share your play experience! Either via <a href="mailto:hello@momatoes.com?subject:The Magus — play report" rel="nofollow noopener" referrerpolicy="origin">e-mail</a> or thru <a href="https://i.momatoes.com/discord" rel="nofollow noopener" referrerpolicy="origin">Discord</a>.</li><li><a href="https://momatoes.com/join" rel="nofollow noopener" referrerpolicy="origin">Sign up for my mailing list</a> to receive (non-spammy!) updates on games or resources I've made.</li><li>Share this game on social media, or <a href="https://twitter.com/momatoes" rel="nofollow noopener" referrerpolicy="origin">follow me on Twitter</a>.</li></ul></td></tr></tbody></table>
[img width=500 [https://img.itch.zone/aW1hZ2UvODk5NTMyLzUwNzc2MDcuanBn/original/zpSiG3.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5NTMyLzUwNzc2MTEuanBn/original/cyqoxU.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5NTMyLzUwNzc2MDguanBn/original/hGg9Go.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5NTMyLzUwNzc2MTAuanBn/original/qOcBH8.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODk5NTMyLzUwNzc2MDkuanBn/original/Zfx0s6.jpg]]
<p><strong>Purchase will include a DRM-free download and a Steam key.</strong><br></p>
<p>The classic web game of love, loss, and balloons by Gregory Avery-Weir remastered for your modern device by Future Proof Games.</p>
<blockquote>Last night I had a dream. <br><br>I floated in darkness, immense, squamous. My mind flowed like my body, slowly and sinuously, tremendous wheels both too slow and too fast for me to describe to you now. <br><br>I was perfect, and titanic, and serene. But then, as I moved through the cold abyss, I saw a light. And as I came near, I saw something... wonderful.</blockquote>
<p>Previously only available in Flash, "The Majesty of Colors" is now available for your PC. Experience it again or for the first time with remastered sound, enhanced interactivity, and polished effects (but the same blocky pixel graphics)! Developed for Windows, OSX, and Linux.</p><p>"So immediately distinctive and unique." <br>- Dora Breckinridge, IndieGameplay</p>
<p>"You could write reams about it, but it's a game where much of the joy is in making those discoveries of what you're meant to be doing." <br>- Kieron Gillen, Rock, Paper, Shotgun</p>
<p>Best Interactive Art or Webtoy of 2008 Audience Award <br>- JayIsGames</p>
<p><strong>Note: MacOS support for this title will end beginning in 2022. For more information, see <a href="https://futureproofgames.com/blog/2021/08/17/mac-support-ending-2022/" rel="nofollow noopener" referrerpolicy="origin">our blog post and FAQ</a>.</strong><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/qdaRIc2TCy0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzk5MDAvNjk4NTgzLnBuZw==/original/BfNyAD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk5MDAvNjk4NTgyLnBuZw==/original/3F3QqG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk5MDAvNjk4NTg0LnBuZw==/original/67AxFx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk5MDAvNjk4NTg1LnBuZw==/original/cndEeJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk5MDAvNjk4NTg2LnBuZw==/original/TkUK1Q.png]]
<p><strong>The Missing Locksmith is an alternate reality game that sees you use real world tools to delve through the lives of three thieves.</strong></p>
<p>After a heist goes wrong, the crew can't trust anyone - even each other. So, they set up a safe that needs one digit from each of them, to make sure no-one disappears with the haul.</p>
<p>Can <em>you</em> crack their combination?</p>
<p>Starting with the clues you've been sent, you'll need to solve codes, send emails, decipher voice notes, and hack websites to find the information you need. </p>
<p>Be careful, though - you're not the only one who wants it...</p>
<p><strong><em>FAQ</em></strong></p>
<p><strong>Do I need to have played an ARG before?</strong></p>
<p>This is a short online experience that doesn't require knowledge of the ARG genre.</p>
<p><strong>Do I need anything to play?</strong></p>
<p>Just the downloaded files, a web browser, and an email account.</p>
<p><strong>How many people can play?</strong></p>
<p>This can be played through solo, or as an escape room-style game for a group. To play with more than one person, distribute the starting clues between players (without looking at them), and go from there!</p>
<p><strong>Who created this game?</strong></p>
<p>The Missing Locksmith was created by <a href="http://twitter.com/elleosiliwood" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Elle Osili-Wood</a> as an online Easter egg hunt during the 2020 lockdown. That'll make sense when you play it.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjA4MDE3LzMyMzg1NzAucG5n/original/71YhMr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjA4MDE3LzMyMzg1NjkucG5n/original/Vs4Ly%2F.png]]
<hr>
<p class="text-justify">Waking up in a field off a 2-lane highway isn't the best start to anyone's night. Especially when you don't have a single clue how you got there to begin with. <br></p>
<p>Unfortunately, it's what Alec has to deal with tonight. It's cold, the wind's bitter, and he simply can't remember what happened earlier in the night. It must have been something big.</p>
<p class="text-justify">At least he finds a bus stop for shelter, but given it's a bus stop, he's not the only one there waiting.</p>
<p></p>
<p>Alec has two choices before him. Ignore the stranger's attempts to converse (he could be a serial killer, after all) and wait for the bus, or engage him (what else is there to do stranded at a bus stop) and see what happens. </p>
<p>The choice is yours.</p>
<p></p>
<hr>
<h1 class="text-center">Characters</h1>
<table><tbody><tr><td><img src="https://img.itch.zone/aW1nLzQ3MzUwODgucG5n/original/Um7alp.png" loading="lazy"></td><td><img src="https://img.itch.zone/aW1nLzQ3MzUwOTAucG5n/original/%2FrVVVM.png" loading="lazy"></td></tr><tr><td><strong><em>Alec </em></strong>— a reserved young man of few words. He enjoys long drives at night on his motorcycle and isn't a fan of small talk.</td><td><strong><em>Stranger</em></strong> — another traveler who happens to be as stranded as Alec. <em>Somehow</em>, he's familiar, but Alec can't remember why. </td></tr></tbody></table>
<hr>
<h1 class="text-center">Features</h1>
<ul class="text-center"><li class="text-center">10,000~ Words! </li><li class="text-center">11 Unlockable illustrations! </li><li class="text-center">3 Endings!</li></ul>
<h1 class="text-center">Credits</h1>
<ul class="text-center"><li class="text-center">Writing, Art, & Coding: <a href="https://earlronove.itch.io/">Ronove</a></li><li class="text-center">Coding Help & Android Port: <a href="https://baiyu.itch.io/">BáiYù</a></li><li class="text-center">Music provided by: <a href="http://www.presence-of-music.com/index.html" rel="nofollow noopener" referrerpolicy="origin">Presence of Music<br></a></li></ul>
<p>Content warning:<br>May not be appropriate for all ages. Contains mentions of suicide, swearing, smoking, and alcohol references.<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODQxNDU0LzQ3MzQ4NzEucG5n/original/eVvyuN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQxNDU0LzUwMzU5NDQucG5n/original/zhmaI2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQxNDU0LzUwMzU5NTEucG5n/original/rRbRlw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODQxNDU0LzUxODE0NDMucG5n/original/7VMMbp.png]]
<p></p>
<blockquote>Once upon a time a mouse, a bird, and a sausage formed a partnership.</blockquote>
<blockquote>They kept house together, and for a long time they lived in peace and prosperity, acquiring many possessions.</blockquote>
<blockquote>The bird's task was to fly into the forest every day to fetch wood.</blockquote>
<blockquote>The mouse carried water, made the fire, and set the table.</blockquote>
<blockquote>The sausage did the cooking.</blockquote>
<p></p>
<p>Based on the classic Brothers Grimm story of the same name, The Mouse, the Bird, & the Sausage is a tabletop micro-rpg about fairy-tale creatures living together in dubious harmony.</p>
<ul><li>Play as an adorable animal or foodstuff!</li><li>Do chores!</li><li>Meet quirky neighbors!</li><li>Manage the mood of your household!</li><li>Hope your life doesn't go down in flames!</li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNDkyMy81NzIzMTYxLnBuZw==/original/TisAb3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNDkyMy81NzIzMTYwLnBuZw==/original/ah%2F45Q.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNDkyMy81NzIzMTY0LnBuZw==/original/%2FFqVQq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNDkyMy81NzIzMTYzLnBuZw==/original/qFkcOy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwNDkyMy81NzIzMTYyLnBuZw==/original/7SuhQ6.png]]
<h4><img src="https://img.itch.zone/aW1nLzQ1OTExMDEuZ2lm/original/vQ%2BoVH.gif" loading="lazy"></h4>
<h4>FOUR MILES SOUTH OF DOVER</h4>
<p><em>You're a night fisherman, and you spot a boat approaching. You bait your rod and steel yourself, ready for interrogation. Once he arrives, the man on the opposite deck is calm, civilised, and has a shotgun slung across his back. </em></p>
<p><em>How's this gonna go down?<br></em></p>
<p>“Deals with some difficult subject matter in a thoughtful and captivating way” <a href="https://www.freegameplanet.com/the-outcast-lovers-download-game/" rel="nofollow noopener" referrerpolicy="origin">
<br>Free Game Planet</a></p>
<p>“Far Few Giants are changing the game of interactive cinematography” <br><a href="https://www.rebind.io/how-farfewgiants-narrative-anthology-challenges-video-game-cinematography-4833/" rel="nofollow noopener" referrerpolicy="origin">Re:Bind</a></p>
<p>“A powerful execution of micro-fiction” <br><a href="https://www.escapistmagazine.com/v2/the-night-fisherman-is-a-tense-moonlit-confrontation-you-can-play-for-free/" rel="nofollow noopener" referrerpolicy="origin">The Escapist</a></p>
<p><img src="https://img.itch.zone/aW1nLzM1MjE4MzUucG5n/original/5CzavF.png" loading="lazy"></p>
<h4>A SHORT GAME BY DE FAULT & CHARD</h4>
<p>The English Protection Group keep a watchful eye on the Smuggler's Run, a renowned crossing for vessels bound from Calais containing illegal immigrants.<br></p>
<p>When faced with an armed man, his voracious appetite for conversation, and nobody else for miles, can you safely get rid of him?</p>
<p>This is a single, film-like scene. You direct the fisherman's actions, as well as directing the camera shots between the cinematic angles available.</p>
<p>The first of twelve small, experimental narrative games to be released monthly.</p>
<h4>FEATURES</h4>
<ul><li>Intense maritime story set in the English channel.</li><li>Surreal, beautiful seascape.</li><li>Choose your fate: will you get out of this alive?</li><li>Cinematic experience where you direct the camera.</li><li>Surging orchestral soundtrack by Richard Campbell.</li><li>An homage to one of cinema's greatest scenes.</li><li>Roughly 5-10 minutes in length.</li></ul>
<h4>OTHER GAMES IN THIS SERIES </h4>
<ul><li><a href="https://farfewgiants.itch.io/night-fisherman">The Night Fisherman</a></li><li><a href="https://farfewgiants.itch.io/the-outcast-lovers" style="font-size: inherit">The Outcast Lovers</a></li><li><a href="https://farfewgiants.itch.io/change-architect" style="font-size: inherit">The Change Architect</a></li></ul>
<p><span></span></p>
<h4>CONTROLS</h4>
<p>Keyboard & mouse only</p>
<p>Left & right arrows / A & D - change camera<br>Mouse left click - progress text, select dialogue option</p>
<h4>CONTENT WARNING</h4>
<p>Racism, off-screen violence</p>
<figure><img src="https://img.itch.zone/aW1nLzM1MjE4NTEucG5n/original/k12vZo.png" style="color: inherit; font-size: inherit" loading="lazy"><span></span></figure>
<p>Far Few Giants is supported by our <a href="https://www.patreon.com/farfewgiants" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Patreon</a> subscribers. If you'd like to follow our journey, we'll be posting one narrative game a month on Patreon, Itch & Steam.</p>
<p>de Fault: <a href="https://twitter.com/antony_de_fault" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@antony_de_fault</a> || Chard: <a href="https://twitter.com/animtree" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@animtree</a></p>
<p>Richard Campbell: <a href="https://twitter.com/ziggidybang" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@ziggidybang</a></p>
<p>Special thanks to our advance testers.<br></p>
<p>For youtubers, streamers & press - <a href="https://drive.google.com/drive/folders/1Q8fF89sa99ONCAZuYPbilZdMB7d7xXaW" rel="nofollow noopener" referrerpolicy="origin">Presskit<br></a></p>
<p><img src="https://img.itch.zone/aW1nLzM1Mjc1NDAucG5n/original/uBpYKi.png" loading="lazy"><br><br></p>
<p><iframe src="https://store.steampowered.com/widget/1340810/" width="646" height="190" frameborder="0"></iframe></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/yE3Dd1G2rpc" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjU1MTY4LzM1MzAxNTQuZ2lm/original/xmbxl8.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU1MTY4LzM1Mjk5NTEucG5n/original/plcYd0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU1MTY4LzM1Mjk5NTAucG5n/original/pfNPzF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU1MTY4LzM1NTU2ODcucG5n/original/oFx7ea.png]]
<p><em><strong>Used by over 5000 DMs, Writers, and Roleplayers!</strong><br></em></p>
<p><em>Customer Testimonials</em> </p>
<p><em>"This is SO useful! I think I'm going to roll up several NPCs to have on hand, as the book suggests. I especially like the Villain Plan tables! (5/5)"
</em></p>
<p><em>"I found the tables and explanations to be comprehensive and helpful. It's easy to make up an NPC, but creating a rounded character players will interact with over time can be difficult. This gave some great tools to make that easier. (5/5)"
</em><strong><em><br></em></strong></p>
<p><em>Companion App is in development! </em>Check out the latest devlog for more info and a sneak peek!<em><strong><br></strong></em></p>
<p><strong><em>It's happened to all of us:</em></strong> the players decide to speak to an NPC you didn't prepare for. The most you have is a name and maybe even a race -- but you're drawing blanks! Who is this barkeep? What do they really want in life? What are their struggles?<br>
</p>
<p>The NPC With a Thousand Faces is a technique I've built to generate NPCs from my over 17 years of running Tabletop Games with a menagerie of systems. It's Fast! It's Flexible! It's Focused! It's Table-Tested!</p>
<p>Rescue yourself from those awkward moments that threaten to pull players out of the experience -- or hand the book over to them to assist them rolling up a fascinating new character that goes beyond a sheet with a class and lists of equipment and powers.</p>
<p>Included in this 24 Page Supplement:</p>
<p>- The 1000 Faces Technique</p>
<p>- 48 fast, d100-based, tables that make rolling up a complex character a snap</p>
<p>- Blistering fast, <em>diceless</em> (because sometimes you don't want players to know you haven't rolled this NPC up), tables inspired by Bantam Books' Choose your own Adventure Series' Diceless Random Rolls to help you instantly add depth.</p>
<p>- 100 pre-rolled NPCs Traits customized for a variety of genres! (Fantasy, Sci-fi, Western, Eastern, and Horror)</p>
<p>Want to further support my works? Check out <a href="https://firgof.itch.io/gravekeeper-academy-1">Gravekeeper Academy</a> and <a href="https://www.patreon.com/gravekeeperacademy" rel="nofollow noopener" referrerpolicy="origin">its Patreon!</a><strong></strong><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjYxMjk2LzM1NTk4OTEucG5n/original/jk08Bq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYxMjk2LzM1NTk4OTIucG5n/original/T%2F1Jwz.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYxMjk2LzM1NTk4OTUucG5n/original/SXcrCa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYxMjk2LzM1NTk4OTMucG5n/original/MOvQo5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYxMjk2LzM1NTk4OTQucG5n/original/4ZYrzA.png]]
<h2><img src="https://img.itch.zone/aW1nLzQ1OTEzNjkuZ2lm/original/BshwUN.gif" loading="lazy"></h2>
<p>ON AN ISLAND IN THE ENGLISH CHANNE
</p>
<p><em>Driving home late one night you encounter a refugee in distress. They are looking for salvation. Do you hand them over to violent authorities? Or risk sheltering them yourself?</em><em><br></em></p>
<p>“Deals with some difficult subject matter in a thoughtful and captivating way” <a href="https://www.freegameplanet.com/the-outcast-lovers-download-game/" rel="nofollow noopener" referrerpolicy="origin"><br>Free Game Planet</a></p>
<p>“Far Few Giants are changing the game of interactive cinematography” <br><a href="https://www.rebind.io/how-farfewgiants-narrative-anthology-challenges-video-game-cinematography-4833/" rel="nofollow noopener" referrerpolicy="origin">Re:Bind</a></p>
<p>“A powerful execution of micro-fiction” <br><a href="https://www.escapistmagazine.com/v2/the-night-fisherman-is-a-tense-moonlit-confrontation-you-can-play-for-free/" rel="nofollow noopener" referrerpolicy="origin">The Escapist</a></p>
<p><img src="https://img.itch.zone/aW1nLzM4OTEyNTMucG5n/original/ecxFRC.png" style="max-width: 100%; font-size: 14px" loading="lazy"><br></p>
<h4>A SHORT GAME BY DE FAULT & CHARD</h4>
<p>Foreigners reported to the authorities have a nasty habit of being 'disappeared' by the vigilante English Protection Group.</p>
<p>You're outcasts, living a private life miles from others already. When faced with someone desperate and alone, someone you're in a position to help, is it your responsibility to?</p>
<p>This is a single, film-like scene. You control the actions of Ola, a retired political cartoonist, as well as directing the camera shots between the cinematic angles available.</p>
<p>The second of twelve small, experimental narrative games to be released monthly.</p>
<h4>FEATURES</h4>
<ul><li>Struggle with a timely political dilemma.</li><li>Choose your own: what does your decision say about you?</li><li>Direct the camera to shoot the story <em>your</em> way.</li><li>Lose yourself in surreal colours.</li><li>Enjoy a moving <span class="">score</span> with arrangements of 90’s classics by Ricky Z.</li><li>A tight, intense 10 minutes.</li></ul>
<h4>OTHER GAMES IN THIS SERIES</h4>
<ul><li><a href="https://farfewgiants.itch.io/night-fisherman">The Night Fisherman</a></li><li><a href="https://farfewgiants.itch.io/the-outcast-lovers">The Outcast Lovers</a></li><li><a href="https://farfewgiants.itch.io/change-architect">The Change Architect</a></li></ul>
<p><a href="https://farfewgiants.itch.io/change-architect"></a><a href="https://farfewgiants.itch.io/the-outcast-lovers"></a></p>
<p><span></span></p>
<h4>CONTROLS</h4>
<p>Keyboard & mouse only</p>
<p>Left & right arrows / A & D - change camera <br>Mouse left click - progress text, select dialogue option</p>
<h4>CONTENT WARNING</h4>
<p>Racism, off-screen violence</p>
<figure><img src="https://img.itch.zone/aW1nLzM4OTEyNTYucG5n/original/1YFjsc.png" loading="lazy"><span></span></figure>
<p>Far Few Giants is supported by our <a href="https://www.patreon.com/farfewgiants" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Patreon</a> subscribers. If you'd like to follow our journey, we'll be posting one narrative game a month on Patreon, Itch & Steam.</p>
<p>de Fault: <a href="https://twitter.com/antony_de_fault" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@antony_de_fault</a> || Chard: <a href="https://twitter.com/animtree" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@animtree</a></p>
<p>Richard Campbell: <a href="https://twitter.com/ziggidybang" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@ziggidybang</a></p>
<p>Special thanks to our advance testers.
</p>
<p>For youtubers, streamers & press - <span class=""></span><a href="https://drive.google.com/folderview?id=138GPFBPNUEn0qTiqb2NCwsLQR9-S7osd" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Presskit</a></p>
<figure><img src="https://img.itch.zone/aW1nLzM4OTEyNTkucG5n/original/r9jKWV.png" style="color: inherit; font-size: inherit" loading="lazy"><br></figure>
<figure><a href="https://discord.gg/4zwXzHT" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzM4OTUxMzMucG5n/original/SCC7ip.png" alt="Join the Far Few Giants Discord" title="Join the Far Few Giants Discord" loading="lazy"><br></a></figure>
<figure><iframe src="https://store.steampowered.com/widget/1355430/" style="color: inherit; font-size: inherit" width="646" height="190" frameborder="0"></iframe></figure>
<iframe width="720" height="450" src="https://www.youtube.com/embed/fvEg3QW4w0U" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzAzMTk0LzM5NzcxOTQucG5n/original/peL2Ca.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzMTk0LzM5NzcxOTgucG5n/original/5IRH07.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzMTk0LzM5NzcxOTcucG5n/original/kTcKez.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzMTk0LzM5NzcxOTYucG5n/original/vSjxD7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzMTk0LzM5NzcxOTMucG5n/original/aAQVFQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzMTk0LzM5NzcxOTUucG5n/original/4Pe9vB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzMTk0LzM5NzcxOTEucG5n/original/mecsef.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzMTk0LzM5NzcxOTIucG5n/original/4LPENk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzAzMTk0LzM5NzcxOTAucG5n/original/mAlsgC.png]]
<p>You hear a piano in the middle of the night, but you can't find the source. Is this a dream? Or...<br></p>
<p>Above all else, rem<strong></strong>ember...<br><strong>You know what you did.<br>You're awful.</strong></p>
<p>Features a soundtrack featuring only Classical Piano Pieces.</p>
<p>This is my first attempt at an RPG Maker game, so I hope you enjoy it! You should be able to beat it in 20-30 minutes.</p>
<p>_____________________________________________________________________________________________</p>
<p><strong>If you're wondering which file to download:</strong></p>
<p>One of these files includes the RTP (Run Time Package) for RPG Maker VX Ace.</p>
<p>If you don't own RPG Maker VX Aceor any games made with it, you'll want that one.</p>
<p>If you already have RPG Maker VX Ace installed, then go ahead and download without the RTP for a faster download!</p>
<p>More details on RPG Maker Run Time Packages can be found here:</p>
<p><a href="http://www.rpgmakerweb.com/download/additional/run-time-packages" target="_blank" rel="nofollow noopener" referrerpolicy="origin">http://www.rpgmakerweb.com/download/additional/run-time-packages</a><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/akDpprcuyg0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjM2MjI0LzExMjY3NTAuanBn/original/10InTL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjM2MjI0LzExMjY3NTEuanBn/original/TxTkb5.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjM2MjI0LzExMjY3NDkuanBn/original/7f6yEu.jpg]]
<p>Escape the hotel haunted by a malicious force.</p>
<p>Time is Money. Money is Time.</p>
<p>Will you be able to lift the curse, or will you be brought down by a ham-fisted metaphor?</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTA3ODU3LzYxMjc0NTQuanBn/original/B0MiPY.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA3ODU3LzYxMjc0NTMuanBn/original/jtFRBn.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNTA3ODU3LzYxMjc0NTIuanBn/original/VbbAPJ.jpg]]
<p><em>You have heard of the house for many years, but never sought it out, assuming the endeavor wouldn’t be worth your time. Or worse yet that you would find exactly what you always feared.</em></p>
<p><em>Yet, something drew you towards its estate—a power, a thread dangling from the unwinding hem of a shirt, longing to be pulled. Reason and history warned you not to make the journey, not to cave to those newly-formed, yet eons-old, desires to seek out the house. However, now you are here...</em>
</p>
<p>The Portal at Hill House is a solitaire journaling game of cosmic horror that only requires the zine, paper, a six-sided die, and a deck of standard playing cards to play. On kickstarter in October of 2020, The Portal at Hill House is a 20-page RPG zine of cosmic horror.
</p>
<p>Co-designed with Lindi Farris-Hill.</p>
<p></p>
<p><strong><a href="https://www.presspot.games/store/p/portal-at-hill-house" rel="nofollow noopener" referrerpolicy="origin">Go here to purchase a physical copy.</a></strong></p><p><strong><a href="https://presspotgames.itch.io/the-mirror-in-hill-house">Grab the two player version, The Mirror in Hill House, here.</a></strong></p><p><strong></strong></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzExMjcyLzYxODM5MDUucG5n/original/FVYcqA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzExMjcyLzYxODM5MDQucG5n/original/%2FTHp7p.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzExMjcyLzYxODM5MDMucG5n/original/Bd54dk.png]]
<p><em>A small life of devotion has its own rewards and hardships. Wherever there is community, these small lives can go on forever. <a href="https://usducktape.itch.io/the-quiet-life-jp">日本語版はこちらからどうぞ。</a></em></p>
<p><img src="https://img.itch.zone/aW1nLzQzMzk5MTEucG5n/original/GNLQfD.png" loading="lazy"></p>
<p><strong>The Quiet Life</strong> is a semi-cooperative TTRPG using cards and dice to enjoy the simple life of a gay nun on a pastoral convent. It's played with a GM who takes the role of the Pastor and 3-6 other players who take the roles of the Nuns. You also need some D6 dice and a deck of cards.</p>
<p>The stakes are low, but there are chores to do and unexpected challenges, all while trying to be as gay as you can and not get into trouble. The Pastor must do their best to help guide the Nuns without losing their job.<br></p>
<p><img src="https://img.itch.zone/aW1nLzQzMzk5MjEucG5n/original/AuLJkr.png" loading="lazy"><br></p>
<p><strong>The Quiet Life</strong> is a game for appreciating a monistic lifestyle of faith and is not affiliated with any one religion. Anybody can have the spirit of a Nun.</p>
<p>Illustrations by <a href="https://www.instagram.com/melspontaneus/" rel="nofollow noopener" referrerpolicy="origin">Mel</a> with nuns of every stripe and type. Full resolution versions of all the beautiful B/W artwork is also provided. Furry and monster nuns-a-plenty.</p>
<p>Writing, design, and play-testing was completed myself. For additional guidance on the rules, to request a copy due to financial difficulties, or just to say hi, please message me at <a href="https://twitter.com/Nrvnqsrestray" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@Nrvnqsrestray</a>.</p>
<p>I will be updating the game as much as I can with your feedback and as always, the most updated version will always available to you free of change, no matter the price charge.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzc1MzYxLzQ0MDc0NzAucG5n/original/yAVRsQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc1MzYxLzQ0MDc0NjkucG5n/original/XrTrDA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc1MzYxLzQ0MDc0NzUucG5n/original/1COuXD.png]]
<p><img src="https://img.itch.zone/aW1nLzU2MDk5OTkuanBn/original/jlVNbo.jpg" loading="lazy">Please if you play the game can you fill out this short survey in order to help with the research for my Honours Project: Investigating the effects of Instructive Level Design and Tropes in Survival Horror games and the association between design typologies<br><br>The survey can be found here: <a href="https://forms.gle/RJK1ZseJft9husML8" rel="nofollow noopener" referrerpolicy="origin">https://forms.gle/RJK1ZseJft9husML8</a><a href="https://forms.gle/3Qqcvh7r8a3N283CA" rel="nofollow noopener" referrerpolicy="origin"></a><br></p>
<p>The Quiet Lonely House is a prototype Survival Horror experience where out main character, Danny Warson, is investigating an old house in the outskirts of Dellaware. He is currently looking for his old friend Clive however what is in store for him at this old house is what he prepared for, as Danny Warson is no stranger to strange occurrences<br></p>
<p>Latest Version: 1.06: 19/04/21 (Will be live at 6PM)<br><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/h1VMLMBtZXs" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTg2NDk5LzU2MDk5MjguanBn/original/te2nDu.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg2NDk5LzU2MDk5MzYuanBn/original/HCwsr2.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg2NDk5LzU2MDk5MzcuanBn/original/EOaRez.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg2NDk5LzU2MDk5MzkuanBn/original/1VI87F.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg2NDk5LzU2MTAwMjIuanBn/original/tx%2Bppd.jpg]]
<p>The Quiet Sleep is a collection of stories set in a simulation/tower defense game in which you build out your mind in order to achieve your personal goals and maintain control over your emotions.<br><br>Develop your traits to gain new abilities! Decide whether to turn your ambition to the highs of the feeling of achievement or the lows of self-loathing. Choose whether or not to renounce your homeland. Determine how alone you really are.<br><br>Convert different qualities! Take your love of music and your resolve to make something great and use them to think through problems with your songs. Convert your industry and energy into work that will get you paid and then take that money and add some flirtation to go on a date! Use your will to get the strength to feed your callousness enough to help you through a tough time.<br><br>In addition, you will:</p>
<ul><li>Make great music.</li><li>Spy on a local teacher.</li><li>Unpack clothes.</li><li>Woo someone delightful.</li><li>Struggle to maintain a relationship with someone else.</li><li>Be inspired by your muse.</li><li>Go on walks to help you remain calm.</li><li>Realize that you will never be understood.<br>and much, much more.</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/ucnfiqofNng" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzQyNzIvODYxMjE4LnBuZw==/original/DJPUZs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQyNzIvODYxMjIyLnBuZw==/original/NVjgqJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQyNzIvODYxMjIwLnBuZw==/original/XxU2oa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQyNzIvODYxMjIxLnBuZw==/original/lL%2FY7e.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQyNzIvODYxMjE5LnBuZw==/original/1Yw8Fv.png]]
<p><em>Iolanthe's frantic footsteps echoed through the deserted courtyard as the last reverberations of the morning bells faded into the crisp summer air. Her eyes stung where tears of frustration began to well up, a deluge of angst held back by a crumbling levee of stubborn determination. The banks finally broke when a cruel gust rose and tore the pages from her fingers, whisking away with them her hopes of a getting her assignment in on time. She collapsed to her knees by the edge of the fountain, shoulders heaving with each bitter sob.</em></p>
<p>The Rain Still Falls in my Heart is a one page table-top roleplaying game about messy high school relationships and purple prose; it's a game about girls and lesbians of all genders. Nothing is straight forward at this school; everyone has a secret and a past, and nobody knows how to talk about their true feelings.</p>
<p>For fans of Dear Brother and other overwrought shoujo manga from the 70s.</p>
<p><br></p>
<p>Illustration by Axe Marnie! @axe_marnie on Twitter.</p>
[img width=500 [https://img.itch.zone/aW1nLzQ2Nzk1NjAuanBn/original/5iRsL5.jpg]]
<p>The Red Door is a short horror game where you play as an abduction victim placed in the house of a murderer. Find your way around the house and escape before the murderer catches you. The murderer loves to play with his victims so he will give you three chances to escape. Find the keys to unlock the doors, Read the notes left from his past victims and escape as fast as you can.</p>
<p>Controls: </p>
<ul><li>Move - WASD</li><li>Interact/Hide - E</li><li>Unhide - Q</li><li>Drop Item - G</li><li>Crouch/Stand - C</li><li>Toggle Flashlight - F</li></ul>
<ul><li>Search for the keys and notes from past victims. </li><li>Use portals to move around the house</li><li>Solve puzzles to unlock doors</li><li>Find the red door before the murderer finds you</li></ul>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/efmZKyBJFJs" frameborder="0" allowfullscreen=""></iframe></div>
<div class=""><iframe style="width: 500px; height: 281px" src="//www.youtube.com/embed/fNLJiKMMDh4" frameborder="0" allowfullscreen=""></iframe></div>
<p>Can you escape? Will you find the red door? or will you use up all your chances and die trying.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/efmZKyBJFJs" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTY5MjA2LzMwMjc2MjIucG5n/original/4sAF98.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY5MjA2LzMwNTM4MjEucG5n/original/qc9583.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY5MjA2LzMwMjc2MjAucG5n/original/RVLktV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY5MjA2LzMwMjc2MTkucG5n/original/hbW2%2Bd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTY5MjA2LzMwMjc2MjEucG5n/original/0RjUaj.png]]
<p>The Rise and Fall of Cataclysmo is a short comic about climate change and frustration with the (in)action of the world around us. This story came to me shortly after California and Australia caught on fire in 2019. It was built out of living in a world where anything being done currently seems reactionary instead of preventative or proactive. It is meant to inspire people to not give up in the face of a situation that seems insurmountable.</p>
<p>The story was written by <a href="http://twitter.com/codecloak" target="_blank" rel="nofollow noopener" referrerpolicy="origin">David Brett</a> (me) and brought to life by the extremely talented <a href="https://www.catparrts.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Cat Parra</a>. </p>
<p><br></p>
<p>I would love to hear what you think. Please leave a comment below or use either hashtag #cataclysmo or #cataclysmocomic on Twitter. Feel free to tag me as well.</p>
[img width=500 [https://img.itch.zone/aW1nLzMxMjkzODgucG5n/original/I3dVir.png]]
<p><em>The Scarlet Village</em> is a folk horror roleplaying adventure that begins in Prague. In this adventure, your players have been hired by a wealthy young socialite to find their missing brother. They conduct investigations within the city, and discover that their person of interest has travelled to the remote village of Zjerdyv (J-air-divv) in Lithuania.<br></p>
<p>Upon arriving at the village, the investigators find things amiss. The villagers behave strangely, certain persons appear to be something other than human, and the person they have been tracking seems to have been living here as lord of the land. As time passes, these strange occurrences escalate into bloody ritual, madness, and death.</p>
<p>This is a 32-page adventure module for Call of Cthulhu 7th edition. It was written and illustrated by Ben Safford and Sophie Fisher.</p><p>The Call of Cthulhu 7th Edition basic rules are available for free here: <a href="https://www.chaosium.com/cthulhu-quickstart/" rel="nofollow noopener" referrerpolicy="origin">https://www.chaosium.com/cthulhu-quickstart/</a></p>
<p>More advanced / complete rulebooks are available from Chaosium, but the quickstart rules are sufficient to run this adventure module from beginning to end.</p>
<p><img loading="lazy"><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODc0ODU1LzQ5MjEzNTUucG5n/original/JK9Hat.png]]
<p>A game for 1 Facilitator and 3-5 players.</p>
<p>In this game, a group of characters make their way home across the sea. Their destination is distant, beyond the horizon, but their hopes and memories buoy them up and carry them forward.<br></p>
<p>This is a diceless role-playing game expected to take from 2-4 hours to complete.</p>
<p><em>This game was created as a part of the Up All Night Jam with Off the Table and SuperQueero.</em><br></p>
<p>Equipment needed:</p>
<p>Paper slips or index cards if playing in person</p>
<p>A list randomizer such as <a href="https://www.random.org/lists/" rel="nofollow noopener" referrerpolicy="origin">https://www.random.org/lists/</a> if playing online.</p>
<p><br></p>
<p><span class="">Play with Safety Tools to ensure a comfortable gaming experience!</span><span class=""> </span></p>
<p><a href="https://bit.ly/ttrpgsafetytoolkit" target="_blank" class="" rel="nofollow noopener" referrerpolicy="origin">https://bit.ly/ttrpgsafetytoolkit</a><span class=""> developed by Kienna Shaw and Lauren Bryant-Monk</span></p>
<p><br><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzY4ODAxLzQzMDE2OTgucG5n/original/%2Beoqyf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY4ODAxLzQzMDE2OTcucG5n/original/HLzJbT.png]]
<p>In the far future, humanity has overcome many of its structural and prejudicial shackles. We have spread through the stars to explore and learn, unhindered by many of the mistakes that had plagued our civilizations and institutions for so long.<br><br>Alongside the mighty Astral Marine Corps, Humanity's future is safeguarded by the Colonial Special Operations Executive. The CSOE protects Humankind from disasters of every sort through diplomatic, logistical, and sometimes subversive means. For the most important and trying tasks (such as flash point crises and the assessment of little-understood dangers) the CSOE deploys an Operative, an eminently capable individual trained to handle almost any eventuality. Though few in number, they are the most well-known and lauded portion of the venerable organization.<br><br>The greatest of the CSOE's Operatives is Dame Bryluen Branok. Her face is known from the Qixing Commonwealth to the Ly Aulth Stellar Confederacy, and her name has long been a byword for courage and heroism. She is simultaneously an iconic inspiration to Humanity, and one of the most feared executors of its will.<br><br>When a poorly understood threat strikes a remote research outpost, Bryluen is the prime choice to investigate. Despite decades of experience even she has seen nothing like the foe she encounters, and the aftermath of the attack opens up a bevy of questions. Soon the CSOE charges Bryluen with a task for which she was born: to gather a unique strike team and confront a danger that threatens the very existence of civilization.<br></p>
<p>The Shadow Among the Stars is a full-length novel, and the first in a trilogy. It can be purchased in Kindle and Paperback form here: <a href="https://www.amazon.com/dp/1973442728" rel="nofollow noopener" referrerpolicy="origin">https://www.amazon.com/dp/1973442728</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjY4MjcyLzM2Mjk3MDAucG5n/original/4TGxAp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY4MjcyLzM2Mjk3MDEucG5n/original/jqEZtx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY4MjcyLzM2Mjk3MDMucG5n/original/iPflIm.png]]
<h2>YOU MUST HEED THE SIGNS</h2>
<p><strong>THE SIGN BEARER</strong> is a set of two companion scrolls to be used with <a href="https://maguax.itch.io/backpack-e-dream" target="_blank">Backpack & Dream</a>, an exploration game engine by <a href="https://maguax.itch.io/" target="_blank">M.A. Guax</a>. They're part of the <a href="https://itch.io/jam/rpg-latam-jam" target="_blank">#RPGLatamJam</a>.<br></p>
<p class="text-center"><strong>º º º</strong><br></p>
<p><strong>THE HEAVENS SCROLL</strong> depicts the <em><strong>12 Signs</strong></em> that reside in the Heavens, each ruling over the skies for a month of the year. It teaches us of the <strong><em>Harbingers</em></strong> of their will upon the earth, the <strong><em>Traditions</em></strong> we follow to appease them, and the <strong><em>Blessings</em></strong> bestowed upon the souls who are born favored by them.</p>
<p class="text-center"><strong>º º º</strong><br></p>
<p><strong>THE HERO SCROLL</strong> records the information we have on a blessed soul, favored in birth by one of the 12 Signs of the Heavens. It keeps track of their <strong><em>Name</em></strong>, <strong><em>Looks</em></strong> and <strong><em>Hunger</em></strong>, along with their <strong><em>Body</em></strong>, <strong><em>Mind</em></strong> and <strong><em>Breath</em></strong>. It lists all the<em> <strong>Items</strong></em> they carry and the <strong><em>Rituals</em></strong> they recall, as well as their <strong><em>Bonds</em></strong> with factions and people. It also holds the <strong><em>Sign</em></strong> they were born under and the <strong><em>Blessing</em></strong> it grants them.</p>
<p class="text-center"><strong>º º º</strong><br></p>
<p><em>These scrolls are licensed under <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">CC BY-SA 4.0</a>. The artworks on display are alterations on public domain paintings by Joseph Wright of Derby, Ludwig Deutsch and Charles Livingston Bull. The marble texture in the background was made by <a href="https://br.freepik.com/rawpixel.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin">rawpixel</a>.</em><br></p>
<p></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTg0MjA3LzU2MDQxNDgucG5n/original/zlT%2FFb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg0MjA3LzU2MTAyNjUucG5n/original/FZNK62.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg0MjA3LzU2MDQxNDkucG5n/original/%2Fs1qh%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg0MjA3LzU2MDQxNTAucG5n/original/rhwiJy.png]]
<p class="text-justify">**Now updated with 2 different endings**</p>
<p></p>
<p>The Silence is a short walking simulation game based on a relationship I was in when I was young. In that relationship, I was the victim of abuse.
</p>
<p>Rather than make a game about the relationship, I chose to focus on looking back and finding a way to move on.</p>
<p>In the game, the character must face their pain and accept they were a victim of abuse. If they don’t, they will forever remain in turmoil.</p>
<p>When this happened, I was young and didn’t understand what was happening to me. For years I refused to believe I was a victim, and so I ignored my pain as if nothing had happened. The gradual build-up of pain slowly began to destroy me and made any close relationships very difficult for me. </p>
<p>While this happened a lifetime ago, it took years for me to finally face what had happened. In a way, making this game and sharing my story is a form of closure. And a big part of that closure for me is forgiveness.</p>
<p>“Sometimes, the only way to heal our wounds is to make peace with the demons who created them.” - Dr. Ishiro Serizawa</p>
<p>Controls:</p>
<p>ARROW KEYS for direction</p>
<p>SPACE BAR to select/interact</p>
<p>ESC KEY for menu</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/EGeumhPmfk0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDQ1NzQxLzIzNDI2NjQucG5n/original/tAhoPT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQ1NzQxLzIzNDI2NjUucG5n/original/%2FvQyQ5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQ1NzQxLzIzNDI2NjYucG5n/original/w9ljte.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQ1NzQxLzIzNDI2NjcucG5n/original/DBvCw5.png]]
<h1>From the deepest miasma to the shimmering veil, everything is in its place. The Peakborn rule, the Sunken toil, and the Unmoored trade. But Clear Skies Technology could rewrite the atmosphere, and with it the culture of planet Zé. </h1>
<h1>It all depends on how you use it.</h1>
<p><img src="https://media.giphy.com/media/VIPvPjUIYiiWRohW6j/giphy.gif" loading="lazy"></p>
<h3><a href="https://the-sky-left-us-a-visual-novel.backerkit.com/hosted_preorders" rel="nofollow noopener" referrerpolicy="origin">Pre-Order</a></h3><h3><a href="https://www.kickstarter.com/projects/1224641808/the-sky-left-us-a-visual-novel/" rel="nofollow noopener" referrerpolicy="origin">Kickstarter Funded</a> 2/18/21. </h3>
<p><em>The Sky Left Us</em> is a sci-fi visual novel about climate crisis, classism, and how relationships shape our politics. Play as Spire Risan, an off-worlder scientist who becomes entangled in the drama of a mountain they came here to save. Fall in with the denizens of the three castes, and find that things are more complicated than they seem: be it love, family, or the systems that shape us.</p>
<p>#PoliticsAsPersonal #EthicsOfTechnology #ClimateChange #Classism #EveryoneIsGay #NonbinaryProtag #FogPunk #Hotties #Intrigue #Romance #FoundFamily #MessyCharacters #DifficultChoices #QueerTransContent</p>
<p><strong>This is a demo of the game that features the opening sequence. </strong>Follow us here, or on <a href="https://twitter.com/ratwormgames" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Twitter</a> and <a href="https://www.instagram.com/ratwormgames/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Instagram</a> @ RatwormGames to see how the full game is developing!</p>
<p><a href="http://www.theskyleftus.com" rel="nofollow noopener" referrerpolicy="origin">www.theskyleftus.com</a></p>
<figure><img src="https://img.itch.zone/aW1nLzQxNjMzNjAuanBn/original/4IRIhL.jpg" loading="lazy"></figure>
<h3>The Story</h3>
<ul><li>6 routes and 1 true route exploring Spire's relationships with the denizens of Zé. </li><li>Intrigue and class politics grounded in the relationship routes.</li><li>A rich sci-fi planet characterized by the climate and its imminent changes.</li><li>Diverse characters and relationship types.</li><li>Difficult choices and deeply flawed characters.</li></ul>
<p><img src="https://img.itch.zone/aW1nLzQxNzQxMjUucG5n/original/9PFUC9.png" loading="lazy"></p>
<h3>The Gameplay</h3>
<ul><li>No mechanical bells and whistles. Just quality writing and critical choices.</li><li>A killer soundtrack.</li><li>Multiple endings for each route.<img src="https://img.itch.zone/aW1nLzQxNzQxMjcucG5n/original/Cm%2FKmS.png" style="color: inherit; font-size: inherit" loading="lazy"><span></span></li></ul>
<h3>The Route Characters</h3>
<ul><li>THE SPYMASTER — A two-faced Peakborn noble trapped in a web of his own design.</li><li>THE PAINTER — An ambitious Unmoored artist, kept like a bauble by her Peakborn patrons.</li><li>THE WINDY KID — A quiet Unmoored child who has fallen in with pirates.</li><li>THE REVOLUTIONARY — A fiery Sunken leader who wants the peaks to burn.</li><li>THE DIVER — A Sunken diver who explores the planet's depths.</li><li>THE PIRATES — Two Unmoored pirates who search for freedom through their crimes.</li><li>THE IDOL (True Route) — A Sunken Idol with a strange connection to the poisonous miasma. <br>
</li></ul><p><br></p>
<p><img src="https://img.itch.zone/aW1nLzQzNzcxMzkuanBn/original/tViLYR.jpg" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzQzNzcxNDEuanBn/original/M3AUxe.jpg" loading="lazy"><br></p>
<p><img src="https://img.itch.zone/aW1nLzQzNzcxNDYuanBn/original/iYdc0q.jpg" loading="lazy"><br></p>
<p><img src="https://img.itch.zone/aW1nLzQ1ODQ1NjUuanBn/original/c4iN5t.jpg" loading="lazy"><br></p>
<p><img src="https://img.itch.zone/aW1nLzQ2MjI3ODMuanBn/original/RkBEPJ.jpg" loading="lazy"><br></p>
<p>Stretch Goal Routes<br></p>
<figure><img src="https://img.itch.zone/aW1nLzQ1ODQ1NzMuanBn/original/4arjgv.jpg" loading="lazy"></figure>
<p><br></p>
<p><img src="https://img.itch.zone/aW1nLzQ4ODU2NjMuanBn/original/A3Yp8L.jpg" loading="lazy"><br></p>
<p><img src="https://img.itch.zone/aW1nLzQxNzQxNzUucG5n/original/08E69A.png" loading="lazy"></p>
<p>Diversity in gaming is important to us, which is reflected in our team, the characters, and the subjects of the game. You can expect a range of relationship types and experiences of gender and sexuality. At the same time, this game has a small cast, so we are not able (or trying to) represent everyone.</p>
<p><em>Ratworm Games</em> are the creators of the Event Horizon Universe of larps, a setting in which <em>The Sky Left Us</em> takes place. <em>Ratworm Games</em> produces queer-trans speculative fiction games. </p>
<p></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzQ2NDUxLzQxNzQyMDQucG5n/original/u113wN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ2NDUxLzQxNzQyMDYucG5n/original/LFsjOr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ2NDUxLzQxNzQyMDcucG5n/original/wPVPuy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ2NDUxLzQxNzQyMDUucG5n/original/IWLSJR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ2NDUxLzQxNzQyMTgucG5n/original/%2FPPqSI.png]]
<p><em>Somewhere in the vast multiverse, there is a post office box. It looks like all post office boxes in all parts of every world, and sits on the corner of any--or possibly every--street. Inside are many levels, inhabited by small spirits whose sole tasks are to ensure that the tiny pieces of every metaphorical puzzle arrive where they are needed before someone needs them. You are one of these spirits. Perhaps someday, you will rise to become a deity.</em></p>
<p>In The Spirit of Small Gifts, as you talk to your friends about the TTRPG games they're playing, you get to be the answer to the question "Is it reasonable that I'd have _____ in my inventory?" A Spirit of Small Gifts drops small, seemingly valueless trinkets in the mail so that the recipient has them in their pockets when they need them.</p>
<p>----</p>
<p>Up front, the goals of this game are these: To get people talking to their friends about their RPGs, foster some creative problem solving, and give you an excuse to put some letters in the mail. The goal of this game is explicitly <strong><em>not </em></strong>to override, pressure, or force anyone running a game playing along with your fiction. </p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0MTY3LzUwMzU5NjkucG5n/original/qyS23N.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0MTY3LzUwMzU5NzAucG5n/original/pFFXRl.png]]
<p>The Spooky Manor is a printable tile set <strong>compatible </strong>with any miniature game, RPG or Dungeon-Crawler.</p>
<p>The set contains <strong>50 different high quality tiles</strong> (300dpi) that depict a dungeon system set in a ... Spooky Manor. The re-usability and limitless and you can design a new and unique mansion interior complexes for every game.
</p>
<p>These full color map tiles feature a 1-inch grid for maximum compatibility.
</p>
<p>Set up is easy, all you have to do is <strong>print </strong>the files, <strong>cut </strong>them out and <strong>build </strong>your own Spooky Manor.
</p>
<p><strong>More rooms coming soon</strong> … So please add a comment and let me hear your thoughts and ideas to decide which tile is going to be next.<span></span>
</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MzU3NS82MDI3NjkzLmpwZw==/original/O2TndG.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MzU3NS82MTYwNDI1LmpwZw==/original/I9XUdu.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MzU3NS82MDI3NjY0LmpwZw==/original/ixcshb.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MzU3NS82MDI3ODEzLmpwZw==/original/8bRiGV.jpg]]
<p><strong>The Steadfast and the Rebellious </strong>is a tabletop role-playing game and a storytelling game. It is a hack of <a href="https://temporalhiccup.itch.io/reincarnation" target="_blank">REINCARNATION REDUX: Our Requiem</a> by Rae Nedjadi, written for Jammi Jam Jam.</p>
<p>You are all inhabitants of the city, and you have been living in false peace under the rule of the demon king. The last wall, which offered your city limited protection against the demon king, has fallen. Citizens are left with two choices; do everything the tyrant demands, or <strong>resist</strong>. Will we rise victorious against the demon king, or will our resistance be futile? We play to find out.</p>
<p><em>This game is intended to create a quick but rich prologue for characters who rise up against the demon king in a fantasy setting. It is possible to use this game to create a setting and characters for your preferred game about enclosed spaces and giant lizards.</em></p>
<p>To play this game, we will need 1-2 hours, 2-4 players, a deck of playing cards, a conductive space, index cards, writing materials and a copy of this game (digital or printed). One of the player is the <strong>Facilitator</strong>, who has read this document beforehand.</p>
<p>Jess (<a href="https://twitter.com/go_jg" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@go_jg</a>), Kevin (<a href="https://twitter.com/Knit_Nack" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@Knit_Nack</a>), Corvyn (<a href="https://twitter.com/CorvynAppleby" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@CorvynAppleby</a>) & Jordon (<a href="https://twitter.com/MadeOfCartoons" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@MadeOfCartoons</a>) did an actual play of the game:</p>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/-6HP0wf09SQ" frameborder="0" allowfullscreen=""></iframe></div>
<iframe width="720" height="450" src="https://www.youtube.com/embed/-6HP0wf09SQ" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTExNTM4LzI2NTYzMTcucG5n/original/Sezoiq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTExNTM4LzI2NTYzMTkucG5n/original/eTuPN2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTExNTM4LzI2NTYzMjAucG5n/original/qq3f6y.png]]
<p><em>The Stellar Beacon </em>zine has new adventures for the Indie Groundbreaker nominated sci-fi RPG Return to the Stars, and it explores geek pop culture with non-fiction essays. This issue includes:<br></p>
<p><em>One Atom of Justice, One Molecule of Mercy, and the Empire of Unsheathed Knives </em>an original essay by novelist and 2019 Hugo nominee Alexandra Rowland, exploring a new science fiction sub-genre: Hopepunk.</p>
<p><em>Aphrodite on Deck</em><br>A solarpunk-themed scenario for Return to the Stars by designer Beau Jágr Sheldon.</p>
<p><em>Fallen Juggernaut</em><br>Emmett O’Brian brings us a “hard sci-fi” adventure where players explore a mysterious megastructure.</p>
<p><em>Beginning Gamemaster Pep Talk</em><br>Comics writer and illustrator Amy King provides encouragement for new game masters from a new game master.</p>
<p><em>The Stars, My Sandbox</em><br>Non-linear story prompts and encounters for Return to the Stars.</p>
<p>Get your copy today!</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzY0MTEwLzE4MjE0NjcucG5n/original/AK25hP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY0MTEwLzE4MjE0NTMucG5n/original/h7KAYU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY0MTEwLzE4MjE0NTQucG5n/original/7%2BRBBX.png]]
<p>One by one, everyone left the once bustling village for the city. Everyone, except Talma. Now approaching the end of her days, she maintains a simple, solitary way of life, surviving, subsisting, tending to her homestead and her goats.</p>
<p>Develop your own personal routine as you care for your farm and your animals. Tend to your goats, make cheese with their milk, collect eggs and cook meals, grow vegetables and barter with the travelling merchant who brings increasingly disturbing letters from your family in the city.<br><br>A follow up to the critically acclaimed <a href="https://memoryofgod.itch.io/where-the-goats-are" target="_blank">Where the Goats Are</a>, The Stillness of the Wind is a quiet rumination on life and loss.</p>
<p>Also available: the <a href="https://fellowtraveller.itch.io/the-stillness-of-the-wind-ost" target="_blank">Original Soundtrack for The Stillness of the Wind</a><em></em>.<br><strong>This OST and full game can also be purchased in <a href="https://itch.io/s/16530/the-stillness-of-the-wind-deluxe-edition">this bundle</a>, for 25% off.</strong><br></p>
<h2>FEATURES</h2>
<p><strong><img src="https://img.itch.zone/aW1nLzE0MDkwOTQuZ2lm/original/1KasjW.gif" loading="lazy"><br></strong><strong>Tend to your homestead<br></strong>Breed and look after your goats, make cheese from their milk, grow vegetables, water your plants, collect eggs, scare off the birds. It’s a hard but simple life of peaceful subsistence.</p>
<p><br></p>
<p></p>
<p><strong><img src="https://img.itch.zone/aW1nLzE0MDkwOTcuZ2lm/original/KAo038.gif" style="max-width: 100%" loading="lazy"><br>Get news from your family<br></strong>The travelling merchant brings letters from your family and friends and with them a view into a city that feels both very far away and as if it threatens to wash away the world you know.</p>
<p></p>
<p><strong><img src="https://img.itch.zone/aW1nLzE0MDkwOTUuZ2lm/original/pN8JRL.gif" loading="lazy"><br>Choose how you spend your days<br></strong>It's up to you how you spend Talma’s time each day and what your routine will be. Focus on your chores, wander in the desert, reminisce about the past or draw patterns in the dirt.<br><br></p>
<p><strong><img src="https://img.itch.zone/aW1nLzE0MDkwOTYuZ2lm/original/66j0QG.gif" loading="lazy"><br>Barter for supplies<br></strong>Trade cheese and other items in return for hay for your goats, seeds to plant, fables, exotic items and shotgun shells, whilst exchanging conversation with the travelling merchant, your only human interaction.<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/vFDJP9WmwVE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjg3ODQzLzE0MDI1NzgucG5n/original/f%2Fgg7c.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjg3ODQzLzE0MDI1ODEucG5n/original/k4g8by.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjg3ODQzLzE0MDI1ODAucG5n/original/IkTIeE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjg3ODQzLzE0MDI1ODIucG5n/original/vaQX6y.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjg3ODQzLzE0MDI1ODQucG5n/original/ZFEXX4.png]]
<p>A five minute long meditative game about moving rocks while the Sun sets.</p>
<p><br></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p>WASD to <strong>move</strong><br></p>
<p>Space to <strong>grab </strong></p>
[img width=500 [https://img.itch.zone/aW1nLzIyMDA1OTIucG5n/original/1AxVIU.png]]
<p>A fast-paced, physics-based, Attack on Titan inspired game. Swing around from the grapple hooks on your swords, and take down huge enemies, before they destroy the gate!</p>
<p>This game is very much liable to make you nauseous, so I recommend playing seated, even if you're used to VR. If you start to feel sick, please stop playing, and maybe come back once you're feeling better!</p>
<p>This game is playable on any SteamVR compatible headset. Tested on Index/Knuckles.<br></p>
<p><a href="https://github.com/iamrequest/the-tall-wall-falls" rel="nofollow noopener" referrerpolicy="origin">Github</a></p>
<p><strong>Controls<br></strong></p>
<ul><li>Trigger: Shoot grappling hook, interact with settings UI</li><li>Left Control Stick: Smooth Locomotion</li><li>Right Control Stick: Snap Turn</li><li>Grip: Retract rope. This will pull you towards the grapple, if it's attached to something.</li><li>Left Controller A (Lower face button): Open settings menu</li><li>Right Controller A (Lower face button): Jump</li><li>Right Controller B (Upper face button): Toggle slow motion</li></ul>
<p><strong>Credits<br></strong></p>
<table>
<tbody><tr>
<td><strong>Resource</strong></td>
<td><strong>Author</strong></td>
<td><strong>License</strong></td>
<td><strong>Modifications</strong></td>
</tr>
<tr>
<td><a href="https://github.com/FreyaHolmer/Mathfs" rel="nofollow noopener" referrerpolicy="origin">Freya Holmer's Math Library (Mathfs)</a></td>
<td>
<a href="https://twitter.com/FreyaHolmer" rel="nofollow noopener" referrerpolicy="origin">Freya Holmer</a><br></td>
<td><a href="https://github.com/FreyaHolmer/Mathfs/blob/master/LICENSE.txt" rel="nofollow noopener" referrerpolicy="origin">MIT License</a></td>
<td>
<br></td>
</tr><tr>
<td><a href="https://assetstore.unity.com/packages/tools/particles-effects/shapes-173167" rel="nofollow noopener" referrerpolicy="origin">Shapes</a></td>
<td><a href="https://twitter.com/FreyaHolmer" rel="nofollow noopener" referrerpolicy="origin">Freya Holmer</a></td>
<td>Paid asset store asset<br></td>
<td>Not included in git repo<br></td>
</tr>
<tr>
<td><a href="https://gist.github.com/mstevenson/4958837" rel="nofollow noopener" referrerpolicy="origin">mstevenson's Configurable Joint Extension methods</a></td>
<td><a href="https://gist.github.com/mstevenson" rel="nofollow noopener" referrerpolicy="origin">Michael Stevenson</a><br></td>
<td>
<br></td>
<td>
<br></td>
</tr>
<tr>
<td><a href="https://www.mixamo.com/#/?query=manne&type=Character" rel="nofollow noopener" referrerpolicy="origin">Mixamo Mannequin Model</a></td>
<td>
<br></td>
<td>
<br></td>
<td>
<br></td>
</tr>
<tr>
<td>Kenny's Low Poly Weapon Pack (No longer available for download)</td>
<td><a href="https://www.kenney.nl/assets" rel="nofollow noopener" referrerpolicy="origin">Kenny</a></td>
<td><a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow noopener" referrerpolicy="origin">CC0 1.0</a></td>
<td>Tweaked longsword model</td>
</tr>
<tr>
<td><a href="https://www.kenney.nl/assets/city-kit-suburban" rel="nofollow noopener" referrerpolicy="origin">Kenny’s City Kit (Suburban)</a></td>
<td><a href="https://www.kenney.nl/assets" rel="nofollow noopener" referrerpolicy="origin">Kenny</a></td>
<td><a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow noopener" referrerpolicy="origin">CC0 1.0</a></td>
<td>
<br></td>
</tr>
<tr>
<td><a href="https://www.kenney.nl/assets/fantasy-town-kit" rel="nofollow noopener" referrerpolicy="origin">Kenny’s Fantasy Town Kit</a></td>
<td><a href="https://www.kenney.nl/assets" rel="nofollow noopener" referrerpolicy="origin">Kenny</a></td>
<td><a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow noopener" referrerpolicy="origin">CC0 1.0</a></td>
<td>
<br></td>
</tr>
<tr>
<td><a href="https://www.kenney.nl/assets/game-icons" rel="nofollow noopener" referrerpolicy="origin">Kenny’s Game Icons 1</a></td>
<td><a href="https://www.kenney.nl/assets" rel="nofollow noopener" referrerpolicy="origin">Kenny</a></td>
<td><a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow noopener" referrerpolicy="origin">CC0 1.0</a></td>
<td>
<br></td>
</tr>
<tr>
<td><a href="https://www.kenney.nl/assets/game-icons-expansion" rel="nofollow noopener" referrerpolicy="origin">Kenny’s Game Icons 2</a></td>
<td><a href="https://www.kenney.nl/assets" rel="nofollow noopener" referrerpolicy="origin">Kenny</a></td>
<td><a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow noopener" referrerpolicy="origin">CC0 1.0</a></td>
<td>Tweaked an icon to make an HMD icon</td>
</tr>
<tr>
<td><a href="https://www.kenney.nl/assets/ui-pack-space-expansion" rel="nofollow noopener" referrerpolicy="origin">Kenny’s UI Pack; Space Expansion</a></td>
<td><a href="https://www.kenney.nl/assets" rel="nofollow noopener" referrerpolicy="origin">Kenny</a></td>
<td><a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow noopener" referrerpolicy="origin">CC0 1.0</a></td>
<td>
<br></td>
</tr>
<tr>
<td><a href="https://www.kenney.nl/assets/voiceover-pack-fighter" rel="nofollow noopener" referrerpolicy="origin">Kenny’s Voiceover Pack: Fighter</a></td>
<td><a href="https://www.kenney.nl/assets" rel="nofollow noopener" referrerpolicy="origin">Kenny</a></td>
<td><a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow noopener" referrerpolicy="origin">CC0 1.0</a></td>
<td>
<br></td>
</tr>
<tr>
<td><a href="https://www.kenney.nl/assets/impact-sounds" rel="nofollow noopener" referrerpolicy="origin">Kenny’s Impact Sounds</a></td>
<td><a href="https://www.kenney.nl/assets" rel="nofollow noopener" referrerpolicy="origin">Kenny</a></td>
<td><a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow noopener" referrerpolicy="origin">CC0 1.0</a></td>
<td>
<br></td>
</tr>
<tr>
<td><a href="https://www.kenney.nl/assets/interface-sounds" rel="nofollow noopener" referrerpolicy="origin">Kenny’s Interface Sounds</a></td>
<td><a href="https://www.kenney.nl/assets" rel="nofollow noopener" referrerpolicy="origin">Kenny</a></td>
<td><a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow noopener" referrerpolicy="origin">CC0 1.0</a></td>
<td>
<br></td>
</tr>
<tr>
<td><a href="https://opengameart.org/content/rpg-sound-pack" rel="nofollow noopener" referrerpolicy="origin">RPG Sound Pack</a></td>
<td><a href="https://opengameart.org/users/artisticdude" rel="nofollow noopener" referrerpolicy="origin">artisticdude</a></td>
<td><a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow noopener" referrerpolicy="origin">CC0 1.0</a></td>
<td>
<br></td>
</tr>
<tr>
<td><a href="https://opengameart.org/content/grass-001" rel="nofollow noopener" referrerpolicy="origin">Grass 001</a></td>
<td><a href="https://opengameart.org/users/lamoot" rel="nofollow noopener" referrerpolicy="origin">Lamoot</a></td>
<td><a href="https://creativecommons.org/licenses/by/3.0/" rel="nofollow noopener" referrerpolicy="origin">CC-BY 3.0</a></td>
<td>
<br></td>
</tr>
<tr>
<td><a href="https://opengameart.org/content/dirt-001" rel="nofollow noopener" referrerpolicy="origin">Dirt 001</a></td>
<td><a href="https://opengameart.org/users/lamoot" rel="nofollow noopener" referrerpolicy="origin">Lamoot</a></td>
<td><a href="https://creativecommons.org/licenses/by/3.0/" rel="nofollow noopener" referrerpolicy="origin">CC-BY 3.0</a></td>
<td>
<br></td>
</tr>
<tr>
<td><a href="https://opengameart.org/content/outdoor-stone-floor" rel="nofollow noopener" referrerpolicy="origin">Outdoor Stone Floor</a></td>
<td><a href="https://opengameart.org/users/sindwiller" rel="nofollow noopener" referrerpolicy="origin">Sindwiller</a></td>
<td><a href="https://creativecommons.org/licenses/by-sa/3.0/" rel="nofollow noopener" referrerpolicy="origin">CC-BY-SA 3.0</a></td>
<td>
<br></td>
</tr>
<tr>
<td><a href="https://opengameart.org/content/heroes-theme" rel="nofollow noopener" referrerpolicy="origin">Heroes Theme</a></td>
<td><a href="https://opengameart.org/users/alexandr-zhelanov" rel="nofollow noopener" referrerpolicy="origin">Alexander Zhelanov</a></td>
<td><a href="https://creativecommons.org/licenses/by/3.0/" rel="nofollow noopener" referrerpolicy="origin">CC-BY 3.0</a></td>
<td>
<br></td>
</tr>
<tr>
<td><a href="https://opengameart.org/content/5-chiptunes-action" rel="nofollow noopener" referrerpolicy="origin">5 Chiptunes (Action)</a></td>
<td><a href="https://opengameart.org/users/subspaceaudio" rel="nofollow noopener" referrerpolicy="origin">SubspaceAudio</a></td>
<td><a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow noopener" referrerpolicy="origin">CC0 1.0</a></td>
<td>
Converted from .wav to .ogg<br></td>
</tr>
<tr>
<td><a href="https://opengameart.org/content/menu-music" rel="nofollow noopener" referrerpolicy="origin">Menu Music</a></td>
<td><a href="https://opengameart.org/users/mrpoly" rel="nofollow noopener" referrerpolicy="origin">mrpoly</a></td>
<td><a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow noopener" referrerpolicy="origin">CC0 1.0</a></td>
<td>
<br></td>
</tr>
<tr>
<td><a href="https://opengameart.org/content/clouds-skybox-1" rel="nofollow noopener" referrerpolicy="origin">Clouds Skybox 1</a></td>
<td><a href="https://opengameart.org/users/lukerustltd" rel="nofollow noopener" referrerpolicy="origin">Luke.RUSTLTD</a></td>
<td><a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow noopener" referrerpolicy="origin">CC0 1.0</a></td>
<td>
<br></td>
</tr>
<tr>
<td><a href="https://opengameart.org/content/zombie-skeleton-monster-voice-effects" rel="nofollow noopener" referrerpolicy="origin">Zombie / Skeleton / Monster Voice Effects</a></td>
<td><a href="https://opengameart.org/users/arcadeparty" rel="nofollow noopener" referrerpolicy="origin">ArcadeParty</a></td>
<td><a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="nofollow noopener" referrerpolicy="origin">CC0 1.0</a></td>
<td>
<br></td>
</tr>
<tr>
<td><a href="https://opengameart.org/content/fleshy-fight-sounds" rel="nofollow noopener" referrerpolicy="origin">Fleshy Fight Sounds</a></td>
<td><a href="https://opengameart.org/users/willleamon" rel="nofollow noopener" referrerpolicy="origin">will_leamon</a></td>
<td><a href="https://opengameart.org/content/oga-by-30-faq" rel="nofollow noopener" referrerpolicy="origin">OGA-BY 3.0</a></td>
<td>
<br></td>
</tr>
<tr>
<td><a href="https://www.fontsquirrel.com/fonts/chomsky" rel="nofollow noopener" referrerpolicy="origin">Chomsky Font</a></td>
<td><a href="https://www.fontsquirrel.com/fonts/list/foundry/fredrick-brennan" rel="nofollow noopener" referrerpolicy="origin">Fredrick Brennann</a></td>
<td><a href="https://www.fontsquirrel.com/license/chomsky" rel="nofollow noopener" referrerpolicy="origin">SIL Open Font License</a></td>
<td>
<br></td>
</tr>
<tr>
<td><a href="https://www.fontsquirrel.com/fonts/dejavu-serif" rel="nofollow noopener" referrerpolicy="origin">DejaVU Serif Font</a></td>
<td><a href="https://www.fontsquirrel.com/fonts/list/foundry/dejavu-fonts" rel="nofollow noopener" referrerpolicy="origin">DejaVu Fonts</a></td>
<td><a href="https://www.fontsquirrel.com/license/dejavu-serif" rel="nofollow noopener" referrerpolicy="origin">DejaVU Fonts License</a></td>
<td>
<br></td>
</tr>
</tbody></table>
<p><br></p>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/k7s1SDXwANE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTI4Njk4LzUyNjk0MzkucG5n/original/78jBGR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI4Njk4LzUyNjk0NTMucG5n/original/0sVZ0j.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTI4Njk4LzUyNjk0NTQucG5n/original/lls7Sf.png]]
<p>[<a href="https://raulranma.itch.io/the-target/devlog/97575/o-alvo" target="_blank">Ver descrição em português</a>]<br></p>
<p>“The Target” is a game about bullying and toxic masculinity. In this game, we play boys in a new school environment, surrounded by strangers, who form a small group, by chance or necessity.</p>
<p>Holding their fears against their chests, these boys that we made up play together in recess, like you’d expect from any other kid. Until one of them sees reason to try and get an upper hand against another one. That other one is The Target.</p>
<p>The Target wouldn’t exist without the brazilian game jam “<a href="http://cybermamute.com.br/concursofvm/" rel="nofollow noopener" referrerpolicy="origin">Faça Você Mesmo 2018</a>” (which could be translated as “Do It Yourself 2018”), hosted by Cyber Mamute. The game was made under it’s rules and themes - <a href="http://cybermamute.com.br/avaliacoes-o-alvo/" rel="nofollow noopener" referrerpolicy="origin">you can see the whole journey here</a> (in portuguese).<br></p>
<p><br></p>
<h4>CONTENT WARNING</h4>
<p><em>This game deals with themes of bullying, humiliation and social isolation. People who lived those experiences intensely might not feel safe with this game, and we recommend that it is played with caution. If at any moment during the game you feel like you’re not comfortable playing anymore, announce your decision and leave the game, no explanation required. Your emotional state is more important than any game.<br></em></p>
<p><br></p>
<h2>To play</h2>
<p>You'll need:</p>
<ul><li>A minimum of four and a maximum of seven players (including you).</li><li>A decks of cards with four suits, and at least one Joker.</li><li>Two index cards or pieces of scrap paper for each player.</li><li>Pencils or pens, preferably one for each player.</li><li>A copy of this game’s rules, for referencing and reading while playing.</li></ul>
<p><em><br></em></p>
<p><em>This game is licensed under CC BY-SA 4.0. You can create upon it, as long as you license your game in the same terms and give appropriate credit.<br></em></p>
<p><em><span></span><a href="https://creativecommons.org/licenses/by-sa/4.0/" rel="nofollow noopener" referrerpolicy="origin">https://creativecommons.org/licenses/by-sa/4.0/</a></em><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDc1MjA2LzM2NTI1OTQucG5n/original/41IiP5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc1MjA2LzM2NTI2MDQucG5n/original/IVyMRR.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDc1MjA2LzU2MDQ2MDUucG5n/original/R8WMQj.png]]
<p>What is this?</p>
<p>A
guide to preparing a region for player exploration</p>
<p>A
way to represent exploration during a running that replaces random encounters and provides a physical way to map your players' exploration on the table.</p>
<p> </p>
<p>You will need:</p>
<p>20mi
and 6mi hex map of the region to be explored</p>
<p>At
least one Tarot deck</p>
<p>Optional:
2mi hex map as generated by Alexis Smolensk' new <a href="http://tao-dnd.blogspot.com/2019/07/new-hex-generator.html" rel="nofollow noopener" referrerpolicy="origin">hex generator</a></p>
<p> </p>
<p>F. Y. I.</p>
<p>The
region is the area of your game world of
particular interest.</p>
<p>As
20 miles is the distance walking travelers and wagons can cover in a full day's
travel on a road, the region is best mapped in 20mi hexes.</p>
<p>Each
20mi hex can fragment into seven 6mi hexes. The 6mi hex is the appropriate
scale for off-road exploration. Depending on fitness level and
terrain/vegetation, a group of fully-laden adventurers can expect to travel 6mi
in 3 hours.</p>
<p>Alexis'
hex generator provides more granularity, creating 2mi hexes within each 6mi hex
and assigning particular features (settlements, religious communities, forested
areas, etc.) that will inform your reading.</p>
<p>The
Tarot deck has 78 cards. The Major Arcana are the cards numbered 0 to 21. The
Minor Arcana cards come in four suits: wands, cups, pentacles, and swords.
Within each suit, there 10 numbered cards and 4 face cards. The 4 face cards
form the Court of that suit: the Court of Wands, the Court of Swords, and so
on. Collectively, the face cards are called the court cards.</p>
<p></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDQ2MzgzLzI1ODk5OTYucG5n/original/mr0FAk.png]]
<p></p>
<p>The Temple of Karthis is a solo dungeon crawling game using cards and dice.</p>
<p>Each turn, the player will roll dice to generate the immediate layout of the dungeon and then draw cards to see what threats are present, if any.</p>
<p>If a threat is determined, the player will then roll a die to see how well he or she did in overcoming the obstacle.</p>
<p>However, treasures are also likely to appear instead of, or with, a threat.</p>
<p>The game is completed when the prized relic, the Jeweled Crown of Karthis, is found.</p>
<p>At which time, the explorer will add their collected treasures and note the dungeon level they completed the game on.</p>
<p>The game can be replayed as often as desired, with the player gaining a benefit for how far they have ventured in previous journeys.</p>
<p>As such, the game lends itself to a ‘beat the high score’ type of game, with the player attempting to reach a higher score with each play through.</p>
<p>(Cover art was created using pieces of public domain art.)</p>
<p>Update: Cards have been added to the files.<br><br>The 34 cards replace the playing cards.<br>Both the Spades and the Clubs suits are represented by Skulls to simplify things a bit.<br>The two crowns replace the Joker cards. You still need to collect both to find the Crown.<br>And there is only one enemy card, since you'll only ever use just one in a game.<br>This will also eliminate the extra step of randomly drawing an enemy card.<br><br>All art was taken from Public Domain images and edited extensively.<br><br>I hope the cards help give the game a bit more thematic flavor.<br><br>Update 2: I added separate image files for the Graph Sheets and the Tiles Chart.<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NzM2Mi82MDUxMDY2LnBuZw==/original/%2BXbH6C.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NzM2Mi82MDUwOTkzLnBuZw==/original/4%2B9YuC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NzM2Mi82MDUwOTk0LnBuZw==/original/bxAxXQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1NzM2Mi82MDcwNjIzLnBuZw==/original/D3wax5.png]]
<p>After finding the cursed play <em>'The King in Yellow'</em>, Trixie Glimmer Smith, a slacking student at Bluebell University recounts the terrible events that set her a week behind in her coursework.<br></p>
<p>This story follows on from the events of <em>Parsnip <a href="https://bunbirb.itch.io/parsnip"></a><a href="https://bunbirb.itch.io/parsnip" target="_blank">(free download here)</a></em> with a host of new characters and an expanded world, although you can still enjoy it without playing <em>Parsnip.</em></p>
<p>Trixie is around 3-5 hours long, if you want to play all the content.</p>
<p><strong>Check out the free demo below!</strong></p>
<p class="text-center"><strong><em>Features</em></strong></p>
<p><strong>Insight:</strong></p>
<p><img src="https://img.itch.zone/aW1nLzE1ODIzOTkucG5n/original/zQCHgJ.png" loading="lazy"><br></p>
<ul><li>Throughout the game events may start to take their toll on Trixie's mind. As Trixie gains insight her narration becomes ever more unreliable.</li><li>Unlike many sanity systems Trixie's insight system is hidden, meaning you never know for sure when you are being affected by it.</li><li class="text-center">This system also means additional playthroughs of the game may vary! <em><br><br><strong>Can you really trust anything Trixie sees? Can you afford not to?</strong></em></li></ul>
<p><strong>Multiple Paths:</strong></p>
<p><img src="https://img.itch.zone/aW1nLzE1ODIxNjYucG5n/original/WojvD7.png" loading="lazy"><br></p>
<ul><li>Trixie can choose to spend her week with the Friendly, albeit slightly scary shopkeeper Heidi, the excitable baker Gregg or the chill milkwoman Bell.</li><li>At points the three routes may intertwine, giving different perspectives on the same story.</li><li>The game also has two main potential endings, with additional minor alternate endings.</li></ul>
<p><strong>A Strange World:</strong></p>
<p><img src="https://img.itch.zone/aW1nLzE1ODI0MDIucG5n/original/HHsAmy.png" loading="lazy"><br></p>
<ul><li>Set in a world of anthropomorphic animals, psychic birds and cosmic gods, Trixie explores the rural England inspired Bluefields County and discovers some of the horrors that secretly lurk in it's scenic countryside.</li></ul>
<p><strong>Art Book:</strong></p>
<p><img src="https://img.itch.zone/aW1nLzE1ODYzOTcucG5n/original/ysvqsz.png" loading="lazy"><br></p>
<ul><li>If you spend $6.99 on Trixie you get an Art book with the game! Exciting stuff! It contains all sorts of concept art, bios and fun trivia about the game, the characters and the world.</li></ul>
<p><strong></strong></p>
<p class="text-center"><strong>Content Warnings:</strong></p>
<p class="text-center">Trixie Glimmer Smith contains a few mild descriptions of violence, horror, implied sexual content, some exploration of negative trans feelings and some bad language.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjgyMzM1LzE1ODY0MjkucG5n/original/P4cwua.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgyMzM1LzE1ODY0MjgucG5n/original/d%2BqBD3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgyMzM1LzE1ODY0MjUucG5n/original/70Y666.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgyMzM1LzE1ODY0MjYucG5n/original/5bbl7r.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjgyMzM1LzE1ODY0MjcucG5n/original/JuJ9Ek.png]]
<p>An adventure game based on the classic novel by Alexander Dumas. Play as D'Artagnan, Prothos, Athos or Aramis. In this grave mission to save a whole country you have to fight a devious enemy.<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTg2ODg5LzU2MTI4NDgucG5n/original/loKnfV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg2ODg5LzU2MTI2NjAucG5n/original/Negsxl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg2ODg5LzU2MTI2NzYuanBn/original/cX%2BVjT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg2ODg5LzU2MTI2NjEucG5n/original/O0WGet.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg2ODg5LzU2MTI2NzcuanBn/original/Z8jbMY.jpg]]
<p><em>The Trolley</em> is a first-person point and click narrative game about the sudden closure of a public transportation system in a fictional Rustbelt American city. </p>
<p>Set in the late 1950s, <em>The Trolley</em> invites players complete tasks in order to dismantle an incline railroad of a recently discontinued trolley line. As the player boards up the gatehouse, disposes of paperwork, and performs other closure duties, they are given a series of inner monolog choices that reflect on urban infrastructure, labor, and technological progress.</p>
<p>The stories, environments, architecture, and scenery are all pulled from extensive research <a href="http://doubleunderscore.net" rel="nofollow noopener" referrerpolicy="origin">Nicholas O’Brien</a> has conducted over the past two years. The often untold narratives of the trolley closures from LA to Atlanta, Cincinnati to Pittsburgh interweave throughout this game. Using conventions from experimental filmmaking, essayistic moving image work, and contemporary story-driven indie games, <em>The Trolley</em> ask players to contemplate the ways in which the absence of the trolley has reshaped American civic space.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTUwOTU2LzY5MTM2Mi5qcGc=/original/am3Dt2.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUwOTU2LzY5MTM5Mi5wbmc=/original/cqq38z.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUwOTU2Lzk2MDA2Mi5wbmc=/original/b5yRY%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTUwOTU2Lzk2MDA2My5wbmc=/original/m%2BpMmA.png]]
<p><strong><em>The Twine® Grimoire</em></strong> is an unofficial introduction to using CSS and HTML to customize the appearance and behavior of projects made in Twine 2! This first volume is an 84 page, 100% <strong>free</strong> PDF which contains <strong>6 detailed tutorials</strong> on:</p>
<ul><li>Installation & Getting Started</li><li>Text Styling</li><li>Link Styling</li><li>Customizing Passages</li><li>Customizing Backgrounds</li><li>Embedding Images</li></ul>
<h4 class="text-justify">Features:</h4>
<p>Each section discusses both <strong>SugarCube</strong> and <strong>Harlowe</strong> Story Formats, with emphasis on the most recent versions.</p>
<p class="text-justify">Other features discussed include: <strong>tag-based styling, </strong>using the <strong>CSS Stylesheet</strong>, usage of <strong>macros</strong> and <strong>named hooks</strong> in Harlowe, how to <strong>organize your files</strong>, and other topics. There are<strong> screenshots</strong> and<strong> examples of code</strong> provided throughout each tutorial. <br></p>
<p class="text-justify">The aim of this project is to demonstrate how <strong>CSS and HTML</strong> can be used in a variety of Twine 2 Story Formats as a method of fine-tuning a game’s visuals. The information in these tutorials is <strong>not compatible</strong> with previous versions of Twine such as Twine 1.4.2. These tutorials are suitable for <strong>beginner to intermediate users</strong>, and this first volume is geared toward common features that many first-time users are interested in working into their projects. <br></p>
<h4>Other helpful resources:</h4>
<ul><li><a href="https://twinery.org/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Twinery.org</a></li><li><a href="https://twinery.org/wiki/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Twine Wiki</a></li><li><a href="https://twinery.org/cookbook/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Twine Cookbook</a> <br>
</li><li><a href="https://twinery.org/wiki/twine2:guide" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Twine 2 Guide</a><br>
</li><li><a href="https://twinery.org/forum/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Twinery Forums (Read-Only)</a><br>
</li><li><a href="https://twinery.org/questions/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Twine Q&A</a><br>
</li><li><a href="https://intfiction.org/c/authoring/twine" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Intfiction.org Twine Category</a><br>
</li></ul>
<p>
</p>
<p>More resources, including links to Story Format documentation, can be found in the PDF.<strong><br></strong></p>
<h3>Notes:</h3>
<p><strong>Thank you</strong> to all of my <a href="http://patreon.com/grimoirtua" rel="nofollow noopener" referrerpolicy="origin">patrons</a> whose support made it possible for me to take the time to write these tutorials, revise them, and compile them into a single free PDF! Thank you also to <a href="https://twitter.com/videlais" rel="nofollow noopener" referrerpolicy="origin">@videlais</a> for his work on the Twine Cookbook, to which I've had the pleasure of contributing, Ken Alba for his support and interest in my tutorials as an educator, and especially <a href="https://twitter.com/klembot" rel="nofollow noopener" referrerpolicy="origin">@klembot</a> for creating Twine!</p>
<p>In the interest of making this resource as accessible as possible to many users, the <em>Grimoire</em> will never have a minimum donation required to download.<br></p>
<h3>About Twine:</h3>
<p><strong><em>Twine</em></strong><em><span class="">®</span> is an “an open-source tool for telling interactive, non-linear stories” originally created by Chris Kilmas in 2009; it is now maintained by “a whole bunch of people at <a href="https://github.com/tweecode" rel="nofollow noopener" referrerpolicy="origin">several</a> <a href="https://github.com/klembot/twinejs" rel="nofollow noopener" referrerpolicy="origin">different</a> <a href="https://github.com/klembot/twinejs" rel="nofollow noopener" referrerpolicy="origin">repositories</a>,” per Twinery.org. I am in no way affiliated with its development process. Twine is also a registered trademark of the <a href="https://iftechfoundation.org/" rel="nofollow noopener" referrerpolicy="origin">Interactive Fiction Technology Foundation</a>. </em><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0MzIwLzM1NDExMzAucG5n/original/SPe0oC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0MzIwLzM1NDQxOTUucG5n/original/YIGLZd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0MzIwLzM1NDExMzIucG5n/original/GasfNQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0MzIwLzM1NDExNDIucG5n/original/EtzFiw.png]]
<p><strong><em>The Twine® Grimoire</em></strong> is an unofficial introduction to using CSS and HTML to customize the appearance and behavior of projects made in Twine 2.0! This first volume is an 84 page, 100% <strong>free</strong> PDF which contains <strong>6 detailed tutorials</strong> on:</p>
<ul><li>Installation & Getting Started</li><li>Text Styling</li><li>Link Styling</li><li>Customizing Passages</li><li>Customizing Backgrounds</li><li>Embedding Images</li></ul>
<h4 class="text-justify">Features:</h4>
<p>Each section discusses both <strong>SugarCube</strong> and <strong>Harlowe</strong> Story Formats, with emphasis on the most recent versions.</p>
<p class="text-justify">Other features discussed include: <strong>tag-based styling, </strong>using the <strong>CSS Stylesheet</strong>, usage of <strong>macros</strong> and <strong>named hooks</strong> in Harlowe, how to <strong>organize your files</strong>, and other topics. There are<strong> screenshots</strong> and<strong> examples of code</strong> provided throughout each tutorial. <br></p>
<p class="text-justify">The aim of this project is to demonstrate how <strong>CSS and HTML</strong> can be used in a variety of Twine 2.0 Story Formats as a method of fine-tuning a game’s visuals. The information in these tutorials is <strong>not compatible</strong> with previous versions of Twine such as Twine 1.4.2. These tutorials are suitable for <strong>beginner to intermediate users</strong>, and this first volume is geared toward common features that many first-time users are interested in working into their projects. <br></p>
<h4>Other helpful resources:</h4>
<ul><li><a href="https://twinery.org/" target="_blank" rel="nofollow noopener">Twinery.org</a></li><li><a href="https://twinery.org/wiki/" target="_blank" rel="nofollow noopener">Twine Wiki</a></li><li><a href="https://twinery.org/cookbook/" target="_blank" rel="nofollow noopener">Twine Cookbook</a> <br>
</li><li><a href="https://twinery.org/wiki/twine2:guide" target="_blank" rel="nofollow noopener">Twine 2 Guide</a><br>
</li><li><a href="https://twinery.org/forum/" target="_blank" rel="nofollow noopener">Twinery Forums (Read-Only)</a><br>
</li><li><a href="https://twinery.org/questions/" target="_blank" rel="nofollow noopener">Twine Q&A</a><br>
</li><li><a href="https://intfiction.org/c/authoring/twine" target="_blank" rel="nofollow noopener">Intfiction.org Twine Category</a><br>
</li></ul>
<p>
</p>
<p>More resources, including links to Story Format documentation, can be found in the PDF.<strong><br></strong></p>
<h3>Notes:</h3>
<p><strong>Thank you</strong> to all of my <a href="http://patreon.com/grimoirtua" rel="nofollow noopener">patrons</a> whose support made it possible for me to take the time to write these tutorials, revise them, and compile them into a single free PDF! Thank you also to <a href="https://twitter.com/videlais" rel="nofollow noopener">@videlais</a> for his work on the Twine Cookbook, to which I've had the pleasure of contributing, Ken Alba for his support and interest in my tutorials as an educator, and especially <a href="https://twitter.com/klembot" rel="nofollow noopener">@klembot</a> for creating Twine!</p>
<p>In the interest of making this resource as accessible as possible to many users, the <em>Grimoire</em> will never have a minimum donation required to download.<br></p>
<h3>About Twine:</h3>
<p><strong><em>Twine</em></strong><em><span class="">®</span> is an “an open-source tool for telling interactive, non-linear stories” originally created by Chris Kilmas in 2009; it is now maintained by “a whole bunch of people at <a href="https://github.com/tweecode" rel="nofollow noopener">several</a> <a href="https://github.com/klembot/twinejs" rel="nofollow noopener">different</a> <a href="https://github.com/klembot/twinejs" rel="nofollow noopener">repositories</a>,” per Twinery.org. I am in no way affiliated with its development process. Twine is also a registered trademark of the <a href="https://iftechfoundation.org/" rel="nofollow noopener">Interactive Fiction Technology Foundation</a>. </em><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0MzIwLzM1NDExMzAucG5n/original/SPe0oC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0MzIwLzM1NDQxOTUucG5n/original/YIGLZd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0MzIwLzM1NDExMzIucG5n/original/GasfNQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ0MzIwLzM1NDExNDIucG5n/original/EtzFiw.png]]
<p>This is a solo journaling game in which you document your journey and discoveries within a shifting, seemingly endless underground labyrinth. You woke in a strange room with few fragmented memories of a past you tried to run from: there are no doors in sight, but you find rooms, hallways, secret passages and sets of stairs as you make your way through this unknown underground system. With plentiful supplies and resources filling up the rooms you pass whenever you need them, your only time limit is how long you can stand to be here. Your goal is to find a way out... and to uncover your connection to the walls you have found yourself in.</p>
<p>What do you remember about the life you left behind?</p>
<p>What do you hope or fear lies ahead?</p>
<p>What do the places you pass through mean to you?</p>
<p>Where do you plan to go when you reach the exit?<br></p>
<p>The gameplay of <strong>The Walls That Keep On Growing </strong>is based on <a href="http://loottheroom.itch.io/wretched">The Wretched</a>, product of Chris Bissette and Loot The Room, and was created for <a href="https://itch.io/jam/wretched-jam">Wretched Jam</a>.</p>
<p></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjg4MzY3LzUyNzA1NDMucG5n/original/KQwAng.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg4MzY3LzUyNzA1NDIucG5n/original/asWmBw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg4MzY3LzUyNzA1NDEucG5n/original/Ve0%2FT7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjg4MzY3LzUyNzA1NDAucG5n/original/01E%2BuD.png]]
<p></p>
<p>This game was created using RPGmaker MV over a week in July of 2020 for the Portland Indie Game Squad (PIGSquad) <a href="https://itch.io/jam/ssjturnbased">June Summer Slow Jam</a>. The technical theme was "Music first" and the creative theme was "Ghost notes" <br></p><p>**6/4/2021 This game is now apart of the <a href="https://itch.io/b/902/indie-bundle-for-palestinian-aid">Inde bundle for Palestinian Aid</a> if you are going to drop some money for this game, I highly encourage you do it through this bundle! Through the duration of the bundle if I do receive anything from this game, I will donate it <a href="https://www.unrwa.org/gaza-emergency" target="_blank" rel="nofollow noopener" referrerpolicy="origin">UNRWA</a>! **<br><br><br><br>*** Music and Sound volume has been reduced by half, this is a game, not a dance club***<br><br>
Play as the wanderer known as Key, as they check out what happened to the music of the Neon Vibe Realm. With their trusty key tar, and the aid of a van driving jellyfish, they set out to defeat the ghostly Maestro!<br><br> Tackle each area in any order! The music changes as you go!</p>
<p>Talk to the 'mini' van in the starting area to turn on "Story" mode if you want to<br>trivialize combat!</p>
<p>Player Input:</p>
<ul><li>Arrow Keys( Up/Down/Left/Right): Movement and Menu navigation</li><li>ESC /X: To bring up the menu</li><li>Either Shift key: Dash</li><li>Z: To interact and Choose menu Item.</li></ul>
<p>Credits:</p>
<ul><li>Title text: Sins Font from Humble Fonts by <a href="http://somepx.itch.io/">Eeve Somepx</a></li><li>In game font and sfx from RPGMaker core assets</li><li>Programming, Art, and Music by me!</li></ul>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzEyODIyLzM5NDg3NzYucG5n/original/hr5Vr6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzEyODIyLzM5NDg3ODAucG5n/original/xD7957.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzEyODIyLzM5NDg3ODEucG5n/original/tQWeNU.png]]
<p>It is the beginning of Spring in the small village of Dunfel. <br></p>
<p>You are Vyler, a young man that's lived in these parts all your life. <br></p>
<p>You've been learning from nature and have stumbled upon some bit of magic here and there, but you've never had any formal training. Fashioning yourself out to be a druid, or at least what you think one should be like, based on what you've read, you feel a closeness to the earth. <br></p>
<p>On the first full moon of Spring, you were visited by a woman, or rather her spirit, as she came to you using great powers you had never seen before. You are awestruck, seeing her appear out of the air, with her eyes glowing like embers. <br></p>
<p>She motions for you to come sit next to her, as she formally greets you. Calling herself Eraina, she tells you that she is in need of someone worthy enough to be her apprentice. Looking through all of the region, you were the only person she felt would qualify for what she deemed an important role. You would be her apprentice, if you chose to accept the offer. Agreeing, you set out the next day, following the path in the nearby woods that Eraina had directed you to.</p>
<p>Thus begins your journey to meet the mystic Eraina and find your calling.</p>
<p>The Winding Journey is a game made for the <a href="https://itch.io/jam/carta-jam">Carta jam</a>.<br>For it, you will need-<br></p>
<p></p>
<p>A standard deck of playing cards, with two jokers.<br>Two six-sided dice.<br>A marker, or token, to track your movement.<br>A journal, or some paper, to write on.<br>Enough room to lay out a 4x6 grid of cards.<br>
</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMDM3Mi81ODE2MDg1LnBuZw==/original/%2BwHoxn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMDM3Mi81ODE2MDQ4LnBuZw==/original/6wQ%2Bp2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMDM3Mi81ODE2MDUwLnBuZw==/original/V6s5fV.png]]
<p class="text-center">One lazy morning an old man wanders into a witch's shop. The young witch <strong>Marjolaine</strong> greets him at the counter.<br></p>
<p class="text-center">The old man produces a box which he claims to contain his heart, and asks for it to be delivered. <br></p>
<p class="text-center">The store's owner, the wise Madame Odette, refuses to do business with the man, but a revelation leads the apprentice to accept the request, even if it is against her master's wishes.<br></p>
<p class="text-center"> With nothing but a picture to go on,<strong> </strong><strong>The Witchling</strong> heads out into the city.<br></p>
<p><img src="https://img.itch.zone/aW1nLzMyMzk3OTAuanBn/original/%2F2Wd6d.jpg" loading="lazy"></p>
<p class="text-center">FEATURES:
</p>
<p class="text-center">10k Word long script.<br>13 Sprited Characters<br>4 Backgrounds<br>5 Original Songs</p>
<p><br></p>
<p class="text-center"><em>UnfinishedCircl's Submission for NaNoRenO 2020</em><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjA5NjYwLzMyMzk3OTEuanBn/original/Jtth5J.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjA5NjYwLzMyMzk3OTMuanBn/original/LhU4R1.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjA5NjYwLzMyMzk4MzUuanBn/original/Ze%2FR81.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjA5NjYwLzMyNTM2NTMuanBn/original/DVkJmD.jpg]]
<p><em>“ I've died so many times, I'm not quite sure who I am anymore. ”</em><br></p>
<p><em>-Unattributed, scrawled in the margins of the Book of Deeds</em> </p>
<p><br></p>
<p>The <strong>Words and Deeds of the Chain of Tlachic </strong>is a system agnostic campaign frame for fantasy roleplaying games. Players play as the Dwarven Chain of Tlachic, a clan of 66 Dwarves that have recently been freed from a thousand years of slavery at the hands of the sorceress queen known as the Red Lady. In the wake of her defeat, the Dwarves begin reclaiming their ancestral home that she made her fortress, recovering the artifacts of their heritage and destroying what’s left of her servitors.</p>
<p> <br></p>
<p><img src="https://img.itch.zone/aW1nLzQzNzcxNjMucG5n/original/am4din.png" alt="Underworld Map" title="Underworld Map" loading="lazy"></p>
<figcaption>Currently mapped caverns, unknown cartographer</figcaption>
<p></p>
<p>These adventures are deadly, but the Dwarves of Tlachic have a gift: they never die. Whenever a Dwarf falls, they rise again from the Unzerat Forge, and return to the fight in a future session.</p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1nLzQzNzcyMTQucG5n/original/xsMSaX.png]]
<p><em>The world is ending in one week. This we know for a fact. It is too late to stop it. It cannot be slowed down anymore. Especially not by you, because you are just a group of large dogs. All you can do is try and make the final days as best as you can for those that are near and dear to you. Your owners, your community, the other wild dogs in the park, whoever you hold dear.</em> </p>
<p><strong>The World is Ending and We Are Very Large Dogs</strong> is a GM-less collaborative storytelling game for 2+ players, wherein the players work to weave stories of bright moments in the face of Armageddon. The mood, intensity and tone of this game are up to you, the players, to decide, as the adaptable ruleset is designed for anything from a pulpy Mars Attacks-esque alien invasion to a a dark, mournful, melancholic ending.</p>
<p>---</p>
<p>This is version 1.0 of Very Large Dogs, however if you purchase it you will recieve any updates or revisions free of charge.<br>
</p>
[img width=500 [https://img.itch.zone/aW1nLzQ5NzgwNDYucG5n/original/TABVzn.png]]
<p>worm simulator for 0-4 players. </p>
<ul><li>be a worm</li><li>eat plankton (or don't)</li><li>change color, shape and size</li><li>includes various settings for alternate play modes</li><li>includes a screensaver mode</li></ul>
<p>with sound by Everest Pipkin</p><p>mac build by <a href="https://twitter.com/whadit?s=20" rel="nofollow noopener" referrerpolicy="origin">@whadit</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTY2MjU4LzU1MzYwMDYuanBn/original/dyoqoq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY2MjU4LzU1MzU5NDcuanBn/original/IPjY3l.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY2MjU4LzU1MzU5NDguanBn/original/yJb%2BHh.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY2MjU4LzU1MzYwMDUuanBn/original/YPZj7E.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY2MjU4LzU1MzU5NjguanBn/original/4LEL%2B6.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY2MjU4LzU1MzU5NzEuanBn/original/Fr3IOT.jpg]]
<p>
<br>
</p><h1 style="text-align: center">THERE YOU GO <small>by</small> OCTOGEAR GAMES</h1><p style="background-color: #161616; padding: 20px 20px">
<a><em>There You Go</em></a> is a short (around 15 minutes) isometric puzzle game about rooms, puzzles, puzzle rooms, and rooms with puzzles. It has about 10 rooms, each with its own set of riddles, and even contains some easter eggs.
<br>
<br>
So go ahead and download it for free below, and let me know what you think! This is my first game, so getting any and all feedback would be greatly appreciated.
</p><h1 style="text-align: center">TESTIMONIALS</h1><p style="background-color: #161616; padding: 20px 20px">
<em>"It was really fun"</em>
<br>
<br>
<em>"If I don't finish that Colour mix puzzle this century I'm going to throw my PC out the window!"</em>
<br>
<br>
<em>"It was great and I now await chapter II"</em>
<br>
<br>
<em>"Did I find all the easter eggs? I DON'T KNOW IF I FOUND ALL THE EASTER EGGS!!"</em>
</p><p style="background-color: #161616; padding: 10px 20px 0 20px; text-align: center">Also available on Google Play: <a href="https://play.google.com/store/apps/details?id=com.octogear.thereyougo&utm_source=itchio&utm_medium=website&utm_content=googleplaybutton&utm_campaign=itchio" rel="nofollow noopener" referrerpolicy="origin"><img alt="Get it on Google Play" src="https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png" width="236" loading="lazy"></a></p><p>
<br>
</p><p style="text-align: center">
CREATED BY
<br>
<a href="http://octogeargames.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="http://octogeargames.com/images/logo.gif" alt="Octogear Games" loading="lazy"></a>
</p><p>
<br>
</p><p style="background-color: #161616; padding: 20px 20px">
<a><em>There You Go</em></a> is completely free of charge, but if you enjoyed it and feel like it was worth a bit of cash - I won't stop you from donating via itch.io.
</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzI3MTQvMzM2NzE4LmdpZg==/original/dgsdR2.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI3MTQvMzM0NDQ0LnBuZw==/original/ZimXzf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI3MTQvMzM0MzQ3LmdpZg==/original/uCa1jh.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzI3MTQvMzM0NDQ1LnBuZw==/original/JSQews.png]]
<p>These Lands is a virtual reality puzzle adventure game that leaves you marooned on an island. Following the footsteps of a long lost explorer, you must solve the puzzles to unearth the mystery hidden within. Only the most skilled, logical and brave adventurers will survive These Lands...... will you?<br></p>
<p><img src="https://img.itch.zone/aW1nLzE5ODY3MDYucG5n/original/2L%2FDik.png" loading="lazy"></p>
<ul><li>Rich story revealing the mysteries of These Lands.</li><li>Become completely immersed in this beautiful low poly world. </li><li>Solve mind-bending puzzles across multiple levels while exploring These Lands. </li><li>Want to throw something, anything, everything? hundreds of interactive objects to play with. </li><li>Find all messages left behind by the long lost explorer who came before you, revealing a secret lost for millennia.</li><li>Room scale VR Experience designed for the HTC Vive and Oculus Rift</li></ul>
<p>Note: No bindings for Knuckles V2 at the moment sorry! The game runs on Oculus Quest, but some interactions may not work.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/kug00gMb_mg" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzc4OTUzLzIwNDkwMTguZ2lm/original/ZS5%2FkQ.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4OTUzLzIwNjExMTcuanBn/original/tdjlBx.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4OTUzLzIwNjExMjYucG5n/original/gQ7p1g.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4OTUzLzIwNjExMjcuanBn/original/cwUyme.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4OTUzLzIwNjExMTkuanBn/original/NpRdVq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4OTUzLzIwNjExMzUuanBn/original/n09%2Bt9.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4OTUzLzIwNjExMTguanBn/original/C1z7Si.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4OTUzLzIwNjExMjQuanBn/original/%2FJMTnt.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4OTUzLzIwNjExMjUuanBn/original/zL2bVB.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4OTUzLzIwNjExMjEuanBn/original/wCZXuT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4OTUzLzIwNjExMjIuanBn/original/Zq1htD.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4OTUzLzIwNjExMjMuanBn/original/9onIv6.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzc4OTUzLzIwNjExMjAuanBn/original/x2KKyy.jpg]]
<p>They Bleed Pixels, the cult classic platforming slash-em up is now available on Itch! </p>
<p>As an anonymous student of the Lafcadio Academy for Troubled Young Ladies, you must battle through your nightmares to defeat a curse that’s slowly transforming your body into a clawed demonic form. </p>
<p>They Bleed Pixels balances a perfect mix of fast-paced acrobatic platforming and fierce, one-button, slash’em up combat. By suppressing your urge to button mash in favour of focusing on stylish and smart kills, you are rewarded with checkpoints you can choose when to place for safety... or try your luck by holding onto them for extra bonus points.<br></p>
<p>Features:</p>
<ul><li>Hardcore original difficulty, plus an easier novice mode, to match a wider range of skills. </li><li>Striking art style mixes low-fi pixel art with organic ink and paper textures. </li><li>Original electronic soundtrack by DJ Finish Him (aka Shaun Hatton) composed with synthesizers, unconventional instruments and gadgets often not meant for musical use.</li><li>Unlock bonus guest levels + illustrations by comic and game artists from around the world.</li><li>Becoming a monster stabbing master or platforming speedrunner with individual level rankings, leaderboards and 150 skill-based badges. </li><li>Lush gothic-cute motion comics tell the story of a young girl haunted by eldritch nightmares.</li></ul>
<p><em><br></em></p>
<p><em>“Gothic brutality shines brightly throughout this blocky, blood-soaked indie platformer.” - </em><strong>8.2/10</strong> <em>-</em> IGN</p>
<p><br></p>
<p class="text-center"><strong>MORE INFO AT:<br></strong><strong> <a href="http://www.theybleedpixels.com" rel="nofollow noopener" referrerpolicy="origin">www.theybleedpixels.com</a></strong></p><p class="text-center"><strong>ALSO AVAILABLE ON THE NINTENDO SWITCH™</strong><br><strong>eShop: <a href="https://www.nintendo.com/games/detail/they-bleed-pixels-switch/" rel="nofollow noopener" referrerpolicy="origin">US</a> | <a href="https://www.nintendo.co.uk/Games/Nintendo-Switch-download-software/They-Bleed-Pixels-1859334.html" rel="nofollow noopener" referrerpolicy="origin">UK</a> | <a href="https://store-jp.nintendo.com/list/software/70010000028528.html" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Japan</a></strong></p><p><br></p>
<p><strong>DRM FREE!</strong></p>
<p><strong>GAMEPAD HIGHLY RECOMMENDED.</strong></p>
<p><strong>STEAM ONLY FEATURES:</strong> Online features such as online leaderboards and replay data require the Steam version.</p>
<p><strong>MAC PLAYERS: </strong>They Bleed Pixels is 64-bit and <strong>will run </strong>on MacOS Catalina. <em>However it is unsigned and may require you to turn off some security to run!</em></p>
<p class="text-center"><strong><a href="https://djfinishhim.bandcamp.com/album/they-bleed-pixels-on-the-dance-floor" target="_blank" rel="nofollow noopener" referrerpolicy="origin">BUY THE SOUNDTRACK BY DJ FINISH HIM ON BANDCAMP!<br></a></strong></p>
<p class="text-center"><u><strong><a href="https://www.youtube.com/watch?v=6SzO9Ski5p8" rel="nofollow noopener" referrerpolicy="origin">COMING SOON TO NINTENDO SWITCH™</a></strong></u><strong></strong></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/7X42GIOfuYo" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MzE2LzM1OTM4NTMuZ2lm/original/569BEd.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MzE2LzM1OTQwMDUuanBn/original/BGz%2FOH.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MzE2LzM1OTM5OTMuanBn/original/9MccLq.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MzE2LzM1OTQwMTAuanBn/original/XWU%2F0D.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MzE2LzM1OTQwNDYuanBn/original/zfnvAK.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY0MzE2LzM1OTQwNTMuanBn/original/dtu4KD.jpg]]
<p><br></p>
<p>Launch your missiles to intercept the incoming attack and defend your planet from a relentless alien invasion.</p>
<p>Intuitive one-tap gameplay in a remix of a classic retro arcade game with a challenging new twist.</p>
<p>Endless waves of ever-increasing difficulty will test the most skilled of players.</p>
<p>Conserve your limited ammunition by destroying multiple targets with a single shot for bigger scores.</p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDQzMzY3LzIyMzI4OTYuZ2lm/original/bUzgt8.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQzMzY3LzIyMzI3ODAucG5n/original/C%2FRjlj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQzMzY3LzIyMzI3ODEucG5n/original/aQ%2BU%2Fs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQzMzY3LzIyMzI3ODQucG5n/original/BW1fz%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQzMzY3LzIyMzI3ODIucG5n/original/6YDOky.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQzMzY3LzIyMzI3ODcucG5n/original/%2BzwNdv.png]]
<p><strong>THIRD EMPIRE - VIOLENCE + BEAUTY</strong></p>
<p>Our terrible world is even worse. It is time to fight the gods of the past. Bleed out the bastards and feed the soil.</p>
<p>With an additional 25 pages of ideas, lists and mechanics, this new version is a full-fledged RPG versus the classic version's one-shot centric design. Find treasure, draw a map and help your community in this bloody, dusty adventure game full of hope, death, beauty and violence.</p>
<p>A game of guillotines, flourishing nature, liberation, metal and flesh. Inspired by Kenshi, Star Wars and One Seven Design's Lasers & Feelings.</p>
<p><br></p>
<p><strong>Content Warnings:</strong>
</p>
<p>Embedded: Economic oppression, fascism, death, organized religion, blood, cannibalism.</p>
<p>Potential: Slavery (as an obvious evil), amputation, mutation, body horror, gore.</p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMTUwOC82NTgwNDI2LnBuZw==/original/UlcL%2BV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMTUwOC82NTgwNDIyLnBuZw==/original/RMrQYq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMTUwOC82NTgwNDIzLnBuZw==/original/apAPf7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMTUwOC82NTgwNDI3LnBuZw==/original/gFpVYI.png]]
<p><strong>THIRD EMPIRE</strong></p><p>Our terrible world is even worse. It is time to fight the gods of the past. Bleed out the bastards and feed the soil.</p><p><br></p><p>A game of guillotines, flourishing nature, liberation, metal and flesh. Inspired by Kenshi, Star Wars and One Seven Design's Lasers & Feelings.</p><p><br></p><p><strong>Content Warnings:</strong>
</p>
<p>Embedded: Economic oppression, fascism, death, organized religion, blood.</p><p>Potential: Slavery (as an obvious evil), amputation, mutation, body horror, gore.</p><p><br></p>
[img width=500 [https://img.itch.zone/aW1nLzU4MjM4MjIucG5n/original/QvaZUp.png]]
<p><em>This Body of Mine, I will Make it a Temple </em>is a single player introspective tabletop roleplaying game about mechs, recovering from a war time mindset, and making something your own through radical change. It is a game about trans experiences told through a fictional lens of a mech pilot coming home from war and trying to decide what their machine commonly used for death and destruction will become in times of peace.<br><br>This game also includes a small section with alternate rules to play this as a single player epilogue to any campaign you feel your character needs to retire, make peace with what they've done, and heal from the trauma they have both caused and endured.</p>
<p><br>To play this game you will need: A deck of tarot cards, some pen and paper, and tokens of some sort.<br><br> The cover image is illustrated by Mal Peters, you can find their work <a href="http://instagram.com/malachi_makes_art" target="_blank" rel="nofollow noopener" referrerpolicy="origin">here</a></p>
[img width=500 [https://img.itch.zone/aW1nLzU1NzI2MzkucG5n/original/Ovsp3E.png]]
<p class="text-center"><strong><em>WINNER: MOST INNOVATIVE at the <a href="https://www.igdnonline.com/groundbreakers" rel="nofollow noopener" referrerpolicy="origin">2021 Indie Groundbreaker awards</a></em></strong></p><p class="text-center"><strong><em>This Discord Has Ghosts in It </em></strong><em></em>is a game of entering and exploring a haunted house filled with ghosts. That haunted house is a Discord. </p>
<p class="text-center">In this game, players are either <strong>investigators </strong>or <strong>ghosts</strong>. </p>
<p class="text-center"><strong>investigators </strong>can only speak <br></p>
<p class="text-center"><strong>ghosts </strong>can only type</p>
<p class="text-justify">The Discord is split up into rooms of a haunted house. <strong>Ghosts </strong>haunt rooms and type their horror into them. <strong>Investigators </strong>explore each room all while narrating the horror to all players. <strong>Ghosts </strong>will reveal parts of themselves by creating new rooms, inspiring horror, and making the house a labyrinth. </p>
<p class="text-justify text-center">This game is for two to twelve players, played over the course of one to three hours.</p>
<p class="text-center"><strong>Credits</strong><br></p>
<p class="text-center">Design by Adam Vass and Will Jobst</p>
<p class="text-center">Writing and development by Will Jobst <br></p>
<p class="text-center">Additional writing by Adam Vass</p>
<p class="text-center"><em>the difference between ghosts and poltergeists</em> by Seb Pines (@smolghost)</p>
<p class="text-center">Cover and layout by Adam Vass</p>
<p class="text-center">playtesting by Adam Bell, Paul J Hodgeson, AE Jonesy, Simon Moody, and Viditya Voleti<br></p>
<p class="text-justify"><br><strong>Early Access</strong><br>This game is in early access, and will be updated, expanded, and released in winter 2021. With your support, we will be able to dedicate more time and money toward developing this game. <br><br><strong>Physical Edition<br></strong>The updated and revised edition of <strong><em>This Discord Has Ghosts in It</em></strong> will be coming this winter! <strong>This is a free update for everyone who downloaded this game. <a href="https://goodluckpress.co/products/ghosts" rel="nofollow noopener" referrerpolicy="origin">Preorder the physical version here</a>. <br><br><img src="https://img.itch.zone/aW1nLzY5NzkwOTAucG5n/original/E9F8fL.png" loading="lazy"></strong><strong><br></strong></p>
<p>What's going to be included in the full release of the game?
</p>
<ul><li>Revised and expanded rules: thanks to the feedback from players, adding requested features and text changes to make this game even quicker to pick-up-and-play
</li><li>New game modes: from found-footage horror to Scooby-Doo goofiness, we're including some alternate game modes and setups for a wider variety of experiences
</li><li>Readymade haunted houses: new layouts and rules options for haunted houses to emulate different sorts of horror experiences
</li><li>Essays: new content from horror writers on the nature of the genre to widen and deepen your haunted house experience
</li><li>Music: atmospheric soundtracks for your hauntings
</li><li>DIY guide: tips and options for making your own hack of this game
</li><li>and more!
</li></ul><p>Everyone that downloaded this game, including those who grabbed a free copy, will get access to the complete version of the game. </p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjEwNDU4LzMyNDU2ODYucG5n/original/onWs3q.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEwNDU4LzMyNDU2ODcucG5n/original/qi6ETF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjEwNDU4LzMyNDU2NTAucG5n/original/vBoP3%2F.png]]
<p class="text-center"><em>You are part of the Mount Qaf Exploitation Project. Months ago, your corporate backers discovered something marvelous. Something miraculous. A method to tunnel into another realm, into the legendary Mount Qaf, the barrier between the worlds of man and djinn. An opportunity to connect with another species! To leapfrog our understanding of metaphysics! History! Ourselves! A thing with unlimited potential to advance the human condition!</em></p>
<p class="text-center"><em>Naturally, you started doing horribly unethical science experiments and bickering over funding. This will probably kill you, and it’ll probably suck, but that isn’t important.</em></p>
<p class="text-center"><em>What is important is this: When they pick over the ruins of this horrorshow, you will have named the creatures gnawing at your bones.</em></p>
<p>This Is My Final Recording is a rules-light game that aims to create the apocalyptic logs so common in video games and found footage media. You play the employees of the Mount Qaf Exploitation Project as your capitalistic over-reach results in terrible and unknown creatures that try to murder you. It is designed to be easily playable through the restrictions of social distancing guidelines, with letters, emails, and text communications all valid modes of play.</p>
<p>My logo was made by DadasDesigns.</p>
[img width=500 [https://img.itch.zone/aW1nLzMxNDgyMzQuanBn/original/ek2y8c.jpg]]
<p>Help panda re-stack her building blocks blown over by the wind with your block stacking and problem solving!<br></p>
<p><strong>GAME PLAY FEATURES</strong><br>+ Over 50 levels of varying difficulty<br>+ Blocks stack and topple with realistic physics<br>+ 7 shapes and 6 colors keeps the game and patterns interesting<br>+ Ability to skip ahead or jump to a random level<br>+ Stacking building blocks is fun!</p>
<p><strong>LEARNING FEATURES</strong><br>+ Self-paced game play, low pressure, high enjoyment for young children<br>+ Find your own way to make space, sort and stack the blocks<br>+ Panda animation and musical cues provide feedback on progress<br>+ Game play promotes pattern recognition, shape and color matching and problem solving</p>
<p><strong>PLATFORMS</strong></p>
<p><strong>MacOS</strong>: 64bit 10.9 and above. Tested on 10.12.</p>
<p><strong>Windows</strong>: 64bit Windows 7 and above. Tested on Windows 10.</p>
<p><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/dBJxhIAeEGA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTczODAyLzgxMDI0OS5qcGc=/original/mK%2F7%2F3.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTczODAyLzgxMDI0OC5qcGc=/original/mCcjpM.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTczODAyLzgxMDI0Ny5wbmc=/original/BDAKEH.png]]
<p>A series of contrived and incredibly stupid accidents lead to Tabithia Knight (Tabby) and her friends Trixie and Nikita ending up trapped inside a barrow! When a dark presence reveals itself it is up to Tabby to get her friends out of there alive!</p>
<p>This story follows on from the events of <em>The Testimony of Trixie Glimmer Smith (<a href="https://digital-poppy.itch.io/trixie">https://digital-poppy.itch.io/trixie</a>)</em>, but should still be enjoyable as a standalone adventure!</p>
<p>Three Lesbians in a Barrow is around 2 - 3 hours long, if you want to play all the content.</p>
<p><strong><em>Features</em></strong></p>
<p><strong>Uncover the Past, Dig Through Rubble and Procrastinate:</strong></p>
<p>
</p>
<ul><li>The barrow is a place with a strange and terrible history. Tabby can uncover glimpses of it by investigating various texts in and around the barrow.</li><li>Or you can just read 'The Eyes in the Dark', the hit pulp novel by Penny Hazel Lovelace.</li><li>Tabby only has limited time to uncover the secrets of the barrow. She best choose what she investigates wisely!</li><li>There are three ways to escape the barrow, with minor twists on each.</li></ul>
<p><strong>Three Lesbians*:</strong></p>
<ul><li>The game stars Tabby, and her friends Trixie and Nikita (the stars of <em>The Testimony of Trixie Glimmer Smith</em>). They don't always get on all that well, but maybe they can all bond during their confinement in the Rot Prison?</li><li>The game also has a host of side characters hidden in the barrows many ancient (and less ancient) texts.</li></ul>
<p><strong>A Barrow:</strong></p>
<p>
</p>
<ul><li>Set in a world of anthropomorphic animals, magical birds and long dead snake people, Tabby delves into the history South Anglia centring around the barrows oldest resident, Everrot Timedust.</li></ul>
<p><strong>Content Warnings:</strong></p>
<p>Three Lesbians in a Barrow contains descriptions of violence, horror, implied sexual content and some bad language.</p>
<p><em>* One lesbian, one bisexual and an academic with lesbian characteristics</em></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzk4OTA0LzIxMTg0NzgucG5n/original/6Qh%2BCg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4OTA0LzIxMTY1MzIucG5n/original/tgIz%2F7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4OTA0LzIxMTY1MzEucG5n/original/cPMvVm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4OTA0LzIxMTg0NzcucG5n/original/t5ySZM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzk4OTA0LzIxMTY1MzMucG5n/original/HDIZX4.png]]
<h3>A visual novel about a man experiencing his family relationships through a state of compressed time.</h3>
<h4>In Throw Me in the River, each scene takes place 20 years apart and examines the state of Joseph's life in Canada at that time through conversations he has with his various family members.</h4>
<p></p>
<h4>Key Features:</h4>
<ul><li>A captivating story about personal family relationships and regrets with a sci fi twist</li><li>High resolution art with detailed, expressive characters and a cinematic flair</li><li>Choices that shape who the characters are and how they are regarded in the world of the game</li><li>Galleries containing developer commentary on each scene giving a behind-the-scenes look at the making of an indie game</li><li>Returning characters and events that run alongside <a href="https://side-group.itch.io/waiting-for-the-loop">Waiting for the Loop</a></li></ul>
<h4>For more information visit <a href="http://www.sidegroupgames.com" rel="nofollow noopener" referrerpolicy="origin">Side Group's website</a></h4>
<iframe width="720" height="450" src="https://www.youtube.com/embed/jDePBFF_Gho" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzUzNjEzLzQyNzA4NjYuanBn/original/rKEd9r.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzUzNjEzLzQyNzA4NjQuanBn/original/v0xCfk.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzUzNjEzLzQyNzA4NjUuanBn/original/Z2F13r.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzUzNjEzLzQyNzA4NjMuanBn/original/9wUt5J.jpg]]
<p>Your players live in a highly advanced town filled with brilliant scientists and a state of the art super-collider, that seems to be having an issue. Now the day keeps resetting, and your players are the only ones that seem to be aware of it. Can they find the answer to why the day is resetting, or are they doomed to relive this day forever?</p>
<p>Gameplay can be gotten into in as little as 15 minutes, and all that's needed is one 10 sided die to play, and one optional 6 sided die to roll for character creation if desired. Works for groups of players ranging from 3 and up (including game master) and of any age or experience level. It can be played in person, or over voice or video call. Games can range from 2-4 hours.</p>
[img width=500 [https://img.itch.zone/aW1nLzQ3MDg1NzQuanBn/original/LgcjkP.jpg]]
<p class="text-center"><a href="https://apps.apple.com/us/app/tic-tac-crow/id1554598446" rel="nofollow noopener" referrerpolicy="origin">Tic-Tac-Crow is also available on iOS! My first mobile game! <3</a><br></p>
<h3 class="text-center"><em>what is this?</em></h3>
<p>This is a little ambient bird garden simulator that evolves as you play. Birds come and go, and in the meantime you can play tic-tac-toe with them:<br></p>
<ul><li>Sparrows.</li><li>Crows. <em>(my favourite.) (plus a special crow that might be a raven?)</em></li><li>Flocks of pigeons.</li><li>Sulphur-crested cockatoos.</li></ul>
<p>Also a<strong> goose</strong> will be added soon in an update! If you have any requests, please let us know in the comments what other birds you'd love to see :)<br></p>
<p>And, though we don't have a video up yet, the game has very nice subtle ambiences and the sounds of little pitter-pattering, wings flapping, tweeting, cawing, and crowing for you to enjoy, even when you don't feel like playing a game of tic-tac-toe.<br></p>
<h3 class="text-center"><em>p.s. the nemesis system</em></h3>
<p>If you're reading this, <a href="https://patents.google.com/patent/US20160279522A1/en" target="_blank" rel="nofollow noopener" referrerpolicy="origin">the Nemesis system patent</a> is in effect (or is just about). When I set out to make a game for the Nemesis Jam, I really wasn't expecting to find the document so educational and inspiring.</p>
<p>The working title for <em>Tic-Tac-Crow</em> was <em><a href="https://itch.io/jam/nemesis-jam/topic/1217008/my-tic-tac-toe-nemesis-is-a-sulphur-crested-cockatoo-belated-devlog" target="_blank">"My Tic-Tac-Toe Nemesis is a Sulphur-Crested Cockatoo!"</a></em>; it was made for the <a href="https://itch.io/jam/nemesis-jam" target="_blank">Nemesis Jam</a>, a prompt to "make something in any way regarding this system." So, I made a game about birds with individual traits and parameters <em>(My system calls them STATS and QUIRKS)</em> that change in response to player action and other things... and we crafted a living, breathing world out of this dynamic. Birds play against each other, and you can see their individual personalities in motion!
</p>
<p>There's no way to explicitly view these in-game (you can dig through the save file, it's pseudo-plaintext), but STATS are numerical values that every bird has (e.g. their hidden <em>level</em> is directly related to how good their Tic-Tac-Toe-playing AI is), while QUIRKS are pairs of triggers and reactions.</p>
<p>e.g.</p>
<ul><li>When my opponent cheats, I cheat back.</li><li>When the player joins my table, I make a happy noise.</li></ul>
<p>I think this all combines to create a great sense of individuality between birds, and it's something I'd like to continue using in future projects - as well as continue to work on this one.</p>
<p>I don't even know if what I've developed constitutes patent infringement or not, and it's frustrating to imagine a future where game design is fraught with this type of worry.</p>
<p>There's not much I can do about patent law, but maybe this tiny protest will make a tiny difference.</p>
<p><em>(Also, I'm publishing it on the App Store soon, which will hopefully serve to lend it extra legitimacy!)</em><br></p>
<h3><em>who made this?<br></em></h3>
<p>droqen</p>
<p>h heron</p>
<p><del>redacted<br></del></p>
<p>also, thanks to everyone in my <a href="https://discord.gg/GndqqqjAHU" rel="nofollow noopener" referrerpolicy="origin">playtest discord</a> & to <a href="https://www.patreon.com/droqen" rel="nofollow noopener" referrerpolicy="origin">my 27 lovely patrons</a>!<br></p>
<p></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTMxMTk1LzUyNzY4NjUucG5n/original/wKrK0o.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMxMTk1LzUyNzY5NjAucG5n/original/dw0WzE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMxMTk1LzUyNzY5NjQucG5n/original/tap4BM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMxMTk1LzUyNzY4NTMucG5n/original/s7vuZN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTMxMTk1LzUyNzY3NzEucG5n/original/d0Y80D.png]]
<p>Tile Crusher is a puzzle game where the objective is to eliminate all destructible tiles with the wrecking ball. The catch is that you have a limited number of turns to clear the tiles, and if you run over a previously destroyed tile, it will be restored! Plan your movements before committing to them!</p>
<p><strong>Game Features</strong></p>
<ul>
<li>100 levels</li><li>Six different tile types to give your brain a workout</li><li>Control the ball with either the mouse, directional keys, or WASD</li></ul>
<hr>
<p><strong>UPDATES</strong></p>
<p><strong>1.1 - </strong>Minor change to the buttons, they look a little nicer now.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTc1My8xNTA4NS5wbmc=/original/T10nrC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc1My8xNTA4Ni5wbmc=/original/4Ow8uY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc1My8xNTA4Ny5wbmc=/original/X0oACY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTc1My8xNTA4OC5wbmc=/original/eMNGG3.png]]
<p>The world blurs into shape, and that shape is fractal; a million-million shattered realities, folding into each other like thin sheets of metal forming a single blade, a blade dangling overhead, a temporal Sword of Damocles, smoking with bloody execution. Around you; swirling, churning chaos: a golden staircase, walls of polished marble, etched with mystic runes.</p>
<p>You have little to no memory of where you are, or what has brought you here. The figures at your side are familiar but unrecognized, like staring at your own reflection through a fogged mirror.
</p>
<p><strong>“FOOLS,”</strong> a voice from on high booms. <br><strong>“YOU ARE TOO LATE!”</strong></p>
<p>Far, far above, the Warlock cackles wildly, mantled in coruscating sorcerous power. The ritual nears completion.
</p>
<p><br></p>
<p>TIME KNIFE is a short adventure for Troika! <br></p>
<p>This product is an independent production of The Melsonian Arts Council.</p>
<p>Redistribution without prior written consent is prohibited. Permission is granted to photocopy and otherwise reproduce for personal use. The author retains the right to be identified as such. In all cases this notice must remain intact.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTg4MTg4LzU2MjExMjQucG5n/original/D5PmAV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg4MTg4LzU2MjExMjMucG5n/original/OMhB%2BW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg4MTg4LzU2MjExMjIucG5n/original/ntnW7T.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTg4MTg4LzU2MjExMjAucG5n/original/39NOWW.png]]
<h1>Welcome to the timeweave, Agent</h1>
<p>In <strong>Timespell</strong>, you play elite agents fighting a multi-dimensional Time War originating from an Apotheosis, one of the successful and powerful paradigms at the singularity apexs of the timelines. Each Apotheosis wants its ideals to reign supreme up and down the timestream. <br></p>
<p>You serve on diverse missions to twist and wrestle the time currents to your end. Sometimes you warp in fifteen minutes early to lay waste to two entire advanced orbital battle fleets, bringing cruisers crashing to devastate the planet below, ending a space empire. Other times you infiltrate for the purpose of removing one specific linchpin around which a history evolves: a doctor who develops a necessary vaccine; the anarchist who starts a war. And sometimes you find yourself embedded for a lifetime, subtly pushing an entire people to change to achieve the goals of your Apotheosis.</p>
<p>But—you have a problem. </p>
<p>You might be falling in love with an agent on the other side. You have been receiving letters from them, hidden in sabotaged missions.</p>
<p>###<br></p>
<p>In Timespell, 2-5 players are agents falling in love with other agents in a time war, and one player is the Weaver, a GM-like guide and watcher. Gameplay follows scenes of each agent's deployment to win a moment in time sabotaged by another agent who is leaving a message. The messages increase in emotional intensity until one agent falls in love with another, and then they all try to escape the war. </p>
<h2>From the depths of time</h2>
<p>Timespell is a deep appreciation of <strong><em>This Is How You Lose the Time War</em></strong>, a science fiction epistolary novel by Amal el-Mohtar and Max Gladstone wrapped in the beautiful poetry of the tabletop roleplaying game <strong><em>Wolfspell</em></strong> by Epidiah Ravachol, found at <a href="http://www.worldswithoutmaster.com/" rel="nofollow noopener" referrerpolicy="origin">www.WorldsWithoutMaster.com</a>. Both are advanced pieces of technology stolen from the future and brought back in time and I highly recommend them.<br></p>
<p>This is a first draft of the game currently in playtest. If you do download and try it out, my heartfelt thanks! I'd love your feedback. Your support means I can polish it up.</p>
<p>If you want a download code, let me know and I'll send it to you.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODY1NjU4LzQ4NjE1MjEucG5n/original/S9AC96.png]]
<p>Tiny Terrors has ten teeny creatures inspired by literature and pop culture for your 5e game. </p>
<p>Featuring: </p>
<p>Babble Slug<br>Cheshire Cat<br>Curious Kitten<br>Deaddy Bear<br>Faithful Hound<br>Jackalope<br>Literary Spider<br>Psychic Pig<br>Puss in Boots<br>Tripples</p>
<p>Tripples art by David Markiwsky</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODA2OTUzLzQ1MjI0NTcucG5n/original/oE23gs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODA2OTUzLzQ1MjI0NTkucG5n/original/XUWDEi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODA2OTUzLzQ1MjI0NTgucG5n/original/ne%2Bk96.png]]
<p>Created in one month for the 32-bit Jam, plus an extra 3 weeks for the Spring Cleaning Jam!</p>
<p>A follow up to Pocket Tactics, Titan Tactics is inspired by the awesome tactic games of the 90s. Fight with your allies and uncover the mysteries of the kingdoms of Tyrmyr and Skathi!</p>
<p>Dualshock controls:</p>
<p><img src="https://img.itch.zone/aW1nLzQ1MjI1ODcuZ2lm/original/Z6NnCo.gif" loading="lazy"> : Move cursor</p>
<p><img src="https://img.itch.zone/aW1nLzQ1MjI1ODguZ2lm/original/D5wTSd.gif" loading="lazy"> : Accept</p>
<p><img src="https://img.itch.zone/aW1nLzQ1MjI1ODIuZ2lm/original/OI4nQB.gif" loading="lazy"> : Cancel</p>
<p><img src="https://img.itch.zone/aW1nLzQ1MjI1OTEuZ2lm/original/bQep6f.gif" loading="lazy"> : Menu/End turn </p>
<p><img src="https://img.itch.zone/aW1nLzQ1MjI1OTMuZ2lm/original/4OpBW5.gif" loading="lazy"> : Swap character</p>
<p>L1/R1: Rotate camera</p>
<p><span></span></p>
<p>Options: Pause</p>
<p><img src="https://img.itch.zone/aW1nLzQ1MjI1NzYuZ2lm/original/t%2FfpVW.gif" loading="lazy"><br></p>
<p>Keyboard controls:</p>
<p>Arrow keys: Move cursor</p>
<p>X: Accept</p>
<p>Z: Cancel</p>
<p>S: Menu/End turn </p>
<p>A: Swap character</p>
<p>Q/E : Rotate camera</p>
<p><span></span></p>
<p>Enter: Pause</p>
<p><br>Chat on IRC like it's 1995: <a href="https://freegamedev.net/irc/#titan-tactics" rel="nofollow noopener" referrerpolicy="origin">#titan-tactics</a><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODA1NTYxLzU2NDM3MjIucG5n/original/8qjFY4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODA1NTYxLzU2NDM3MjYucG5n/original/ZMi7Jq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODA1NTYxLzU2NDM3MjUucG5n/original/xuUZnE.png]]
<h3><em>Meet your Maker and Kill Them.</em></h3>
<blockquote><em><strong>That which was Dead refuses to Die.</strong></em> One of the Slaughtered Gods is resurfacing; bringing with them all the terrors of the night as the world warps under their dead weight. Through hidden doorways and between flesh-strewn trees you seek the name of the one who dares haunt this world and, in fantastic ritual, rip them from out of the Veil to face you in grim combat. Wounded, mentally shattered, and bedeviled by a Godcurse you return triumphant to a city whose people have become further twisted by this game of cosmic import. But how long until your mortal body fails you? In what hour shall your will be finally broken? How many divine curses can your soul bear before it shatters?
The embers of chaos still burn and another Fallen God shall surely surface -- and again you shall stand against them until either you, this world, or all the Fallen Gods are Ash and Ember.</blockquote>
<p>Wishlist on Steam! <a href="https://store.steampowered.com/app/1189320/To_Ash_and_Ember/?src=itch" rel="nofollow noopener" referrerpolicy="origin">https://store.steampowered.com/app/1189320/To_Ash_and_Ember/</a><br></p>
<p>Patreon: <a href="https://www.patreon.com/Firgof" rel="nofollow noopener" referrerpolicy="origin">https://www.patreon.com/toashandember</a></p>
<p>Twitter: <a href="https://twitter.com/ToAshAndEmber" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/ToAshAndEmber</a><a href="https://twitter.com/FirgofUmbra" rel="nofollow noopener" referrerpolicy="origin"></a><br></p>
<h3>Features</h3>
<p>To Ash and Ember is a (currently prototype) singleplayer Dark Fantasy Event-based RPG. It plays like a board-game without needing to shuffle decks, set out a board, or read manuals. This is a game of time management and decisions, of who to save and who to sacrifice, and of a City whose windows and streets grow darker and stranger the longer your battles continue.</p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p><li><strong>The Slaughtered Gods leave indelible marks.</strong> Investigators may become as warped as that which they fight: going mad, growing horns, and perhaps even dying and becoming a Wraith. The City's locations may burn, be distorted, or become infested with otherworldly abominations.</li><li><strong>Battle horrors beyond imagination.</strong> In the shadows gleam knives and teeth that shall seek to crush you that their dead God be allowed to return.</li><li><strong>The World forever twists underfoot.</strong> You will routinely encounter World Distortions that change how the game is played or impose restrictions as the Slaughtered God stirs in their astral grave.</li><li><strong>Harden your heart, steel your mind, guard your soul.</strong> Investigators gain Experience from their trials and battles which they can use to level up, gaining Perks and Quirks: advantages that come with disadvantages. The more experienced, the more Complicated.</li><li><strong>Enlighten the World or Burn it.</strong> If all is lost you may abandon a Worldline to its fate and migrate to another. Even if Investigators fall, you can Enkindle new ones to continue the fight against the constant horrors that face this world.</li><li><strong>Fate's cruel but fair dice.</strong> In true board-game fashion, you roll against Fate herself to determine the outcomes of the many tests that face you with six-sided dice; each Investigator has their own strengths and weaknesses.</li><li><strong>This is Your Story.</strong> Game events are presented as mini-narratives with branching paths, opportunities, and perils. Your choices may open up new possibilities -- or seal them.</li><li><strong>Come as you are -- armed to the teeth.</strong> Wield, discover, empower, and sell an array of spells, weapons, and beasts alone or with Companions and Allies as you stand against the Resurrection.</li><p></p><p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p>Currently, this game is a prototype. Donations help offset costs and time required to bring this unique vision of horror to life and your feedback helps shape this world-to-come.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/qj7IWg9guhk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODY0OTY1LzUxOTEyNjgucG5n/original/FxBkwk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY0OTY1LzUxOTEyNjkucG5n/original/wnZW7R.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY0OTY1LzUxOTEyNzAucG5n/original/i571ZO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY0OTY1LzUxOTEyNzEucG5n/original/rP7Iqu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY0OTY1LzUxOTEyNzMucG5n/original/t6kMxx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY0OTY1LzUxOTEyNzQucG5n/original/Ug0Yce.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY0OTY1LzUxOTEyNzUucG5n/original/VSiQML.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODY0OTY1LzUxOTE1MzgucG5n/original/bk340W.png]]
<p>languages: english / 日本語 / deutsch / español / français / 한국어 / 繁體中文</p>
<p>~</p>
<p>TOMATO CLINIC is looking for humans interested in taking a tour of a blood donation clinic! learn a few things about vampire life and vampire culture, and if you want, you can even donate blood at the end of the tour.</p>
<p>~</p>
<p><strong>TOMATO CLINIC</strong> is a visual novel about going on a tour at a vampire blood donation clinic.</p>
<p>play time is ~30 minutes with multiple endings.</p>
<p>for $3 or more, you can support me in my game-making adventures & also receive a digital art collection that includes all art from the game along with design sketches!</p>
<p><a href="https://npckc.booth.pm/items/2081799" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzM1NjY3ODkucG5n/original/dW2DLF.png" loading="lazy"></a><br></p>
<p>collab keychains with furoshiki labo are also available <a href="https://npckc.booth.pm/items/2081799" target="_blank" rel="nofollow noopener" referrerpolicy="origin">HERE</a>!</p>
<p>~</p>
<p>CREDITS:</p>
<p>story/code/art by <a href="https://npckc.site/" rel="nofollow noopener" referrerpolicy="origin">npckc<br></a>music by <a href="https://sdhizumi.bandcamp.com/" rel="nofollow noopener" referrerpolicy="origin">sdhizumi</a> (soundtrack available <a href="https://sdhizumi.bandcamp.com/album/tomato-clinic-original-soundtrack" rel="nofollow noopener" referrerpolicy="origin">here</a>)<br>translation by 鬼怒川 (zh), kyleheren (ko), gudrun palomino & isabel fernández (es), john madness (fr), marshmelieee (de)</p>
<p><iframe style="border: 0; width: 100%; height: 120px" src="https://bandcamp.com/EmbeddedPlayer/album=2539146973/size=large/bgcol=ffffff/linkcol=b0413e/tracklist=false/artwork=small/transparent=true/"><a href="http://sdhizumi.bandcamp.com/album/tomato-clinic-original-soundtrack" rel="nofollow noopener" referrerpolicy="origin">TOMATO CLINIC Original Soundtrack by sdhizumi</a></iframe></p>
<p>special thanks to cloverfirefly & armin!<br></p>
<p>~</p>
<p>other things i've worked on can be found <a href="https://npckc.itch.io/" target="_blank">here</a>! you can comment right here or on <a href="http://twitter.com/npckc" target="_blank" rel="nofollow noopener" referrerpolicy="origin">twitter</a> with your thoughts. </p>
<p>join my <a href="https://patreon.com/npckc" rel="nofollow noopener" referrerpolicy="origin">patreon</a> for secret updates, a monthly digital postcard & early access to my games!</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjAxNzUxLzMxOTg2OTcucG5n/original/JYw0GB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAxNzUxLzMxOTg2OTgucG5n/original/JuOP9%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAxNzUxLzMxOTg2OTkucG5n/original/mspV%2BO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAxNzUxLzMxOTg3MDAucG5n/original/7mUQHA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjAxNzUxLzMxOTg3MDEucG5n/original/7fOfez.png]]
<blockquote>In a tavern near the docks of a small coastal town, a drunk fisherman claims he found the burial place of a religious leader of the long lost Swine Empire.<em> “No doubt it’s full of treasure,”</em> he promises. He scratches a map on the table. <em>“It’s right there, and I haven’t told anyone, except for some Rats who bought me drinks earlier today.”</em></blockquote>
<p>Explore an ancient tomb! Find treasure! Meet rat pirates! Don't get eaten by crocodiles! Or maybe do!</p>
<p>Tomb of the Swine Prophet is a small dungeon for analog adventure games like <a href="https://monkeys-paw-games.itch.io/unconquered-free-artless-edition">Unconquered</a>, <a href="https://yochaigal.itch.io/cairn">Cairn</a>, <a href="http://vanillagame.carrd.co/" rel="nofollow noopener" referrerpolicy="origin">The Vanilla Game</a>, <a href="https://micah-anderson.itch.io/bastards">Bastards</a>, <a href="http://tunnelgoons.com" rel="nofollow noopener" referrerpolicy="origin">Tunnel Goons</a>, and many more.</p>
<p>It can be dropped into most fantasy adventure campaigns and completed in a single gaming session. It is an eleven room dungeon. Five rooms are described, and there is a d20 Random encounter table to describe the other rooms, so the adventure may be different every time it is played. A d12 treasure table and old school creature stats are included.</p>
<p>It can be printed on a single sheet of paper, front and back.</p>
<p><img src="https://img.itch.zone/aW1nLzU0OTIzMDIucG5n/original/g%2Bjqop.png" loading="lazy"><br></p>
<p>This and much more can be downloaded for $2 a month at <a href="http://Patreon.com/HPS" rel="nofollow noopener" referrerpolicy="origin">Patreon.com/HPS</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTY3NzE0LzU0OTIzNDIuanBn/original/WyexH1.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY3NzE0LzU0OTIzNDMuanBn/original/Nlpehl.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY3NzE0LzU0OTIzNDEuanBn/original/gTXE4y.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY3NzE0LzU0OTIzNzEuanBn/original/1SNyPd.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY3NzE0LzU0OTIzNTcuanBn/original/cRNUEe.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY3NzE0LzU0OTIzNTUuanBn/original/YoGaSu.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY3NzE0LzU0OTIzNTYuanBn/original/cPFE%2BW.jpg]]
<p>In a dystopia where wealthy capitalists control elections, media, and the lives of working people, we’re faced with two choices -- accept it or fight for something better.</p>
<p>Tonight We Riot doesn’t have just one hero. Instead, you play as a movement of people whose well-being determines the success of your revolution. It features:</p>
<ul><li>Couch co-op (Online co-op works with <a href="https://parsecgaming.com/features/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Parsec</a>)</li><li>20 unlockable weapons, gear, and perks </li><li>A dog </li><li>Whimsy </li><li>Kaiju </li><li>A wood chipper</li><li>Endless Mode </li><li>Horror Synth</li><li>The unique catharsis that comes from throat-punching a billionaire ghoul who would rather watch the world and everyone on it burn than lose a tax break</li></ul>
<p>Please spend your money on our game, Tonight We Riot.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjM0MzU1LzMzODg5MDkuanBn/original/ugvPVy.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM0MzU1LzMzODg5MTAuanBn/original/zzTYOi.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM0MzU1LzMzODg5MTEuanBn/original/EZpQP%2B.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM0MzU1LzMzODg5MDEucG5n/original/gtm9ZI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM0MzU1LzMzODg4OTMucG5n/original/c3TDn9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM0MzU1LzMzODg4OTYucG5n/original/isAZgT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM0MzU1LzMzODg4OTcucG5n/original/trbEvM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM0MzU1LzMzODg4OTkucG5n/original/wp7GwD.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM0MzU1LzMzODg4OTUucG5n/original/2RVu4o.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM0MzU1LzMzODg5MDAucG5n/original/a%2BEdoI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM0MzU1LzMzODg5MTIuanBn/original/TDM%2B45.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjM0MzU1LzMzODg5MTMuanBn/original/CX59yu.jpg]]
<p>Top of the Table Soccer (TOTTS) is a competitive two-player role-playing game that simulates a game of soccer. </p>
<p>To play this game you need a pencil, eraser and a fist full of six-sided dice. </p>
<p>The mechanics for TOTTS are simple, yet winning a match requires lots of strategy and a dash of luck.</p>
<p>The game is designed to incorporate a role-playing element, which encourages players to weave their own narratives into any given match. The goal of TOTTS is to beat your opponent, but also tell the story of how that happened.</p>
<p>Please rate this game and let me know what you think about it in the comment section below. <br></p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTA4MTQxLzU1NTI0MDguanBn/original/i7%2FiOL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTA4MTQxLzU1NTI0MjAuanBn/original/YVgFuW.jpg]]
<p>TORO is a music toy about an orange matador and a blue bull.<br><br>Move the mouse to maneuver the matador and hold the mouse button to call the bull.<br><br>Lead the bull to the pins but don't let it collide with the boundaries or matador.</p>
<p>This was made for the Locally Sourced Summer Bundle.</p>
[img width=500 [https://img.itch.zone/aW1nLzQwODE4MDMuZ2lm/original/PEvCRJ.gif]]
<p>Total Arcade Racing is a fun 2D top-down arcade racing game where you zip around closed circuits. This game is a tribute to the old classical top-down arcade racing games like Super Sprint, Slicks 'n' Slide and Super Cars. Play solo or with up to 8 friends on the same screen in various game modes.</p>
<p><strong>Features<br></strong>- 6 cars with different performance and handling<br>- 14 Courses<br>- 9 game modes (Arcade Race, Time trial, Championship, Elimination, Endless race, Demolition derby, Survivor, Delivery and Car Hockey)<br>- Local multiplayer with support for 8 players. Max 4 on a single keyboard<br>- Online Leaderboard support<br>- Local ghost car replay of best time. <br>- Classic top-down racing game with great controls.<br>- Game supports keyboard and controllers.</p>
<p><br></p>
<p><strong>Status<br></strong>Total Arcade Racing is still in development, the features above is what is included at the current stage of development, with your feedback and input the goal is to add more tracks and interesting game modes the future.</p>
<p>If you like the game and want to contribute with ideas, concept or just want to hang out please feel free to join our <a href="https://discord.gg/AyYtKXT" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Discord Server</a>. <br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/S6v1X_NMVWg" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDcyNDI0LzI2NTkwMDEuZ2lm/original/56qbFi.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDcyNDI0LzU0NDE0NTEucG5n/original/suZNl2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDcyNDI0LzQ3NTUwMTIucG5n/original/6oRr9m.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDcyNDI0LzQwNTM4NzMuZ2lm/original/%2FP%2BZYT.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDcyNDI0LzU0NDE0NDEucG5n/original/6qFjP%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDcyNDI0LzI4NTE0MTMuZ2lm/original/1n3C6%2F.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDcyNDI0LzU0NDE0NDIucG5n/original/QMQ391.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDcyNDI0LzQ1NDAxOTcucG5n/original/mgPDcV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDcyNDI0LzMxNzk3NDkucG5n/original/aOva%2FX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDcyNDI0LzQ3NTUwMTEucG5n/original/83RVVC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDcyNDI0LzQ1NDQyNTUucG5n/original/jsU%2BFg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDcyNDI0LzMxNzk3NTEucG5n/original/Vco%2F4L.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDcyNDI0LzMzNzg0NTIuZ2lm/original/L6TQBd.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDcyNDI0LzU0NDE0NDcucG5n/original/uDX4uq.png]]
<p>Inspired by classics from the golden age of couch multiplayer, TowerFall Ascension is a 4-player local party game centering around hilarious, intense versus matches. The core mechanics are simple and accessible, but hard to master and combat is fierce. Loot treasure chests for game-changing power-ups, master the art of catching arrows out of the air, or descend on your foes and stomp them into submission. TowerFall is best played competitively with friends, cross-legged on the floor within punching distance of each other.</p><p><strong>Note:</strong> It is highly recommended that you play this game with controllers. TowerFall supports many varieties of controller, including XBox 360 and PS4.</p><p>If you like TowerFall, check out the Expansion Pack: <a href="http://mattmakesgames.itch.io/towerfall-dark-world">TowerFall Dark World!</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/PePm9lYQ038" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjI3NTUvMTAxNDcyLnBuZw==/original/nLMvMA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI3NTUvOTAzODgucG5n/original/Eq6Fcm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI3NTUvOTAzOTMucG5n/original/yJ3%2FMp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI3NTUvOTAzOTAucG5n/original/jYECt3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI3NTUvOTAzOTQucG5n/original/ygbiRk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI3NTUvOTAzOTEucG5n/original/uOCLEJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI3NTUvOTAzOTUucG5n/original/9WrIys.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI3NTUvOTAzOTYucG5n/original/D2N%2F5%2F.png]]
<p>
Challenge your friends to fight through the Dark World, with or against you, in this massive expansion for the acclaimed archery brawler. Through the portal you'll find a wealth of new archers, powerups and arenas. Face an all-new 1-4 player co-op mode, or take the fight to Cataclysm, where levels shift into unique layouts every time you play. A perfect excuse to revisit the beloved indie fighter.
<span></span><br>
</p>
<h3>This is not a stand-alone game!</h3>
<p>
<strong>This is an expansion pack for <a href="http://mattmakesgames.itch.io/towerfall" target="_blank">TowerFall Ascension</a>. </strong><strong>You must own the base game to play TowerFall Dark World!</strong>
</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/HACkGetEWc4" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjQ5NjIvOTk3OTMucG5n/original/%2By0mPd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ5NjIvOTk3OTQucG5n/original/Z%2BygX4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ5NjIvOTk3OTIucG5n/original/5ZlOQv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ5NjIvOTk3ODkucG5n/original/IHneQE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ5NjIvOTk3OTAucG5n/original/qs1hI3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ5NjIvOTk3OTYucG5n/original/%2Bg1iDA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ5NjIvOTk3OTUucG5n/original/fHNZW5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjQ5NjIvOTk3OTEucG5n/original/VSyqqk.png]]
<p><strong><img src="https://img.itch.zone/aW1nLzU0NjAzNDIucG5n/original/gKlOqs.png" loading="lazy"><br></strong></p>
<p><strong>Fast-paced, relentless first-person combat sandbox game full of magic and dinosaurs in a 3D procedural generated world.</strong></p>
<p><strong>Play as an action figure that has landed in a mysterious world. Gain the ability to harness the power of lightning, fight back against hordes of Velociraptors and other deadly creatures. Play your own way, at your own pace. Collect all the protons to win!</strong>
</p>
<h2>Key Features
</h2>
<p><img src="https://img.itch.zone/aW1nLzU0NjAxNzYucG5n/original/9wR7Nm.png" loading="lazy"></p>
<h3>Procedurally Generated Worlds
</h3>
<p><strong>Each game is a new map! Your luck will play a factor into how generous or unforgiving Toy Kingdom will be.</strong></p>
<p><strong></strong></p>
<p><strong><img src="https://img.itch.zone/aW1nLzU0NjAxODIucG5n/original/l15zr%2F.png" loading="lazy"><br></strong></p>
<h3>Combat System
</h3>
<p><strong>Defeat the aggressive threats that aim to assert their dominance on the natural hierarchy.</strong>
</p>
<p><strong><img src="https://img.itch.zone/aW1nLzU0NjAyNTEucG5n/original/EqgHPj.png" loading="lazy"></strong></p>
<h3>Lightning Abilities</h3>
<p><strong><strong>Locate the powerful lightning stone in order to gain the super hero abilities.</strong></strong></p>
<p><strong><img src="https://img.itch.zone/aW1nLzU0NjAyNTMucG5n/original/ExE18i.png" loading="lazy"><br></strong></p>
<h3>Nests and Spawning</h3>
<p><strong>Enemies will spawn and roam naturally over the world, leaving endless amount of chance encounters</strong></p>
<p><img src="https://img.itch.zone/aW1nLzU0NjAyNTgucG5n/original/IcF%2B2U.png" loading="lazy"><br></p>
<h3>Improve Your Home
</h3>
<p><strong>Collect powerful protons and return them to your keep to improve the quality of your home and defenses.</strong>
</p>
<p>
</p>
<p><strong>Win in Toy Kingdom!</strong>
</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/HeyxqvSHNqo" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTYyMzcxLzU0NjAwMTQucG5n/original/F8FnY2.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYyMzcxLzU0NjAyNDUucG5n/original/38RAG1.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYyMzcxLzU0NjAwMTMucG5n/original/MD7Pnb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYyMzcxLzU0NjAyNDcucG5n/original/vlvPLG.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYyMzcxLzU0NjAyNjEucG5n/original/C7Zo5C.png]]
<h3>You wake up.</h3>
<blockquote>Your awakening is slow and feels strange. You must have slept for a long time.</blockquote>
<blockquote>As you float fitfully toward consciousness, you find yourself wondering if there is a word to describe the way one forgets a vivid dream after a long slumber. There really ought to be a word for such a thing.</blockquote>
<blockquote>You plumb the depths of your memory, but can't find it.</blockquote>
<blockquote>Actually, you can't find much of anything.</blockquote>
<p>Traveler is a short work of interactive fiction about identity, existence, purpose, and loss. It features four endings and infinite procedurally-generated planets.</p>
<p>Originally written in 2015 for <a href="http://yearbookoffice.com/lost-in-space-traveler" rel="nofollow noopener" referrerpolicy="origin">The Yearbook Office</a>. Ending song: <em>Romance on Daybreak</em> by Jamie Sandel.</p>
<p>There are <del>three</del> four endings.</p>
[img width=500 [https://img.itch.zone/aW1nLzIzMTMzNzcucG5n/original/bPCZpX.png]]
<p>Everything changes eventually. The world turns and turns again until we’re adults and we’ve forgotten all the most important things, like laughter, wonder, and joy. The responsibilities of life hang on our backs, a heavy weight that pulls away from what’s important. </p>
<p>Today, you’ve said enough. Today you’ll go back and remember what matters. Today you will find treasure and keep it safe.</p>
<p>Treasure Box is a solo game about recalling, creating, and discovering precious memories and feelings from our childhood to save for later. The explorer will wander around their home, thinking of a childhood feeling, then find an item that reminds them of that feeling. The item will be catalogued, placed in a treasure box, and left there for another day.</p>
<p>For those who struggle with childhood memories, accommodations are added.</p>
[img width=500 [https://img.itch.zone/aW1nLzQyMzgwODYuanBn/original/OsSlFd.jpg]]
<p>Using the new Scrub System 1.0, Troupe is...</p>
<ul><li>80 pages, Illustrated.</li><li>A game about travel, discovery, and outsiderness.</li><li>A combination of the best of Old-School and Story Games.</li><li>Very, very weird.</li><li>Has giant killer ducks!</li></ul>
<p>I'm going to be adding more over time including illustrations, formatting, and general content.<br></p>
[img width=500 [https://img.itch.zone/aW1nLzYyOTc1NzMucG5n/original/Et3HoY.png]]
<p>A pamphlet detailing an ethical approach to LeGuinian magic for fantasy games and stories.</p>
<p>Magic systems are more than rules and lore. They have political potential.
</p>
<p>Magic systems inform how we understand the world around us.
</p>
<p>Is the world full of things to be manipulated? To be exploited?
</p>
<p>To exploit the world, we must first reduce it to a level of importance below us.
</p>
<p>How would we justify exploiting things that have their own will?
</p>
<p>Magic systems that center the user and their will over others create hierarchies and rifts between the user and the world, between living beings and dead things, between people and non-people. The real world and its hierarchies and economic systems inform our thinking in this way, so understandably that mode of thought would bleed into our make-believe worlds.
</p>
<p>But what if a magic system didn’t reduce, but instead gave the world agency, and forced us to relate to the things around us, consider their desires, logic, and rights, and confront the consequences of our actions?
</p>
<p>It would make the world more <em>alive</em>.
</p>
<p>This magic system was conceived by Ursula K. Le Guin in her young adult novel <em>A Wizard of Earthsea</em>, in which magic power comes from being recognized and truly known for who one is—by their <em>true name</em>. </p>
<p>Licensed under Creative Commons 4.0 International. Share, remix, commercial or non-commercial. Simply credit me and insert a URL to this page.</p>
[img width=500 [https://img.itch.zone/aW1nLzUzNjQ1NTgucG5n/original/LusIQR.png]]
<p>This has almost 7,000 downloads and has made $23. If you feel it has been worth $20 to you and your work, please throw that my way so I can pay some artists for upcoming projects. I'm removing pay what you want from this because it makes me feel uncomfortable now.<br></p>
<p><br></p>
<p>Here's a tool for designing and playtesting ttrpgs or other physical games. I made this to help myself update my old work, and hopefully it will help others. As far as I know, there aren't any decks made specifically for TTRPGs available elsewhere. I tried to make it applicable to card games and boardgames the best I could, but you may have to ignore a few points that don't apply.<br></p>
<p>If you're unfamiliar with design lenses, they are cards that help you to focus on an important topic across all aspects of the game without getting distracted by other things that need to be done. Each card contains a list of items to contemplate, most often phrased as questions to get you thinking. The goal is not to answer each question so much as it is to use them as a starting point to consider what might need to change. Game design is a massive domain, and each item on a card is approximately a whole twitter thread's worth of theory, so feel free to research a topic if you feel you could learn more about it.</p>
<p><br>There's no particular order you need to use them in, and my recommendation would be to take a break of at least an hour after using each card. If you're not working to a tight deadline, it can be easier to just pick a single card for the day and apply it to however many projects you're comfortable working on in a day.</p>
<p>---</p>
<p>Pricing note: This design tool is now $20. All exceptions to that have been removed.<br></p>
<p>---</p>
<p>The "Crowdfunding" card is based largely on <a href="https://twitter.com/jaceaddax" rel="nofollow noopener" referrerpolicy="origin">Riley Rethal</a>'s <a href="https://metagame.itch.io/punchgo">PUNCHGO!</a> and <a href="https://twitter.com/TrinityKStudio" rel="nofollow noopener" referrerpolicy="origin">Trinity Knot Studio</a>'s <a href="https://trinityknotstudio.itch.io/tks-pre-crowdfunding-checklist">TKS Pre-Crowdfunding Checklist</a>, which are both great resources from <a href="https://twitter.com/kdavidson925" rel="nofollow noopener" referrerpolicy="origin">Ken Davidson</a>'s <a href="https://itch.io/jam/ttrpg-resource-jam">TTRPG Resource Jam</a>.<br><br>This is a submission to TTRPG Resource Jam and Itch.io's Bundle for Racial Justice and Equality.<br> </p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjYyMzA3LzQyMDYyNDgucG5n/original/LGsrXL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYyMzA3LzQyMDYyNTAucG5n/original/OWZZsi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYyMzA3LzQyMDYyNDkucG5n/original/mUbdes.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYyMzA3LzQyMDYyNTQucG5n/original/V0%2ByCB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYyMzA3LzQyMDYyNTMucG5n/original/oD8beo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjYyMzA3LzQyMDYyNTIucG5n/original/NwBhgp.png]]
<p>This was originally a little loop I did for Music Weeklies Fairy Tales challenge.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/SLiqIIuQb_o" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1nLzU2NjI4NjIucG5n/original/GASKuc.png]]
<p>Tumbleblox is a challenging puzzle game in which the player manipulates gravity in order to reach magical, green portals. Play through twenty levels where you place colored boxes on buttons to open gates, avoid spikes, and more!</p>
<p>Tumbleblox is still in development and I plan on adding more levels and updates in the future.</p>
<p>Once you've downloaded the file, unzip it and open tumbleblox.exe.</p>
<p>If you enjoyed the game, or you think it was terrible, please leave a review! I'd appreciate your feedback.</p>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/y7t04MJflMY" frameborder="0" allowfullscreen=""></iframe></div>
<p><a href="https://discord.gg/HYaMYW6VHq" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzU2MTA3MDgucG5n/original/yZcjPx.png" loading="lazy"></a><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/y7t04MJflMY" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjI3ODUwLzM0MDg5MDMucG5n/original/RPwdJK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI3ODUwLzM0MDg5MDIucG5n/original/ZTG9fw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI3ODUwLzM0MDg5MDYucG5n/original/wwYbNJ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI3ODUwLzM0MDg5MDUucG5n/original/%2Bz6Y5L.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI3ODUwLzM0MDg5MDcucG5n/original/KMHkN8.png]]
<p>Turn-Based Champion is a local multiplayer RPG-BoardGame-PartyGame-VideoGame hybrid where you compete against monsters in turn-based battle and your friends in minigames to become the Champ! Master minigames or defeat bosses to stack up your trophies and earn the crown!<br></p><p>***It is HIGHLY recommended to use a controller for this game***</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/bAN8el5JAis" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTkzNTk1LzkwNDYzOS5wbmc=/original/BIJL1X.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTkzNTk1LzkwNDY0MC5naWY=/original/SjD%2BDq.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTkzNTk1LzkwNDY0MS5naWY=/original/A1XWwA.gif]]
const fs = require('fs')
// capitalise .jpg filenames everywhere they're referenced
// fix image relating to file: instead of file-
//const wikiPath = "../tenforwardwiki/www.skynet.ie/_leanaht/mopic/wikinew/";
const wikiPath = "../gsocwiki/www.skynet.ie/_leanaht/gsocwiki/";
var tiddlers = {};
let months = {
"January": "01",
"February": "02",
"March": "03",
"April": "04",
"May": "05",
"June": "06",
"July": "07",
"August": "08",
"September": "09",
"October": "10",
"November": "11",
"December": "12",
}
go();
/*
{
"created": "20210507093048102",
"text": "",
"value": "83",
"title": "Birthdays",
"tags": "Expenses Gifts [[Bank: Monzo]] [[Pot: Gifts]] 💸",
"modified": "20210527095550389"
}
*/
async function go(){
var tiddlers = [];
let rawdata = fs.readFileSync('palestineBundleGames.json');
let games = JSON.parse(rawdata);
//console.log(games);
for (let i=0,j = games.length;i<j;i++){
var game = games[i];
var tiddler = {}
tiddler.title = game.title;
tiddler = addMoreInfo(tiddler,game.moreInfo);
tiddler.url = game.url;
if (game.description){tiddler.text = game.description}
if (game.youtubeUrl){
tiddler.text = tiddler.text + `\n\n<iframe width="720" height="450" src="${game.youtubeUrl}" frameborder="0" allowfullscreen></iframe>`;
}
if (game.screenshots){tiddler.text = addImages(tiddler.text,game.screenshots)}
tiddlers.push(tiddler);
}
saveJsonToFile(JSON.stringify(tiddlers));
}
function addMoreInfo(tiddler,moreInfo){
var keys = Object.keys(moreInfo);
var tags = []
for (let i=0,j = keys.length;i<j;i++){
var key = keys[i];
var twKey = keys[i].replace(/\s+/g,"_")
var value = "";
if (key == "Tags"){
tags.push(convertStringToArray(moreInfo[key]));
continue; // we don't want to make a key/value pair for tags just yet
}
else if (key == "Accessibility"){
value = convertStringToArray(moreInfo[key]);
tags.push(convertStringToArray(moreInfo[key]));
}
else if (key == "Inputs"){
value = convertStringToArray(moreInfo[key],true);
tags.push(convertStringToArray(moreInfo[key]));
}
else if (key == "Authors"){
value = convertStringToArray(moreInfo[key],true);
tags.push(convertStringToArray(moreInfo[key]));
}
else if (key == "Accessibility"){
value = convertStringToArray(moreInfo[key],true);
tags.push(convertStringToArray(moreInfo[key]));
}
else if (key == "Platforms"){
value = convertStringToArray(moreInfo[key],true);
tags.push(convertStringToArray(moreInfo[key]));
}
else if (key == "Published"){
value = moreInfo[key];
tiddler.created = convertDateToTW(moreInfo[key]);
tiddler.modified = convertDateToTW(moreInfo[key]);
}
else if (key == "Category"){
value = moreInfo[key];
tags.push(value);
}
else if (key == "Status"){
value = moreInfo[key];
tags.push(value);
}
else if (key == "Author"){
value = moreInfo[key];
tags.push(value);
}
else if (key == "Genre"){
value = moreInfo[key];
tags.push(value);
}
else if (key == "Average session"){
value = moreInfo[key];
tags.push(value);
}
else{
value = moreInfo[key];
}
tiddler[twKey] = value;
}
tiddler.tags = tags;
return tiddler;
}
function addImages(text,urls){
text = text + `\n\n`;
for (let i=0,j = urls.length;i<j;i++){
var url = urls[i];
text = text + `[img width=500 [${url}]]`;
}
return text;
}
function pad(n, width, z) { // https://stackoverflow.com/a/10073788
z = z || '0';
n = n + '';
return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
}
function convertDateToTW(date){
//console.log(date);
// var regex = /(\d+):(\d+), (\d+) (\w+) (\d+)/
console.log(date);
var regex = /(\d\d) (\w+) (\d\d\d\d) @ (\d\d):(\d\d)/
var regexedDate = date.match(regex);
var hour = regexedDate[4].toString();
var minute = regexedDate[5].toString();
var date = pad(regexedDate[1],2).toString();
var month = months[regexedDate[2]].toString();
var year = regexedDate[3].toString();
var twDate = year + month + date + hour + minute + "000";
console.log(twDate);
return twDate;
}
function capitaliseFirstLetter(string){
return string.charAt(0).toUpperCase() + string.slice(1);
}
function convertArrayToTWArray(arr){
var finalTags = "";
for (let i=0,j = Array.length;i<j;i++){
var item = arr[i].trim();
finalTags = finalTags + ` [[${item}]]`;
}
return finalTags;
}
function convertStringToArray(string,twArray=false){
var finalArray = []
if (!string.includes(",")){finalArray.push(string)}
else{
finalArray = string.split(",");
}
if (twArray){
return convertArrayToTWArray(finalArray);
}
else{
return finalArray;
}
}
function convertTiddlerObjectToArray(tiddlers){
var finalArray = []
for (tiddler in tiddlers){
finalArray.push(tiddlers[tiddler]);
}
return finalArray;
}
function saveJsonToFile(json){
//let data = JSON.stringify(student);
fs.writeFileSync('tiddlers.json', json);
}
<p><em>You and your partner stand against a terrible Crisis. </em><em></em><br></p>
<p><em>It shouldn’t have been anything new; the two of you had surpassed many hardships before, and forged a bond stronger than steel together. Together, you were supposed to be powerful.</em><em></em><br></p>
<p><em>But this time, things went horribly wrong. Even with your strengths combined, your last battle was certain to end in your defeat.</em><em></em><br></p>
<p><em>And so, your partner made the ultimate sacrifice: they sent you back to safety, while they stayed to fight the Crisis alone.</em></p>
<p><em></em><br></p>
<hr>
<p>
<br><br><strong>Two Stand To Fall</strong> is a solo storytelling game about people who would sacrifice for each other, in the face of a world that seeks their destruction. <br></p>
<p>Perhaps they live, in spite of the world. Perhaps they die, and are forever separated.</p>
<p>But there is a chance you both will come out alive. Therefore, you must try. <br></p>
<p><br></p>
<p>Play involves moving across a map and answering prompts as you travel. Your answers will slowly flesh out the world around your character: who they are, who their partner is, why this bond is so important — and inevitably, why they would throw away their hard-won safety to challenge the Crisis once more.<br></p>
<p>In order to play, you need: <br></p>
<ul><li>Playing cards </li><li>One or two six-sided dice </li><li>A token, such as a coin or a chess piece </li><li>A journal, to record your past and your actions as you play </li></ul>
<p><br></p>
<p>This game was created by <strong>Amorphous </strong>(<a href="https://amorphic.space/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">website</a>, <a href="https://twitter.com/_morphous" target="_blank" rel="nofollow noopener" referrerpolicy="origin">twitter</a>) and <strong>Empwnleon </strong>(<a href="https://twitter.com/empwnleon" target="_blank" rel="nofollow noopener" referrerpolicy="origin">twitter</a>). It was originally made for <a href="https://itch.io/jam/carta-jam" target="_blank">Carta Jam</a>, and is based on the <a href="https://peachgardengames.itch.io/carta-srd" target="_blank">Carta SRD</a> by Cat McDonald and <a href="https://peachgardengames.itch.io/" target="_blank">Peach Garden Games</a>. </p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMjkyNC81ODMzMTc5LmpwZw==/original/G989dm.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMjkyNC81ODM3NTcxLnBuZw==/original/wVt6tK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMjkyNC81ODM3NTcyLnBuZw==/original/AIY7I0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMjkyNC81ODM3NTcwLnBuZw==/original/Fin6fd.png]]
<p>Tyrants is a 1v1 battle card game played with a standard deck of playing cards.<br><br>Players take turns playing cards from their hands to the field to eliminate their opponents royal cards. The first player to eliminate all of their opponents royal cards wins!</p>
<p>The rules sheet can be found here for both full page print out and mobile friendly versions<br></p>
<p>Tyrants can also be played in Tabletop Simulator! <a href="https://steamcommunity.com/sharedfiles/filedetails/?id=2409015321" rel="nofollow noopener" referrerpolicy="origin">https://steamcommunity.com/sharedfiles/filedetails/?id=2409015321</a></p>
<p>Also a custom card deck styled for Tyrants can be found here: <a href="https://www.makeplayingcards.com/sell/phillipcorrado" rel="nofollow noopener" referrerpolicy="origin">https://www.makeplayingcards.com/sell/phillipcorrado</a><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTgwNTI3LzU1NzI1NDMucG5n/original/mhfZQf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTgwNTI3LzU1NzI1NDUucG5n/original/xUwIof.png]]
<p>Follow the journey of Camille, a frog who dreams of becoming a ballet dancer! Help Camille to overcome everyday struggles, like breakfast, dancing or making friends.</p><p><br>"Un Pas Fragile" is a short interactive experience. This narrative game is designed for all ages (no text) and features slices of life chaining in an unexpected way.<br><br>• Play time – approx. 10 minutes<br>• Independent Games Festival 2017 – Best Student Game + Honorable Mention for Visual Arts</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/SRZW0papzo8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDQyMjA4LzIyMjU5MDcuanBn/original/Gh2mzK.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQyMjA4LzIyMjU5MDYuanBn/original/sErBdY.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQyMjA4LzIyMjU5MDkucG5n/original/dFFPy6.png]]
<h1>A young girl learns a song. </h1>
<p>UNBEATABLE [white label] is an episodic side-story demo set in the world of UNBEATABLE.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/AxjBkJLVNk4" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTY1NDE2LzU4OTU0NTIuanBn/original/1zQgBn.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY1NDE2LzU4OTU0NTguanBn/original/zxpZ8U.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY1NDE2LzU4OTU0NTMuanBn/original/lmskqI.jpg]]
<p><em>Includes instrumentals for tracks 2-8 as bonus tracks.</em></p>
<p>UNBEATABLE: DEMO TAPES is the official soundtrack for UNBEATABLE [white label] - a special episode set in the world of UNBEATABLE. We will be updating DEMO TAPES with new music each time [white label] is updated, so please check back regularly!<br><br>You can play UNBEATABLE [white label] here:<br><a href="https://dcellgames.itch.io/unbeatable-white-label">https://dcellgames.itch.io/unbeatable-white-label</a><br><br>DEMO TAPES is separate from the final UNBEATABLE soundtrack, which will be released when UNBEATABLE is complete. All mixes presented in DEMO TAPES are not final and are subject to change in the full game.</p>
[img width=500 [https://img.itch.zone/aW1nLzYxMjg2NjQuanBlZw==/original/rNZdLE.jpeg]]
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/-xS2XRP6ups" allowfullscreen="" frameborder="0"></iframe></div>
<p><br></p>
<iframe style="width: 500px; height: 281px" src="//www.youtube.com/embed/BoetX9BOUDc" allowfullscreen="" frameborder="0"><br></iframe>
<h1>Description:</h1>
<p>Underhero is a 2D side-scroller RPG adventure game with turn-based combat… without the turns! Precisely timed actions are your most powerful weapons. It tells an intriguing and mysterious story, full of silly characters brimming with personality, quirky dialogue, and lots of weird humor.<br></p>
<p>Inspired by Paper Mario and other Nintendo RPGs. It tells the story of a world where the chosen hero has failed and an underling of the main villain takes his place as the new “hero”. Join Elizabeth IV and the little Masked Kid as they journey across the Chestnut Kingdom to defeat your evil boss, Mr. Stitches! Meet friends, foes and other weird characters in the mysterious world of Underhero.</p>
<p><strong></strong></p>
<p><strong></strong></p>
<p><strong></strong></p>
<p><strong></strong></p>
<p><strong></strong></p><strong>
<h1>Features:</h1>
<ul><li> Turn-based combat with a twist: <strong>there are no turns!</strong> Use your reflexes to <strong>evade,</strong> and your timing to <strong>attack</strong> or <strong>parry!</strong> We call it <em>timing-based combat.</em>
</li><li> A sidescrolling RPG adventure full of beautiful pixel art and cartoony aesthetics.
</li><li> A wonderful original soundtrack composed by <strong>Stijn van Wakeren.</strong>
</li><li> Enemies consider you their ally, so talk to them in-battles for tips, jokes, and lore!
</li><li> Hit enemies with the beat of the music for <em>Groovy~</em> critical hits! </li><li> Explore worlds sprinkled with many hidden secrets.
</li><li> Fun and intense boss battles!
</li><li> <em>A story shrouded in mystery, with many twists and turns…</em></li></ul>
<ul><img src="https://img.itch.zone/aW1nLzE0NjY5MjQucG5n/original/yuA0Jd.png" loading="lazy"><br></ul>
</strong><p><strong></strong><br></p><p><strong></strong><br></p>
<p><strong></strong><br></p>
<p><strong></strong><br></p>
<p><strong></strong><br></p>
<p><strong><em>**Seizure Warning** </em><strong><br></strong></strong><em></em><em>Certain moments in the game contain flashing lights and/or imagery that may cause discomfort or seizures for those with photosensitive epilepsy.</em><em></em><strong><br></strong></p>
<p>////</p>
<table><tbody></tbody></table>
<h4><strong>Important links below!</strong></h4>
<h4></h4>
<p><strong></strong></p>
<p><strong></strong></p>
<p><strong></strong></p>
<p><strong></strong></p><strong>
<p> <a href="http://underherogame.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Website</a> - <a href="http://underherogame.com/presskit" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Presskit</a> - <a href="http://store.steampowered.com/app/573320/Underhero/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Steam </a>- <a href="https://gamejolt.com/games/underhero/266877" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Gamejolt</a> - <a href="https://twitter.com/Underherodevs" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Twitter</a> - <a href="https://discord.gg/ukNrGV5" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Discord</a> - <a href="https://underherodevs.tumblr.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Dev Blog<br></a></p>
<h3><strong><a href="https://papercastlegames.itch.io/underhero-art-book" target="_blank">You can get the Underhero Art Book for free right here!</a><br><br>Demo available!</strong><em></em><strong><br></strong></h3>
<ul><li>Only Xbox 360 and Xbox One controllers supported. <strong>(Full game supports key binding and controller remapping options for all controller brands.)</strong></li><li>Windows only.</li><li>Have fun!<strong><em></em></strong></li></ul>
</strong><p><strong></strong><br></p><p><strong></strong><br></p>
<p><strong></strong><br></p>
<p><strong></strong></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/-xS2XRP6ups" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzYwMjkvODQ5NzUxLnBuZw==/original/okCGwM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYwMjkvODQ5NzYyLnBuZw==/original/FfbK8u.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYwMjkvODQ5NzU4LnBuZw==/original/MA4pGr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYwMjkvODQ5NzUzLnBuZw==/original/K5Le8h.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYwMjkvODQ5NzU1LnBuZw==/original/zKRYG%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYwMjkvODQ5NzYwLnBuZw==/original/9Cnp4F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYwMjkvMTQ5MDM0MS5wbmc=/original/JcZB37.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYwMjkvMTQ5MDM0Mi5wbmc=/original/RI1hK7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYwMjkvMTQ5MDM0NC5wbmc=/original/U%2BFYYd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYwMjkvMTQ5MDM0OS5wbmc=/original/OgSYK3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzYwMjkvMTQ5MDM1MS5wbmc=/original/vGhgRP.png]]
<p>Eleven arcane timepieces for your modern d20 tabletop games. From the Tick-Tock Timepiece to the Game Watch of Two-Dimensioning, the Global Repositioning Watch to the Mysterious Watch of the End Times, discover strange new items to grant new character abilities or drive a magical story. Out of print and offline since 2006, this weird little book is back.</p><hr><p style="text-align: center"><strong>Sample: </strong><strong>Watch of Useful Warnings</strong></p><p><em>Now this is a watch that warrants a demonstration. Here, let me put it on and stand with my back to you. Now, pick up that piece of wood and swing it at my head. It's quite all right, just swing it at me. Really try to hit me. Come on, it's very simple... there we are. Hear how the watch beeped just before you swung? That is how I knew when to duck. This watch will warn you any time an attack is directed at you. The price might look high now, but believe me, when it has saved your life for the thousandth time, you will find </em><em>it to be money well spent.</em></p><p>This trendy sports watch is sleekly designed, with digital date and time display. It also has an alarm function. It features an adjustable Velcro strap and a camouflage colour scheme of black, greens, and browns. </p><p><span></span>The watch's unusual power will not become apparent until the wearer is about to be surprised by something threatening. Any time the wearer would be considered flat-footed or surprised by an attack, trap, or otherharmful instance, the watch's alarm beeps just prior to it's occurrence. If the wearer can figure out the precise nature of the watch's effect, he will never be considered surprised or flat-footed against an attack or trap. The wearer will, thus, retain his Dexterity bonus to Defense in most situations where he would lose it.</p><p style="margin-left: 20px"><strong>Type:</strong> Wondrous Item (psionic)</p><p style="margin-left: 20px"><strong>Manifester Level:</strong> 10th</p><p style="margin-left: 20px"><strong>Purchase DC:</strong> 38</p><p style="margin-left: 20px"><strong>Weight:</strong> 0.5 lb.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTQ3OTkvMjQ0OTM0LnBuZw==/original/ay8jA8.png]]
<p><strong>Uno, a newborn lifeform composed of dense steel, buzzy circuits and disjointed, static memories, wakes up, looking through a frosted cerulean ceiling. On its inside drive, weird images, and a text file with instructions. </strong><strong><br></strong></p>
<p><br></p>
<p><strong>The Subject's test has begun. Meet me at the top of the Obelisk.</strong></p>
<p><br></p>
<p><em>"Where am i?"</em> <em> "How did i came into existence?"</em> <em> "For what purpose?"</em> <em>"By the hands of whom?" </em><br></p>
<p><strong><br></strong></p>
<p><strong>Isolated in a hidden point of our universe, the Obelisk is a true wonder land, far from the 01's chains of morality and ethics. A place of true scientific progress and rebellion against the deterministic laws of nature's causality.</strong></p>
<p><strong>There's no other way. All the answers, reasons and a way out, lies at the top. <br></strong></p>
<p><img src="https://img.itch.zone/aW1nLzMzNTAxMTYucG5n/original/owfNgS.png" loading="lazy"></p>
<p>Unobelisk is a solo turn based, exploration game focused on resource management and puzzle solving. <br></p>
<p>With level design inspired by classic Resident Evil games and Metroidvanias, puts the player in the logic circuits of Uno, exploring an obelisk-shaped space station for a path to the top of the structure, where a way out is promised.<br></p>
<p>The not exactly linear progression of the game is blocked by a number of riddles, passwords, keys and the mysterious threat of the primordial ghosts, along with your own Subject brothers and even the 4 scientists themselves.</p>
<p>On the other hand, optional puzzle solving and exploration are rewarded with upgrade modules, that grants better ammo capacity, maximum health boost, greater evasive perfomance or stronger offensive capabilities.</p>
<p><img src="https://img.itch.zone/aW1nLzMzNTAzNzgucG5n/original/o72X9z.png" loading="lazy"><br><em><strong><em><strong><br></strong></em></strong></em>Under normal conditions, the game can be finished between 10 and 20 hours, though finishing in less time is possible by skipping text content or simply knowing your way through the Obelisk. </p>
<p>A Puzzle helper function is available on the options menu for those stuck in Unobelisk. It doesn't skip any puzzle, but hints to solve them gets more obvious in some text files or even on the map.</p>
<p>There's also a challenge difficulty mode if the default one feels too easy. A ranking system exists exclusively for this mode, rating the player's performance based on the final game playtime, number of times healed in restoration devices or the collection of optional modules. <br></p>
<p>Controllers are natively supported. The ones using the DirectInput standard will have problems with button placement but there's a menu option fixing this. <br></p>
<p>While there's only one active dev behind Unobelisk, it uses assets, music, raw graphic materials and others from a number of people that makes their great work available with free licenses. Credits can be seen in the game's options menu.<br><br>Feel free to send feedback, relate bugs, or ask anything in the comments.<br><br><img src="https://img.itch.zone/aW1nLzMzNTAzMDUucG5n/original/cB0xto.png" loading="lazy"><br></p>
<p>This part of the game's description is focused on brazilian players.<br></p>
<p>A página do jogo no Itch.io está em inglês devido ao padrão do site, mas Unobelisk pode ser 100% jogado em português do Brasil, além da língua inglesa.<br><br>Por ser padrão da loja, a versão completa do jogo vai ser vendida em dólar, e não contará com preços regionais. Todos sabemos que o valor atual do dólar é completamente absurdo, por isso <strong>decidi adicionar uma forma de cobrar o jogo mais barato exclusivamente para brasileiros</strong>, por fora do itch.io. Para isso, basta ter uma conta de Picpay e um número de whatsapp.</p>
<p>Como funciona: O preço regional de Unobelisk exclusivo para brasileiros será de <strong>15 R$</strong>. Para comprar dessa forma, basta entrar em contato com o número de whatsapp do desenvolvedor, informar qual a sua conta do picpay, e enviar o dinheiro proposto para a compra do jogo. O desenvolvedor retornará com uma url de ativação do jogo no itch.io, pelo whatsapp.</p>
<p>O que o comprador precisa: <br></p>
<p>1 - Fazer ou possuir uma conta no whatsapp, uma conta no picpay, e uma conta no itch.io.</p>
<p>2 - Entrar em contato com o desenvolvedor (Número do whatsapp logo abaixo) pelo whatsapp, demonstrando interesse em comprar o jogo via picpay, e sanando qualquer dúvida diretamente. É importante entrar em contato antes de mandar dinheiro via picpay, para que tudo fique esclarecido. Eu respondo no whats pelo nick "Dogui".</p>
<p>3 - Com tudo certo no item 2, deposite o valor mínimo de 15 reais na conta de picpay divulgada logo abaixo. É possível depositar mais de 15 reais se quiser ajudar, não irei reclamar, mas é preciso deixar claro que deseja múltiplas chaves caso o deposito seja de 30 reais ou mais.</p>
<p>4 - Espere o desenvolvedor mandar um link com a ativação do jogo, via whatsapp. Se esperou entrar em contato direto comigo, provavelmente não levará mais de 5 minutos para que eu responda com a chave de ativação. Com a conta do itch.io logada no mesmo dispositivo, clique no link passado e ative o jogo pelo próprio itch.io.</p>
<p><strong>Minha conta de Picpay para depositar: <a href="https://app.picpay.com/user/gwdogui" rel="nofollow noopener" referrerpolicy="origin">https://app.picpay.com/user/gwdogui</a></strong></p>
<p><strong>Meu número de whatsapp: +55 48 99108 9766<br></strong></p>
<p><strong>Se preferir, pode me adcionar no facebook e fazer o pedido pelo chat do face: <a href="https://www.facebook.com/dogui.amorim.1" rel="nofollow noopener" referrerpolicy="origin">https://www.facebook.com/dogui.amorim.1</a></strong></p>
<p>Lembrando, essa forma de pagamento é temporária e existe devido a falta de preço regional no Itch.io. Estou planejando lançar o jogo na Steam eventualmente, e deixarei de oferecer esse método de pagamento quando isso acontecer.</p>
<p>Sim, pretendo dar chaves de ativação da Steam para quem comprou o jogo via Picpay. No entanto, para controlar melhor quem terá o direito de recebê-las, vou pedir alguns dados como nome completo na conversa de whatsapp. É importante que me procure (também via whatsapp) para pedir uma chave da Steam em um eventual lançamento na plataforma, pois não posso garantir que vou mandar as chaves sem a consulta direta de cada dono da versão do Itch.io.</p>
<p>Vale lembrar: Ninguém no Brasil precisa comprar pelo preço regional no Picpay. Qualquer brasileiro pode adquirir o jogo da forma comum pelos 12 dólares diretamente no Itch.io, especialmente numa condição financeira boa. O preço regional só existe para deixar o jogo mais barato para brasileiros num momento de crise e dólar altíssimo.<br></p>
<p>Qualquer dúvida, pode postar nos comentários. Não se intimide com comentários em inglês de outras pessoas, pode postar em português sem problemas que vou responder na medida do possível. <br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/ZcZCdi5hgdA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjI2OTk2LzMzNDg5MTIuZ2lm/original/x3KQV0.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI2OTk2LzMzNDg5MTMuZ2lm/original/cNfVbY.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI2OTk2LzMzNDg5MTUuZ2lm/original/ysem1a.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI2OTk2LzMzNDg5MTYuZ2lm/original/EYd3XH.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNjI2OTk2LzMzNDg5MTcuZ2lm/original/4%2FJLi5.gif]]
<p class="text-justify">Untitled Darkness is a short game that deals with depression.</p>
<p class="text-justify">Depression can leave you powerless, feeling there is no way to escape it. While it has you trapped, it only allows you to see its darkness, hiding any light from you.</p>
<p class="text-justify">In the game, you experience someone’s struggle with depression. You witness how it distorts how they feel about themselves as they struggle to escape it.</p>
<p>There are also 2 different possible endings for you to discover.</p>
<p class="text-justify">A few years ago I released a similar themed game about depression. While it was my 1<sup>st</sup> game and wasn’t perfect, I was proud of what I had accomplished. Over the years I have gotten better with art, animation, and general game design. Looking back at it, I felt a need to revisit that game with more mature eyes. </p>
<p class="text-justify">This is a retelling of that game.</p>
<p><br></p>
<p>Controls:<br></p>
<p>Move left or right a and d or <- and -> </p>
<p>interact space</p>
<p>menu escape</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/e2cQZp6zXwY" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzY1MzI4LzQ0NDU4NTEucG5n/original/E%2BGeWL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY1MzI4LzQ0NDU4NTMucG5n/original/bSlPjr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY1MzI4LzQ0NDU4NTQucG5n/original/2QK4ww.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY1MzI4LzQ0NDU4NTUucG5n/original/P3KA9K.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY1MzI4LzQ0NDU4NTYucG5n/original/jknOVE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY1MzI4LzQ0NDU4NTkucG5n/original/HCUTht.png]]
<p><strong>Untitled Ghost Game</strong> is a collaborative storytelling single session game for two to six players and it requires no game master. In it you all play one poltergeist haunting a village that you come up with, explore and wreak havoc on.<br></p>
<ul><li>Bring life to a village as you create buildings and villagers to haunt,</li><li>soothe or intensify a building's energy and create new poltergeists,</li><li>help villagers solve or create their unfinished business and create new ghosts</li></ul>
<p>This game was influenced by games such as <em>Be Fae Do Crimes</em> by Adela Grace, <em>i’m sorry did you say street magic</em> by Caro Asercion, and <em>Fiasco</em> by Jason Morningstar.</p>
<p><strong>Versão em português disponível de graça!</strong><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzkwODAxLzQ0Mjc0NDMucG5n/original/BWdYrN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzkwODAxLzQ0Mjc0NDQucG5n/original/x3AAj6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzkwODAxLzQ0Mjc0NDYucG5n/original/kFbqym.png]]
<p>Gamma, Delta, and Epsilon have seen more than enough to last a life time. They've been given hardly any information on what they are supposed to investigate and are also bringing some fresh recruits along. This situation is all thanks to those in charge trying to solve two problems at once: learn why one of their outposts has ceased communications and also casually try to get rid of a project that has stuck around long after its expected life cycle has ended. </p>
<p><br></p>
<p><strong>Note: </strong>There are side passages that alter text in the main parts of the story<br></p>
<p><br></p>
<p><strong>Content Warning: </strong>Drug use</p>
<p><br></p>
<p>Cover Shard by <a href="https://twitter.com/isaackarth" rel="nofollow noopener" referrerpolicy="origin">@isaackarth</a><br>Thank you to <a href="https://twitter.com/Tambalaya" rel="nofollow noopener" referrerpolicy="origin">@Tambalaya</a> for the proof reading</p>
[img width=500 [https://img.itch.zone/aW1nLzQzMTgzNjQucG5n/original/Jr6RNe.png]]
<p>Usurping Death
is a two player tabletop storytelling game. One player will be playing the blind god death, and the other is a former mortal looking to usurp the laws of this place and achieve a goal.</p><p>The game plays out half like a board game and half like a ttrpg. The player of Death will be manipulating the board and representing their control over their universe, while the Mortal player will be setting scenes to explore the universe and the journey they are on. </p><p>The game builds up to the Final Confrontation once the mortal's goal is clear and believes they can find and squash Death's power. <br></p><p><br></p><p>Usurping Death is a Stellar Remnant, meaning it takes place in the Universe found in the game <a href="https://worldchampgameco.itch.io/necronautilus" target="_blank">Necronautilus</a> by Adam Vass / World Champ Game Co. Go buy it.</p>
<p class="custom_legaltext">Usurping Death is an independent production by Adam Bell and is not affiliated with Adam Vass or World Champ Game Co.
</p>
<p class="custom_legaltext">Original illustrations by Adam Vass / World Champ Game Co. <a href="http://www.worldchamp.io" target="_blank" rel="nofollow noopener" referrerpolicy="origin">www.worldchamp.io.</a></p>
<p class="custom_legaltext">Cover, layout, and writing by Adam Bell
</p>
<p class="custom_legaltext">This game is a hack of <a href="https://adamebell.itch.io/uneasy-lies-the-head" target="_blank">Uneasy Lies the Head</a> by Adam Bell.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzA1ODQ2LzQ4Mjc2NTIuanBn/original/VE3X5U.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA1ODQ2LzQ4Mjc2NTQuanBn/original/LGBqPk.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA1ODQ2LzQ4Mjc2NTUuanBn/original/WKPPfD.jpg]]
<p><strong>Protect the last cities on earth!</strong><br></p>
<p>Every city matters as you attempt to survive for as long as possible. Made with hand drawn pixel graphics and re-imagined for modern monitors, this retro inspired arcade shooter lets you pilot two ships at once. Use the power ups built by the cities to chase your high score.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/zEXR-jW9YeA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzM4MjE1LzQ5MTMzNzMucG5n/original/Sd%2BSKK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzM4MjE1LzQ5MTMzNzQucG5n/original/BS4UnQ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzM4MjE1LzQ5MTMzNzYucG5n/original/gEsv7l.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzM4MjE1LzQ5MTMzNzcucG5n/original/Cq0pa1.png]]
<p>Valiant Quest is a combat-oriented roleplaying game of high adventure and peril. The players take on the role of one or more adventurers and embark upon dangerous quests to obtain gold and build their legends.<br></p>
<p>Valiant Quest has a deep, strategic combat system filled with tension and drama. The game is deeply concerned with spacing and best played with miniatures and a grid.</p>
<p>A challenging mixture of roleplaying game and wargame, even basic encounters in Valiant Quest will often put you in positions where the best move is unclear. As you progress, not only will your characters improve (provided they live), but your own skills will grow too.</p>
<p>You are not owed a story in Valiant Quest, and the Game Mistress is as much an adversary as she is an impartial referee. If you wish to be a hero you will need to be clever, lucky, and when the time calls for it… valiant!</p>
<ul><li>16 unique classes! Over 50 talents to customize your hero! over 100 spells to cast! 60 fearsome monsters to battle! </li><li>Fight deep tactical battles filled with character, cunning, peril, and heart. Combat is made up of several layers of push-your-luck mechanics. There are always ways you can court disaster for an advantage!</li><li>Character progression that keeps you in the moment. Enjoy all the depth of games with dozens of abilities and features without needing to plan builds months in advance!<br>
</li><li>Campaign procedures create a world you can explore freely with no preparation. Take care not to neglect the forces of evil, as villainous factions enact their will upon the map with each passing week!</li><li>25+ pages of optional rules and tips for how to expand Valiant Quest to your heart's content! Including rules for weapons becoming legendary through use, familiars who will assist you in battle, customizing monsters, changing the item list to reflect a different setting, and critical injuries and prosthesis.</li></ul>
<p>Read more about it here <a href="https://rosepulp.wordpress.com/valiant-quest/" rel="nofollow noopener" referrerpolicy="origin">https://rosepulp.wordpress.com/valiant-quest/</a>and join the community at <a href="https://discord.gg/x9eqMcHGpb" rel="nofollow noopener" referrerpolicy="origin">https://discord.gg/x9eqMcHGpb</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjU0MTQzLzU0ODM4ODUucG5n/original/Wfj8qH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU0MTQzLzU0NTkxOTAucG5n/original/AUHtWL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU0MTQzLzU0NTc5MzAucG5n/original/HcTESi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU0MTQzLzU0NTc5MzEucG5n/original/n0ogLq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU0MTQzLzU0NTc5MjcucG5n/original/xksxLN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU0MTQzLzU0NTc5MzIucG5n/original/aNaMMH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU0MTQzLzU0NTc5MjkucG5n/original/gT8xaW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU0MTQzLzU0NTc5MzMucG5n/original/LCvh3F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjU0MTQzLzU0NTkwNzAucG5n/original/8vfv%2F5.png]]
<p>Welcome to the VaporLight Void, a place many Racers find themselves in sooner or later. You don't know how you ended up here and you don't know what to do with yourself. That's fine. You won't find guidance here, but maybe you can find it in yourself. <br></p>
<p><br>No goals. No pre-defined activities. Just your bike, your thoughts, the void and music. <br>So relax, listen to some chill beats and enjoy the act of ephemeral creation.<br><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTczNDc2LzU1MjgwNjMucG5n/original/Trdmgn.png]]
<p><strong>WARNING! THIS IS EARLY ACCESS MODE!</strong><br></p>
<p>The game is mostly feature complete, however:</p>
<ul><li>The tracks are not finalised<ul><li>final tracks may be very different and will have a lot more details and decorations to make them more interesting.</li></ul></li><li>The track editor is not finalised.</li><li>The ships and team designs are not finalised.</li><li>The soundtrack is not finalised.</li><li>There is currently no localisation.</li></ul>
<p><strong>But, the game is still very fun to play and I want to share it with people.<br></strong></p>
<p>Press F9 to save a GIF of the last few seconds. Please share you gifs #vektor2089 !</p>
<p>Please post any issues on the discussion board below.<br></p>
<p>Features:<br></p>
<ul><li>12 super fun impossible looping tracks in different locations.</li><li>4 different speed classes</li><li>5 different ships to choose from with different handling and performance characteristics</li><li>Amazing soundtrack by <a href="http://dubmood.bandcamp.com" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Dubmood</a></li><li>6 different racing teams</li><li>Amazing 60 FPS!</li><li>The latest in adaptive AI for races with up to 12 ships!<ul><li>Adjustable AI difficulty</li></ul></li><li>Time trial mode, race against yourself to improve your time!<ul><li>Watch replays, fast forward, rewind, slow motion.</li><li>Graph of speed over time</li></ul></li><li>4 player split screen local multiplayer!</li><li>Game controller support</li><li>Hotseat multiplayer time trials (a la trackmania)</li><li>In-built track editor</li><li>In-build ship designer</li><li>A whopping 16 colours!</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/6r-PtKRIvgo" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MjAvNjY0NzI3LmdpZg==/original/5uC%2Fj8.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MjAvNjY0MDk0LmdpZg==/original/PD6Fbr.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MjAvNjY0NzMyLmdpZg==/original/RhuWKV.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MjAvNjE5MDA0LnBuZw==/original/Rhv70q.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MjAvNjE5MDA1LnBuZw==/original/T8IAHu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MjAvNjE5MDA3LnBuZw==/original/zVuBER.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MjAvNjE5MDA2LnBuZw==/original/9686JF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MjAvNjE5MDA4LnBuZw==/original/j7NJ9c.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzk2MjAvNjIwMDk3LnBuZw==/original/U5nHx0.png]]
<p><em>Victor's GM-less Oracle</em> is a simple oracle for GM-less solo and cooperative games. It uses a dynamic probability curve to set the tone, urgency, and tension of a situation. From a single roll, players can improvise a scene that addresses the questions that matter most: Are things going our way? Are there setbacks? Is there a crisis? Do we get out of it okay? Does my character get what they want? How could things possibly go wrong?<br></p>
<p><em>Victor's GM-less Oracle</em> is versatile enough to be adapted to any system or setting, and doubles as an effective enemy and NPC A.I. tool.</p>
<p><em>Victor's GM-less Oracle</em> is licensed under a Creative Commons Attribution 3.0 Unported (CC BY 3.0). You are free to share, adapt, and add <em>Victor's GM-less Oracle</em> to your own published commercial or free games and adventures, just by giving appropriate credit to Victor A. Gonzalez and Curse Night, providing a link to the license (this webpage), and indicating if changes were made. </p>
<p><strong>Olivia Hill Rule</strong>: You may not use, share, or adapt this material if you are a fascist, racist, sexist, homophobe, transphobe, or other bigot or reactionary. </p>
<p> <br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjcwNjI4LzM2NTIzMzAuanBn/original/PitccN.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcwNjI4LzM2NTIzMjkuanBn/original/i2d9Af.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcwNjI4LzM2NTIzMzEuanBn/original/fyczuL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcwNjI4LzM2NTIzOTEuanBn/original/LZZDv0.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcwNjI4LzM2NTIzOTIuanBn/original/Aq7qlu.jpg]]
<h2>Nothing to see here except a perfectly ordinary video store.</h2>
<p><br></p>
<p>Video Hole is an ongoing, episodic adventure game series revolving around a series of strange completely normal events that transpire in your local, intergalactic video store. In episode one, it’s business as usual as you navigate your soul-crushing job while solving mysteries and meeting new characters. Of course, things are never quite what they seem in the darkly mysterious world of cross-temporal, hard-format film rental.<br></p>
<h2>Game Features</h2>
<ul><li>Explore a bright and colorful world around the only video store this side of the cosmos.</li></ul>
<ul><li>Interact with a unique cast of characters with over 1,000 lines of unique dialogue.</li></ul>
<ul><li>Uncover the mysteries of this mysterious business by completing tasks for mysterious strangers.</li></ul>
<ul><li>Experience both an overt and ambient story by collecting items based on dialogue choices.</li></ul><p><iframe style="border: 0; width: 100%; height: 120px" src="https://bandcamp.com/EmbeddedPlayer/album=729837668/size=large/bgcol=333333/linkcol=e99708/tracklist=false/artwork=small/transparent=true/"><a href="<a href="https://jofisoft.bandcamp.com/album/videohole-episode-i-ost" rel="nofollow noopener" referrerpolicy="origin">VideoHole" class="redactor-linkify-object">https://jofisoft.bandcamp.com/album/videohole-episode-i-ost">VideoHole</a> Episode: I OST by JofiSoft</a></iframe></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/l4cptbN0zSE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTcxOTk2LzMwMzgyMzIucG5n/original/8%2FSqPA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcxOTk2LzMwMzgyMzMucG5n/original/mTsrlS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcxOTk2LzMwMzgyMzcucG5n/original/HHgbJ%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcxOTk2LzMwMzgyMzUucG5n/original/qYrmcx.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcxOTk2LzMwMzgyMzgucG5n/original/8A1DA6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTcxOTk2LzMwMzgyMzkucG5n/original/cmKv0J.png]]
<p>Race cars in classic motorsport style. Each corner is a chance to outmaneuver the other drivers, every straight a flat out drag race. Fast-paced strategy relies on your reflexes to pull off split second maneuvers. Feel your car's momentum, find the rhythm of the track, and drive like a racing driver. </p>
<p>Guide your car's driving line to take each corner quickly while finding a gap to overtake other drivers. On straights, be quick on your gears and late on the brakes to get to the corner first, always on the edge of spinning or crashing out. Spend an entire lap trying to close the distance to the car ahead, choosing the right corner to make your move. </p>
<p>Other drivers break your rhythm, forcing you to adapt your driving and how you tackle corners. Each track is unique and you have to learn the fastest route through corners and sections. Rain changes your car's behavior while you deal with decreased visibility. With a simple control scheme, victory will come from out-thinking and out-driving everyone else. </p>
<p>Inspired by the classic era of formula racing around the Mediterranean, each environment is a colorful and hand-built racetrack, all alongside an originally produced surf rock soundtrack. </p>
<p>Featuring</p>
<ul><li>Four player local and online multiplayer </li><li>Races award points to compete over a multi-race season</li><li>Single player practice to learn tracks and hone your driving</li><li>Twelve unique tracks and environments</li><li>Simple, three button controls are easy to learn </li><li>Different weather modes to add a twist to driving</li><li>Original surf rock soundtrack</li><li>Stylish Mediterranean locales</li></ul><iframe src="https://www.youtube.com/embed/v1ZlsxixlNY" frameborder="0" allowfullscreen=""></iframe><iframe src="https://www.youtube.com/embed/WyliYVHki0c" frameborder="0" allowfullscreen=""></iframe><p><em>Note: Online play requires Steamworks, but every purchase will come with a Steam key for no extra charge. Redeem the code on Steam and play online as you please.</em></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/v1ZlsxixlNY" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0NjgvNzQ5MTkyLmdpZg==/original/esRl6R.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0NjgvNzQ5MTkxLmdpZg==/original/UjnYBS.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0NjgvNzQ5MTkwLmdpZg==/original/vumrI8.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0NjgvNzQ5MTk3LnBuZw==/original/HedJDV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0NjgvNzQ5MTk2LnBuZw==/original/WewPYw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0NjgvNzQ5MjAwLnBuZw==/original/wcccpm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0NjgvNzQ5MTk4LnBuZw==/original/eOwVCb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzQ0NjgvNzQ5MTk5LnBuZw==/original/RIg6Y6.png]]
<div class="custom-youtube-vid-wrapper">
<div class="custom-youtube-vid">
<iframe scrolling="no" src="https://www.youtube.com/embed/DP6JuC00lwE?autoplay=0&fs=1&iv_load_policy=3&showinfo=0&rel=0&cc_load_policy=0&start=0&end=0&color=white" width="534" height="300" frameborder="0"></iframe>
</div>
</div>
<div class="custom-vignettes-desc">
<p>Vignettes is a unique exploration game without text or characters, where objects shapeshift as you spin them around to wander through a kaleidoscope of different moods and settings.</p>
<p><br>It is an accessible, colorful experience for all to enjoy, filled with playful interactions and hidden secrets.
<br>
</p></div>
<div class="custom-screenshot-list">
<a href="https://polclarissou.com/vignettes/itch/plantHD.png" target="_blank" data-image_lightbox="true" rel="nofollow noopener" referrerpolicy="origin"><img class="custom-screenshot" src="https://polclarissou.com/vignettes/itch/plantPreview.png" loading="lazy"></a>
<a href="https://polclarissou.com/vignettes/itch/statueHD.png" target="_blank" data-image_lightbox="true" rel="nofollow noopener" referrerpolicy="origin"><img class="custom-screenshot" src="https://polclarissou.com/vignettes/itch/statuePreview.png" loading="lazy"></a>
<a href="https://polclarissou.com/vignettes/itch/garboHD.png" target="_blank" data-image_lightbox="true" rel="nofollow noopener" referrerpolicy="origin"><img class="custom-screenshot" src="https://polclarissou.com/vignettes/itch/garboPreview.png" loading="lazy"></a>
<a href="https://polclarissou.com/vignettes/itch/ringHD.png" target="_blank" data-image_lightbox="true" rel="nofollow noopener" referrerpolicy="origin"><img class="custom-screenshot" src="https://polclarissou.com/vignettes/itch/ringPreview.png" loading="lazy"></a>
</div>
<div class="custom-vignettes-desc2">
Here are some neat things you can do in Vignettes:<br><br>
<ul><li>Rescue a stray cat</li><li>Re-enact the moon landing</li><li>Take a selfie on top of a mountain </li><li>Awaken an ancient snake spirit</li><li>Travel back in time</li><li>Conduct biological studies</li><li>And lots more!</li></ul>
</div>
<div class="custom-os-wrapper">
<img class="custom-os" src="https://i.imgur.com/m6mvhsP.png" loading="lazy">
</div>
<div class="custom-vignettes-desc3">
website: <a href="http://vignettesga.me" target="_blank" rel="nofollow noopener" referrerpolicy="origin">vignettesga.me</a><br>
presskit: <a href="http://vignettesga.me/press" target="_blank" rel="nofollow noopener" referrerpolicy="origin">vignettesga.me/press</a><br>
</div>
<iframe width="720" height="450" src="https://www.youtube.com/embed/DP6JuC00lwE?autoplay=0&fs=1&iv_load_policy=3&showinfo=0&rel=0&cc_load_policy=0&start=0&end=0&color=white" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzY5Mjk1LzE4NjAyMTkucG5n/original/MmrIIp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY5Mjk1LzE4NjAwOTAucG5n/original/nQ%2B%2Bcm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY5Mjk1LzE4NjAwOTQucG5n/original/Xxx7Gt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY5Mjk1LzE4NjAwOTEucG5n/original/f4nJgk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY5Mjk1LzE5NDQ4NDIucG5n/original/KDj%2FJk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY5Mjk1LzE5NDQ4NDMucG5n/original/xCSAwk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY5Mjk1LzE5NDQ4NDQucG5n/original/cENsiP.png]]
<p>Village Apothecary is a puzzle game about brewing potions.<br>You are an apothecary, and the villagers need their potions. Get a request, add the ingredients together, and brew the potion. The trick is adding the ingredients in the right order; make a mistake and you'll end up with the wrong result!</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjcyMDQzLzM2NjY1MDQucG5n/original/00FZ9m.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcyMDQzLzM2NjY1MDYucG5n/original/n9QcSd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjcyMDQzLzM2NjY1MDcucG5n/original/zjPxs8.png]]
<p>
Here you are. <br>
This world moves fast, and so do you, but you don't have to. <br>
Have a break, take a breath, relax, and be here among this box full of stuff. <br>
Bask in the sun's rays as they pour through the gaping strips of space, <br>
or reclude into darkness behind a fortified wall of collated slats.
</p>
<p>
This is right now.<br>
This is your life.<br>
This is <strong>VIRTUA BLINDS</strong>
</p>
<p>
<u><em>In cooperation with:</em></u>
<br>
<em>Atmospheric Research & Analysis Institute © <br>
ECO VIRTUAL
™
</em>
</p>
<p><em>version: VanCAF 2017 - Comics <3 Games</em></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/HVPxYe1XFGw" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTk2ODIvNDQ2ODk2LnBuZw==/original/8aBVMa.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk2ODIvNDUwMjU1LnBuZw==/original/c1kTcX.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk2ODIvNDUwMjUzLnBuZw==/original/I7p5cr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk2ODIvNDUwMjU0LnBuZw==/original/wGGK8U.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk2ODIvNDUwMjQ5LnBuZw==/original/fSwbqs.png]]
<p>Rest! presents...<br></p>
<p><img src="https://img.itch.zone/aW1nLzMxNTU4MTIucG5n/original/iUUSnC.png" loading="lazy"><br></p>
<p>Welcome! This is Sound Novel a tiny pack of musical assets. This time music tracks and stingers. These tracks are the perfect fit for most Visual Novel narrative. Used imaginatively they can cover a wide range of events and places.</p>
<p><img src="https://img.itch.zone/aW1nLzMxNTU4MTcucG5n/original/UAlswI.png" loading="lazy"><br></p>
<p><strong>In this pack:</strong><br></p>
<ul><li>5 tracks + 2 stingers.</li><li>A reference document with the name and duration of each piece.</li></ul>
<p>All the pieces in the 2 main audio formats generally used: OGG and MP3.</p>
<p>All the music is ready for looping.
</p>
<p>By purchasing you support the creation of more assets!<br></p>
<p><strong>Listen the tracks of this pack:</strong></p>
<p><iframe style="border: 0; width: 100%; height: 42px" src="https://bandcamp.com/EmbeddedPlayer/album=3090367000/size=small/bgcol=ffffff/linkcol=e99708/track=53848365/transparent=true/"><a href="<a href="http://rest--vgmusic.bandcamp.com/album/sound-novel-visual-novel-music-pack" rel="nofollow noopener" referrerpolicy="origin">Sound" class="redactor-linkify-object">http://rest--vgmusic.bandcamp.com/album/sound-novel-visual-novel-music-pack">Sou...</a> Novel - Visual Novel Music Pack by Rest!</a></iframe></p>
<p><iframe style="border: 0; width: 100%; height: 42px" src="https://bandcamp.com/EmbeddedPlayer/album=3090367000/size=small/bgcol=ffffff/linkcol=e99708/track=3132111040/transparent=true/"><a href="<a href="http://rest--vgmusic.bandcamp.com/album/sound-novel-visual-novel-music-pack" rel="nofollow noopener" referrerpolicy="origin">Sound" class="redactor-linkify-object">http://rest--vgmusic.bandcamp.com/album/sound-novel-visual-novel-music-pack">Sou...</a> Novel - Visual Novel Music Pack by Rest!</a></iframe></p>
<p><iframe style="border: 0; width: 100%; height: 42px" src="https://bandcamp.com/EmbeddedPlayer/album=3090367000/size=small/bgcol=ffffff/linkcol=e99708/track=383286933/transparent=true/"><a href="<a href="http://rest--vgmusic.bandcamp.com/album/sound-novel-visual-novel-music-pack" rel="nofollow noopener" referrerpolicy="origin">Sound" class="redactor-linkify-object">http://rest--vgmusic.bandcamp.com/album/sound-novel-visual-novel-music-pack">Sou...</a> Novel - Visual Novel Music Pack by Rest!</a></iframe></p>
<p><iframe style="border: 0; width: 100%; height: 42px" src="https://bandcamp.com/EmbeddedPlayer/album=3090367000/size=small/bgcol=ffffff/linkcol=e99708/track=389334758/transparent=true/"><a href="<a href="http://rest--vgmusic.bandcamp.com/album/sound-novel-visual-novel-music-pack" rel="nofollow noopener" referrerpolicy="origin">Sound" class="redactor-linkify-object">http://rest--vgmusic.bandcamp.com/album/sound-novel-visual-novel-music-pack">Sou...</a> Novel - Visual Novel Music Pack by Rest!</a></iframe></p>
<p><iframe style="border: 0; width: 100%; height: 42px" src="https://bandcamp.com/EmbeddedPlayer/album=3090367000/size=small/bgcol=ffffff/linkcol=e99708/track=3469963321/transparent=true/"><a href="<a href="http://rest--vgmusic.bandcamp.com/album/sound-novel-visual-novel-music-pack" rel="nofollow noopener" referrerpolicy="origin">Sound" class="redactor-linkify-object">http://rest--vgmusic.bandcamp.com/album/sound-novel-visual-novel-music-pack">Sou...</a> Novel - Visual Novel Music Pack by Rest!</a></iframe></p>
<p><strong>The Stingers:</strong><br></p>
<div><div><iframe style="border: 0; width: 100%; height: 42px" src="https://bandcamp.com/EmbeddedPlayer/album=3090367000/size=small/bgcol=ffffff/linkcol=e99708/track=1640582634/transparent=true/"><a href="<a href="http://rest--vgmusic.bandcamp.com/album/sound-novel-visual-novel-music-pack" rel="nofollow noopener" referrerpolicy="origin">Sound" class="redactor-linkify-object">http://rest--vgmusic.bandcamp.com/album/sound-novel-visual-novel-music-pack">Sou...</a> Novel - Visual Novel Music Pack by Rest!</a></iframe></div><p><iframe style="border: 0; width: 100%; height: 42px" src="https://bandcamp.com/EmbeddedPlayer/album=3090367000/size=small/bgcol=ffffff/linkcol=e99708/track=3892068897/transparent=true/"><a href="<a href="http://rest--vgmusic.bandcamp.com/album/sound-novel-visual-novel-music-pack" rel="nofollow noopener" referrerpolicy="origin">Sound" class="redactor-linkify-object">http://rest--vgmusic.bandcamp.com/album/sound-novel-visual-novel-music-pack">Sou...</a> Novel - Visual Novel Music Pack by Rest!</a></iframe></p><p><strong>About the Collection:</strong><br></p><div>
<p>The main tracks are divided in 3 categories:</p>
<p><strong>-Day Themes (4 tracks)</strong>: ideal general gameplay states. Day time mood. With movement, happy, playful tone.</p><p><strong>-Night Themes (4 tracks)</strong>: ideal general gameplay states. Night time mood. Contemplative, calm, quiet.<br></p><p><strong>-Dramatic Themes (6 tracks)</strong>: ideal for negative or positive dramatic situations.<br></p><p><strong>Also you have:</strong></p><p><strong>-Menu theme</strong>: ideal for a menu or option screens.</p>
<p><strong>-Holy theme</strong>: ideal for church or sacred events.<br></p><p><strong>-Credits theme</strong>: ideal for credits roll, or end of scenes.<br></p><p><br></p><p>And stingers for:<br></p><p>-<strong>Victory: </strong>Ideal when the chapters ends, for succesful conversations, or completed objectives.</p><p>-<strong>Defeat: </strong>Ideal for game over transitions, bad decisions and failed objetives.</p><p><strong>-Doubt:</strong> Ideal for mystery moments, strange dialog selections or surprise events.</p><p>You can find the other packs here:</p><p><iframe frameborder="0" src="https://itch.io/embed/668588?border_width=2" width="210" height="169"><a href="<a href="https://richarrest.itch.io/visual-novel-music-pack-medium-pack">Visual" class="redactor-linkify-object">https://richarrest.itch.io/visual-novel-music-pack-medium-pack">Visual</a> Novel Music Pack // Medium Pack by Richar</a></iframe> <iframe frameborder="0" src="https://itch.io/embed/676260?border_width=2" width="210" height="169"><a href="<a href="https://richarrest.itch.io/visual-novel-music-pack-grand-pack">Visual" class="redactor-linkify-object">https://richarrest.itch.io/visual-novel-music-pack-grand-pack">Visual</a> Novel Music Pack // Grand Pack by Richar</a></iframe><br></p><p><br></p>
<p><img src="https://img.itch.zone/aW1nLzMxNTU4MTkucG5n/original/fMBYsp.png" loading="lazy"><br></p><p>All music was composed by Rest! (Ricardo Cuello)</p>
<p><strong>Liscense:</strong></p>
<p>Sound Novel - Visual Novel Music Pack by Ricardo Cuello is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
</p>
<p><img src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" style="max-width: 100%; background-color: rgb(17, 17, 17)" loading="lazy">
</p>
<p>CC BY-SA 4.0
</p>
<p><strong>What does this mean?</strong><br></p></div>
<p>This means that you can use this music for personal or commercial purposes in one or more titles, you can make musical derivated works from it (remixes, cutting parts, etc) BUT those derivated works get the same license CC BY-SA 4.0 and you must give <a href="https://creativecommons.org/licenses/by-sa/4.0/#" class="" rel="nofollow noopener" referrerpolicy="origin">appropriate credit</a>, provide a link to the license, and <a href="https://creativecommons.org/licenses/by-sa/4.0/#" class="" rel="nofollow noopener" referrerpolicy="origin">indicate if changes were made</a>.</p><div>
<p>When using the music, please put the corresponding credits in your game. Don't be a bad guy. I don't like bad guys... nobody likes a bad guy.</p>
<p>With putting my name is fine.</p>
<p>Aditionally, if you put my webpage, bandcamp site or itchio asset page on the credits, you are the best. I'm going to give you a hug.</p>
<p>AND... if you put also my logo, my god.. you deserve multiple hugs, a coffee, and you will have my eternal gratitude. Thank you!</p><p><strong>Keep in mind that making music that serves for different general purposes, is functional, and that also needs to have cohesion in its entirety, is not an easy task to do. These packs take a hell lot of time to do.</strong>
</p>
<p><span class="" lang="en">Having said this, thank you for your patience and for taking the time to visit this page. I hope you enjoy music.</span></p><p><br></p><p>Resources:</p>
<p><em> My name:</em></p>
<p> Rest! (Ricardo Cuello)</p>
<p><em>My pages:</em></p>
<ul><li> <a href="https://rest--vgmusic.weebly.com/" rel="nofollow noopener" referrerpolicy="origin">https://rest--vgmusic.weebly.com/</a></li><li><a href="https://rest--vgmusic.bandcamp.com/" rel="nofollow noopener" referrerpolicy="origin">https://rest--vgmusic.bandcamp.com/follow_me</a></li></ul>
<p><em>Logo:</em><span></span></p>
<p><img src="https://img.itch.zone/aW1nLzMwNzM5MzcucG5n/original/HFZDbD.png" style="max-width: 100%" loading="lazy"></p>
<p>------</p>
<p>Images used:</p>
<p>Banner Background: <a href="https://teamsalvato.itch.io/ddlc">https://www.renpy.org/</a></p>
<p><img src="https://img.itch.zone/aW1nLzMwNzM4NTAucG5n/original/oRSzKL.png" style="max-width: 100%" loading="lazy">
</p>
<p>If you liked the music you just heard consider following me on social networks to find out about the next releases!</p>
<ul><li>My Bandcamp: <a href="https://rest--vgmusic.bandcamp.com/follow_me" rel="nofollow noopener" referrerpolicy="origin"><span></span></a><a href="https://rest--vgmusic.bandcamp.com/follow_me" rel="nofollow noopener" referrerpolicy="origin">https://rest--vgmusic.bandcamp.com/follow_me</a><span></span></li><li>Twitter: <a href="https://twitter.com/PkRichar" rel="nofollow noopener" referrerpolicy="origin"><span></span></a><a href="https://twitter.com/PkRichar" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/PkRichar</a><span></span></li><li>Youtube: <a href="https://www.youtube.com/channel/UCgpy9Nz1AczqTxoCR5RJA1A" rel="nofollow noopener" referrerpolicy="origin"><span></span></a><a href="https://www.youtube.com/channel/UCgpy9Nz1AczqTxoCR5RJA1A" rel="nofollow noopener" referrerpolicy="origin">https://www.youtube.com/channel/UCgpy9Nz1AczqTxoCR5RJA1A</a><span></span></li><li>Instagram: <a href="https://www.instagram.com/richar_rest/" rel="nofollow noopener" referrerpolicy="origin"><span></span></a><a href="https://www.instagram.com/richar_rest/" rel="nofollow noopener" referrerpolicy="origin">https://www.instagram.com/richar_rest/</a><span></span></li><li>Soundcloud: <a href="https://soundcloud.com/rest-vgmusic" rel="nofollow noopener" referrerpolicy="origin"><span></span></a><a href="https://soundcloud.com/rest-vgmusic" rel="nofollow noopener" referrerpolicy="origin">https://soundcloud.com/rest-vgmusic</a></li></ul>
<p><img src="https://img.itch.zone/aW1nLzMwNzY1MDkucG5n/original/Edo%2BqN.png" style="max-width: 100%" loading="lazy">
</p>
<p><span class="" lang="en">If you liked, there is an album version</span> (Lossless WAV) of this music here:
</p><iframe style="border: 0; width: 100%; height: 120px" src="https://bandcamp.com/EmbeddedPlayer/album=3090367000/size=large/bgcol=ffffff/linkcol=e99708/tracklist=false/artwork=small/transparent=true/"><a href="http://rest--vgmusic.bandcamp.com/album/sound-novel-visual-novel-music-pack" rel="nofollow noopener" referrerpolicy="origin">Sound Novel - Visual Novel Music Pack by Rest!</a></iframe><p><br></p>
<p>Other Packs and soundtracks:</p><iframe frameborder="0" src="https://itch.io/embed/572998?border_width=2" width="554" height="169"><a href="https://richarrest.itch.io/classic-jrpg-music-pack-tiny-pack">Classic JRPG Music Pack // Tiny Pack by Richar</a></iframe><p><iframe frameborder="0" src="https://itch.io/embed/584054?linkback=true&border_width=2" width="554" height="169" style="color: inherit; font-size: inherit"></iframe><br></p><iframe frameborder="0" src="https://itch.io/embed/565774?border_width=2" width="554" height="169"><a href="https://richarrest.itch.io/jazzy-bouncer-soundtrack">Jazzy Bouncer Soundtrack by Richar</a></iframe><p><br></p></div><div><p>Thanks!</p></div></div>
<iframe width="720" height="450" src="https://www.youtube.com/embed/Q4_la_9Jr-A" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTk2MDEwLzMyNzQ2MjAucG5n/original/beiTtk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk2MDEwLzM3Mjk5NDEucG5n/original/Gz6Xh8.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk2MDEwLzM3Mjk5NDIucG5n/original/%2FX67wq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk2MDEwLzM3Mjk5NDMucG5n/original/2T0il3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk2MDEwLzM3Mjk5NDQucG5n/original/ooVkVl.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk2MDEwLzM3Mjk5NDUucG5n/original/xnYJ9Q.png]]
<h1>Void Runner</h1>
<h3>Teleport Through Obstacles In This Fast-Paced Infinite Runner</h3>
<p>In Void Runner, your objective is to survive for as long as you can by avoiding obstacles. In this infinite runner, you <strong>telepor</strong>t instead of jumping. This means you can teleport through obstacles, but be careful, teleport too soon and you might end up in a wall.</p>
<p>Void Runner was created in collaboration with my brother. We were inspired by other infinite runners but wanted to take a different approach to how you avoid obstacles. We hope you enjoy playing Void Runner as much as we enjoyed making it.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/0CpKOwFNvTw" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjI5ODc5LzEwODkwMjgucG5n/original/Klzeyr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI5ODc5LzEwODkwMzEucG5n/original/BEt1So.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjI5ODc5LzEwODkwMzIucG5n/original/xQ4IAl.png]]
<h3>Void Wisp is an ambient arcade runner where you earn points by coming close to obstacles without crashing. </h3>
<p>
You are a wisp. A collection of random energy that has coalesced into a sentient form. You float through the great nothingness that permeates existences, skimming off aether from the whatever that is nearby.
</p>
<p>
The gameplay is simple. You have two buttons; one moves you up and the other lets you glide. Typically you'll be holding the glide button to slow your descent when an obstacle comes near so you can grind along the top or bottom for points. The closer you are the more points you'll earn. You'll crash if the center of the Wisp contacts an obstacle.
</p>
<p>
Below is a short overview of how this game works.
<br>
</p>
<p>
<iframe src="https://www.youtube.com/embed/dCqIOS8YJS4" allowfullscreen="" width="560" height="315" frameborder="0">
</iframe>
</p>
<h2> Features:</h2>
<ul><li>Simple gameplay that’s easy to pick up and hard to master. Designed for both short spurts and long sessions. </li><li>4 Game Modes each with a unique twist.
<ul><li>In Classic Mode you’ll start to lose points the farther you go, so you want to get as many as quickly as possible.</li><li>In Caravan Mode you have one minute to score as much as possible. Crashing will lower the amount of time you have.</li><li>Survival Mode is the most complex mode. A timer is always ticking down but can be refilled by collecting luster and having a high multiplier. The game gets faster and you earn more points the further you make it.</li><li>In Traveler Mode there are 40 premade levels each with 5 goals to complete. You will face unique obstacles not found in the other modes.</li></ul></li><li>Accessibility options that let you customize the game’s looks, controls, and difficulty.
<ul><li>You can change the appearance of the game and character to better suit what makes you comfortable.</li><li>Supports mouse, keyboard, and gamepad. All with fully remappable controls!</li></ul></li><li>Dreamy ambient music that partially reacts to how you play.</li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/dCqIOS8YJS4" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjkyNTcvMzk5Njk1LnBuZw==/original/YpJceA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkyNTcvNDMzMTExLnBuZw==/original/IB1X%2BC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkyNTcvNDMzMTEwLnBuZw==/original/hg8qYo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkyNTcvNDMzMTA5LnBuZw==/original/B5KHG3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkyNTcvMzk5NzA1LnBuZw==/original/rszEx7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkyNTcvMzk5NzA2LnBuZw==/original/j6NwP%2F.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkyNTcvNDMzMTA4LnBuZw==/original/xHdAud.png]]
<p>A short text adventure game I made for Halloween. Enjoy :D</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/S-nAAWQdzeI" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1nLzI3Njg4ODEucG5n/original/XFA%2Bzo.png]]
<p class="text-center"><em><strong>"Journeys begin and end; the story does not."</strong></em></p>
<p class="text-center"><em><strong> -Old Mareman Proverb</strong></em></p>
<p><img src="https://img.itch.zone/aW1nLzM1NTA2MzkucG5n/original/ncoH%2FJ.png" loading="lazy"><br></p>
<p>Much of Marema was destroyed by the Empire of Garen decades ago. The radioactive fallout destroyed most of the tropical rainforests and verdant countryside for which Marema was famous, leaving behind only a desert waste known as “The Deadlands”. <br></p>
<p>Now, two young adventurers prepare to claim their piece of the Deadlands, not realizing that they will soon be swept up in the latest chapter of a struggle that has been playing out for thousands of years; a war for the very future of mankind. </p>
<p class="text-center">And it remains to be seen if they will survive the Volt Age...</p>
<p class="text-center"><strong>------------------------------</strong></p>
<p><strong><u>A Dynamic World with a Rich History:</u></strong></p>
<p>-Learn about the history of Marema, expose the dark secrets of The Reclamation, and uncover a vast struggle between mankind and the gods reaching back thousands of years.<br></p>
<p>-Interact with the world around you in a variety of ways. Pick locks, scrap old machinery, and use tools to take control of your surroundings.<strong><u><em><img src="https://img.itch.zone/aW1nLzQ4MTQ5MTAucG5n/original/a4bUzQ.png" loading="lazy"></em></u></strong></p>
<figcaption><strong><em>A massive continent, begging to be explored...<br><br></em></strong></figcaption>
<p><strong><u>A Story You Can Play at Your Own Pace:</u></strong></p>
<p><strong><u><img src="https://img.itch.zone/aW1nLzE5NDgxNDQucG5n/original/Z0U%2B5%2F.png" loading="lazy"></u></strong></p>
<figcaption><strong><em>The story begins with two adventurers seeking to claim their piece of the Deadlands...<br></em><br></strong></figcaption>
<p>-No quests to save the world at Level 5 here! Take your time learning the nuances of the world as you are eased into a story which grows and advances organically. Most towns will continue to offer new challenges long after you first discover them.</p>
<p>-Level grinders rejoice! New quests and areas will continue to open up as the party's level (and reputation) grows, with optional challenges all the way up to Level 90!</p>
<p>-Two very different paths await you! Save the world, seek the truth, and fight for what you believe...the choice is yours.</p>
<p><img src="https://img.itch.zone/aW1nLzI2NDU0MjcucG5n/original/avVMVN.png" style="max-width: 100%; font-size: 14px; background-color: rgb(255, 255, 255)" loading="lazy"><br></p>
<p><strong><em>Uncover secrets forgotten for hundreds of years as you explore...</em></strong><br></p>
<p><strong><u>A Lively and Unique Cast of Characters:</u></strong><br></p>
<p>-Meet a diverse cast of more than a dozen characters, each with their own reasons for choosing to help (or hinder) the protagonists.</p>
<p>-In addition to their normal abilities, many allies possess passive skills which will let you interact with the environment in new ways or even add unique buffs to the party!</p>
<p><em><img src="https://img.itch.zone/aW1nLzE5NTA5NDkucG5n/original/ChlfMN.png" loading="lazy"></em></p>
<figcaption><strong><em>The tech-savvy Nyla is able to locate valuables the party would otherwise miss...</em></strong></figcaption>
<p><strong><u><br>An Experience Like No Other:</u></strong></p>
<p>-Immerse yourself in an amazing soundtrack featuring works by<strong></strong> Aaron Krogh, J.C. Brickston, Darren Curtis, and world-renowned composer Hiroki Kikuta!</p>
<p>-Battle against over 60 original enemies, ranging from the simple Barrel Sludge to the terrifying Goni, with several hostile factions and nearly a dozen unique human foes to round out the threats your party will face.</p>
<p>-Nearly 400 pieces of gear ranging from swords and shields to sniper rifles and force fields means you can customize your characters to suit your play style.</p>
<p><img src="https://img.itch.zone/aW1nLzE5NDgxNjMucG5n/original/oOWvmx.png" loading="lazy"></p>
<figcaption><strong><em>Unleash powerful abilities on a variety of unique and deadly foes...<br></em></strong></figcaption>
<p class="text-center"><strong>------------------------------</strong></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzkzMjg1LzE5NDc4NDQucG5n/original/1bKKNw.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzkzMjg1LzE5NDc4NDYucG5n/original/NmG1d6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzkzMjg1LzI2NDg0MjcucG5n/original/cS9Nqs.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzkzMjg1LzE5NDc4NDUucG5n/original/juEjQ4.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzkzMjg1LzE5NDgwOTAucG5n/original/Tx2E76.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzkzMjg1LzI2NDg0MjkucG5n/original/WbqnZf.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzkzMjg1LzE5NTA3NzcucG5n/original/Cur1Fd.png]]
<p><em>Available in English and toki pona!</em></p>
<p>Welcome to the world of Voxella! Here we see a young Muigi plopped into the world, with nothing to do but discover. Complete quests for other people, find treasures, explore dark caves and mysterious factories, unlock the secrets of the world and have a friendly conversation with a giant spider! Because, in the world of Voxella, everything is a conversation topic if you try hard enough.</p>
<p>CONTROLS:</p>
<p>WASD to move<br>Esc to open your inventory<br>Shift to run<br>Left click to use items<br>Right click to interact<br>Scroll wheel to switch between items<br>P to use commands</p>
<p>NOTE: Yes, this is another early access beta game. If you would like to report a bug, or you would like to suggest something, you can use the itch.io community page or the Voxella Discord: <a href="https://discord.gg/HYWs3rMWSR" rel="nofollow noopener" referrerpolicy="origin">https://discord.gg/HYWs3rMWSR</a><a href="https://discord.gg/AVcsQP5" rel="nofollow noopener" referrerpolicy="origin"></a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzY5NzQ0LzYzMjEyOTkucG5n/original/wVNtRC.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY5NzQ0LzYzMjEyODEucG5n/original/jNz7Yp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY5NzQ0LzYzMjEyODIucG5n/original/MvE8q3.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzY5NzQ0LzYzMjEyOTUucG5n/original/6QpkCG.png]]
<p><strong><em>Welcome to a virtual kayaking experience!</em></strong></p>
<p>Originally showcased at the 2021 Auckland Indie Games Showcase (and slightly reworked since then), this is a <strong>seated</strong> Virtual Reality sandbox experience where you can travel in your kayak by paddling around!</p>
<p>In this demo, you'll find one of two tasks:</p>
<ul><li>Help a big ducky to find all its lost babies scattered across the map</li><li>Collect trash that's floating around in a big cave and put them in the recycling bin</li></ul>
<p>or you can ignore them entirely, relax on the water and play some tunes from your smartphone's music app.</p>
<p>This game can be played using any SteamVR compatible headset.</p>
<p>This is a hobby project of mine, so maybe this will be the start to a fully released game, or maybe not, who knows.</p>
<p>Have fun and good kayaking! :D</p>
<p><strong>Controls:</strong></p>
<p>Trigger/Grip buttons: Grab objects</p>
<p>Left Menu Button (Vive Wands)/ Left A button (Knuckles)/X Button (Oculus Touch): Recenter Play area</p>
<p><strong>Extra credits:</strong></p>
<p>Logo made by Nathan O'Neill</p>
<p>All music belongs to their respective rights holders and are not mine</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/GmOATibTRyE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA3MDc2Ni82MTY1ODQ1LmpwZw==/original/L98cYb.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA3MDc2Ni82MTY1ODQ2LmpwZw==/original/yj%2BxUE.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA3MDc2Ni82MTY1ODQ5LmpwZw==/original/71%2BJ6i.jpg]]
<p>Help! Everyone has been teleported away randomly! As the heroic Captain Viridian, it's up to you to find your friends, bring them back to safety, and save the universe! <br> <br> VVVVVV is a platform game all about exploring one simple mechanical idea - what if you reversed gravity instead of jumping? <br> <br> The game is designed not to artificially gate your progress. In VVVVVV there are no locks, no power-ups, no switches, nothing to stop you progressing except the challenges themselves.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/sf06P-_1lkU" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MDkvMTI0OTE3LnBuZw==/original/JnUNFV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MDkvMTI0OTE4LnBuZw==/original/a8Xn8s.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MDkvMTI0OTE5LnBuZw==/original/4OW21R.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MDkvMTI0OTIwLnBuZw==/original/RodvxT.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjk2MDkvMTI0OTIxLnBuZw==/original/j4Cm05.png]]
<p>This is an in-person game where participants will explore the future by walking through a neighborhood and using the sights as inspiration.<br></p>
<ul><li>Players: 1 to <span class="">∞</span></li><li>Duration: 60-90 minutes</li><li>Activities: walking and talking</li></ul>
<p>This game involves minimal prep, just planning a route and printing and cutting out two pages of prompts.</p>
<p><br></p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1nLzI4MzQzMTcucG5n/original/LyTpCF.png]]
<p>Want a physical cartridge for Wampus? Reach out on Twitter: @johnvanderhoef</p>
<p>* * *</p>
<p>Wampus is an overhead arcade narrative adventure game developed as a homebrew for the Nintendo Entertainment System (NES).</p>
<p>The wampus live on a planet invaded by colonialists, who farm and mine the land for its natural resources. These resource-stripping activities threaten the local flora and fauna, especially the Mountain Wampus, who get hunted for their treasure.</p>
<p>As a young wampus, players set out to rid the planet of the settler invaders and restore harmony to the land. While a fun lark, Wampus explores themes of environmentalism, conservationism, stewardship of the land, and the destructive nature of colonialism.</p>
<p>* * *</p>
<p><strong>Wampus </strong>is the <strong>first</strong> game in the MULEniverse series, which narratively extends the work of Danielle Bunten Berry's MULE economic simulator game.</p>
<p>The MULEniverse games include:</p>
<p>1. Wampus</p>
<p>2. <a href="https://johnvanderhoef.itch.io/wart-worm-wingding" target="_blank">Wart Worm Wingding</a></p>
<p>3. <a href="https://johnvanderhoef.itch.io/bat-lizard-bonanza" target="_blank">Bat Lizard Bonanza</a></p>
<p>4. <a href="https://johnvanderhoef.itch.io/leggite-luta-livre" target="_blank">Leggite Luta Livre</a></p>
<p>5. <a href="https://johnvanderhoef.itch.io/nemulesis" target="_blank">neMULEsis</a></p>
<p>***</p>
<p>Controls</p>
<p>Directional Pad -- move up, down, left, and right</p>
<p>B -- Wampus Claw attack (once unlocked)</p>
<p>A -- Wampus coin projectile (once unlocked)</p>
<p>Hold B and press A -- Wampus Burrow (once unlocked)</p>
<p>Hold A and press B -- Wampus Rock Bomb (once unlocked)</p>
<p>***</p>
<p>FOR BEST EXPERIENCE: I recommend getting an original NES controller and a USB adapter for it. You can find one <a href="https://www.retrousb.com/product_info.php?cPath=21&products_id=158" rel="nofollow noopener" referrerpolicy="origin">here</a> or <a href="https://www.amazon.com/Tomee-NES-USB-Controller-Adapter-pc/dp/B00HM3QCN2/ref=sr_1_3?ie=UTF8&qid=1549047471&sr=8-3&keywords=NES+controller+usb+adapter" rel="nofollow noopener" referrerpolicy="origin">here</a>.</p>
<p>For really enterprising types, this game is fully playable on an actual NES. You can use either an <a href="https://www.amazon.com/s?k=everdrive+n8&hvadid=234353538216&hvdev=c&hvlocphy=9031087&hvnetw=g&hvpos=1t1&hvqmt=e&hvrand=9017374272736160785&hvtargid=aud-647846986281%3Akwd-303890194056&tag=googhydr-20&ref=pd_sl_glpmwc1bx_e" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Everdrive</a>, a <a href="https://www.retrousb.com/product_info.php?products_id=34" target="_blank" rel="nofollow noopener" referrerpolicy="origin">PowerPak</a>, or flash an empty cart, as long as each has mapper 30 support.</p>
<p>* * *</p>
<p>Wampus was made possible thanks to <a href="http://www.thenew8bitheroes.com/" rel="nofollow noopener" referrerpolicy="origin">NESMaker</a>, an engine developed to make NES development a reality for people who are not versed in assembly language.</p>
<p>In order to play Wampus, you'll need an NES emulator. I recommend <a href="http://www.fceux.com/web/home.html" rel="nofollow noopener" referrerpolicy="origin">FCEUX</a>. Many emulators do not have mapper 30 support, which is the mapper NESMaker uses for its games. </p>
<p>Once you have FCEUX downloaded, start it up and open the Wampus.nes ROM. The game should work fine.</p>
<p><strong>FOR MAC USERS:</strong> Download <a href="https://openemu.org/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">OpenEMU</a> for Mac. When you open the program, right click on the Nintendo (NES) category on the left hand sidebar and select "Default Core." Then select FCEU. </p>
<p>* * *</p>
<p>Music</p>
<p>Princess Quest by Ben Burnes (Abstraction)</p>
<p>Pixel War 1 by Ben Burnes (Abstraction)</p>
<p>Save the City by Ben Burnes (Abstraction)</p>
<p>Out of Time by Ben Burnes (Abstraction)</p>
<p>MULE Theme by Roy Glover, translated to NESMaker by Ben Burnes (Abstraction).</p>
<p>To learn more about Ben Burnes's music, visit: <a href="http://www.abstractionmusic.com/" rel="nofollow noopener" referrerpolicy="origin">http://www.abstractionmusic.com/</a></p>
<p>* * *</p>
<p>Wampus is part of the MULEniverse.</p>
<p>* * *</p>
<p>More from this developer: <a href="https://johnvanderhoef.itch.io/" target="_blank">https://johnvanderhoef.itch.io</a><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/lLIrCjy59X0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzY0ODYyLzQ0MzU4NzkucG5n/original/2NCc%2F9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY0ODYyLzQ0MzU4ODAucG5n/original/XLLxSq.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY0ODYyLzQ0MzU4ODEucG5n/original/X9%2FTxd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY0ODYyLzQ0MzU4ODIucG5n/original/p22sKN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY0ODYyLzQ0MzU4ODMucG5n/original/%2BCU92%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY0ODYyLzI3MTI0OTEuanBn/original/6nekDO.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzY0ODYyLzcyNDc1MzMucG5n/original/BA4tw9.png]]
<h1>WELCOME TO THIS DIGITAL VINYL ALBUM:</h1>
<p>a sonic experience to 6 new additional natures for the iconic game Wanderhome ( <a href="https://possumcreekgames.itch.io/wanderhome">https://possumcreekgames.itch.io/wanderhome</a> )</p>
<p>.</p>
<p></p>
<p><span class="">Each NATURE features </span><span class="">custom collage art by yours truly, </span><span class="">lyric-style flavor text, </span><span class="">classic prompt list for Wanderhome play, and a unique </span><span class="">CURATED PLAYLIST FLOW & SOUND</span></p>
<p>.</p>
<p><span class="">Bring your wanderers to the </span></p>
<p><span class="">Beach </span></p>
<p><span class="">Rave </span></p>
<p><span class="">Long Tables </span></p>
<p><span class="">Dens </span></p>
<p><span class="">Dressmakers' & </span></p>
<p><span class="">River Springs and explore a specific tropical sensation, relaxation, bliss and fun to your party and play~</span></p>
<p>.<br></p>
<p></p>
<p>Download Quick Ref for a setting only text version. </p>
<p>This is made with support of the Haeth Grant</p>
<p><br></p>
<p></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MzkzMi82MDI5MzUxLnBuZw==/original/4uwXJD.png]]
<p class="text-center"><em>You can hear it, can't you?</em></p>
<p class="text-center"><em>The siren call of what might be on the lacy border of the known world, where new and wondrous things – where new world --</em></p>
<p class="text-center"><em>rise from the primordial foam.</em></p>
<p class="text-center"><em>What will you find, on the Edge?</em></p>
<p class="text-center"><em>Who might you meet?<br></em></p>
<p><em><br></em></p>
<p>Once upon a time, I experimented with fitting a wee rpg system with wee implied setting into a pocketmod: the result of that experiment was <a href="https://taichara.itch.io/nine-black-jewel-moons" target="_blank">Nine Black Jewel Moons</a>.</p>
<p>Quite a few months and some expansions of rpg later, now there's Wandering Jewel Moons, a quarter-page-sized booklet of fantasy exploring along -- and beyond -- the Edge of the world.</p>
<p>Enjoy! :3<br></p>
<p><br></p>
<p></p>
[img width=500 [https://img.itch.zone/aW1nLzU0MDg0MzkucG5n/original/1%2B%2FLPt.png]]
<p><em>Wart Worm Wingding</em> is a 2-player arcade adventure for the NES. It's inspired by games like <em>Bubble Bobble</em> and <em>Dig Dug</em>.</p>
<p>The settlers' mining operations have gone too far. Help the Wart Worms, Wing and Ding, destroy the settler invaders and free their underground lands from exploitation!</p>
<p><em>Wart Worm Wingding</em> features a rocking soundtrack, over 100 levels, and 10 boss fights.</p>
<p><em>* * *</em></p>
<p><strong>Wart Worm Wingding </strong>is the <strong>second </strong>game in the MULEniverse series, which narratively extends the work of Danielle Bunten Berry's MULE economic simulator game.</p>
<p>The MULEniverse games include:</p>
<p>1. <a href="https://johnvanderhoef.itch.io/wampus" target="_blank">Wampus</a></p>
<p>2. Wart Worm Wingding</p>
<p>3. <a href="https://johnvanderhoef.itch.io/bat-lizard-bonanza" target="_blank">Bat Lizard Bonanza</a></p>
<p>4. <a href="https://johnvanderhoef.itch.io/leggite-luta-livre" target="_blank">Leggite Luta Livre</a></p>
<p>5. <a href="https://johnvanderhoef.itch.io/nemulesis" target="_blank">neMULEsis</a><br></p>
<p><strong><em>* * *</em></strong></p>
<p>FOR THE BEST EXPERIENCE: I recommend getting an original NES controller and a USB adapter for it. You can find one <a href="https://www.retrousb.com/product_info.php?cPath=21&products_id=158" rel="nofollow noopener" referrerpolicy="origin">here</a> or <a href="https://www.amazon.com/Tomee-NES-USB-Controller-Adapter-pc/dp/B00HM3QCN2/ref=sr_1_3?ie=UTF8&qid=1549047471&sr=8-3&keywords=NES+controller+usb+adapter" rel="nofollow noopener" referrerpolicy="origin">here</a>. You can also use any gamepad for a similar experience.</p>
<p>For really enterprising types, this game is fully playable on an actual NES. You can use either an <a href="https://www.amazon.com/s?k=everdrive+n8&hvadid=234353538216&hvdev=c&hvlocphy=9031087&hvnetw=g&hvpos=1t1&hvqmt=e&hvrand=9017374272736160785&hvtargid=aud-647846986281%3Akwd-303890194056&tag=googhydr-20&ref=pd_sl_glpmwc1bx_e" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Everdrive</a>, a <a href="https://www.retrousb.com/product_info.php?products_id=34" target="_blank" rel="nofollow noopener" referrerpolicy="origin">PowerPak</a>, or flash an empty cart, as long as each has <strong>mapper 30</strong> support.</p>
<p>* * *</p>
<p>Wart Worm Wingding was made possible thanks to <a href="http://www.thenew8bitheroes.com/" rel="nofollow noopener" referrerpolicy="origin">NESMaker</a>, an engine developed to make NES development a reality for people who are not versed in assembly language.</p>
<p>In order to play Wart Worm Wingding, you'll need an NES emulator. I recommend <a href="http://www.fceux.com/web/home.html" rel="nofollow noopener" referrerpolicy="origin">FCEUX</a>. Many emulators do not have mapper 30 support, which is the mapper NESMaker uses for its games. </p>
<p>Once you have FCEUX downloaded, start it up and open the WartWormWingding.nes ROM. The game should work fine.</p>
<p><strong>FOR MAC USERS:</strong> Download <a href="https://openemu.org/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">OpenEMU</a> for Mac. When you open the program, right click on the Nintendo (NES) category on the left hand sidebar and select "Default Core." Then select FCEU. </p>
<p>* * *</p>
<p>Music</p>
<p>Rabbit Town by Ben Burnes (Abstraction)</p>
<p>Penguin Town by Ben Burnes (Abstraction)</p>
<p>Penguins vs. Rabbits by Ben Burnes (Abstraction)</p>
<p>Penultimate by Ben Burnes (Abstraction)</p>
<p>To learn more about Ben Burnes's music, visit: <a href="http://www.abstractionmusic.com/" rel="nofollow noopener" referrerpolicy="origin">http://www.abstractionmusic.com/</a></p>
<p>***</p>
<p class="text-center"><strong><em><strong><img src="https://img.itch.zone/aW1nLzMwOTk1NDAucG5n/original/dxdhS8.png" style="max-width: 100%" loading="lazy"></strong></em></strong>
</p>
<p><strong><em>Wart Worm Wingding </em></strong>was successfully <strong>KICKSTARTED </strong>in March 2020. <strong><a href="https://www.kickstarter.com/projects/wartwormwingding/wart-worm-wingding-a-new-arcade-platformer-for-the-nes" rel="nofollow noopener" referrerpolicy="origin">https://www.kickstarter.com/projects/wartwormwingding/wart-worm-wingding-a-new-a...</a></strong></p>
<p>Want a physical cart? Contact me via email.</p>
<p>* * *</p>
<p>Wart Worm Wingding is part of the MULEniverse.<span></span></p>
<p>* * *</p>
<p>More from this developer: <a href="https://johnvanderhoef.itch.io/" target="_blank">https://johnvanderhoef.itch.io</a></p>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/89yNS0H7t5g" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzMwMTE0NjMucG5n/original/dAb7j6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzMwMTE0NTQucG5n/original/g191vk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzMwMTE0NTUucG5n/original/tj334M.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzMwMTE0NTYucG5n/original/9wLMEY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzMwMTE0NTcucG5n/original/rUq5DS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzMwMTE0NTgucG5n/original/Dp%2F1FZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzMwMTE0NTkucG5n/original/RyksyB.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzMwMTE0NjAucG5n/original/jUQ7WH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzMwMTE0NjEucG5n/original/PMK9yI.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzMwMTE0NjIucG5n/original/0dQEJE.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzMwMTE0NjYucG5n/original/06AiIM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzMwMTE0NjQucG5n/original/I7PrEU.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzMwMTE0NjUucG5n/original/cEe%2B5X.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzMwMTE0NjcucG5n/original/E6d8rp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTM2ODUwLzQzMjI5NzMuanBlZw==/original/dFRoEX.jpeg]]
<figure><img src="https://img.itch.zone/aW1nLzc3ODIyMC5wbmc=/original/ouJNa4.png" style="color: inherit" loading="lazy"><br></figure>
<p><strong>Watch Me Jump</strong> is a digital story of scandal and betrayal, played out in four quarters. As WNBA all-star Audra Bee Mills, the player will navigate through the story, shaping Audra's personality along the way through the choices made.</p>
<p><img src="https://img.itch.zone/aW1nLzc3ODIyMS5wbmc=/original/BUO6Um.png" loading="lazy"><br></p>
<p><strong>Watch Me Jump </strong>is the first video game from award-winning playwright Jeremy Gable, and is adapted from his play of the same name. The player takes the role of Audra Bee Mills, who is about to become the highest paid women’s basketball player in the world. But on the night before playoffs, a scandal threatens to overturn everything she has worked for. And Audra has to figure out how to get through the night without losing either her dignity or her career.</p>
<p><img src="https://img.itch.zone/aW1nLzc3ODIyMi5wbmc=/original/pizbym.png" loading="lazy"><br></p>
<p>As the player moves through the game, various choices will influence Audra’s experience and personality. And with the decisions made, the player will help Audra determine what it truly means to be “the best".</p>
<p><img src="https://img.itch.zone/aW1nLzc3ODIyMy5wbmc=/original/zmr4d2.png" loading="lazy"><br></p>
<p>Featuring completely original artwork and music, <strong>Watch Me Jump</strong> is a throwback to the games of the 8-bit era, combining the look and feel of old-school RPGs and text based adventures with a unique and original 21st century story. And simple, easy-to-use controls help move the player through the many twists of this intense and humorous journey.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/0d-6Kj-FIy8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTY3NDEzLzExNzgwMTMucG5n/original/FYeH13.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY3NDEzLzExNzgwMTQucG5n/original/ykyONo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY3NDEzLzExNzgwMTUucG5n/original/rMoSIc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY3NDEzLzExNzgwMTYucG5n/original/9Vl17X.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTY3NDEzLzExNzgwMTcucG5n/original/a4FFIb.png]]
<p>YOUR ACTIONS HAVE BEEN EXAMINED AND IT HAS BEEN DETERMINED YOU HAVE VIOLATED OUR NATION'S LAWS AND HAVE CONTRIBUTED TO A WEAKNESS IN OUR NATION'S SECURITY.</p>
<p><br><br>TO BE OFFERED A SECOND CHANCE YOU MUST PROVE YOURSELF TO HAVE REALIGNED WITH THE PRIORITIES OF OUR SOCIETY...</p>
<p><br><br>YOU MUST TRACK DOWN AND ELIMINATE FOUR UNDESIRABLES, WHOSE EXISTENCE IS INCONGRUENT WITH THE PRIORITIZATION ABOVE ALL OF SELF AND NATION ON WHICH OUR SOCIETY THRIVES.</p>
<p>-----</p><p>Supports local co-op for up to 4 players!<br></p><p>If you like what you see feel free to <a href="http://www.fletchersgames.com/contact.html" target="_blank" rel="nofollow noopener" referrerpolicy="origin">sign up for my mailing list</a> to get updates on my upcoming games!<a target="_blank" href="http://steamcommunity.com/sharedfiles/filedetails/?id=718469100â" rel="nofollow noopener" referrerpolicy="origin"><br></a></p>
<p>The game is also available on <a href="https://itunes.apple.com/us/app/watchlist-retro-arcade-shooter/id1169194343" target="_blank" rel="nofollow noopener" referrerpolicy="origin">iOS</a> and <a href="https://play.google.com/store/apps/details?id=com.fletcher.watchlist" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Android</a>!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/4pTXD-tdyXM" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3NjIvMzQxMTMzLnBuZw==/original/0VHYZi.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3NjIvMzQxMTMxLnBuZw==/original/8MA0oM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3NjIvMzQxMTI4LnBuZw==/original/1JP1DP.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3NjIvMzQxMTI5LnBuZw==/original/pCXZ%2FH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjQ3NjIvMzQxMTMwLnBuZw==/original/8ZB632.png]]
<p>The game is called Watchmaker's Apprentice which was inspired by <em>The Watchmaker on Filigree Street</em> by Natasha Pulley. Though this game has no direct ties to the book, it would be silly to say I wasn't immediately drawing on ideas that came from spending hours immersed in an 1840s England with an eclectic cast of characters and marvelous clockwork creations.</p>
<p>This game is a micro-rpg, meaning that it's very basic in design and usually can be played in one sitting (3-4 hours max). It's also a solo journaling game with optional rules for playing with a group of people. Those of you who are familiar with games outside of D&D, you probably already know and I hope you enjoy my game. Those of you who have only played D&D or maybe you only know of D&D from watching things like Stranger Things; I want you to know that this is very different experience from D&D. If what you want is D&D, play D&D. If you want to try something totally different, this is a good game to try.</p>
[img width=500 [https://img.itch.zone/aW1nLzc5NjM0MzUucG5n/original/kotZ8O.png]]
<p>Wave_Machine is a small adventure (15-20 min) where you meet friendly creatures who need your help. Get rid of the pests then stay to chat to the islanders 🐸 🐢 🐊<br></p>
<p>This is me and Tom's first ever game release, and our first ever game jam entry (for <a href="https://itch.io/jam/mechjam/results" target="_blank">MechJam 2021</a>)! Hope you all enjoy <3</p><p><strong>Controls</strong></p><ul><li>WASD - movement</li><li>E - interact</li><li>Left SHIFT - boost</li><li>Left CRTL - fire missile (when aiming)</li><li>SPACE - jump</li><li>MOUSE - camera / look</li><li>Left Click - fire laser (when aiming)</li><li>Right Click - aim (hold to aim)</li><li>ESC - pause / view controls<span></span><span></span></li></ul><p><strong>Kind comments from MechJam 2021</strong></p><blockquote>"This. Is. My. Jam. Took me back to pso1 on dreamcast. The lofi chillwave and soft retro vibes. Loving the low poly art style and really unique character designs. Fluid motion and good feeling rockets, for a moment floating out at sea with trails of yellow it was actually beautiful" <em><a href="https://itch.io/jam/mechjam/rate/1020119#post-3217873" target="_blank">tankukidreamz</a><u></u></em><br></blockquote><blockquote>"Loved the audio/visual presentation, and it has tons of personality; I found myself wanting to stick around the islands after each mission" <a href="https://itch.io/jam/mechjam/rate/1020119#post-3195861" target="_blank">theEarthWasBlue</a></blockquote><blockquote>"I fell absolutely in love with the PS1 synthwave aesthetic. Great music, great art, great dialogue, awesome atmosphere" <a href="https://itch.io/jam/mechjam/rate/1020119#post-3189454" target="_blank">WilliamMcfey</a><span></span></blockquote><blockquote>"Wowww!! Super impressed with aspects of this game that often get neglected in game jams. It had interesting environment art and level design, great art direction, fun dialog, and a meta-narrative that caught me by surprise (not gonna spoil anything ;))" <a href="https://itch.io/jam/mechjam/rate/1020119#post-3189319" target="_blank">ninjacharlie</a></blockquote>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMDExOS81ODY4MTQzLnBuZw==/original/y1kJNt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMDExOS81ODY4MTQxLnBuZw==/original/9hBMIF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMDExOS81ODY4MTQwLnBuZw==/original/jT0tRZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMDExOS81ODY4MTM3LnBuZw==/original/UBjdZF.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMDExOS81ODY4MTM1LnBuZw==/original/IrFkzZ.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAyMDExOS81ODY4MTQyLnBuZw==/original/MvxF7X.png]]
<p>In <strong>We Are Champion</strong>, 3-6 players must compete in a divine game of cards to take over the world as the divine Patrons and their chosen Champion.<br>The game is a Table-Top Roleplaying Game, and takes roughly an hour to play.<br><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzUwMTA3LzQxODY2NDQucG5n/original/6bGadj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzUwMTA3LzQxODY2NDMucG5n/original/98UDC9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzUwMTA3LzQxODY2NDIucG5n/original/cGKeos.png]]
<p>
<strong>WE ARE DOOMED</strong> is a twin-stick shooter where you zap polygon baddies with an absurdly overpowered laserbeam. Dive head-first into the action with reckless ambition, charge the <strong>SUPERBEAM</strong>, and zap everything out of existence in an instant. Chase high scores or just enjoy the beautiful explosion of geometry, colour and light.<span></span></p><ul><li>Pure arcade action. No cutscenes, storylines, or lengthy tutorials.</li><li>An overpowered laserbeam weapon, and the more ridiculous SUPERBEAM.</li><li>Waves mode: 30 waves that range from chill to hyper-intense.</li><li>Endless mode: An endless barrage of baddies. How many zones can you survive?</li><li>Quick to start, and quick to restart for "just one more" game.</li><li>A vibrant world of neon colours, bold shapes, and glitching geometry.</li><li>A beautiful, chill, and occasionally glitchy soundscape.</li></ul><hr style=""><p><strong>System Requirements</strong></p><ul>
</ul><p>Windows: Windows XP or greater.<br>Mac: Mac OS X 10.7 or greater.<br>A game controller is highly recommended, but not required.</p><hr><p>Check out the <a href="http://www.vertexpop.com/wearedoomed" rel="nofollow noopener" referrerpolicy="origin">official site</a> for more screenshots and info.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/qMHrK24g7T0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTk4OC85NTI5NS5wbmc=/original/SiNoG5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk4OC85NTI5Ny5wbmc=/original/W88YEb.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk4OC85NTI5OS5wbmc=/original/F%2Fv18D.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTk4OC85NTMwMS5wbmc=/original/M%2FRi%2F6.png]]
<p>You are all members of the Empress’ bodyguard, her constant companions. She is dead and you have a chance to remember her as she was, as you were when she was alive. Tell tales of her rise and eventual fall before discovering the fate of her Empire… </p>
<p>A four-page GMless story game for 3-6 players. Originally published in Codex: Leviathan.</p>
<p>You'll need counters of two different colours to pass amongst yourselves in play, or some way to record that for remote play.</p>
<p>***</p>
<p>All images © Wayne O’Connor <br><a href="https://druakim.artstation.com" rel="nofollow noopener" referrerpolicy="origin">https://druakim.artstation.com</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvODQ1MTk2LzQ3MzgzNTkuanBn/original/V9vFQn.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODQ1MTk2LzQ3MzgzNjAuanBn/original/32NDdr.jpg]]
<p>OST AVAILABLE: <a href="https://quarkimo.bandcamp.com/album/we-met-in-may-ost" rel="nofollow noopener" referrerpolicy="origin">https://quarkimo.bandcamp.com/album/we-met-in-may-ost</a></p>
<p><u><em>We met in May</em> and went on a lot of dates.</u> This is a collection of vignette games about those dates, and the comedy that comes with getting to know someone.<br><br><u>What the heck do you DO in these games?</u><br>In <em>We Met in May</em>, you play as Nina while she's hanging out with her love interest, Jake. Nina and Jake get into various shenanigans together, which you play through as Nina. On one date, you may end up burying Jake in sand, chips and wine. On another, he may cook dinner for you! Each game is unique, and explores a different date between the two characters.<br><br><u>What do we mean by "vignette games"?</u><br>In our case, the vignette games contained in this collection are very short, focused games. Each one illustrates a different moment in the characters relationship (drawing on the developers own experiences!). The vignette games in <em>We met in May</em> are meant to be brief and memorable.<br><br>These aren't massive 400 hour RPGs, so don't expect bazillions of hours of gameplay. In fact, only expect... an hour or less! Unless you want to share these at a party--then you can get lots of hours out of the collection by watching your friends try to pour sand directly into Jake's mouth in one of the vignettes called Beach Date. ;)<br><br><u>Who are these games for?</u><br>Everyone! But specifically, people who enjoy romantic comedy, small games, character-driven stories and just... funny stuff in general will probably enjoy this collection.<br></p><p></p>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/6gZikZD62Wk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDM0ODY1LzI1MzcyNjIuZ2lm/original/en3535.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDM0ODY1LzI1MzcyNjMuZ2lm/original/i6w7qe.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDM0ODY1LzIxODA1NzEuanBn/original/8ryJH3.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDM0ODY1LzI1MzcyNjQucG5n/original/uiB2Y6.png]]
<p><strong><img src="https://img.itch.zone/aW1nLzM4MTUxMDQucG5n/original/nXYFtk.png" loading="lazy"><br></strong></p>
<p><strong>It's not what you say, it's how you say it. </strong><em>We should talk</em> is a short-form narrative game that will make you think carefully about the words you choose, <strong>coming Thursday July 16th 2020 to Windows, Mac, PlayStation 4, Xbox One, Linux, and Nintendo Switch.</strong> </p>
<p>In <em>We should talk</em>, you'll use the sentence spinner to piece together modular sentences in response to the in-game characters. Choose your words carefully to express yourself as you discuss ongoing problems about life and romance with Sam, your in-game partner, over text messages, while also chatting with friends and strangers at your favorite local bar.</p>
<p><img src="https://img.itch.zone/aW1nLzM4MTUxNTQuZ2lm/original/Zd16XO.gif" loading="lazy"></p>
<p>The combination of words you choose impacts the conversations you have, how genuinely you can connect with your partner, and whether your relationship can survive the night. It's up to you how you respond—depending on how you communicate, you'll see one of many possible endings.</p>
<p><img src="https://img.itch.zone/aW1nLzM4MTUxNTUucG5n/original/dMAc2C.png" loading="lazy"><br></p>
<p><strong>Personalized Choices: </strong>Using the sentence spinner, make choices that connect with you. Countless options abound—be yourself, or role play someone you never thought you could be.</p>
<p><img src="https://img.itch.zone/aW1nLzM4MTUxNjcuZ2lm/original/mbMFJl.gif" loading="lazy"><br></p>
<p><strong>Unique Characters: </strong>Your night at the bar is more interesting thanks to all the unique people you encounter. Find your healthy balance between chatting with your friends and keeping up with the texts from your partner at home. </p>
<p><img src="https://img.itch.zone/aW1nLzM4MTY5MTUuZ2lm/original/4ZpzZg.gif" loading="lazy"><br></p>
<p><strong>Different Paths: </strong>Your choices drastically affect the way folks respond to you, leading to one of many different paths in each conversation. Will you be accommodating, flirty, stand-offish, or somewhere in-between?</p>
<p><img src="https://img.itch.zone/aW1nLzM4MTY5MTAuZ2lm/original/H6okJz.gif" loading="lazy"><br></p>
<p><strong>Multiple endings:</strong> Play again and again to find all 9 possible endings. Conclusions aren't based on a specific path or route the way many traditional narrative games branch, but instead the endings are based on the tone your responses express throughout the game. What do <strong>your</strong> relationships look like at the end of the night?</p>
<p><img src="https://img.itch.zone/aW1nLzM4MTY5MDguZ2lm/original/Leiv25.gif" loading="lazy"><br></p>
<p><strong>Realistic conversations:</strong> Experience the emotions that come with real conversations, whether it’s the the joy that comes with teasing a friend, the anxiety that comes with a heavy text message, or the frustration of navigating a touchy conversation with a creep. Express yourself as clearly as you can and hope that your conversational partner understands, though there's always a risk they might interpret your words differently than you intended.</p>
<p><a target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzM4MTUxNjEucG5n/original/7dCT%2Fy.png" loading="lazy"></a><br></p>
<p><a href="https://www.weshouldtalkgame.com/press-kit/" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><img src="https://img.itch.zone/aW1nLzM4MTUxNjMucG5n/original/sOnAU5.png" loading="lazy"></a></p>
<p class="text-center"><strong><iframe src="https://open.spotify.com/embed/playlist/0P9AMgJ9ZxQVfT7Is9zG10" width="400" height="250" frameborder="0"></iframe><br></strong></p>
<p><strong>The We should talk Team:</strong></p>
<p><a href="https://toki-e.itch.io/" style="font-size: inherit">Kat Aguiar</a>, <a href="https://nobohb.com/" target="_blank" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">Nobonita Bhowmik</a>, <a href="https://ceschiii.itch.io/" style="font-size: inherit">Francesca Carletto-Leon</a>, <a href="https://jjb672.itch.io/" style="font-size: inherit">Jordan Jones-Brewster</a>, <a href="https://carolmertz.itch.io/" style="font-size: inherit">Carol Mertz</a> and <span></span><a href="http://jackschlesinger.com" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">Jack Schlesinger</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/MotLidp9IxE" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjU1MDM1LzM4NzM5MDQuanBn/original/gkrbUT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU1MDM1LzM4NzM5MDUuanBn/original/iq3aOA.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU1MDM1LzM4NzM5MDYuanBn/original/j1gcnJ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU1MDM1LzM4NzM5MDcuanBn/original/PgBtHP.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU1MDM1LzM4NzM5MTAuanBn/original/l2nBV7.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU1MDM1LzM4NzM5MDkuanBn/original/2Wcvoh.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjU1MDM1LzM4NzM5MDguanBn/original/RO2UlQ.jpg]]
<p><img src="https://img.itch.zone/aW1nLzQyNTg3MzQucG5n/original/Ss%2BDJj.png" style="max-width: 100%" loading="lazy"></p>
<p>It contains 100+ sprites in black & white style, including:</p>
<ul><li>Barn</li><li>Tents</li><li>Saloon</li><li>Church</li><li>Wagons, car</li><li>Various shops</li><li>And much more</li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjUxMDgyLzQyNTg5MjQucG5n/original/Rww1pA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjUxMDgyLzQyNTg5MjMucG5n/original/t%2FU3CU.png]]
<p><br></p>
<p>From the creator of <em><a href="https://togeproductions.itch.io/coffee-talk" target="_blank">Coffee Talk</a></em>, in collaboration with Rolling Glory Jam the creator of <em><a href="https://store.steampowered.com/app/658690/Rage_in_Peace/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Rage in Peace</a></em>.<br></p>
<p><em>What Comes After</em> is a short experience, a heartwarming story, and a love letter to all of you who think you're a burden for other people.</p>
<p><img src="https://img.itch.zone/aW1nLzQ1NTAwNDcucG5n/original/JejhPO.png" loading="lazy"><br></p>
<p>Help Vivi finds herself through the journey that takes her to where people go after they died, to what comes after. Ride the train filled with the souls of the people, animals, and plants that are on their way to leave this world, and talk to them to learn about love, regrets, life, and death that haunt us every day until our time has come. All presented in a light-hearted way with a sprinkle of comedy and philosophy.<strong><br></strong></p>
<p><strong>Features:</strong></p>
<ul><li>A short heartwarming story that will stay in your heart and memory</li><li>A personal journey of learning how to love yourself</li><li>A tale filled with love and comedy</li><li>Colorful art to accompany your journey in the train not bound for the living</li><li>An easy to pick-up gameplay</li></ul>
<p><strong><br></strong></p>
<p><strong>A Game by </strong><br></p>
<p><strong>fahmitsu x Rolling Glory Jam</strong></p>
<ul><li>Mohammad Fahmi <a href="https://twitter.com/fahmitsu" dir="ltr" class="" rel="nofollow noopener" referrerpolicy="origin">@fahmitsu</a> - <em>Design, Writing, and Directing</em></li><li><span class=""></span><span class="">Amatir Crew <a href="https://twitter.com/amatircrew" dir="ltr" class="" rel="nofollow noopener" referrerpolicy="origin">@amatircrew</a> - <em>Production and Co-directing</em></span><span class=""><br></span></li><li><span class="">Giri Prahasta <a href="https://twitter.com/igrir" dir="ltr" class="" rel="nofollow noopener" referrerpolicy="origin">@igrir</a> - <em>Programming</em></span></li><li><span class=""><span class="">Karina Utami Putri <a href="https://twitter.com/inyaa" dir="ltr" class="" rel="nofollow noopener" referrerpolicy="origin">@inyaa</a> - <em>Art</em></span></span></li><li>Adhit Android <span class=""><a href="https://twitter.com/Adhit_Android" dir="ltr" class="" rel="nofollow noopener" referrerpolicy="origin">@Adhit_Android</a> - <em>Audio</em></span></li><li><span class="">Galuh Elsa A.N. <a href="https://twitter.com/strobunny" dir="ltr" class="" rel="nofollow noopener" referrerpolicy="origin"></a><a href="https://twitter.com/gal__el" target="_blank" rel="nofollow noopener" referrerpolicy="origin">@gal_el</a> - <em>Co-writing</em></span></li><li><span class="">Vanisya Aulia Andini <a href="https://twitter.com/kroissan_" dir="ltr" class="" rel="nofollow noopener" referrerpolicy="origin">@kroissan_</a> - <em>Additional Art</em></span></li><li><span class=""></span><span class="">Masdito Bachtiar <a href="https://twitter.com/mas_ittou" dir="ltr" class="" rel="nofollow noopener" referrerpolicy="origin">@mas_ittou</a></span> - <em>Additional Audio</em></li><li>Featuring a song "Pulang, Kembali" by L'Alphalpha <span class=""><a href="https://twitter.com/L_alphalpha" dir="ltr" class="" rel="nofollow noopener" referrerpolicy="origin">@L_alphalpha</a></span><span></span></li></ul>
<iframe width="720" height="450" src="https://www.youtube.com/embed/DllQBJD95Fc" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODA1OTM5LzQ1MTU1NTQuanBn/original/PgZJc9.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODA1OTM5LzQ1MTU1NTUuanBn/original/Dq6Jpc.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODA1OTM5LzQ1MTU1NTYuanBn/original/LB4aX%2F.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvODA1OTM5LzQ1MTU1NTcuanBn/original/5LJjeC.jpg]]
<p>Created in 2 weeks for the <a href="https://itch.io/jam/shock-and-awwww">Shock and Awww Game Jam</a>!</p>
<p>Content Warning: Contains audio and visual jumpscares.<br></p>
<p>Ren is bored in a cafe waiting for zir girlfriend on Halloween. Nothing could go wrong.<br></p>
<p><br></p>
<p>Controls: Mouse and W on the keyboard</p><p><br></p><p>*Note for Mac users: if the game will not run, please try launching it from the itch.io desktop app. There is a problem with Catalina where it unzips files improperly and unmarks them as executable.<br></p>
<p>By <a href="http://dragons-but-also-rabbits.itch.io/">dragonsbutalsorabbits</a></p>
<p>Additional programming by <a href="https://emerassi.itch.io/">Emerassi</a><br></p>
<p>Sounds from freesound.org: Medium Wind by kangaroovindaloo, Cat meow by TRNGLE, cat meow by tuberatanka, hiss2.wav by Reitanna, cell phone vibrate glass_loopable.wav by mobaudio<br></p>
[img width=500 [https://img.itch.zone/aW1nLzQ0ODA0NDkucG5n/original/vJiJca.png]]
<p>WHAT HAPPENED is a missing persons horror TTRPG about spiritual danger, cosmic encroachment, and inevitability. Players will find themselves pitted against an unknown spiritual terror while they try to solve the mystery of people going missing in their community. Game managers are encouraged to create a unique antagonistic horror while players are encouraged to band together and thrive under the watchful eyes of the Stars. <br></p>
<p>WHAT HAPPENED runs on a diceless system based upon Belonging outside Belonging. However, thorough understanding of BoB's system is not necessary to play.</p>
<p>The downloadable contents have 20 pages of text, including</p>
<ul><li>rules</li><li>small illustrations</li><li>guidelines for setting creation</li><li>character creation and 5 unique playbooks</li><li>directions for the the Storyteller (game manager)</li><li> an illustration-free PDF designed specifically for screen readers and accessibility purposes.</li></ul>
<p>For many Indigenous people worldwide, sometimes we find ourselves asking WHAT HAPPENED? We've lost so many but they aren't truly gone. This game explores my reflections on that.</p>
<p>Play well.</p>
<p>If you are Indigenous and the price is prohibitive, please DM me on Twitter (@bignoseagenda) and I will set you up, no questions asked.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTc0NzEwLzMwMjQzNDgucG5n/original/4Q0Jwm.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc0NzEwLzMwMjM4NzIucG5n/original/BhiTbH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc0NzEwLzMwMjM4NzMucG5n/original/NkLBca.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNTc0NzEwLzMwMjM4NzQucG5n/original/YMcG9J.png]]
<p>A collaborative storytelling game about strange things that come out of the water, and how the community deals with it.</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MDk3OS82MDE4NjE4LmpwZw==/original/GgkMl9.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MDk3OS82MDE4NjIwLmpwZw==/original/ltZ1Ag.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTA1MDk3OS82MDE4NjIyLmpwZw==/original/vP8z7r.jpg]]
<p>A hack of "Olaf Hits the Dragon with his Sword" in which a party of adventurers break valuable things. </p>
[img width=500 [https://img.itch.zone/aW1nLzUyMDA5NjEuanBlZw==/original/Xnay5X.jpeg]]
<p>A game made for <a href="https://itch.io/jam/what-is-so-cool-about-jam" target="_blank">What is So Cool About Jam?</a> inspired by a certain media franchise about Australia as well as other post-apocalyptic media. Community copies are available! Go on a wastelands road-trip with your friends!<br><br><br><br><br>also the tire graphic is CC content from dragonartz.net<br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzA1ODI4LzM5MDI1MzMucG5n/original/2LTMMn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA1ODI4LzM5MDI1MzQucG5n/original/rIJnaY.png]]
<p class="text-justify"><strong>“What’s so cool about time loops?”</strong> lots of things, honestly. But what is cool about your time loop? <strong>Play to find out!</strong><br></p>
<p class="text-justify">Climb out the trenches of a war. Celebrate a family holiday. Take your final exams. Experience the day a meteor crashes into the city. Play the championship-winning game. Or witness the assassination of a politician. Again, and again, and again... At least until you manage to break the loop...</p>
<hr>
<p>You get an 8-Page PDF and hopefully a good time.<br></p>
<p>You need: </p>
<ul><li>2 six-sided dice</li><li>something to take notes with</li><li>a couple of people, one of which is willing to take on the role of GM</li></ul>
<hr>
<p class="text-justify"><strong>“What’s so cool about time loops?”</strong> was written by <a href="https://twitter.com/maxkaemmerer" rel="nofollow noopener" referrerpolicy="origin"><strong>Max Kämmerer</strong></a> and is a hack of <a href="https://s-jared.itch.io/whats-so-cool-about-outer-space"><strong>“What’s so cool about outer space?”</strong></a> by <a href="https://twitter.com/infinite_mao" rel="nofollow noopener" referrerpolicy="origin"><strong>Jared Sinclair</strong></a><strong>. </strong>It was created as a submission to <a href="https://itch.io/jam/what-is-so-cool-about-jam"><strong>“What's So Cool About Jam”</strong></a> & <a href="https://itch.io/jam/monthly-micro-jam-august-2020"><strong>“Monthly Micro Jam: August 2020”</strong></a><strong>.</strong><br></p>
<p class="text-justify">You can find Max’s other work on <a href="https://maxkaemmerer.itch.io/"><strong>itch.io</strong></a><strong>. </strong></p>
<hr>
<p><strong>Also check out:</strong></p>
<iframe frameborder="0" src="https://itch.io/embed/862929?linkback=true&bg_color=363f3e&fg_color=fff9e9&link_color=fff9e9&border_color=5c6564" width="552" height="167"><a href="https://maxkaemmerer.itch.io/mayweather"><span class=""></span>MAYWEATHER by Max Kämmerer (he/they)</a></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzE3Nzk2LzM5Nzk1MjYucG5n/original/jGly2q.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzE3Nzk2LzM5ODE2NjcucG5n/original/w2b5Of.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzE3Nzk2LzM5ODE5NDYucG5n/original/Bt5TAi.png]]
<p><strong>Check out our new game, "Milky Way Prince". Now available!</strong>
<br>
</p>
<p><br></p>
<iframe src="https://itch.io/embed/670040" width="552" height="167" frameborder="0"><a href="https://santaragione.itch.io/milkywayprince">Milky Way Prince – The Vampire Star by Santa Ragione</a></iframe>
<p></p>
<p><strong>Wheels of Aurelia</strong> is a narrative road trip game set in the roaring Italian 70s. Half racing game, half interactive fiction, it tells the story of Lella, a restless woman driving on the roads of the western coast of Italy, the famous Via Aurelia.<br></p>
<p><br>Wheels of Aurelia plays like an old-school isometric arcade racer, except that you get to chat with your passenger while driving. The story takes places at the end of the 70s – a time of terrorism, kidnappings, and political turmoil in Italy – and it will introduce you to that world and its dynamics thorough a cast of characters that you have never met in a video game. It's up to you to discover their motivations for driving along the coast of Italy and away from their homes.<br><br>Based on your choices – and the places you'll decide to visit – you may end up in car chases, illegal street races, or in tense debates that will make you wonder who your travel companions really are.<span></span></p>
<p><strong>NOTE</strong>: Steam keys are included!</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/TZ0jvh8uNEk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDEyNDEvMzk3NzA5LnBuZw==/original/j6UaNh.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDEyNDEvMzk3NzA1LnBuZw==/original/cPrJON.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDEyNDEvMzk3NzA2LnBuZw==/original/4lto0z.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDEyNDEvMzk3NzA4LnBuZw==/original/k9cZub.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDEyNDEvMzk3NzA3LnBuZw==/original/93qjoc.png]]
<p><br></p>
<figure><img src="https://img.itch.zone/aW1nLzM5NDU0NDkuanBn/original/z2DvCt.jpg" style="color: inherit; font-size: inherit" loading="lazy"><span></span><span></span><br></figure>
<p><em>When We First Met</em> is a short visual novel made for the<em> <a href="https://itch.io/jam/i-cant-write-but-want-to-tell-a-story" target="_blank">I Can't Write</a></em> game jam. It is also a sequel to my comic <a href="https://twitter.com/madocactus/status/1279481143532888066" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><em>Cross My Heart.</em></a><span></span></p>
<p><strong>Theo</strong>'s mother and father are important nobles in the Soleilment Empire - and they've just been summoned to a crucial meeting at the Imperial palace. Unfortunately, Theo's coming with them - and she's not as eager to visit as her parents are. </p>
<p>But word has it that someone new and important has just arrived at the palace. Curious, Theo goes out to find them...</p>
<p><img src="https://img.itch.zone/aW1nLzM5NDU0NTEuanBn/original/8ba85U.jpg" loading="lazy"><br></p>
<ul><li>Around 2000 words of dialogue.</li><li>An interactive exploration system - talk to the palace's inhabitants, and listen in on conversations.</li><li>Several beautiful CGs, backgrounds and character sprites.</li><li>A short story with a heart-warming ending.</li><li>All the perks of a visual novel lovingly built in 2 weeks. </li></ul>
<p><img src="https://img.itch.zone/aW1nLzM5NDU0NTQuanBn/original/fRJPyE.jpg" loading="lazy"><br></p>
<p>Art, Scenario, Code - <a href="http://www.twitter.com/madocactus" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Mado</a></p>
<p>Music - <a href="https://maoudamashii.jokersounds.com/list/bgm4.html" rel="nofollow noopener" referrerpolicy="origin">Maou Damashii</a></p>
<p>SFX - <a href="https://www.tam-music.com/" rel="nofollow noopener" referrerpolicy="origin">TAM Music Factory,</a> <a href="https://opengameart.org/content/51-ui-sound-effects-buttons-switches-and-clicks" rel="nofollow noopener" referrerpolicy="origin">Kenney</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzEyMTcyLzQwMDQ2NDguanBn/original/s58V5P.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzEyMTcyLzQwMDQ2NDcuanBn/original/ZzV%2BZU.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzEyMTcyLzQwMzAyMjEuanBn/original/M5dVgw.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzEyMTcyLzQwMzAyMjguanBn/original/SPqxwT.jpg]]
<p>You like stories, right? Of course you do, or else you wouldn't be here. I have a proposition for you - just hear me out for a second.<br></p>
<p> I just transferred to [REDACTED] Academy, a boarding school for the most elite and (occasionally) gifted students across the country. Today, February 12th, 2014, is my first day. Changing schools right in the middle of the year is tough, especially since the entire student council seems to want a piece of me, but that's not what I need your help with.</p>
<p><strong>You see, someone in this school killed my father, and I won't stop searching until I find out who.</strong></p>
<p><img src="https://img.itch.zone/aW1nLzE1MTcxMjEucG5n/original/PGVri%2B.png" loading="lazy"></p>
<h4>ABOUT</h4>
<p><em>Who Killed My Father Academy! </em>is a mystery romance visual novel with heavy meta elements about fake-dating boys to find out who killed our enigmatic protagonist's father. It features:</p>
<ul><li>A branching narrative with 5 character routes and 1 "True" route</li><li>Two endings per character</li><li>F/M, M/M, and F/F content</li><li>Around 60,000 words (Roughly 4-5 hours playtime)</li><li>Classical music soundtrack using public domain recordings</li><li>Name the protagonist!</li></ul>
<figure><img src="https://img.itch.zone/aW1nLzE1MTcxMjIucG5n/original/jpX8ou.png" style="color: inherit" loading="lazy"><br></figure>
<h3>CAST</h3>
<p>There are 5 main characters of interest in WKMFA, each with their own route. Could any of them be the very culprit our protagonist is searching for...? </p>
<p>Well, that's what you're playing to find out, isn't it? I mean, you're the one here with the ability to use save states, not her.</p>
<p class="text-center"><img src="https://img.itch.zone/aW1nLzE1MDIxMDMucG5n/original/yTCGPA.png" loading="lazy"><br></p>
<h4>Crispin</h4>
<blockquote><strong>AKA</strong>: The Competent One<br><strong>Position</strong>: Student Council President<br><strong>DOB</strong>: 12/13/95 (Sagittarius)<br><strong>His Family</strong>: Is on the school board<br><strong>Fun Fact</strong>: Feels a wide, satisfying range of emotions, just like everyone else<br><strong>Testimonials</strong>:<br>"<em>He's, um, very serious and capable!</em>" - Ellis<br>"<em>An unfeeling doll wrapped in human skin</em>" - Gia<br>"<em>Oooh, I do hope he makes it out alright...</em>" - Stacy<br><strong>Did He Do It?</strong> If he did, it was with a straight face</blockquote>
<h4><img src="https://img.itch.zone/aW1nLzE0OTM4NTkucG5n/original/RDyGr%2B.png" loading="lazy"></h4>
<h4>Dux</h4>
<blockquote><strong>AKA</strong>: The Playboy
<br><strong>Position</strong>: Student Council Vice President<br><strong>DOB</strong>: 6/9/96 (Gemini)
<br><strong>His Parents</strong>: Host a show on the Food Network<br><strong>Fun Fact</strong>: Has streamed Africa by Toto over 1500 times
<br><strong>Testimonials</strong>:
<br>"<em>Don't ask questions you aren't prepared to hear the answer to</em>" - Victor
<br>"<em>Look, he's just hot, okay? I can admit that</em>" - Olive
<br><strong>Did He Do It?</strong> If he thought it'd get him out of here</blockquote>
<h4><img src="https://img.itch.zone/aW1nLzE1MDIwNjkucG5n/original/b9yrgJ.png" loading="lazy"></h4>
<h4>Ellis</h4>
<blockquote><strong>AKA</strong>: The pretty boy<br><strong>Position</strong>: Student Council Treasurer<br><strong>DOB</strong>: 10/3/95 (Libra)<br><strong>His Family</strong>: Um, works in finance, I think?<br><strong>Fun Fact</strong>: Wears literally nothing but turtleneck sweaters regardless of season<br><strong>Testimonials</strong>:<br>"<em>A wonderful boy who tries his best!</em>" - His Grandmother<br>"<em>Thought I saw him carrying a knife once??</em>" - Akua<br>"The guy's pretty, but, like, that's it" - Dux<br><strong>Did He Do It?</strong> If someone else planned it out for him</blockquote>
<p><img src="https://img.itch.zone/aW1nLzE1MDIwOTQucG5n/original/KECCIf.png" loading="lazy"></p>
<h4>Victor</h4>
<blockquote><strong>AKA</strong>: The childhood friend<br><strong>Position</strong>: Student Council Secretary<br><strong>DOB</strong>: 5/31/96 (Gemini)<br><strong>His Family</strong>: Runs a high fashion label<br><strong>Fun Fact</strong>: His outfit costs more than your mortgage<br><strong>Testimonials</strong>:<br>"<em>The worst Gemini I've ever met, including myself</em>" - Dux<br>"<em></em><em>Um, he's always been kind to me?</em>" - Ellis<br><strong>Did He Do It?</strong> He'd never have the guts</blockquote>
<p><img src="https://img.itch.zone/aW1nLzE1MDIwOTkucG5n/original/LjbDiG.png" loading="lazy"></p>
<h4>Gia</h4>
<blockquote><strong>AKA</strong>: The roommate<br><strong>Position</strong>: Head Student Ambassador<br><strong>DOB</strong>: 5/4/96 (Taurus)<br><strong>Her Family</strong>: Is very proud of her!<br><strong>Fun Fact</strong>: Hasn't cleared out her voice mail box in, like, AGES, haha...<br><strong>Testimonials</strong>:<br>"<em>#PATTYGATE2013</em>" - Akua<br>"<em>Remarkably accommodating despite the company she keeps</em>" - Crispin<br><strong>Did She Do It?</strong> C'mon, really? HER?</blockquote>
<p><img src="https://img.itch.zone/aW1nLzE1MTcxMjMucG5n/original/mRIy62.png" loading="lazy"></p>
<h3>DETAILS & ADDITIONAL CREDITS</h3>
<h4>Content Warnings For:</h4>
<ul><li>Non-graphic depictions of drowning & being submerged in water</li><li>Subtle depictions of surveillance</li><li>Discussions & threats of violence, mentions of parental death (it is a murder mystery after all)</li><li>Frequent 4th wall breaking by multiple characters - it gets very meta at times</li><li>Depictions of emotional manipulation</li></ul>
<p>For more information on the specifics of these scenes or any type of content not listed here, feel free to reach out in the comments or via email at ntagonistic@gmail.com.</p>
<p><strong>Any proceeds from the sale of WKMFA will be donated to <a href="https://www.dreamyard.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">DreamYard</a>, a Bronx-based youth arts education organization.</strong><br></p>
<h4>Additional Background Credits</h4><p>WKMFA makes use of several backgrounds derived from the following images:<br></p>
<blockquote><strong></strong><em><a href="https://commons.wikimedia.org/wiki/File:Ambulance_6.jpg" target="_blank" rel="nofollow noopener" referrerpolicy="origin">"Ambulance 6"</a> by <a href="https://commons.wikimedia.org/wiki/User:Rama" rel="nofollow noopener" referrerpolicy="origin">Rama</a> on Wikimedia Commons, used under <a href="https://creativecommons.org/licenses/by-sa/2.0/deed.fr" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Cc-by-sa-2.0-fr</a></em><br><em><a href="https://www.flickr.com/photos/u07ch/27324185360/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">"Office"</a> by <a href="https://www.flickr.com/photos/u07ch/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Chris Hoare</a> on Flickr, used under <a href="https://creativecommons.org/licenses/by/2.0/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">CC BY 2.0</a></em><br><em><a href="https://unsplash.com/photos/M3CeIy7qhUg" target="_blank" rel="nofollow noopener" referrerpolicy="origin">"r00m"</a> by <a href="https://unsplash.com/@overthnker" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Maranatha Pizarras</a> on <a href="https://unsplash.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Unsplash</a></em><br><a href="https://unsplash.com/photos/okBa2fFynvs" target="_blank" rel="nofollow noopener" referrerpolicy="origin">"Pub Life"</a> by <a href="https://unsplash.com/@jule_42" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Juliane Liebermann</a> on <a href="https://unsplash.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Unsplash</a><br><em><a href="https://www.flickr.com/photos/145352212@N07/31419888581/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">"Dressing Room 2"</a> by <a href="https://www.flickr.com/photos/145352212@N07/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">FNSBSD Building Rentals</a> on Flickr, used under <a href="https://creativecommons.org/licenses/by-nc/2.0/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">CC BY-NC 2.0</a></em><br><em><a href="https://commons.wikimedia.org/wiki/File:HK_Sheung_Wan_Civic_Centre_%E4%B8%8A%E7%92%B0%E6%96%87%E5%A8%9B%E4%B8%AD%E5%BF%83_lift_metal_interior_April-2012.JPG" target="_blank" rel="nofollow noopener" referrerpolicy="origin">"HK Sheung Wan Civic Centre Lift Metal Interior"</a> by ONeGIOrelo on Wikimedia Commons, used under <a href="https://creativecommons.org/licenses/by-sa/3.0/deed.en" target="_blank" rel="nofollow noopener" referrerpolicy="origin">CC BY-SA 3.0</a></em><br><em><a href="https://unsplash.com/photos/OLIcAFggdZE" target="_blank" rel="nofollow noopener" referrerpolicy="origin">"Dirty Mug Collection Shelf"</a> by <a href="https://unsplash.com/@jaywennington" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Jay Wennington</a> on <a href="https://unsplash.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Unsplash</a></em><br><em><a href="https://unsplash.com/photos/9hP4rqi080Y" target="_blank" rel="nofollow noopener" referrerpolicy="origin">"Info"</a> by <a href="https://unsplash.com/@sceneoneart" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Michael D. Beckwith</a> on <a href="https://unsplash.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Unsplash</a></em><br><em><a href="https://www.flickr.com/photos/mastermaq/9473959695/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">"Mover Office"</a> by <a href="https://www.flickr.com/photos/mastermaq/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Mack Male</a> on Flickr, used under <a href="https://creativecommons.org/licenses/by-sa/2.0/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">CC BY-SA 2.0</a></em><br><em><a href="https://unsplash.com/photos/eHRzs3zunvQ" target="_blank" rel="nofollow noopener" referrerpolicy="origin">"Lobby"</a> by <a href="https://unsplash.com/@xokvictor" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Victor Bystrov</a> on <a href="https://unsplash.com/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Unsplash</a></em></blockquote>
<p>All fair use music recordings from <a href="https://musopen.org/" rel="nofollow noopener" referrerpolicy="origin">musopen.org</a></p>
<h4>Updates</h4>
<p><strong>11/29/18</strong>: Version 1.1 released, minor user input fixes/additions. OST list is actually accurate now. </p>
<p><strong>NOTE</strong>: When downloading a new version you MUST begin a completely new save file or else this will cause a crash during the true route. </p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTI1NzgzLzE2MjgyMzUucG5n/original/sNTXiv.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI1NzgzLzE2MjgyNTEucG5n/original/C5w3pY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI1NzgzLzE2MjgyMjkucG5n/original/aScVjH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI1NzgzLzE2MjgyMjYucG5n/original/jb8kyt.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTI1NzgzLzE2NDgyODQucG5n/original/FwmGYk.png]]
<h3><a rel="nofollow noopener" referrerpolicy="origin"></a></h3>
<h3></h3>
<p><br></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p><br></p>
<h1><a target="_blank" class="" style="" rel="nofollow noopener" referrerpolicy="origin">SOMEONE ASK FOR YOUR HELP, CAN YOU HELP HIM...?</a></h1>
<p><strong>Why You Do This To Me?</strong> is an Authentic Action JRPG! </p>
<p>Design/Programming/Pixel Art/Music/ Soundtrack: <a href="https://linktr.ee/AdnanYousuf" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Adnan Yousuf</a></p>
<h2><a target="_blank" class="" rel="nofollow noopener" referrerpolicy="origin">THE CONCEPT...?</a> </h2>
<p>The original version of this game was made for the <a href="https://itch.io/jam/2nd-rpg-maker-gotm-jam/rate/502804" target="_blank">2nd RPG Maker GOTM Jam</a> in <strong>5 HOURS ONLY</strong>. I decided to make a game in which someone forcibly tries to make you evil and do evil work by you, something worst happen to the player and he have to overcome from his emotional pain! This is a story-based JRPG Game, which tells an interesting story though the game systems!
</p>
<p>[The Game Concept is changing with new story and characters and a new name!]</p>
<h2><a target="_blank" class="" rel="nofollow noopener" referrerpolicy="origin">FEATURES:</a></h2>
<p><strong>🔸 Amazing Storyline </strong>- The Amazing and shocking and emotional storyline is waiting for you and will give an enriched engaging experience.</p>
<h5><img src="https://img.itch.zone/aW1nLzY5MDk2MDQuZ2lm/original/ztyjlr.gif" loading="lazy"></h5>
<p><strong>🔸 Challenging / Diverse Gameplay</strong> - The Map was crafted to challenge you regardless of what Gameplay you are looking for. Different Gameplays will require different strategies.</p>
<figure><img src="https://img.itch.zone/aW1nLzY5MDk5MTQuZ2lm/original/%2F4fu5%2F.gif" loading="lazy"><br></figure>
<p><strong>🔸 Tons Of NPCs to Interact - </strong>There are lots of NPCs and another non-playable character is available in the game to interact and create an awesome relationship with the game.</p>
<figure><img src="https://img.itch.zone/aW1nLzY5MDk5MTguZ2lm/original/qgNzBk.gif" style="color: rgb(188, 188, 188); font-size: 32px" loading="lazy"></figure>
<p><strong>🔸 REDESIGNED "CLASSES" - </strong> More than 8 classes in one single player, ranging from a Knight to a Summoner, an Illusionist to a Gunslinger, all with magic woven deep into their combat styles.</p>
<figure><img src="https://img.itch.zone/aW1nLzY5MDk5MjAuZ2lm/original/xX%2BCLw.gif" style="color: rgb(188, 188, 188); font-size: 32px" loading="lazy"><br></figure>
<p>🔸<strong>Original Soundtrack</strong> - From creepy and melancholic to 8-bit and upbeat music.</p>
<p>🔸<strong>Pixel Art</strong> - Colorful pixel art.</p>
<h2><a target="_blank" class="" rel="nofollow noopener" referrerpolicy="origin">CONTROLS:</a></h2>
<p>🔸 Arrows Key to move</p>
<p>🔸 Enter <strong>to </strong>Interact Object and NPCs.</p>
<p>🔸 ESC <strong>to </strong>Item Menu</p>
<h2><a target="_blank" class="" rel="nofollow noopener" referrerpolicy="origin">DISCLAIMER?</a></h2>
<p>This Game is Sole Developed by Me!</p>
<p>I am working on the Mobile Version that's why it is unstable but you can buy it anyway from the page and support me and my work. When The Game will be Launched on Mobile the people who bought it before will get free access and special edition! </p>
<p>NO REFUND SO PLEASE CHECK EVERYTHING BEFORE PURCHASING!</p>
<p>Thank you so much! I am planning the full game on this late year or other version of it!</p>
<p><strong></strong></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTAyODA0LzI2MDUyNjUuZ2lm/original/Qtm9Ra.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAyODA0LzI2MDUyMTUuZ2lm/original/GnxZlO.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAyODA0LzI2MDUzMjAuZ2lm/original/kdU48s.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNTAyODA0LzI2MDU1NDIuZ2lm/original/38Fat2.gif]]
<p><img src="https://img.itch.zone/aW1nLzEzMzAwMTAuZ2lm/original/LLm8g0.gif" loading="lazy"></p>
<p>You are <strong>Sprocket</strong>, an adorable ferret who knocks things over and steals junk on a space station in the far future! Escape your playpen and make your way to the shuttlebay with the most stuff!</p>
<p><em>Widget Satchel</em> is a daunting adventure for one little thief, with fiendish puzzles and tricky platforming, but don't worry: You may lose some Widgets (or your socks!) along the way, but Sprocket can’t get hurt and there is no “game over.” Of course, it will take all of your ferret-y determination if you hope to stash away every Widget, discover every Trinket, and try on every pair of Socks!</p>
<p><img src="https://img.itch.zone/aW1nLzEzMjkyNTQucG5n/original/aYkN7b.png" alt="Get Widgets" title="Get Widgets" loading="lazy"></p>
<p>Widgets: you want them! But beware, every widget you put in your satchel makes it heavier, making it a little bit harder to jump to the next platform or scramble past the station's maintenance bots. Levels can be relatively easy if you don't collect <em>any</em> Widgets, but they become a greater challenge as you fill Sprocket’s satchel.</p>
<p><img src="https://img.itch.zone/aW1nLzEzMjkyNTUucG5n/original/jniblb.png" alt="Build Doohickeys" title="Build Doohickeys" loading="lazy"></p>
<p>You'll reach special <strong>Fabricator rooms</strong> in each level, where you can exchange your Widgets for power-ups called Doohickeys. <em>Bots giving you trouble?</em> Equip yourself with <strong>The Wrench</strong> and show them what's what. <em>Widget out of reach?</em> Put on <strong>Jef's Boots</strong> and get up there! There are five Doohickeys to help you on your adventure, and you can build them in any order, so you can play the game (and discover its secrets) however you like.</p>
<p><img src="https://img.itch.zone/aW1nLzEzMjkyNTYucG5n/original/ugzDwX.png" alt="Cause Mischief" title="Cause Mischief" loading="lazy"></p>
<p>High scores, hidden collectables, and secret paths are great, sure, but in <em>Widget Satchel</em> you can also just knock stuff over and get into trouble if you prefer! And the more mischief you do, the more <em>mischief points</em> you'll earn! What are mischief points? It's not important, but there are an awful lot of them!</p>
<p><img src="https://img.itch.zone/aW1nLzEzMjkyNDkucG5n/original/0OOb%2BF.png" alt="What Else?" title="What Else?" loading="lazy"></p>
<ul>
<li>Original soundtrack that dynamically reacts to your progress.</li>
<li>Replayable areas with "metroidvania-lite" pathing.</li>
<li>Sock-exclusive inventory system.</li>
<li>Trapdoors, lifts, hydraulic pillars, and other nonsense machinery to manipulate.</li>
<li>20+ game-changing "Feats" to achieve.</li>
<li>Human characters to mildly inconvenience!</li>
<li>Piles and piles of junk!</li>
<li>...and more!</li></ul><p>
</p><p><em><strong><br></strong></em></p><p><em><strong>-------<br>Note: </strong>The Steam code included as a bonus is not valid for users in Japan, as the game has a different publisher in that region. If you are in Japan, feel free to gift the Steam code to a friend in another region.</em><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/2NkaDTN9SFY" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjcxOTI1LzEzMTU3ODIucG5n/original/yHL7%2BW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcxOTI1LzEzMjkzMDcucG5n/original/mnfWbu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcxOTI1LzI1OTA5NzgucG5n/original/ja0Fu6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcxOTI1LzI1OTA5NzkucG5n/original/2KK83J.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcxOTI1LzI1OTA5ODIucG5n/original/Bfr5Hc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcxOTI1LzI1OTA5ODMucG5n/original/HG4Av%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcxOTI1LzI1OTA5ODAucG5n/original/PjH2%2F0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcxOTI1LzI1OTA5ODQucG5n/original/OUVZkn.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcxOTI1LzI1OTA5ODUucG5n/original/r%2Bjw06.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcxOTI1LzI1OTA5NzcucG5n/original/tjlTn6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjcxOTI1LzI1OTA5ODEucG5n/original/yu1nl5.png]]
<figure><img src="http://cdn.akamai.steamstatic.com/steam/apps/640890/extras/steamheader.png?t=1506801682" loading="lazy"></figure>
<p><em>Will Glow the Wisp is the first melee bullet hell platformer without platforms, with unique particle based visuals and movement mechanics.</em><br></p>
<h2><em><em><em>Escape from a magical prison</em></em></em></h2>
<figure><em><em><img src="http://cdn.akamai.steamstatic.com/steam/apps/640890/extras/Escapingprisions.png?t=1506801682" loading="lazy"></em></em></figure>
<p><em><em><br></em></em></p>
<h2><em><em><em>Survive bullet hell</em></em></em><em><em></em></em><em><em></em></em><em><em></em></em><em><em></em></em><em><em></em></em><em><em></em></em><em><em><br> </em></em><em><em><br></em></em></h2>
<figure><em><em><img src="http://cdn.akamai.steamstatic.com/steam/apps/640890/extras/hearthDashAction.png?t=1506801682" loading="lazy"></em></em></figure>
<p><em><em></em></em></p>
<p><em><em></em></em></p>
<p><em><em></em></em></p>
<p><em><em></em></em></p>
<p><em><em></em></em></p><em><em>
<h2>Beat the developer</h2>
<figure><img src="http://cdn.akamai.steamstatic.com/steam/apps/640890/extras/devstuff.png?t=1506801682" loading="lazy"></figure>
<p>You are able to play against the Developer in Will Glow the Wisp, but only the best players will be able to handle this challenge. Do you want to give it a try?</p>
<h2><em><em>Features</em></em></h2>
</em><p><em></em><br></p><p><em></em><br></p>
<p><em></em><br></p>
<p><em><em></em><br></em><br></p>
<ul><li><em><em><em>Play vs. another players recordings
</em></em></em></li><li><em><em><em>Beat the Developer
</em></em></em></li><li><em><em><em>Global Highscore
</em></em></em></li><li><em><em><em>Lots of Particles and Bullets</em></em><em><em></em></em><em></em></em></li></ul>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p></em>
<iframe width="720" height="450" src="https://www.youtube.com/embed/cxRW6JtWatA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDA2OTM1LzIwMTk3NjgucG5n/original/ORJuBk.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA2OTM1LzIwMTk3NjMucG5n/original/fYsEwL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA2OTM1LzIwMTk3NjQucG5n/original/Lyq35J.png]]
<p>Willful is an adventure game that borrows elements from Mega Man, Metroid, and other classics from the 80s and 90s.<br>The Player takes up arms as a sacrificial offering named Will.<br><br>As the player explores the different areas in the game they can spend money on powerups and golden carrots which grant access to new worlds.<br>It's up to you to stop the reign of a mysterious entity named Behemoth, and his group of crazed followers!<br><br>Stuff you can do in Willful:<br><br>-Shoot things<br><br>-Make friends with a rock golem<br><br>-Buy from sketchy carrot dealers<br><br>-Traverse a giant computer chip<br><br>-Battle against bosses<br><br>-Explore ten different worlds</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/MLnYS6kDdh0" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTcwNTk0Lzc5MjI0MC5qcGc=/original/KZ%2BG0n.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTcwNTk0Lzc5MjIzOC5qcGc=/original/gGrWGe.jpg]]
<p>Windosill is a point-click-and-drag puzzle-toy, in which you guide a toy car through 10 miniature worlds. </p>
<p>A playable demo is online at <a href="http://windosill.com" rel="nofollow noopener" referrerpolicy="origin">http://windosill.com</a> in browsers that support Flash. (Non-Flash browsers will redirect to this page.)</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzA2OTYvMzIzMTA5LmpwZw==/original/EEkhyu.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA2OTYvMzIzMTEwLmpwZw==/original/ew6eCV.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA2OTYvMzIzMTEyLmpwZw==/original/itiHDZ.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA2OTYvMzIzMTEzLmpwZw==/original/dA%2BL%2F5.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNzA2OTYvMzIzMTE0LmpwZw==/original/WiKPhw.jpg]]
<<list-links "[tag[Windows]sort[title]]">>
<figure><img src="https://img.itch.zone/aW1nLzU1MjkzNzMucG5n/original/60bm3U.png" style="color: inherit; font-size: inherit" loading="lazy"></figure>
<h4>You awake in an old lodge, in the centre of a housing estate beside the sea, with no memories of the estate or how you got there. Nothing about this place seems right, like a world viewed via an angled mirror.</h4>
<h3 class="text-center">Welcome to Winsome Heartwood.</h3>
<p><img src="https://img.itch.zone/aW1nLzU1MzEyODQucG5n/original/LRG5Ue.png" loading="lazy"><br></p>
<h4>In this solo table-top RPG you will explore the Winsome Heartwood estate using a single D6 and a standard 52 card deck - searching through its buildings, mapping its roads and recording the experiences you have.</h4>
<h6 class="text-center">Included is the game - in normal, low-ink and text only or formats - along with 60 minutes of ambient, abstract noise to accompany your play.</h6>
[img width=500 [https://img.itch.zone/aW1nLzYxNTQ0OTQucG5n/original/JJfWQO.png]]
<p class="text-center"><em></em></p><p><strong>Witchball</strong> is a post-reality racing game played by children in the year 2601.</p>
<p>Massive environmental change has made much of the world inaccessible, and long-distance travel impossible. Communities are isolated, but communication has advanced to the point where short distances between people barely exist at all.</p>
<p>In Witchball, two players compete in a high speed foot-race while simultaneously playing a 2D pong-like ball game on the surface of the screen. Points are gained in both aspects and tallied per lap, so it’s important -- and tricky -- to manage the space better than the opponent.</p>
<p class="text-center">_________________________________________</p><p><strong>( IMPORTANT NOTE: Some flashing lights in the 2601 stage! )</strong><br></p>
<p class="text-center"><span></span><strong>** LOCAL MULTI-PLAYER ONLY **</strong><br></p>
<p class="text-center">(Two XBOX controllers recommended,</p>
<p class="text-center">keyboard works fine though!)</p>
<p class="text-center"><strong>*^*^*</strong></p>
<p class="text-center"><strong>>> Four locations and 3 modes, for a total of 9 Tracks <<</strong></p>
<p class="text-center"><strong>>> 8 different mysterious special abilities <<</strong></p>
<p class="text-center"><strong>Have fun!</strong></p>
<p class="text-center"><strong>*^*^*</strong></p>
<p><em>Originally used for fishing, glass buoys became associated with witches during witch-hunts in the late 1600s. Traditionally, a ‘witch ball’ is a glass orb hung in a home to ward away bad or evil spirits. The act of play, and games by extension, can function in a similar way -- kind of like a respite from the darkness. Games won’t solve any problems, and neither will a ward, but safeguards and rest are necessary parts of life and games can provide that. A game as a ward, not an escape.</em></p>
<p class="text-center">_________________________________________</p>
<p class="text-center">made with GameMaker Studio 1.4</p>
<p class="text-center"><strong>< <a href="http://twentycapitalletters.com/Witchball" rel="nofollow noopener" referrerpolicy="origin">http://twentycapitalletters.com/Witchball</a> ></strong><br><br></p>
<p class="text-center"><strong>AMAZE Festival, </strong>Nominee - Human Human Machine Award<br></p>
<p class="text-center"><strong>IGF 2018, </strong><a href="http://igf.com/article/2018-independent-games-festival-announces-main-competition-finalists" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Honorable Mention</a> - Nuovo Award<strong></strong><br></p>
<p class="text-center"><strong>Ludicious 2018, <a href="http://twitter.com/LudiciousFest/status/954461768406970369" target="_blank" rel="nofollow noopener" referrerpolicy="origin">WINNER</a> -</strong> Innovation in Game Award<strong></strong><br></p>
<p class="text-center"><strong>IndieCade 2017, </strong>Official Selection<br></p>
<p class="text-center"><strong>IGF 2017</strong>, <a href="http://www.igf.com/article/2017-independent-games-festival-announces-main-competition-finalists" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Honorable Mention</a> - Nuovo Award<br><br><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjA1MjQzLzk1ODY1OC5wbmc=/original/JJbfHg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA1MjQzLzk1ODY1NS5wbmc=/original/lKLkRg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA1MjQzLzk1ODY1NC5wbmc=/original/LyGdA5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA1MjQzLzk1ODY1Ny5wbmc=/original/%2FlgY21.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA1MjQzLzk1ODY1Ni5wbmc=/original/hxbbs7.png]]
<p>a 7k word twine game about working retail and dealing with magic managers who hate each other. so, a normal shift.</p>
<p>check out the playlist at <a href="https://www.youtube.com/playlist?list=PLKz_ZEpfu3nEc0s6S2fckZTSs8tXCBBcG" rel="nofollow noopener" referrerpolicy="origin">https://www.youtube.com/playlist?list=PLKz_ZEpfu3nEc0s6S2fckZTSs8tXCBBcG</a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTA0NzMyNC84MDM0Njg3LnBuZw==/original/4YOlfA.png]]
<p>A 7k word Twine game about working retail and dealing with magic managers who hate each other. So, a normal shift.</p>
[img width=500 [https://img.itch.zone/aW1nLzU5ODYzNDMucG5n/original/jzEBV6.png]]
<p>As a wizard, you are pretty powerful and also have a pretty powerful apatite! This game takes you on an adventure from a dark dungeon, to a lush forest, to a brisk and beautiful mountain top!</p>
<p>This game is brimming with platforming and plenty of magic missiles, but the best part of any story is the people you meet along the way!</p>
<p><br>Please leave some feedback and let me know how I did! I spent the entire summer learning Unity by making this game and improving upon it.<br><br></p>
<p>Most of the assets here I made by hand, however! the Forest tileset and the Mountain tileset are both from the amazing </p>
<p>aamatniekss (<a href="https://aamatniekss.itch.io/deep-forest-pixel-tileset" target="_blank" class=""><span></span></a><a href="https://aamatniekss.itch.io/deep-forest-pixel-tileset">https://aamatniekss.itch.io/deep-forest-pixel-tileset</a>) (Forest) </p>
<p>and</p>
<p>shackhal (<a href="https://shackhal.itch.io/multi-platformer-tileset" target="_blank" class=""><span></span></a><a href="https://shackhal.itch.io/multi-platformer-tileset">https://shackhal.itch.io/multi-platformer-tileset</a>) (Winter/Mountain)</p>
<p>I have learned a lot about pixel art but I could not come close to how amazing their work was. I edited theirs slightly to fit my style more but they did all the heavy lifting there! </p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/nmnLqkDu3Nw" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODAwMDE3LzQ0Nzk3MjYucG5n/original/hK4sjV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODAwMDE3LzQ0Nzk3MjQucG5n/original/%2FeWorr.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODAwMDE3LzQ0Nzk3MjUucG5n/original/HQYHRe.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODAwMDE3LzQ0Nzk3MjkucG5n/original/YdSPcd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODAwMDE3LzQ0Nzk3MjcucG5n/original/RUiijL.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODAwMDE3LzQ0Nzk3MjgucG5n/original/dXCIsg.png]]
<p><img src="https://img.itch.zone/aW1nLzU3OTQxOTIucG5n/original/WoPSEf.png" loading="lazy"></p>
<p><img src="https://img.itch.zone/aW1nLzgzNzI1NzQucG5n/original/h15Qsc.png" loading="lazy"><br></p><p>The four nations of Wonderland meet every year to agree on shared policies and enact their various schemes against each other. There are personal vendettas to resolve and enchantments hidden everywhere, and did someone mention the dreaded Alice? You are the White Rabbit, and your job is to organise the schedule for the annual summit. Every decision you make affects the destiny of Wonderland!<br></p>
<p><br>Will the King of the barbaric desert of Clubs declare active war on the pastoral paradise of Hearts? Will Prince John of the psychedelic land of Spades be able to elope with Princess Julie of the wealthy Diamond nation - two nations that are deadly enemies? What's up with the King and Queen of Spades's weird marriage? Does the King of Hearts suspect his loyal Duke Jorge of having an affair with his wife? Explore this and much more as you negotiate the likes and dislikes of the twelve guests of the summit.<br><br>Features:<br>- lots of replayability with 42 achievements, 14 characters, and 25000+ words in almost 3000 lines of dialogue - each playthrough only reveals at most 1/12th of the whole fabric of the story<br></p>
<p>- fully voice-acted dialogue</p>
<p>- gallery with 36 pieces of unlockable art</p>
<p>- choose between simple choice menu for first time players, and the drag and drop choice menu for the power players, with randomizer, repeat and reset functions</p>
<p>- player codex containing unlockable information about characters' relationships, secrets, motivations, and player goals and event history</p>
<p>You can find a walkthrough guide for the game here: <a href="https://docs.google.com/document/d/1WLfe-Y7GN-gUu83B7zCMOldoLzYBN29DTWyzQ_ur-38/edit?usp=sharing" rel="nofollow noopener" referrerpolicy="origin">https://docs.google.com/document/d/1WLfe-Y7GN-gUu83B7zCMOldoLzYBN29DTWyzQ_ur-38/...</a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/SuiseS3nY5U" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjY1ODA5LzM1OTc1NzMucG5n/original/IbxlIp.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY1ODA5LzM1OTc1NzQucG5n/original/kRgLsy.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY1ODA5LzM1OTc1NzIucG5n/original/hbSLfK.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY1ODA5LzM1OTc1NzAucG5n/original/nWQHrY.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNjY1ODA5LzM1OTc1NzEucG5n/original/6qn7j%2B.png]]
<p>Story</p>
<p>It's your first day at the Galactic Federation of Several Planets, and your job is to destroy as many enemy ships as possible with a giant laser. Seems simple enough. The federation seems nice enough, but it does feel a little strange that they can be so cheerful about causing such wanton destruction. Well, as long as you get paid it will be fine. Right?<br></p>
<h2>Gameplay</h2>
<p>Like the name implies in wonShot you get ONE shot. One shot each level to find the perfect spot to fire your laser and blow up as many enemy ships as you possibly can. Create massive chain reactions with numerous types of bombs, ships, and environmental hazards to utterly annihilate the rebel fleet. Be careful though, you need to reach a minimum score per level or you WILL be terminated.</p>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/gtZyQvTxHTs" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDY4NDczLzQxOTk5NzEucG5n/original/1fOA2a.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY4NDczLzQxOTk5NzAucG5n/original/HrDtUe.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY4NDczLzU0Njc4MDEuZ2lm/original/PPi%2BfS.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvNDY4NDczLzQxOTk5NjYucG5n/original/iA2X5Z.png]]
<p>Being a witch isn't as fun as it sounds. Sure, there’s flying around on a broomstick, flirting with demons, learning dangerous secrets man was not meant to know, dancing naked under a full moon (if you’re into that sort of thing)… but then, there are also <em>people</em>. And they always need your help.</p>
<p>If you can fly a broomstick, someone wants you to get their kid's kite down from a tree. If you're on a first-name basis with <em>one</em> malevolent spirit, someone thinks you can exorcise their creaking floorboards. And then there's the constant demand for love potions and messages for dead relatives. And requests to turn their rivals into frogs.</p>
<p>Worse: You're not the only one with magical powers, and the others range from terrifying creatures from other planes to your fellow witches, who have <em>no idea</em> what they’re doing. Who knows what trouble they could cause, fiddling with the balance of power?</p>
<p>Worst of all: Sometimes, once in a blue moon, you might need their help.</p>
<h2>Game info</h2>
<p><em>Wool of Bat</em> is a No Dice, No Masters hack where you play both a fractious not-coven of witches and the world they live in. It's inspired by Terry Pratchett’s Discworld and Tiffany Aching books, about a million different fairy tales, and a dash of Appalachian folklore.</p>
<h3>Version 0.1</h3>
<p>This is an early playtest version. If you find problems, please let me know! The minimum price for this version is $0, but paying any amount gets you all future updates, including the final digital version. If you find a problem or have questions or comments, you can fill out this form: <a href="https://forms.gle/wfDh6m7KRH9VfKBq8" rel="nofollow noopener" referrerpolicy="origin">https://forms.gle/wfDh6m7KRH9VfKBq8</a>. I'll send you a code for free future versions in return for non-trolling feedback.<br></p>
<h3>Credits</h3>
<p>© 2021 by <a href="https://bethanyharvey.itch.io">Bethany Harvey</a>. Licensed under a <a href="http://creativecommons.org/licenses/by-sa/4.0" rel="nofollow noopener" referrerpolicy="origin">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p>
<p>Cover art by <a href="https://www.etsy.com/shop/AtticStudioWV" rel="nofollow noopener" referrerpolicy="origin">Sara Bean</a></p>
<p>Game mechanics based on the "No Dice, No Masters" system created by Avery Alder. </p>
<h3>Playtesters</h3>
<p> Thanks to Jesse A, Steven Alligator, Terry Batley, Owen Brush, Elizabeth H, <a href="https://www.instagram.com/thespacejamber" class="" rel="nofollow noopener" referrerpolicy="origin">Amber Logsdon</a>, <a href="https://twitter.com/yayforbooks" class="" rel="nofollow noopener" referrerpolicy="origin">Maria M</a>, <a href="https://twitter.com/inarvan" class="" rel="nofollow noopener" referrerpolicy="origin">Chris Newton</a>, Adam O, Puckett, Rod M. Santos, <a href="https://twitter.com/jexjthomas" class="" rel="nofollow noopener" referrerpolicy="origin">j</a><a href="https://twitter.com/jexjthomas" class="" rel="nofollow noopener" referrerpolicy="origin">ex </a><a href="https://twitter.com/jexjthomas" class="" rel="nofollow noopener" referrerpolicy="origin">t</a><a href="https://twitter.com/jexjthomas" class="" rel="nofollow noopener" referrerpolicy="origin">homas</a>, <a href="https://twitter.com/mvertlib" class="" rel="nofollow noopener" referrerpolicy="origin">Mark V</a>, & <a href="https://sparkacting.com/mander" class="" rel="nofollow noopener" referrerpolicy="origin">Mander Zander</a>
</p>
<p><a href="https://twitter.com/mvertlib" rel="nofollow noopener" referrerpolicy="origin"></a></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNzc4MjMyLzU2MDEwMjEucG5n/original/uQqQmA.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc4MjMyLzU2MDEwMTQucG5n/original/AGQUb7.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNzc4MjMyLzU2MDEwMTgucG5n/original/C0lH1M.png]]
<p class="text-center"><img src="https://img.itch.zone/aW1nLzI0MjI3MTUuZ2lm/original/C0ivKR.gif" style="max-width: 100%; font-size: 14px; text-align: center; background-color: rgb(255, 255, 255)" loading="lazy"><br></p>
<p>Beautifully simple. Endlessly challenging.<br></p>
<p><strong>Word Forward is the puzzle game where every choice matters.</strong><br></p>
<p>Can you use all of the letters in the 5x5 grid to make words disappear and clear the board? Word Forward isn’t about spelling the longest words or the most clever - it’s about carefully using every tile to declare victory in 500 puzzles. It requires cunning and strategy -- Word Forward is a brain teaser that will really make you think!</p>
<ul><li><strong>SPELL</strong> words by tracing a line between tiles in any direction, including diagonally</li><li><strong>SWAP</strong> any two letters on the grid by using a SWAP TOKEN, earned during gameplay</li><li><strong>JUMBLE</strong> the tiles on the grid to replace all the letters with new ones when all else fails</li><li><strong>CHANGE</strong> the letter on a tile to any other letter you choose using the SWAP MODIFIER</li><li><strong>ELIMINATE</strong> stubborn tiles with BOMBS to get yourself out of a tight spot</li></ul>
<p></p>
<div class=""><iframe style="width: 500px; height: 281px" src="https://www.youtube.com/embed/cj2NYvYgHiA" frameborder="0" allowfullscreen=""></iframe></div>
<p>“chess-like think-ahead strategy...an excellent buy for solo players.”
<br><a href="https://steamcommunity.com/linkfilter/?url=https://www.techradar.com/sg/news/the-best-ipad-games-in-2019/11" target="_blank" rel="nofollow noopener" referrerpolicy="origin">TechRadar</a></p>
<p>“A challenging puzzler not to be missed.” <br><a href="https://steamcommunity.com/linkfilter/?url=https://appadvice.com/post/word-forward-challenging-puzzler-not-missed/765420" target="_blank" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">AppAdvice</a>
<br><br>
“Equally a brain-teaser and a brain-pleaser.”
<br><a href="https://steamcommunity.com/linkfilter/?url=https://www.macworld.com/article/3398621/best-ios-games-of-may-2019.html" target="_blank" style="font-size: inherit" rel="nofollow noopener" referrerpolicy="origin">MacWorld</a><span></span></p>
<p><strong>The #1 word puzzle game played more than 6 million times</strong></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/cj2NYvYgHiA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzcyNjM3LzI0MjI2NzAuanBn/original/6k%2BnIL.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzcyNjM3LzI0MjI2NjcuanBn/original/F%2BUXkT.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzcyNjM3LzI0MjI2NjkuanBn/original/9HYSnc.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzcyNjM3LzI0MjI2NzIuanBn/original/NVNa0t.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMzcyNjM3LzI0MjI2NzUuanBn/original/S22q8%2F.jpg]]
<p>In <em>Words, Wilting </em>you and a friend will take the role of two young lovers of the same age whose love must be concealed. To aid in this, the lovers have created a way to communicate secretly through flowers adorning their outfits, inspired by the Victorian floral language of love. <br></p>
<p>Play consists of you selecting index cards, each featuring a flower from the language you create together, and interpreting the card the other player selected, hoping to remember the hidden meaning you crafted together. You then create a scene together around what the cards meant and if the lovers remembered the language they made.</p>
<p>PDF: If you downloaded it before the file was named WordsWiltingV2 please redownload. Not only is the minor image issue fixed, it should now also have...Screen Reader accessibility!</p>
[img width=500 [https://img.itch.zone/aW1nLzI2MzI4NjQucG5n/original/Z%2FCC2S.png]]
<p>In <em>Words, Wilting </em>you and a friend will take the role of two young lovers of the same age whose love must be concealed. To aid in this, the lovers have created a way to communicate secretly through flowers adorning their outfits, inspired by the Victorian floral language of love. <br></p>
<p>Play consists of you selecting index cards, each featuring a flower from the language you create together, and interpreting the card the other player selected, hoping to remember the hidden meaning you crafted together. You then create a scene together around what the cards meant and if the lovers remembered the language they made.</p>
<p>PDF: If you downloaded it before the file was named WordsWiltingV2 please redownload. Not only is the minor image issue fixed, it should now also have...Screen Reader accessibility!</p>
[img width=500 [https://img.itch.zone/aW1nLzI2MzI4NjQucG5n/original/Z%2FCC2S.png]]
<p>Working For the Corp is a cyberpunk print and play Descended From the Queen game. You will play characters who work at a megacorp called "The Corp" who are tasked with defending sensitive information from runners. Will you defend The Corp?</p>
<p>Jess Meier @burst0fhope came on to add some cards and it has really changed the game, improving it dramatically.</p>
<p>Cover and card art by @diwataMANILA</p>
<p>Edited by GC Fournier @Callishka</p>
<p>Layout by Devon Apple @devonapple</p>
<p>This is the final printer product. Check it out and let me know on Twitter @KDavidson925 whether or not you Defend The Corp! </p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDcxOTQ4LzI3Nzc0MDIucG5n/original/UlaZ4X.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDcxOTQ4LzI3MjY5MDcucG5n/original/GZLc0y.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDcxOTQ4LzI3MjY5MDgucG5n/original/bKeSYw.png]]
<p>Working For the Corp is a cyberpunk print and play Descended From the Queen game. You will play characters who work at a megacorp called "The Corp" who are tasked with defending sensitive information from runners. Will you defend The Corp?</p>
<p>I have brought Jess Meir @burst0fhope on to add some cards and it has really changed the game, improving it dramatically.</p>
<p>Cover and card art by @diwataMANILA</p>
<p>Edited by GC Fournier @Callishka</p>
<p>Layout by Devon Apple @devonapple</p>
<p>This is the final printer product. Check it out and let me know on Twitter @KDavidson925 whether or not you Defend The Corp! </p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDcxOTQ4LzI3Nzc0MDIucG5n/original/UlaZ4X.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDcxOTQ4LzI3MjY5MDcucG5n/original/GZLc0y.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDcxOTQ4LzI3MjY5MDgucG5n/original/bKeSYw.png]]
<h4>UPDATE 5: NEW SPRITES, WELLS, SMOKE, NEW PORTRAITS</h4>
<p><strong>102 new tiles</strong> have been added, as well as updates to all of the sprites, bringing them in line with the recent <a href="https://jamiebrownhill.itch.io/solaria-sprites">Sprite Pack</a>!<br></p>
<p>There’s also a new smoke animation, and a new character portrait set!</p>
<h4>ABOUT</h4>
<p>The world of Solaria was an epic RPG that I never got around to making, so instead, it will be taking the form of a series of asset packs that you can use to create your own game!
</p>
<p>The first of these is the Rural Village pack, where the hero starts their journey! </p>
<p><strong>This is still in development</strong>, and likely will be for a while. If there is anything you'd like to see added or if you have any feedback, let me know and I'll make the changes in an update! Content updates will likely become smaller to make way for things like plug and play game engine compatibility, but will still be frequent!
</p>
<p>The palette used is a slightly expanded <a href="https://lospec.com/palette-list/resurrect-64" rel="nofollow noopener" referrerpolicy="origin">Resurrect64</a> by Kerrie Lake!
</p>
<h4>CONTENTS</h4>
<ul><li><strong>Rural Village tileset: </strong>2443 individual tiles in 16,32 and 48 pixel sizes.
<ul><li><strong>A large array of terrain tiles!</strong> Grass, dirt, trees and bushes in 2 shades, 4 cliff colours, water edge terrain, rocks, decorations, fences, 3 crops with 3 growing stages and more.</li><li><strong>260+ marketplace tiles!</strong> Featuring canopies, rugs, and items, including more weapons, potions and food!</li><li><strong>Building tiles! </strong>11 walls, 10 roofs with peaked and flat variations, new doors, expanded bridge tiles and more!</li><li><strong></strong><strong>Farming Tiles! </strong>3 different crops with 4 growth stages!</li><li><strong>NEW! </strong>More decorations, including a well, new marketplace items, flowerpots and grass tiles. See the most recent devlog for a full list of additions and updates!<br>
</li></ul></li><li><strong>Tile Animations: </strong>4-frame animations for water, water edges, flames, fish and chests. Door animations, horizontal bridge animations!</li><li><strong>6 Character Sprites: </strong>4-frame walking, idle, attack and minecart animations in 4 directions. </li></ul>
<p>All assets are in PNG format.
</p>
<h4>FUTURE</h4>
<ul><li><strong>More tile animations!</strong>
<ul><li>Animated flowers and more!</li></ul></li><li><strong>More character animations!</strong>
<ul><li>Fishing, farming, combat and more.</li></ul></li><li><strong>More asset packs!</strong> <ul><li>Sci-fi, beach, desert, city, modern.</li></ul></li><li><strong>Other stuff!</strong><ul><li>Possibly UI elements, autotiles and other stuff if there is demand.</li></ul></li></ul>
<h4>LICENSE</h4>
<p>What you can do:
</p>
<ul><li>Use in commercial and non-commercial video games and personal projects.
</li><li>Edit the assets as much as you like for use in projects.
</li><li>Publish work using these assets on websites relating to art, games, and similar.
</li></ul>
<p>What you can't do:
</p>
<ul><li>Resell, repackage or redistribute the assets in original or modified form.
</li><li>Use the assets or derivatives in logo, trademark, or service mark.
</li><li>Include these assets in game making tools, code templates, or NFT/crypto projects.</li></ul>
<h4>COMMISSIONS</h4>
<p>Something you want/need, that's not part of one of the packs? <strong>I'm available for commission!</strong> Contact me via <a href="https://www.twitter.com/jamiebrownhill_" rel="nofollow noopener" referrerpolicy="origin">Twitter</a>! </p>
<h4>SUPPORT</h4>
<p>You can follow me on <a href="https://www.twitter.com/jamiebrownhill_" rel="nofollow noopener" referrerpolicy="origin">Twitter</a> or <a href="https://www.instagram.com/jamiebrownhill/" rel="nofollow noopener" referrerpolicy="origin">Instagram</a>! You can use the button below to support me on <a href="https://ko-fi.com/jamiebrownhill_" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Ko-fi</a>! You don't have to credit me for the use of these assets, but it's much appreciated!
</p>
<p><em><strong><strong><em>Monthly Ko-fi members will receive exclusive daily tiles, compatible with all World of Solaria sets, based on a list of prompts they help decide!</em></strong></strong></em></p>
<p><strong><em>One-time Ko-fi supporters will receive a download key for the </em></strong><a href="https://jamiebrownhill.itch.io/solaria-quiet-cabin"><strong><em>Quiet Cabin</em></strong></a><strong><em> pack!</em></strong></p>
<p><strong><em><img alt="Buy Me a Coffee at ko-fi.com" src="https://lh4.googleusercontent.com/ZinqaoaMi7qydrhD3u1StixdiybP3jCAEBSYZ7q7Nis3WkR-78-QfddCUUL_4wS9lINNc3oQUfUYWsagTySFQneo0VSzgYvBaxm40vXD7dcVyie8yDFh7cEjn1ScoxAVxXn3qRJ4" width="602" height="152" style="margin-left:0px; margin-top:0px" loading="lazy"></em></strong>
</p>
<p>You can also support me by purchasing the other <a href="https://jamiebrownhill.itch.io/">World of Solaria</a> tileset packs!</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMTI5NC83ODAwNTUzLmdpZg==/original/9ImtNm.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMTI5NC83ODAwNTUyLmdpZg==/original/o%2BwsRK.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMTI5NC82NzgwMzIzLmdpZg==/original/JbTkPg.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMTI5NC82NzgwMzI0LmdpZg==/original/HiHxI9.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMTI5NC82NzgwMzIxLmdpZg==/original/ASeL2f.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMTI5NC82NzgwMzIyLmdpZg==/original/C%2FSIj5.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMTI5NC82NzgwNDc2LmdpZg==/original/%2BoO10K.gif]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMTI5NC83ODAwNTUxLnBuZw==/original/OFqb5Y.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMTI5NC83ODAwNTU2LnBuZw==/original/AEQi%2B0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMTI5NC83ODAwNTU3LnBuZw==/original/rNQNgc.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMTI5NC83ODAwNTU0LnBuZw==/original/kuE50L.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTAwMTI5NC83ODAwNTU1LnBuZw==/original/xczN5L.png]]
<p><strong>Welcome to Wyldrvir! <br><br>Core Book Edits thanks to Cash! :D </strong></p>
<p><span class="">Were a totally free new TTRPG that has been working in a combat free and wholesome Saturday morning cartoon style of world with adorable art and simple roleplay focused storytelling! We are a team of young adult writers ages ranging from 18-21 and we have been making this game for almost a year! All our content is free on Google Drive at: <a href="https://drive.google.com/drive/u/0/folders/17vy0_18gGHaiDQsYfCzMnGLQ2F_AMCjf" target="_blank" rel="nofollow noopener" referrerpolicy="origin">This Link here!</a> <br><br>This book is a PDF Version of the core rule document if you would like to download it this way. This book is all you need to start a campaign in this world. Wyldrvir also has a podcast and Discord server which you can link from here: <a href="https://worldofwyldrvir.carrd.co/" rel="nofollow noopener" referrerpolicy="origin">https://worldofwyldrvir.carrd.co/<br><br><strong></strong></a>Huge thanks to you for considering downloading our first book! </span></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener" referrerpolicy="origin"></a><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener" referrerpolicy="origin"></a><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener" referrerpolicy="origin"></a><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener" referrerpolicy="origin"></a></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener" referrerpolicy="origin"></a></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener" referrerpolicy="origin"></a></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener" referrerpolicy="origin"></a></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener" referrerpolicy="origin"></a></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener" referrerpolicy="origin"></a></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener" referrerpolicy="origin"></a></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener" referrerpolicy="origin"></a></p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener" referrerpolicy="origin">
<p><img alt="Image" src="https://pbs.twimg.com/media/Ewp6rv8WQAEw35v?format=jpg&name=360x360" class="" style="opacity: 0; width: 251px" loading="lazy"></p>
</a><p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener" referrerpolicy="origin"></a><br></p><p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener" referrerpolicy="origin"></a><br></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener" referrerpolicy="origin"></a><br></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener" referrerpolicy="origin"></a><br></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener" referrerpolicy="origin"></a><br></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener" referrerpolicy="origin"></a><br></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener" referrerpolicy="origin"></a><br></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/1" class="" rel="nofollow noopener" referrerpolicy="origin"></a><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener" referrerpolicy="origin"></a><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener" referrerpolicy="origin"></a><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener" referrerpolicy="origin"></a><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener" referrerpolicy="origin"></a></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener" referrerpolicy="origin"></a></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener" referrerpolicy="origin"></a></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener" referrerpolicy="origin"></a></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener" referrerpolicy="origin"></a></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener" referrerpolicy="origin"></a></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener" referrerpolicy="origin"></a></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener" referrerpolicy="origin"></a></p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener" referrerpolicy="origin">
<p><img alt="Image" src="https://pbs.twimg.com/media/Ewp6uTWWQAg15tz?format=png&name=360x360" class="" style="opacity: 0; width: 251px" loading="lazy"></p>
</a><p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener" referrerpolicy="origin"></a><br></p><p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener" referrerpolicy="origin"></a><br></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener" referrerpolicy="origin"></a><br></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener" referrerpolicy="origin"></a><br></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener" referrerpolicy="origin"></a><br></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener" referrerpolicy="origin"></a><br></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener" referrerpolicy="origin"></a><br></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/3" class="" rel="nofollow noopener" referrerpolicy="origin"></a></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/2" class="" rel="nofollow noopener" referrerpolicy="origin"></a><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/2" class="" rel="nofollow noopener" referrerpolicy="origin"></a><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/2" class="" rel="nofollow noopener" referrerpolicy="origin"></a></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/2" class="" rel="nofollow noopener" referrerpolicy="origin"><br></a><br></p>
<p><a href="https://twitter.com/wyldrvir/status/1372043982365147138/photo/2" class="" rel="nofollow noopener" referrerpolicy="origin"></a></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/wFAOfRiFRKc" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTYxMTQ3LzU0NTMxODguanBn/original/Xx928I.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYxMTQ3LzU0NTI4MjgucG5n/original/C5LQwS.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYxMTQ3LzU0NTI4MzAuanBn/original/Itl3s%2F.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYxMTQ3LzU0NTI4MzUucG5n/original/ACpQxH.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTYxMTQ3LzU0NTMxOTAucG5n/original/YJVTnF.png]]
<p><strong></strong>In Write'n'Slash play <strong>Molly</strong>, a doll who dreams to <strong>write </strong>like humans!</p>
<p>However, the other toys are <strong>reluctant </strong>to this idea and will do everything to prevent it...</p>
<p>Forget the mouse, the <strong>keyboard </strong>is your only <strong>weapon </strong>against the waves of toys that want to stop you from learning new words.</p>
<p class="text-center">______</p>
<p>Write'n'Slash was made during the ISART Digital's <strong>Game Week 2019</strong> in Paris. </p>
<p>The theme was : <strong>"Hack'n' Slash + ..." </strong>It means that we were supposed to mix the genre hack'n slash with another genre.</p>
<p>So I pitched Write'n'Slash, a text-based hack'n slash!</p>
<p class="text-center">______</p>
<p>At the end of the Game Week other jammers played other's people games (at least 25 games) and voted. We won the "<strong>Best Gameplay</strong>" award!</p>
<p class="text-center">______</p>
<p>Thanks to this amazing team we made Write'n'Slash in less than 4 days!</p>
<p><br></p>
<h4><em>Game Designer: </em></h4>
<ul><li>Valentin SERRI </li></ul>
<p><em>Portfolio:</em> <a href="https://valentinserri.wixsite.com/portfolio" rel="nofollow noopener" referrerpolicy="origin">https://valentinserri.wixsite.com/portfolio</a><span></span></p>
<p><em>Twitter:</em> <a href="https://twitter.com/Khipow" rel="nofollow noopener" referrerpolicy="origin">https://twitter.com/Khipow</a> </p>
<h4><em>Game Programers: </em></h4>
<ul><li>Maxence BEAUMONT</li></ul>
<p><em>Portfolio:</em> <a href="http://maxencebeaumont.fr/" rel="nofollow noopener" referrerpolicy="origin">http://maxencebeaumont.fr/</a></p>
<ul><li>Clément CAPPANNELLI</li></ul>
<p><em>Portfolio:</em> <a href="https://clemswork.wordpress.com/" rel="nofollow noopener" referrerpolicy="origin">https://clemswork.wordpress.com/</a></p>
<p><br></p>
<h4><em>Game Artists: </em></h4>
<ul><li>Sottheavid CHHUON</li></ul>
<p><em>Portfolio:</em> <a href="http://sottheavidchhuon.fr/" rel="nofollow noopener" referrerpolicy="origin">http://sottheavidchhuon.fr/</a></p>
<ul><li>Vassili Dreschmann</li></ul>
<ul><li>Marie M'HAMMED-OUBELLA</li></ul>
<p><em>Portfolio:</em> <a href="https://marieoubella.wixsite.com/monportfolio" rel="nofollow noopener" referrerpolicy="origin">https://marieoubella.wixsite.com/monportfolio</a></p>
<ul><li>Nicolas VONG</li></ul>
<p><em>Portfolio:</em> <a href="https://nicolasvong.wixsite.com/portfolio" rel="nofollow noopener" referrerpolicy="origin">https://nicolasvong.wixsite.com/portfolio</a></p>
<ul><li>Lynn WILLIAMS</li></ul>
<p><em>Portfolio:</em> <a href="https://lynnwilliamse.wixsite.com/siteportfolio/portfolio?fbclid=IwAR0tsWRiWiP1C2S2YuoSbU43TsqRjzbR6fVmQy02oRQDrcJn-OxPvW8xQs0" rel="nofollow noopener" referrerpolicy="origin">https://lynnwilliamse.wixsite.com/siteportfolio/portfolio?fbclid=IwAR0tsWRiWiP1C2S2YuoSbU43TsqRjzbR6fVmQy02oRQDrcJn-OxPvW8xQs0</a></p>
<p><br></p>
<h4><em>Music & Sound Designers:</em></h4>
<ul><li>Kevin DEDOU</li><li>Ge DING</li></ul>
<p><em>Soundcloud:</em> <a href="https://soundcloud.com/ar_d2?fbclid=IwAR02X3cYlSmLXePiCJmSQW84Tg4psJDNBNJbLLSiB0VU1Hg9y3ZqYuZgQRI" rel="nofollow noopener" referrerpolicy="origin">https://soundcloud.com/ar_d2?fbclid=IwAR02X3cYlSmLXePiCJmSQW84Tg4psJDNBNJbLLSiB0VU1Hg9y3ZqYuZgQRI</a></p>
<p><br></p>
<p>Special thanks to the playtesters, teachers and ISART Digital. </p>
<p class="text-center">______</p>
<p>The game contains only one level.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/qLCjRk1p_fA" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDA2OTI1LzIwMjAzNDcuanBn/original/lH2Jlv.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA2OTI1LzIwMjAzNTkuanBn/original/SmOgAf.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA2OTI1LzIwMjAzNTYuanBn/original/PSoaem.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA2OTI1LzIwMjAzNTcuanBn/original/FgC00q.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA2OTI1LzIwMjAzNTguanBn/original/iyt8My.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNDA2OTI1LzIwMjAzNjEuanBn/original/NrMYsb.jpg]]
<p><strong>五德 (Wu De) - The Five Powers</strong> is a narrative RPG - a <strong>Shared Narrative</strong>. It is setting agnostic, which means it you can play 五德 - The Five Powers in any setting you choose. Creating your own setting is part of setting up your unique game experience.</p>
<blockquote>五德 - The Five Powers<em> is like the Base Game/SRD of the Element Dice System. It is a toolbox for your own creations!</em></blockquote>
<p>五德 - The Five Powers is powered by the <a href="https://wuderpg.wordpress.com/element-dice-system-2/" target="_blank" rel="nofollow noopener">Element Dice System</a>, a system based on the east-asian philosophy of Yin & Yang and the 5 Powers, or Elements.</p>
<p>The game requires only 6 d6 in two different colors (3 white dice, 3 black dice - or any 2 colors you choose). But you can easily create your own Element Dice with some creativity.</p>
<h3>Quick Guide</h3>
<p>You can also find a <a href="https://wuderpg.itch.io/quick-guide" target="_blank">Quick Guide here</a>.</p>
<h3>Element Dice Games:</h3>
<ul><li><a href="https://wuderpg.itch.io/mariann-soul-detective" target="_blank">Mariann: Soul Detective</a></li><li><a href="https://wuderpg.itch.io/returning-maiden" target="_blank">歸妹 - Returning Maiden</a></li><li><a href="https://wuderpg.itch.io/fog-spirit-of-federsee" target="_blank">Fog Spirit of Federsee</a></li><li><a href="https://wuderpg.itch.io/sunken-island" target="_blank">Sunken Island</a></li></ul>
<p><br></p>
<p>*We want to encourage you to purchase through Paypal because this leaves more for the creators than credit card purchases.*</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTY5ODA5LzI5OTcwMDkucG5n/original/45AX49.png]]
<p><strong>五德 (Wu De) - The Five Powers</strong> is a narrative RPG - a <strong>Shared Narrative</strong>. It is setting agnostic, which means it you can play 五德 - The Five Powers in any setting you choose. Creating your own setting is part of setting up your unique game experience.</p>
<blockquote>五德 - The Five Powers<em> is like the <strong>Base Game/SRD of the Element Dice System</strong>. It is a <strong>toolbox for your own creations!</strong></em></blockquote>
<p>五德 - The Five Powers is powered by the <a href="https://wuderpg.wordpress.com/element-dice-system-2/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">Element Dice System</a>, a system based on the east-asian philosophy of Yin & Yang and the 5 Powers, or Elements.</p>
<p>The game requires only 6 d6 in two different colors (3 white dice, 3 black dice - or any 2 colors you choose). But you can easily create your own Element Dice with some creativity.</p>
<h2 class="text-center"><a href="https://wuderpg.itch.io/wude-2e" target="_blank">You can find the full game here!</a></h2>
<h3></h3>
<h3>Use WuDe as an SRD</h3>
<p>The game mechanics in WuDe - The Five Powers are a basic game experience <strong>you can easily hack</strong>. There is already a <a href="https://itch.io/c/1196932/five-powers-jam-collection" target="_blank">whole group of games from two game jams</a> that show how versatile the Element Dice System is.<br></p>
<p>To use the WuDe - The Five Powers as SRD for your game, simply attribute us in the following form - and drop us a message on Twitter @wuderpg, so we can cheer you on:</p>
<p>------</p>
<p>This game is Powered by the Elements, based on the WuDe - The Five Powers designed by Ralf Mayenberger, WuDeRPG. This game is in no way affiliated with Ralf Mayenberger or WuDeRPG.</p>
<p>------</p>
<p>You can use this png in your game booklet:</p>
<p class="text-right"><img src="https://img.itch.zone/aW1nLzc2Mzg0MDgucG5n/original/jBeAbu.png" alt="Powered By The Elements" title="Powered By The Elements" loading="lazy"></p>
<figcaption>Powered by The Elements</figcaption>
<p></p>
<h3>Quick Guide</h3>
<p>You can also find a <a href="https://wuderpg.itch.io/quick-guide" target="_blank">Quick Guide here</a>.</p>
<h3>Element Dice Games:</h3>
<p>There are already too many Element Dice games to give a shout-out to all of them, but we want to highlight some that are exceptional or currently itchfunding:</p>
<h4>Clean-Up Crew</h4>
<p><a href="https://wuderpg.itch.io/clean-up-crew" target="_blank">Clean-Up Crew</a> is currently itchfunding for artwork from a diverse team of 6 artists from around the world and with representation from the LGBTQ+ community. Clean-Up Crew is a fast paced power fantasy, illuminated by LUMEN. You play Cleaners that get called to clean up Messy Cases for Soul Detectives, and that means one thing and one thing alone: <strong>Kick serious Monster Ass!</strong></p>
<h4>Mariann: Soul Detective</h4>
<p><a href="https://wuderpg.itch.io/mariann-soul-detective" target="_blank">Mariann: Soul Detective</a> is the dark and somber counterpart to Clean-Up Crew. Mariann is a quiet game for two that takes you through the transformation from a gifted young person to a Soul Detective - equipped with magic powered by the 5 Elements!</p>
<h4>The Moment You Were Born</h4>
<p><a href="https://wuderpg.itch.io/the-moment-you-were-born" target="_blank">The Moment You Were Born</a> is probably the most unique experience you will come across here on itch - so exceptional, that we didn't call it a game to avoid any misunderstandings. But it still takes the Element Dice System and uses it in an extraordinary way.</p>
<h4>An Affair of Honor</h4>
<p><a href="https://wuderpg.itch.io/an-affair-of-honor" target="_blank">An Affair of Honor</a> is the proof that itchfunding works! Funded in under 5 minutes - An Affair of Honor delivers fun in a way you never used Domino tiles before!</p>
<h4>Sacred Forge</h4>
<p><a href="https://peachgardengames.itch.io/sacred-forge" target="_blank">Sacred Forge</a> by the talented Cat of Peach Garden Games is currently itchfunding to support the Actual Play Podcast Roar To Heaven of their LUMEN game Blazing Hymn - everything excellent!</p>
<h4>Sageuk! - Roleplay in Joseon</h4>
<p><a href="https://hessan-yongdi.itch.io/sageuk-roleplay-in-joseon" target="_blank">Sageuk! - Roleplay in Joseon</a> by Hessan Yongdi showcases the 5 Elements in a historical Korean setting and provides great guidance on how to use regular d6 with the Element Dice System.</p>
<p><br></p>
<p>*We want to encourage you to purchase through Paypal because this leaves more for the creators than credit card purchases.*</p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNTY5ODA5LzI5OTcwMDkucG5n/original/45AX49.png]]
<p><strong>YBit</strong><strong> </strong>is a pixelated platformer adventure.</p>
<p><strong>About the game</strong><br></p>
<p>You will be playing as a small hero made of information, trying to escape from a program that has crashed. Avoiding errors, not falling down and getting to the exits will be your mission.<br></p>
<ul><li>100 levels</li><li>Pixel art</li><li>A background story</li><li>16 different types of platforms</li><li>Full keyboard and joystick support
</li></ul>
<p><strong> How to play<br></strong></p>
<p>Just move around with the arrows and press space to talk.<br></p>
<p><strong>About me<br></strong></p>
<p>My name is Facundo and I have made around 40 games that are public and free to play. You can check them on my <a href="http://monoflauta.com/portfolio/games/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">website</a> if you are interested!<br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/DusH7GQwXh8" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTU1Mzk4Lzc0OTczOS5wbmc=/original/JRO7%2B0.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU1Mzk4Lzc0OTc0NC5wbmc=/original/5IQmN5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU1Mzk4Lzc0OTc0NS5wbmc=/original/E8Hx0h.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU1Mzk4Lzc0OTc0Ni5wbmc=/original/gsUxIj.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU1Mzk4Lzc0OTc1My5wbmc=/original/zpXwzO.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMTU1Mzk4Lzc0OTc1Mi5wbmc=/original/B38f0x.png]]
<p><img src="https://img.itch.zone/aW1nLzEzMTMyNTcucG5n/original/6gcvHa.png" loading="lazy">Yi and the Thousand Moons is a short video game musical writ<dfn class="">ten and developed by </dfn>David Su. Through the course of several original interactive songs, featuring a full cast and live band, the game weaves a story of the archer Yi's journey to save her village.</p>
<p>Darkness is expanding, and the gods plan to combat it by harvesting moonlight. They want the legendary archer Yi to shoot the moons down, but the villagers have warned her that the moons are what protect the earth from stardust. Help Yi rescue her village from catastrophe!</p>
<p>Starring:<br>Dominique Star as Yi<br>Laila Smith as Villager Qing<br>Magnus Ferguson as Villager Wen<br>Reid Jenkins as Villager Zhi<br>Wesley Kwok as God Shui<br>Yuyu Feng as God Mu<br>Gabriel Zucker as God Huo</p>
<p>Additional Musicians:<br>Siddhu Anandalingam (saxophones)<br>Reid Jenkins (violin)<br>Gabriel Zucker (guitar)</p>
<p><strong>Key Features</strong></p>
<ul><li>A unique interactive musical experience in which all the levels are songs to be played through (in both senses of the word!)</li><li><dfn class="">Seven original songs and </dfn><dfn class="">six preludes composed by </dfn>David Su, starring a full cast and live band</li><li>Play as Yi, a legendary archer who has been commanded by the gods to shoot down all of the moons</li><li>Enter a world in which all your interactions with characters occur through music</li></ul>
<p><strong>Awards</strong></p>
<p>- Nominated in the Audio Design category at the <a href="https://steamcommunity.com/linkfilter/?url=http://tiga.org/awards/2017-shortlist" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><dfn class="">2017 TIGA Games Industry </dfn>Awards</a><br>- Nominated for Best Style at the <dfn class=""><a href="https://steamcommunity.com/linkfilter/?url=https://www.thebitawards.com/awards" target="_blank" rel="nofollow noopener" referrerpolicy="origin">2017 Bit Awards</a></dfn><br>- Best Arthouse Finalist in the Indie Z<dfn class="">one at </dfn><span class=""><a href="https://dreamhack.com/austin/indie-zone" class="" rel="nofollow noopener" referrerpolicy="origin">DreamHack Austin 2018</a></span><br>- Finalist in the <span class=""><a href="http://indieprize.org/usa2018/" class="" rel="nofollow noopener" referrerpolicy="origin">Indie Prize Showcase</a></span> at Casual Connect USA 2018<br>- Official selection in the <span class=""><a href="http://playdategameshow.com/" class="" rel="nofollow noopener" referrerpolicy="origin">Playdate Game Show</a></span> at LA Zine Fest 2018<br>- Entrant in the <a href="http://www.igf.com/article/igf-2018-celebrates-bumper-crop-diverse-and-exciting-entries" target="_blank" rel="nofollow noopener" referrerpolicy="origin"><dfn class="">2018 Independent Games Festival</dfn></a><br>- Showcased at Playcrafting’s <dfn class="">2017 Fall Play Game </dfn>Expo<br>- Official artwork selection at the <span class=""><a href="https://steamcommunity.com/linkfilter/?url=http://hackingarts.com/tech-expo-2017" target="_blank" rel="nofollow noopener" referrerpolicy="origin">MIT Hacking Arts 2017</a></span> exhibition</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/XPHa3O28PUs" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMTg2NDcyLzExNjA3MTMuanBn/original/GWeZ43.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg2NDcyLzExNjA3MTUuanBn/original/fV3kYr.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg2NDcyLzExNjA3MTcuanBn/original/R9oxPC.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg2NDcyLzExNjA3MTIuanBn/original/o8LogA.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg2NDcyLzExNjA3MTguanBn/original/6n%2FJVo.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg2NDcyLzExNjA3MTYuanBn/original/20BAG3.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMTg2NDcyLzExNjA3MTQuanBn/original/u05pJv.jpg]]
<p>A confusing campground. Weak characters. Invisible items and weapons. Confounding play. And a purple and teal Jason?</p>
<p>This was <em>Friday the 13th</em> on the NES, a game frequently panned for being clumsy, incomprehensible, and far too hard.</p>
<p>And almost every modern horror game owes it a debt, whether they know it or not.</p>
<p>The NES <em>Friday the 13th </em>broke new ground in horror, establishing the use of confusion and nebulous rules to create a compelling mystery. It created pressure and despair through its clever use of hidden items, keeping players from becoming too powerful. It also created a powerful stalker in the form of Jason, using his power and shocking appearances to pave the way for the relentless monsters that would haunt our playthroughs of <em>Amnesia</em>, <em>Resident Evil 3</em>, <em>Clock Tower</em>, and more.</p>
<p>Despite its hated reputation, <em>Friday the 13th</em> established trends back in 1989 that would continue to shape horror to the present. It would also ask questions few other horror games would dare. Should horror be pleasant, or should it crush us with fear and hopelessness? Can we make lives truly matter in the disposable existence of a video game?<strong></strong></p>
<p>Featuring interviews with journalists and game developers of various disciplines, "YOU AND YOUR FRIENDS ARE DEAD. – An Unofficial Analysis of LJN's Friday the 13th" is an attempt to break down the various horror elements of the game and how they make <em>Friday the 13th</em> into a misunderstood masterpiece, and one of the most important entries in the genre.</p>
[img width=500 [https://img.itch.zone/aW1nLzIwMTQ1MTguanBn/original/k7lUuw.jpg]]
<p>You Are A Whale Also Part 1 is the spiritual successor to You Are A Whale. Become a whale, live the life of the mighty being in a very serious absolutely realistic game is definitely meant to simulate what actual whale life is like. Whales.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/lFtSO5Ap4Yk" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvNDQ5Mjc5LzIyNzI3MjAucG5n/original/xMW05S.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQ5Mjc5LzIyNzI3MjEucG5n/original/Sb9Rth.png]][img width=500 [https://img.itch.zone/aW1hZ2UvNDQ5Mjc5LzIyNzI3MTkucG5n/original/oy0Twd.png]]
<p>I had posted that I hadn't seen anyone thinking about playing a MOSAIC Strict game, and <a href="https://wastelandofenchantment.itch.io/">Matt Bohnhoff</a> replied that he thought it was because no one had made a chargen system. And duh, he was totally right. So I knew I had to make one. And this is it. It's the fourth <a href="http://blog.trilemma.com/2021/02/nothing-at-bottom-mosaic-strict-rpg.html" rel="nofollow noopener" referrerpolicy="origin">MOSAIC Strict</a> system I've made. <br></p>
<p>Let me know what you think!</p>
<p>Minimum price $3.00. Suggested price $4.00. But if the price is a hardship to you, please email me at paul@halfmeme.com, or DM me on Twitter @paulczege, and I'll get you a download key, no questions asked.</p>
<p>Art by by Jesús Langarica.<br></p><p></p>
<p></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTk1NjY0LzU2NzUwNjIucG5n/original/Mu1%2F9d.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTk1NjY0LzU2NzUwNjEucG5n/original/%2BR0%2Bhu.png]]
<h1>Transcendent Roguelike Solitaire</h1>
<p><em>You have perished, but the fungal spores that suffuse your corpse cannot be destroyed so easily. After a timeless time, you return to a body, though you don’t remember if it is yours or not. You are reconstituted, but also transformed.</em></p>
<p>This game represents a risky, cyclical search for meaning in a vast and hostile mycological landscape. Your personal power is tracked in the playing cards kept in front of you. If you win the battles in the forest, your power will increase. The forest is dealt in front of you, explored, shuffled, and dealt again. Sometimes you will find what you are looking for in the forest before you die. Sometimes not.<br></p>
<h3>Roguelike Solitaire</h3>
<p>Fight monsters in the forest! Deal quick card layouts for yourself and the forest, resolve the round, do it again. The more rounds you play, the more you level up your power. When you beat the game, you could stop. Or you could mark down a transcension bonus and go around again, stronger from the start.
</p>
<h3>
</h3>
<h3>Inspirations</h3>
<p>This game was inspired in equal parts by Peach Garden Games <a href="https://peachgardengames.itch.io/apex-predator">Apex Predator</a>, the videogame genre of “idle games”, and a meme about mushrooms. <br></p>
<h3>What's in the Box?</h3>
<ul><li>Full color PDF for screen.</li><li>A more sedate PDF for printing at home. The print friendly version has no background texture for pages or blocks of text, and the images have all been faded out so they don't burn out your printer. This might also be the high-contrast version.</li></ul>
[img width=500 [https://img.itch.zone/aW1hZ2UvOTY5Mzc0LzU5Njc2ODEuanBn/original/0qPHwf.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY5Mzc0LzU5NDQxMzQuanBn/original/pMlEHw.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY5Mzc0LzU5NDQxMzIuanBn/original/wcp0mw.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY5Mzc0LzU5MTQ2MDUucG5n/original/El4p16.png]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY5Mzc0LzU5NDQxNTcuanBn/original/0r9nin.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY5Mzc0LzU5Njc4MDkuanBn/original/GRw5A%2F.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvOTY5Mzc0LzU5Njc5ODUuanBn/original/W9xo4H.jpg]]
<p>You have died. You are now in the <strong>Reaper's Game</strong>. You will be asked questions, and your answers guide your story. You will face <strong>Missions</strong>. You will face <strong>The Noise</strong>. You will face the <strong>Game Master</strong>. <strong>You Have 7 Days</strong>. Will you survive, or face <strong>Erasure</strong>?<br></p>
<p>----</p>
<p>You Have 7 Days is a two page, diceless tabletop roleplaying game for 3+ players, one person to play as the<strong> Game Master</strong> and the others to play as <strong>Contestants,</strong> where the story moves forward by answering questions about the situations your characters face<strong>. </strong></p>
<p>The <strong>Contestants </strong>are people who have died and are now playing the<strong> Reaper's Game </strong>for a chance to earn their life back. The <strong>Reaper's Game </strong>is 7 days long and requires you to beat <strong>Missions</strong>, defend yourself from <strong>The Noise,</strong> and beat the <strong>Game Master</strong> to win. To participate and make it past <strong>Day 1</strong>, you will need to make a <strong>Pact </strong>with other <strong>Contestants </strong>in order to participate, so there is an assumption of teamwork on the part of the part of the players playing this role. The <strong>Game Master </strong>is both a character in the roleplaying game, issuing <strong>Missions</strong> to the <strong>Contestants, </strong>providing obstacles for the <strong>Contestants </strong>to overcome, and fighting the <strong>Contestants </strong>on <strong>Day 7</strong>, while also acting as the game master of <strong>You Have 7 Days</strong> itself, providing <strong>Setups </strong>and <strong>Questions </strong>for the other players to answer, keeping track of the flow of gameplay, and so on.</p>
<p>The way you progress through your story is through <strong>Setups </strong>and <strong>Questions</strong>. <strong>Setups </strong>are ways to establish the scene, and they can be as long or as short as you'd like. <em>You wake up in a crowded part of town. You were not here yesterday. </em><strong>Questions </strong>will be follow-ups to the <strong>Setup</strong>, and the players will answer them for their<strong> Contestants</strong> or <strong>Game Master</strong> honestly. <em>What is the last thing you remember?</em></p>
<p>Page 1 has the standard <strong>Setups </strong>and <strong>Questions </strong>for <strong>Day 1</strong> of the <strong>Reaper’s Game</strong>, serving as a way to give the players playing as <strong>Contestants </strong>a way to start thinking about their character before the game starts. Page 2 has premade <strong>Setups</strong> and <strong>Questions</strong> that the <strong>Game Master</strong> can use throughout the <strong>7 Days, </strong>but they will need to come up with more throughout the game.
</p>
<p>----</p>
<p>This was made in 3.5 hours on Twitch! This has not been playtested at all! I hope you enjoy this!</p>
[img width=500 [https://img.itch.zone/aW1nLzU5NDYyMjQucG5n/original/Py6YHd.png]]
<p>You have no idea how long it's been since you last set foot outside your cramped little apartment. You don't really talk to anyone. You can't focus on work. You barely have any appetite to speak of, literally and figuratively. Even casually reading Twitter makes you anxious.</p>
<p>Somehow, you thought moving to a new city would help you meet people you actually like. That you'd find fun activities to do and better opportunities all around. You used to be pretty good at faking your way around being a social butterfly. People actually seemed to like you, and the stuff you made and performed. But now? You can't even remember being that person.</p>
<p>Maybe you should go outside. Maybe it will help.</p>
<p><em>CONTENT WARNING: This is a game based on my experience having a major depressive episode. </em><em>Please do whatever you need to do to be able to engage safely with this subject matter.</em></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjA0MzkzLzk1NDM4Ny5wbmc=/original/DKvk8X.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0MzkzLzk1NDM4Ni5wbmc=/original/RimUkV.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0MzkzLzk1NDM4OS5wbmc=/original/FSzMOg.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjA0MzkzLzk1NDM4OC5wbmc=/original/3y1QtZ.png]]
<br>
<h2></h2><h2>You have been trapped in a time loop with your future self. They have committed a terrible crime in the near future, and the only way you can escape the loop is to convince them of the wrongness of their actions.</h2>
<p>As you progress in your conversation with your future self, it becomes very apparent that something is amiss. Someone is lying to you. The question is: who? And why?<br><br>If you want to be free, make sure you figure out the truth.<br><br>Think carefully. Think strategically.<br><br><em>...and good luck.</em><br></p>
<hr>
<br>
<p><strong>Your Future Self </strong>is a 1-2 hour long story-driven experimental text adventure with unique conversational mechanics, time loop based gameplay, and an emotionally gripping time travel mystery set against the backdrop of a darkly realistic vision of our world ravaged by climate change.</p>
<p>The full soundtrack is available for free <a href="https://contortionistgames.bandcamp.com/album/your-future-self" rel="nofollow noopener" referrerpolicy="origin">on bandcamp</a>.</p>
<p><em>WARNING: This game contains flashing images. If you experience epileptic seizures or blackouts when exposed to certain light patterns or flashing lights then immediately discontinue use of this game and and consult your physician before resuming gameplay.</em><br></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/N13OJbbKVMc" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMzIzOTU1LzE2MDAyMzcucG5n/original/z2NJdu.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIzOTU1LzE2MDAyNDIucG5n/original/qFPtzW.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIzOTU1LzE2MDAyMzgucG5n/original/0YFZLM.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIzOTU1LzE2MDAyMzkucG5n/original/PA5rVo.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIzOTU1LzE2MDAyNDAucG5n/original/y2097i.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMzIzOTU1LzE2MDAyNDEucG5n/original/0xOGRy.png]]
<p>This is the 2nd game I ever made, which I did in high school waaaaay back in 2009. I wanted to put it here so I could help with the <a href="https://itch.io/t/1411702/indie-bundle-for-palestinian-aid">Indie Bundle for Palestine</a>.<br></p>
[img width=500 [https://img.itch.zone/aW1nLzYwNjgzODAucG5n/original/tl3zir.png]]
<h1 class="text-center">- a game about speed -</h1>
<p></p>
<blockquote class="text-center"><em>"damn, that's pretty fast" <br>- the developer, to himself</em></blockquote>
<h2 class="text-center">test your skill and beat the timer in ten challenging-ass levels laid out in beautiful minimalist style</h2>
<p></p>
<h2 class="text-center">a variety of unique color palettes, an original soundtrack, and many restarts await you </h2>
<p></p>
<p class="text-center"><em>"yo watch out, your timer's almost o- oh." <br>- shocked playtest bystander</em></p>
<p></p>
<p><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjMxNTM0LzExMDQyODQucG5n/original/MXWKh9.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxNTM0LzExMDQyODUucG5n/original/TWGuW5.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxNTM0LzExMDQyODYucG5n/original/B%2Fxer6.png]][img width=500 [https://img.itch.zone/aW1hZ2UvMjMxNTM0LzExMDQyODcucG5n/original/W%2BD4sj.png]]
<p>Znax is a sort of puzzle / arcade game where you as the player need to select 4 blocks of the same color and form rectangles as big as you can. By doing this you will erase all blocks in this rectangle and they will be replaced by new blocks. You keep on doing this till the time runs out, and try to gain your highest score possible.</p>
<p> There are two game modes, Relative timer and fixed Timer, in the first mode you'll also gain extra time for deleting blocks so you can play longer if you are fast enough. With the second mode you don't get extra time for deleting blocks but just points added to your score so here you try to get the highest amount of points in the given time period.</p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/nlEwfXDakhw" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvODgwNzUzLzQ5NTgzMjIucG5n/original/ER%2FJ9%2B.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgwNzUzLzQ5NTgzMjQucG5n/original/Un0fOd.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgwNzUzLzQ5NTgzMjMucG5n/original/2MY%2BoN.png]][img width=500 [https://img.itch.zone/aW1hZ2UvODgwNzUzLzQ5NTgzMjUucG5n/original/SaPY17.png]]
<h3><a href="https://store.steampowered.com/app/1252370/Walking_Simulator_A_Month_Club_Complete_Edition/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">[Please wishlist the Complete Edition on Steam! 40+ walking sims!]</a></h3>
<blockquote><br> [Y]our dreams trap you inside a seemingly endless version of that unreal landscape and the synth warbles on and you feel curiosity and unease but not quite fear? And you walk and you walk and you run and you run and you glide and leap and the landscape very slowly reveals anomalous objects like buildings that aren’t buildings and elevated highways that aren’t highways and incomprehensibly large crystals and citrine shards that glide through the sky like angular goldfish and it’s just you and the music and the landscape possibly forever and sometimes you move with such terrible speed that you fear you have become something terrible? </blockquote>
<p> <a href="https://www.rockpapershotgun.com/2019/01/02/best-pc-games-of-2018/5/" target="_blank" rel="nofollow noopener" referrerpolicy="origin">-Rock Paper Shotgun</a><br><br></p>
<p>Thank you to all my <a href="https://www.patreon.com/connorsherlock" target="_blank" rel="nofollow noopener" referrerpolicy="origin">patreon</a> supporters for making these games possible.</p>
<p><del>---------------------------------------------------------------------</del></p>
<p></p>
<p><strong>Explore distant planets and hidden planes in this bundle of infinite exploration games in two acts.</strong><br></p>
<p></p>
<p><del>---------------------------------------------------------------------</del></p>
<p>Controls:</p>
<p>WSAD: move<br>Mouse: look<br>Shift: run<br>Space: jump<br>Escape: quit (act one), pause (act two)</p>
<p>xbox 360 controller (windows only)<br>left stick: move<br>right stick: look<br>left trigger: run<br>A button: jump<br>Start button: quit (act one), pause (act two)</p>
<p><del>---------------------------------------------------------------------</del><br></p>
<p>ACT ONE (planes) should run on most machines. </p>
<p>ACT TWO (planets) requires a dedicated graphics card.<br></p>
<p>There are multiple games in the zip file, so it won't auto-install using the itch.io app.</p>
<p>Enjoy :)</p>
<p></p>
<iframe width="720" height="450" src="https://www.youtube.com/embed/4irARUjLtrM" frameborder="0" allowfullscreen></iframe>
[img width=500 [https://img.itch.zone/aW1hZ2UvMjUzNTI3LzEyMTM3NjAuanBn/original/giu3cB.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjUzNTI3LzEyMTM3NjEuanBn/original/RIB3uj.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjUzNTI3LzEyMTM3NTkuanBn/original/2J7Ukk.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjUzNTI3LzEyMTM3NTguanBn/original/waopTX.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvMjUzNTI3LzEyMTM3NjIuanBn/original/rPrjDp.jpg]]
<p><em>A TTRPG of Freerunning and Hubris</em></p>
<p>You are urban animals.</p>
<p>In the great city of the Zoopolitan Administrative Region, you're supposed to know your place. Obey the law. Work towards a harmonious society.</p>
<p>But not you. You're Skybridge Goons. The few, the young, the reckless. You run apart from the herd, in the high places of the city, in defiance of the law.</p>
<p>Your pride will take you higher and farther than any creature has gone.</p>
<p>It will also be your doom.</p>
<ul><li>A roleplaying game for 1-4 people, no game master needed! Designed for short-term (1-2 session) play.</li><li>Each player needs 2 six-sided dice and something to write on to play.</li><li>Play furry freerunning fools, performing daredevil stunts and becoming increasingly convinced of your invincibility.</li><li>Random Edges you can earn to upgrade your running, combat skill or self-confidence. </li><li>Rules for how your wild running will end, one way or another.</li><li>An introduction to the Zoopolitan Administrative Region and its diverse districts.</li><li>A hack of the Silver Ennie Award-winning <a href="https://natetreme.itch.io/tunnelgoons">Tunnel Goons</a> by Nate Treme. Featuring tools from <a href="https://briebeau.itch.io/script-change">Script Change</a> by Beau Sheldon. Inspired by <a href="https://dungeoncommandr.itch.io/plot-armor">plot ARMOR</a> by Orion Black.</li><li>20 pages, black-and-white, formatted for A5 (you can print as a booklet!)</li></ul>
<p>This game is still in development; purchases will help fund art commissions and further design and layout.</p>
<p>This game is a companion to <a href="https://roleoverplaydead.itch.io/zfb-undercover-edition">Zoopolitan Future Blues</a>.</p>
<p>Game Design | <a href="https://twitter.com/tunkaipoh" rel="nofollow noopener" referrerpolicy="origin">Kai Poh (@tunkaipoh)</a> </p>
<p>Illustrations | <a href="http://farideacs.xyz" rel="nofollow noopener" referrerpolicy="origin">Farid Nad</a> | <a href="http://juliustan.artstation.com" rel="nofollow noopener" referrerpolicy="origin">Julius Tan</a></p>
<p><br></p>
<p>"...if you want to tell a story about exhilaration and tragedy, about living fast and dying (externally or internally) young, this is the perfect system for it." - <a href="https://itch.io/profile/kumada1">kumada1</a><br></p>
[img width=500 [https://img.itch.zone/aW1hZ2UvNjkzNjU0LzY1NzMyNjUuanBn/original/Ud%2FZ20.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkzNjU0LzY1NzMyNjYuanBn/original/rQC21h.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkzNjU0LzQxOTM3NzYuanBn/original/tt0sW9.jpg]][img width=500 [https://img.itch.zone/aW1hZ2UvNjkzNjU0LzQxOTM3NzguanBn/original/lCAqaA.jpg]]