All of Crates is here, in Quantum's game language: crates.q, with rooms/dock.tmx, rooms/loft.tmx, rooms/warehouse.tsx, rooms/yard.tmx, compiled for Godot 4.4.1, with no script
besides. Point at a tag or an attribute to see what it does; a tag opens its entry in
the language's reference.
<q:applicationid="crates"type="game"><!-- Crates: a box-pushing puzzle on a dockside, the game that drives Phase 3 of PLAN_GAMES_3.md. Three rooms drawn in Tiled (rooms/*.tmx): their walls, the harbour's water, the pads and every crate, gate and key are the maps', and so are the doors between them, the sign by each door, a gull's way over the water and each room's title and hint. The worker walks a cell at a time with the keys, or goes where it is clicked by the shortest way, and pushes what it walks into. The art is drawn for it by scripts/art/crates.py (CC0); the sounds are Kenney's Pixel Platformer (CC0). --><q:setname="message"value=""/><!-- the crates of the room standing on a pad: a pad is a tile of the map's pads layer --><q:functionname="placed"><q:setname="n"value="0"type="number"/><qg:for-eachtag="crate"var="c"><q:ifcondition="{tile_at(c.col, c.row, 'pads') != 0}"><q:setname="n"value="{n + 1}"/></q:if></qg:for-each><q:returnvalue="{n}"/></q:function><!-- the gates that close a room open, and the camera goes to show it --><q:functionname="open_gates"><qg:for-eachtag="gate"var="g"><q:ifcondition="{g.state == 'shut'}"><qg:camera-totarget="g"zoom="2"seconds="0.5"hold="0.8"/><qg:emitparticles="dust"at="g"/><qg:destroytarget="g"/></q:if></qg:for-each><qg:playsound="open"/></q:function><qg:inputaction="restart"keys="R"/><!-- warehouse.png: 1 concrete, 2 brick, 3 a corner, 4 an edge, 5 a pad, 6 planks, 7 an arrow, 8 stripes. water.png: the harbour's four frames in turn, and a pier. --><qg:tilesetname="warehouse"src="assets/warehouse.png"tile="16"/><qg:tilesetname="water"src="assets/water.png"tile="16"><qg:tileframe="0"frames="4"fps="4"/></qg:tileset><qg:spritesheetname="people"src="assets/people.png"tile="16"/><qg:spritesheetname="faces"src="assets/faces.png"tile="32"/><qg:soundbus="effects"name="push"src="assets/kenney/audio/block.ogg"/><qg:soundbus="effects"name="open"src="assets/kenney/audio/powerup.ogg"/><qg:soundbus="effects"name="pick"src="assets/kenney/audio/coin.ogg"/><qg:soundbus="effects"name="done"src="assets/kenney/audio/win.ogg"/><qg:particlesname="dust"preset="smoke"color="#c8c0b0"/><qg:particlesname="cheer"preset="confetti"/><!-- a crate; a barrel is one, drawn round --><qg:prefabname="Crate"tag="crate"sheet="people"frame="6"hitbox="14x14"solid="true"pushable="true"/><qg:prefabname="Barrel"extends="Crate"frame="7"/><qg:prefabname="Foreman"tag="foreman"sheet="people"frame="4"hitbox="14x14"solid="true"><qg:statename="waiting"initial="true"/><qg:statename="pleased"frame="5"/></qg:prefab><!-- a gate is shut until the room's crates are in place; one with state locked in the map opens with the key --><qg:prefabname="Gate"tag="gate"sheet="people"frame="8"hitbox="16x16"solid="true"><qg:statename="shut"initial="true"/><qg:statename="locked"frame="9"/></qg:prefab><qg:prefabname="Key"tag="key"sheet="people"frame="10"hitbox="12x12"/><qg:prefabname="Gull"tag="gull"sheet="people"frame="11"hitbox="8x8"ai="path"speed="40"layer="2"><qg:animationname="fly"frames="11,12"fps="4"/><qg:on-screen-exit><qg:destroy/></qg:on-screen-exit></qg:prefab><!-- on a phone: what the keys do, under a finger, in every scene --><qg:touch-buttonaction="restart"label="R"x="304"y="176"size="24"/><qg:languagelang="pt"name="Português"><qg:phrasetext="New game"as="Novo jogo"/><qg:phrasetext="Continue"as="Continuar"/><qg:phrasetext="Language"as="Idioma"/><qg:phrasetext="PADS"as="PLATAFORMAS"/><qg:phrasetext="THE DOCK"as="O CAIS"/><qg:phrasetext="THE YARD"as="O PÁTIO"/><qg:phrasetext="THE LOFT"as="O SÓTÃO"/><qg:phrasetext="PUSH THE CRATES ONTO THE PADS."as="EMPURRE AS CAIXAS PARA AS PLATAFORMAS."/><qg:phrasetext="THE KEY IS ON THE PIER."as="A CHAVE ESTÁ NO PÍER."/><qg:phrasetext="BARRELS PUSH LIKE CRATES."as="BARRIS SE EMPURRAM COMO CAIXAS."/><qg:phrasetext="THE GATE OPENS."as="O PORTÃO SE ABRE."/><qg:phrasetext="SHUT TILL THE CRATES ARE IN."as="FECHADO ATÉ AS CAIXAS ESTAREM NO LUGAR."/><qg:phrasetext="LOCKED. THE KEY IS ON THE PIER."as="TRANCADO. A CHAVE ESTÁ NO PÍER."/><qg:phrasetext="GOT THE KEY."as="PEGOU A CHAVE."/><qg:phrasetext="UNLOCKED."as="DESTRANCADO."/><qg:phrasetext="ALL STOWED. GOOD WORK."as="TUDO GUARDADO. BOM TRABALHO."/><qg:phrasetext="R: START THE ROOM OVER"as="R: RECOMEÇAR A SALA"/><qg:phrasetext="FOREMAN"as="CAPATAZ"/><qg:phrasetext="Morning. Two crates came in on the boat."as="Bom dia. Chegaram duas caixas no barco."/><qg:phrasetext="Push them onto the yellow pads. Need a hand?"as="Empurre-as para as plataformas amarelas. Precisa de ajuda?"/><qg:phrasetext="How do I push?"as="Como eu empurro?"/><qg:phrasetext="On it, boss."as="Deixa comigo, chefe."/><qg:phrasetext="Walk into a crate and it moves on, if nothing is behind it."as="Ande contra uma caixa e ela avança, se nada estiver atrás dela."/><qg:phrasetext="Or click a crate next to you."as="Ou clique numa caixa ao seu lado."/><qg:phrasetext="Stuck? R starts the room over."as="Travou? R recomeça a sala."/><qg:phrasetext="The gate opens when they are in place."as="O portão abre quando elas estiverem no lugar."/><qg:phrasetext="Last room. The barrels too."as="Última sala. Os barris também."/><qg:phrasetext="That's the lot. Good work!"as="É tudo. Bom trabalho!"/><qg:phrasetext="Another shift?"as="Mais um turno?"/><qg:phrasetext="Home time."as="Hora de ir para casa."/><qg:phrasetext="Options"as="Opções"/><qg:phrasetext="OPTIONS"as="OPÇÕES"/><qg:phrasetext="Sounds"as="Sons"/><qg:phrasetext="Full screen"as="Tela cheia"/><qg:phrasetext="on"as="sim"/><qg:phrasetext="off"as="não"/><qg:phrasetext="Back"as="Voltar"/><qg:phrasetext="Restart"as="Recomeçar"/></qg:language><qg:languagelang="es"name="Español"><qg:phrasetext="New game"as="Nueva partida"/><qg:phrasetext="Continue"as="Continuar"/><qg:phrasetext="Language"as="Idioma"/><qg:phrasetext="PADS"as="PLATAFORMAS"/><qg:phrasetext="THE DOCK"as="EL MUELLE"/><qg:phrasetext="THE YARD"as="EL PATIO"/><qg:phrasetext="THE LOFT"as="EL DESVÁN"/><qg:phrasetext="PUSH THE CRATES ONTO THE PADS."as="EMPUJA LAS CAJAS A LAS PLATAFORMAS."/><qg:phrasetext="THE KEY IS ON THE PIER."as="LA LLAVE ESTÁ EN EL MUELLE."/><qg:phrasetext="BARRELS PUSH LIKE CRATES."as="LOS BARRILES SE EMPUJAN COMO LAS CAJAS."/><qg:phrasetext="THE GATE OPENS."as="LA PUERTA SE ABRE."/><qg:phrasetext="SHUT TILL THE CRATES ARE IN."as="CERRADA HASTA QUE LAS CAJAS ESTÉN EN SU SITIO."/><qg:phrasetext="LOCKED. THE KEY IS ON THE PIER."as="CERRADA CON LLAVE. LA LLAVE ESTÁ EN EL MUELLE."/><qg:phrasetext="GOT THE KEY."as="TIENES LA LLAVE."/><qg:phrasetext="UNLOCKED."as="ABIERTA."/><qg:phrasetext="ALL STOWED. GOOD WORK."as="TODO GUARDADO. BUEN TRABAJO."/><qg:phrasetext="R: START THE ROOM OVER"as="R: EMPEZAR LA SALA DE NUEVO"/><qg:phrasetext="FOREMAN"as="CAPATAZ"/><qg:phrasetext="Morning. Two crates came in on the boat."as="Buenos días. Llegaron dos cajas en el barco."/><qg:phrasetext="Push them onto the yellow pads. Need a hand?"as="Empújalas a las plataformas amarillas. ¿Necesitas ayuda?"/><qg:phrasetext="How do I push?"as="¿Cómo empujo?"/><qg:phrasetext="On it, boss."as="Enseguida, jefe."/><qg:phrasetext="Walk into a crate and it moves on, if nothing is behind it."as="Camina contra una caja y avanza, si nada hay detrás."/><qg:phrasetext="Or click a crate next to you."as="O haz clic en una caja a tu lado."/><qg:phrasetext="Stuck? R starts the room over."as="¿Atascado? R empieza la sala de nuevo."/><qg:phrasetext="The gate opens when they are in place."as="La puerta se abre cuando estén en su sitio."/><qg:phrasetext="Last room. The barrels too."as="Última sala. Los barriles también."/><qg:phrasetext="That's the lot. Good work!"as="Eso es todo. ¡Buen trabajo!"/><qg:phrasetext="Another shift?"as="¿Otro turno?"/><qg:phrasetext="Home time."as="Hora de volver a casa."/><qg:phrasetext="Options"as="Opciones"/><qg:phrasetext="OPTIONS"as="OPCIONES"/><qg:phrasetext="Sounds"as="Sonidos"/><qg:phrasetext="Full screen"as="Pantalla completa"/><qg:phrasetext="on"as="sí"/><qg:phrasetext="off"as="no"/><qg:phrasetext="Back"as="Volver"/><qg:phrasetext="Restart"as="Reiniciar"/></qg:language><!-- ===== The title ===== --><qg:scenename="title"width="320"height="192"background="#20283a"><qg:hudposition="top-center"size="32"><qg:textvalue="{'CRATES'}"/></qg:hud><qg:menuposition="center"><qg:buttonlabel="New game"><qg:goto-scenename="dock"fade="0.3"/></qg:button><qg:buttonlabel="Continue"if="{has_save()}"><qg:continue/></qg:button><qg:buttonlabel="Options"><qg:goto-scenename="options"/></qg:button><qg:buttonlabel="{tr('Language') + ': ' + language()}"><qg:next-language/></qg:button></qg:menu></qg:scene><!-- ===== The dock: two crates, and the foreman to talk to ===== --><qg:scenename="dock"width="320"height="192"background="#20283a"save="true"><qg:tilemaptileset="warehouse"src="rooms/dock.tmx"/><qg:cursorplayer="1"grid="16"sheet="people"frame="13"/><qg:characterid="worker"controller="pointer"sheet="people"frame="0"x="8"y="88"hitbox="12x12"step-frames="10"><qg:animationname="idle"frames="0"/><qg:animationname="walk"frames="1,2"fps="12"/><qg:animationname="bump"frames="3"/><qg:on-collisionwith="crate"><qg:playsound="push"/></qg:on-collision><qg:on-collisionwith="sign"><q:setname="message"value="{tiled('hint')}"/></qg:on-collision><qg:on-collisionwith="foreman"><qg:saydialogue="foreman"/></qg:on-collision><qg:on-collisionwith="gate"><q:setname="message"value="SHUT TILL THE CRATES ARE IN."/></qg:on-collision></qg:character><qg:camerafollow="worker"bounds="tilemap"/><qg:dialoguename="foreman"size="9"speed="40"sheet="faces"><qg:linewho="FOREMAN"portrait="0"text="Morning. Two crates came in on the boat."/><qg:linewho="FOREMAN"portrait="0"text="Push them onto the yellow pads. Need a hand?"><qg:choicelabel="How do I push?"><qg:saydialogue="how"/></qg:choice><qg:choicelabel="On it, boss."/></qg:line><qg:linewho="FOREMAN"portrait="0"text="The gate opens when they are in place."/></qg:dialogue><qg:dialoguename="how"size="9"speed="40"sheet="faces"><qg:linewho="FOREMAN"portrait="0"text="Walk into a crate and it moves on, if nothing is behind it."/><qg:linewho="FOREMAN"portrait="0"text="Or click a crate next to you."/><qg:linewho="FOREMAN"portrait="0"text="Stuck? R starts the room over."/></qg:dialogue><qg:whencondition="{placed() == count('crate')}"><q:setname="message"value="THE GATE OPENS."/><q:callfunction="open_gates"/></qg:when><qg:on-inputaction="restart"><qg:goto-scenename="dock"/></qg:on-input><qg:hudposition="top-left"size="12"><qg:textvalue="{tr(tiled('title')) + ' ' + tr('PADS') + ' ' + str(placed()) + '/' + str(count('crate'))}"/><qg:textbind="message"/></qg:hud></qg:scene><!-- ===== The yard: the harbour, a key on the pier, a locked gate ===== --><qg:scenename="yard"width="320"height="192"background="#20283a"save="true"><qg:tilemaptileset="warehouse"src="rooms/yard.tmx"/><qg:cursorplayer="1"grid="16"sheet="people"frame="13"/><qg:characterid="worker"controller="pointer"sheet="people"frame="0"x="8"y="88"hitbox="12x12"step-frames="10"><qg:animationname="idle"frames="0"/><qg:animationname="walk"frames="1,2"fps="12"/><qg:animationname="bump"frames="3"/><qg:on-collisionwith="crate"><qg:playsound="push"/></qg:on-collision><qg:on-collisionwith="sign"><q:setname="message"value="{tiled('hint')}"/></qg:on-collision><qg:on-collisionwith="key"><qg:attachtarget="other"dy="-10"/><qg:playsound="pick"/><q:setname="message"value="GOT THE KEY."/></qg:on-collision><qg:on-collisionwith="gate"><q:ifcondition="{other.state == 'locked' and carrying(me, 'key') != null}"><qg:for-eachtag="key"var="k"><qg:destroytarget="k"/></qg:for-each><qg:emitparticles="dust"at="other"/><qg:destroytarget="other"/><qg:playsound="open"/><q:setname="message"value="UNLOCKED."/><q:elseifcondition="{other.state == 'locked'}"><q:setname="message"value="LOCKED. THE KEY IS ON THE PIER."/></q:elseif><q:else><q:setname="message"value="SHUT TILL THE CRATES ARE IN."/></q:else></q:if></qg:on-collision></qg:character><qg:camerafollow="worker"bounds="tilemap"/><qg:whencondition="{placed() == count('crate')}"><q:setname="message"value="THE GATE OPENS."/><q:callfunction="open_gates"/></qg:when><!-- now and then a gull, along the way drawn in the map --><qg:timerevery="420"from="60"><qg:spawnprefab="Gull"at="path"path="gull"/></qg:timer><qg:on-inputaction="restart"><qg:goto-scenename="yard"/></qg:on-input><qg:hudposition="top-left"size="12"><qg:textvalue="{tr(tiled('title')) + ' ' + tr('PADS') + ' ' + str(placed()) + '/' + str(count('crate'))}"/><qg:textbind="message"/></qg:hud></qg:scene><!-- ===== The loft: crates and barrels, and the foreman waiting at the end ===== --><qg:scenename="loft"width="320"height="192"background="#20283a"save="true"><qg:tilemaptileset="warehouse"src="rooms/loft.tmx"/><qg:cursorplayer="1"grid="16"sheet="people"frame="13"/><qg:characterid="worker"controller="pointer"sheet="people"frame="0"x="8"y="88"hitbox="12x12"step-frames="10"><qg:animationname="idle"frames="0"/><qg:animationname="walk"frames="1,2"fps="12"/><qg:animationname="bump"frames="3"/><qg:on-collisionwith="crate"><qg:playsound="push"/></qg:on-collision><qg:on-collisionwith="sign"><q:setname="message"value="{tiled('hint')}"/></qg:on-collision><qg:on-collisionwith="foreman"><q:ifcondition="{other.state == 'pleased'}"><qg:saydialogue="done"/><q:else><qg:saydialogue="last"/></q:else></q:if></qg:on-collision></qg:character><qg:camerafollow="worker"bounds="tilemap"/><qg:dialoguename="last"size="9"speed="40"sheet="faces"><qg:linewho="FOREMAN"portrait="0"text="Last room. The barrels too."/></qg:dialogue><qg:dialoguename="done"size="9"speed="40"sheet="faces"><qg:linewho="FOREMAN"portrait="1"text="That's the lot. Good work!"><qg:choicelabel="Another shift?"><qg:goto-scenename="dock"fade="0.5"/></qg:choice><qg:choicelabel="Home time."><qg:goto-scenename="title"fade="0.5"/></qg:choice></qg:line></qg:dialogue><qg:whencondition="{placed() == count('crate')}"><q:setname="message"value="ALL STOWED. GOOD WORK."/><qg:playsound="done"/><qg:for-eachtag="foreman"var="f"><qg:becometarget="f"state="pleased"/><qg:camera-totarget="f"zoom="2"seconds="0.5"hold="1"/><qg:emitparticles="cheer"at="f"/></qg:for-each></qg:when><qg:on-inputaction="restart"><qg:goto-scenename="loft"/></qg:on-input><qg:hudposition="top-left"size="12"><qg:textvalue="{tr(tiled('title')) + ' ' + tr('PADS') + ' ' + str(placed()) + '/' + str(count('crate'))}"/><qg:textbind="message"/></qg:hud></qg:scene><!-- ===== Options: how loud, the full screen, the keys; kept between runs ===== --><qg:scenename="options"width="320"height="192"background="#20283a"><qg:hudposition="top-center"size="24"><qg:textvalue="{tr('OPTIONS')}"/></qg:hud><qg:menuposition="center"size="12"><qg:sliderlabel="Sounds"bus="effects"/><qg:buttonlabel="{tr('Full screen') + ': ' + (tr('on') if fullscreen() else tr('off'))}"><qg:fullscreen/></qg:button><qg:rebindlabel="Restart"action="restart"/><qg:buttonlabel="Back"><qg:goto-scenename="title"/></qg:button></qg:menu></qg:scene></q:application>
<?xml version="1.0" encoding="UTF-8"?><mapversion="1.10"tiledversion="1.10.2"orientation="orthogonal"renderorder="right-down"width="20"height="12"tilewidth="16"tileheight="16"infinite="0"nextlayerid="8"nextobjectid="24"><properties><propertyname="title"value="THE DOCK"/><propertyname="hint"value="PUSH THE CRATES ONTO THE PADS."/></properties><tilesetfirstgid="1"source="warehouse.tsx"/><layerid="1"name="floor"width="20"height="12"><dataencoding="csv">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</data></layer><layerid="2"name="pads"width="20"height="12"><dataencoding="csv">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</data></layer><layerid="5"name="walls"width="20"height="12"><properties><propertyname="collision"type="bool"value="true"/></properties><dataencoding="csv">3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2147483651,536870916,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2684354564,536870916,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2684354564,536870916,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2684354564,536870916,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2684354564,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,536870916,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2684354564,536870916,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2684354564,536870916,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2684354564,536870916,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2684354564,536870916,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2684354564,1073741827,1073741828,1073741828,1073741828,1073741828,1073741828,1073741828,1073741828,1073741828,1073741828,1073741828,1073741828,1073741828,1073741828,1073741828,1073741828,1073741828,1073741828,1073741828,3221225475</data></layer><objectgroupid="6"name="things"><objectid="1"class="Foreman"x="48"y="48"width="16"height="16"/><objectid="2"class="Crate"x="64"y="80"width="16"height="16"/><objectid="3"class="Gate"x="304"y="80"width="16"height="16"/><objectid="4"class="Crate"x="80"y="112"width="16"height="16"/></objectgroup><objectgroupid="7"name="ways"><objectid="5"name="west"class="exit"x="0"y="80"width="16"height="16"><properties><propertyname="at"value="west"/><propertyname="to"value="dock"/></properties></object><objectid="6"name="east"class="exit"x="304"y="80"width="16"height="16"><properties><propertyname="at"value="west"/><propertyname="to"value="yard"/></properties></object><objectid="7"name="sign"class="zone"x="16"y="80"width="16"height="16"><properties><propertyname="tag"value="sign"/></properties></object></objectgroup></map>
<?xml version="1.0" encoding="UTF-8"?><mapversion="1.10"tiledversion="1.10.2"orientation="orthogonal"renderorder="right-down"width="20"height="12"tilewidth="16"tileheight="16"infinite="0"nextlayerid="8"nextobjectid="26"><properties><propertyname="title"value="THE YARD"/><propertyname="hint"value="THE KEY IS ON THE PIER."/></properties><tilesetfirstgid="1"source="warehouse.tsx"/><tilesetfirstgid="9"name="water"tilewidth="16"tileheight="16"tilecount="5"columns="5"><imagesource="../assets/water.png"width="80"height="16"/></tileset><layerid="1"name="floor"width="20"height="12"><dataencoding="csv">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,7,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,7,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</data></layer><layerid="2"name="pads"width="20"height="12"><dataencoding="csv">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</data></layer><layerid="3"name="water"width="20"height="12"><properties><propertyname="collision"type="bool"value="true"/></properties><dataencoding="csv">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,9,9,9,0,9,9,9,9,9,9,9,9,9,9,9,0,0,9,9,9,9,9,9,0,9,9,9,9,9,9,9,9,9,9,9,0,0,9,9,9,9,9,9,0,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</data></layer><layerid="4"name="pier"width="20"height="12"><dataencoding="csv">0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</data></layer><layerid="5"name="walls"width="20"height="12"><properties><propertyname="collision"type="bool"value="true"/></properties><dataencoding="csv">3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2147483651,536870916,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2684354564,536870916,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2684354564,536870916,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2684354564,536870916,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2684354564,0,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,536870916,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2684354564,536870916,0,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,2684354564,536870916,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,2684354564,536870916,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2684354564,536870916,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,2684354564,1073741827,1073741828,1073741828,1073741828,1073741828,1073741828,1073741828,1073741828,1073741828,1073741828,1073741828,1073741828,1073741828,1073741828,1073741828,1073741828,1073741828,1073741828,1073741828,3221225475</data></layer><objectgroupid="6"name="things"><objectid="1"name="key"class="Key"x="112"y="16"width="16"height="16"/><objectid="2"class="Gate"x="112"y="64"width="16"height="16"/><objectid="3"class="Gate"x="304"y="80"width="16"height="16"><properties><propertyname="state"value="locked"/></properties></object><objectid="4"class="Crate"x="48"y="96"width="16"height="16"/><objectid="5"class="Crate"x="144"y="96"width="16"height="16"/><objectid="6"class="Crate"x="128"y="128"width="16"height="16"/></objectgroup><objectgroupid="7"name="ways"><objectid="7"name="west"class="exit"x="0"y="80"width="16"height="16"><properties><propertyname="at"value="west"/><propertyname="to"value="yard"/></properties></object><objectid="8"name="east"class="exit"x="304"y="80"width="16"height="16"><properties><propertyname="at"value="west"/><propertyname="to"value="loft"/></properties></object><objectid="9"name="sign"class="zone"x="16"y="80"width="16"height="16"><properties><propertyname="tag"value="sign"/></properties></object><objectid="10"name="gull"class="path"x="-16"y="8"><polylinepoints="0,0 120,-3 240,2 370,-1"/></object></objectgroup></map>