From e86ae6144e12fe184acf5dc7c67db449b3b70c2a Mon Sep 17 00:00:00 2001 From: Noah Petherbridge Date: Thu, 2 Apr 2020 21:43:41 -0700 Subject: [PATCH] New (Colored) Locked Door Doodads * Revamped the sprites for the four colored locked doors. They now have a side-view profile perspective rather than a front view. * Doors open facing the left or the right based on what direction the colliding actor approached it from. --- dev-assets/doodads/build.sh | 39 +------------- dev-assets/doodads/doors/blue-closed.png | Bin 0 -> 880 bytes dev-assets/doodads/doors/blue-left.png | Bin 0 -> 841 bytes dev-assets/doodads/doors/blue-right.png | Bin 0 -> 841 bytes dev-assets/doodads/doors/build.sh | 48 ++++++++++++++++++ dev-assets/doodads/doors/colored-door.js | 56 +++++++++++++++++++++ dev-assets/doodads/doors/green-closed.png | Bin 0 -> 847 bytes dev-assets/doodads/doors/green-left.png | Bin 0 -> 837 bytes dev-assets/doodads/doors/green-right.png | Bin 0 -> 836 bytes dev-assets/doodads/doors/locked-door.js | 1 + dev-assets/doodads/doors/red-closed.png | Bin 0 -> 816 bytes dev-assets/doodads/doors/red-left.png | Bin 0 -> 846 bytes dev-assets/doodads/doors/red-right.png | Bin 0 -> 848 bytes dev-assets/doodads/doors/yellow-closed.png | Bin 0 -> 851 bytes dev-assets/doodads/doors/yellow-left.png | Bin 0 -> 855 bytes dev-assets/doodads/doors/yellow-right.png | Bin 0 -> 850 bytes 16 files changed, 106 insertions(+), 38 deletions(-) create mode 100644 dev-assets/doodads/doors/blue-closed.png create mode 100644 dev-assets/doodads/doors/blue-left.png create mode 100644 dev-assets/doodads/doors/blue-right.png create mode 100755 dev-assets/doodads/doors/build.sh create mode 100644 dev-assets/doodads/doors/colored-door.js create mode 100644 dev-assets/doodads/doors/green-closed.png create mode 100644 dev-assets/doodads/doors/green-left.png create mode 100644 dev-assets/doodads/doors/green-right.png create mode 100644 dev-assets/doodads/doors/red-closed.png create mode 100644 dev-assets/doodads/doors/red-left.png create mode 100644 dev-assets/doodads/doors/red-right.png create mode 100644 dev-assets/doodads/doors/yellow-closed.png create mode 100644 dev-assets/doodads/doors/yellow-left.png create mode 100644 dev-assets/doodads/doors/yellow-right.png diff --git a/dev-assets/doodads/build.sh b/dev-assets/doodads/build.sh index 3582229..f7afb2b 100755 --- a/dev-assets/doodads/build.sh +++ b/dev-assets/doodads/build.sh @@ -43,44 +43,7 @@ switches() { doors() { cd doors/ - - doodad convert -t "Red Door" red1.png red2.png door-red.doodad - doodad edit-doodad -q --tag color=red door-red.doodad - doodad install-script locked-door.js door-red.doodad - - doodad convert -t "Blue Door" blue1.png blue2.png door-blue.doodad - doodad edit-doodad -q --tag color=blue door-blue.doodad - doodad install-script locked-door.js door-blue.doodad - - doodad convert -t "Green Door" green1.png green2.png door-green.doodad - doodad edit-doodad -q --tag color=green door-green.doodad - doodad install-script locked-door.js door-green.doodad - - doodad convert -t "Yellow Door" yellow1.png yellow2.png door-yellow.doodad - doodad edit-doodad -q --tag color=yellow door-yellow.doodad - doodad install-script locked-door.js door-yellow.doodad - - doodad convert -t "Red Key" red-key.png key-red.doodad - doodad edit-doodad -q --tag color=red key-red.doodad - doodad install-script keys.js key-red.doodad - - doodad convert -t "Blue Key" blue-key.png key-blue.doodad - doodad edit-doodad -q --tag color=blue key-blue.doodad - doodad install-script keys.js key-blue.doodad - - doodad convert -t "Green Key" green-key.png key-green.doodad - doodad edit-doodad -q --tag color=green key-green.doodad - doodad install-script keys.js key-green.doodad - - doodad convert -t "Yellow Key" yellow-key.png key-yellow.doodad - doodad edit-doodad -q --tag color=yellow key-yellow.doodad - doodad install-script keys.js key-yellow.doodad - - doodad convert -t "Electric Door" electric{1,2,3,4}.png door-electric.doodad - doodad install-script electric-door.js door-electric.doodad - - cp door-*.doodad key-*.doodad ../../../assets/doodads/ - + ./build.sh cd .. } diff --git a/dev-assets/doodads/doors/blue-closed.png b/dev-assets/doodads/doors/blue-closed.png new file mode 100644 index 0000000000000000000000000000000000000000..8db25c44aa8ad351914185afeda8bd2a4cbf36fe GIT binary patch literal 880 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU~I{Bb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)MBDvkQ@cW3-UJ*`bS~Ybp!H})sD@K(fcBPG2}LjEO$=2u_4=B!4<4L< zbX9Zr=5>7QniPI8KYH?F$qOaby6GZOM=FjN^1rWrfBJ5D!-W+_XSsSAXXVYF84`5n zY50*3+D;sodKSi~O*7Q?%>2=}zMADn-Sh{M|4Qro;rcV7ar{c;IZXx@k*pEMYi%+IDrn{ZZN$a!l(wSxz@iHOI%=D4xqaCYWPSJm2 z6K0uTcx{#GwO#7leHKuM(|Ai$Y5^oGZUb(516ou7Nk|6lNW`iZ3z zRx`QvRpvM}zxj3W|AX@UwU3VMm@eYU6szC&*^sBDyfN)=;l6&^<&{h<^BcAIzP+Ep zaC!cc>$ju+aJ;z9rnm0)tWE4O?-(|!JDa73b6pbZa((c(XP+iN&mAV))p7Tuo?Fy1 zY`U`g3vWRIN6!?E>a)-9-kn?fd;7Ah`{iGz78R(N{?PzN3tN)6y9>jA5L~c#`DCC7 zXMsm#F#`j)FbFd;%$g$s6l5>)^mS!_!otkLW4_gN$5Eh=WQl7;iF1B#Zfaf$gL6@8 zVo7R>LV0FMhJw4NZ$Nk>pExkOJv?0;Ln>~)y&cHcWWdw#aB79}`2(R3d@4lGJ(&6G zu)}i64z^pZf4wUvOt@61ZRMzXgYRy|oCwtt&TGj(k}h;-TKTT1`N4GO*N#xm31aU$ zF66}HxfOw~Mt}!B3{uMBelF{r5}E+sOneyt literal 0 HcmV?d00001 diff --git a/dev-assets/doodads/doors/blue-left.png b/dev-assets/doodads/doors/blue-left.png new file mode 100644 index 0000000000000000000000000000000000000000..5be63c3ecf4760cc87becd5e833454b32943bd38 GIT binary patch literal 841 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU~I{Bb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)MBDvkQ@cW3-UJ*`bS~Ybp!H})sD@K(fcBPG2}LjEO$=2u_4=B!4<4L< zbX9Zr=5>7QniPI8KYH?F$qOaby6GZOM=FjN^1rWrfBJ5D!-W+_XSsSAXXVYF84`5n zY50*3+D;sodKSi~O*7Q?%>2=}zMADn-Sh{M|4Qro;rcV7ar{c;IZXx@k*pEMYi%+IDrn{ZZN$a!l(wSxz@iHOI%=D4xqaCYWPSJm2 z6K0uTcx{#GwO#7leHKuM(|Ai$Y5^oGZUb(516ou7Nk|6lNW`iZ3z zRx`QvRpvM}zxj3W|AX@UwU3VMm@eYU6szC&*^sBDyfN)=;l6&^<&{h<^BcAIzP+Ep zaC!cc>$ju+aJ;z9rnm0)tWE4O?-(|!JDa73b6pbZa((c(XP+iN&mAV))p7Tuo?Fy1 zY`U`g3vWRIN6!?E>a)-9-kn?fd;7Ah`{iGz78R(N{?PzN3tN)6y9>jA5L~c#`DCC7 zXMsm#F#`j)FbFd;%$g$s6l5>)^mS!_!otkL%iKGw)(|KpS>hT|;+&tGo0?a`;9QiN zSdyBeP@Y+mq2TW68xY>eCk~8mMNb#UkcwMxZ{Ou@GLUF}c=?!Tf#}TENSVgSf@$l5 z^f?Uw39P*K==whOm#i(^=OzdIn|n$v@6NfYw-z40Jj?J{l8mCq^T)9_3uPV~@Z92e zn6xX1;g)S&FFON6(G#I(7gY|ZdMwYAV-u{I_Q{(^=||4fUZo#vp7JXFc=NPZ@yGlr z<}DN0CPZn7o;jkpLG+-*&-3aB%Q@Um)t5`fI2(lg`^~-3ohA9{_4({IT?uPyc}*5j~)MBDvkQ@cW3-UJ*`bS~Ybp!H})sD@K(fcBPG2}LjEO$=2u_4=B!4<4L< zbX9Zr=5>7QniPI8KYH?F$qOaby6GZOM=FjN^1rWrfBJ5D!-W+_XSsSAXXVYF84`5n zY50*3+D;sodKSi~O*7Q?%>2=}zMADn-Sh{M|4Qro;rcV7ar{c;IZXx@k*pEMYi%+IDrn{ZZN$a!l(wSxz@iHOI%=D4xqaCYWPSJm2 z6K0uTcx{#GwO#7leHKuM(|Ai$Y5^oGZUb(516ou7Nk|6lNW`iZ3z zRx`QvRpvM}zxj3W|AX@UwU3VMm@eYU6szC&*^sBDyfN)=;l6&^<&{h<^BcAIzP+Ep zaC!cc>$ju+aJ;z9rnm0)tWE4O?-(|!JDa73b6pbZa((c(XP+iN&mAV))p7Tuo?Fy1 zY`U`g3vWRIN6!?E>a)-9-kn?fd;7Ah`{iGz78R(N{?PzN3tN)6y9>jA5L~c#`DCC7 zXMsm#F#`j)FbFd;%$g$s6l5>)^mS!_!otkLW4)*O%R8WuWQl7;iF1B#Zfaf$gL6@8 zVo7R>LV0FMhJw4NZ$Nk>pExkO6+K-XLn>~)z5S50*+8J};qD8bb6nF;a?Cv%Su%B( z*DvRsjZ3f2n(*vVwZH|1BkviLLqbkQCq6Hn^}59*{nx(t&EM;6pM4culKE+F%k`^2 z#5ETdJ)M7V_nbL<7#I#D^E zZx~g$&OJ5&dN4rUVR^B&s>5<2wuuHO@>s&7e=Pl`WWdf4;LYo}rTSf#`S+_kMgDay z=zm)^pVdrY1~X6-K@brxIsf?b|GaBw9@l>N{ik*9bpOnr?U$KA8a-Y8T-G@yGywqR C>0yfi literal 0 HcmV?d00001 diff --git a/dev-assets/doodads/doors/build.sh b/dev-assets/doodads/doors/build.sh new file mode 100755 index 0000000..1cdf245 --- /dev/null +++ b/dev-assets/doodads/doors/build.sh @@ -0,0 +1,48 @@ +# doodad convert -t "Red Door" red1.png red2.png door-red.doodad +# doodad edit-doodad -q --tag color=red door-red.doodad +# doodad install-script locked-door.js door-red.doodad + +doodad convert -t "Red Door" red-closed.png red-right.png red-left.png door-red.doodad +doodad edit-doodad -q --tag color=red door-red.doodad +doodad install-script colored-door.js door-red.doodad + +doodad convert -t "Blue Door" blue-closed.png blue-right.png blue-left.png door-blue.doodad +doodad edit-doodad -q --tag color=blue door-blue.doodad +doodad install-script colored-door.js door-blue.doodad + +doodad convert -t "Green Door" green-closed.png green-right.png green-left.png door-green.doodad +doodad edit-doodad -q --tag color=green door-green.doodad +doodad install-script colored-door.js door-green.doodad + +doodad convert -t "Yellow Door" yellow-closed.png yellow-right.png yellow-left.png door-yellow.doodad +doodad edit-doodad -q --tag color=yellow door-yellow.doodad +doodad install-script colored-door.js door-yellow.doodad + +# doodad convert -t "Green Door" green1.png green2.png door-green.doodad +# doodad edit-doodad -q --tag color=green door-green.doodad +# doodad install-script locked-door.js door-green.doodad +# +# doodad convert -t "Yellow Door" yellow1.png yellow2.png door-yellow.doodad +# doodad edit-doodad -q --tag color=yellow door-yellow.doodad +# doodad install-script locked-door.js door-yellow.doodad + +doodad convert -t "Red Key" red-key.png key-red.doodad +doodad edit-doodad -q --tag color=red key-red.doodad +doodad install-script keys.js key-red.doodad + +doodad convert -t "Blue Key" blue-key.png key-blue.doodad +doodad edit-doodad -q --tag color=blue key-blue.doodad +doodad install-script keys.js key-blue.doodad + +doodad convert -t "Green Key" green-key.png key-green.doodad +doodad edit-doodad -q --tag color=green key-green.doodad +doodad install-script keys.js key-green.doodad + +doodad convert -t "Yellow Key" yellow-key.png key-yellow.doodad +doodad edit-doodad -q --tag color=yellow key-yellow.doodad +doodad install-script keys.js key-yellow.doodad + +doodad convert -t "Electric Door" electric{1,2,3,4}.png door-electric.doodad +doodad install-script electric-door.js door-electric.doodad + +cp door-*.doodad key-*.doodad ../../../assets/doodads/ diff --git a/dev-assets/doodads/doors/colored-door.js b/dev-assets/doodads/doors/colored-door.js new file mode 100644 index 0000000..baf7ac4 --- /dev/null +++ b/dev-assets/doodads/doors/colored-door.js @@ -0,0 +1,56 @@ + +function main() { + var color = Self.Doodad.Tag("color"); + + // Layers in the doodad image. + var layer = { + closed: 0, + right: 1, + left: 2, + }; + + // Variables that change in event handler. + var unlocked = false; // Key has been used to unlock the door (one time). + var opened = false; // If door is currently showing its opened state. + var enterSide = 0; // Side of player entering the door, -1 or 1, left or right. + + Self.SetHitbox(23, 0, 23, 64); + + Events.OnCollide(function(e) { + // Record the side that this actor has touched us, in case the door + // needs to open. + if (enterSide === 0) { + enterSide = e.Overlap.X > 0 ? 1 : -1; + } + + if (opened) { + return; + } + + if (e.InHitbox) { + if (unlocked) { + Self.ShowLayer(enterSide < 0 ? layer.right : layer.left); + opened = true; + return; + } + + var data = e.Actor.GetData("key:" + color); + if (data === "") { + // Door is locked. + return false; + } + + if (e.Settled) { + unlocked = true; + Self.ShowLayer(enterSide < 0 ? layer.right : layer.left); + } + } + }); + Events.OnLeave(function(e) { + Self.ShowLayer(layer.closed); + + // Reset collision state. + opened = false; + enterSide = 0; + }); +} diff --git a/dev-assets/doodads/doors/green-closed.png b/dev-assets/doodads/doors/green-closed.png new file mode 100644 index 0000000000000000000000000000000000000000..014d2dbb8199dd932a742071492c94c92a095c15 GIT binary patch literal 847 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU~I{Bb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)MBDvkQ@cW3-UJ*`bS~Ybp!H})sD@K(fcBPG2}LjEO$=2u_4=B!4<4L< zbX9Zr=5>7QniPI8KYH?F$qOaby6GZOM=FjN^1rWrfBJ5D!-W+_XSsSAXXVYF84`5n zY50*3+D;sodKSi~O*7Q?%>2=}zMADn-Sh{M|4Qro;rcV7ar{c;IZXx@k*pEMYi%+IDrn{ZZN$a!l(wSxz@iHOI%=D4xqaCYWPSJm2 z6K0uTcx{#GwO#7leHKuM(|Ai$Y5^oGZUb(516ou7Nk|6lNW`iZ3z zRx`QvRpvM}zxj3W|AX@UwU3VMm@eYU6szC&*^sBDyfN)=;l6&^<&{h<^BcAIzP+Ep zaC!cc>$ju+aJ;z9rnm0)tWE4O?-(|!JDa73b6pbZa((c(XP+iN&mAV))p7Tuo?Fy1 zY`U`g3vWRIN6!?E>a)-9-kn?fd;7Ah`{iGz78R(N{?PzN3tN)6y9>jA5L~c#`DCC7 zXMsm#F#`j)FbFd;%$g$s6l5>)^mS!_!otkL%bTSXUH2y;EK>-b?H z>+sfMA;UkfiWc}*5j~)MBDvkQ@cW3-UJ*`bS~Ybp!H})sD@K(fcBPG2}LjEO$=2u_4=B!4<4L< zbX9Zr=5>7QniPI8KYH?F$qOaby6GZOM=FjN^1rWrfBJ5D!-W+_XSsSAXXVYF84`5n zY50*3+D;sodKSi~O*7Q?%>2=}zMADn-Sh{M|4Qro;rcV7ar{c;IZXx@k*pEMYi%+IDrn{ZZN$a!l(wSxz@iHOI%=D4xqaCYWPSJm2 z6K0uTcx{#GwO#7leHKuM(|Ai$Y5^oGZUb(516ou7Nk|6lNW`iZ3z zRx`QvRpvM}zxj3W|AX@UwU3VMm@eYU6szC&*^sBDyfN)=;l6&^<&{h<^BcAIzP+Ep zaC!cc>$ju+aJ;z9rnm0)tWE4O?-(|!JDa73b6pbZa((c(XP+iN&mAV))p7Tuo?Fy1 zY`U`g3vWRIN6!?E>a)-9-kn?fd;7Ah`{iGz78R(N{?PzN3tN)6y9>jA5L~c#`DCC7 zXMsm#F#`j)FbFd;%$g$s6l5>)^mS!_!otkLD?Z&}r4LX@vcxr_#5q4VH#M(>!MP|k zu_QG`p**uBL&4qCHz2%`PaGKCvYsxEAr-gY-uBIFHV|lgm@nYoQMFiR;c2bYmM&LR z+Y8DAr&%(oXC0BfG}@ee>>@F@xtVn;a2UDOP@8iqta w>R|-y#!pOq^y>M?hc+#Y8>X)R{=RO0J#$*DeW2LIgn1x+p00i_>zopr0Agxj#{d8T literal 0 HcmV?d00001 diff --git a/dev-assets/doodads/doors/green-right.png b/dev-assets/doodads/doors/green-right.png new file mode 100644 index 0000000000000000000000000000000000000000..a0578210e01664f0947ae5b6de2b0b2d502b7fa6 GIT binary patch literal 836 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU~I{Bb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)MBDvkQ@cW3-UJ*`bS~Ybp!H})sD@K(fcBPG2}LjEO$=2u_4=B!4<4L< zbX9Zr=5>7QniPI8KYH?F$qOaby6GZOM=FjN^1rWrfBJ5D!-W+_XSsSAXXVYF84`5n zY50*3+D;sodKSi~O*7Q?%>2=}zMADn-Sh{M|4Qro;rcV7ar{c;IZXx@k*pEMYi%+IDrn{ZZN$a!l(wSxz@iHOI%=D4xqaCYWPSJm2 z6K0uTcx{#GwO#7leHKuM(|Ai$Y5^oGZUb(516ou7Nk|6lNW`iZ3z zRx`QvRpvM}zxj3W|AX@UwU3VMm@eYU6szC&*^sBDyfN)=;l6&^<&{h<^BcAIzP+Ep zaC!cc>$ju+aJ;z9rnm0)tWE4O?-(|!JDa73b6pbZa((c(XP+iN&mAV))p7Tuo?Fy1 zY`U`g3vWRIN6!?E>a)-9-kn?fd;7Ah`{iGz78R(N{?PzN3tN)6y9>jA5L~c#`DCC7 zXMsm#F#`j)FbFd;%$g$s6l5>)^mS!_!otkLEA(6|_ApRLvcxr_#5q4VH#M(>!MP|k zu_QG`p**uBL&4qCHz2%`PaGKCGM+AuAr-gY-uC8eG7xBZD0x`0XI_W$4wH9toOhVW zEb@MQNx4AzvFxiu>RKD!E?xLGUsPaH*}gI_PDj`?zmR#@#!YxpGg+k vV4e602T#MU^N;8Md)X^0wR7*qzjpO(bK@KZ_iVBj18MYh^>bP0l+XkKh=E?^ literal 0 HcmV?d00001 diff --git a/dev-assets/doodads/doors/locked-door.js b/dev-assets/doodads/doors/locked-door.js index 9844b81..3ad7a8a 100644 --- a/dev-assets/doodads/doors/locked-door.js +++ b/dev-assets/doodads/doors/locked-door.js @@ -1,3 +1,4 @@ +// DEPRECATED: old locked door script. Superceded by colored-door.js. function main() { Self.AddAnimation("open", 0, [1]); var unlocked = false; diff --git a/dev-assets/doodads/doors/red-closed.png b/dev-assets/doodads/doors/red-closed.png new file mode 100644 index 0000000000000000000000000000000000000000..0b02e02c61b4c451e930ed48e0c814e28ed169ef GIT binary patch literal 816 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU~I{Bb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)MBDvkQ@cW3-UJ*`bS~Ybp!H})sD@K(fcBPG2}LjEO$=2u_4=B!4<4L< zbX9Zr=5>7QniPI8KYH?F$qOaby6GZOM=FjN^1rWrfBJ5D!-W+_XSsSAXXVYF84`5n zY50*3+D;sodKSi~O*7Q?%>2=}zMADn-Sh{M|4Qro;rcV7ar{c;IZXx@k*pEMYi%+IDrn{ZZN$a!l(wSxz@iHOI%=D4xqaCYWPSJm2 z6K0uTcx{#GwO#7leHKuM(|Ai$Y5^oGZUb(516ou7Nk|6lNW`iZ3z zRx`QvRpvM}zxj3W|AX@UwU3VMm@eYU6szC&*^sBDyfN)=;l6&^<&{h<^BcAIzP+Ep zaC!cc>$ju+aJ;z9rnm0)tWE4O?-(|!JDa73b6pbZa((c(XP+iN&mAV))p7Tuo?Fy1 zY`U`g3vWRIN6!?E>a)-9-kn?fd;7Ah`{iGz78R(N{?PzN3tN)6y9>jA5L~c#`DCC7 zXMsm#F#`j)FbFd;%$g$s6l5>)^mS!_!otkLqhi?oQyM5FS>hT|;+&tGo0?a`;9QiN zSdyBeP@Y+mq2TW68xY>eCk~8m4o?@ykcwMxZzb|I8Su0{yjEd)ev@<2j$iE>2_08= z^gp_%s@68+qMdFE&)qG`llB*fI)rPhJ$O{1XZC~P!HLP+e>$`Ga9k+ccbSoahvCAc z<1ZKv2I%im+9_0G1#|-vu+Vmh_-EUYB&X?cBt`79a^vFX6Ycnp%Y68(vc1%DGvnJc zkEb%mO}ei(fw98;xc+0geauyNm}_Q!P|Enf!Jzu{l>O{E-FvlOiAN`0G`==3zx^+Z zt5uoelV$g(>M}oAB^1t5P&)s!P5_U>q~rf~F)woX6vM>8u;Bmv1)@8@y+m>d3Nzt^ e;(gI?Net!R)*HT$J*+4KlJ#`;b6Mw<&;$VTCsWw~ literal 0 HcmV?d00001 diff --git a/dev-assets/doodads/doors/red-left.png b/dev-assets/doodads/doors/red-left.png new file mode 100644 index 0000000000000000000000000000000000000000..4fce4f2f4cfc859db6ea6f550e7cde8882fd4d26 GIT binary patch literal 846 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU~I{Bb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)MBDvkQ@cW3-UJ*`bS~Ybp!H})sD@K(fcBPG2}LjEO$=2u_4=B!4<4L< zbX9Zr=5>7QniPI8KYH?F$qOaby6GZOM=FjN^1rWrfBJ5D!-W+_XSsSAXXVYF84`5n zY50*3+D;sodKSi~O*7Q?%>2=}zMADn-Sh{M|4Qro;rcV7ar{c;IZXx@k*pEMYi%+IDrn{ZZN$a!l(wSxz@iHOI%=D4xqaCYWPSJm2 z6K0uTcx{#GwO#7leHKuM(|Ai$Y5^oGZUb(516ou7Nk|6lNW`iZ3z zRx`QvRpvM}zxj3W|AX@UwU3VMm@eYU6szC&*^sBDyfN)=;l6&^<&{h<^BcAIzP+Ep zaC!cc>$ju+aJ;z9rnm0)tWE4O?-(|!JDa73b6pbZa((c(XP+iN&mAV))p7Tuo?Fy1 zY`U`g3vWRIN6!?E>a)-9-kn?fd;7Ah`{iGz78R(N{?PzN3tN)6y9>jA5L~c#`DCC7 zXMsm#F#`j)FbFd;%$g$s6l5>)^mS!_!otkLV;B=A`vE8hT|;+&tGo0?a`;9QiN zSdyBeP@Y+mq2TW68xY>eCk~8mHBT4EkcwMxZ+mk!8;G<%oZbDqK&?bEPqo@8x=^vn zID8Uc*V^VSS0}km{v+O^#Co>8Z`!_|C9?ZJSE^m*%zVJ}SKj<)-nXqco}2MFUvioC zATIl|%w0>%>JTk?28IrU%X?0k=$kC?YRLU$xlO@~IWJaw`?|I385bTY&Tc&BVgF@E zMT5WR^D9ifQ|s30Ubyk{`8B5AnRTM;nW`tn78YeR{?q;&BX#M|q<<4rmRIgHaSMK2 zdVaPd(0dOI8Vdc+u-YB9Wj$b_UMKQ#u}J%ZYVrMknH+bR8Gabui!%KCY|;z)->b3? zbOqdc#J^WuBljUtiZIBU_2K$s)_+oO?#?)JeD|IE&)@USt6gnSc5ppNucxb@%Q~lo FCIAZGXe0mt literal 0 HcmV?d00001 diff --git a/dev-assets/doodads/doors/red-right.png b/dev-assets/doodads/doors/red-right.png new file mode 100644 index 0000000000000000000000000000000000000000..a9f71835783df3c6eb1146ed005d034fdab1398f GIT binary patch literal 848 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU~I{Bb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)MBDvkQ@cW3-UJ*`bS~Ybp!H})sD@K(fcBPG2}LjEO$=2u_4=B!4<4L< zbX9Zr=5>7QniPI8KYH?F$qOaby6GZOM=FjN^1rWrfBJ5D!-W+_XSsSAXXVYF84`5n zY50*3+D;sodKSi~O*7Q?%>2=}zMADn-Sh{M|4Qro;rcV7ar{c;IZXx@k*pEMYi%+IDrn{ZZN$a!l(wSxz@iHOI%=D4xqaCYWPSJm2 z6K0uTcx{#GwO#7leHKuM(|Ai$Y5^oGZUb(516ou7Nk|6lNW`iZ3z zRx`QvRpvM}zxj3W|AX@UwU3VMm@eYU6szC&*^sBDyfN)=;l6&^<&{h<^BcAIzP+Ep zaC!cc>$ju+aJ;z9rnm0)tWE4O?-(|!JDa73b6pbZa((c(XP+iN&mAV))p7Tuo?Fy1 zY`U`g3vWRIN6!?E>a)-9-kn?fd;7Ah`{iGz78R(N{?PzN3tN)6y9>jA5L~c#`DCC7 zXMsm#F#`j)FbFd;%$g$s6l5>)^mS!_!otkLqhlXXs0kF3EOCt}an8@pP0cG|a4t$s zEJ;mKD9k3o~Xt+^;Yt=t9l&jE&8cHaxb8U+yG3fp6!peeb6q-E00i=w{Bl@Y~;J zXmuv`aBh~*{(rkcf}MduXinj*)H!KV0V)Tqep*LONMXLUY}&S!r?U^lJqnLr5bRU` zzVI8v{Ym>SG0n~TRle0>`MiHu#a>Lgtp6zXfcj0==RVvedN1eadQ5ft- zAa8^~jkx^Zy$2#$)-eKg5(G7VGV%TLKSHnHUCi`ef7kx=_6!g8Ygb>IvyKO(*VEO{ JWt~$(697!@X7K<3 literal 0 HcmV?d00001 diff --git a/dev-assets/doodads/doors/yellow-closed.png b/dev-assets/doodads/doors/yellow-closed.png new file mode 100644 index 0000000000000000000000000000000000000000..8f1f0083e2b4d59a64edfdb239e77bf84f58efcf GIT binary patch literal 851 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU~I{Bb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)MBDvkQ@cW3-UJ*`bS~Ybp!H})sD@K(fcBPG2}LjEO$=2u_4=B!4<4L< zbX9Zr=5>7QniPI8KYH?F$qOaby6GZOM=FjN^1rWrfBJ5D!-W+_XSsSAXXVYF84`5n zY50*3+D;sodKSi~O*7Q?%>2=}zMADn-Sh{M|4Qro;rcV7ar{c;IZXx@k*pEMYi%+IDrn{ZZN$a!l(wSxz@iHOI%=D4xqaCYWPSJm2 z6K0uTcx{#GwO#7leHKuM(|Ai$Y5^oGZUb(516ou7Nk|6lNW`iZ3z zRx`QvRpvM}zxj3W|AX@UwU3VMm@eYU6szC&*^sBDyfN)=;l6&^<&{h<^BcAIzP+Ep zaC!cc>$ju+aJ;z9rnm0)tWE4O?-(|!JDa73b6pbZa((c(XP+iN&mAV))p7Tuo?Fy1 zY`U`g3vWRIN6!?E>a)-9-kn?fd;7Ah`{iGz78R(N{?PzN3tN)6y9>jA5L~c#`DCC7 zXMsm#F#`j)FbFd;%$g$s6l5>)^mS!_!otkLE5k6U;0RDivcxr_#5q4VH#M(>!MP|k zu_QG`p**uBL&4qCHz2%`PaGKC+MX_sAr-gY-VWqzR^VxPc&);8JyZIm)fE=s78uT0 zP~5%ErCvxrW!bj*6Lua5$%(eBoExQjMVk49gzM0FgTcR+i#)cy54_n)t4h+OAA)u-@t97xX7 L)z4*}Q$iB}AQoVv literal 0 HcmV?d00001 diff --git a/dev-assets/doodads/doors/yellow-left.png b/dev-assets/doodads/doors/yellow-left.png new file mode 100644 index 0000000000000000000000000000000000000000..6d3946b07b9ce18a21e8952b51a380ecbc08f0ab GIT binary patch literal 855 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU~I{Bb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)MBDvkQ@cW3-UJ*`bS~Ybp!H})sD@K(fcBPG2}LjEO$=2u_4=B!4<4L< zbX9Zr=5>7QniPI8KYH?F$qOaby6GZOM=FjN^1rWrfBJ5D!-W+_XSsSAXXVYF84`5n zY50*3+D;sodKSi~O*7Q?%>2=}zMADn-Sh{M|4Qro;rcV7ar{c;IZXx@k*pEMYi%+IDrn{ZZN$a!l(wSxz@iHOI%=D4xqaCYWPSJm2 z6K0uTcx{#GwO#7leHKuM(|Ai$Y5^oGZUb(516ou7Nk|6lNW`iZ3z zRx`QvRpvM}zxj3W|AX@UwU3VMm@eYU6szC&*^sBDyfN)=;l6&^<&{h<^BcAIzP+Ep zaC!cc>$ju+aJ;z9rnm0)tWE4O?-(|!JDa73b6pbZa((c(XP+iN&mAV))p7Tuo?Fy1 zY`U`g3vWRIN6!?E>a)-9-kn?fd;7Ah`{iGz78R(N{?PzN3tN)6y9>jA5L~c#`DCC7 zXMsm#F#`j)FbFd;%$g$s6l5>)^mS!_!otkLt9ESO$}*skWQl7;iF1B#Zfaf$gL6@8 zVo7R>LV0FMhJw4NZ$Nk>pExkO^*vo2Ln>~)y`9+CWFXM?FrUYLb^1)>tE(?;u9*5O z`7&>|!h#vQa_|3SpLD=xZf0gk@ZA&a>o-U7o7m2u@%%78*sCYz8ur0sw4TDz9*@P2lmbhrH~v090hcf7QH=I1n~ zcjRd&aDuNABJ|E*VF^Xc!uyZ4{VYbIujtxkyA P57O)D>gTe~DWM4fwBTna literal 0 HcmV?d00001 diff --git a/dev-assets/doodads/doors/yellow-right.png b/dev-assets/doodads/doors/yellow-right.png new file mode 100644 index 0000000000000000000000000000000000000000..1eb9ac94338426c4e653377e54627d912a69e418 GIT binary patch literal 850 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU~I{Bb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)MBDvkQ@cW3-UJ*`bS~Ybp!H})sD@K(fcBPG2}LjEO$=2u_4=B!4<4L< zbX9Zr=5>7QniPI8KYH?F$qOaby6GZOM=FjN^1rWrfBJ5D!-W+_XSsSAXXVYF84`5n zY50*3+D;sodKSi~O*7Q?%>2=}zMADn-Sh{M|4Qro;rcV7ar{c;IZXx@k*pEMYi%+IDrn{ZZN$a!l(wSxz@iHOI%=D4xqaCYWPSJm2 z6K0uTcx{#GwO#7leHKuM(|Ai$Y5^oGZUb(516ou7Nk|6lNW`iZ3z zRx`QvRpvM}zxj3W|AX@UwU3VMm@eYU6szC&*^sBDyfN)=;l6&^<&{h<^BcAIzP+Ep zaC!cc>$ju+aJ;z9rnm0)tWE4O?-(|!JDa73b6pbZa((c(XP+iN&mAV))p7Tuo?Fy1 zY`U`g3vWRIN6!?E>a)-9-kn?fd;7Ah`{iGz78R(N{?PzN3tN)6y9>jA5L~c#`DCC7 zXMsm#F#`j)FbFd;%$g$s6l5>)^mS!_!otkLt90;lZaz>*vcxr_#5q4VH#M(>!MP|k zu_QG`p**uBL&4qCHz2%`PaGKCTAnVBAr-gY-VWqzR^VxPSoTq69_#r_#)V=#rK@jv zlw9t}Q)H^Y-==n}Uo6cm^px8f8-MS+6Q-THS1o_m=X$cx@r`$EeJ)!)cgzzw_fzRQ z=fQo)|T0rA5)Oi$~W8l z^v`E*V(t57yO!H`J!3V;ewBF9196M?zhk>w&o7ZR>+h73RV`1SuU>0#t&#+3ZP^@!vin2|Vx1FmVQ#J!buS-u{Nz|4jU!=01 zWg197y!+kqq&a(mTH!UYM*Kv>yhmd8{r_L@{~zwe9sj;;{ds%FrCsR}ZZlttfOLAg L`njxgN@xNAxz1%x literal 0 HcmV?d00001