From 29ad3b3dda7582202517043db0aba123d60f1677 Mon Sep 17 00:00:00 2001 From: Noah Petherbridge Date: Wed, 17 Apr 2019 00:02:41 -0700 Subject: [PATCH] 1st Round of Doodad Sprites + Improve Doodad Tool * Improve the `doodad convert` command to convert a series of input images into multiple Frames of a Doodad: `doodad convert frame1.png frame2.png frameN.png output.doodad` * Add the initial round of dev-asset sprites for the default Doodads: * Button, Button-TypeB and Sticky Button * Red, Blue, Green and Yellow Locked Doors and Keys * Electric Door * Trapdoor Down * Add dev-assets/palette.json that defines our default doodad color palette. Eventually the JSON will be used by the `doodad` tool to give the layers meaningful names. --- dev-assets/doodads/buttons/README.md | 12 ++++++++ dev-assets/doodads/buttons/button.js | 8 ++++++ dev-assets/doodads/buttons/button1.png | Bin 0 -> 769 bytes dev-assets/doodads/buttons/button2.png | Bin 0 -> 728 bytes dev-assets/doodads/buttons/sticky.js | 8 ++++++ dev-assets/doodads/buttons/sticky1.png | Bin 0 -> 767 bytes dev-assets/doodads/buttons/sticky2.png | Bin 0 -> 726 bytes dev-assets/doodads/buttons/typeB1.png | Bin 0 -> 736 bytes dev-assets/doodads/buttons/typeB2.png | Bin 0 -> 695 bytes dev-assets/doodads/doors/README.md | 15 ++++++++++ dev-assets/doodads/doors/blue-key.png | Bin 0 -> 732 bytes dev-assets/doodads/doors/blue1.png | Bin 0 -> 787 bytes dev-assets/doodads/doors/blue2.png | Bin 0 -> 743 bytes dev-assets/doodads/doors/electric1.png | Bin 0 -> 977 bytes dev-assets/doodads/doors/electric2.png | Bin 0 -> 1032 bytes dev-assets/doodads/doors/electric3.png | Bin 0 -> 989 bytes dev-assets/doodads/doors/electric4.png | Bin 0 -> 879 bytes dev-assets/doodads/doors/green-key.png | Bin 0 -> 714 bytes dev-assets/doodads/doors/green1.png | Bin 0 -> 734 bytes dev-assets/doodads/doors/green2.png | Bin 0 -> 742 bytes dev-assets/doodads/doors/red-key.png | Bin 0 -> 699 bytes dev-assets/doodads/doors/red1.png | Bin 0 -> 739 bytes dev-assets/doodads/doors/red2.png | Bin 0 -> 733 bytes dev-assets/doodads/doors/yellow-key.png | Bin 0 -> 728 bytes dev-assets/doodads/doors/yellow1.png | Bin 0 -> 778 bytes dev-assets/doodads/doors/yellow2.png | Bin 0 -> 746 bytes dev-assets/doodads/palette.json | 35 ++++++++++++++++++++++++ dev-assets/doodads/trapdoors/README.md | 5 ++++ dev-assets/doodads/trapdoors/down1.png | Bin 0 -> 1020 bytes dev-assets/doodads/trapdoors/down2.png | Bin 0 -> 970 bytes dev-assets/doodads/trapdoors/down3.png | Bin 0 -> 1049 bytes dev-assets/doodads/trapdoors/down4.png | Bin 0 -> 859 bytes 32 files changed, 83 insertions(+) create mode 100644 dev-assets/doodads/buttons/README.md create mode 100644 dev-assets/doodads/buttons/button.js create mode 100644 dev-assets/doodads/buttons/button1.png create mode 100644 dev-assets/doodads/buttons/button2.png create mode 100644 dev-assets/doodads/buttons/sticky.js create mode 100644 dev-assets/doodads/buttons/sticky1.png create mode 100644 dev-assets/doodads/buttons/sticky2.png create mode 100644 dev-assets/doodads/buttons/typeB1.png create mode 100644 dev-assets/doodads/buttons/typeB2.png create mode 100644 dev-assets/doodads/doors/README.md create mode 100644 dev-assets/doodads/doors/blue-key.png create mode 100644 dev-assets/doodads/doors/blue1.png create mode 100644 dev-assets/doodads/doors/blue2.png create mode 100644 dev-assets/doodads/doors/electric1.png create mode 100644 dev-assets/doodads/doors/electric2.png create mode 100644 dev-assets/doodads/doors/electric3.png create mode 100644 dev-assets/doodads/doors/electric4.png create mode 100644 dev-assets/doodads/doors/green-key.png create mode 100644 dev-assets/doodads/doors/green1.png create mode 100644 dev-assets/doodads/doors/green2.png create mode 100644 dev-assets/doodads/doors/red-key.png create mode 100644 dev-assets/doodads/doors/red1.png create mode 100644 dev-assets/doodads/doors/red2.png create mode 100644 dev-assets/doodads/doors/yellow-key.png create mode 100644 dev-assets/doodads/doors/yellow1.png create mode 100644 dev-assets/doodads/doors/yellow2.png create mode 100644 dev-assets/doodads/palette.json create mode 100644 dev-assets/doodads/trapdoors/README.md create mode 100644 dev-assets/doodads/trapdoors/down1.png create mode 100644 dev-assets/doodads/trapdoors/down2.png create mode 100644 dev-assets/doodads/trapdoors/down3.png create mode 100644 dev-assets/doodads/trapdoors/down4.png diff --git a/dev-assets/doodads/buttons/README.md b/dev-assets/doodads/buttons/README.md new file mode 100644 index 0000000..001f1bb --- /dev/null +++ b/dev-assets/doodads/buttons/README.md @@ -0,0 +1,12 @@ +# Button Doodads + +```bash +doodad convert -t "Sticky Button" sticky1.png sticky2.png sticky-button.doodad +doodad install-script sticky.js sticky-button.doodad + +doodad convert -t "Button" button1.png button2.png button.doodad +doodad install-script button.js button.doodad + +doodad convert -t "Button Type B" typeB1.png typeB2.png button-typeB.doodad +doodad install-script button.js button-typeB.doodad +``` diff --git a/dev-assets/doodads/buttons/button.js b/dev-assets/doodads/buttons/button.js new file mode 100644 index 0000000..f640ca0 --- /dev/null +++ b/dev-assets/doodads/buttons/button.js @@ -0,0 +1,8 @@ +function main() { + console.log("Sticky Button initialized!"); + + Events.OnCollide( function() { + console.log("Touched!"); + Self.Canvas.SetBackground(RGBA(255, 153, 0, 153)) + }) +} diff --git a/dev-assets/doodads/buttons/button1.png b/dev-assets/doodads/buttons/button1.png new file mode 100644 index 0000000000000000000000000000000000000000..6736af8b730ff79cff948fb5733fded66fb24a4d GIT binary patch literal 769 zcmV+c1OEJpP)EX>4Tx04R}tkv&MmKpe$i(~2S$5j%)DWT@g`K~%(1t5Adrp;l;i>s5OiY-Vf#LI@#*5JCtcUm^e~PfO|r03xzYtn1orP}R`8L`1fSrIfn+V~mXuIcJ#j zSnT4Jgs$N4^>G)wU^7I00000NkvXXu0mjfz@bde literal 0 HcmV?d00001 diff --git a/dev-assets/doodads/buttons/button2.png b/dev-assets/doodads/buttons/button2.png new file mode 100644 index 0000000000000000000000000000000000000000..67c3559bf75e056df0cecf5be4129c8645d9d7d7 GIT binary patch literal 728 zcmV;}0w?{6P)EX>4Tx04R}tkv&MmKpe$i(~2S$5j%)DWT@g`K~%(1t5Adrp;l;i>s5Oi|A`< zH^YUWmR;EZA%qY@2qA*4nCB7)SvyaStbjk}evq@M1F!uPaI(1ff72~f6KjQOFeLI*f zoaw8xx>J1KDOD|*o{9ppjqdM`wWs+0X?77AR~+&w#INs>|EV_#1Y~tWTBd3M0000< KMNUMnLSTZiYd2v4 literal 0 HcmV?d00001 diff --git a/dev-assets/doodads/buttons/sticky.js b/dev-assets/doodads/buttons/sticky.js new file mode 100644 index 0000000..f640ca0 --- /dev/null +++ b/dev-assets/doodads/buttons/sticky.js @@ -0,0 +1,8 @@ +function main() { + console.log("Sticky Button initialized!"); + + Events.OnCollide( function() { + console.log("Touched!"); + Self.Canvas.SetBackground(RGBA(255, 153, 0, 153)) + }) +} diff --git a/dev-assets/doodads/buttons/sticky1.png b/dev-assets/doodads/buttons/sticky1.png new file mode 100644 index 0000000000000000000000000000000000000000..dbd955b3a48e4fdf7e47982e201dbddcb2c7af32 GIT binary patch literal 767 zcmVEX>4Tx04R}tkv&MmKpe$i(~2S$5j%)DWT@g`K~%(1t5Adrp;l;i>s5Oi7WREFK5)*--62UOChtU>c<&1%VvNUo z2mwZKjtCl|KDUl*^oCaKoRd1E+MWD7S+AYa!eWetFaeNq`Ffpd1->ieRS8e!(@uT* z@oC^EebtJ)&GwT3GScX}J#y?Ut|;G(xCEpghjbO{>09!i>K*xFC|WLh?~`uco>*oi xlU(AfLAV=`pNPs1Tsbv+=`QJ1cTfEz)(dMscnufd%_#r?002ovPDHLkV1mJGLm~hG literal 0 HcmV?d00001 diff --git a/dev-assets/doodads/buttons/sticky2.png b/dev-assets/doodads/buttons/sticky2.png new file mode 100644 index 0000000000000000000000000000000000000000..c9e556b6d263195abd8412c4b0b2c03d0c01565e GIT binary patch literal 726 zcmV;{0xA88P)EX>4Tx04R}tkv&MmKpe$i(~2S$5j%)DWT@g`K~%(1t5Adrp;l;i>s5OiT&2Cu5DJAh8d3V}1v+kX;!c?^rCID)S@2*p$!dEf=i|`bmb?VoP zvxR5oYE*ZBI!^+~%AnivXtkTTF1{z?Dp2n@WK-~8-z)!9AF)AN*mVSCy8r+H07*qo IM6N<$f~)B=!vFvP literal 0 HcmV?d00001 diff --git a/dev-assets/doodads/buttons/typeB1.png b/dev-assets/doodads/buttons/typeB1.png new file mode 100644 index 0000000000000000000000000000000000000000..ff2d2b42d6a95ce56c5f01512b904199afea4b94 GIT binary patch literal 736 zcmV<60w4W}P)EX>4Tx04R}tkv&MmKpe$i(~2S$5j%)DWT@g`K~%(1t5Adrp;l;i>s5OiVkuJ353Q&yO&Ho_c$QsZ0Y)Ki3C@mZ&?Ui=q*-DCAU+4ySHwRRQP#J5tM zO`+euE&o%aE;LK=*c{4brBR?Sl9>+j8gB+d16Qso|MgQR@RMvSbrh S3fEZx0000EX>4Tx04R}tkv&MmKpe$i(~2S$5j%)DWT@g`K~%(1t5Adrp;l;i>s5Oi(lc?Vp2@6C%E)9EMlAkY ziK4�<$35JCtcgb+f$;{eptL#%_U#xYbE>&Rru^^&Xc};B9b+pxL=& zUT*_dv52^_qLrPp!c?^r<^a@Y->y!*S@^Kec51fqFUGuK_kFVVwW3?@Ca$w@r#S1v d`1+3gr!JSJM&8LeRL}qb002ovPDHLkV1lJlC^-NC literal 0 HcmV?d00001 diff --git a/dev-assets/doodads/doors/README.md b/dev-assets/doodads/doors/README.md new file mode 100644 index 0000000..8fc5bf2 --- /dev/null +++ b/dev-assets/doodads/doors/README.md @@ -0,0 +1,15 @@ +# Button Doodads + +```bash +doodad convert -t "Red Door" red1.png red2.png red-door.doodad +doodad convert -t "Blue Door" blue1.png blue2.png blue-door.doodad +doodad convert -t "Green Door" green1.png green2.png green-door.doodad +doodad convert -t "Yellow Door" yellow1.png yellow2.png yellow-door.doodad + +doodad convert -t "Red Key" red-key.png red-key.doodad +doodad convert -t "Blue Key" blue-key.png blue-key.doodad +doodad convert -t "Green Key" green-key.png green-key.doodad +doodad convert -t "Yellow Key" yellow-key.png yellow-key.doodad + +doodad convert -t "Electric Door" electric{1,2,3,4}.png electric-door.doodad +``` diff --git a/dev-assets/doodads/doors/blue-key.png b/dev-assets/doodads/doors/blue-key.png new file mode 100644 index 0000000000000000000000000000000000000000..11e435505989be54bde7fb533ee3509da11f9635 GIT binary patch literal 732 zcmV<20wev2P)EX>4Tx04R}tkv&MmKpe$i(~2S$5j%)DWT@g`K~%(1t5Adrp;l;i>s5Oi(#2^TSJ6x7Cd0O_tqy@z;xM`D3n8b(L zpKov|$5ASkN~Kb%^sj=mCvWlKLfb=phGD{hHIy-5@2bfJwnyEhuWrOHdoQcyyJR-m zoCr>*wrWX&b(Au~$BeOTl3XubU?;9U}J!Zm`;LQ&J O0000c}*5j~)%+dJET}q;Y)*TipD;^~{h8zi89niwHFf8Nh!6%pWGcHY7vcrOF9V@%N z*lIq#bGxi|a5X((@917Vc~SS2AN!YFP&(H9xNgtx?>nm5IldZQUUR`>!OLwky^b99 zDGPm53q$74KA~QM6#PpHoqZO-OPSH=X z3A4;Eyml(|+8*`#M2qF?b&Buisx`XmI5u&xhE54+>y=n*r70G)MgIFo{#|vQF_yz?s_b`i(P=vF< zBeIx*K~EWk87r3BmjMOYOFVsD*&nkAvT+OSe*a)KP)M@GHKN2hKQ}iuuY|$5C^fMp zHASI3vm`^o-P1Q9ypc~FsOXKSi(^Q|t+%%?ay2OMv?hw)-H2nb+orCC_E{I)-rTh0w`^51vPk-_7*rq!)QugiQ_`<3E4x{J=u`DC-%o3ErvR0` z;rwvrgPO^~t;-Lv>&KQdeD8}}wOMGxc}*5j~)%+dJET}q;Y)*TipD;^~{h8zi89niwHFf8Nh!6%pWGcHY7vcrOF9V@%N z*lIq#bGxi|a5X((@917Vc~SS2AN!YFP&(H9xNgtx?>nm5IldZQUUR`>!OLwky^b99 zDGPm53q$74KA~QM6#PpHoqZO-OPSH=X z3A4;Eyml(|+8*`#M2qF?b&Buisx`XmI5u&xhE54+>y=n*r70G)MgIFo{#|vQF_yz?s_b`i(P=vF< zBeIx*K~EWk87r3BmjMOYOFVsD*&nkAvT-XFTWr(@3Q3l@MwB?`=jNv7l`uFLr6!i7 zrYMwWmSiZnd-?{1H}Z)C6&>(&aSW-r_4c+S*HHx?RtMdCThm`<{$0%IC8hF`L$22 zzACFhY+KQ%Lt8Oa!vz%73=a$4Yp`VynqOz*@aa)9qnXA%^94u#DF&Tqxv`=`*FZL5 u^X2*68xlWmzI1vQW7g)wi!*2XCA-#j777`BR(z8HGRo7{&t;ucLK6UBnk2CR literal 0 HcmV?d00001 diff --git a/dev-assets/doodads/doors/electric1.png b/dev-assets/doodads/doors/electric1.png new file mode 100644 index 0000000000000000000000000000000000000000..a9ca8a55c41bca6bca18d019e9fdceef65496c2b GIT binary patch literal 977 zcmV;?11|iDP)EX>4Tx04R}tkv&MmKpe$i(~2S$5j%)DWT@g`K~%(1t5Adrp;l;i>s5Oi0@-w+<;oJ}H6DGl5Bk&6!kxH^Cv+TgmbPw#~gPP1VK zKt!aJviVI_Uj{bA2B!c47z2RpkaG12pdui&;3qTL=@+@2UblOO?1 z1^_7%vr_;q_#p^+K7?riTB$x%vZsGnZ&M&498ZpO09S!4o(IGjCB|rO!wdkTUPssb zoB{+u00ck)XRQLyvUu-tHo}J4GPrl79b@e33yj(@0ni**)y=*8{eCC_gbfn_kB;ws zzN-2*0E7*bB>2wp_Kd1ZDP{K=gpE%I;>5AGw{yg)5W?my9tnQW1|kLsfZm?nBLorY z3VsKIy+Wk-b8Me-dyAhmJyBC&%08e6!r9f|*8s2%oLgZ6Ab@$bz^kR}EE}dtkQyQ8 z00IyZOn10?1%T)d*ApOob$1w|GqRili0<&>IR|hRxI6%eM#!mB6r%6(tQ3Xld%P<} zA^ILFMY#(2IuD>mh#Dd000JNYM+4R!_8P-4)L;T@NXc#y00000NkvXXu0mjffBKvM literal 0 HcmV?d00001 diff --git a/dev-assets/doodads/doors/electric2.png b/dev-assets/doodads/doors/electric2.png new file mode 100644 index 0000000000000000000000000000000000000000..09f24b1c87245bce4881557a812f5695187a6178 GIT binary patch literal 1032 zcmV+j1o!)iP)EX>4Tx04R}tkv&MmKpe$i(~2S$5j%)DWT@g`K~%(1t5Adrp;l;i>s5OiuKAXepNJkT%kuX-rQ~9aFUPFw>QYKYdZij6gyz0K+?SgH zkQ9d`hlR%kzz7JN^MVk>0C+@-4*vi5XdwXUwxIKt1Py>NfNXx$ATlU`&G{w>i#!A| z0NX6JX|@`6-=l>q zuItO6^E`8f0|<>u8%a=%xVg*9~60;N@8Z|(%X zpy9f>18Pg)4z40!)aYk9Tzh;5q00HIZFaX7$gkp^FG9Ln3~4%UGeHAj0AzB&yST1- zFVL!?ngm`tSoZ)gqflNAl?a0000c}*5j~)%+dJET}q;Y)*TipD;^~{h8zi89niwHFf8Nh!6%pWGcHY7vcrOF9V@%N z*lIq#bGxi|a5X((@917Vc~SS2AN!YFP&(H9xNgtx?>nm5IldZQUUR`>!OLwky^b99 zDGPm53q$74KA~QM6#PpHoqZO-OPSH=X z3A4;Eyml(|+8*`#M2qF?b&Buisx`XmI5u&xhE54+>y=n*r70G)MgIFo{#|vQF_yz?s_b`i(P=vF< zBeIx*K~EWk87r3BmjMOYOFVsD*&nkAvWc;62)BF&6p}1)jVN)>&&^HED`9XhN=+^-c&)4K4LTcVnA@C?qhPk(pLTV#^S zINRdIyrru`uiAZZ&k<(2cd~cx+RBsj=S$f}T>tvMSo7%8Dfj9o7nd!aqO~`wS7Pyw z_x#__^D?+~{hgyIU}`0&evWYklkkn;=m{M% zf-|#cFs_*Uw)dI?2hiCJ4W2?a-btr7#jHyVW9@tQv~$HRMqb{@0yj$TypPvhy6V%i zg^5fF*FP%%e$~*{#@W!-S6}Mjy!iN@Cbsg7k7o0v=S<&beWWV9b!Nwmj)+Bt?Lnsw z{ofRL`|&eI@pgr@CXgMN;6ln`F_*rutUZlwoDAnI_t#1~Jz!%uFOfPAuHvwcCs4z$bpa)l&{$ zJ04=q;d}1;w#rh;9I2z)=B{_y8n!;3!O6tH&~uV;{-a%~{S!hCn{ayZ`(|b;urM5u zXgIb|bDk)O+{bWeEx&K&(de+r0v9Yyo~DCCY{oOci<-4R7%#6An9XfD7nG41JYD@< J);T3K0RW4aqay$S literal 0 HcmV?d00001 diff --git a/dev-assets/doodads/doors/electric4.png b/dev-assets/doodads/doors/electric4.png new file mode 100644 index 0000000000000000000000000000000000000000..4519275b4c500d8a3eb6d0500d4f31c3b0c1e83a GIT binary patch literal 879 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU~JBGb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)%+dJET}q;Y)*TipD;^~{h8zi89niwHFf8Nh!6%pWGcHY7vcrOF9V@%N z*lIq#bGxi|a5X((@917Vc~SS2AN!YFP&(H9xNgtx?>nm5IldZQUUR`>!OLwky^b99 zDGPm53q$74KA~QM6#PpHoqZO-OPSH=X z3A4;Eyml(|+8*`#M2qF?b&Buisx`XmI5u&xhE54+>y=n*r70G)MgIFo{#|vQF_yz?s_b`i(P=vF< zBeIx*K~EWk87r3BmjMOYOFVsD*&nkAvWdwpwqCdaC?r|p8d2h$pPQSSSHj?2l$uzQ znxasiS(2gP?&%v4-pD5ojBO837srr_TW@a%PHI-*X-ItW#jR*rg_`AL%iv#|_}AVN zV=;SoZvITWD=QU$PWYr`xTT%-euu94{pyenI;T&Uhu;00Hf!0cIjWY=D)ZL;y;p4& zV)|rG`E}PN5)0k?F74pWvdgo#e114mcH&{ygy0_!qyAoV=$FxBU~R3>UEtmq|DXNt z8z$48Zz^rWP3~L0n_#h8S4KYgd?Ms^w{eEVB`7H0y z!{^uBdLX0c@9-m};^E{3^`aJU8^)!r^)pEX>4Tx04R}tkv&MmKpe$i(~2S$5j%)DWT@g`K~%(1t5Adrp;l;i>s5Oi-%p`X*#NI13Go;C2#u^(aQGO0Cu2DBLX3hF8}}l07*qoM6N<$g2crvZ2$lO literal 0 HcmV?d00001 diff --git a/dev-assets/doodads/doors/green1.png b/dev-assets/doodads/doors/green1.png new file mode 100644 index 0000000000000000000000000000000000000000..e49c65345ccb925feae09d2ce081cb611e4d0b7e GIT binary patch literal 734 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 literal 0 HcmV?d00001 diff --git a/dev-assets/doodads/doors/yellow-key.png b/dev-assets/doodads/doors/yellow-key.png new file mode 100644 index 0000000000000000000000000000000000000000..c83c7386a9f92070c4432260bcf264a1cdba3cf7 GIT binary patch literal 728 zcmV;}0w?{6P)EX>4Tx04R}tkv&MmKpe$i(~2S$5j%)DWT@g`K~%(1t5Adrp;l;i>s5OivPG^vMsG+av!J`xv|s;|y`DNe$4$}`sdC8P33uKAIE%p3_KBywIPsML z;~CO(%TwviY$m2v_C&wA=N@t%EHSt@oKo$rng^>JtGgXL*6jhV=2$LB4HotQ0000< KMNUMnLSTY(j5av{ literal 0 HcmV?d00001 diff --git a/dev-assets/doodads/doors/yellow1.png b/dev-assets/doodads/doors/yellow1.png new file mode 100644 index 0000000000000000000000000000000000000000..b6a6e72016ecbbf15af62d20c4466193fdd1faaf GIT binary patch literal 778 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU~JBGb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)%+dJET}q;Y)*TipD;^~{h8zi89niwHFf8Nh!6%pWGcHY7vcrOF9V@%N z*lIq#bGxi|a5X((@917Vc~SS2AN!YFP&(H9xNgtx?>nm5IldZQUUR`>!OLwky^b99 zDGPm53q$74KA~QM6#PpHoqZO-OPSH=X z3A4;Eyml(|+8*`#M2qF?b&Buisx`XmI5u&xhE54+>y=n*r70G)MgIFo{#|vQF_yz?s_b`i(P=vF< zBeIx*K~EWk87r3BmjMOYOFVsD*&nkAvhgT;*NImFg(OQ{BTAg}b8}PkN*J7rQWHy3 zQxwWGOEMJPJ$(bh8~Mb6iXMBqIEGZ*dV4#XugO4w^}@6b;n$92eLa0dpjT?a_8Z3Y z)dZd`*?U;|+NS+^s?nwA4}KO5->`1xx#_9@EteTpFanLh1P204zt^0CPb=R4>9+9h+F>2_h+u?pcP1}nB3?|wcsO86mq zA(-P_XIrp;-A2(5*~YrY3vY`3*tYUo;|&vLJJabi*e+^Lkf|?haQ~diV(zq8=eJ0c mwIjMK4itp)TO42d->#m0MT6@4E+&Q;kP=TOB+y literal 0 HcmV?d00001 diff --git a/dev-assets/doodads/doors/yellow2.png b/dev-assets/doodads/doors/yellow2.png new file mode 100644 index 0000000000000000000000000000000000000000..a9855637e023e961f18ebaa4f10f46f3d5612e90 GIT binary patch literal 746 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU~JBGb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)%+dJET}q;Y)*TipD;^~{h8zi89niwHFf8Nh!6%pWGcHY7vcrOF9V@%N z*lIq#bGxi|a5X((@917Vc~SS2AN!YFP&(H9xNgtx?>nm5IldZQUUR`>!OLwky^b99 zDGPm53q$74KA~QM6#PpHoqZO-OPSH=X z3A4;Eyml(|+8*`#M2qF?b&Buisx`XmI5u&xhE54+>y=n*r70G)MgIFo{#|vQF_yz?s_b`i(P=vF< zBeIx*K~EWk87r3BmjMOYOFVsD*&nkAvhkRlSUYJiP)M@GHKN2hKQ}iuuY|$5C^fMp zHASI3vm`^o-P1Q9ypc~FsOYe#i(^Q|t+%%g`3@`aum%JdhM${qSuJ|%+NlSaj{Gie z`e2;mu+XLc-Hh3nJ{QRvHoyM$*C+e$EX>4Tx04R}tkv&MmKpe$i(~2S$5j%)DWT@g`K~%(1t5Adrp;l;i>s5Oi8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0o6%FK~#9!?c63 z0Ep!n5f?}iSBL_4sUyl9Vbf%tvAzC*Ac4H^lPna2CF^BoSQl)BKNbzo*&RX`>2TKT zb@fJ`=Kz4$mxo}(c`v^a`@-4nb`TK&z;aUtT|u!g97mrI)lC1P!%5S$R%$_4P+vG4 z(!Vpv%^V$$8`Nr;w}^-Z0Aoxv=?W@}0*l3BFdPxF?wE2g@T`BV=jf~$9g=&Ua*K_w z0$&(YuOd4Xh_05tpe8+o`nU=SC6vx}kPbk%jfhxdOysMi;3}wDExzh8#zY}}d$nee z4#8I`A+}fy8b5>js>IEqpev|rwuIPPwS}UHv=)0^-)Os*um%yLs=wOV1n-&g0F zA-VgAZy}ujZVA>Eh&z1ZIIe}F_fM*Q?iRxFogZtcdVJw&Lm|zs*EX>4Tx04R}tkv&MmKpe$i(~2S$5j%)DWT@g`K~%(1t5Adrp;l;i>s5OimHSKX$%clQ&wcJQb58BGPr87-L3~Qmj>;5)tdm>AG%kf-xpb&|2lyDKR1< z`~5!pfSnT9kk)!6#uc?!=5BSf3nr-Ok?lvU zZCh!YMyjg1DMxEem@!7B#NB$Jg;Te9@?3&c;>M#JIvGxsd+%hWcy;RTO`b0( z3qL_&lJ21daiKh4)})}=Ncl;6WI?_{-uZGJ2&!`~a%1!iDY=~ylegsR8Wl8^7AL8M z{YgsR9C11F1|t?L;8^cGGexf$*-*ZXB`B7ZQquDXasDegVq4`_*VVZxd3HgULKSvP zOu|}6D|;ucwH_63YDL=`_0;}n>-|)Pi79EXQ_P5oh+?Gf_EX>4Tx04R}tkv&MmKpe$i(~2S$5j%)DWT@g`K~%(1t5Adrp;l;i>s5Oipyj zuvjd@8?)IA05BcrxPN@fEDJi4LrHsFlN{fEm0w^o8p3M24FF)hUN;`_{PqC=n2d%1 zP+E&5cj|!m&wb!njHFIA=yWOs~K(992gOe;pl8>MeNp-^j zFXOuonTn*UpjNC(Iw`0qiV#_^PY;A)PEpa&0M9-S=(&)rutdmy<0>8nj)tn(9z2X*$l!)nc&Bq3wM}m{3fL=q+937s#QtuKR^5& z(#`$%7igE%TbOH2w_ZD@QBv=n(k3ZMhcrn_))_65l6FLcq~x8DE=k0%Bw3P}T$d_I z)D=UbByr;oX_7>aUL{EqI|q^?N%WeG1WDo-tx`);v8tC+lA5*QRFYKPhDjkw-F>RQ zC8@mI*{3A64;J(#N%fN#u_Q)NizEQ1|CQ8P5+Q^TLI@#*5JCtcgb+dqAvJsf^@g3^ TF}eg&00000NkvXXu0mjfN9)Yx literal 0 HcmV?d00001 diff --git a/dev-assets/doodads/trapdoors/down4.png b/dev-assets/doodads/trapdoors/down4.png new file mode 100644 index 0000000000000000000000000000000000000000..5e6e5f212b369e7143429a774c13fff6b0a21776 GIT binary patch literal 859 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@Zgyv2U~JBGb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)%+dJET}q;Y)*TipD;^~{h8zi89niwHFf8Nh!6%pWGcHY7vcrOF9V@%N z*lIq#bGxi|a5X((@917Vc~SS2AN!YFP&(H9xNgtx?>nm5IldZQUUR`>!OLwky^b99 zDGPm53q$74KA~QM6#PpHoqZO-OPSH=X z3A4;Eyml(|+8*`#M2qF?b&Buisx`XmI5u&xhE54+>y=n*r70G)MgIFo{#|vQF_yz?s_b`i(P=vF< zBeIx*K~EWk87r3BmjMOYOFVsD*&nkAvZ-4h$Pvy23Q3l@MwB?`=jNv7l`uFLr6!i7 zrYMwWmSiZnd-?{1H}Z)CW81{j#WAGf*4sOVS%(cIj(%J&@M2D+x<<+8Criygm_FgI zyjb3QZ-KXZ{!WK>y~s_e9tU2jgco)*w>mZd<7YZ_v(Cmgz3a==Eq_YZ`meHCcObB* z@ZX~M)t*7utM=}x-7%|il1i(9il^`88fPtq)u+>L&MB06UfdJd|8L-<>9C)fOHoB5tl`X=#*)R3Y0n-++*FV%dEDiAFuI3#kzOhJ)K