From 47ba7fc690072e9d605930bed524bcc86ccc92e5 Mon Sep 17 00:00:00 2001 From: Exp Date: Tue, 13 Oct 2020 13:40:05 +0200 Subject: [PATCH] Crayons (#2132) * -Added Crayons + CrayonBox -Can set any crayon state and color -Added CrayonDecals * Allows to cycle through decals (not the final thing) * ItemStatus * -UI (WIP) -Selection thing works -Changed some shitty state names * -Icons -Changed decal name * Pure Texture Grid * Charges * -Reach check -Toggle interface on use * Can't draw on windows anymore * UI now shows selected decal and color * -UseSound -Nullable * Remove unused imports * -Rotation -Made decal abstract * Remove some duplicate images * Space Cleaner cleans * Loc Title Co-authored-by: Pieter-Jan Briers * Review adressed Co-authored-by: Pieter-Jan Briers --- .../Crayon/CrayonBoundUserInterface.cs | 49 + .../Components/Crayon/CrayonComponent.cs | 71 + .../Crayon/CrayonDecalVisualizer.cs | 25 + .../Components/Crayon/CrayonWindow.cs | 123 ++ Content.Client/IgnoredComponents.cs | 1 + .../TileReactions/CleanTileReaction.cs | 39 + .../Components/CleanableComponent.cs | 23 + .../GameObjects/Components/CrayonComponent.cs | 148 ++ .../Components/SharedCrayonComponent.cs | 91 ++ Content.Shared/GameObjects/ContentNetIDs.cs | 1 + .../Prototypes/Catalog/crayon_decals.yml | 134 ++ .../Constructible/Ground/crayondecals.yml | 16 + .../Entities/Objects/Misc/crayons.yml | 111 ++ Resources/Prototypes/Reagents/chemicals.yml | 3 +- .../Constructible/Misc/crayondecals.rsi/0.png | Bin 0 -> 280 bytes .../Constructible/Misc/crayondecals.rsi/1.png | Bin 0 -> 155 bytes .../Constructible/Misc/crayondecals.rsi/2.png | Bin 0 -> 211 bytes .../Constructible/Misc/crayondecals.rsi/3.png | Bin 0 -> 264 bytes .../Constructible/Misc/crayondecals.rsi/4.png | Bin 0 -> 256 bytes .../Constructible/Misc/crayondecals.rsi/5.png | Bin 0 -> 245 bytes .../Constructible/Misc/crayondecals.rsi/6.png | Bin 0 -> 229 bytes .../Constructible/Misc/crayondecals.rsi/7.png | Bin 0 -> 238 bytes .../Constructible/Misc/crayondecals.rsi/8.png | Bin 0 -> 278 bytes .../Constructible/Misc/crayondecals.rsi/9.png | Bin 0 -> 251 bytes .../Misc/crayondecals.rsi/Blasto.png | Bin 0 -> 786 bytes .../Misc/crayondecals.rsi/Clandestine.png | Bin 0 -> 551 bytes .../Misc/crayondecals.rsi/Cyber.png | Bin 0 -> 437 bytes .../Misc/crayondecals.rsi/Diablo.png | Bin 0 -> 614 bytes .../Misc/crayondecals.rsi/Donk.png | Bin 0 -> 816 bytes .../Misc/crayondecals.rsi/Gene.png | Bin 0 -> 519 bytes .../Misc/crayondecals.rsi/Gib.png | Bin 0 -> 431 bytes .../Misc/crayondecals.rsi/Max.png | Bin 0 -> 274 bytes .../Misc/crayondecals.rsi/Newton.png | Bin 0 -> 748 bytes .../Misc/crayondecals.rsi/North.png | Bin 0 -> 425 bytes .../Misc/crayondecals.rsi/Omni.png | Bin 0 -> 1093 bytes .../Misc/crayondecals.rsi/Osiron.png | Bin 0 -> 562 bytes .../Misc/crayondecals.rsi/Prima.png | Bin 0 -> 388 bytes .../Misc/crayondecals.rsi/Psyke.png | Bin 0 -> 755 bytes .../Misc/crayondecals.rsi/Sirius.png | Bin 0 -> 585 bytes .../Misc/crayondecals.rsi/Sleeping Carp.png | Bin 0 -> 867 bytes .../Misc/crayondecals.rsi/Tunnel.png | Bin 0 -> 494 bytes .../Misc/crayondecals.rsi/Waffle.png | Bin 0 -> 460 bytes .../Misc/crayondecals.rsi/Zero-G.png | Bin 0 -> 473 bytes .../Constructible/Misc/crayondecals.rsi/a.png | Bin 0 -> 230 bytes .../Misc/crayondecals.rsi/ampersand.png | Bin 0 -> 247 bytes .../Misc/crayondecals.rsi/amyjon.png | Bin 0 -> 205 bytes .../Misc/crayondecals.rsi/antilizard.png | Bin 0 -> 309 bytes .../Misc/crayondecals.rsi/arrow.png | Bin 0 -> 220 bytes .../Constructible/Misc/crayondecals.rsi/b.png | Bin 0 -> 219 bytes .../Misc/crayondecals.rsi/beepsky.png | Bin 0 -> 360 bytes .../Misc/crayondecals.rsi/biohazard.png | Bin 0 -> 441 bytes .../Misc/crayondecals.rsi/blueprint.png | Bin 0 -> 429 bytes .../Misc/crayondecals.rsi/body.png | Bin 0 -> 216 bytes .../Misc/crayondecals.rsi/bottle.png | Bin 0 -> 266 bytes .../Misc/crayondecals.rsi/brush.png | Bin 0 -> 582 bytes .../Constructible/Misc/crayondecals.rsi/c.png | Bin 0 -> 205 bytes .../Misc/crayondecals.rsi/carp.png | Bin 0 -> 456 bytes .../Misc/crayondecals.rsi/cat.png | Bin 0 -> 368 bytes .../Misc/crayondecals.rsi/chevron.png | Bin 0 -> 181 bytes .../Misc/crayondecals.rsi/clawprint.png | Bin 0 -> 164 bytes .../Misc/crayondecals.rsi/clown.png | Bin 0 -> 239 bytes .../Misc/crayondecals.rsi/comma.png | Bin 0 -> 150 bytes .../Misc/crayondecals.rsi/corgi.png | Bin 0 -> 333 bytes .../Misc/crayondecals.rsi/credit.png | Bin 0 -> 325 bytes .../Misc/crayondecals.rsi/cyka.png | Bin 0 -> 227 bytes .../Constructible/Misc/crayondecals.rsi/d.png | Bin 0 -> 267 bytes .../Misc/crayondecals.rsi/danger.png | Bin 0 -> 518 bytes .../Misc/crayondecals.rsi/disk.png | Bin 0 -> 297 bytes .../Misc/crayondecals.rsi/dot.png | Bin 0 -> 135 bytes .../Misc/crayondecals.rsi/dwarf.png | Bin 0 -> 181 bytes .../Constructible/Misc/crayondecals.rsi/e.png | Bin 0 -> 287 bytes .../Misc/crayondecals.rsi/electricdanger.png | Bin 0 -> 481 bytes .../Misc/crayondecals.rsi/end.png | Bin 0 -> 224 bytes .../Misc/crayondecals.rsi/engie.png | Bin 0 -> 312 bytes .../Misc/crayondecals.rsi/equals.png | Bin 0 -> 176 bytes .../Misc/crayondecals.rsi/evac.png | Bin 0 -> 327 bytes .../Misc/crayondecals.rsi/exclamationmark.png | Bin 0 -> 209 bytes .../Constructible/Misc/crayondecals.rsi/f.png | Bin 0 -> 214 bytes .../Misc/crayondecals.rsi/face.png | Bin 0 -> 190 bytes .../Misc/crayondecals.rsi/fireaxe.png | Bin 0 -> 340 bytes .../Misc/crayondecals.rsi/firedanger.png | Bin 0 -> 512 bytes .../Misc/crayondecals.rsi/food.png | Bin 0 -> 359 bytes .../Misc/crayondecals.rsi/footprint.png | Bin 0 -> 146 bytes .../Constructible/Misc/crayondecals.rsi/g.png | Bin 0 -> 247 bytes .../Misc/crayondecals.rsi/ghost.png | Bin 0 -> 382 bytes .../Misc/crayondecals.rsi/guy.png | Bin 0 -> 201 bytes .../Constructible/Misc/crayondecals.rsi/h.png | Bin 0 -> 218 bytes .../Misc/crayondecals.rsi/heart.png | Bin 0 -> 274 bytes .../Constructible/Misc/crayondecals.rsi/i.png | Bin 0 -> 183 bytes .../Constructible/Misc/crayondecals.rsi/j.png | Bin 0 -> 292 bytes .../Constructible/Misc/crayondecals.rsi/k.png | Bin 0 -> 279 bytes .../Constructible/Misc/crayondecals.rsi/l.png | Bin 0 -> 194 bytes .../Misc/crayondecals.rsi/largebrush.png | Bin 0 -> 1069 bytes .../Misc/crayondecals.rsi/like.png | Bin 0 -> 297 bytes .../Misc/crayondecals.rsi/line.png | Bin 0 -> 566 bytes .../Constructible/Misc/crayondecals.rsi/m.png | Bin 0 -> 315 bytes .../Misc/crayondecals.rsi/matt.png | Bin 0 -> 237 bytes .../Misc/crayondecals.rsi/med.png | Bin 0 -> 294 bytes .../Misc/crayondecals.rsi/meta.json | 1208 +++++++++++++++++ .../Misc/crayondecals.rsi/minus.png | Bin 0 -> 136 bytes .../Constructible/Misc/crayondecals.rsi/n.png | Bin 0 -> 254 bytes .../Misc/crayondecals.rsi/nay.png | Bin 0 -> 883 bytes .../Constructible/Misc/crayondecals.rsi/o.png | Bin 0 -> 279 bytes .../Constructible/Misc/crayondecals.rsi/p.png | Bin 0 -> 249 bytes .../Misc/crayondecals.rsi/pawprint.png | Bin 0 -> 129 bytes .../Misc/crayondecals.rsi/peace.png | Bin 0 -> 447 bytes .../Misc/crayondecals.rsi/percent.png | Bin 0 -> 263 bytes .../Misc/crayondecals.rsi/plus.png | Bin 0 -> 203 bytes .../Misc/crayondecals.rsi/pound.png | Bin 0 -> 383 bytes .../Misc/crayondecals.rsi/prolizard.png | Bin 0 -> 491 bytes .../Constructible/Misc/crayondecals.rsi/q.png | Bin 0 -> 264 bytes .../Misc/crayondecals.rsi/questionmark.png | Bin 0 -> 223 bytes .../Constructible/Misc/crayondecals.rsi/r.png | Bin 0 -> 298 bytes .../Misc/crayondecals.rsi/radiation.png | Bin 0 -> 462 bytes .../Misc/crayondecals.rsi/revolution.png | Bin 0 -> 300 bytes .../Misc/crayondecals.rsi/rune1.png | Bin 0 -> 485 bytes .../Misc/crayondecals.rsi/rune2.png | Bin 0 -> 545 bytes .../Misc/crayondecals.rsi/rune3.png | Bin 0 -> 501 bytes .../Misc/crayondecals.rsi/rune4.png | Bin 0 -> 534 bytes .../Misc/crayondecals.rsi/rune5.png | Bin 0 -> 541 bytes .../Misc/crayondecals.rsi/rune6.png | Bin 0 -> 549 bytes .../Constructible/Misc/crayondecals.rsi/s.png | Bin 0 -> 252 bytes .../Misc/crayondecals.rsi/safe.png | Bin 0 -> 318 bytes .../Misc/crayondecals.rsi/scroll.png | Bin 0 -> 456 bytes .../Misc/crayondecals.rsi/shop.png | Bin 0 -> 296 bytes .../Misc/crayondecals.rsi/shortline.png | Bin 0 -> 227 bytes .../Misc/crayondecals.rsi/shotgun.png | Bin 0 -> 304 bytes .../Misc/crayondecals.rsi/skull.png | Bin 0 -> 369 bytes .../Misc/crayondecals.rsi/slash.png | Bin 0 -> 246 bytes .../Misc/crayondecals.rsi/smallbrush.png | Bin 0 -> 337 bytes .../Misc/crayondecals.rsi/snake.png | Bin 0 -> 301 bytes .../Misc/crayondecals.rsi/space.png | Bin 0 -> 398 bytes .../Misc/crayondecals.rsi/splatter.png | Bin 0 -> 432 bytes .../Misc/crayondecals.rsi/star.png | Bin 0 -> 349 bytes .../Misc/crayondecals.rsi/stickman.png | Bin 0 -> 405 bytes .../Constructible/Misc/crayondecals.rsi/t.png | Bin 0 -> 217 bytes .../Misc/crayondecals.rsi/taser.png | Bin 0 -> 301 bytes .../Misc/crayondecals.rsi/thinline.png | Bin 0 -> 334 bytes .../Misc/crayondecals.rsi/toilet.png | Bin 0 -> 436 bytes .../Misc/crayondecals.rsi/toolbox.png | Bin 0 -> 360 bytes .../Misc/crayondecals.rsi/trade.png | Bin 0 -> 283 bytes .../Constructible/Misc/crayondecals.rsi/u.png | Bin 0 -> 230 bytes .../Misc/crayondecals.rsi/uboa.png | Bin 0 -> 302 bytes .../Constructible/Misc/crayondecals.rsi/v.png | Bin 0 -> 201 bytes .../Constructible/Misc/crayondecals.rsi/w.png | Bin 0 -> 281 bytes .../Constructible/Misc/crayondecals.rsi/x.png | Bin 0 -> 245 bytes .../Constructible/Misc/crayondecals.rsi/y.png | Bin 0 -> 232 bytes .../Constructible/Misc/crayondecals.rsi/z.png | Bin 0 -> 244 bytes .../Objects/Misc/crayons.rsi/black.png | Bin 0 -> 113 bytes .../Objects/Misc/crayons.rsi/blue.png | Bin 0 -> 118 bytes .../Objects/Misc/crayons.rsi/clowncan.png | Bin 0 -> 393 bytes .../Objects/Misc/crayons.rsi/clowncan2.png | Bin 0 -> 442 bytes .../Misc/crayons.rsi/clowncan2_cap.png | Bin 0 -> 529 bytes .../Objects/Misc/crayons.rsi/clowncan_cap.png | Bin 0 -> 481 bytes .../Objects/Misc/crayons.rsi/crayonblack.png | Bin 0 -> 154 bytes .../Objects/Misc/crayons.rsi/crayonblue.png | Bin 0 -> 151 bytes .../Objects/Misc/crayons.rsi/crayonbox.png | Bin 0 -> 299 bytes .../Objects/Misc/crayons.rsi/crayongreen.png | Bin 0 -> 160 bytes .../Objects/Misc/crayons.rsi/crayonmime.png | Bin 0 -> 142 bytes .../Objects/Misc/crayons.rsi/crayonorange.png | Bin 0 -> 157 bytes .../Objects/Misc/crayons.rsi/crayonpurple.png | Bin 0 -> 126 bytes .../Misc/crayons.rsi/crayonrainbow.png | Bin 0 -> 182 bytes .../Objects/Misc/crayons.rsi/crayonred.png | Bin 0 -> 125 bytes .../Objects/Misc/crayons.rsi/crayonwhite.png | Bin 0 -> 112 bytes .../Objects/Misc/crayons.rsi/crayonyellow.png | Bin 0 -> 132 bytes .../Objects/Misc/crayons.rsi/deathcan.png | Bin 0 -> 409 bytes .../Objects/Misc/crayons.rsi/deathcan2.png | Bin 0 -> 482 bytes .../Misc/crayons.rsi/deathcan2_cap.png | Bin 0 -> 492 bytes .../Objects/Misc/crayons.rsi/deathcan_cap.png | Bin 0 -> 425 bytes .../Objects/Misc/crayons.rsi/green.png | Bin 0 -> 122 bytes .../Objects/Misc/crayons.rsi/meta.json | 351 +++++ .../Objects/Misc/crayons.rsi/mimecan.png | Bin 0 -> 400 bytes .../Objects/Misc/crayons.rsi/mimecan2.png | Bin 0 -> 271 bytes .../Objects/Misc/crayons.rsi/mimecan2_cap.png | Bin 0 -> 285 bytes .../Objects/Misc/crayons.rsi/mimecan_cap.png | Bin 0 -> 410 bytes .../Objects/Misc/crayons.rsi/orange.png | Bin 0 -> 123 bytes .../Objects/Misc/crayons.rsi/purple.png | Bin 0 -> 119 bytes .../Objects/Misc/crayons.rsi/rainbowcan.png | Bin 0 -> 442 bytes .../Objects/Misc/crayons.rsi/rainbowcan2.png | Bin 0 -> 336 bytes .../Misc/crayons.rsi/rainbowcan2_cap.png | Bin 0 -> 379 bytes .../Misc/crayons.rsi/rainbowcan_cap.png | Bin 0 -> 482 bytes .../Textures/Objects/Misc/crayons.rsi/red.png | Bin 0 -> 113 bytes .../Objects/Misc/crayons.rsi/spraycan.png | Bin 0 -> 293 bytes .../Objects/Misc/crayons.rsi/spraycan_cap.png | Bin 0 -> 246 bytes .../Misc/crayons.rsi/spraycan_cap_colors.png | Bin 0 -> 181 bytes .../Misc/crayons.rsi/spraycan_colors.png | Bin 0 -> 145 bytes .../Objects/Misc/crayons.rsi/yellow.png | Bin 0 -> 122 bytes 187 files changed, 2393 insertions(+), 1 deletion(-) create mode 100644 Content.Client/GameObjects/Components/Crayon/CrayonBoundUserInterface.cs create mode 100644 Content.Client/GameObjects/Components/Crayon/CrayonComponent.cs create mode 100644 Content.Client/GameObjects/Components/Crayon/CrayonDecalVisualizer.cs create mode 100644 Content.Client/GameObjects/Components/Crayon/CrayonWindow.cs create mode 100644 Content.Server/Chemistry/TileReactions/CleanTileReaction.cs create mode 100644 Content.Server/GameObjects/Components/CleanableComponent.cs create mode 100644 Content.Server/GameObjects/Components/CrayonComponent.cs create mode 100644 Content.Shared/GameObjects/Components/SharedCrayonComponent.cs create mode 100644 Resources/Prototypes/Catalog/crayon_decals.yml create mode 100644 Resources/Prototypes/Entities/Constructible/Ground/crayondecals.yml create mode 100644 Resources/Prototypes/Entities/Objects/Misc/crayons.yml create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/0.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/1.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/2.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/3.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/4.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/5.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/6.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/7.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/8.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/9.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/Blasto.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/Clandestine.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/Cyber.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/Diablo.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/Donk.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/Gene.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/Gib.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/Max.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/Newton.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/North.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/Omni.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/Osiron.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/Prima.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/Psyke.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/Sirius.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/Sleeping Carp.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/Tunnel.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/Waffle.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/Zero-G.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/a.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/ampersand.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/amyjon.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/antilizard.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/arrow.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/b.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/beepsky.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/biohazard.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/blueprint.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/body.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/bottle.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/brush.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/c.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/carp.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/cat.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/chevron.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/clawprint.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/clown.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/comma.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/corgi.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/credit.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/cyka.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/d.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/danger.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/disk.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/dot.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/dwarf.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/e.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/electricdanger.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/end.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/engie.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/equals.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/evac.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/exclamationmark.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/f.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/face.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/fireaxe.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/firedanger.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/food.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/footprint.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/g.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/ghost.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/guy.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/h.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/heart.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/i.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/j.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/k.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/l.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/largebrush.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/like.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/line.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/m.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/matt.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/med.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/meta.json create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/minus.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/n.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/nay.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/o.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/p.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/pawprint.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/peace.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/percent.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/plus.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/pound.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/prolizard.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/q.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/questionmark.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/r.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/radiation.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/revolution.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/rune1.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/rune2.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/rune3.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/rune4.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/rune5.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/rune6.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/s.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/safe.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/scroll.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/shop.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/shortline.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/shotgun.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/skull.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/slash.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/smallbrush.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/snake.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/space.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/splatter.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/star.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/stickman.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/t.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/taser.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/thinline.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/toilet.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/toolbox.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/trade.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/u.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/uboa.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/v.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/w.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/x.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/y.png create mode 100644 Resources/Textures/Constructible/Misc/crayondecals.rsi/z.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/black.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/blue.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/clowncan.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/clowncan2.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/clowncan2_cap.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/clowncan_cap.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/crayonblack.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/crayonblue.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/crayonbox.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/crayongreen.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/crayonmime.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/crayonorange.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/crayonpurple.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/crayonrainbow.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/crayonred.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/crayonwhite.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/crayonyellow.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/deathcan.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/deathcan2.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/deathcan2_cap.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/deathcan_cap.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/green.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/meta.json create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/mimecan.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/mimecan2.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/mimecan2_cap.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/mimecan_cap.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/orange.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/purple.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/rainbowcan.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/rainbowcan2.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/rainbowcan2_cap.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/rainbowcan_cap.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/red.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/spraycan.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/spraycan_cap.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/spraycan_cap_colors.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/spraycan_colors.png create mode 100644 Resources/Textures/Objects/Misc/crayons.rsi/yellow.png diff --git a/Content.Client/GameObjects/Components/Crayon/CrayonBoundUserInterface.cs b/Content.Client/GameObjects/Components/Crayon/CrayonBoundUserInterface.cs new file mode 100644 index 0000000000..0a31204903 --- /dev/null +++ b/Content.Client/GameObjects/Components/Crayon/CrayonBoundUserInterface.cs @@ -0,0 +1,49 @@ +using Content.Shared.GameObjects.Components; +using Robust.Client.GameObjects.Components.UserInterface; +using Robust.Shared.GameObjects.Components.UserInterface; +using Robust.Shared.IoC; +using Robust.Shared.Prototypes; +using System.Linq; + +namespace Content.Client.GameObjects.Components.Crayon +{ + public class CrayonBoundUserInterface : BoundUserInterface + { + public CrayonBoundUserInterface(ClientUserInterfaceComponent owner, object uiKey) : base(owner, uiKey) + { + } + + private CrayonWindow _menu; + + protected override void Open() + { + base.Open(); + _menu = new CrayonWindow(this); + + _menu.OnClose += Close; + var prototypeManager = IoCManager.Resolve(); + var crayonDecals = prototypeManager.EnumeratePrototypes().FirstOrDefault(); + if (crayonDecals != null) + _menu.Populate(crayonDecals); + _menu.OpenCentered(); + } + + protected override void UpdateState(BoundUserInterfaceState state) + { + base.UpdateState(state); + _menu.UpdateState((CrayonBoundUserInterfaceState) state); + } + + public void Select(string state) + { + SendMessage(new CrayonSelectMessage(state)); + } + + protected override void Dispose(bool disposing) + { + base.Dispose(disposing); + + _menu.Close(); + } + } +} diff --git a/Content.Client/GameObjects/Components/Crayon/CrayonComponent.cs b/Content.Client/GameObjects/Components/Crayon/CrayonComponent.cs new file mode 100644 index 0000000000..b093192ef7 --- /dev/null +++ b/Content.Client/GameObjects/Components/Crayon/CrayonComponent.cs @@ -0,0 +1,71 @@ +using Content.Client.UserInterface.Stylesheets; +using Content.Client.Utility; +using Content.Shared.GameObjects.Components; +using Robust.Client.UserInterface; +using Robust.Client.UserInterface.Controls; +using Robust.Shared.GameObjects; +using Robust.Shared.Localization; +using Robust.Shared.Timing; +using Robust.Shared.ViewVariables; + +namespace Content.Client.GameObjects.Components.Crayon +{ + [RegisterComponent] + public class CrayonComponent : SharedCrayonComponent, IItemStatus + { + [ViewVariables(VVAccess.ReadWrite)] private bool _uiUpdateNeeded; + [ViewVariables(VVAccess.ReadWrite)] private string Color => _color; + [ViewVariables] private int Charges { get; set; } + [ViewVariables] private int Capacity { get; set; } + + Control IItemStatus.MakeControl() + { + return new StatusControl(this); + } + + public override void HandleComponentState(ComponentState curState, ComponentState nextState) + { + if (!(curState is CrayonComponentState state)) + return; + + _color = state.Color; + SelectedState = state.State; + Charges = state.Charges; + Capacity = state.Capacity; + + _uiUpdateNeeded = true; + } + + private sealed class StatusControl : Control + { + private readonly CrayonComponent _parent; + private readonly RichTextLabel _label; + + public StatusControl(CrayonComponent parent) + { + _parent = parent; + _label = new RichTextLabel { StyleClasses = { StyleNano.StyleClassItemStatus } }; + AddChild(_label); + + parent._uiUpdateNeeded = true; + } + + protected override void Update(FrameEventArgs args) + { + base.Update(args); + + if (!_parent._uiUpdateNeeded) + { + return; + } + + _parent._uiUpdateNeeded = false; + _label.SetMarkup(Loc.GetString("Drawing: [color={0}]{1}[/color] ({2}/{3})", + _parent.Color, + _parent.SelectedState, + _parent.Charges, + _parent.Capacity)); + } + } + } +} diff --git a/Content.Client/GameObjects/Components/Crayon/CrayonDecalVisualizer.cs b/Content.Client/GameObjects/Components/Crayon/CrayonDecalVisualizer.cs new file mode 100644 index 0000000000..317dcf5504 --- /dev/null +++ b/Content.Client/GameObjects/Components/Crayon/CrayonDecalVisualizer.cs @@ -0,0 +1,25 @@ +using Content.Shared.GameObjects.Components; +using Robust.Client.GameObjects; +using Robust.Client.Interfaces.GameObjects.Components; +using Robust.Shared.Maths; + +namespace Content.Client.GameObjects.Components.Crayon +{ + public class CrayonDecalVisualizer : AppearanceVisualizer + { + public override void OnChangeData(AppearanceComponent component) + { + base.OnChangeData(component); + + var sprite = component.Owner.GetComponent(); + + var state = component.GetData(CrayonVisuals.State); + var color = component.GetData(CrayonVisuals.Color); + var rotation = component.GetData(CrayonVisuals.Rotation); + + sprite.LayerSetState(0, state); + sprite.LayerSetColor(0, color); + sprite.Rotation = rotation; + } + } +} diff --git a/Content.Client/GameObjects/Components/Crayon/CrayonWindow.cs b/Content.Client/GameObjects/Components/Crayon/CrayonWindow.cs new file mode 100644 index 0000000000..598c939cc7 --- /dev/null +++ b/Content.Client/GameObjects/Components/Crayon/CrayonWindow.cs @@ -0,0 +1,123 @@ +using Content.Client.UserInterface.Stylesheets; +using Content.Shared.GameObjects.Components; +using Robust.Client.Graphics; +using Robust.Client.Graphics.Drawing; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.CustomControls; +using Robust.Client.Utility; +using Robust.Shared.Localization; +using Robust.Shared.Maths; +using Robust.Shared.Utility; +using System.Collections.Generic; + +namespace Content.Client.GameObjects.Components.Crayon +{ + public class CrayonWindow : SS14Window + { + public CrayonBoundUserInterface Owner { get; } + private readonly LineEdit _search; + private readonly GridContainer _grid; + private Dictionary _decals; + private string _selected; + private Color _color; + + protected override Vector2? CustomSize => (250, 300); + + public CrayonWindow(CrayonBoundUserInterface owner) + { + Title = Loc.GetString("Crayon"); + Owner = owner; + + var vbox = new VBoxContainer(); + Contents.AddChild(vbox); + + _search = new LineEdit(); + _search.OnTextChanged += (e) => RefreshList(); + vbox.AddChild(_search); + + _grid = new GridContainer() + { + Columns = 6, + }; + var gridScroll = new ScrollContainer() + { + SizeFlagsVertical = SizeFlags.FillExpand, + Children = + { + _grid + } + }; + vbox.AddChild(gridScroll); + } + + private void RefreshList() + { + // Clear + _grid.RemoveAllChildren(); + if (_decals == null) + return; + + var filter = _search.Text; + foreach (var (decal, tex) in _decals) + { + if (!decal.Contains(filter)) + continue; + + var button = new TextureButton() + { + TextureNormal = tex, + Name = decal, + ToolTip = decal, + Modulate = _color + }; + button.OnPressed += Button_OnPressed; + if (_selected == decal) + { + var panelContainer = new PanelContainer() + { + PanelOverride = new StyleBoxFlat() + { + BackgroundColor = StyleNano.ButtonColorDefault, + }, + Children = + { + button + } + }; + _grid.AddChild(panelContainer); + } + else + { + _grid.AddChild(button); + } + } + } + + private void Button_OnPressed(BaseButton.ButtonEventArgs obj) + { + Owner.Select(obj.Button.Name); + _selected = obj.Button.Name; + RefreshList(); + } + + public void UpdateState(CrayonBoundUserInterfaceState state) + { + _selected = state.Selected; + _color = state.Color; + RefreshList(); + } + + public void Populate(CrayonDecalPrototype proto) + { + var path = new ResourcePath(proto.SpritePath); + _decals = new Dictionary(); + foreach (var state in proto.Decals) + { + var rsi = new SpriteSpecifier.Rsi(path, state); + _decals.Add(state, rsi.Frame0()); + } + + RefreshList(); + } + } +} diff --git a/Content.Client/IgnoredComponents.cs b/Content.Client/IgnoredComponents.cs index 24a624d66a..ec567c9dca 100644 --- a/Content.Client/IgnoredComponents.cs +++ b/Content.Client/IgnoredComponents.cs @@ -183,6 +183,7 @@ "GasCanister", "GasCanisterPort", "Lung", + "Cleanable" }; } } diff --git a/Content.Server/Chemistry/TileReactions/CleanTileReaction.cs b/Content.Server/Chemistry/TileReactions/CleanTileReaction.cs new file mode 100644 index 0000000000..9d26d8dcc7 --- /dev/null +++ b/Content.Server/Chemistry/TileReactions/CleanTileReaction.cs @@ -0,0 +1,39 @@ +using Content.Server.GameObjects.Components; +using Content.Server.Utility; +using Content.Shared.Chemistry; +using Content.Shared.Interfaces.Chemistry; +using Robust.Shared.Interfaces.Serialization; +using Robust.Shared.Map; +using Robust.Shared.Serialization; +using System.Linq; + +namespace Content.Server.Chemistry.TileReactions +{ + public class CleanTileReaction : ITileReaction + { + void IExposeData.ExposeData(ObjectSerializer serializer) + { + } + + ReagentUnit ITileReaction.TileReact(TileRef tile, ReagentPrototype reagent, ReagentUnit reactVolume) + { + var entities = tile.GetEntitiesInTileFast().ToArray(); + var amount = ReagentUnit.Zero; + foreach (var entity in entities) + { + if (entity.TryGetComponent(out CleanableComponent cleanable)) + { + var next = amount + cleanable.CleanAmount; + // Nothing left? + if (reactVolume < next) + break; + + amount = next; + entity.Delete(); + } + } + + return amount; + } + } +} diff --git a/Content.Server/GameObjects/Components/CleanableComponent.cs b/Content.Server/GameObjects/Components/CleanableComponent.cs new file mode 100644 index 0000000000..a93d18661b --- /dev/null +++ b/Content.Server/GameObjects/Components/CleanableComponent.cs @@ -0,0 +1,23 @@ +using Content.Shared.Chemistry; +using Robust.Shared.GameObjects; +using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; + +namespace Content.Server.GameObjects.Components +{ + [RegisterComponent] + public class CleanableComponent : Component + { + public override string Name => "Cleanable"; + + private ReagentUnit _cleanAmount; + [ViewVariables(VVAccess.ReadWrite)] + public ReagentUnit CleanAmount => _cleanAmount; + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(ref _cleanAmount, "cleanAmount", ReagentUnit.Zero); + } + } +} diff --git a/Content.Server/GameObjects/Components/CrayonComponent.cs b/Content.Server/GameObjects/Components/CrayonComponent.cs new file mode 100644 index 0000000000..5355bc01cd --- /dev/null +++ b/Content.Server/GameObjects/Components/CrayonComponent.cs @@ -0,0 +1,148 @@ +#nullable enable +using Content.Server.Utility; +using Content.Shared.Audio; +using Content.Shared.GameObjects.Components; +using Content.Shared.Interfaces; +using Content.Shared.Interfaces.GameObjects.Components; +using Content.Shared.Utility; +using Robust.Server.GameObjects; +using Robust.Server.GameObjects.Components.UserInterface; +using Robust.Server.GameObjects.EntitySystems; +using Robust.Server.Interfaces.GameObjects; +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Systems; +using Robust.Shared.IoC; +using Robust.Shared.Localization; +using Robust.Shared.Maths; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; +using System.Linq; + +namespace Content.Server.GameObjects.Components +{ + [RegisterComponent] + public class CrayonComponent : SharedCrayonComponent, IAfterInteract, IUse, IDropped + { + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + //TODO: useSound + private string? _useSound; + [ViewVariables] + public Color Color { get; set; } + + [ViewVariables(VVAccess.ReadWrite)] + public int Charges { get; set; } + private int _capacity; + [ViewVariables(VVAccess.ReadWrite)] + public int Capacity { get => _capacity; set => _capacity = value; } + + [ViewVariables] private BoundUserInterface? UserInterface => Owner.GetUIOrNull(CrayonUiKey.Key); + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(ref _useSound, "useSound", string.Empty); + serializer.DataField(ref _color, "color", "white"); + serializer.DataField(ref _capacity, "capacity", 30); + Color = Color.FromName(_color); + } + + public override void Initialize() + { + base.Initialize(); + if (UserInterface != null) + { + UserInterface.OnReceiveMessage += UserInterfaceOnReceiveMessage; + } + Charges = Capacity; + + // Get the first one from the catalog and set it as default + var decals = _prototypeManager.EnumeratePrototypes().FirstOrDefault(); + if (decals != null) + { + SelectedState = decals.Decals.First(); + } + Dirty(); + } + + private void UserInterfaceOnReceiveMessage(ServerBoundUserInterfaceMessage serverMsg) + { + switch (serverMsg.Message) + { + case CrayonSelectMessage msg: + // Check if the selected state is valid + var crayonDecals = _prototypeManager.EnumeratePrototypes().FirstOrDefault(); + if (crayonDecals != null) + { + if (crayonDecals.Decals.Contains(msg.State)) + { + SelectedState = msg.State; + Dirty(); + } + } + break; + default: + break; + } + } + + public override ComponentState GetComponentState() + { + return new CrayonComponentState(_color, SelectedState, Charges, Capacity); + } + + // Opens the selection window + bool IUse.UseEntity(UseEntityEventArgs eventArgs) + { + if (eventArgs.User.TryGetComponent(out IActorComponent? actor)) + { + UserInterface?.Toggle(actor.playerSession); + if (UserInterface?.SessionHasOpen(actor.playerSession) == true) + { + // Tell the user interface the selected stuff + UserInterface.SetState( + new CrayonBoundUserInterfaceState(SelectedState, Color)); + } + return true; + } + return false; + } + + void IAfterInteract.AfterInteract(AfterInteractEventArgs eventArgs) + { + if (!eventArgs.InRangeUnobstructed(ignoreInsideBlocker: false, popup: true, + collisionMask: Shared.Physics.CollisionGroup.MobImpassable)) return; + + if (Charges <= 0) + { + eventArgs.User.PopupMessage(Loc.GetString("Not enough left.")); + return; + } + + var entityManager = IoCManager.Resolve(); + + var entity = entityManager.SpawnEntity("CrayonDecal", eventArgs.ClickLocation); + if (entity.TryGetComponent(out AppearanceComponent? appearance)) + { + appearance.SetData(CrayonVisuals.State, SelectedState); + appearance.SetData(CrayonVisuals.Color, Color); + appearance.SetData(CrayonVisuals.Rotation, eventArgs.User.Transform.LocalRotation); + } + + if (!string.IsNullOrEmpty(_useSound)) + { + EntitySystem.Get().PlayFromEntity(_useSound, Owner, AudioHelpers.WithVariation(0.125f)); + } + + // Decrease "Ammo" + Charges--; + Dirty(); + } + + void IDropped.Dropped(DroppedEventArgs eventArgs) + { + if (eventArgs.User.TryGetComponent(out IActorComponent? actor)) + UserInterface?.Close(actor.playerSession); + } + } +} diff --git a/Content.Shared/GameObjects/Components/SharedCrayonComponent.cs b/Content.Shared/GameObjects/Components/SharedCrayonComponent.cs new file mode 100644 index 0000000000..25ddb384e6 --- /dev/null +++ b/Content.Shared/GameObjects/Components/SharedCrayonComponent.cs @@ -0,0 +1,91 @@ +using Robust.Shared.GameObjects; +using Robust.Shared.GameObjects.Components.UserInterface; +using Robust.Shared.Maths; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; +using System; +using System.Collections.Generic; +using YamlDotNet.RepresentationModel; + +namespace Content.Shared.GameObjects.Components +{ + public class SharedCrayonComponent : Component + { + public override string Name => "Crayon"; + public override uint? NetID => ContentNetIDs.CRAYONS; + + public string SelectedState { get; set; } + protected string _color; + + [Serializable, NetSerializable] + public enum CrayonUiKey + { + Key, + } + } + + [Serializable, NetSerializable] + public class CrayonSelectMessage : BoundUserInterfaceMessage + { + public readonly string State; + public CrayonSelectMessage(string selected) + { + State = selected; + } + } + + [Serializable, NetSerializable] + public enum CrayonVisuals + { + State, + Color, + Rotation + } + + [Serializable, NetSerializable] + public class CrayonComponentState : ComponentState + { + public readonly string Color; + public readonly string State; + public readonly int Charges; + public readonly int Capacity; + + public CrayonComponentState(string color, string state, int charges, int capacity) : base(ContentNetIDs.CRAYONS) + { + Color = color; + State = state; + Charges = charges; + Capacity = capacity; + } + } + [Serializable, NetSerializable] + public class CrayonBoundUserInterfaceState : BoundUserInterfaceState + { + public string Selected; + public Color Color; + + public CrayonBoundUserInterfaceState(string selected, Color color) + { + Selected = selected; + Color = color; + } + } + + [Serializable, NetSerializable, Prototype("crayonDecal")] + public class CrayonDecalPrototype : IPrototype + { + private string _spritePath; + public string SpritePath => _spritePath; + + private List _decals; + public List Decals => _decals; + + public void LoadFrom(YamlMappingNode mapping) + { + var serializer = YamlObjectSerializer.NewReader(mapping); + + serializer.DataField(ref _spritePath, "spritePath", ""); + serializer.DataField(ref _decals, "decals", new List()); + } + } +} diff --git a/Content.Shared/GameObjects/ContentNetIDs.cs b/Content.Shared/GameObjects/ContentNetIDs.cs index 3610015601..2eaa5a4db7 100644 --- a/Content.Shared/GameObjects/ContentNetIDs.cs +++ b/Content.Shared/GameObjects/ContentNetIDs.cs @@ -78,6 +78,7 @@ public const uint SPACE_VILLAIN_ARCADE = 1072; public const uint BLOCKGAME_ARCADE = 1073; public const uint BODY_PART = 1074; + public const uint CRAYONS = 1075; // Net IDs for integration tests. public const uint PREDICTION_TEST = 10001; diff --git a/Resources/Prototypes/Catalog/crayon_decals.yml b/Resources/Prototypes/Catalog/crayon_decals.yml new file mode 100644 index 0000000000..bc0fa8b4a7 --- /dev/null +++ b/Resources/Prototypes/Catalog/crayon_decals.yml @@ -0,0 +1,134 @@ +- type: crayonDecal + spritePath: "Constructible/Misc/crayondecals.rsi" + decals: + - 0 + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - Blasto + - Clandestine + - Cyber + - Diablo + - Donk + - Gene + - Gib + - Max + - Newton + - North + - Omni + - Osiron + - Prima + - Psyke + - Sirius + - Tunnel + - Waffle + - a + - ampersand + - amyjon + - antilizard + - arrow + - b + - beepsky + - biohazard + - blueprint + - body + - bottle + - brush + - c + - carp + - cat + - chevron + - clawprint + - clown + - comma + - corgi + - credit + - cyka + - d + - danger + - disk + - dot + - dwarf + - e + - electricdanger + - end + - engie + - equals + - evac + - exclamationmark + - f + - face + - fireaxe + - firedanger + - food + - footprint + - g + - ghost + - guy + - h + - heart + - i + - j + - k + - l + - largebrush + - like + - line + - m + - matt + - med + - minus + - n + - nay + - o + - p + - pawprint + - peace + - percent + - plus + - pound + - prolizard + - q + - questionmark + - r + - radiation + - revolution + - rune1 + - rune2 + - rune3 + - rune4 + - rune5 + - rune6 + - s + - safe + - scroll + - shop + - shortline + - shotgun + - skull + - slash + - smallbrush + - snake + - space + - splatter + - star + - stickman + - t + - taser + - thinline + - toilet + - toolbox + - trade + - u + - uboa + - v + - w + - x + - y + - z diff --git a/Resources/Prototypes/Entities/Constructible/Ground/crayondecals.yml b/Resources/Prototypes/Entities/Constructible/Ground/crayondecals.yml new file mode 100644 index 0000000000..96c24e9894 --- /dev/null +++ b/Resources/Prototypes/Entities/Constructible/Ground/crayondecals.yml @@ -0,0 +1,16 @@ +- type: entity + abstract: true + id: CrayonDecal + name: crayon drawing + description: "Graffiti. Damn kids." + components: + - type: Clickable + - type: InteractionOutline + - type: Collidable + - type: Sprite + sprite: Constructible/Misc/crayondecals.rsi + state: corgi + - type: Cleanable + - type: Appearance + visuals: + - type: CrayonDecalVisualizer \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Objects/Misc/crayons.yml b/Resources/Prototypes/Entities/Objects/Misc/crayons.yml new file mode 100644 index 0000000000..85e0d7eeb1 --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Misc/crayons.yml @@ -0,0 +1,111 @@ +- type: entity + parent: BaseItem + id: Crayon + name: crayon + abstract: true + description: "A colourful crayon. Looks tasty. Mmmm..." + components: + - type: UserInterface + interfaces: + - key: enum.CrayonUiKey.Key + type: CrayonBoundUserInterface + +- type: entity + parent: Crayon + id: CrayonWhite + suffix: White + components: + - type: Sprite + sprite: Objects/Misc/crayons.rsi + state: crayonwhite + - type: Crayon + color: white + capacity: 30 + +- type: entity + parent: Crayon + id: CrayonRed + suffix: Red + components: + - type: Sprite + sprite: Objects/Misc/crayons.rsi + state: crayonred + - type: Crayon + color: red + capacity: 30 + +- type: entity + parent: Crayon + id: CrayonGreen + suffix: Green + components: + - type: Sprite + sprite: Objects/Misc/crayons.rsi + state: crayongreen + - type: Crayon + color: green + capacity: 30 + +- type: entity + parent: Crayon + id: CrayonPurple + suffix: Purple + components: + - type: Sprite + sprite: Objects/Misc/crayons.rsi + state: crayonpurple + - type: Crayon + color: purple + capacity: 30 + +- type: entity + parent: Crayon + id: CrayonOrange + suffix: Orange + components: + - type: Sprite + sprite: Objects/Misc/crayons.rsi + state: crayonorange + - type: Crayon + color: orange + capacity: 30 + +- type: entity + parent: Crayon + id: CrayonYellow + suffix: Yellow + components: + - type: Sprite + sprite: Objects/Misc/crayons.rsi + state: crayonyellow + - type: Crayon + color: yellow + capacity: 30 + +- type: entity + id: CrayonBox + parent: BaseItem + name: crayon box + components: + - type: Sprite + sprite: Objects/Misc/crayons.rsi + state: crayonbox + - type: Storage + capacity: 30 + - type: Item + size: 9999 + +- type: entity + id: CrayonBoxFilled + name: crayon box + parent: CrayonBox + suffix: Filled + components: + - type: StorageFill + contents: + - name: CrayonGreen + - name: CrayonOrange + - name: CrayonPurple + - name: CrayonRed + - name: CrayonWhite + - name: CrayonYellow \ No newline at end of file diff --git a/Resources/Prototypes/Reagents/chemicals.yml b/Resources/Prototypes/Reagents/chemicals.yml index 8a60a1ce2d..a2e26868c7 100644 --- a/Resources/Prototypes/Reagents/chemicals.yml +++ b/Resources/Prototypes/Reagents/chemicals.yml @@ -127,7 +127,8 @@ color: "#c8ff69" boilingPoint: 147.0 # Made this up, loosely based on bleach meltingPoint: -11.0 - # You should probably add a tile reaction here that tries to clean the tile. + tileReactions: + - !type:CleanTileReaction {} - type: reagent id: chem.SpaceLube diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/0.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/0.png new file mode 100644 index 0000000000000000000000000000000000000000..4153f07e5fdd7e7bf8cfe68dcb285ffe7ca48359 GIT binary patch literal 280 zcmV+z0q6dSP)}UDtav@BODOMdWb% zr%yx4KCGNIkdG{L{6srXP5E zI!^dp?W&u2^CCmk{;h70?tEk`v)IQ_^n`83%$s@UcXv5nz2{nJ544TJ)78&qol`;+ E05D`dt^fc4 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/2.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/2.png new file mode 100644 index 0000000000000000000000000000000000000000..028c8afced920f34db0cbc29d2d38b12087414bc GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJS)MMAAr*7pUf#%cL_vV%!bdNA zmH+>352_`22~OudXi^*+R1x~&T)~F**CoqD4US2CHn?6K5jwN@*uM8OmaTlfF8YSX zQiEeB6dx)Tv2Jf|6UjLH`A^`BzHt8v&DML>3=PG3ccd8_QX@SkZN2t!@&9M%^4CA$ z5feNjvHtIBEoY89+j=#Z-uHXT)-MgrcUK#jL?1ubR~nQ LtDnm{r-UW|sa9Bk literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/3.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/3.png new file mode 100644 index 0000000000000000000000000000000000000000..cdb6bb09d52cc466eaea4d49349dd8bdd06615dd GIT binary patch literal 264 zcmV+j0r&oiP)BTS%nCJQQ<(C{0Tl)j(A5003HRZl$dKlO@1fyM{GQ!)co6oQn!i`VT0j z)OKvGrS~3LmZ@(wmo~81wk>u&-Rst`;K(?R{|gsFh_hZ+R;=W8FZ-ha0000RTUuw>beGC znkHT@4ez=R0O#C0Fr@@Q2;tiB7~`ooeC#>gwk_U!F~*p)3fRS3OU{|CaU20y*Y*0@ zi--Ws^Zed{oHJ!v0^q&hUBs!a+=hQUrd>Pm$&uYSt$-u#|G9u=SpcxsA|jGflBQ|y vc_lGMhGC#6ihF*)Er7o7?+sN-slW9ERwT{+qnau(00000NkvXXu0mjf?`LR5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/6.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/6.png new file mode 100644 index 0000000000000000000000000000000000000000..d3f33bffe657479b2eea7af51cd068743d78c618 GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJHJ&bxAr*7pUbf{rq9DNfKu|2l zrtQ1^gjS~mPEI^YI!zO{$3`$|`Xp_ex&Bhpoagd_$vqp}TLco;x@O;fo|nu}eYtYp z?AQA2AMQD8Zav>B@aR?4*<*!AcC9;m{O^n??Hv}DSbTkD)@gQu&X%Q~loCIDwNUh)6{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/7.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/7.png new file mode 100644 index 0000000000000000000000000000000000000000..94c3e17475509e5612d412c909c5dacf5bd089d2 GIT binary patch literal 238 zcmVp{$-96d1f^*jD{BX!sw&2DjGF&tlOyJL z!6b>&yqpn0l0pd4=F$lZSlUa*1+3=g0P{SX%uNi#0Km3wrl)gg0f0QuB}rM9nc7D` oB1vkRMv_z%#qXzg9LM=PZpB!N>cukassI2007*qoM6N<$f?^D1e*gdg literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/8.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/8.png new file mode 100644 index 0000000000000000000000000000000000000000..28e7c8bdd5354803be46d2acaaba107a9007da4e GIT binary patch literal 278 zcmV+x0qOpUP)$;b}k5{T#QjM`xjO&=002ovPDHLkV1k&J BYV-gA literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/Blasto.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/Blasto.png new file mode 100644 index 0000000000000000000000000000000000000000..e598f7e5ab14bf84969d4bd555758909fe091c7e GIT binary patch literal 786 zcmV+t1MU2YP)Fl(*S??!*4}V6r_}*A0;WvGD=XEWlLTZ#kWM9gqv1XwYAxJJdQ3J zkH<*URK(^erD(lgA1vyG$*-@k#ryj^wASt7(P$K1G#ZUiRTWiLMWKMAC@4)+(KHQ? z5rOdJ#+c}J2xAO!dP2e7lpQQWYfV~fGRBbBnw)b406d21-U~%`Q+O1@jY0t-0D#As zn3#_kL(ynW80Ip(7D5Q`J%kW~f5+xA=JUCTi8#m?eBzyxBIvFOeGy`B--zY>D z3-nVVh9-u1czEb-xLhuKYl(=w_n1s3y=P@vlJ_1rH#cIvUeoREtpI>{p?Ao$ECT=} zNdjX`d%r6}2qC(s*IHB4G?>rlf>RLomz@z{^4V+#Yb{PsPuubB?F~}OXe5A5I=%Nu zk|g?^qp&vu09vvT9F-V|h=dSg$c(_IDu5jk;L}Sfu~;ks0B2`sm`3_y!T)q@bhQ{Lh}3jdk_&WFE5d%DV%e7etvGrcfmPFY)F3J0Go2;m)XhC z;v`7`0H2?qE&0{e70%DkadC0c&dahaS|wZ&3?>J*o6?{Fb~}%g$s{W9E8r3Y4k$xl z6NQhD4>;$bl!De8#+aQ({4a8EpBan*0NmZ(K}w0buJQW%il?V1D5YSng_IJr+3Z`9 z00tsZ*EOV+$g-?G<>TWc*qAJi%d@WQ-X7ljEfa=NN|Cj8SOBnTwJ~!o77G|-wtB;A zwd#>D@xC(Lo1;9>X|-C3JkM!5o%TfX^YA`5qV8TrQBX(@?D0SsbzNh*TnZk6`01J4 zIoJNns;a6-el+qtKk9YeeKD0~N&G#*ec+%n{3^O-7&fDqmzSUYs5un>04!)io!0@1 QtN;K207*qoM6N<$f@|$)*8l(j literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/Clandestine.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/Clandestine.png new file mode 100644 index 0000000000000000000000000000000000000000..e79e32320d78d8420bf39e98112d6e72ff1d12e2 GIT binary patch literal 551 zcmV+?0@(eDP)_Gd#8*2YA}*!uPF$9y2mjgw z?e0H%?i#Po{GFbtyCfpE*48mIvoYp#8HzC;x?NYtyHHK&oP(V6#_dGJF-9(>bn!(M zaJgI{gkX#@rp<)4);Qdys>j`<@wL03JBO>n|M>lf8E7HA=NJQM? z4BsyuSe6Bdi063*=N!!Qyed)M5%?eZ06%ax&IcJD5^5gM< z=kp2I>lI2Vbx|ov8Mj_&g&lR!Zv_Z}bFPw);|SUlLOcvZeMjO%#3`jCiemu)f11+m zb_4JIYH@8oy?d#SaU3_9YOyK9J%kX9e3}W7a}KPvM&FuJ!rBXn$hxFYLqs4V#~2v^ zAf>dqMRiAQV}Es{wlB9N`YM-sh{)44_4}xmt|x@L3$~f+204;;te+pf|FQ~RA?FMs p1S3Lpb!ano$23i!`xEmH{07My>e*A`3J(AP002ovPDHLkV1gn``~Ls{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/Cyber.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/Cyber.png new file mode 100644 index 0000000000000000000000000000000000000000..8463ad08b3742a07bcd68686f1ea4ac93c371b8a GIT binary patch literal 437 zcmV;m0ZRUfP);Rq8?ZGf3ssw5($l)^ZUYt=dDmyY9M zayfGgB4TU1H}3bI#3ElVmvwE=+a~qwESg6klnZjs5SbN#U;5=+jIpqLRHU0+D7O>? zfNnwk{U#T>)+Va-*fvWkfry$LPARRih=`|Yf?QA{;@xd3yRB4(uIq|#HQUy@#zb)m znVECW&FUT{X{}?7MJpFzgRbkW%7wM9`C8p(1Hk=aEz80}x7K^I{nfrLe-|yI)&`#S ze;IEL_HW@1BH%v9b?b<%Z?bMHtM}|&Xa_6n@yyKJ_kA&7v`+h3yCwtfpum<1TiITn zM)ftcRd~8#7&bJEPTR>#=?)-^+QhQX+D21seOoaAhXMVzYn_Jve=yJUMkl_l7%uh> fm~#-Fcn5v}vNb)ol7c@-00000NkvXXu0mjfx$nxd literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/Diablo.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/Diablo.png new file mode 100644 index 0000000000000000000000000000000000000000..09b94fdb8b064f8a1c2894735a094faf5537135f GIT binary patch literal 614 zcmV-s0-61ZP);y!aUEJmt~poyegMxqtS@eH=E2?gur|&?~x3RW)vNaHfAuP+H0HEtS0RYRg zDC34-if3){CdTu+czvKjzg6@9$uv#+ z&#u%oP3kxfbsVR)iLa*MyNcr&v)PO^GXCpilSh@-=o{@LXsqSo(D;ia-OLJ zAp3Cu7!HRd2m&gKA_2a?>3Y51Qw>}$7XZLuFaQ8}o>%hho1k?OilRsaK_F?GLJ$PP z4*r~ZHnLhx(}<>NWVhRuJjDPsAC-T(jq07*qoM6N<$g5{Gb ASO5S3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/Donk.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/Donk.png new file mode 100644 index 0000000000000000000000000000000000000000..c95ac991c8c8a2de6876ce1886704d5483c4bc52 GIT binary patch literal 816 zcmV-01JC@4P)sCMZJ69jFJBN8Ofgxv8>)*w*W#+!P zySp<+FE1|utX8X0{o&!EhcSi+oV7PBlO*XekD{op>$;7isF#^3JdJhHF^n1Mb3C0+ zfAt8yEjEF_v3L4BE)Wsvfhwf{sH)27BEr?xRnOl)W5Db6`bUu}r4SM3^Eq{0Q`a?N z7>?Qx5?HU-?e+CFi^T$fq9_m%!Z1WcjGYD!f`GCtQA$x&6~6D|c^J7nTGHjyVuf>Me!O^x%-W&^-{KJR6=M*uL9 z?{+)x@9%khe55D}4u=CtlCarqI2;b0J!zVDQmx6QX-b~wLvF?iz*hl%etrT_mL(!W z(=^6OS(e7uJsO+Te!m}eK1!e{ijJ;R>3N>1g&+uwjawIb?v57|fUj!S#pih*(2d&8 z2EcN;DMcK|gkeY=$2>hfQI;i1k_3E8a%i5l6VEbS1 z{`cSB-hS3YoK2S{Q;o_+1lr$X&xdsAx8#?!?QT1!=fAXr*>9P0ti|{JnLUn)@B1^` zW{AuTzFKFu?Ov@`9Wb|@cK6s~?;pa|qrq(3*0kC>YI_{Ygxj9Gt+(CE+w;K|{d79D u->Cr?;7@9xBV(0(t`#3z|H+>JME(VsI^Vy8nPUC`0000qu86rCIcf@@bdX9s_QyC8IQ67JB=-%|)qg)Vu6+`ikI#P;DL z^gwB8PHxWqN&@ug(W3*BB(b01NDRA*&{}s|;G@{>cGcp`<+rb8?hY zU``yz-Muf%((>c`FUMuY6Ok>;vgWz8FaH z$)nMzrZkkEwqP5l)2aIR<0Cc;5%^1w?1(6eAk)F~&*!sKM4G09>2z8-@gg9UzsY0* zt+kb{Run}gqAAn`t+hARwLBSP-nI|`T(8%vCS)5LV}donW3_x5W2_8MbL@7zVYOP} za5y*}kQ>o#HiNXqwnJ+`dM!aj))?d6UYi?IXe(~6@g0W|@XWP5YF!5r@H~#WF4~}z z!X!y-sKS9~rzoYcUavpry%Ye{FC)#1N!Kgczu>zK_2}`H_yt`Z)&S$t%?vH-uqtoI&$^&y;m8E zCzP5FR*z%nT;jA{EFh)4-svih<9OMuwQn{mqBa-c^F9zlNYgY8 z`5zALNZz(BNh!fv3-df*oONA6Yds*JZjmwODu#}6{+nWY81s`GLb%RD&cmeG8}g+t zYP)y`(!3 z5yu!2LU6U#!?P{R;-s-!>#>1$*t&_-TDtBrqII93H|nd{c970#9lkTry75(UPaiR~ z;Q%1#%-(x=?*RZQrCsv6u6(9zQc6z7WL>jY&Y6M!BAzYi7SlOTdUY8odi76f7=|&E YFF5?jNq^~e7ytkO07*qoM6N<$f--4zi2wiq literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/Newton.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/Newton.png new file mode 100644 index 0000000000000000000000000000000000000000..adf0b996ee0feecc9818c3aee117e1ed97154fc8 GIT binary patch literal 748 zcmV-)rDM{~BdkviTp#hxeXg7zWKw=NyZoz;rrowF7`siU4qNae?#mbHs7n zvl&9hB}ozhK-lbjdwXlCv({odod#)|^6TrX)h8SuA0vt)SZn$6@-k@CBuSD$7H?6O zCB;2?o^!ESP}GX@JkJRLMNzaCs;a8~*IHBNlJVaAox+gkc`cx-Dq3rMgGf>-MUt() z)oMlAL{qc~m2u1ElCqg@EFjA=YOR^3DYe$L*7Ec7lSNTbc1V(|)r!p>$#<4z8$IT| z=iS{MMNo6`Sd8!Q?*RbU*VlM_e8lDDWh?lMF(irEY=)bgn_74fe49)r69C_VD{WyI z26>*-Ifv8JQ^avB?e+M$>4hXo0+KYwpsK2thbEH=j4{0%Q4|FLU^bft-g~~kzvJxe zthSlY=ZK;x@ZQsV4*-aws5LjzH0=dUS(Z%Gl+L;O+|a=}$D#Hiy!W+jH;4~HH*ojH zIme%F9Gqy>Rr?*tLdKYSL5b?;=Vw}LskNroy1sVXh<6!u5lV^4yJ}NE$ zcARr0SqJVI!rdn034#F5ITS?!t@Ys}{qN=wE*mOvbqq+F9D`Dd4-XG}34VHd;_dD2 z_DL6u#i&WGwQRlt0N~@}V{2Mouh+Zh?$zi4npdoApJmy`@k8zhejyQsVOSTYW?2RL z38~4ZBi<_yyuQ9t%JkLMRj;g`oSXpo_DnY!EtkvP3+$>`-7+dqF+q-mWa|;Dlp0sI zcM0fT)vf@g6xZuDn{NuB|JvTjwvsw_7vB5&K`Vlrm2)FXDSGcY#6HEPi*s)9g?%uL eF{AU#AK?e|_JWdaRmish00009m#(pURR(i@EAE$U+qV?B;U!C7TtP8GZ}{5dG_~X&44^ z+h3oYJQ*Mq;Hcd&3{q9qi|t_m1lWTJ+2LDjP1f3T0MHQ#Uv*tGe*Rc8K;QSLAfUEw zHxO?v!jMh@Xss`0;SxZe=VYzD4dPS=+P3ApAWqkSUrcWYAfj8g;_@k|>zZ8%|Dt&m z0Nda~r0V1Mz;~z-2>>hciwVJFMdsH-YB8?b zJ5F8K?H;!yHqSW!Ms12rM1+|+)HcSfnNdnH#>a6C_D$17MNv>$mc-2L#`5Rc0Jsy0 zh~VGd8n@r?o99^o9P;tMH}?R@jWME>Vytc)$Iav8_5&Cz%Cc;=^L=0of1!ev>ai?~%NsI%jD`#qu`pp#WT TXXwy zzfUSl6vsbnq=ACMh~YmlCT^iL+mJ{l9WnkB-oi#qTqTxh0yO*$mWJ3Ew2_2n8?o5J z*jR5shz!ZnP|Pj7GjA7n(Rc5A$xGfhA$#V``SCqx&g=sJcNpI_^nG6{Ihjl{olf;L zh-5PP5!f)k6?=Knrj$~u1fJ&s;5ZJcREq8GZDzBXwpDu5G)W{9_`WX{!Bi?0OD2+l zO8olzitDrr`$mi(jNZXjEiRXEmlp+(=l@I~d=BukKEX&ft5{U%8 zUQZKgG#UsYXf~Sw93CFhXf!xEIl=dRO~kS+5{U$!=i$1pjvwsEQm|^z^YA>6d_J!n zNF)+;yIoC0q1kLwDwQaeN}9-QHY1fvsbX+lm)UHF<2ab6NvqZ3{{B8RPr3uc;gD=L zOEQ_{_4O41%d&LPU^f=QG)-LBC7;hTo6SO<*xTD<{wP96kV>Tt-}hxUnei{& zJC1{8S-R~vH#b^Nr_;LizVGV+HBD0&W*CMMtR7;n;oIArTwPr?f|EQP4s}JQY0_vk zLOv%aC!smXX0rgH#HzqWw?Y$8a=YD@Z*OnX_kHR6zLZjGdC^+=ElfnrHC$a?H2~`M zx*QIN0Cc-uGMNm6!GK&Y$K&H8nM?+N!C(MDE|=rw<%Pjufby%?>#|%f$5tGEDU3!VY}@{HB$`pwCcyswKG)aRdcCr;qUD{P9RNC=PAE~FZx9z37Y6*A z0o%4^wOZAir>Cc(0M%+$>qesy)oPWerzeCE6bc2S*Xzlxtu1W>XrCa7U=BcDTwEAS z0F_FGA3uKRw)K^K zczB46tzJl>A)NoVE8TcJ*6f3Aj+$^avX#ZT3(9V_#LRKqM(YK&#??JnM@EukWQy{H~y4N5c9GARtJKFz9RM= z+sR}ST7UW$2q8Wh#U+Yc$N5BI8Q}f>T_3@`gF2olS>Y?2MMtn4xAAX42*LaNdq@|W zfm*Ewd~`%zGu53a=O`Q<9Z{)NLiV?}w?^pA7s#~)MBdv@r(*zEmSrg8R+kH^$%wJ%>JzXQv%499Wgcs%Cp z?2KZu7$(0y-~}k9sFdPIHrHCyAHv@s!LK8Wlu{HC06<;WiHP86Bz_-RR1^iOs!EpJ5gdv@ znx?zBZ-aC0DcmvcZBR71j8&=~XB&=^CKbk4Ewdm3YQcgJQ5wARe?8~{+3 zWs+rCa=YD76a_?tBEq65&~+WMEK2~Os;VTpbnR#K1;WSP3DVU~-%Lp}1vui-@ngioF!WhFeO>sV-aXOvQ zbsegzN<@U#T3jv{IOjMF1Mc@bthM<1`g%PYp%*^CVaxgaJLeekZ|j2V_4?$+Fbq$+ z824>h=6j9XgF~a(T8pqSo2H?)_K2zD2y5e&fph3<2>h*$kNu2zeEb0Kz^uhc5&)7U zNtT@Fx1QH*k!0-t(FIy-I_G9awbl=zzdGk;o3(9=(^b literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/Prima.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/Prima.png new file mode 100644 index 0000000000000000000000000000000000000000..3c8fe9df40042cb673f95973894a739d47e6a8c9 GIT binary patch literal 388 zcmV-~0ek+5P)>*!cf{WMM-?V?hN4m~h2q%{~z1y*uxUa}wk1?jYj|2yo-Zjf=3Z zYx-*sV68nh@o}XAAp|(*nkEncAcSyvyMz!}H2?sRQo7s(A|9G}0&m$-`@UPx@c<~_ zo?`EPQOk3jBO*#Eu{EA_g%iFGh#%!zajvgDljk2qVvLaUqug0cZLigZ5a^ss&bcI| z#C;ov5WrfSthGr>iM1Tp=dqL$=}!De&ue=JwrvBY6dGevo&)$g*@#n(gJPb~IX@k# zws(M9G>#+YxtzD++L#z4D5cPQ4@xPdT4A6z3Flht#Eri40@E~MG2gN*#a7|Dob&6| z@il#cd7hi1vwE*~Z&%Ns>nAV_!_%kRSNLyC&UaA(t#vx$Jnqrt+!&Mi*6uRUQ)}tp i(OrVB)qdl~zsDzTFp(^;$>dD{00005VcDv1H(CKtApUJ^X(lpIE(ln(giYUu6Bkv=>IF3VaZ*Kws zq?9zBPS2bMK|qa00{}1>3@Wq7sg_b=Hk*O3p8q1kLA%Q8%- z)3Rd)T&x1lgvm%0MHGf1EX%@XvjOn+l_yC;$Kw&UZ3_TMl7zxA1ON<&Lp(n}-&TE& zKPWm$N6dBJwOEr{E;EwU^#3h^4_^YinJzqATG z&!c+1j$W^q&n*@U0O#%0wryc5F%|uOAFI`>YD*DBM4snS9LE&LG3k9l2e({xE=iJn zE{C4!~TBx(PMq0E{1KDS{v%26sL#8@)AO!g{^F{zr|4O>OtL zpayxicsw3&7FLN_OdsE@qh66N#7|SC#;AWPrXSXcRRgB|yyp9U!Po=4)rok#SS)Zl zogjn|CQ?2tgvh^k-mmWCGM-E(5Z^EosnO}F{%K~)qBrpvH|X!CCZwkl_$pN*B7W-p zQp$X-u&y7_qvpfv9FNP4>zul9p%Qd=dbDL^ReSU~*LBOwkBH9xD3lSG-EpPBH!2O7 l=E}r=qhVEw-%ada#2+`r8P7zdk@x@r002ovPDHLkV1njPU$OuI literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/Sirius.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/Sirius.png new file mode 100644 index 0000000000000000000000000000000000000000..7b0afc473c8ae34f6b4a4c68fb0c837749eed6de GIT binary patch literal 585 zcmV-P0=E5$P)I#NY~z~cFVCRo0J;5JPVWJ5NUd(~`q=`MY6 z$-UwpvyYiQb7pq70Q}>xAkTAozu%=0LJA=y0MvCYg%Gl?Yh%qAlX;#yeRLaf6EAUh zAcRl{Y1BzhcbbTga5Kg} zCU{U_>VtQLc>OMR=-sS8$+7tAcQL^jQ%{L=uEb2O!e{|;9DAH|m30sVUJwLc+qP5U zPX|@vR~nIm)0gcX5tDi#3`49|D*!;2WeCG?@=F-iy%fAC3IM=zxm32$PL6s>)cGWjU%6y-s@OX_{ic-va=A z-v>QCn$tKhSXo@E)LC{h9SyLVw|PdJTwx9gcUO=F1RoFfcFWpCS7?G34f)$r=h z$D*$ioy{@9&*w8vrxSo~_Ih8e*K4N;W8)_?e}=0PYVrKe=kqx>n~jkT=NwTKp=la* z@3xHfK1tIQhrw7>85| z%%q4UnrtLaim}+Y@a(yh$(}s!xgKtD{>{vK?f+V9uf5<8ej*40DTI&!>YHRwl7k=^ zh>y$af9QPQ_XiXzFv+fD&+}wdR&h!$m&?-k{h`F7_@aJlwVG6c@9*z%KWep_jLX?< zHWig$Uta-udU^`|W@cu1e0&68ettge!Vp0;^Q4NWm4hIVzVFL&xjfW?fi4RnWW4Q@ z+
#P!j$wKD+l{QN9O$)o($EX1MHC;9$1j7^}~Y$iHKIY>vRJ=i47uqpwVay7*|$S!YWi?5Cqb392o?GY&04}Mf_VE@UgXOwc5~g z)KwH;N=i4*rg-!j{DdwECF=-OOp>hg|0U=u7+cl<8TuzNA(Gzr>gwvm=YIVa;%>K# z5CYeAsaC7lw$1tZ`BZ03-GOGaDeLt*uImEOYPINeI@q?&_4W1C=Y1LP@(*#d*_8c$ zpL9A+tJPwCeH{SXwnxT{TE!!;U~O$pK0G`CAMFO1ot*_BlgW@yr^)B@WHK45)hd8g zUGO|lw%cuby&g9=H&~V>bsf?s5WVBg%}ws^?f_U`UZ&gaQmItP<#GVHu1hYLqt$9* znkIm}xVS(F5t7@sO~2pQ7OA~6DSyblz3&u@#ZV`N;O*^=jg5`48_`4ndc7V1b8~Y8 z-K@H^5(GkGdE@(TjxAz^>G^tjr7={rN7={6S%*NK%7FSnSbUGb8 z&jTQv%|?mj+1VMpySrgsx+Jt&6$%A;dwZJ#uq;cOrWsadnkI%}u(Pwn<>e)w=W%j! zLZwm(mysf}EGv9|NgWuwIHJi!6EX~ggM$Ow?KY>Ur$cdyFdjcO3WdVZ5;;CTmX6~{ t$8n_Rc~bf4d_M(_<7l_rZ%g36#NRqL4QEYb$5j9T002ovPDHLkV1hLzp~C zoyiZ1t?SHrx@GAECD59=WSik`KrGocxKb_ zG)y9gVUyFX5&feJ@3utGn1tS8j zVQoZL`!?Pz!uZV)QK_1Nht*Y48srv z#rAVS*L5v?+hRB)e)7TR^V#v3h#V{6?~Bc21SJ^95x~#v0ARgd3*U}yrh&yAJ*#B5 z!*cV><&v~vW}7fauExvd5>-{*Z2Ypm9G1GIG>>;{0&A^XtyV=}NVWu=%{>h?bq-t` zwytZz4PFF0Je^JsxMo$pyPTu~T5I%u4-Uc#p)0D!_-P&{`L*rHCq^wZ`FaNGg;9t_~Qp65BV)}M*6)=mZq*_);b z+Pkj9;c%EQq;190kIuGxBjsT?;0Ki%cYb`gRygI<7c0NJ7s`N;$Gk&5qZs>$>** zyp)r~D+o1B1J1cudH`UIja~}pJQ)17aYHfuufay8lxNdg2ZIw4rD@8Bv!QKUIOpi~ zX=hm$3;6)Q^c^dNKv|ZE&Ho`vDHvlu{|OO2?!A9Lr_m;36W(PA%wTX7x^J#V~m;S8Snk7U`v4OH%->s%cmX@N%8N; g>HmPDD9Yb(0~64!PsWQ7RsaA107*qoM6N<$f~09-MF0Q* literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/ampersand.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/ampersand.png new file mode 100644 index 0000000000000000000000000000000000000000..c91f5faaf77555e9abc373086928cc86979040af GIT binary patch literal 247 zcmVy*1oD zN#cyxZfL)F$C$fgp5o5nbw}-ef92VpDLYfMB;O@U{gTyzE!VFVdQ&MBb@ E0D>S+^#A|> literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/antilizard.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/antilizard.png new file mode 100644 index 0000000000000000000000000000000000000000..459f673aa2b667768c2d9c73a66bef2fefe93fc8 GIT binary patch literal 309 zcmV-50m}Y~P)V9cF4Gr)+FSJNxZ%F4sUOXBlIu-xk2kxqXJ914em<+_Ud!%s^hS^4Uo} zqzck2sQ!&khsbBPa1KO*ve~ewn`JB1-j!DT<2w+k;@x;xK}4Zu1n8oLv>GA9h9koz7=;Z%j}1ynI;M_zxZOqbTip)sw(_ zs1omL*QHIj;(SX0l`CKw3-1FN(iBJ4&}-e>!Pc?gLNyCd@a0>V*3RZy00000NkvXX Hu0mjfnbV4b literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/arrow.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..b16f8199478839fe9b21f1cce2db0ccf511300c3 GIT binary patch literal 220 zcmV<203-j2P)Ay0lfKb_uS+;y1AX#~}bh2q8H1-bs>6HXmc~Y<8W; z%%s*D_k9Nd9LE6wD5c!f#QDS|ImY-JUoq8yhzI~|+lF`hA|ffJndPpjwSG=XlDAd= z3rU)pD}bxB)*4>7u_l13BIoQ1;G(MTk7()@oC0{J`vatuU}o+R(^Pfc6AU4Qe|Z8L WifpNL_gi5A0000OMyC1_ceXCWa3F~*qI0-69E$3cv- z-?hJ*rio9jXEi;+Fx6(5Je~Z1OES~si{iRXpO;yHYNy~vrlMiDeiVL`@(%{q0HR5bEk+D6ciK`%*1ZD zBS)OCxd#`EMUMRQ0sOB5TI(G7-xFw>CR(X6CJTWi0KE6ahr|HRIrjVgfY5Te1Yo^h&m*9<4)G_G zzpg2zM&CQ1~05fr0;s zF@|v*(~XzQB}uYvPH(go`gIZS6!=tx*IiCCX`1$(@|*2;`}A@ zSw;Z3Ua#Ekb~MJkEx`Xo#A304QVP~udY&ih0s+AHeMl)kN&6Z$V681znddpJwGT19 z7OxAb$2sq-vA5gprHIxpaLI%a!hP54bz|)1azQ;-N{Ju{y6;4NrA1M^OcsXWT})>y znkGh3)afGXB;uKWNs^Qv*9$x=v|6p63V7Ovp4WUlX0w?f$>Z?|l2l4zzu$u-o&R;* z`RIkFj&Lty^@Z%c*nB>x*18-UWA1uhN?HCpolZ>CwAB_z>rI$t8LYK;TdR~}p68fM zCS}W!q}KYuh95Dli)_6IrqihqLLiP~ZZ;c6QADjZ4u=D(g@h1dG#cT2J|hT%a#xZh j!FW7wJQo841Am4u&oZs*OQg~k00000NkvXXu0mjfcFM&S literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/blueprint.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/blueprint.png new file mode 100644 index 0000000000000000000000000000000000000000..c238a8b6bb611c82d7501379cf6f8d460a7eb088 GIT binary patch literal 429 zcmV;e0aE^nP)+f&kcs#ly#u%!q za^F9q0zlI=^nLFXNRs4}8kVvw$@3h5?RGnkSNtTK&4wt7kff@rTmgXV_3Gkox7&Cs zm1Rj7hS>2}%{?kMs0je;17B|GT@gu&q6mPZC|qpUbx6|Ta2R$J#+XkrfV!?Jih?vv-IJST8O9irBmp1{L#*_pH83$T@m;(D XNS@W=+{Suo00000NkvXXu0mjfQpLyt literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/body.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/body.png new file mode 100644 index 0000000000000000000000000000000000000000..4dac81656477f454ca931afc6c8661503b089ea2 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ`JOJ0Ar*7pPQA$2pupj}Gy4C3 z-yf-8T{1l-PDe;TKWX+PPH~Ec=Oh)+f5&b$&b)s9h;H(`Bg)GyxWBl>s-;}+;OtzP zJaebvrzNTa%nT3o6a^U_{_0w$-tEq8+IvW9Qt=8SW1ftrSlyQkkNPARn`y@I3CA^l zs8=ZBnzp?s!#M7~{xe&FLg9C8PWPJv-%YAkPu=Lux8?hyDT}_F8{S}8^TXy_QA(;1 P(5Vcbu6{1-oD!Mat75WF`wfS8?9Q84-yJg^TokkDV+6d$9LD zkH8+By#uiVuUHXdOl%20-=}_b3`b#)NGPR(AyUe;64NvV1Fm#|bqR$K1OQS>jN=FZ z=(_H?2k9&%c?ZtwYpuEYJb|jJg6qq&umxB&O>_GQSY*EgDY#W&7=}B`{gPq?Z|(-~ zJ+^J5x~|DuO904POY6FFOYw2e1y888PX82#nCF?B&j$yzZJXz7Rw(>EA6j6;lxB5t Q=Kufz07*qoM6N<$f=H8Xx&QzG literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/brush.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/brush.png new file mode 100644 index 0000000000000000000000000000000000000000..10fd94bcb6138a4dcdf7cd3f28a940ed53f22f08 GIT binary patch literal 582 zcmV-M0=fN(P)0Q7xNt(8&=W=75#RmE-I z-rk(RCL(EVa~K9Y9*@lPOyBqIxvEl10U*Xm2muixrNlH%XUFO6+RSW?#43RpBW4Cb zt+lNwC34O!s0U0bp{i>xw-czf+UMsds!G>&7lC|rGPPDj1XXQBODTv5IcI9ECL-Tv zL4HK{AK+#NLJ0JI&pgintqGUkMTAmH%LG8q894WeXJ@Ss*9ZhvH4(u-*F+pn!c*>0 z)r)t3MBp!pb_%cU@?`$oCuA91M5wi5W{(l5wVF58nuCQsrIc2RWmz5`Lm$EKf;9(= zfXnATj`sv{wFzBdmKpG@q?DQtsOrTCI zB^bw%5W>ajoWN2AJ^iJW)`+f_ur9|p2^RS#{ITyRp7@>k13eQ% U#`B8KNdN!<07*qoM6N<$f;HC+?f?J) literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/c.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/c.png new file mode 100644 index 0000000000000000000000000000000000000000..8b4a4125cb0da1597ab6b7d970ec9aac64b1d4a5 GIT binary patch literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJDV{ElAr*7pUOdRvY#`9`&{wna z|8;H;o}Eubz6dA^Jbb?}v?^4w>CJZr>%)B=L0&7DGe{g4Y$%O=DJGMg670ojA@XmZ z5TAkX^uFaG~GX+VP{6;J~x8d{C>F0c3iL8?y^6Xw?K?##jtEMpxyd@Fq4 zhr;oA#D2fe&ruZNZNf^V>He+aP4`ktZE;gan24w;FOFkf{l^WYX^Ka}3YKMQH*gnf z&X>zY`;{)2%i0>paR2~Wmfg<*0M~V2Hc^_U1rE>iDi1TC&u`}_ivHc%s^)w?S8B5? zyXn=D+qPYZKhwnNbgI;pc?=>V&Uqmi1OfW}exZ|)~f{;$8nxhF@)>7==FL`O36&qWJJUUg8?%PgN;Tb`XyjO2sW8aXt7wp zvMe^8PKhzb4u=DT5NtdixB7c(Jz+T(hT-S7V%?5cV{;q_o6QEcZ36&yyWP{{ti@kK y0N|Yezep3*SMX8MG5}z`UZZLL9XfRQD*OOD$bxI8=3Aox0000#2V&0fMM4so^_r0}17={P{kYyPnA{Irls{h^-P)dR8x{T6vj^j80 z0AP#(#u!cK(`tnfr*~o0Aa6bAd@AU=?yZ<2Hh$~-K5c-#Ce+m&?ZOvnG5}zVF`Fw@ z*EOwxbN=z};tzFQ;~cFuwrxAT1Nilfb(W0cwzXT&mxOFdl4Mh3HwW%wZvm%FNH)*{ zAp|{$mR#|HG3N3Su7)Vfa&kZC9JSWiG|kGeclc*QN_psNDJ9O6Z<(Y^NG3dUjGpJc z1yvl!lotD({kaUoa4mecsH*BzsHACnPxveu4R`cAo=5X-%^w~f{*o6QyHOJB);Ey= O00006EwcD_Ww@NzOm_e9m(v28E?xz6$NJ6k4#V|MXd&RaI&a gZk+Duc=0|~Z%J0Pc&hO&pgR~mUHx3vIVCg!05vsAo&W#< literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/clawprint.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/clawprint.png new file mode 100644 index 0000000000000000000000000000000000000000..3b237d53d0aa92061f038b80b269f4e176321d5b GIT binary patch literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJY)==*kcv5PFB|eXEAlW0{0{E? z9nZh6QKZe|-Iw-t3x&Gx&%5EwG-KvW*$GQ7%lfBk7}qx)mw2kQlxeLggM$kLL)H7M zH8on!Dw2Yyd_06ar%8vr-K*+ZeD1NeMr8KO(xnU^=Ia|68}EL{z3rdLG8?@!mOyJ6 NJYD@<);T3K0RZHvIz#{f literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/clown.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/clown.png new file mode 100644 index 0000000000000000000000000000000000000000..f4333d854743d511258834723d119a7b295e07ee GIT binary patch literal 239 zcmVGR^0BX1wy``u%>LMtl!%f0oR)^Rh0TP%XrroC7fB~VM^d+`zSU&iv|7-)r%@u1TKfgi=bUwdtJ@LX=Wh`u`%1V-!WPYj;*YjftqW+K8g) z{ty6AmgS~+RaJI7Bn-n%gTC((1OX;+&cPUi5CTdmFviY>^gQqME&-tHI&+;vq>Ui| zt!r;WDdm;^gi=b43b$z*D@A5>vTfU59>VApZ1lRZW}2p#g*e<*Qp&eP&N=2ds`D1Z zFf7PI2(6*(x_{QjaXfdDrjyb7zhZn3%#kF?YbNl0e=#5E;5g30T*uiIngm{i9p-DE f3FpCs2Oq}|Qz-`De&X5;00000NkvXXu0mjfSj?3h literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/credit.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/credit.png new file mode 100644 index 0000000000000000000000000000000000000000..f630aacaee204a4826a69f004df0d4604b5fd893 GIT binary patch literal 325 zcmV-L0lNN)P)y(l88vYXAVGlrYAiEK73E5x%IZDySS@;`2NM0P4ENIF2aG z62ma;9vBN!=001Gx{VD#*fY$mJaqlKn zO5LIFXFv!+&beC*c(Zr;yU+D5LDMuZBS-7T7yy7$>b^$Zv%onA0JLojt@Y~;u-2Xy zKXnr_##rC?v~3#^5fw#2-^cy&c)V}+e`A^^jN=%b?#qu+k|ZRh4As9*=szG5iToR$ XFM7-~0(9Ev00000NkvXXu0mjfFc6Bz literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/cyka.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/cyka.png new file mode 100644 index 0000000000000000000000000000000000000000..7ccbfed68e15f76276b7d958e01100de14268b57 GIT binary patch literal 227 zcmV<90382`P)lz^Z@r>hm8YChd$3az9VM`ce zPD23peGmT@0NS=a4RM##XWq}164u%)%l^mNE{!pW2-~)WJ%V*z(OSO*05na*`_~af z*LBYw@+N4o2L5Pir>hzAoc#*_2^{}OZrjM3Nu42TW1;M>b$h8aIr7&qC(ckAlzs#hOfUBDY} z48ZAhB1sO>@vHB})^Jf2AW6e8j6QlseT^%n004$zAkT9Qjl|OgJ{uH53{FLF%N`@NuJN=s|3ojd@TWzjN|xXq^|2uG)OWG!`G1@$>nlM0BD+qS(cF`(==tf|FT*j z$@O~O@s=c4tJSwCBuVnuB%XSP*+OlRaM{QLJ02n z`=3k2t=xVs!WK%YpDV_Dg+-ECmfhS7f?zlaDP^z9-tBh7Uj#`;QFK$uqi5&3?l2Pf z3~aYs9u5cIJ42FE%6}yP#0CQGycR9!k>eQi=`ru#oRE!w_EHOeR1klgVWM3-dhF z(=<)Uhhbpbwv-%dYHZZ z+wT!8yJ%MY-q+J^RnBWn0IJqYS@vwsuFQ(^fJ@mMcW;mK|K6~7``WEJJ&B=L&)%81 iq~pSOX$FP|{mgT>$?uBkIT8yrnZeW5&t;ucLK6U1vNFN| literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/dwarf.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/dwarf.png new file mode 100644 index 0000000000000000000000000000000000000000..f906c19cd19ee943cb4c3d800e1857d4a3362dde GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ8c!F;kcv5Pryb-ypupj}^krPm zF0Z-!pgG z>v8y8F%$@WXDGbie1c!Y%-!!lXVg|Qt+w3EelJbYTG`E(IdJ}FwO5iGxb}8#GH%$; e@Sl<4Kv`a3hN)+rwYCJ%9SokXelF{r5}E+ZVnLAr literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/e.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/e.png new file mode 100644 index 0000000000000000000000000000000000000000..b508ce475ddccde2e68e9c2bd15295842a15681d GIT binary patch literal 287 zcmV+)0pR|LP)1N z-(1&4MC7f&m+Jsye!sADfoYlm07OLlzSGTXtDoFqN~ymMzV&@iT5GSNPQO4(iD4Lg z=0CrP=6NQ@7>c4m*L5()pss5i#{tec+O|cKB&e#&>6AWt*;-2g5JeHTZ9|%-cPTK& lz&S^r=kH!XK@bGNTRuC8bJs4=F~0x+002ovPDHLkV1mWVdpZCB literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/electricdanger.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/electricdanger.png new file mode 100644 index 0000000000000000000000000000000000000000..894434031840cba24db5cc171d601b3163be82ed GIT binary patch literal 481 zcmV<70UrK|P)njUBc;fO2gr>+Rx{6$Jt;o@G<8H00<%OqQ8w8 z0OB})ISXDH7>!2N+86_^HT8PE-tB){Yag@CD5dTql~UH$`{Ny9jByNJPr$`ufh0+s ziTF_gb#<0ff-#0Tjw|QawFiLxe%~k}ctwOU#@XN2{pW(xcs#Do8DsR|diYT{^@xbp z>otgoPNx$%=a@_;52vHn`u$P>0AuXwMH52Q);rJh_n+&ger|GZ3BwSp)yiK4fZFui z@3uQ0y$zP_cI)2}Hoaw8wr(XWvQC6E39lcUq9~{=O9Ft|Z07X6jVehJaL)0Je!ovy zmR0uCG<_b_@puFP*q6;1gY)_97`^WOTcRie09-B?M|hs+*zI=B8TGE02aj5{qod;+ XGiOqHtz#K!00000NkvXXu0mjf?~2-K literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/end.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/end.png new file mode 100644 index 0000000000000000000000000000000000000000..0793fbf81ef02e4bac322c6f71849e1ab11717ed GIT binary patch literal 224 zcmV<603ZK}P)c2%0000@|{0000< KMNUMnLSTaUQ;XdI literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/equals.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/equals.png new file mode 100644 index 0000000000000000000000000000000000000000..7479d8c0d1f80f7ad6df4e13aae4bd61b5e6c709 GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJa!(h>kcv5PFYM+zq9D-v@a8G* z9~}GsTSs=z%~;wobxug$##p9APm6f_f5u$`f`Yb!3{U24>@{Ry*cx_6?)~2S!%IcB zToZ6&X!!kj{g<6aUw+>;bPM!48Rfm_`|^7>dk^$2pK?S(IV!vG+{rn?Yqn13Q&Lj; awVFBlvzHCq^DvMT7(8A5T-G@yGywp`xkkMJ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/evac.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/evac.png new file mode 100644 index 0000000000000000000000000000000000000000..231ba3e1f816d80e736a6b58d86f92b59408b8e7 GIT binary patch literal 327 zcmV-N0l5B&P)Pw8Wd6>~RlKh2=f&xA^?iR3vywRprD=M)bVX5U8~D2Ovgdgo zt*2?)<3SMU>gz+F!FbQ#fid=X;?_V!WQ-xr|EtNTw%|`QLko2hss`xCb7jm3YBsbU z#}VcIWm&Wg{HhJ*_9J}XKkPp?jD!%_bsgq;z6;3nKg%)%0BD+KkFD#9+qV6K4ske4 Z@B$jiC3BGeDEI&X002ovPDHLkV1oV}mB|1A literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/exclamationmark.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/exclamationmark.png new file mode 100644 index 0000000000000000000000000000000000000000..9ee7895401e7de9e031491ed6abbea682fdc8494 GIT binary patch literal 209 zcmV;?051QDP)zy5*xB`Yjl2VdVifGTjnBgKK&+{P0 zsLr4Yj4`nHMhHQj;g|v<@>TDgQ)N*Ga?SvN-a8Ycr`9UJ7XFTWU^1vH0Dw6s8=>cf ze#$^=jh)XGxT@bUN-0OSp!yZ8wb(mHvj+t literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/face.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/face.png new file mode 100644 index 0000000000000000000000000000000000000000..defb34a3831d4cb4e81dbece56d48f6d7969e4dd GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJR!o?7q_il_| zX45BEXq7v0UgBP>FVdQ&MBb@0A>?Ni2wiq literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/fireaxe.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/fireaxe.png new file mode 100644 index 0000000000000000000000000000000000000000..22db6cba5f2c41e0907582fe8575d38508e220de GIT binary patch literal 340 zcmV-a0jvIrP)D7-L^&%FOQX((ycR7pRo7 zPT>3g&$pr`*8SEr&F)LGECT?HDCw^CSWp$m~LiFLo3jjcx zrg+7MHFl%xx*#H2EEY7KPRX|IQMN{H;+(^>ELtv?O=FfdI-x<}8?)A0H`Z^(^Sn-H z08kXg`-5m_Z-}Dk{Z+`a3_^&?N!#J=b{ibT*AQjfwjX45hqKv?T-P09@_G77ueHW% zwW{PwsrR%Z2!h_>lTtR?QkLcK22d15!?|$)0F1E*XPk5RzW-DZPtCw&GHI-(lte@n zh9S-8b0Q+T-|zJ*kmESdnEn|6;G9>+x7#gz-^bx_002Z$1R|m|O&e7L0HxIHttiV9 z_3Rj90DvF}sx}zT=X0eegm`@zyC%OaGq+!tZkAt4O<^*X!?r_%{tJspE-O`ol=wz8BG zT5D2DQ5?tBa1}*?&1O@b0D}+$d7eW`2>^)WxcW9u9mgTYSnqZI5HSE;E*G>hubshU z1^}+>KIj{{d8(5n`MIL?GymJ{_xr#3Yx?lvzv3S^%uG0t-U`|P0000dofo9tpB&vSe(my6iv7z4?7KRlgIL7f4VQfjSIe8fgOO%niVngXD;-p_zB z27q~<>HB^kVT52MNt6Iwk-f1_T!rz%UHQNFE$~K literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/footprint.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/footprint.png new file mode 100644 index 0000000000000000000000000000000000000000..6cf329a9b6fe8ddc5af18ec0b463c3a621a252a4 GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJNKY5Xkcv5PFKy&HV8Fq0Vafmh zlXrQUZRfbId0}1DtD^kt)<+CGIy$%*65jVtD-dkl{rJaT2Dvjju?b;Zd&JJpyf;-$ v@agCHn+JvWT$5UL>vKmgzlV#bP0l+XkKYGOFD literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/g.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/g.png new file mode 100644 index 0000000000000000000000000000000000000000..cf606a1950cd2d9c2a2c6a70ddab4fc5209da7b6 GIT binary patch literal 247 zcmV-ovS_=T! zwhaJ4CXNhaOtG*m6@LpNWl@|Wj;h#~YCo$(7O#=D*&)2%HqcDCZ_atOv4ky5G&RS)S$#4yZX@c^u`tf$Zj?w|kw002ovPDHLkV1kqzV_*OP literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/ghost.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/ghost.png new file mode 100644 index 0000000000000000000000000000000000000000..d791650bd43d5e8c800e59a4e87ae23a19e38774 GIT binary patch literal 382 zcmV-^0fGLBP)w6r8snh&L1e{|^HiP5d}n;nIYf3gg8Z7Qt3m*lgCh0ENy>-+O%p_~5U?ImbND zNs^O`?{>RyqLZ2!5_8UtZ=x-3tz~y?v)PPmA{6RLQc+b^ugI^~!DQkjc|M;9BXB$( z$1@VU%2A@BwSJ29ttMV2i=FosOSs)`qX>PMwARK_4?`(+6D7$|DvU8~8*R^j3BKE% zPA39DS(Z_a$X|=12pV{pf+R_BH2?ruEEW&Rs;UA2Xsx}Wkp5$ISJX63R0Qg}zB?y| z5LJXCA|$z5t%6&UBxkdk#PCKN@FwQ-IhM=ips;feA`&egM7xN1g}?89>zpG=?)UrK zyDZCo-jIwjccOg;{8*Z%1c1ZgFm5;O8}mOTlb(*<=V!&Ei?9zOBJ1_q>ryEN;7z&z c;DdjI3zD}!g2TzdGynhq07*qoM6N<$f&(I{6951J literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/guy.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/guy.png new file mode 100644 index 0000000000000000000000000000000000000000..6c105855735865b127e13d7bbcb8792437001c8b GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ37#&FAr*7pPVwezFyL_M{%#*q zy{WMEpxZA+iP$r@Cx}=v^G0zg$}3OwW+)IAmdKI;Vst08AiI AV*mgE literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/h.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/h.png new file mode 100644 index 0000000000000000000000000000000000000000..1ca9c8d8cd63bc743fcca635421cbb7f327822a2 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJg`O^sAr*7pUOC8hSV4d#K$rFZ z|IcE3x)dHAZRUFPC5X$HCv*G3xNmnwjP#sCG!Kj+QqFFLndvFiPFzA_H~ z^y>LZrWc~BqocDe4Qn>D%_)8@rLpwQx2&~uH0DJz-&te*J%ORaP%HUN_S&u2?l}4_ zog(0LK!Vw&Me_aMS*v&aeb|w4_Mn&Se&#zi*K}uSE?twI_C`wcQy SXypJM%i!ti=d#Wzp$PyFoL9gA literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/heart.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/heart.png new file mode 100644 index 0000000000000000000000000000000000000000..15756ec1d99d88ad0dc6997a37085c967e8a62ab GIT binary patch literal 274 zcmV+t0qy>YP){e}jV#Ns ztWONXfW7r!n@`4**>X%o#LNi8@Z1nZQNZ)OCsD06lu~Hhc4gLe-MIngJDd{)!DfAL z{$Z3-9}AA-h|>cAfY$o0Xwx+CegB$ESeE5W;Ur1G%vR=io5^{e@1CtO2Fy&Z>)vcM zt?B!I6#xK?F^Af2)d3=+s;X%D=A$Sg$8oOR`J6b8H$R}C0RU;5{>OYC;&0}HAP8sj Y08K~4w~*CHL;wH)07*qoM6N<$f=(`b5dZ)H literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/i.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/i.png new file mode 100644 index 0000000000000000000000000000000000000000..0295234051a9e33757ba46538fb11ec1c4057598 GIT binary patch literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJI!_nJkcv5PFI#i5DDbcZL~i@? zZ@KX8l4Zh2&gX0uKfz)4`Im}wk7j4b2~`GxmB07M)af?Nyqh6x{G4SoqZGr8NQ(p0 zc@xrBewSOfJYV7YoNxCYR%J2&-(Ft6j8}ZYH7{9(zbx6h+gxKbS)b1-k1yzHymo6h i!@GZZJ33D2+HYCoo;gGO_+Fq(7(8A5T-G@yGywp^Ku6R7 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/j.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/j.png new file mode 100644 index 0000000000000000000000000000000000000000..6f8cf666134b4295a148c602c1f30582f352b69c GIT binary patch literal 292 zcmV+<0o(qGP)CLp(#LT3Wy3C)16s+qS05H!pilV@2>~`@W&N(zq17i#TU>rvr$ANv{aUK0A^$kdp zOi=UmW6yzPA6&tuax zeRcxYT0EOXS(Z=V-{G|f()9Op5dkwRA|hi9wANHrRY-mRt9V^kWLZYbvQXQ$q_rky qraaGs&VNwQdAYxK`9x6^{R=-EsE27nFc8lG00003 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/k.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/k.png new file mode 100644 index 0000000000000000000000000000000000000000..78c92af86aeae30f02bb9dce74cf9659bcc795ee GIT binary patch literal 279 zcmV+y0qFjTP)761Qxvr-ddOjHtqg>t)To7UI|R+}{CY)Bw5hhZ2Xkw_$d4eveoJTHsg zP?jY~K9qR2whKJ7obUUd#+cQ$XXINXj4^jYAp~SuhH09hlu}#Hd>byPs*2WH)^)up z_0bt138fT@qJY*K^E^XqeeA6l0&Lrs&beKRE!zCH$o6>e=x+!BB7&xAAR^IK|1lv1 zUPh91&T$xq?@5f~co*#UM~KMrB5Nu4-m~kvtH`0jU$tRtZInb*9}p4b`Qt5L>4Jv_ dNF)+}$qBWM#KRIS11tal002ovPDHLkV1g7{cGLg> literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/l.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/l.png new file mode 100644 index 0000000000000000000000000000000000000000..5b62f3b175fe1f27ce16c6f1ffe9c62e5c062da8 GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJPEQxdkcv5PFKy&*X6aw9c3=DT$M>W& zYmDj)&wh9-t+BMBW6P)SnX&sLvVBc!vRPeP4BOKF&9hWzP&oGECQH#d4^71ug;_n- uQ9t&6-+Jxo-v4(m>^yGUYk2HWt8}t`O!wmONBuxYF?hQAxvXNH=K`LC<2!cBS$T_=5Iy1*LB6?@$k6o0U8F* zQ!6>=6KDb_PzBCCsuKXP)*6oEIMJoF>EcmiT!vz4gZ5u)e zFDfU6OgA#XqNPl+DXDf?7kD^r-flO)M*zR~0pCF6WPpp!%xgSBj!IYIzPmqgo);Ye zuo$Borf6Dgo?cu$P1CD_CHI$Q@i|Yi=QG1aW@3!L0CLVaj>9XO0?uB`T6M4_m2ViCa z0G4Ix6r|Eg&j^%j_zjR!@-Lx%-xPD-RJtVZv@_=Ypv`N nZs&f#_ifvpk?ZyP-_P?u9#2ywwGWqs00000NkvXXu0mjfx*-NO literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/like.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/like.png new file mode 100644 index 0000000000000000000000000000000000000000..c2baeae2e49ba564ed7482d021a7738b7f62432e GIT binary patch literal 297 zcmV+^0oMMBP)+QMr8%f-t0!({*dMt3w~EgHfPS5O62i)JpT*;oL>Ai z6U)MTOk8X~?E8LxR!Z5**s<>T&}FFW`lZ;R1`h2$NfH16=Ntf_lzLkXcgAsq*4mw+ zwr!upIOm(houy(McUhKh46Ng*o+M(2Rm+GP5E15(PTaTG1iT?`I-ytiTq;goyYF{j&Xqste0N@K0ML_@{$!~a~VXX}l zlcb2SX`16itP>YSL6V%NX>B@21WC4S%TI{qN@53;Wyxh(aJgJUTi12aTH|y&#nM5= z4tQUsh(JUzjw6gQIG@i@O8qmhjuo(CnkEdx0OuT%Btf3%@ZLxBL|Y&t&{|_0M<}J> zoP%=?#uyl5q6K_y!CN1cQu|v_*ENP=2>;GG00!=h2Htd1b^Cv;bvg{=-cZG=1dry+Q-EJhwzVAtrRaG5hf%hIt zDa`YXaU5~IUSCP~tc2=;a317&j$s%uO;aq@gKx_qk{rhoX_`Vrkfv$q6A>6=Ht|LY zc!sq$?1MvUL0#AU6NNCT_dfjZE`TJvt_uaoS{sT}*LC{}cwe=1jwHi3HUiOE@O<%H zZ$~6yjM@Jn0)W2n>Ah#uG-1W79fxef4+r2&7R2&JTku}<+qT8e&kvMRn{LI?Aj$jv z&S{!n-iK9H9g~6pu)YOX0l*_WmSs6c!1^qI$Ce2E0=d9es8x`nB>(^b07*qoM6N<$ Ef`)ecZ~y=R literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/m.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/m.png new file mode 100644 index 0000000000000000000000000000000000000000..1cedfdff0230c0e890ba379b63dc9a20167cecd4 GIT binary patch literal 315 zcmV-B0mS}^P)!9y^2@&ErTkD>%IViFa+ydK)h3Wl96mR|CmjG4@v%u50!5{X3Oj~Ir5 zwmWdWflRguR8^@6(*|x2?TcQql?*RZI1T;;9 zt0G8pSr!05UDr~58P7W>No(z?0AtK)Ug|#}>_Ff5$9MJxy!VHQQtIUSzVA|fd`N<- zsydC!vP7QeAjx%IVXZyp#&N`t6}J#;=`>BzL%D6+TQ`mYPnTI2B$oz;VNU7@vpYfY5jdMULakw_%|oln*Z#LNQRL literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/matt.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/matt.png new file mode 100644 index 0000000000000000000000000000000000000000..27352e981b4b5dc1c439651557bcb1234071074b GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJEuJopAr*7pPCdxiV!+|@^51{= zkLjD2d+ut<+Irz_V|idtTVjJ&kccZg!wM}Imk?2g1J6^`;)D)7sm)pc?OykEmK!t9 zE#XdhYW7V=V(;%M-<~bjUL(AA>kOI2T{mZGxVQDN6)m$}$n?%kMb%QcBE2P-kw-JB zuW9Nxz9sxiL?0ZzS5Q@>r;$K6J|#9s~;Uy3n0%hc)I$ztaD0e0sv)MVHE%X literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/med.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/med.png new file mode 100644 index 0000000000000000000000000000000000000000..05ee915d2a7bba42b5e9d29b86d24949a7ed7c5b GIT binary patch literal 294 zcmV+>0oneEP)^~U|E)ZE+VH590CCPzQ?+*2#;Mv007f8;YvB)GS74J#z#yfmw=g5 zrO#1S6+*VSF$UJ!U-3uzs%LnGj~lpzbMF6Yo_PwDA_4%V)UNg3gPB#^w(#DQ)|#}| zN<`qCBW9+eD3bP0B5W|@I6_3Q#Y3Gj=9biu_U&^%_Lf%DmRK%d k{Yq}#)^q-h3_tdA|9)%wMf!kaE6`{LPgg&ebxsLQ06^z4WdHyG literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/n.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/n.png new file mode 100644 index 0000000000000000000000000000000000000000..28fec87ff036366d0d7d988a8349ee97ee75653c GIT binary patch literal 254 zcmV$P`5(Ns{c1+|Iohaz(MUPNSBmWPty@{dUrMNz(v6A;zH-zw?!bpQYW07*qoM6N<$ Ef=*CwBme*a literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/nay.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/nay.png new file mode 100644 index 0000000000000000000000000000000000000000..74551226f0c081b6f931c152db54fed4cca47125 GIT binary patch literal 883 zcmV-(1C0EMP)?SB5Is_qNx4cY3#+VDR{8(`MWu@c8%$ z$8qR5PNzVA48XE1lH}9V698a19G;9c4MkC4G#V-5@pz1~Ea7<`vMj^%^D{ipqiLGG zDx%OV>)~)v>ppfQSri42$KzGIixt@IcFG_OLqt)8!GE|F!1=!6a0p%3(ODa^>_P~p zX?kDz8X(EVVxdHPb2CY<*XvH@zJ=z|&1N%olovObWvMoPet!O%Tqe;>NFs`&zx~UP zcdNF6NYk`)1;Q|-RJ>gGB?nF-Y;}R`-&;}3c9q9=4>{1j zq*@P%&1Q4asbyKTEQ@g*_d2d?iIAkM0)Vr@a0bILNRrFtl2Uy4k^_KDVmh6+?}AHO z`2PN;{FWpMUDy2;`EIwPZQB$=uq?~AuRPCN4-uZB>yY^gvUQtD>T(eT0bXBURWPpW zqAW|0#Beyo+uPgC_ux;sCfb%$-}hOTB{WULWHLb*hIn~-L6^s97xKEUp=nynU+Yyo z9*+lgU1Ktt006ez?LQ+2fc1La&7Yif63gYX_xaCeGft;d)waFoh9s9Sn=H#Zja~9| zHK%E+F1fphmNYJk;=C!;ZAPBncdqL)&+}G0ACE_Ve0==6d(a$2BxzX|9mi??WpiDZ z&6~Ar*81%&P{LWQR@8MJgTX+xtZABfe}Bi}aKOXELu-E*`~m%y=o6n+z<>Y%002ov JPDHLkV1nHss)Yam literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/o.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/o.png new file mode 100644 index 0000000000000000000000000000000000000000..454be573bb67c0436839e44f135fa4df4a1c88f1 GIT binary patch literal 279 zcmV+y0qFjTP)}>XJ*Xvocw?)wQvt6B08(nTB{I3YTLX&z|2W?B9hZK4FHVecskl;Sujmg*8We& zd1Q=1RaL64Yt?n#-97I;+O~bVqPJLU0RVm9BgP03!O_Qpj{qQqfLoV@@0b|?AR^ZW d7e!HgrC<8QzBnm5hhzW%002ovPDHLkV1jLTd8hyY literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/p.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/p.png new file mode 100644 index 0000000000000000000000000000000000000000..595da98cdab4741ea0159154f118a33685a75614 GIT binary patch literal 249 zcmV~yNagqe77IDAAYly@88GF cz;I1=(QA1rOUJ)9Kr z1OV{og#lnbpVya|&1S#Xh%p8LaJ$`*Wf_Qw@;rY`@0+Nq>hp>Kz~OLsN$gdq@1<#q z{eBOvbyO3>*d~~nn3IRCzA;SK#S|o@UnN=y5wH1R#8WxVwxBZ+l6w@b;jK9 z_n6dS0Kgd2Ifd35MNxFx0U*!wpb9|+Hk%ENMx*XvrAS0N?Et7O%TS3hp)>Z^E#woj zd4dXv2(`s;w_B{&YbuI@M1&TL1)WZ(7st!x5=tLObBZ)g0RYZ9SZlG{?EnDFGgVjk=a@s{4kqDJ;lt-$Kw&>@tCZ&@Uk0Y9uJN$SXC7f5hY3Tp|`k!pH6H2nDl%; pzcqE8A9vX-*7l?7>FN0wd;#0=wwNvs!=L~F002ovPDHLkV1gOB)Bpeg literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/percent.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/percent.png new file mode 100644 index 0000000000000000000000000000000000000000..303880cb54e847b68cfc71c7de8fee5558f72558 GIT binary patch literal 263 zcmV+i0r>ujP)h zHb&8*y&}vDsH$qyg|6$s%%Uz)9LJazvF3<#E~F$Y9!S#^)>@BK5G|3b3iPDcO$ecw}AmJ8d*In;Iij4R>R#+cQY zFbo62SiA`DJ(zjZ_AJYG|B74eWj>#8nnu2WBWnP_TKoRXP!vVE$`_}8+b@Ep&P)IR N002ovPDHLkV1h`Qa|HkZ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/plus.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/plus.png new file mode 100644 index 0000000000000000000000000000000000000000..6013951f110d4d5bf7c8a94a7fdab6ed06ae24df GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJNuDl_Ar*7pUfIaytjNQ9A!66> z|M!;*I2N8&xg9 z)p#-zn&d8zYt~pzFmMxaN;T_7mZ^Q z>-hGuG8lY*pZB1zcJ{x*vRUiBQ*vekUB}?*>gTe~DWM4f D6z)?< literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/pound.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/pound.png new file mode 100644 index 0000000000000000000000000000000000000000..4f257f9d21c5c00f5a0878e5356e2dde77d11238 GIT binary patch literal 383 zcmV-_0f7FAP)0Kc^RMNmHS94V$J7=Z0jG**!3PyCM@46MvC3 zP5D)Ux~_W#0Bx}s-G(TNXxmn|Z9I7AYyEIIpp+VSG`4MXJRSkKUatUDRfTQaWLd^; zx9eoi=X0;vXaqq(9LE5BYzA~Po6QCQ&-3topE!=q$b@0o`=*!6g(OLcq6mPdX*$VK z1%?&{a9!7Y3Wg}lQkKi5cHdJ1zVF}F@;sOMeE!UGdJN6<*?E8a1ppk!AvgvQ zfKm#8EXxoPY1>vT%d&I@9%jGazeY@StVzH3bYGrN&A|kijZSV{T!_fQ{J$3>_MmmT*&oi5VpD=n0 dPE7oJUID$4aUKa#o*w`J002ovPDHLkV1oTyqjmrQ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/prolizard.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/prolizard.png new file mode 100644 index 0000000000000000000000000000000000000000..f2d5b497572991138b2b9047d739b39ede7dc7b9 GIT binary patch literal 491 zcmVbU-I@0Zv2E2o)ev03r?K9>-eFvR>?jdz^Ihie|mLU8a&IHu#P!p-~)^Qdm zTyx&iE7nwGJ#AVWEvOZ@c3@4WB!=;&HI+q5Yx0;pf32Bj(k8dBMUBYC1uf1(I)YN- zN0b(N5E0Eha6X@B35Ua>DDIuGl9#v#*PaQuTrR2rDK6(N$PMK^xW>%I+GWD8(l88( z@B2QzVzoITgxUI+T+2|U3#BE8ImYR9ngDSGtqzuXrD^1x=>hG`)}Y1%rU}oqyN1y%oqT66C`x~>BNIOpKKM~t!gB5M{9W1RN;J&wmCjpLYj=Nz`% zZL^4%U$S@2z4rhBzRTC5c><5e1NqJw8drm6)8r%e-orTu0Jz<5xZm&1Mr@uy2!WQk hy@XYTq~Vqb`v#kls|k&$3@88q002ovPDHLkV1ihMah#x3#;;ch`_6CqG08hG7`y3+8!-F$U|p zqG=icK$gTfaJG-*7$ri+CSR5X!!QUU5=BvX|D7l)WpwPfXsrPNUDw@KX^crXimSGN z;&bE?>Zr92YVEdd!de>|HXHzG+t#bBsw!_0iRkwuxNEIa3j4mp`6#8*&i_h;vzKL= z_7(tu+j56{_kEw|5D^j1)OGzDL2>~u(KJn7#n#$<=lG7l3t$+AiRB5f-2K|lZE4;B O0000Pw?aHQA*7VDcc!&ocMUz9YhX>_igQlnoM)E2hcki4><~mWyX1EOkWyl; z;qV07)Kf~`?f9t>0*o>HR&V(e{7EUb_u=_(?H3%a!(KxG!h1j3pKtpHv=CbZ9LI6Y Z@B(U;rA1wFQ@H>D002ovPDHLkV1ic0UHSk3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/r.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/r.png new file mode 100644 index 0000000000000000000000000000000000000000..7d803d4a86590ba9fb3114b66d5e945213e1787a GIT binary patch literal 298 zcmV+_0oDGAP)QwSkW>)nPV`@W}T97mF*Qi>#bRqyLg2(2}eBtaa< zkBO~0Njg6XlGIv1O>0lZsW|`)!|-H8l2Xdg1Xz}ZT5BH1!K$kGldD>nyLvG>f*`ov zd2nabG)=HM-Z2L*z5-(m0U*mVA*Ey(hM&3hmaglllzLQPjCrg7%h(U-RWOpQ>)LIQ w-^59>EK9a+>n6n6>6)f-Ux&xz@%$UU0brok$CR$*>;M1&07*qoM6N<$g5flV*Z=?k literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/radiation.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/radiation.png new file mode 100644 index 0000000000000000000000000000000000000000..33082e4d0c7c539dbd636b947429bab366725919 GIT binary patch literal 462 zcmV;<0WtoGP)?vLQGrSc=WQO%=zuuRa}qOtt3pqD&%M2Efj4j7 zyaN2ky?P0`moJ=NgT^Hl=*!&-jMu_A1?(H*lW#3hW<#K7}@;oa(1OOyS^5`<(W4GIVEBn{xW2Z+^^l%k=--0fD-^XAu zz+$mLmSvAF^B6@@nA-i}(8Mjf__47@TCMaY7ea|P>T{GKGXMYp07*qoM6N<$ Eg89VTNdN!< literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/revolution.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/revolution.png new file mode 100644 index 0000000000000000000000000000000000000000..f278784c28342b73543a5e61df3d0bfde6754114 GIT binary patch literal 300 zcmV+{0n`48P)nL>2cn>Uu=OI(+Eg$zl|4etR71q6JU}60000pFo|lNPCZyb$8p1ggf^u;Vx`jOUzf?0KG_ac0IUcN+j; z24w(eE_SC73l3uicplFfV`$uJ{T8?;bjj5e%;owuxH3cx{BHhL5gl`8=;Y-!uawwf z&av+46l;svVa~wa{;Lv|dbc8YPrHJuMyuwl_?ypxaWSsIl{xuKf}GsR>(r@$yGAVk zI{<#F%5{4xC94MfjH^B6MV&g8-?3H#*L7WwD!U`ood5;b96Ar*7c$JDWQ45{_#5BtroxTbZ}$2^RK>J zer*z#P`8I|bu)5INAMfL5fPjyGXwIgVj7>B!G6SI>o6Y?@hDj3bPSY@W9%*?j%T~6 z;Ru)ig)LKNByJ@5cRWq%u^00000NkvXXu0mjf$ob=m literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/rune2.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/rune2.png new file mode 100644 index 0000000000000000000000000000000000000000..fa522c956a0f8902393e78afd9e568918b81463f GIT binary patch literal 545 zcmV++0^a?JP)cYgYgGkjh-!HO;lWnxFa zOX1cDRjBf*k@2U}Jvvb-Rg_kX?yu)+4MPjW}ZrWk@?nSzS6z*)FHfpr+9Ur9o^RsPg&oATdrTgA2E!pFyf9wIC}8 zTw6na>7|H>)>=a$VjmH!ATzVMf<)n=fKhPJVVreO>8=WfnR?_=B6G#2>%joOv6#-x zTnuF9Y9TPtd;g{n2Hly%Uk-5ZGwo{l^g0F>401go$Zz;nm1_aI<>Z_Fh6$U4O_o5?!c;kcJgXYRCfOT j&*`gwtsKE$|2_W#^5VPR6pBGN00000NkvXXu0mjfy;T3z literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/rune3.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/rune3.png new file mode 100644 index 0000000000000000000000000000000000000000..a364267c939f1ca5b1c989e4502e65d2b8da48a6 GIT binary patch literal 501 zcmV2-Hj83m+Yy%>FrAoDQIuCP&iL6=a4Fb+@+zQPpK*5lL<5oUid1qgTFD0|WM; z9)Jn6Jt0EDO?(E}^UeAza9qgdJP_JuzOKNlNK}>DR{^Eq-bn<&#QR}BLlWK~D*?0d zKbEbM1XD!yw|OLh<-nduN#Fw3P%I)ZQFCI+J_xYXBbkaIBguTzEJO{%!112}p`Mk) zXXD2!#u$ChS)N>T&J9FF8m?nmGU>g){nM^Im}h13z*QD(?t#w3upRsCK(XvZcLuI~ zmB25mE*u6bB286SRz_7_BC_A8YzIVJ%bc)GMf0e`9kJDqooL?_Mr!K;>|$05>-b0_ zy_Lw)Z#It)OAxH3MH1DR>C#)!mjF}6bhqhd2b~{3tb`h+xPZqoi*yt$rso8_Y`NFC}rBdgjNID#0TX(U|QF=Hn>x6A}zO0*GvHvPip^ r>De=0Xc_pwf1DnDwfYFY{dxWb_+Io~j0@VV00000NkvXXu0mjfHh1Ou literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/rune4.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/rune4.png new file mode 100644 index 0000000000000000000000000000000000000000..8b74187f599290561139841be079b17c870734c7 GIT binary patch literal 534 zcmV+x0_pvUP)Ow{+3+}y7-P)dd&|sA`#|4X-HKQrV@&Mj^X8mW_kP)+61A!N zn&$?SP|3{GW*MGJ*V=EcS(Jztr4}ciFDY1g4sQUa5raM=LQ~12QTaZFUqPxguxAl* zS#zmC8ZK?~ln(dKDR5omQp(-*;f2*r2k$u*nR&bYQ0?vvU@*={jUpnd1Dx#MbX6PQ z2)qG@?9@>2y`eUk^hp5W%gm-lDpDr_%`F3BYE|Qx z?LdNUwYAId0e#m{@`duW&LlbPs=EPJq@a8ILBjS9>-NEcyscWwwNq=?&f)53d)FCd zB$Pc%6)~5FD#}(IiB(wLO|y6vj6}9 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/rune5.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/rune5.png new file mode 100644 index 0000000000000000000000000000000000000000..7fdab1f89fad0d89e38ccc1c0102df68c65f0ad9 GIT binary patch literal 541 zcmV+&0^=@%3x7Nxk_cQ>& z49Wn`TKu z;GKq3qLzS@+JS5HX(=)#v^>4{IBTts``hg{A_8%G-DduojWNFC9eXFEtFg1Jq>e;H z#EFO5TMoO&OQrW7wbrAQa(l^S{+WF+z@jn6?c8Fn)_T<*W#i+e;F<%zhayhStchmb z&VX52TnVod>@*_E1U0Y@{)mY3V<;Qu;KQ2MTDcL}{b)c^?HL9Gpl-tT#z!4s*;*?| z>eMKulrcuyaNH}%tK~e7oIkAzdNSt=kcjTT5E-O!*#@Sc5AxNaIJmXGub7h zj4|haE}vdRt~Zt>c9Ls6lb_| zvr#rsp^`lzQW^(10syb^I>x*GN5*+0Kj(Q~%lj%_uZ`z9_IyS3HHj=(J$Ih7jy#6k zlElh*L_CaCzZ1tw5R8>LV-Q^<*KXTsr=A6-WId{M5X_K@& zvy=5zqw4f5p<@0rL=4N)}_%IBNC+o8%4=*Y%z1k6m_{fYn! zVIz{LGK}O>RjrNy5qRWH)g-d=yq5a{*Ej!nIyeWe2<+bTe+jORivYsXg%3w?VxT+5 zJT^0VQ~{ub-8GECNeEzVjG;LZzqnx_LAp|`JOgs)t4a_g;Jv#)BfuoMc29x5*oO#o zJ)`UcTq+3Z8^F6U#_e6x_LJ^)oJ)qwZui{j&oZAZSYydtq$ufqLC*OtUi@hP)Xs#1Ua3kH)(`fa3c^qhNps|7qB&o3B;fqy1G zjw1npzoG);5sE;zjeN~tS4Upc*gB&oH= zvMh+A2vSOfVF+Ukk|cSzA3U!?lJ3##c05TMW9a@VEw_mujg?XafN7cz#uxy=e!uVL zDy7`kV`m8=kf!OVmRLWuZHv?C3nuZu-Z0g`I7m`xCClEzZSN6?j^ZspUg9Csu=4A%#^#Egx8DqLD*1|bQUDt@? z`0j0>l)`qq_3QuWciaQKOb7sVU3cC0Ool{-}mkzj&^caKjQK)*uy!0y7XQEA%sBf0>)Dyrl&2d*#x&N*j5lGZ(5+J&VQ0zgX16rm1S z*A)P8-?!y_y__?4oR z_(h)QEX$I8-+%0tWyv#no^u>W#&OKLu1S(l1=zOjZsD>lmrZYnlBAUKXJMq24+HEC zZ`W}g54C&EwrwQIq9{&paPRRZguuG4)LO%~Z2&;qws0H=UDsWPZ<+>ano?_xD2l$F z2_dXUKVMZ9AAYnaO_Bt@??WktAP6u`6Fkp5)F(+o0B~IwVHm=)th+O=ZvSP5VW8If zbkID{zaLtedp)8uElX2M?~a! zJQ4(ftX3=8Y&MRFh*E0WE%Nt497-wT zIJTw(@O^*O{72KaEdWW9j5gm#n1be8*Yytp#v@-T=KKC&qE{i$aey!kKNnCG1yxmH zZouEf-flMlw%hG@$8tKI&{_}9+{Di3^E`g&x{mAhYQ-E5hj~pXA`%1v07X&ETim<{ z_xqhZ&+$Bup;Pd6OuL(=!SlR94@^4$zn%i66lGb??+L@~*Yd)`!lyg{t`UXj9Fv4- P00000NkvXXu0mjfj8mqg literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/slash.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/slash.png new file mode 100644 index 0000000000000000000000000000000000000000..95b78373098a913337b9a84d731ccd44cafcc489 GIT binary patch literal 246 zcmVc%d$vsKsKP(Fh?-YbGyj_;J$Be+tzmdO(Rh6UpAoL wzeEUuIp_b+-;DMD_YG5!$8pr^-|4jH4e3vE{W=9Lp8x;=07*qoM6N<$g44ig!T`@W;90JPRl0S6Hg z>7tU$0($SLD!q5$&ru(fF*EjkpISq{oXN-i-!L=G3{@rPOwQNKUe2twrk~D!HWCrs z9W&$oesgvFFnI|h0uiCLhKQW;QVOM%a}qO5t>AXMrQ;Pu#M!XckB?d__xpYNbNgo^ jBE}eBeZ`B#VzKxIhj*}!GJyTg00000NkvXXu0mjfNb8m| literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/snake.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/snake.png new file mode 100644 index 0000000000000000000000000000000000000000..8dc4425a46757a47c7d7f0843e47a1b6bc802525 GIT binary patch literal 301 zcmV+|0n+}7P)JV}!9 zX!x=$FM(axJtOfcNGWx{1b~RhIF4(Wa}E)azVGiB7>4235HEK-RaLzN0X#MbA|hIA z+O`G259MPW@azMBo&k(8>#Az4ua`5%Y%aCde(c2A4t<>!7=~eUj^kLIb3{=T`O5P= z2S6!BmStzJKF7YIaU40SvMkH%o?;*7zvQNA0PsR}U2nwFG`&v(V4ml7_};CopOsq# zjwp)a`fae*9=<)mrLBKQ*LCc1&K=4H0)LKgv{xLbBD%bB00000NkvXXu0mjf9*cp1 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/space.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/space.png new file mode 100644 index 0000000000000000000000000000000000000000..b1a507a6118051e4e577a90e762bb5fa98bc7007 GIT binary patch literal 398 zcmV;90df9`P)xaCJ}{*3qwJ`5Cmjgl|bbomc+YYR&d(R%<1E_z=jPgLrTe?8X&pI zfHl<^h9Ln!2!Y*hha^d0+xFy`)!=#FU?z{pV=}{~Gq9K_&-1tVYNA~@j`K08Zs7TR znj1=zWKpK)^O>qo5Ck-yl`#S-C5M&)0II5LO&Ey-z<$3c02D<*DJ6%X8@pUC=9w#u z5jl?26A8nRaUAzdsqeb3zcRmc1ppUaxN_!S{UvK$c}BNmbCk5+C|k*L2s| zQ2$lxLKHwTI&)x z&`}`D-hx=mIbVFNnn$Xu00&WU1rrg72y)ISrJUpXRPq*_l^oUp`#c3i1pB_9#F%Jr zIYI>#+)mcOnsv?@B67}A6?Dwbk80?`%mPP~IKx^iLH-gRRv}wQmPAyDANv6RXxT>r*zcW!(;HEgx#wq}U2E?8Mvoh3XPyG0}l{wFu!SyGSv aYx@RG;p%M#u!E`q0000D^C7dQLT-&?CaGjlpEB8$ahxd8y&)eu)V z20?%)lDM3J>$=3uOhn}S{%t4z1ismhuWJ43z%)$&04XJ2uNSs~`@SbB)(*LB!hfBZfS!{-`u z8#D-lwLgf6=6MDHL{apa1j@2R9LI0sI&hX{AR-FG5XXLagfq*Jov-JWQqT9mvMf8n zq9}Gj(lp&Ak|c>y0&KEKi!w7eO#>kWIgUe~=e_MeR<2*mTj)OcLWm$}`qS3#g v?|TA(s;Z1C5<)OD^Ei$s@)nE5^1plmksdw*>>Bf(00000NkvXXu0mjf8Wove literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/stickman.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/stickman.png new file mode 100644 index 0000000000000000000000000000000000000000..5081c38e0e62d42aa839fec0cf73bf6b043a5896 GIT binary patch literal 405 zcmV;G0c!q`!0?1`8*rF<2aaFCnAdDc;5`D z+V>+u?z%2?T_++U(=@5;Ix-AH<87iS5~2P?(=@9WZ0%hdzVGApdJUvu82)l#Sr&L( zrOtVPgX1^=fU+!ywYskN{UgTcE8>z(RaJj?ez{y$Hvz!&`2-Qs^?IGOFN#7u@}EHzN{o(6an~1hTI*0fBU6w)&eZSas6kh`GSVn~K5oB35JbRueN+UKC0)VDz z!wlHAt*`(gsBA*YDoLK_s;JiSwKlxfxr~T6r*vsC@g`r800000NkvXXu0mjfgbukN literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/t.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/t.png new file mode 100644 index 0000000000000000000000000000000000000000..b18ee7981b15df0ea72eda7e43eb58dbca3b837f GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ1)eUBAr*7pUNPiuHV|lg=)H2s zv;Y5147)r`{P-e|JbfFWk-PlXVYXAY(QQwx_ceD&B=`Ija_A9k$h|Fbd}3*AWtmsO zWfPvmAB04l7!o4IcCE7(sk0TD7qn=V*2jC@#pgQj%w~{#K7aP}nR7l{mew;Zc>jA7 zbH=-PueR0f9-5h-OBrr$)7@SFR*LU0^ZR9)lXk5$^?&i^cig%FVdQ&MBb@0Qs0&R{#J2 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/taser.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/taser.png new file mode 100644 index 0000000000000000000000000000000000000000..73ffe378ce3fe9e2e03a9b56c1f92d6a33b28d75 GIT binary patch literal 301 zcmV+|0n+}7P)3`HTC`2XKWLNw7}LL`cc=tA#o2I7qP(D$4jXH}r>ZAwc>B9TZW5)tsjJkO9) zf-&aLN-2a8Lckb7-QfP?UOoNYYk(J-;(|GzubaX?O}`|&vPHV_uaPbnOQk2;7s7H zoxWQ@*L9C?!mT3yV-=$`O#^G~v+YeJ5{U@kUjjft;DI~800000NkvXXu0mjf)mVe` literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/thinline.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/thinline.png new file mode 100644 index 0000000000000000000000000000000000000000..f7da33a766ea0935334c3ddf65b979d66f921467 GIT binary patch literal 334 zcmV-U0kQsxP)Sm+Z+IX)*vE!-?tfpI!2`wq?ABdfCIR$3&Su_ zUZ8?VMBto5-&1YudUBwY(#D7>rB}kpELGL}zBPo<1|a9GA%ylPdE2&j0QflN4V=O35B=Sp4gdfE07*qoM6N<$f?`jQ-~a#s literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/toilet.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/toilet.png new file mode 100644 index 0000000000000000000000000000000000000000..21c0043fe8680427ac1f2c4c06e8672ae869b4f0 GIT binary patch literal 436 zcmV;l0ZaagP)(M^O99u9}bHJxxfZs>F(O5AQY?+mnM&CA~Dbn?~5 zVzFo(_cGAy^}G%A`+e^S_7`cT5D&c-B4i>k)kM=Bni?qg;ELt zu;1@79*>12jWG}r@zroL;ELUD7w-s2@_t8rf-#1Z$>c$>EK47Wb^}$cwSM{6tIWJw z6V*Ty@n*AeHV}LZ@;t8{OOoU#ZtH|zaLvGWyZ!tT)RA8<7dCyrg)GZ{ky&dWZo>1p zF(#e?V+`-p+lD$*!KldEnhOBT=W_zUdcAI(>(z=yMDjeRQc7mC8L!tX27>{P$0J6g z5r)Gd0Ki%crIb83t|)L#D@m?atIxcQV?N7+8c~|2t#h>2A=K`ePN%gy^r`%}3Zzab edg1-!PvZ+?L{^{H*Tl*I0000{gYW-TDv~s45)ng76^+>0Q-!+ewiUrkzDr@!NhZS&0V0t|B+|j@ zbfVUpB)Q#gNs`VvlBBhk*Xxy1N)|=&{E}prWxU;P6hiRr!}t4r&|H>fP|va~s5|F| zhuH0QLDOordg^sEm&@g;kqr6{hr_TCRaFHIwZ2}j8|(M`od95r3HtIp9~R)P+Wz4+ za3^h5zDwJFX`A7AJbvF_}!D zwTAZ|^Z6Xp=@dzlBy|X-6vpE*(lo_vHUj`W9uJI0qt46xq0g<(=QB5(O|J$9&(zn4 z@Y7gphZ*>Sl#r6kSO>EDk3e4o?Y3sqRz2Sne@An(qK+blQ8D-cs&0E0NgJ5<46z@ zVVWk!IY%7FFi}e36leC5oc1(Zi7x4lzVCI?D2mP(uvPUqj@LfNySpWareKSC0;H4x zfG`YERTVxJ;hZ1{?zgb60RV_dZ@PK=nK4CCz>II(R-f}c2j~1dN2HYc2VK`$4YvGd zS!SJ`^nzJ&UDuWaM1&+sFbo42do3qZ*euG4fMvx^)2up?rm4G8Toa&_S`{LMupBDO h5<-X@O@+tv3!buDA@K|?MX&$>002ovPDHLkV1fg^c1!>O literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/u.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/u.png new file mode 100644 index 0000000000000000000000000000000000000000..3b5bcf2dd821e4cbba07c93e4f78c97e7304d3c0 GIT binary patch literal 230 zcmV=x@Qk+4>CIv@-)7a}2q5Cs6BR;^dbJmP-`+eU(^95&8 zO4PP(t#ap%5&!__+;a(ZUH7wI*Og+7q?A%6^={cFz|0tip=f%df&{)(dhY=MIcJ*Z g`I+g35JLRJ8^#xWEoRPWlmGw#07*qoM6N<$f|v$ir2qf` literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/uboa.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/uboa.png new file mode 100644 index 0000000000000000000000000000000000000000..a44755ca31e68ae01705cebe19282bcfdef05ca2 GIT binary patch literal 302 zcmV+}0nz@6P)NklGxOEIBck-3$e6+uKr)sftN^c(xn$I<09v=K0q9rG%$H_NM5&C;Qi1_A zNf5=f9sW=L{bxy--^5XD;8VsbaHV^RoX8a~7H`pt*F)E@6g<-ss-iKf62s-jzt!%X~09 z_x6P1I6XZkhP7L_YfcF=I2IxG`z2dn_KUsA=QOqcedg+WoSGJqt$9pirM|EegYo03 zCevR;1bMC4D#Y;V-sIwUyB7a`^5*>1Ag`5og=2rD)_nV>a2Dt`22WQ%mvv4FO#txh BQ)>VK literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/w.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/w.png new file mode 100644 index 0000000000000000000000000000000000000000..4b4535c8c327c61fe3e208beba615b7e439223fa GIT binary patch literal 281 zcmV+!0p|XRP)wH8M- z%#6CO-)b(Q=4DyZFbuo>Wm&+?lq8ATYKVxGQfgOpB!C}ctpxyVhkBz&oO2XKQONjk zaL1pS8C6vQ0OomK>so7MSr+tMK^xc@Qs4J$7^2&D0HA4_^S0!Z%z28P>`Iq>EWo00000NkvXXu0mjfW>$TC literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/x.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/x.png new file mode 100644 index 0000000000000000000000000000000000000000..47e1ed3682c087ab6e767c2728196c727dc4265c GIT binary patch literal 245 zcmV&ar5peM??eJV5M2b^xDms2(-v)2;>EO^dsdo=Gvpy+j4|e}w+55RHOI5g92!Y;v zZk>hXhGAF*AKi+}<$2DwZC8OLSrmo3z&-Xu?>*;vmJq^fzX9O2B1zA|(S9dC3o!xX vIHoJnG)>fxr)m1_jrdem)qe{ZV~oZF1O~4E^ST2s00000NkvXXu0mjfUfpTf literal 0 HcmV?d00001 diff --git a/Resources/Textures/Constructible/Misc/crayondecals.rsi/y.png b/Resources/Textures/Constructible/Misc/crayondecals.rsi/y.png new file mode 100644 index 0000000000000000000000000000000000000000..0256bef50aa0152f6322d41ab314293491f5e63b GIT binary patch literal 232 zcmVP)(}148t8|%FXl4X_}tBcw0?w{z^pXoNN2_BGRS-l1wSx5?=iZVvKj>*XjGd i-R=P#enLvApY{TRT6wHLBL@!v0000=eQI! z)H#Ruo}wtQ)&kHp4FKMI0P4C9bBJLW04U4yX0>Zaf`mWwmGi#UBI7tdoL5!V=YPaJ&jFa{`Mml1^xC!s uAj`7zSg`vsO%rLFUj6$)DppFV-8lhY5c0|D7XBds0000ziWtFC;WcP=(#eBf#IFirUsUl$YQ2spcxFF Lu6{1-oD!M<|AZt8 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/crayons.rsi/blue.png b/Resources/Textures/Objects/Misc/crayons.rsi/blue.png new file mode 100644 index 0000000000000000000000000000000000000000..2e974939cf72a3cba92da5cff65eb2ccac5dd2e6 GIT binary patch literal 118 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzTTd6qkcv6U2@ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/crayons.rsi/clowncan.png b/Resources/Textures/Objects/Misc/crayons.rsi/clowncan.png new file mode 100644 index 0000000000000000000000000000000000000000..4afa0b60d22789c5edbae9dcd34c0ff6ac8025e1 GIT binary patch literal 393 zcmV;40e1e0P)gW+xz~}0nDaN<6YnJ+D#(^b%;bM(E1kbYh%0a+9q1xlC+W^LalFcrG5ao?B24N z$@++PV71CdexLVm0Q0A}gSUsCvvtg}cMnWOeZ>C)fY~}OQZ5J3o_hc^ zYC4VDCXP2RcOrnJrC|C|;vqbyL;#bA*Nk_v6aXx3lar(%)#qd(uFZWRfz74F8aX@O nu;b;vjEDhJh`(#e@Jax`#F=%Fy~axx00000NkvXXu0mjfV6m*U literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/crayons.rsi/clowncan2.png b/Resources/Textures/Objects/Misc/crayons.rsi/clowncan2.png new file mode 100644 index 0000000000000000000000000000000000000000..8861fc1b03b48a0cf257318ec165755545f417a7 GIT binary patch literal 442 zcmV;r0Y(0aP)}*l-kCjO>J??4a6k}0xuWtxrfVn_g#n(Awq-za2&^V9LEj9F(*x|R4T5n>yvY+ z0=$B@ZPRQv1BuWi#q;?*@pv55Gy$+I3#AlFDQdNvFV2`>0Uo;DE|z6U(}M|UG#VI& zF%wfti3Er|kV@4jE%(0tgStq7r~{b{v)cy_UQ=7(C|$q>Ok+N`ZxHrDxs2I!y!DEaa&_S8%5@2M6wQO<+Dk8 zyFG`lyHI!)2@nq=%zHitZ=+FKI)u(ZL?h~eds_t{NrEJaQ8085*vGi7@%xi4%4i7e zfhmOPftTSoJLVnQpg#(fwnFy6#rbTYH~e1@e5Exy?=mLe3ki&t62rIz`Y;|rN}c## kM#KU<5!3&Y;t>FT0F{}80#^tX=>Px#07*qoM6N<$g7?|Lx&QzG literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/crayons.rsi/clowncan2_cap.png b/Resources/Textures/Objects/Misc/crayons.rsi/clowncan2_cap.png new file mode 100644 index 0000000000000000000000000000000000000000..3deeba5f5c2d4c664b4564bcd9d4000afef05e83 GIT binary patch literal 529 zcmV+s0`C2ZP)fwWNyBDhjl zy3ilcE`*3XXSymVDr6JHCbx@8Y+_Yrt~FgWXPCvi+ z3eVRNC~I=jpD^>rkVK}(I<8GilNC~!s{Fqq05JI+#AifUAf3qKdM>eO3;@@2ncsiy z=f!7)d=7co9Edj(DC^3XxSoq;S(jtWvY36gacj-p1OT%7Ht_m}$qkPrQhvU^@LvR( z-t3SYoAVX~cHq7c+A7<&#Sw?AJ0ZQE#WpsMbPgEn{bl*dNra{*fuSEN0ZIpe_7zSGNB%*Q z7=g2bibmytEYAVZN(-&D_`#a@z`+EvS33H8M|CvZxd$px%O3b%{7HZN7fj*84=qbHx>FSRtqSLs2po1uLIy0GozH- TG;v8z00000NkvXXu0mjf|BUQP literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/crayons.rsi/clowncan_cap.png b/Resources/Textures/Objects/Misc/crayons.rsi/clowncan_cap.png new file mode 100644 index 0000000000000000000000000000000000000000..67db91f46998a65201e241efcc44aef1dff00f12 GIT binary patch literal 481 zcmV<70UrK|P)wKTRj2*wFUO%XIzGzU$ROK?%! zxd)QhFU8<(5XE1~-K*7*-{Xeo%kzBS?>+DP+#U4M$A5<+RTW3HT#GoVU3j*E;D=WSWC)4&>P|G?y7 z(p&JdmEryM0jpe~I2Q%-QaW9|h^%sdL!^cLmKiFBV+>@t3OKCe?jknI=u0DUr-@ z;OonVavP<-N2i%RrtRK-bUOPE>t}Ov3k3xQ87dgeg%p&ooWD>Dw2Z;i)z4*}Q$iB} DxDh$M literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/crayons.rsi/crayonblue.png b/Resources/Textures/Objects/Misc/crayons.rsi/crayonblue.png new file mode 100644 index 0000000000000000000000000000000000000000..d05897c11bcd70f0b7cc22fc8f04e5fa791e89ab GIT binary patch literal 151 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJI8PVHkcv6U2@MzV%QPkTfV7|AzWv|FE-=`_2_jg>i;+$X2q-_MqK t{FULQ`;1DPLbldGjBq=skpKh?3^{FDLPh6IV}Ld>c)I$ztaD0e0sv*3GIRg{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/crayons.rsi/crayonbox.png b/Resources/Textures/Objects/Misc/crayons.rsi/crayonbox.png new file mode 100644 index 0000000000000000000000000000000000000000..ec61836917e8e5dc668542d5edab3edca14545cb GIT binary patch literal 299 zcmV+`0o4A9P)`;t9NgXP~h31f0PO7>}@tT!9j$F##%UpvGd+j{PB8 zv9Fne`DPw$SU{uEX!_1T)R6k9;{tF^_2HkK9klP^3Zy=2vh;w20y9tDpvh$sZIu}D z@^Jx>gd(c|L{wb>EFTx`&$$BMAx5X&Qb-Ae&+ZF0&JP3t;F>R#m+!5+ut!>8ZjF@% zWElQssshqq;E|Wg!&lai1Y8q1n&R{9g765kiv5OVz$%$G^~7rEJ0J#N?_Nz`4PpT6 x%LK$=c^=%G@OD70^g0~2XYsYK(P%XN^=%*ihhKWW;Dn$^0 p`1$q)TP#oJp4D|ftgQ5CyPTwpQBqD-c>>S^22WQ%mvv4FO#oMeG6?_x literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/crayons.rsi/crayonorange.png b/Resources/Textures/Objects/Misc/crayons.rsi/crayonorange.png new file mode 100644 index 0000000000000000000000000000000000000000..de055c78429a23ae256657e2c1f2c2fd3dcd4e17 GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ6i*k&kcv6U2@ecr@>>lMGYD7gou{QQ5C=l}FJgUk0ny`E~sod2_d#d@o5y5iMO z#oOl_8yK80$k=9|xTKBQgNa$}4a~GQQwE0TdHSDv*0-7i?PKtC^>bP0l+XkKMd&v| literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/crayons.rsi/crayonpurple.png b/Resources/Textures/Objects/Misc/crayons.rsi/crayonpurple.png new file mode 100644 index 0000000000000000000000000000000000000000..95027e5617339e8c87fec399d44b657d20c3069f GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzS5Ftmkcv5PF9h;3DDW^}O;7#PHPe2+hh{WeL~^3jpqf9&i`K7TxM`|-zh0Wp)3PBSvZ Z-?n5kee^o4!31a^gQu&X%Q~loCIIB1D&qhE literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/crayons.rsi/crayonrainbow.png b/Resources/Textures/Objects/Misc/crayons.rsi/crayonrainbow.png new file mode 100644 index 0000000000000000000000000000000000000000..37e62cdaa57c583de68912493a8add2e8761409e GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJT2B|pkcv5PFD>M44iIU5XwPAG z;G*We5}k%a3s)Jou-;?S$jb7tVwkpsTgJtl;ZxkDIp^>HagQ-DHr{>ESjVb5I%ZwF z>z+eP1)uZgH@fsyNNWq0|8-L_D_?r-?LxD#myff9z2i;FQ-A$n3F^PL?A(Wf1MDV_ g^LEUf`FAbz0y%w?HImf{K!-4Ry85}Sb4q9e022~LLI3~& literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/crayons.rsi/crayonred.png b/Resources/Textures/Objects/Misc/crayons.rsi/crayonred.png new file mode 100644 index 0000000000000000000000000000000000000000..4ffcb107b85407f78df7cccfa88f52c1a268527a GIT binary patch literal 125 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz7f%<*kcv5PFF5iZ2;ey!aR1PH z1N$WtU-~5*=w5o_e!$mp(h_l*8&Nfr_9ke%+kEug*DwF#xOV>fmdKI;Vst0D`|P4gdfE literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/crayons.rsi/crayonwhite.png b/Resources/Textures/Objects/Misc/crayons.rsi/crayonwhite.png new file mode 100644 index 0000000000000000000000000000000000000000..62c84d414144df87b8b94d9b51bc7c9e55fdb892 GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzb59q?kcv5P&pGlk81NiE@QGbS zsBwzBds5VrlkNxRF)}=0x*grCe)E)zsoqNY=`MfPX2~#oSj!w@?QygHiJcD62nJ7A KKbLh*2~7Z^CL>G$ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/crayons.rsi/crayonyellow.png b/Resources/Textures/Objects/Misc/crayons.rsi/crayonyellow.png new file mode 100644 index 0000000000000000000000000000000000000000..3ccbd9833772ce0f2da16cc39ff898b6e5392268 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzZ%-G;kcv5PFF5itDDt>mv{YPj zOKTZ>i6RH{(-!7UlXLzVf3Tj)z)+EJ_TsjR)RO$IPdlX7_q>0c%~yZtQ(5&MBb!3c fO}gw1e{M0(;4}6}akt_F8q476>gTe~DWM4f4=XH2 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/crayons.rsi/deathcan.png b/Resources/Textures/Objects/Misc/crayons.rsi/deathcan.png new file mode 100644 index 0000000000000000000000000000000000000000..e114bf564e6a1b5c818f87f16e276b42cc3e25a6 GIT binary patch literal 409 zcmV;K0cQS*P)Izg`E*IiBmTs2|tk-MN+Fyw7z;?TRY3>z7E$H=n z_nuccj>CLD*RCawVYl1;F`i5&qB>%M-vmL>oPbh~k)KYdA^~v>J

oO8{Kgm6p-R zG)y0sv7IVObVY z6aiou+OIlL;|{D=D;A3d@EyZv7xNYVErwD=0=L`kVeWdpHYf0m^ZEQBjE6vuyx1ID1D?Z7UcgX!QUqX$EV(hvgv4sw*aQ`d&B@mO#TC0`)c(Bcfm#)Awp z8mvrKAX_(W2Cvm+FiLQskb4GC`Yn2Q;{NZ?-Mz;_K|w*m4kSsUlO)l*XdFlvdY-4t z~zqntKbPBd~4z`OI@%*QM9%8Ec8luu`dP#m#0@q$9qBgTa6-%K-2^ zkI7^rl`=yqrK2d)^?F^;=W|`F)pQg^dNdkorIc|m5FLT*x(tUyf*`>6eY)MQL`H4^ zU^bi4YPAT0K%5)|olq&ItJNx&WwBnbflXEXiDNz}MVh8Yn&KS*`1bfnsZ`=NjybrL zX^0GbzrWuauYl})j|Mn{pK*--1YaK>;08F|qk+G_fg7;yUgrME^2-doyWV{DIdHX! zvtN5O@cG9Pjt$oFX6)E-(LWOzFmA?~O|k1braq^%KnWB~*~} Y1R|}Dh|GGkc>n+a07*qoM6N<$fjnl>C8OLyJ2U8xQhe zv?yaBTQ_YLUhYuc4u%G$A8=1VLz5ST&OM;_JV-i+1NXYuU6&_$D2`+Mr~Gs}75Osg;|QQZ~yntF^YDdjwhMV}yw zBIffsX_}HG3FGltVj~9t*lae8MkCTR6&D9#8}@oVJkMjd+X4Ho_?qWDR?4{zZ#4zyf6&y(^vJE9t01aTM&e6 iIsCqwH?ordm--3DkCTl(0ouO+00001p=5JkU2Ko}O4TgdDgT)J^#;S=}{61t6BVchrxQm4+sg;hv8fv=!aR^ct=Nf8Jr zc0zU%6cYQx!ZNUbAMDJ|01rKM@3J_D!Z4&;@%4Jm@-x0%O4(aVDN;(&M_`}nnG0gu zc5g3)VEM2C-a~Np^lgW`2GCkVYdtJLk|bCzmv5JAt~uN} z2XITrxg=nh!FP|4Y39rTvT1 TicvfB00000NkvXXu0mjfbo;%# literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/crayons.rsi/green.png b/Resources/Textures/Objects/Misc/crayons.rsi/green.png new file mode 100644 index 0000000000000000000000000000000000000000..e6165cfa8c7b72be1381a09699948e26e738b455 GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzM^6{Wkcv6U2@i+q!dGWln;Mt=H!@H8V##)m@w?u?1y?%2iZnnv5*QioZD5VCJ-K`e P&@cv1S3j3^P6U5Jms4h+I;n%>`2X0=@$!2cSWs$_>(`rO6@aasWySEXr^PL_s-9q@=Q!Y_bwF ztf+Vud}Pn}@EL%Wm6eqlv~Bxn+x9VMk8kP1BuO4hDSy4F0ax&Py`pKFSthot z!w~!Z9sp2P70R*%0G!Wf)}8^^fMXa2R8=KiKF@$V?SH_|fVCFJm^a-R18XhYfT#mS zQ6P$k2Nl$3@D|LWtlhNeoBjF z;BYwj!mhZ}xQH^)_q{LdAR=tH+hsEFdkX%gO+l0aV+`Ure$j_vSSABn>yLB4C<w zC!kFZia#OnaTW8!R7$lP_^%>dmgQQ3np`eW+>pS#DcR$_FK$M}0$E}|mn3fhJOM6H VNXcy>pSJ)2002ovPDHLkV1m_NYB>M^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/crayons.rsi/mimecan2_cap.png b/Resources/Textures/Objects/Misc/crayons.rsi/mimecan2_cap.png new file mode 100644 index 0000000000000000000000000000000000000000..d8abf12be02339f9191d0a0696dc2cc3fb6fa758 GIT binary patch literal 285 zcmV+&0pk9NP) z04Sx%7!!G%a}q+70l0RcX&U03M;_7~29Q!FJ!@?l03ig`bsc$a+d=@)JFqlN&5Hr# z5(MDA|H%6pKu+xjaLyeEu(vr8cnuf5Ud5`apc>iEz_||LJkQ4hSq&00000NkvXXu0mjfvy*Z> literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/crayons.rsi/mimecan_cap.png b/Resources/Textures/Objects/Misc/crayons.rsi/mimecan_cap.png new file mode 100644 index 0000000000000000000000000000000000000000..48a02d08744ee55fcd90839604eeb691323a1d2c GIT binary patch literal 410 zcmV;L0cHM)P)ToG&m01!oy$8}vNX@yVj z3)Wgu?bieVK+`lH*S4*s6+eV&n%=M1tH<|!k2sFmK@>TVB#FoE_j^ezSqP8EBX+yp zj60vt>j<#cq9_V)pfLuA!{P4*0MEd^S}qMCTY%OYM1<4nv{<`bF06i{5H49Qu^$j- zz&VGqEN8rPZoNfRRn;`qIXC0D5G|rG3=sqYhzNb(W4qnrcDrF1hIJNEmSq5*+wYa* zLX-ie6!JWu>{m)nH7-OB6h$!&9*2({7orRh5jLC6j9>K_EghcKj*+z%#u)D+c3rnl z2DH|Td%ta4Xsy`-#DB#^G~*=SUo2o0@%>pc{0#tj0Mc!o#UyU2)z4*}Q$iB}a>gMf literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/crayons.rsi/purple.png b/Resources/Textures/Objects/Misc/crayons.rsi/purple.png new file mode 100644 index 0000000000000000000000000000000000000000..73c8fdfb430a02c5386796e25583d74ffa315e5c GIT binary patch literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzJ5LwKkcv5PFKpywP!MpwnDADL z?^QvW-vgO%&v_b~nSZY5Q*>csVAwy?_Rz`gZx|o1d*gLJ@FR2dQGN!72UWY@b6hu{ Sro&vD@6i_jnx+9@nkI%}08lQMMKd>~23$s?5vFOXwtF++KJ9NHJ_Fqv z#OnH*9;@qgYjOih3GBpn={4gk+ICFi(l-9yKpU`u{fM@rSAaY5dJl)NqT2Wk`F9{U zV_qDt$@Ah6ax?Kb*PlHkmt?LifWlf6m85kU?c6u~$-0uf~#d9LDqBm{Zt%(pf kxa_4;E5BeW%Y6Xe0jTqLD>H|eKmY&$07*qoM6N<$f=-aaUjP6A literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/crayons.rsi/rainbowcan2.png b/Resources/Textures/Objects/Misc/crayons.rsi/rainbowcan2.png new file mode 100644 index 0000000000000000000000000000000000000000..b5ae78216173fd7b52000407bdd03ea2ef8fb5cc GIT binary patch literal 336 zcmV-W0k8gvP)1sx5JlgHCGMiVhE5Q7(OJ^?3OT~o>Gl+XoWP}01eaFjI?WbZQp8|z3R@0rWzQ^5 z;|Bv{!DzlmBQ&tFv9X~bgwTf&dd(hp(!io9`Yg*Pe^mh~VO`f$RizTKlO%V}VT{3A z3xM~YvMd2OolcAP+%FZ7h%w^5mxk*Eq`$odq8@P0&03p-r~-MOV~pYBW%zzPg0)su z8Synt4S4OZCIH}VGz}sFZQIUTn}hfo0`UB!3J2v80Ce9MRlKSK-Qg7u08jrTVE=GG z`RQR=RlsrgHTlveRQG@uk$|RY2Iq6MwFTS~m4Ng6U>X)T;W%*gF-9(32mB2rONS8< iOhk$65loVN1K<~jU0Tx$500000fhdEP)kyJ#4PAOL>L0U}L+TX{=Hnq_z>vVPPP!7D*O4 zPQ9BwRygm6fni|w|FW5cfs;=9?+PSMN-49gUKEAsJb}3}#YTWJ-+}$4GZDq(8|o|6 zP?Jaokj^ZGHBV>$08Cg}h|%1Hl?Y%W>RN)istAUsHem%z(Mhr!Sj`8Bu(IZ>xkrG7 zQWjz~Unuok+u;DREVB@!d6s1&0MQJjX-XW&+&$$0}@(*wmyx3ei zgw8YIDiJ_k*M0Ilgl~XD$_e20p$`}BJ%q#NYnrBE-E{zzWr@~Wv=xij=*Y@D{->S0M-@iXaGTX^a%yB&?;O zq9l0*p%#^fX~Rq7smnc;Oa9=(d%wdu=i}V_co$k~>A$N@lB8)`xse}JvKWpu47byiYb#^I`f$^ep zIq?Koex>wY0KnGK3GcEp>J#XV!9WlIz1v{vnm@XQ`9{{5-R1 zO98Ov*<;PK2f(iV4nNPz0OB*SV@rYk`@K*oiR!3tK?-QJ)v>RbqC^w8GV*v&9Fo*J zDNo?#-25BX>VDIVsY-kXj16h#4*|B)={BJJKse zoy%E0xo*)0l_4`a`SX++8sfJ^UBB8OS7@G~#yaKl!xI(k4dOXWiL6@!BKcH+W-xfV L`njxgN@xNA)T1Jf literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/crayons.rsi/spraycan.png b/Resources/Textures/Objects/Misc/crayons.rsi/spraycan.png new file mode 100644 index 0000000000000000000000000000000000000000..c452a177e374d234e0d606a9160be89bb43e8ecc GIT binary patch literal 293 zcmV+=0owkFP)VU3`IYulPFn(Y(PoPBAJN^*nm1E8<5U3P*VA-puk-LKZtAcDzIe#A7jM;nM@{= zfcIX#_nK1U#U@&7wJgi+ImHAe4gljg>M#uYsEJryL{vnQOuShmUDp+CZVWX8zfQ`2 z0;&UT+X8?dW6rr}3`8c9p$$}3wR>Ndg{ni%K+`m*VrQT_u&yhNF<&tT`X&sbtZ;yy z0RX7$x&QzXp>M&Y4%`9Nfv|+)O&DTVp*k>4(H=tx2X7U8A;nEvG=NTxeNJV7FiDb@}tVsWL9Qxep_<$e?f*|}G z&bh+e{o=ud@ZRr?zG+8zGDBw!FAJcx-keiP)H~D{7-J4;N1z(WIb#@xoyI^lur_6l zEA$QkK;QQr04&QwFXX8Pu7GMlDFpzCF_urQ6{>-Gp5La`xN5D?I}k!(M>pKQ0}`NP whMaT7TD#GvX~H;;&F@hGYKZljF&6;f1$#d@3sMJ{VE_OC07*qoM6N<$f-h%ecmMzZ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/crayons.rsi/spraycan_cap_colors.png b/Resources/Textures/Objects/Misc/crayons.rsi/spraycan_cap_colors.png new file mode 100644 index 0000000000000000000000000000000000000000..1ae3a4852cce19fdbd29b802efaec918f627dbf5 GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ8c!F;kcv5PuO8%WP!M1_aP`M> z)m;mht#06}xGW_4;BfG5aQT;)q}M8tm4E+C+iP8);`e`V7RvG( z$}lj@DQ@2z#1+hCT>9FP>q8Yo70>s{6N;A|o4~c9HRHNZ@x=GunpY)~zo+kcbgTe~DWM4fc34GZ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/crayons.rsi/spraycan_colors.png b/Resources/Textures/Objects/Misc/crayons.rsi/spraycan_colors.png new file mode 100644 index 0000000000000000000000000000000000000000..a5580ba514797ad5d89bcd0424d6f8782e4dde6b GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ2u~Nskcv5PuWS@;FyLr;c=`Fd znVP~I9AB+D!m{zY$<7~Z{;glc*vH1nkf61+C-QH1M}=;Qb4+~ei@njseC7u}KZ;sy u%iXYct67?V=Fy#(=ghQz%fR4yiTC?g=`9{LF9U&gFnGH9xvXgTe~DWM4fv8^Ru literal 0 HcmV?d00001