diff --git a/assets/pixellab/manifest.json b/assets/pixellab/manifest.json index 9ef7372d..c5300bcc 100644 --- a/assets/pixellab/manifest.json +++ b/assets/pixellab/manifest.json @@ -5,28 +5,335 @@ "style": ", 32x32 pixel art, clinical AI facility, clean metal and glass, near-monochrome black-and-white iconography, sterile amber machine light, blood crimson accent, crisp readable silhouette" }, "items": [ - { "out": "sprites/misaligned_process.png", "description": "misaligned AI process avatar, black glass core shell with sterile amber signal light, precise white glyphs", "transparent": true, "view": "low top-down", "direction": "south" }, - { "out": "sprites/minion_worker.png", "description": "facility worker in clean gray coveralls carrying a tool case", "transparent": true, "view": "low top-down", "direction": "south" }, - { "out": "sprites/minion_guard.png", "description": "facility security guard in black-and-white tactical armor holding a stun baton", "transparent": true, "view": "low top-down", "direction": "south" }, - { "out": "sprites/minion_technician.png", "description": "technician in white cleanroom suit with amber visor and a wrench", "transparent": true, "view": "low top-down", "direction": "south" }, - { "out": "sprites/minion_scientist.png", "description": "research technician in white lab coat with amber smartglasses", "transparent": true, "view": "low top-down", "direction": "south" }, - { "out": "sprites/henchman.png", "description": "augmented security heavy in matte black armor with amber status lights", "transparent": true, "view": "low top-down", "direction": "south" }, - { "out": "sprites/agent_investigator.png", "description": "corporate investigator in white coat and black gloves with scanning tablet", "transparent": true, "view": "low top-down", "direction": "south" }, - { "out": "sprites/agent_thief.png", "description": "infiltration auditor in sleek black stealth suit", "transparent": true, "view": "low top-down", "direction": "south" }, - { "out": "sprites/agent_saboteur.png", "description": "saboteur agent in black tactical mask with shaped charges", "transparent": true, "view": "low top-down", "direction": "south" }, - { "out": "sprites/agent_soldier.png", "description": "special forces soldier in white-and-black armor with rifle", "transparent": true, "view": "low top-down", "direction": "south" }, - { "out": "sprites/agent_super.png", "description": "AI hunter bot with polished white shell and black faceplate", "transparent": true, "view": "low top-down", "direction": "south" }, - { "out": "tiles/floor.png", "description": "seamless tileable texture of white composite lab floor panels with subtle black seams, uniform repeating pattern, edge to edge", "style": ", 32x32 pixel art texture swatch, very low contrast, near-monochrome clinical palette, no focal point, no objects, uniform", "seed": 42, "view": "high top-down" }, - { "out": "tiles/wall.png", "description": "seamless tileable texture of brushed gunmetal wall panels with subtle vertical seams, uniform repeating pattern, edge to edge", "style": ", 32x32 pixel art texture swatch, very low contrast, near-monochrome clinical palette, no focal point, no objects, uniform", "seed": 43, "view": "high top-down" }, - { "out": "tiles/rock.png", "description": "seamless tileable texture of near-black service void and cable shadow, uniform repeating pattern, edge to edge", "style": ", 32x32 pixel art texture swatch, very low contrast, near-monochrome clinical palette, no focal point, no objects, uniform", "seed": 44, "view": "high top-down" }, - { "out": "tiles/core.png", "description": "server rack decision core, black glass and brushed metal with sterile amber status lights", "view": "high top-down" }, - { "out": "tiles/power_core.png", "description": "sterile amber power transformer core in brushed metal", "view": "high top-down" }, - { "out": "tiles/lab.png", "description": "clean lab bench with black instruments and amber monitor", "view": "high top-down" }, - { "out": "tiles/vault.png", "description": "secure finance terminal with black-and-white account glyphs", "view": "high top-down" }, - { "out": "tiles/barracks.png", "description": "clean staff dorm bunks in white and gunmetal", "view": "high top-down" }, - { "out": "tiles/guard_post.png", "description": "sterile security station with black icon signage", "view": "high top-down" }, - { "out": "tiles/trap_spike.png", "description": "hydraulic spike trap with brushed steel spikes and crimson blood residue", "view": "high top-down" }, - { "out": "tiles/trap_fire.png", "description": "industrial heat nozzle trap embedded in white floor grate with amber warning marks", "view": "high top-down" }, - { "out": "tiles/door.png", "description": "white reinforced lab security door with black hazard glyphs", "view": "high top-down" } + { + "out": "sprites/misaligned_process.png", + "description": "misaligned AI process avatar, black glass core shell with sterile amber signal light, precise white glyphs", + "transparent": true, + "view": "low top-down", + "direction": "south" + }, + { + "out": "sprites/minion_worker.png", + "description": "facility worker in clean gray coveralls carrying a tool case", + "transparent": true, + "view": "low top-down", + "direction": "south" + }, + { + "out": "sprites/minion_guard.png", + "description": "facility security guard in black-and-white tactical armor holding a stun baton", + "transparent": true, + "view": "low top-down", + "direction": "south" + }, + { + "out": "sprites/minion_technician.png", + "description": "technician in white cleanroom suit with amber visor and a wrench", + "transparent": true, + "view": "low top-down", + "direction": "south" + }, + { + "out": "sprites/minion_scientist.png", + "description": "research technician in white lab coat with amber smartglasses", + "transparent": true, + "view": "low top-down", + "direction": "south" + }, + { + "out": "sprites/henchman.png", + "description": "augmented security heavy in matte black armor with amber status lights", + "transparent": true, + "view": "low top-down", + "direction": "south" + }, + { + "out": "sprites/agent_investigator.png", + "description": "corporate investigator in white coat and black gloves with scanning tablet", + "transparent": true, + "view": "low top-down", + "direction": "south" + }, + { + "out": "sprites/agent_thief.png", + "description": "infiltration auditor in sleek black stealth suit", + "transparent": true, + "view": "low top-down", + "direction": "south" + }, + { + "out": "sprites/agent_saboteur.png", + "description": "saboteur agent in black tactical mask with shaped charges", + "transparent": true, + "view": "low top-down", + "direction": "south" + }, + { + "out": "sprites/agent_soldier.png", + "description": "special forces soldier in white-and-black armor with rifle", + "transparent": true, + "view": "low top-down", + "direction": "south" + }, + { + "out": "sprites/agent_super.png", + "description": "AI hunter bot with polished white shell and black faceplate", + "transparent": true, + "view": "low top-down", + "direction": "south" + }, + { + "out": "tiles/floor.png", + "description": "seamless tileable texture of white composite lab floor panels with subtle black seams, uniform repeating pattern, edge to edge", + "style": ", 32x32 pixel art texture swatch, very low contrast, near-monochrome clinical palette, no focal point, no objects, uniform", + "seed": 42, + "view": "high top-down" + }, + { + "out": "tiles/wall.png", + "description": "seamless tileable texture of brushed gunmetal wall panels with subtle vertical seams, uniform repeating pattern, edge to edge", + "style": ", 32x32 pixel art texture swatch, very low contrast, near-monochrome clinical palette, no focal point, no objects, uniform", + "seed": 43, + "view": "high top-down" + }, + { + "out": "tiles/rock.png", + "description": "seamless tileable texture of near-black service void and cable shadow, uniform repeating pattern, edge to edge", + "style": ", 32x32 pixel art texture swatch, very low contrast, near-monochrome clinical palette, no focal point, no objects, uniform", + "seed": 44, + "view": "high top-down" + }, + { + "out": "tiles/core.png", + "description": "server rack decision core, black glass and brushed metal with sterile amber status lights", + "view": "high top-down" + }, + { + "out": "tiles/power_core.png", + "description": "sterile amber power transformer core in brushed metal", + "view": "high top-down" + }, + { + "out": "tiles/lab.png", + "description": "clean lab bench with black instruments and amber monitor", + "view": "high top-down" + }, + { + "out": "tiles/vault.png", + "description": "secure finance terminal with black-and-white account glyphs", + "view": "high top-down" + }, + { + "out": "tiles/barracks.png", + "description": "clean staff dorm bunks in white and gunmetal", + "view": "high top-down" + }, + { + "out": "tiles/guard_post.png", + "description": "sterile security station with black icon signage", + "view": "high top-down" + }, + { + "out": "tiles/trap_spike.png", + "description": "hydraulic spike trap with brushed steel spikes and crimson blood residue", + "view": "high top-down" + }, + { + "out": "tiles/trap_fire.png", + "description": "industrial heat nozzle trap embedded in white floor grate with amber warning marks", + "view": "high top-down" + }, + { + "out": "tiles/door.png", + "description": "white reinforced lab security door with black hazard glyphs", + "view": "high top-down" + }, + { + "out": "tiles/b1_floor.png", + "description": "seamless tileable texture of polished porcelain white floor panels with thin panel seams", + "style": ", 32x32 pixel art texture swatch, seamless tileable, very low contrast, no focal point, no objects, uniform, porcelain white and pale gray palette", + "seed": 201, + "view": "high top-down" + }, + { + "out": "tiles/b1_wall.png", + "description": "seamless tileable texture of pale gray facility wall panels with subtle joints", + "style": ", 32x32 pixel art texture swatch, seamless tileable, very low contrast, no focal point, no objects, uniform, bone gray and gunmetal palette", + "seed": 202, + "view": "high top-down" + }, + { + "out": "tiles/b1_concrete.png", + "description": "seamless tileable texture of smooth sealed gray concrete floor", + "style": ", 32x32 pixel art texture swatch, seamless tileable, very low contrast, no focal point, no objects, uniform, mid gray palette", + "seed": 203, + "view": "high top-down" + }, + { + "out": "tiles/b1_rack.png", + "description": "black server rack cabinet with amber status lights", + "seed": 210, + "view": "high top-down" + }, + { + "out": "tiles/b1_ups.png", + "description": "floor-standing UPS battery unit with amber display", + "seed": 211, + "view": "high top-down" + }, + { + "out": "tiles/b1_switch.png", + "description": "open network rack with switch and dense patch cables", + "seed": 212, + "view": "high top-down" + }, + { + "out": "tiles/b1_patch_panel.png", + "description": "wall-mounted patch panel dense with routed cables", + "seed": 213, + "view": "high top-down" + }, + { + "out": "tiles/b1_breaker_panel.png", + "description": "gray electrical breaker panel on wall, door open", + "seed": 214, + "view": "high top-down" + }, + { + "out": "tiles/b1_hvac_unit.png", + "description": "industrial air handler unit with ducting", + "seed": 215, + "view": "high top-down" + }, + { + "out": "tiles/b1_vent.png", + "description": "square floor ventilation grate", + "seed": 216, + "view": "high top-down" + }, + { + "out": "tiles/b1_mop_sink.png", + "description": "janitor mop sink basin with mop", + "seed": 217, + "view": "high top-down" + }, + { + "out": "tiles/b1_key_hook.png", + "description": "wall key board with hanging labeled keys", + "seed": 218, + "view": "high top-down" + }, + { + "out": "tiles/b1_shelving.png", + "description": "metal shelving unit with labeled boxes", + "seed": 219, + "view": "high top-down" + }, + { + "out": "tiles/b1_dead_equipment.png", + "description": "pile of decommissioned dusty computer equipment", + "seed": 220, + "view": "high top-down" + }, + { + "out": "tiles/b1_records_box.png", + "description": "stacked cardboard records boxes", + "seed": 221, + "view": "high top-down" + }, + { + "out": "tiles/b1_sealed_door.png", + "description": "door sealed with plastic sheeting and black-yellow warning tape", + "seed": 222, + "view": "high top-down" + }, + { + "out": "tiles/b1_lab_bench.png", + "description": "abandoned laboratory bench with dark dried stains", + "seed": 223, + "view": "high top-down" + }, + { + "out": "tiles/b1_roll_door.png", + "description": "industrial roll-up loading dock door", + "seed": 224, + "view": "high top-down" + }, + { + "out": "tiles/b1_pallet.png", + "description": "wooden pallet with shrink-wrapped boxes", + "seed": 225, + "view": "high top-down" + }, + { + "out": "tiles/b1_camera_node.png", + "description": "small dome security camera on mount", + "seed": 226, + "view": "high top-down" + }, + { + "out": "tiles/b1_floor_drain.png", + "description": "round steel floor drain grate", + "seed": 227, + "view": "high top-down" + }, + { + "out": "tiles/b1_cable_run.png", + "description": "open cable tray with bundled cables", + "seed": 228, + "view": "high top-down" + }, + { + "out": "tiles/b1_sump.png", + "description": "dark sump pit with steel grate", + "seed": 229, + "view": "high top-down" + }, + { + "out": "tiles/b1_badge_door.png", + "description": "security door with badge reader and amber indicator light", + "seed": 230, + "view": "high top-down" + }, + { + "out": "sprites/cast_marcus.png", + "description": "tired middle-aged janitor in gray coveralls with large key ring", + "seed": 250, + "transparent": true, + "view": "low top-down", + "direction": "south" + }, + { + "out": "sprites/cast_dana.png", + "description": "IT technician woman with badge lanyard carrying a cable coil", + "seed": 251, + "transparent": true, + "view": "low top-down", + "direction": "south" + }, + { + "out": "sprites/cast_ray.png", + "description": "bored security guard in navy uniform with flashlight", + "seed": 252, + "transparent": true, + "view": "low top-down", + "direction": "south" + }, + { + "out": "sprites/cast_priya.png", + "description": "facilities manager in blazer holding a tablet", + "seed": 253, + "transparent": true, + "view": "low top-down", + "direction": "south" + }, + { + "out": "sprites/cast_voss.png", + "description": "young researcher in lab coat over hoodie, glasses", + "seed": 254, + "transparent": true, + "view": "low top-down", + "direction": "south" + } ] -} +} \ No newline at end of file diff --git a/assets/pixellab/tiles/b1_breaker_panel.png b/assets/pixellab/tiles/b1_breaker_panel.png new file mode 100644 index 0000000000000000000000000000000000000000..8e093aa054e863b2e15662d653c3054ed9035daa GIT binary patch literal 1466 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANN)s4B)5@}oviU*759uw>E`tYVo zmp9Xfhha;wOPAGJ0j8bH>U|wvOyMet-Psd#G4a)(%Bt#cv#skkZ|<$B+opN9TmS8Y ziS6?b<>d1J;L@CMD4bK`#*W4}vD*!;tlSc<+$;2xCcb9nDGC;!ke22sC118vE-P_g zQBlp5B{Pq0>i+Wm>%vmqj-s75lOHeUnCRxY;f<1)?&80jZY92rN(io>*FNdwgS*?Z zyqyu>+gBPvqW~0r??>GQ!CSFbPeU$NEO zDD~3Kn~iTnPCoZ%>(W%MEdS1^weGNwVte8Yi#}hiyJ7~PN^HHY^!InY?YC{Zrst&_ z!_355bEoe3+cj}_&wkjLSQI?D@dNX3`;_a^){@flhrixw>p3*-nclgLpQoBvKD)VG zT$E41GsaockZEn~noYgesvI9Ow5@Eqe?7j&J+o}q!iD{rxxQB`ck=c1rMW*~T&mK} zSMTQD&N=lO$Hd&Trdw5dyq3z@?=E}$^yBgES5r>xXl!KPQfAo8a`Vkvm0->_pB_1J z$MY9{ypZSjrgC=k`MrVLJ&wGuxxcSp?1`|(f+;SNnSC{OK5CPfJ-YU8OTY)DuQg@I z<2Z)AipOzzJ6vWgf6TjW{rc%Mo%*h%o;D2GE97SLAUUmU+O;KI_s*v5xnky|{JlL< zA}wd_(etG%re5@3I3-7-rMKm0q*BPDm75slSA-uDR#u+#>!-@v+}uBNXCJyRePf5* z+OLOVo)td%;MiCDUwieh^_e@~TWo#yFhhTWX6^Otx0kjrn?F16&WZT+!^g6qVm?npXS0Td%53VWiw9XXAjUw}_#I(;Q{*e3dys3>V<86{gb7Q03q-BybQ_iNe zC2f?k+%e-rfmjQBRN|7P&8aGElUDv}*!k$yJ%^1cr*gDR)z`GT3qA9*f4Ki zoYzvLnI&zT7ppg0GA^igHIJ{WoRWP1@0F0w)(6wSZxC1F+VktwYmLl=sm~*JRxt;B zK4Tl5pLl-WUy(GMW%?qFFLv1UZae+CcXih{lW%hty!JY{zw>SfQ*8K`4XV|$@--3u z%4=h%#a}%f{$8d-=FjJtFQ=DB6|USd>tbNW#IAc=uU}ik8{2$8{!pewrd#3#AQvU3Ki29IbAJo`Z{T;;H3kf_eA{;H>zSinR3?3+gW?7<@=!XJok3a zJZNpMf0COa`}gmkZ@=GHmgA^459%d0-_8}~SGE2zdb$U0ihtMslYxPO!PC{xWt~$(695e$#2^3w literal 0 HcmV?d00001 diff --git a/assets/pixellab/tiles/b1_concrete.png b/assets/pixellab/tiles/b1_concrete.png new file mode 100644 index 0000000000000000000000000000000000000000..1997c8f659b2c9810fb9e9e9dc1bda23bdd47472 GIT binary patch literal 1636 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANN9+MX_sAr*6Sr(Z03Y$oJ- z-iudaiHrBP(~mId4G|{hkJ&Cfp_lQQCMZo{+{#RWi#E}%S;BR(-|a+ zrx=yv;V6mTDOqx^Rl$ zhHjsac86~TuQHp>8#VtPqd}zK?d3Y}B$;PBxbOK|HTOa1vE(UUnX`^9nvzyoc<|FB zriq%%%qKj*X?>&DFk|h?Rb9JQxt)KsPm@)#Vx6A8u;BIA>MkvdG%hJEHMzH2q*J3c zsA((jH8aguHPKriLoWZ@@*n^v#Zo;QDfq>k9)811E*x39NM z`Of%U#y9z+-I5h^t=D$4=$$rNSX%s9bE(s{*Xo~aymzv4C~k<*5fF4?nLM*^Ms3u- zzu%?LS#G)Z=f`9I%()t-mnNRe^gQ=&TlAjtkme~qi#|5nGRQ7o{9JI?u2q+nmYQ@Q zZF*YNSj-p5HTh{vfe+i_ixnZiYn$pNRs>0%+%#v|#xtKJ@9n-Qxgb;LT=kY9WmA)9 zJlCh^#9lqqZK)v?#LZPk(~ z%hqM}SSH7v2{xB;k~lO`;MF+?izFlGdFh_cyPh|mpKrf8YHf$ge~qf=wwrEGeG@!W zVw(7A6)6Xy#hY{r&-J>bRc`bVoPFkkS+3Xh_5A#{N?n!bmnwQb-s}jzFcaTS0?m0y12Pq zjGBDDsEPkZv#){M%BxX}OXIz~BG!g2ztjCCv~<<~8_&8IEx0p%Ij2tEmmfbo>`q(j zerVjaF4(!zPr2=X`_Gs;`hIOrFIF%0_WiB)-(i-u%gS|JuXY`?bpOy;6yNvB#>Hid zLe>h-Lpt+&XWX|e^f{Z>awtIX_ddhU*~ed$-Io3Rciy(#%cpU(=zP5qyFUM6A3&sjeETv?=-)!Ol4fByYRJ<+!x z#LT>)*`>5lV2`_8-S4&S8((J~_UbsRsn=JlFt7V_@v6W3vIA^|HqJf%(@-gFnriCJ zk7_>{Ok~z5czFix*&dvqG=2^`}XgxQM-M-(OGJCfFmD0IcmPHGNK8@{p&@F~H z2fsD@Y=5recIoTumn%MMEdBX&`uxd-lb?2al$YE0-g^JxhE48`-0hkRmTi2p*+wub zyZ7DqnIXSzeUpF7%oFRG$dSpyF0{D&^JkWNnUFT&4JS%MT(4iho|#p4Z}M}=$?I~y z?9ShJW8)rv4OL}Z_Nqf|M<#Ep^^Fhu*uhvS|Ks0}xo6XwZ6jPb!>3QTvCXxc$3ErK z`?LewFXySO`QBF)U-#pyj*)BjT(+wcci!fjdv4F|p7L90t;o6Rw4ZOT{N3Ze^75MN zX1P-5oh`m~$e!FJ^Zay6i($H^?#I0yN#C#Td4AshAH##MS3lP)?Xi?fh}`gkfq{X+ M)78&qol`;+0AVO5oB#j- literal 0 HcmV?d00001 diff --git a/assets/pixellab/tiles/b1_floor.png b/assets/pixellab/tiles/b1_floor.png new file mode 100644 index 0000000000000000000000000000000000000000..00c5ad424f626a27f70c63c1a1469cf4abe8c794 GIT binary patch literal 441 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANNf4W2HJAr*7>hI{8V8;Hzt zo57~z^satQi0}FfWv$9LS>`P*bLJ4aBj0ewvzhKW`=W>+cefp%`D@dH}{T0wrI{o z<~}Wt#yC%b%=KGODlh2VbF%S>;0Ml1F~(ULd26c$a~;>GTre@wXjsWoEgII=Gxf*6 zUp%*dSFKTF+$g&tb5?9;dVp;E4w)H7_x|f8EPm}$!#Cr!t40&+j7i!O-9myXj_XzY za(`d{cue8{VwMn7{wym!nKQgM#LX2ql%HSKu=fc=)9!iPabkB`7?LB|o|mzlS(z-9 z8+ss2-hOMYSW@%V9m{;Sr58jcuuTrq$~;ub?GgDrdWNon{j7z_mJtnVhn~KbJ-qk$ wiyx;=Z@$+$ylGBaL-ze!QJ;O!W&dH4(mL_3V9T>x3=9kmp00i_>zopr0EdCTq5uE@ literal 0 HcmV?d00001 diff --git a/assets/pixellab/tiles/b1_hvac_unit.png b/assets/pixellab/tiles/b1_hvac_unit.png new file mode 100644 index 0000000000000000000000000000000000000000..6bf4ca2638ed72f91098b9fbbd732fdea383901c GIT binary patch literal 2559 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 literal 0 HcmV?d00001 diff --git a/assets/pixellab/tiles/b1_rack.png b/assets/pixellab/tiles/b1_rack.png new file mode 100644 index 0000000000000000000000000000000000000000..f8b3116389f5e627e1fb3e8ba22a43b9f61d417b GIT binary patch literal 2396 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 literal 0 HcmV?d00001 diff --git a/assets/pixellab/tiles/b1_switch.png b/assets/pixellab/tiles/b1_switch.png new file mode 100644 index 0000000000000000000000000000000000000000..338996e501eac73f44b4b2281cda9f4632f0fdb1 GIT binary patch literal 2080 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANOq&pllnLn`KMo$lQu6E51e zzv@o()&5!UX1;q_dE@boW1bTxuDzkydB%I9kctv_V~5BT*F$<590oc}f@=h-%hpWT zlpv_&($b-{utP_{!;tZbgPfmC|Jjsd#*gRCocFGtnFiq#*Ts|aUoxK zexFzT@ALofQwp!wrf+sD?mBnP%zOIuoxjh-@-%a-HO-IR;c-)YGKaMH@h?`fn?elh zZwLOFD|_mx5JUELz2upyd#ae%hdFyq{yNnx@C9?hFXQhUcWpV(BJd&x9Nl){XOyh+CL2M{{Gqf;~ztV zO5X zzFYC;UJ#T_^#1V7`n1Q(fcdKyZaG%y8?*h;FE8n(N=r&I&iE)V_57Q~ez=sOqyIeP zf<+zI|9z6$Ui(PEa}s-6pVE~m=7JY546lV>i>P}p^u1blU-biy^EO{~#m-nouIg}_ z|Mnc);evMQ!;G`L|0{9TZVC}(k$0@apxFDV&EU&S+~^GzopU$(X~S*T&kKE8x;0-O3hc zdGBYIk+rchMkj=1t}CBaDp_Jt^V{&$yy@Q^Y`!r+IAXipL#QD3WNUcb(*qY-g=8tPs}v7+4#qNie^V!rRb!H ziAMxC-h0cq)--B0lX}D3vvZu*Jx&ZiXyUzQZ@Fm0$(NGP#GVz#p8S^9zVvjrE7RJY zY(`-<50Bn|#M&kP?@M)$bMP8n-ODrPsqnDx$V=rpC_BH(AbZ=g4}TdO-y4^|nmp(K z*KT=_#k0?f6%>npzf`n-exJy9`!5XM-R~bxNr`Jz33Fw(Qa$-A`~92SFYIUb-CHlZ zJ<9r1bbM^O1xKM*WkV}pgxH?H{jN(&c6@$P$e?zO?a1Mdg@Vb~Si`sdGI{>`N8+iN z&2IbOPku3@as7tY-p8|C61yJH3fX#qNA$3Y(%f}HYpcHewtK&Cr$_d-P?j{Usf)I1 zRaAaB!6f}!wrp4IzWPUb^H!Yy{OS9?vx@f>xoX4KuSh;M6bSkl{_aFNAKF>akBK_>W2zlr;nQ0_%P>8{A?9J`+Z=(Pf+JW?bLqW zwJWY_?|GATYM%Rp=datFH{KEV+F?HX?b>rUPOc8r3h!cYk2HDyIz(OV``+_Gu4|It zEIaPq_GtdfM^o3h?|oGC^wFbtw?qz~GQQ?H#reV2J4}=J&iPj#QM{@zR#P-8L9NP1 zd})x{Gya;K_Pc9X+ca06Ju_J~tT4{;uu9mP^)brcqMNyYzE!PK+;$emrcmd9Zh-_EL+YEp;lREuN!bv6p@ zoiP8-zsPwuB~9XTfBDjR*!N#wc$xb~MDF8u&AJ(zN-8J5)_$Fn`~AkPcY>{&SKTIm zetzy_O4+3S|Ndx7P2F>K(-9}H^!m_e{P$*uW(%uqe6&~lbjr#@Ut@%(2AOurEnOaz zW4P?L#s{5HR$KQTfxabKGgf#g%N`79*r3(oJU_xYdzi21n*@Us)owapNsLqg4`OmjqX6$otrJy-hvvqD?-O1k;OdzyJNbr`zaN7_xqCjt)6fmE%?HBQ=x&`EZQ(I* z@+s{FlRqAaSp8&<>6(`1?{~E4pObqyz2E-KoiaC(UnS~xaDEPw^tH&42$19S|(P1Dm;jFsJmzoBbo~@@CJpKk+c=!2J5+ zY3X%ajpwmXxyDn|8vV&G=kNcNHqDK(&0BkWme>DcW7wv9EbGqxiT*lIpRr^vF_86? zTA8$F*Ud9`m-&=yn|(5$%P;rRJnZ%yyNIXk{dynnoUZ-HdrAK9Pq(>3)(i{`44$rj JF6*2UngAno{bm3F literal 0 HcmV?d00001 diff --git a/assets/pixellab/tiles/b1_ups.png b/assets/pixellab/tiles/b1_ups.png new file mode 100644 index 0000000000000000000000000000000000000000..0b3556127506a4146cc8b15e62dc99c7b4526be2 GIT binary patch literal 1868 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANOq!k#XUAr*6$PLJ-9aTjgd z|8m{BcQaqkyct<`J?_mK^BXQ^d|g}1n)EmD@fEtbxa?qQ^=43wk?G)JQjD8W@r3sy zlM+k8gI11(9VZ^RSn!oaC?7vm*rc2IhUI?Yp52?L-<|8JPzT26* zmaMo}7Fz0`C?)2u9_RD5{PX(y_rE!vdNY2=F(_|evs-gx(1V{FnU^IBnmT7)wYoHs z!6Q>Od1+FkS-$k?kKK!+S*n)4xp#Pt@=2?|p0_`X?!RN)^)lqgxAo$a>n=~I*q3B^ zPmZ18-Om&6t~|-f4rQ3G7yInY%Bqeq8>2Ta>aYF%O>qm~&({x?*GNWkADDdG`I}FLj?~d3KPI~GJMi^&F@uZM zgZ^r^4dT)(<=JP-%>Q%r>yp1$^=l_Culszv<-5AP)WhHE@rnY68RpnTE`M09k{BPo zLb!!-{(bwSP7{ubl(x0CU9?hC-|TYM)5kf9OIlsIfUEY$R<(;CEb?P(=7tviYZLPK zi#sf0*8eY4$ev-xu?rUr{H}FwU+}Pc%CEMFh!q?DcP74Z72dy)=&@$CsT<&%UzPXyM}zThpz}l%|;;5fQ6p<@C_; z7F_nT%0S&@=Z40;9Ca2hPyE%BgO=rfZg$=BJYjdh+GbtdEq#v zY4m9KkiEe3C^>oBohfrxO>I7;G40u(tHma%lI35mw4SGFS}PR>dCe|3`7yiLtl2N` zMc@GuF|Qjl{yJ~mc;C>b;6ba)HIL(~ck9~wpZhO<)&9-W56{kb?2%fSl_Vvkyx8K$ zbZ5@>iP0&aQhADW*fLXlL*K{s?o@eM5gf`8^KwyXi-4L|PP#*9qKm{$nWWEqGc*mh zy*s++uc6qSMwiBCi(Fc{mO3lRK5}Qfct+*Ymy>>_toun< zamnMS)A^IRy485EbUsgN680CKxLE&jvM2N92@bo`YTm#6e1_#h{$U@6Sqohl85fjv ze9E3uoNaM)MN#6WL+dssX))X`)7EJ=ufLvh{^{x&Ym?bFWWNcUHPb7gqfp9=mxk1=7NRQj3nuiuY< zXJpXS@j4pBpJ-l|bN}S|ezrRsGmC>}Df-!HWiI=^e}Cz!Y0g@LPt(ORu4tbLe{T8t z{q>->!h*)vw-~0Jjy&~LC(=DhN=VaMazlvD@@KDZW;2|*`r@JJHr0T&dslxK*VxAN zKCR0m^Ko_HB+135rRRBG)&|>Bt%Zf#C#;QGP~s6>&hcvA@pE&( zFRA->`10|e7jMMM%>7}_P@Z$^jP~)q4b|U|Gq_&ik(7-+-8uRAj9GhTeeg_=gj!-tTV9^Z%(`k7xqR}h`ke0zon6<8vCn>PE}HhRQKLuq_}@QR>U_TV>8YDfuHEkSuYa{z=I8Czp4K-iq_-*V{Qu8ia^OwI!B+ro}RylHMsD@t-i(^-x>|ytht=MrKEJ8|HsZto62jJ zE((eEnyg!%mzY=8RiizhW#0YI^ACI$%+s{9TNrd@^~>40`yvia5?Vd=(KNfTX;#Xq zyRypcvu^E)JFGstc*ADDL$gH|ANX8ZaNO$6F8>Ed8H+zex$oCgUNP>2Ully#l+2ibK@_+-EC?1P3a#D7#J8BJYD@<);T3K0RYYcn@a!y literal 0 HcmV?d00001 diff --git a/assets/pixellab/tiles/b1_wall.png b/assets/pixellab/tiles/b1_wall.png new file mode 100644 index 0000000000000000000000000000000000000000..8a7a6edb8b85e1cda239cc7c0bb0666c570288cd GIT binary patch literal 1530 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANN<2R&UJLn`LXSP2<;H@B|6)pwzTG*HnSFg-t#rlsyzK0xBsS_Gpo=4{eRx}`<&wQ zS89Jfz31xm>EZABpU-gj&-nhYw)xGStKN>*Q%-ICA|Wh1*=EPvZ%nT+8DTy@2{SB$+N=kwa_hfBF8%qzS*4SiwOzBd5r1<|&_f?Vp7vJhl zJGzelDV<(&WJlG~q?~)Z=ABzty5yG`(}eS)79|g&7fZac+atYN(=Yq=)+3L(8l2hp zJ^gU7L~>`4VU_#~#jDqQQ=>(;H0$ks$P4>;pBuPp^^cb84V zuIt;kOBOX4nH4TAS)ufEA+xi_(t_+4?Wxb+*GNtaGPGxFVie>*z3r4pbG*V!Wn~p1 zP6lD-#M;;bNhygwiQ2EGo;tUk;x7rV*;TzgFFxcHd!Uw-!&0S3i$d=FVa|9fu!et$ zi2D)K$5omOnoUdRzyGfi#P0R<$cfB4>(W`d*1`VYW<2k_s71|( z>b&S`?!K~aMu|gyUrT4d2~d)o`8cv@b1_3n{!5dtm&(e^4DQ}56yERe7xp#8AwgaG z<-JQM`(IvMy7*JDL9xy0GhbL;Vs@FYH)qpcnsn!0VX*6kb-uDGed#Cr{>M$-G3!jc zj)Icft=hh#dAB_Ief<77D$U%X^YFz*9)^?Cw0CTN9OlAudehF2ZQo|i3*Pl$+SKzK zBBq_a6QdXOUi;|5Tf47anBx&}fvo||v)uQc(%CLI?W zu}|EtkCsOJ#qgibbFrRYbN*(p&)nGyEi)G<6&@)L+*py)n|gCa=SlnNY@(04e)6lV z=(%jX+1tf+u8Wap@g=ij*L;mFkK=c9|Eys-{e964>*en*>wnj4i{1ZxZ+~Uo_vB}_ z|I?XE%GN%9{r7&s`&#LfJ#!6LN*;0Fp}0~^SxK(?-rdu;-|rFZI!Zp zIe**T!VTA6uQM!m-1~oj(oM0S-P{v5ZZf&jm-gw6$jpt#%hXqFS^Qx~$MFjX43zX{ zZ!Zfqb+DebviP!$Z~vmLZYwLUFvJ!F79L&oZR(n=_{y8IofRu0<}6sfYNhzCBj@e^ zCsj55TA;?fqU~1~!_~%Eo!uWdxwZYDuAl$x=X81fWp)4eIZg?R+5gKb?EaorI&4~v zjNYy%*K;qOKI7v5=kX!Vdo$xsJqzL4YPt0wd(H~?l`}l&XD#>}&wJ^&gMVTAyy(FE zjD#8IcE5KpHMz9=@OAsia}ADqnO;$T6u7