From 83f0a2fb4930d128bc85a2e1c43783f178bb328b Mon Sep 17 00:00:00 2001 From: Noah Petherbridge Date: Sat, 24 Sep 2022 15:35:47 -0700 Subject: [PATCH] Split doodads into new repository --- dev-assets/doodads/azulian/Makefile | 27 -- dev-assets/doodads/azulian/azulian.js | 178 ------------ dev-assets/doodads/azulian/blu-back.png | Bin 864 -> 0 bytes dev-assets/doodads/azulian/blu-front.png | Bin 829 -> 0 bytes dev-assets/doodads/azulian/blu-wl1.png | Bin 878 -> 0 bytes dev-assets/doodads/azulian/blu-wl2.png | Bin 910 -> 0 bytes dev-assets/doodads/azulian/blu-wl3.png | Bin 853 -> 0 bytes dev-assets/doodads/azulian/blu-wl4.png | Bin 833 -> 0 bytes dev-assets/doodads/azulian/blu-wr1.png | Bin 820 -> 0 bytes dev-assets/doodads/azulian/blu-wr2.png | Bin 893 -> 0 bytes dev-assets/doodads/azulian/blu-wr3.png | Bin 816 -> 0 bytes dev-assets/doodads/azulian/blu-wr4.png | Bin 844 -> 0 bytes dev-assets/doodads/azulian/red-back.png | Bin 826 -> 0 bytes dev-assets/doodads/azulian/red-front.png | Bin 839 -> 0 bytes dev-assets/doodads/azulian/red-wl1.png | Bin 803 -> 0 bytes dev-assets/doodads/azulian/red-wl2.png | Bin 816 -> 0 bytes dev-assets/doodads/azulian/red-wl3.png | Bin 800 -> 0 bytes dev-assets/doodads/azulian/red-wl4.png | Bin 819 -> 0 bytes dev-assets/doodads/azulian/red-wr1.png | Bin 829 -> 0 bytes dev-assets/doodads/azulian/red-wr2.png | Bin 834 -> 0 bytes dev-assets/doodads/azulian/red-wr3.png | Bin 815 -> 0 bytes dev-assets/doodads/azulian/red-wr4.png | Bin 838 -> 0 bytes dev-assets/doodads/azulian/white-back.png | Bin 1029 -> 0 bytes dev-assets/doodads/azulian/white-front.png | Bin 1004 -> 0 bytes dev-assets/doodads/azulian/white-wl1.png | Bin 1041 -> 0 bytes dev-assets/doodads/azulian/white-wl2.png | Bin 1062 -> 0 bytes dev-assets/doodads/azulian/white-wl3.png | Bin 1026 -> 0 bytes dev-assets/doodads/azulian/white-wl4.png | Bin 1002 -> 0 bytes dev-assets/doodads/azulian/white-wr1.png | Bin 994 -> 0 bytes dev-assets/doodads/azulian/white-wr2.png | Bin 1043 -> 0 bytes dev-assets/doodads/azulian/white-wr3.png | Bin 985 -> 0 bytes dev-assets/doodads/azulian/white-wr4.png | Bin 999 -> 0 bytes dev-assets/doodads/bird/Makefile | 22 -- dev-assets/doodads/bird/bird.js | 274 ------------------ dev-assets/doodads/bird/blue/dive-left.png | Bin 11089 -> 0 bytes dev-assets/doodads/bird/blue/dive-right.png | Bin 11215 -> 0 bytes dev-assets/doodads/bird/blue/left-1.png | Bin 12128 -> 0 bytes dev-assets/doodads/bird/blue/left-2.png | Bin 11421 -> 0 bytes dev-assets/doodads/bird/blue/right-1.png | Bin 12350 -> 0 bytes dev-assets/doodads/bird/blue/right-2.png | Bin 11476 -> 0 bytes dev-assets/doodads/bird/red/dive-left.png | Bin 959 -> 0 bytes dev-assets/doodads/bird/red/dive-right.png | Bin 989 -> 0 bytes dev-assets/doodads/bird/red/left-1.png | Bin 1074 -> 0 bytes dev-assets/doodads/bird/red/left-2.png | Bin 1022 -> 0 bytes dev-assets/doodads/bird/red/right-1.png | Bin 1089 -> 0 bytes dev-assets/doodads/bird/red/right-2.png | Bin 1028 -> 0 bytes dev-assets/doodads/box/Makefile | 13 - dev-assets/doodads/box/box-1.png | Bin 1576 -> 0 bytes dev-assets/doodads/box/box-2.png | Bin 1554 -> 0 bytes dev-assets/doodads/box/box-3.png | Bin 1513 -> 0 bytes dev-assets/doodads/box/box-4.png | Bin 1523 -> 0 bytes dev-assets/doodads/box/box.js | 73 ----- dev-assets/doodads/boy/Makefile | 15 - dev-assets/doodads/boy/boy.js | 62 ---- dev-assets/doodads/boy/idle-left-1.png | Bin 11907 -> 0 bytes dev-assets/doodads/boy/idle-left-2.png | Bin 12497 -> 0 bytes dev-assets/doodads/boy/idle-left-3.png | Bin 12288 -> 0 bytes dev-assets/doodads/boy/idle-right-1.png | Bin 11884 -> 0 bytes dev-assets/doodads/boy/idle-right-2.png | Bin 12465 -> 0 bytes dev-assets/doodads/boy/idle-right-3.png | Bin 12267 -> 0 bytes dev-assets/doodads/boy/stand-left.png | Bin 1388 -> 0 bytes dev-assets/doodads/boy/stand-right.png | Bin 1382 -> 0 bytes dev-assets/doodads/boy/walk-left-1.png | Bin 1370 -> 0 bytes dev-assets/doodads/boy/walk-left-2.png | Bin 1376 -> 0 bytes dev-assets/doodads/boy/walk-left-3.png | Bin 1389 -> 0 bytes dev-assets/doodads/boy/walk-right-1.png | Bin 1358 -> 0 bytes dev-assets/doodads/boy/walk-right-2.png | Bin 1365 -> 0 bytes dev-assets/doodads/boy/walk-right-3.png | Bin 1391 -> 0 bytes dev-assets/doodads/boy/walk-right.gif | Bin 3417 -> 0 bytes dev-assets/doodads/build.sh | 114 -------- dev-assets/doodads/buttons/Makefile | 19 -- dev-assets/doodads/buttons/README.md | 12 - dev-assets/doodads/buttons/button.js | 60 ---- dev-assets/doodads/buttons/button1.png | Bin 769 -> 0 bytes dev-assets/doodads/buttons/button2.png | Bin 728 -> 0 bytes dev-assets/doodads/buttons/sticky.js | 35 --- dev-assets/doodads/buttons/sticky1.png | Bin 767 -> 0 bytes dev-assets/doodads/buttons/sticky2.png | Bin 726 -> 0 bytes dev-assets/doodads/buttons/typeB1.png | Bin 736 -> 0 bytes dev-assets/doodads/buttons/typeB2.png | Bin 695 -> 0 bytes dev-assets/doodads/crumbly-floor/Makefile | 12 - .../doodads/crumbly-floor/crumbly-floor.js | 59 ---- dev-assets/doodads/crumbly-floor/fall1.png | Bin 1119 -> 0 bytes dev-assets/doodads/crumbly-floor/fall2.png | Bin 1124 -> 0 bytes dev-assets/doodads/crumbly-floor/fall3.png | Bin 1120 -> 0 bytes dev-assets/doodads/crumbly-floor/fall4.png | Bin 1100 -> 0 bytes dev-assets/doodads/crumbly-floor/fallen.png | Bin 5299 -> 0 bytes dev-assets/doodads/crumbly-floor/floor.png | Bin 1036 -> 0 bytes dev-assets/doodads/crumbly-floor/shake1.png | Bin 1036 -> 0 bytes dev-assets/doodads/crumbly-floor/shake2.png | Bin 1044 -> 0 bytes dev-assets/doodads/crusher/Makefile | 14 - dev-assets/doodads/crusher/angry.png | Bin 2405 -> 0 bytes dev-assets/doodads/crusher/crusher.js | 207 ------------- dev-assets/doodads/crusher/ouch.png | Bin 2253 -> 0 bytes dev-assets/doodads/crusher/peek-left.png | Bin 2219 -> 0 bytes dev-assets/doodads/crusher/peek-right.png | Bin 2212 -> 0 bytes dev-assets/doodads/crusher/sleep.png | Bin 2106 -> 0 bytes dev-assets/doodads/doors/Makefile | 7 - dev-assets/doodads/doors/README.md | 15 - dev-assets/doodads/doors/blue-closed.png | Bin 1068 -> 0 bytes dev-assets/doodads/doors/blue-key.png | Bin 732 -> 0 bytes dev-assets/doodads/doors/blue-left.png | Bin 892 -> 0 bytes dev-assets/doodads/doors/blue-right.png | Bin 884 -> 0 bytes dev-assets/doodads/doors/blue-unlocked.png | Bin 906 -> 0 bytes dev-assets/doodads/doors/blue1.png | Bin 787 -> 0 bytes dev-assets/doodads/doors/blue2.png | Bin 743 -> 0 bytes dev-assets/doodads/doors/build.sh | 52 ---- dev-assets/doodads/doors/colored-door.js | 68 ----- dev-assets/doodads/doors/electric-door.js | 65 ----- dev-assets/doodads/doors/electric.gif | Bin 10568 -> 0 bytes dev-assets/doodads/doors/electric1.png | Bin 907 -> 0 bytes dev-assets/doodads/doors/electric2.png | Bin 978 -> 0 bytes dev-assets/doodads/doors/electric3.png | Bin 928 -> 0 bytes dev-assets/doodads/doors/electric4.png | Bin 824 -> 0 bytes dev-assets/doodads/doors/green-closed.png | Bin 1047 -> 0 bytes dev-assets/doodads/doors/green-key.png | Bin 714 -> 0 bytes dev-assets/doodads/doors/green-left.png | Bin 875 -> 0 bytes dev-assets/doodads/doors/green-right.png | Bin 880 -> 0 bytes dev-assets/doodads/doors/green-unlocked.png | Bin 888 -> 0 bytes dev-assets/doodads/doors/green1.png | Bin 734 -> 0 bytes dev-assets/doodads/doors/green2.png | Bin 742 -> 0 bytes dev-assets/doodads/doors/keys.js | 22 -- dev-assets/doodads/doors/red-closed.png | Bin 1010 -> 0 bytes dev-assets/doodads/doors/red-key.png | Bin 699 -> 0 bytes dev-assets/doodads/doors/red-left.png | Bin 878 -> 0 bytes dev-assets/doodads/doors/red-right.png | Bin 865 -> 0 bytes dev-assets/doodads/doors/red-unlocked.png | Bin 849 -> 0 bytes dev-assets/doodads/doors/red1.png | Bin 739 -> 0 bytes dev-assets/doodads/doors/red2.png | Bin 733 -> 0 bytes dev-assets/doodads/doors/small-closed.png | Bin 1099 -> 0 bytes dev-assets/doodads/doors/small-key.png | Bin 682 -> 0 bytes dev-assets/doodads/doors/small-left.png | Bin 935 -> 0 bytes dev-assets/doodads/doors/small-right.png | Bin 936 -> 0 bytes dev-assets/doodads/doors/small-unlocked.png | Bin 932 -> 0 bytes dev-assets/doodads/doors/yellow-closed.png | Bin 1133 -> 0 bytes dev-assets/doodads/doors/yellow-key.png | Bin 728 -> 0 bytes dev-assets/doodads/doors/yellow-left.png | Bin 886 -> 0 bytes dev-assets/doodads/doors/yellow-right.png | Bin 883 -> 0 bytes dev-assets/doodads/doors/yellow-unlocked.png | Bin 939 -> 0 bytes dev-assets/doodads/doors/yellow1.png | Bin 778 -> 0 bytes dev-assets/doodads/doors/yellow2.png | Bin 746 -> 0 bytes dev-assets/doodads/gems/Makefile | 58 ---- dev-assets/doodads/gems/blue-1.png | Bin 891 -> 0 bytes dev-assets/doodads/gems/blue-2.png | Bin 927 -> 0 bytes dev-assets/doodads/gems/blue-3.png | Bin 903 -> 0 bytes dev-assets/doodads/gems/blue-4.png | Bin 835 -> 0 bytes dev-assets/doodads/gems/gemstone.js | 24 -- dev-assets/doodads/gems/green-1.png | Bin 785 -> 0 bytes dev-assets/doodads/gems/green-2.png | Bin 807 -> 0 bytes dev-assets/doodads/gems/green-3.png | Bin 864 -> 0 bytes dev-assets/doodads/gems/green-4.png | Bin 835 -> 0 bytes dev-assets/doodads/gems/red-1.png | Bin 711 -> 0 bytes dev-assets/doodads/gems/red-2.png | Bin 702 -> 0 bytes dev-assets/doodads/gems/red-3.png | Bin 712 -> 0 bytes dev-assets/doodads/gems/red-4.png | Bin 724 -> 0 bytes dev-assets/doodads/gems/totem-blue-0.png | Bin 798 -> 0 bytes dev-assets/doodads/gems/totem-blue-1.png | Bin 958 -> 0 bytes dev-assets/doodads/gems/totem-blue-2.png | Bin 1005 -> 0 bytes dev-assets/doodads/gems/totem-blue-3.png | Bin 987 -> 0 bytes dev-assets/doodads/gems/totem-blue-4.png | Bin 921 -> 0 bytes dev-assets/doodads/gems/totem-green-0.png | Bin 711 -> 0 bytes dev-assets/doodads/gems/totem-green-1.png | Bin 887 -> 0 bytes dev-assets/doodads/gems/totem-green-2.png | Bin 938 -> 0 bytes dev-assets/doodads/gems/totem-green-3.png | Bin 978 -> 0 bytes dev-assets/doodads/gems/totem-green-4.png | Bin 956 -> 0 bytes dev-assets/doodads/gems/totem-red-0.png | Bin 752 -> 0 bytes dev-assets/doodads/gems/totem-red-1.png | Bin 811 -> 0 bytes dev-assets/doodads/gems/totem-red-2.png | Bin 805 -> 0 bytes dev-assets/doodads/gems/totem-red-3.png | Bin 790 -> 0 bytes dev-assets/doodads/gems/totem-red-4.png | Bin 817 -> 0 bytes dev-assets/doodads/gems/totem-yellow-0.png | Bin 837 -> 0 bytes dev-assets/doodads/gems/totem-yellow-1.png | Bin 1097 -> 0 bytes dev-assets/doodads/gems/totem-yellow-2.png | Bin 1082 -> 0 bytes dev-assets/doodads/gems/totem-yellow-3.png | Bin 1054 -> 0 bytes dev-assets/doodads/gems/totem-yellow-4.png | Bin 1062 -> 0 bytes dev-assets/doodads/gems/totem.js | 100 ------- dev-assets/doodads/gems/yellow-1.png | Bin 971 -> 0 bytes dev-assets/doodads/gems/yellow-2.png | Bin 921 -> 0 bytes dev-assets/doodads/gems/yellow-3.png | Bin 898 -> 0 bytes dev-assets/doodads/gems/yellow-4.png | Bin 879 -> 0 bytes dev-assets/doodads/mischievous.js | 43 --- dev-assets/doodads/objects/Makefile | 25 -- dev-assets/doodads/objects/anvil.js | 52 ---- dev-assets/doodads/objects/anvil.png | Bin 796 -> 0 bytes .../doodads/objects/checkpoint-active.png | Bin 8630 -> 0 bytes dev-assets/doodads/objects/checkpoint-flag.js | 58 ---- .../doodads/objects/checkpoint-inactive.png | Bin 7309 -> 0 bytes dev-assets/doodads/objects/exit-flag.js | 19 -- dev-assets/doodads/objects/exit-flag.png | Bin 932 -> 0 bytes dev-assets/doodads/objects/start-flag.js | 10 - dev-assets/doodads/objects/start-flag.png | Bin 6541 -> 0 bytes dev-assets/doodads/on-off/Makefile | 18 -- dev-assets/doodads/on-off/blue-button.png | Bin 785 -> 0 bytes dev-assets/doodads/on-off/blue-off.png | Bin 668 -> 0 bytes dev-assets/doodads/on-off/blue-on.png | Bin 713 -> 0 bytes dev-assets/doodads/on-off/orange-button.png | Bin 805 -> 0 bytes dev-assets/doodads/on-off/orange-off.png | Bin 669 -> 0 bytes dev-assets/doodads/on-off/orange-on.png | Bin 717 -> 0 bytes dev-assets/doodads/on-off/state-block-blue.js | 23 -- .../doodads/on-off/state-block-orange.js | 23 -- dev-assets/doodads/on-off/state-button.js | 55 ---- dev-assets/doodads/palette.json | 35 --- dev-assets/doodads/regions/Makefile | 38 --- dev-assets/doodads/regions/checkpoint-128.png | Bin 956 -> 0 bytes dev-assets/doodads/regions/checkpoint.js | 38 --- dev-assets/doodads/regions/fire-128.png | Bin 965 -> 0 bytes dev-assets/doodads/regions/fire.js | 19 -- dev-assets/doodads/regions/goal-128.png | Bin 990 -> 0 bytes dev-assets/doodads/regions/goal.js | 19 -- dev-assets/doodads/regions/power-128.png | Bin 1150 -> 0 bytes dev-assets/doodads/regions/power-64.png | Bin 780 -> 0 bytes dev-assets/doodads/regions/power.js | 22 -- dev-assets/doodads/regions/reset-timer.js | 30 -- dev-assets/doodads/regions/stall-128.png | Bin 1106 -> 0 bytes dev-assets/doodads/regions/stall.js | 40 --- dev-assets/doodads/regions/timer-64.png | Bin 901 -> 0 bytes dev-assets/doodads/regions/warp-door-64.png | Bin 821 -> 0 bytes dev-assets/doodads/snake/Makefile | 15 - dev-assets/doodads/snake/attack-left-1.png | Bin 1202 -> 0 bytes dev-assets/doodads/snake/attack-left-2.png | Bin 1139 -> 0 bytes dev-assets/doodads/snake/attack-left-3.png | Bin 935 -> 0 bytes dev-assets/doodads/snake/attack-right-1.png | Bin 1201 -> 0 bytes dev-assets/doodads/snake/attack-right-2.png | Bin 1127 -> 0 bytes dev-assets/doodads/snake/attack-right-3.png | Bin 916 -> 0 bytes dev-assets/doodads/snake/left-1.png | Bin 1161 -> 0 bytes dev-assets/doodads/snake/left-2.png | Bin 1180 -> 0 bytes dev-assets/doodads/snake/left-3.png | Bin 1152 -> 0 bytes dev-assets/doodads/snake/right-1.png | Bin 1203 -> 0 bytes dev-assets/doodads/snake/right-2.png | Bin 1172 -> 0 bytes dev-assets/doodads/snake/right-3.png | Bin 1145 -> 0 bytes dev-assets/doodads/snake/snake.js | 131 --------- dev-assets/doodads/switches/Makefile | 20 -- dev-assets/doodads/switches/down-off.png | Bin 678 -> 0 bytes dev-assets/doodads/switches/down-on.png | Bin 674 -> 0 bytes dev-assets/doodads/switches/left-off.png | Bin 702 -> 0 bytes dev-assets/doodads/switches/left-on.png | Bin 696 -> 0 bytes dev-assets/doodads/switches/right-off.png | Bin 695 -> 0 bytes dev-assets/doodads/switches/right-on.png | Bin 702 -> 0 bytes dev-assets/doodads/switches/switch-off.png | Bin 687 -> 0 bytes dev-assets/doodads/switches/switch-on.png | Bin 699 -> 0 bytes dev-assets/doodads/switches/switch.js | 44 --- dev-assets/doodads/test/index.js | 13 - dev-assets/doodads/thief/Makefile | 14 - dev-assets/doodads/thief/stand-left.png | Bin 1523 -> 0 bytes dev-assets/doodads/thief/stand-right.png | Bin 1536 -> 0 bytes dev-assets/doodads/thief/thief.js | 123 -------- dev-assets/doodads/thief/walk-left-1.png | Bin 1502 -> 0 bytes dev-assets/doodads/thief/walk-left-2.png | Bin 1463 -> 0 bytes dev-assets/doodads/thief/walk-left-3.png | Bin 1533 -> 0 bytes dev-assets/doodads/thief/walk-right-1.png | Bin 1541 -> 0 bytes dev-assets/doodads/thief/walk-right-2.png | Bin 1480 -> 0 bytes dev-assets/doodads/thief/walk-right-3.png | Bin 1519 -> 0 bytes dev-assets/doodads/trapdoors/Makefile | 34 --- dev-assets/doodads/trapdoors/README.md | 5 - dev-assets/doodads/trapdoors/down.gif | Bin 9157 -> 0 bytes dev-assets/doodads/trapdoors/down1.png | Bin 1041 -> 0 bytes dev-assets/doodads/trapdoors/down2.png | Bin 1098 -> 0 bytes dev-assets/doodads/trapdoors/down3.png | Bin 1112 -> 0 bytes dev-assets/doodads/trapdoors/down4.png | Bin 1007 -> 0 bytes .../doodads/trapdoors/electric-trapdoor.js | 65 ----- dev-assets/doodads/trapdoors/electric1.png | Bin 941 -> 0 bytes dev-assets/doodads/trapdoors/electric2.png | Bin 1064 -> 0 bytes dev-assets/doodads/trapdoors/electric3.png | Bin 1269 -> 0 bytes dev-assets/doodads/trapdoors/electric4.png | Bin 972 -> 0 bytes dev-assets/doodads/trapdoors/left1.png | Bin 1038 -> 0 bytes dev-assets/doodads/trapdoors/left2.png | Bin 1101 -> 0 bytes dev-assets/doodads/trapdoors/left3.png | Bin 1079 -> 0 bytes dev-assets/doodads/trapdoors/left4.png | Bin 992 -> 0 bytes dev-assets/doodads/trapdoors/right1.png | Bin 1047 -> 0 bytes dev-assets/doodads/trapdoors/right2.png | Bin 1111 -> 0 bytes dev-assets/doodads/trapdoors/right3.png | Bin 1072 -> 0 bytes dev-assets/doodads/trapdoors/right4.png | Bin 991 -> 0 bytes dev-assets/doodads/trapdoors/trapdoor.js | 88 ------ dev-assets/doodads/trapdoors/up1.png | Bin 1031 -> 0 bytes dev-assets/doodads/trapdoors/up2.png | Bin 1086 -> 0 bytes dev-assets/doodads/trapdoors/up3.png | Bin 1102 -> 0 bytes dev-assets/doodads/trapdoors/up4.png | Bin 1006 -> 0 bytes dev-assets/doodads/warp-door/Makefile | 26 -- dev-assets/doodads/warp-door/blue-1.png | Bin 850 -> 0 bytes dev-assets/doodads/warp-door/blue-2.png | Bin 976 -> 0 bytes dev-assets/doodads/warp-door/blue-3.png | Bin 934 -> 0 bytes dev-assets/doodads/warp-door/blue-4.png | Bin 807 -> 0 bytes dev-assets/doodads/warp-door/blue-off.png | Bin 685 -> 0 bytes dev-assets/doodads/warp-door/door-1.png | Bin 891 -> 0 bytes dev-assets/doodads/warp-door/door-2.png | Bin 1003 -> 0 bytes dev-assets/doodads/warp-door/door-3.png | Bin 957 -> 0 bytes dev-assets/doodads/warp-door/door-4.png | Bin 830 -> 0 bytes dev-assets/doodads/warp-door/orange-1.png | Bin 832 -> 0 bytes dev-assets/doodads/warp-door/orange-2.png | Bin 967 -> 0 bytes dev-assets/doodads/warp-door/orange-3.png | Bin 922 -> 0 bytes dev-assets/doodads/warp-door/orange-4.png | Bin 803 -> 0 bytes dev-assets/doodads/warp-door/orange-off.png | Bin 687 -> 0 bytes dev-assets/doodads/warp-door/warp-door.js | 157 ---------- 293 files changed, 2909 deletions(-) delete mode 100644 dev-assets/doodads/azulian/Makefile delete mode 100644 dev-assets/doodads/azulian/azulian.js delete mode 100644 dev-assets/doodads/azulian/blu-back.png delete mode 100644 dev-assets/doodads/azulian/blu-front.png delete mode 100644 dev-assets/doodads/azulian/blu-wl1.png delete mode 100644 dev-assets/doodads/azulian/blu-wl2.png delete mode 100644 dev-assets/doodads/azulian/blu-wl3.png delete mode 100644 dev-assets/doodads/azulian/blu-wl4.png delete mode 100644 dev-assets/doodads/azulian/blu-wr1.png delete mode 100644 dev-assets/doodads/azulian/blu-wr2.png delete mode 100644 dev-assets/doodads/azulian/blu-wr3.png delete mode 100644 dev-assets/doodads/azulian/blu-wr4.png delete mode 100644 dev-assets/doodads/azulian/red-back.png delete mode 100644 dev-assets/doodads/azulian/red-front.png delete mode 100644 dev-assets/doodads/azulian/red-wl1.png delete mode 100644 dev-assets/doodads/azulian/red-wl2.png delete mode 100644 dev-assets/doodads/azulian/red-wl3.png delete mode 100644 dev-assets/doodads/azulian/red-wl4.png delete mode 100644 dev-assets/doodads/azulian/red-wr1.png delete mode 100644 dev-assets/doodads/azulian/red-wr2.png delete mode 100644 dev-assets/doodads/azulian/red-wr3.png delete mode 100644 dev-assets/doodads/azulian/red-wr4.png delete mode 100644 dev-assets/doodads/azulian/white-back.png delete mode 100644 dev-assets/doodads/azulian/white-front.png delete mode 100644 dev-assets/doodads/azulian/white-wl1.png delete mode 100644 dev-assets/doodads/azulian/white-wl2.png delete mode 100644 dev-assets/doodads/azulian/white-wl3.png delete mode 100644 dev-assets/doodads/azulian/white-wl4.png delete mode 100644 dev-assets/doodads/azulian/white-wr1.png delete mode 100644 dev-assets/doodads/azulian/white-wr2.png delete mode 100644 dev-assets/doodads/azulian/white-wr3.png delete mode 100644 dev-assets/doodads/azulian/white-wr4.png delete mode 100644 dev-assets/doodads/bird/Makefile delete mode 100644 dev-assets/doodads/bird/bird.js delete mode 100644 dev-assets/doodads/bird/blue/dive-left.png delete mode 100644 dev-assets/doodads/bird/blue/dive-right.png delete mode 100644 dev-assets/doodads/bird/blue/left-1.png delete mode 100644 dev-assets/doodads/bird/blue/left-2.png delete mode 100644 dev-assets/doodads/bird/blue/right-1.png delete mode 100644 dev-assets/doodads/bird/blue/right-2.png delete mode 100644 dev-assets/doodads/bird/red/dive-left.png delete mode 100644 dev-assets/doodads/bird/red/dive-right.png delete mode 100644 dev-assets/doodads/bird/red/left-1.png delete mode 100644 dev-assets/doodads/bird/red/left-2.png delete mode 100644 dev-assets/doodads/bird/red/right-1.png delete mode 100644 dev-assets/doodads/bird/red/right-2.png delete mode 100644 dev-assets/doodads/box/Makefile delete mode 100644 dev-assets/doodads/box/box-1.png delete mode 100644 dev-assets/doodads/box/box-2.png delete mode 100644 dev-assets/doodads/box/box-3.png delete mode 100644 dev-assets/doodads/box/box-4.png delete mode 100644 dev-assets/doodads/box/box.js delete mode 100644 dev-assets/doodads/boy/Makefile delete mode 100644 dev-assets/doodads/boy/boy.js delete mode 100644 dev-assets/doodads/boy/idle-left-1.png delete mode 100644 dev-assets/doodads/boy/idle-left-2.png delete mode 100644 dev-assets/doodads/boy/idle-left-3.png delete mode 100644 dev-assets/doodads/boy/idle-right-1.png delete mode 100644 dev-assets/doodads/boy/idle-right-2.png delete mode 100644 dev-assets/doodads/boy/idle-right-3.png delete mode 100644 dev-assets/doodads/boy/stand-left.png delete mode 100644 dev-assets/doodads/boy/stand-right.png delete mode 100644 dev-assets/doodads/boy/walk-left-1.png delete mode 100644 dev-assets/doodads/boy/walk-left-2.png delete mode 100644 dev-assets/doodads/boy/walk-left-3.png delete mode 100644 dev-assets/doodads/boy/walk-right-1.png delete mode 100644 dev-assets/doodads/boy/walk-right-2.png delete mode 100644 dev-assets/doodads/boy/walk-right-3.png delete mode 100644 dev-assets/doodads/boy/walk-right.gif delete mode 100755 dev-assets/doodads/build.sh delete mode 100644 dev-assets/doodads/buttons/Makefile delete mode 100644 dev-assets/doodads/buttons/README.md delete mode 100644 dev-assets/doodads/buttons/button.js delete mode 100644 dev-assets/doodads/buttons/button1.png delete mode 100644 dev-assets/doodads/buttons/button2.png delete mode 100644 dev-assets/doodads/buttons/sticky.js delete mode 100644 dev-assets/doodads/buttons/sticky1.png delete mode 100644 dev-assets/doodads/buttons/sticky2.png delete mode 100644 dev-assets/doodads/buttons/typeB1.png delete mode 100644 dev-assets/doodads/buttons/typeB2.png delete mode 100644 dev-assets/doodads/crumbly-floor/Makefile delete mode 100644 dev-assets/doodads/crumbly-floor/crumbly-floor.js delete mode 100644 dev-assets/doodads/crumbly-floor/fall1.png delete mode 100644 dev-assets/doodads/crumbly-floor/fall2.png delete mode 100644 dev-assets/doodads/crumbly-floor/fall3.png delete mode 100644 dev-assets/doodads/crumbly-floor/fall4.png delete mode 100644 dev-assets/doodads/crumbly-floor/fallen.png delete mode 100644 dev-assets/doodads/crumbly-floor/floor.png delete mode 100644 dev-assets/doodads/crumbly-floor/shake1.png delete mode 100644 dev-assets/doodads/crumbly-floor/shake2.png delete mode 100644 dev-assets/doodads/crusher/Makefile delete mode 100644 dev-assets/doodads/crusher/angry.png delete mode 100644 dev-assets/doodads/crusher/crusher.js delete mode 100644 dev-assets/doodads/crusher/ouch.png delete mode 100644 dev-assets/doodads/crusher/peek-left.png delete mode 100644 dev-assets/doodads/crusher/peek-right.png delete mode 100644 dev-assets/doodads/crusher/sleep.png delete mode 100644 dev-assets/doodads/doors/Makefile delete mode 100644 dev-assets/doodads/doors/README.md delete mode 100644 dev-assets/doodads/doors/blue-closed.png delete mode 100644 dev-assets/doodads/doors/blue-key.png delete mode 100644 dev-assets/doodads/doors/blue-left.png delete mode 100644 dev-assets/doodads/doors/blue-right.png delete mode 100644 dev-assets/doodads/doors/blue-unlocked.png delete mode 100644 dev-assets/doodads/doors/blue1.png delete mode 100644 dev-assets/doodads/doors/blue2.png delete mode 100755 dev-assets/doodads/doors/build.sh delete mode 100644 dev-assets/doodads/doors/colored-door.js delete mode 100644 dev-assets/doodads/doors/electric-door.js delete mode 100644 dev-assets/doodads/doors/electric.gif delete mode 100644 dev-assets/doodads/doors/electric1.png delete mode 100644 dev-assets/doodads/doors/electric2.png delete mode 100644 dev-assets/doodads/doors/electric3.png delete mode 100644 dev-assets/doodads/doors/electric4.png delete mode 100644 dev-assets/doodads/doors/green-closed.png delete mode 100644 dev-assets/doodads/doors/green-key.png delete mode 100644 dev-assets/doodads/doors/green-left.png delete mode 100644 dev-assets/doodads/doors/green-right.png delete mode 100644 dev-assets/doodads/doors/green-unlocked.png delete mode 100644 dev-assets/doodads/doors/green1.png delete mode 100644 dev-assets/doodads/doors/green2.png delete mode 100644 dev-assets/doodads/doors/keys.js delete mode 100644 dev-assets/doodads/doors/red-closed.png delete mode 100644 dev-assets/doodads/doors/red-key.png delete mode 100644 dev-assets/doodads/doors/red-left.png delete mode 100644 dev-assets/doodads/doors/red-right.png delete mode 100644 dev-assets/doodads/doors/red-unlocked.png delete mode 100644 dev-assets/doodads/doors/red1.png delete mode 100644 dev-assets/doodads/doors/red2.png delete mode 100644 dev-assets/doodads/doors/small-closed.png delete mode 100644 dev-assets/doodads/doors/small-key.png delete mode 100644 dev-assets/doodads/doors/small-left.png delete mode 100644 dev-assets/doodads/doors/small-right.png delete mode 100644 dev-assets/doodads/doors/small-unlocked.png delete mode 100644 dev-assets/doodads/doors/yellow-closed.png delete mode 100644 dev-assets/doodads/doors/yellow-key.png delete mode 100644 dev-assets/doodads/doors/yellow-left.png delete mode 100644 dev-assets/doodads/doors/yellow-right.png delete mode 100644 dev-assets/doodads/doors/yellow-unlocked.png delete mode 100644 dev-assets/doodads/doors/yellow1.png delete mode 100644 dev-assets/doodads/doors/yellow2.png delete mode 100644 dev-assets/doodads/gems/Makefile delete mode 100644 dev-assets/doodads/gems/blue-1.png delete mode 100644 dev-assets/doodads/gems/blue-2.png delete mode 100644 dev-assets/doodads/gems/blue-3.png delete mode 100644 dev-assets/doodads/gems/blue-4.png delete mode 100644 dev-assets/doodads/gems/gemstone.js delete mode 100644 dev-assets/doodads/gems/green-1.png delete mode 100644 dev-assets/doodads/gems/green-2.png delete mode 100644 dev-assets/doodads/gems/green-3.png delete mode 100644 dev-assets/doodads/gems/green-4.png delete mode 100644 dev-assets/doodads/gems/red-1.png delete mode 100644 dev-assets/doodads/gems/red-2.png delete mode 100644 dev-assets/doodads/gems/red-3.png delete mode 100644 dev-assets/doodads/gems/red-4.png delete mode 100644 dev-assets/doodads/gems/totem-blue-0.png delete mode 100644 dev-assets/doodads/gems/totem-blue-1.png delete mode 100644 dev-assets/doodads/gems/totem-blue-2.png delete mode 100644 dev-assets/doodads/gems/totem-blue-3.png delete mode 100644 dev-assets/doodads/gems/totem-blue-4.png delete mode 100644 dev-assets/doodads/gems/totem-green-0.png delete mode 100644 dev-assets/doodads/gems/totem-green-1.png delete mode 100644 dev-assets/doodads/gems/totem-green-2.png delete mode 100644 dev-assets/doodads/gems/totem-green-3.png delete mode 100644 dev-assets/doodads/gems/totem-green-4.png delete mode 100644 dev-assets/doodads/gems/totem-red-0.png delete mode 100644 dev-assets/doodads/gems/totem-red-1.png delete mode 100644 dev-assets/doodads/gems/totem-red-2.png delete mode 100644 dev-assets/doodads/gems/totem-red-3.png delete mode 100644 dev-assets/doodads/gems/totem-red-4.png delete mode 100644 dev-assets/doodads/gems/totem-yellow-0.png delete mode 100644 dev-assets/doodads/gems/totem-yellow-1.png delete mode 100644 dev-assets/doodads/gems/totem-yellow-2.png delete mode 100644 dev-assets/doodads/gems/totem-yellow-3.png delete mode 100644 dev-assets/doodads/gems/totem-yellow-4.png delete mode 100644 dev-assets/doodads/gems/totem.js delete mode 100644 dev-assets/doodads/gems/yellow-1.png delete mode 100644 dev-assets/doodads/gems/yellow-2.png delete mode 100644 dev-assets/doodads/gems/yellow-3.png delete mode 100644 dev-assets/doodads/gems/yellow-4.png delete mode 100644 dev-assets/doodads/mischievous.js delete mode 100644 dev-assets/doodads/objects/Makefile delete mode 100644 dev-assets/doodads/objects/anvil.js delete mode 100644 dev-assets/doodads/objects/anvil.png delete mode 100644 dev-assets/doodads/objects/checkpoint-active.png delete mode 100644 dev-assets/doodads/objects/checkpoint-flag.js delete mode 100644 dev-assets/doodads/objects/checkpoint-inactive.png delete mode 100644 dev-assets/doodads/objects/exit-flag.js delete mode 100644 dev-assets/doodads/objects/exit-flag.png delete mode 100644 dev-assets/doodads/objects/start-flag.js delete mode 100644 dev-assets/doodads/objects/start-flag.png delete mode 100644 dev-assets/doodads/on-off/Makefile delete mode 100644 dev-assets/doodads/on-off/blue-button.png delete mode 100644 dev-assets/doodads/on-off/blue-off.png delete mode 100644 dev-assets/doodads/on-off/blue-on.png delete mode 100644 dev-assets/doodads/on-off/orange-button.png delete mode 100644 dev-assets/doodads/on-off/orange-off.png delete mode 100644 dev-assets/doodads/on-off/orange-on.png delete mode 100644 dev-assets/doodads/on-off/state-block-blue.js delete mode 100644 dev-assets/doodads/on-off/state-block-orange.js delete mode 100644 dev-assets/doodads/on-off/state-button.js delete mode 100644 dev-assets/doodads/palette.json delete mode 100644 dev-assets/doodads/regions/Makefile delete mode 100644 dev-assets/doodads/regions/checkpoint-128.png delete mode 100644 dev-assets/doodads/regions/checkpoint.js delete mode 100644 dev-assets/doodads/regions/fire-128.png delete mode 100644 dev-assets/doodads/regions/fire.js delete mode 100644 dev-assets/doodads/regions/goal-128.png delete mode 100644 dev-assets/doodads/regions/goal.js delete mode 100644 dev-assets/doodads/regions/power-128.png delete mode 100644 dev-assets/doodads/regions/power-64.png delete mode 100644 dev-assets/doodads/regions/power.js delete mode 100644 dev-assets/doodads/regions/reset-timer.js delete mode 100644 dev-assets/doodads/regions/stall-128.png delete mode 100644 dev-assets/doodads/regions/stall.js delete mode 100644 dev-assets/doodads/regions/timer-64.png delete mode 100644 dev-assets/doodads/regions/warp-door-64.png delete mode 100644 dev-assets/doodads/snake/Makefile delete mode 100644 dev-assets/doodads/snake/attack-left-1.png delete mode 100644 dev-assets/doodads/snake/attack-left-2.png delete mode 100644 dev-assets/doodads/snake/attack-left-3.png delete mode 100644 dev-assets/doodads/snake/attack-right-1.png delete mode 100644 dev-assets/doodads/snake/attack-right-2.png delete mode 100644 dev-assets/doodads/snake/attack-right-3.png delete mode 100644 dev-assets/doodads/snake/left-1.png delete mode 100644 dev-assets/doodads/snake/left-2.png delete mode 100644 dev-assets/doodads/snake/left-3.png delete mode 100644 dev-assets/doodads/snake/right-1.png delete mode 100644 dev-assets/doodads/snake/right-2.png delete mode 100644 dev-assets/doodads/snake/right-3.png delete mode 100644 dev-assets/doodads/snake/snake.js delete mode 100644 dev-assets/doodads/switches/Makefile delete mode 100644 dev-assets/doodads/switches/down-off.png delete mode 100644 dev-assets/doodads/switches/down-on.png delete mode 100644 dev-assets/doodads/switches/left-off.png delete mode 100644 dev-assets/doodads/switches/left-on.png delete mode 100644 dev-assets/doodads/switches/right-off.png delete mode 100644 dev-assets/doodads/switches/right-on.png delete mode 100644 dev-assets/doodads/switches/switch-off.png delete mode 100644 dev-assets/doodads/switches/switch-on.png delete mode 100644 dev-assets/doodads/switches/switch.js delete mode 100644 dev-assets/doodads/test/index.js delete mode 100644 dev-assets/doodads/thief/Makefile delete mode 100644 dev-assets/doodads/thief/stand-left.png delete mode 100644 dev-assets/doodads/thief/stand-right.png delete mode 100644 dev-assets/doodads/thief/thief.js delete mode 100644 dev-assets/doodads/thief/walk-left-1.png delete mode 100644 dev-assets/doodads/thief/walk-left-2.png delete mode 100644 dev-assets/doodads/thief/walk-left-3.png delete mode 100644 dev-assets/doodads/thief/walk-right-1.png delete mode 100644 dev-assets/doodads/thief/walk-right-2.png delete mode 100644 dev-assets/doodads/thief/walk-right-3.png delete mode 100644 dev-assets/doodads/trapdoors/Makefile delete mode 100644 dev-assets/doodads/trapdoors/README.md delete mode 100644 dev-assets/doodads/trapdoors/down.gif delete mode 100644 dev-assets/doodads/trapdoors/down1.png delete mode 100644 dev-assets/doodads/trapdoors/down2.png delete mode 100644 dev-assets/doodads/trapdoors/down3.png delete mode 100644 dev-assets/doodads/trapdoors/down4.png delete mode 100644 dev-assets/doodads/trapdoors/electric-trapdoor.js delete mode 100644 dev-assets/doodads/trapdoors/electric1.png delete mode 100644 dev-assets/doodads/trapdoors/electric2.png delete mode 100644 dev-assets/doodads/trapdoors/electric3.png delete mode 100644 dev-assets/doodads/trapdoors/electric4.png delete mode 100644 dev-assets/doodads/trapdoors/left1.png delete mode 100644 dev-assets/doodads/trapdoors/left2.png delete mode 100644 dev-assets/doodads/trapdoors/left3.png delete mode 100644 dev-assets/doodads/trapdoors/left4.png delete mode 100644 dev-assets/doodads/trapdoors/right1.png delete mode 100644 dev-assets/doodads/trapdoors/right2.png delete mode 100644 dev-assets/doodads/trapdoors/right3.png delete mode 100644 dev-assets/doodads/trapdoors/right4.png delete mode 100644 dev-assets/doodads/trapdoors/trapdoor.js delete mode 100644 dev-assets/doodads/trapdoors/up1.png delete mode 100644 dev-assets/doodads/trapdoors/up2.png delete mode 100644 dev-assets/doodads/trapdoors/up3.png delete mode 100644 dev-assets/doodads/trapdoors/up4.png delete mode 100644 dev-assets/doodads/warp-door/Makefile delete mode 100644 dev-assets/doodads/warp-door/blue-1.png delete mode 100644 dev-assets/doodads/warp-door/blue-2.png delete mode 100644 dev-assets/doodads/warp-door/blue-3.png delete mode 100644 dev-assets/doodads/warp-door/blue-4.png delete mode 100644 dev-assets/doodads/warp-door/blue-off.png delete mode 100644 dev-assets/doodads/warp-door/door-1.png delete mode 100644 dev-assets/doodads/warp-door/door-2.png delete mode 100644 dev-assets/doodads/warp-door/door-3.png delete mode 100644 dev-assets/doodads/warp-door/door-4.png delete mode 100644 dev-assets/doodads/warp-door/orange-1.png delete mode 100644 dev-assets/doodads/warp-door/orange-2.png delete mode 100644 dev-assets/doodads/warp-door/orange-3.png delete mode 100644 dev-assets/doodads/warp-door/orange-4.png delete mode 100644 dev-assets/doodads/warp-door/orange-off.png delete mode 100644 dev-assets/doodads/warp-door/warp-door.js diff --git a/dev-assets/doodads/azulian/Makefile b/dev-assets/doodads/azulian/Makefile deleted file mode 100644 index d9e4930..0000000 --- a/dev-assets/doodads/azulian/Makefile +++ /dev/null @@ -1,27 +0,0 @@ -SHELL = /bin/bash - -ALL: build - -.PHONY: build -build: - doodad convert -t "Blue Azulian" blu-front.png blu-back.png \ - blu-wr{1,2,3,4}.png blu-wl{1,2,3,4}.png azu-blu.doodad - doodad edit-doodad --tag "color=blue" azu-blu.doodad - doodad install-script azulian.js azu-blu.doodad - - doodad convert -t "Red Azulian" red-front.png red-back.png \ - red-wr{1,2,3,4}.png red-wl{1,2,3,4}.png azu-red.doodad - doodad edit-doodad --tag "color=red" azu-red.doodad - doodad install-script azulian.js azu-red.doodad - - doodad convert -t "White Azulian" white-front.png white-back.png \ - white-wr{1,2,3,4}.png white-wl{1,2,3,4}.png azu-white.doodad - doodad edit-doodad --tag "color=white" azu-white.doodad - doodad install-script azulian.js azu-white.doodad - - # Tag the category for these doodads - for i in *.doodad; do\ - doodad edit-doodad --tag "category=creatures" $${i};\ - done - - cp *.doodad ../../../assets/doodads/ diff --git a/dev-assets/doodads/azulian/azulian.js b/dev-assets/doodads/azulian/azulian.js deleted file mode 100644 index 73e0943..0000000 --- a/dev-assets/doodads/azulian/azulian.js +++ /dev/null @@ -1,178 +0,0 @@ -// Azulian (Red and Blue) - -const color = Self.GetTag("color"); -var playerSpeed = color === 'blue' ? 2 : 4, - swimSpeed = playerSpeed * 0.4, - aggroX = 250, // X/Y distance sensitivity from player - aggroY = color === 'blue' ? 100 : 200, - jumpSpeed = color === 'blue' ? 14 : 18, - swimJumpSpeed = jumpSpeed * 0.4, - animating = false, - direction = "right", - lastDirection = "right"; - -// white Azulian is faster yet than the red -if (color === 'white') { - aggroX = 1000; - aggroY = 400; - playerSpeed = 8; - swimSpeed = playerSpeed * 0.4; - jumpSpeed = 20; - swimJumpSpeed = jumpSpeed * 0.4; -} - -function setupAnimations(color) { - let left = color === 'blue' ? 'blu-wl' : color + '-wl', - right = color === 'blue' ? 'blu-wr' : color + '-wr', - leftFrames = [left + '1', left + '2', left + '3', left + '4'], - rightFrames = [right + '1', right + '2', right + '3', right + '4']; - - Self.AddAnimation("walk-left", 100, leftFrames); - Self.AddAnimation("walk-right", 100, rightFrames); -} - -function main() { - playerSpeed = color === 'blue' ? 2 : 4; - - let swimJumpCooldownTick = 0, // minimum Game Tick before we can jump while swimming - swimJumpCooldown = 10; // CONFIG: delta of ticks between jumps while swimming - - Self.SetMobile(true); - Self.SetGravity(true); - Self.SetInventory(true); - Self.SetHitbox(0, 0, 24, 32); - setupAnimations(color); - - if (Self.IsPlayer()) { - return playerControls(); - } - - // A.I. pattern: walks back and forth, turning around - // when it meets resistance. - - // Sample our X position every few frames and detect if we've hit a solid wall. - let sampleTick = 0; - let sampleRate = 5; - let lastSampledX = 0; - - // Get the player on touch. - Events.OnCollide((e) => { - // If we're diving and we hit the player, game over! - // Azulians are friendly to Thieves though! - if (e.Settled && isPlayerFood(e.Actor)) { - FailLevel("Watch out for the Azulians!"); - return; - } - }); - - setInterval(() => { - // If the player is nearby, walk towards them. Otherwise, default pattern - // is to walk back and forth. - let player = Actors.FindPlayer(), - followPlayer = false, - jump = false; - - // Don't follow boring players. - if (player !== null && isPlayerFood(player)) { - let playerPt = player.Position(), - myPt = Self.Position(); - - // If the player is within aggro range, move towards. - if ((Math.abs(playerPt.X - myPt.X) < aggroX && Math.abs(playerPt.Y - myPt.Y) < aggroY) - || (Level.Difficulty > 0)) { - direction = playerPt.X < myPt.X ? "left" : "right"; - followPlayer = true; - - if (playerPt.Y + player.Size().H < myPt.Y + Self.Size().H) { - jump = true; - } - } - } - - // Default AI: sample position so we turn around on obstacles. - if (!followPlayer) { - if (sampleTick % sampleRate === 0) { - let curX = Self.Position().X; - let delta = Math.abs(curX - lastSampledX); - if (delta < 5) { - direction = direction === "right" ? "left" : "right"; - } - lastSampledX = curX; - } - sampleTick++; - } - - // Handle being underwater. - let canJump = Self.Grounded(); - if (Self.IsWet()) { - let tick = GetTick(); - if (tick > swimJumpCooldownTick) { - canJump = true; - swimJumpCooldownTick = tick + swimJumpCooldown; - } - } - - // How speedy would our movement and jump be? - let xspeed = playerSpeed, yspeed = jumpSpeed; - if (Self.IsWet()) { - xspeed = swimSpeed; - yspeed = swimJumpSpeed; - } - - let Vx = parseFloat(xspeed * (direction === "left" ? -1 : 1)), - Vy = jump && canJump ? parseFloat(-yspeed) : Self.GetVelocity().Y; - Self.SetVelocity(Vector(Vx, Vy)); - - // If we changed directions, stop animating now so we can - // turn around quickly without moonwalking. - if (direction !== lastDirection) { - Self.StopAnimation(); - } - - if (!Self.IsAnimating()) { - Self.PlayAnimation("walk-" + direction, null); - } - - lastDirection = direction; - }, 10); -} - -function playerControls() { - // Note: player speed is controlled by the engine. - Events.OnKeypress((ev) => { - if (ev.Right) { - if (!Self.IsAnimating()) { - Self.PlayAnimation("walk-right", null); - } - } else if (ev.Left) { - if (!Self.IsAnimating()) { - Self.PlayAnimation("walk-left", null); - } - } else { - Self.StopAnimation(); - animating = false; - } - }) -} - -// Logic to decide if the player is interesting to the Azulian (aka, if the Azulian -// will be hostile towards the player). Boring players will not be chased after and -// the Azulian will not harm them if they make contact. -function isPlayerFood(actor) { - // Not a player or is invulnerable, or Peaceful difficulty. - if (!actor.IsPlayer() || actor.Invulnerable() || Level.Difficulty < 0) { - return false; - } - - // On hard mode they are hostile to any player. - if (Level.Difficulty > 0) { - return true; - } - - // Azulians are friendly to Thieves and other Azulians. - if (actor.Doodad().Filename === "thief.doodad" || actor.Doodad().Title.indexOf("Azulian") > -1) { - return false; - } - - return true; -} diff --git a/dev-assets/doodads/azulian/blu-back.png b/dev-assets/doodads/azulian/blu-back.png deleted file mode 100644 index 066eaa1e75280f229194571e66196b2f1c7662b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 864 zcmV-m1E2hfP)EX>4Tx04R}tkv&MmP!xqvQ%glE4t5ZA$WWauh>AFB6^c+H)C#RSn7s54nlvOS zE{=k0!NH%!s)LKOt`4q(Aov5~;_9U6A|>9J6k5c1;qgAsyXWxUeSpxYFwN>32Q=L_ z)5(OG&8>>zSA-Bi5JMP{nPtpLQVPEHbx*xicX6KO-}h(rs(Fh60g-r?8KzCVK|H-_ z8=UuvqpT#W#OK6gCS8#Dk?V@bZ=8!R3p_JwX43P-QDU*!!Ab|SlBp3-5yw=bb^8^S!16O+6Uu^(0pQP8@ zTI>ku+XgPK+nTZmTeSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00B5jL_t(o!|hi~5`!=Z#ZJx|&s5Ijozg|5Vt#xyoi1d? zO*HWGAP)q1?6Hx>cbe_vH5G(nZ;+it0DuIzE<@+7_b~z>UIb8rpul;JTlxZ_;0g*IIW1VH#$1GxZE2jCis~8*{Pa{e4K~6sp9CUr)PpF4^ZF1{ zk{Q@ieuxdu#FoYnzn=Vilb(1%+!EXiq6|XcxTP4^L&ajOL2!jD)y`0~<7>!4$of$i zok9nKF)gW~e6VYNIiyM3xm90000 diff --git a/dev-assets/doodads/azulian/blu-front.png b/dev-assets/doodads/azulian/blu-front.png deleted file mode 100644 index 8f22c99524f7f8b6649a381ca4f7fbf0afd62a09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 829 zcmV-D1H$}?P)EX>4Tx04R}tkv&MmP!xqvQ%glE4t5ZA$WWauh>AFB6^c+H)C#RSn7s54nlvOS zE{=k0!NH%!s)LKOt`4q(Aov5~;_9U6A|>9J6k5c1;qgAsyXWxUeSpxYFwN>32Q=L_ z)5(OG&8>>zSA-Bi5JMP{nPtpLQVPEHbx*xicX6KO-}h(rs(Fh60g-r?8KzCVK|H-_ z8=UuvqpT#W#OK6gCS8#Dk?V@bZ=8!R3p_JwX43P-QDU*!!Ab|SlBp3-5yw=bb^8^S!16O+6Uu^(0pQP8@ zTI>ku+XgPK+nTZmTeSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{009+AL_t(o!|hgE5`r)c+%g=AGnF%uGjXT*p+zixYy(w4 z$c!@@#$=Q1h5)zSRx-b6?-)Z@5X67SdJqo)3YlFocD!xbKtgiD zM!uad5V^o_Kb;%^95u&=fS+TL<7k>m825Q{(8*ToV_EA6;$o|HvdLXG^^qi~{ zAX4A6$y5HO5yEX>4Tx04R}tkv&MmP!xqvQ%glE4t5ZA$WWauh>AFB6^c+H)C#RSn7s54nlvOS zE{=k0!NH%!s)LKOt`4q(Aov5~;_9U6A|>9J6k5c1;qgAsyXWxUeSpxYFwN>32Q=L_ z)5(OG&8>>zSA-Bi5JMP{nPtpLQVPEHbx*xicX6KO-}h(rs(Fh60g-r?8KzCVK|H-_ z8=UuvqpT#W#OK6gCS8#Dk?V@bZ=8!R3p_JwX43P-QDU*!!Ab|SlBp3-5yw=bb^8^S!16O+6Uu^(0pQP8@ zTI>ku+XgPK+nTZmTeSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00BlxL_t(o!|hf}uEQV<9HSnoXCh~c&y+j43zUbUkQhT> zH?@TF5n=3M1_$`XFFXu-6>-*#LQj8-ea z>5w)!GY}(w7*mcD_!%c*y@r?5{QxhsBSrhSriL;uBEX>4Tx04R}tkv&MmP!xqvQ%glE4t5ZA$WWauh>AFB6^c+H)C#RSn7s54nlvOS zE{=k0!NH%!s)LKOt`4q(Aov5~;_9U6A|>9J6k5c1;qgAsyXWxUeSpxYFwN>32Q=L_ z)5(OG&8>>zSA-Bi5JMP{nPtpLQVPEHbx*xicX6KO-}h(rs(Fh60g-r?8KzCVK|H-_ z8=UuvqpT#W#OK6gCS8#Dk?V@bZ=8!R3p_JwX43P-QDU*!!Ab|SlBp3-5yw=bb^8^S!16O+6Uu^(0pQP8@ zTI>ku+XgPK+nTZmTeSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00Cx6L_t(o!|hhtt-~M?oVDE1OHELdw&2K(gki+gqM(kk~szEqOVe z(w5&C8ZlX&0NW;kD!Ar=7`)Rj_GzzA6AvYOn5FfAegdjO`?ay`F(Jvwyo`$13a|~% z6adI4BDY3WwRHcRknBsv3gm1YK-^av;M9|6Ite^q(Nl0#@|FpQ38WI1606fy9o1ru z0{LYvB}$)I+6Bd#F3)`REO;r2oX{lrTtiZX8n?6HWhw+ET;ZCOep~^zRCPiZeispl zOKDl*Lf%h1|(pC?GM58>!wD*pg(NWcE7WD1pudpmf-<^ k7;j3`b5gx;iR@n*4~{VzAb)Cm<^TWy07*qoM6N<$g4{xk2><{9 diff --git a/dev-assets/doodads/azulian/blu-wl3.png b/dev-assets/doodads/azulian/blu-wl3.png deleted file mode 100644 index 428e733528815f783f485f5eb7dc06df95ff0f10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 853 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 Ef*mYt6951J diff --git a/dev-assets/doodads/azulian/red-front.png b/dev-assets/doodads/azulian/red-front.png deleted file mode 100644 index 8e7b797c2f2fe22f06f5b260355bee085a44df1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 839 zcmV-N1GxN&P)EX>4Tx04R}tkv&MmKpe$iQ)@*k4rY+zkfAzRkSgM+RVYG*P%E_RU_SZ@4|zbb@Z5kfC`M3Imb%a{|zGt~4AUmwAfDc| z4aWP#yi%4_;&bA0lP*a7$aLA`H^wEGIhM(r*~~mKPb`$WSngt_Y-+?)#4%OVDWA)E ztTNtWtX1nu`=0EDk%GRm%ygO~NMR965FtQD9TikzBTlPMiiHgACw=@;*DsPwCRYUt zITlcZ2Fdk<{lV{Ut>R?DONu0c(2L`Ii~`|Zpw)1k?_eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00AFKL_t(o!|hhf62l+}Tr>Gr`6m2Xd+6BG1Qm?7J%pJY znpjxb2dZ+#Kw{rWUonuB!86Y4e zc{`1gPVgFyW(rOqjJ)?W6h@j$&0#BeO^{)W_tht diff --git a/dev-assets/doodads/azulian/red-wl1.png b/dev-assets/doodads/azulian/red-wl1.png deleted file mode 100644 index a05f987bd187774b63e57b5133d23e84d814f962..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 803 zcmV+;1Kj+HP)EX>4Tx04R}tkv&MmKpe$iQ)@*k4rY+zkfAzRkSgM+RVYG*P%E_RU_SZ@4|zbb@Z5kfC`M3Imb%a{|zGt~4AUmwAfDc| z4aWP#yi%4_;&bA0lP*a7$aLA`H^wEGIhM(r*~~mKPb`$WSngt_Y-+?)#4%OVDWA)E ztTNtWtX1nu`=0EDk%GRm%ygO~NMR965FtQD9TikzBTlPMiiHgACw=@;*DsPwCRYUt zITlcZ2Fdk<{lV{Ut>R?DONu0c(2L`Ii~`|Zpw)1k?_eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{008?*L_t(o!|j$^3dA4`MQ>!*YSt7t>wL@zj`&ETr3_Rk z^rxPin^%G7Jm=66AbY+GcfyYd5Fkep+#+BX4gj=cc?(a>VB?*yJEC?wpn+Rm2yQs@ z=TUw;>XhJy1ArnGE7#050OldMwO^AmyMWGx>FdY{KC27zT9~T*x0h?-E(Z#@26*8n z0kzGgqGteYI|ePB0V?nkVHDX~L}~%ENLmpLP-0e#3l?~r-xH(Sy$z$tPeGPxXDPtF zQ9Kak-HK`vStMtXJbS-%9rrqEk`G2 hz>Wx)1D0K}I&T`&v7Vh?b*caW002ovPDHLkV1mL|SGfQH diff --git a/dev-assets/doodads/azulian/red-wl2.png b/dev-assets/doodads/azulian/red-wl2.png deleted file mode 100644 index a4f746851cc19f932ef7966ecee7d2459d614df3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 816 zcmV-01JC@4P)EX>4Tx04R}tkv&MmKpe$iQ)@*k4rY+zkfAzRkSgM+RVYG*P%E_RU_SZ@4|zbb@Z5kfC`M3Imb%a{|zGt~4AUmwAfDc| z4aWP#yi%4_;&bA0lP*a7$aLA`H^wEGIhM(r*~~mKPb`$WSngt_Y-+?)#4%OVDWA)E ztTNtWtX1nu`=0EDk%GRm%ygO~NMR965FtQD9TikzBTlPMiiHgACw=@;*DsPwCRYUt zITlcZ2Fdk<{lV{Ut>R?DONu0c(2L`Ii~`|Zpw)1k?_eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{009U|L_t(o!|he=3WG2VJd4k2o+*9V?#Jv1(Mt0%g|UJ# zhUTux-39ocUpWjk&v)fX@Du_Jw2c{$5Qu^Uz!GV>2CqaQW6kx6Te~|j18(g?af1`R zpP);M8yo;8M$x|=kuYljL_=WR{+W^437izHdq+mIztY9(6te1r(h$NxGQ**%5!t@{-*-Fkn63?z}SO*FC)n(Lg zS&0tz%3Mw+NA%xT;iYUtJ%*6iJza?0IwV2@mO8nH(+KDwlA=pVJFDEX>4Tx04R}tkv&MmKpe$iQ)@*k4rY+zkfAzRkSgM+RVYG*P%E_RU_SZ@4|zbb@Z5kfC`M3Imb%a{|zGt~4AUmwAfDc| z4aWP#yi%4_;&bA0lP*a7$aLA`H^wEGIhM(r*~~mKPb`$WSngt_Y-+?)#4%OVDWA)E ztTNtWtX1nu`=0EDk%GRm%ygO~NMR965FtQD9TikzBTlPMiiHgACw=@;*DsPwCRYUt zITlcZ2Fdk<{lV{Ut>R?DONu0c(2L`Ii~`|Zpw)1k?_eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{008(&L_t(o!|hf}4#gk{oSL4soCz<>TQnxbr&W-~O-Y(G z{WvhrfWQ}D1O)@)`7iAR4@rOlxtOsffmLt-I94dH!7~xaxaPT|YBvKj;8qrr8=UCA z7TuBD-~jNz#;i5%E+D#r8{mb0i%w3v1=_#>%nq0mVXvC3_P++!HXVu5%s>GyN#%|Z z!>r1H2(vICr851j_kHiZD*?Tb2B<+i;8QMm+QWF0000EX>4Tx04R}tkv&MmKpe$iQ)@*k4rY+zkfAzRkSgM+RVYG*P%E_RU_SZ@4|zbb@Z5kfC`M3Imb%a{|zGt~4AUmwAfDc| z4aWP#yi%4_;&bA0lP*a7$aLA`H^wEGIhM(r*~~mKPb`$WSngt_Y-+?)#4%OVDWA)E ztTNtWtX1nu`=0EDk%GRm%ygO~NMR965FtQD9TikzBTlPMiiHgACw=@;*DsPwCRYUt zITlcZ2Fdk<{lV{Ut>R?DONu0c(2L`Ii~`|Zpw)1k?_eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{009e0L_t(o!|hh>3WG2Zi{i7c&vd?Q{o!sLM_YRzqcBzw zRMf;YNelePuM7gJ=e>O;cnSdm>Wc_V2t>gFV2enu!Ov1qjNd#~{Iy$w8E~r#yBoZe z`v{KR4GsVkQ}Gm0dkRXqfg9jjekML5ao8i!1_tl}@1?|L!k+O?G5@WLNAUC>~a0H0xgLde8wwzO{ff*mUn9}WaZs#La*Dy%W>=6nt8wE?>6LfzWz$} xjz~!GEI-(Kfa52oAi66yZ%SJmk4O(J9~VJ;+q)|w8y)}v002ovPDHLkV1oY*V=e#y diff --git a/dev-assets/doodads/azulian/red-wr1.png b/dev-assets/doodads/azulian/red-wr1.png deleted file mode 100644 index dfcfffebc1529a1cdf2ba548d5464ac386bdeda3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 829 zcmV-D1H$}?P)EX>4Tx04R}tkv&MmKpe$iQ)@*k4rY+zkfAzRkSgM+RVYG*P%E_RU_SZ@4|zbb@Z5kfC`M3Imb%a{|zGt~4AUmwAfDc| z4aWP#yi%4_;&bA0lP*a7$aLA`H^wEGIhM(r*~~mKPb`$WSngt_Y-+?)#4%OVDWA)E ztTNtWtX1nu`=0EDk%GRm%ygO~NMR965FtQD9TikzBTlPMiiHgACw=@;*DsPwCRYUt zITlcZ2Fdk<{lV{Ut>R?DONu0c(2L`Ii~`|Zpw)1k?_eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{009+AL_t(o!|j*R4uc>JMK5IEO24W6ta~ubN&riX^Tj4h zjGJ(Gds-^+#v6uUU|Y3Td|HHAKw@4ZB6=QPAtG3;Pt2!#nFs(thV?!x^7s=(w9SeL z-hW?5CYo|0_BK-ImT3PNxrlDS4*N|a;tb^kge*2XiC{j7a5EtDUFWrk8u6fIA!wm% zEhyb-iP4A{ra)TW%WGmrVn!xHHl#pZej9VMGV1S21@(Tvv=PY^r5(bf5fS;TKyK0k zaRi~Z8O51)+q1OCiAKbwfEI{#bzHS)w*$3^f6NKPYAA&Fu5UYz2?&Mm0;b1)(?Bxn zg0n~Q?M>?Tnefr6cvS?i{SrcX7-?Aut2V!79`L*!X&v|iEF8w!8h;wu00000NkvXX Hu0mjfO!R1G diff --git a/dev-assets/doodads/azulian/red-wr2.png b/dev-assets/doodads/azulian/red-wr2.png deleted file mode 100644 index a79f3a34527defa22a270235fad0633981d18dc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 834 zcmV-I1HJr-P)EX>4Tx04R}tkv&MmKpe$iQ)@*k4rY+zkfAzRkSgM+RVYG*P%E_RU_SZ@4|zbb@Z5kfC`M3Imb%a{|zGt~4AUmwAfDc| z4aWP#yi%4_;&bA0lP*a7$aLA`H^wEGIhM(r*~~mKPb`$WSngt_Y-+?)#4%OVDWA)E ztTNtWtX1nu`=0EDk%GRm%ygO~NMR965FtQD9TikzBTlPMiiHgACw=@;*DsPwCRYUt zITlcZ2Fdk<{lV{Ut>R?DONu0c(2L`Ii~`|Zpw)1k?_eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00A0FL_t(o!|hhl4#OY_Jk7pUz6pPpJ#222OxFV4vScQv zjka>a9RU2tFAfGI>#X{15N-gCIR!+G{G0)zcwFC@H*1{;06>oOE*Wur03wp3AWHQ1 zc66dco~U7#6Wykh7j<>hT?akg?*dVeu$+L>m7xs?<_(CD2d0M9-V{id3^n0qGSl99 zMb15hoXU`Z0wQV5OPN`a&EbW&(qlk`S%g_ExyIgD*WYIrExZDu*Q~(-B&`;#h&c`6 zS;ff8Q^()RHWk3i3*C_e!u^1LZ_MaKX??;jLh7fN`6U8kmJcX!Zi+lV){;f~fD{0> z7T82|zU%MPhT)V{yfXeSEvGi63`o=Lzdgjuhms+|VQj2_REE)U1-7a2ZttjA4FCWD M07*qoM6N<$f~cWziU0rr diff --git a/dev-assets/doodads/azulian/red-wr3.png b/dev-assets/doodads/azulian/red-wr3.png deleted file mode 100644 index 5e79c3616c13d1b8e1e7893c9c3da93febdb0fd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 815 zcmV+~1JL}5P)EX>4Tx04R}tkv&MmKpe$iQ)@*k4rY+zkfAzRkSgM+RVYG*P%E_RU_SZ@4|zbb@Z5kfC`M3Imb%a{|zGt~4AUmwAfDc| z4aWP#yi%4_;&bA0lP*a7$aLA`H^wEGIhM(r*~~mKPb`$WSngt_Y-+?)#4%OVDWA)E ztTNtWtX1nu`=0EDk%GRm%ygO~NMR965FtQD9TikzBTlPMiiHgACw=@;*DsPwCRYUt zITlcZ2Fdk<{lV{Ut>R?DONu0c(2L`Ii~`|Zpw)1k?_eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{009R{L_t(o!|j$$4#Xe`g`cEnEoZ{ZGK&c_YWkx{+f7Nj z(Nv$$4+MDQ4Mzx|QESoDBHRL2kq{9y^K*oV}4TEZSL(2ryZDm3qJaQzLxsK1yle4002ovPDHLkV1li5XOsW{ diff --git a/dev-assets/doodads/azulian/red-wr4.png b/dev-assets/doodads/azulian/red-wr4.png deleted file mode 100644 index 219ec34fef6dc46e070d313287e620c2814c63bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 838 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 QGf;-X)78&qol`;+08G`H-v9sr diff --git a/dev-assets/doodads/azulian/white-wl3.png b/dev-assets/doodads/azulian/white-wl3.png deleted file mode 100644 index a87537f553db50a80fddf5410bc07ba71e18efc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1026 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vLGRFxF%`I|pPYCo?c;Ost(~>v1?h zq}4yz+f|FNOrZ2cz+9bW~QF;4C31NwbXxaNO|GBr}w|7e_d7C&B!>hVw&VK-#v~tdo!iyeD7SmMrHMp z=SPy&Vki8V_`2(O{+w<-ZX4sQv`e3l1SV~~anOr>^Q4u6{({Fte3#cKzTSAMvU_vb z%8l1-e{w5V)~3#Uy`^p95v6Ggjx9}6r&b(rn^QJdggev9|HlvZ*!?bgtud(vMLG+( zcsIRf|KEIn^H#3O!f`<=j4g38&y!g=-ZP!u^|(gf+V3+9haGcx)$RCP2IKiluHTM& z!|~!ao8G$Hvo^8EyklVYZ_7EgPGpIy2-kt%lC{BnFZQ!mUE8yB>$$>T3@I65E2SSi z5RlLf`nK!*?%meUzvcU9*V+GdEvhJY*m4>aDajr|z6=aiY77hwEes65fIzr%$ffT4FCWC_s(M02Z}S7 z1o;I6>0f0>?g1&rByV>Yw#2j@wLlJMfk$L91B0G22s2hJwJ!q-vX^-Jy0SlG6lP*k zI@o);04Oxm)5S4FVWer1_1)=3^ZE0n818MsIhRv(`+ujTikpV=X;b=LWM`b&BIO4681OVc=1~* zeAU)nGJ-E(n?Gjm-6(fs&jOSAKu1cJxJHyX=jZ08=9Mrw7o{eaq^2m8XO?6rxO@5r zgg5eu0~M))6r}*AtdhYh7>o>z40R2G$RfnR(8}1t%Ggrdz`)ADK+qr{0YyV@eoAIq zC2kD~xi9VjHAsVO0A?bqH6Ahz*%9LQrQc{bP zi!uvJGV}8oKn_(%D$UF((ap?LC=POW@=13T2C5c?sm@KzD@{vGE-5WaEdnd|nK$7S fPyruYL4HbV4g*MQbb_ZdP=>+N)z4*}Q$iB}EWe0o diff --git a/dev-assets/doodads/azulian/white-wl4.png b/dev-assets/doodads/azulian/white-wl4.png deleted file mode 100644 index 74016073bbc65388fc9ed3ac96f4f9bd0a4a080f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1002 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vLGRFxF%`I|pPYCo?c;Ost(~>v1?h zq}4yz+f|FNOrZ2cz+9bW~QF;4C31NwbXxaNO|GBr}w|7e_d7C&B!>hVw&VK-#v~tdo!iyeD7SmMrHMp z=SPy&Vki8V_`2(O{+w<-ZX4sQv`e3l1SV~~anOr>^Q4u6{({Fte3#cKzTSAMvU_vb z%8l1-e{w5V)~3#Uy`^p95v6Ggjx9}6r&b(rn^QJdggev9|HlvZ*!?bgtud(vMLG+( zcsIRf|KEIn^H#3O!f`<=j4g38&y!g=-ZP!u^|(gf+V3+9haGcx)$RCP2IKiluHTM& z!|~!ao8G$Hvo^8EyklVYZ_7EgPGpIy2-kt%lC{BnFZQ!mUE8yB>$$>T3@I65E2SSi z5RlLf`nK!*?%meUzvcU9*V+GdEvhJY*m4>aDajr|z6=aiY77hwEes65fIOm3p^r=85s1GL71^(seKtxkiEpy*OmPlqc9V@h^myR z7Eq|o)5S4Ff)u3yrL2;{Dj19mj0|-R zfyg4nz|hLr!phiE+rYrez(CL-AOS@~ZhlH;S|x4`3Ar!s05wR1Yyf5!tK|HG%A(Bl zj1q=`(xjZsWCfS}+{DbhZ4(Wnfy$I%%2HB`lZ!G7N;32F7(fnHNGi?DDbdZ$Qz#B{ zck)Sh6b7mmg{jU>%qvYxOfD%cN-Y8__n9~06i@*lTtR+HY7PTPYjlFAGf;-X)78&q Iol`;+0A)md!2kdN diff --git a/dev-assets/doodads/azulian/white-wr1.png b/dev-assets/doodads/azulian/white-wr1.png deleted file mode 100644 index d9c26d1cbbdf0596f7360a911a278555f6106170..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 994 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vLGRFxF%`I|pPYCo?c;Ost(~>v1?h zq}4yz+f|FNOrZ2cz+9bW~QF;4C31NwbXxaNO|GBr}w|7e_d7C&B!>hVw&VK-#v~tdo!iyeD7SmMrHMp z=SPy&Vki8V_`2(O{+w<-ZX4sQv`e3l1SV~~anOr>^Q4u6{({Fte3#cKzTSAMvU_vb z%8l1-e{w5V)~3#Uy`^p95v6Ggjx9}6r&b(rn^QJdggev9|HlvZ*!?bgtud(vMLG+( zcsIRf|KEIn^H#3O!f`<=j4g38&y!g=-ZP!u^|(gf+V3+9haGcx)$RCP2IKiluHTM& z!|~!ao8G$Hvo^8EyklVYZ_7EgPGpIy2-kt%lC{BnFZQ!mUE8yB>$$>T3@I65E2SSi z5RlLf`nK!*?%meUzvcU9*V+GdEvhJY*m4>aDajr|z6=aiY77hwEes65fITT$X?><>&pI&QJ9HE?}YXIXrNG| zr;B5V#`(1q4)QV^a- z=Xft_wS5sw#WIM3mX1dm`g=e9oIZ5p>G|)UnQ$= zz3J@g@@+4}z6crrU|>6^TJ)dmOKHi%caL)!Tg}tg^YZIUpkpLUTq8=H^K)}k z^GX<;i&7IyQd1PlGfOfQ+&z5*!W;R-fr?Z?ic)}5R>@!$3`PbQch;F zf=hmGVrJg9iH4w{Q-Uc=Ni9w;$}A|!%+F&0IaDF3G&83}H#1M6ILO_}C*4sPs9F@J yIyW(|G%Yc?q_ilt2&~*^-h@*?1$=M?`6;P63?Qx137*bC83s>RKbLh*2~7ZAdwjM4 diff --git a/dev-assets/doodads/azulian/white-wr2.png b/dev-assets/doodads/azulian/white-wr2.png deleted file mode 100644 index 1a1a56680c69979ff4e316bee7765121261f5ba4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1043 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vLGRFxF%`I|pPYCo?c;Ost(~>v1?h zq}4yz+f|FNOrZ2cz+9bW~QF;4C31NwbXxaNO|GBr}w|7e_d7C&B!>hVw&VK-#v~tdo!iyeD7SmMrHMp z=SPy&Vki8V_`2(O{+w<-ZX4sQv`e3l1SV~~anOr>^Q4u6{({Fte3#cKzTSAMvU_vb z%8l1-e{w5V)~3#Uy`^p95v6Ggjx9}6r&b(rn^QJdggev9|HlvZ*!?bgtud(vMLG+( zcsIRf|KEIn^H#3O!f`<=j4g38&y!g=-ZP!u^|(gf+V3+9haGcx)$RCP2IKiluHTM& z!|~!ao8G$Hvo^8EyklVYZ_7EgPGpIy2-kt%lC{BnFZQ!mUE8yB>$$>T3@I65E2SSi z5RlLf`nK!*?%meUzvcU9*V+GdEvhJY*m4>aDajr|z6=aiY77hwEes65fIzr%$ffT3^QlW{Qv*|9J9x1 zKq=;uAirQB{j2QAJs`!H zlfS;Kmk9b*{)vBu_5{%vN{LflLDes;&AvP1}WXTfOh!W@g+}zZ> z5(ej@)Wnk16ovB4k_-iRPv3y>Mm}+%B2|#06rhwc2YH@N=Wo8nRyDuLGDgI>5jrc)uJ%f yxruqDX^F`trA4VlVC6pZCY%B);Dam3Pf5*T0BMa*@N@>sFnGH9xvXv1?h zq}4yz+f|FNOrZ2cz+9bW~QF;4C31NwbXxaNO|GBr}w|7e_d7C&B!>hVw&VK-#v~tdo!iyeD7SmMrHMp z=SPy&Vki8V_`2(O{+w<-ZX4sQv`e3l1SV~~anOr>^Q4u6{({Fte3#cKzTSAMvU_vb z%8l1-e{w5V)~3#Uy`^p95v6Ggjx9}6r&b(rn^QJdggev9|HlvZ*!?bgtud(vMLG+( zcsIRf|KEIn^H#3O!f`<=j4g38&y!g=-ZP!u^|(gf+V3+9haGcx)$RCP2IKiluHTM& z!|~!ao8G$Hvo^8EyklVYZ_7EgPGpIy2-kt%lC{BnFZQ!mUE8yB>$$>T3@I65E2SSi z5RlLf`nK!*?%meUzvcU9*V+GdEvhJY*m4>aDajr|z6=aiY77hwEes65fITT$X?><>&pI&QJ9Iv!sfjeD5X?* zx;TbtoL@WPAnySK4(3GWGi*zwxBPw|=KeR~*QzUjimVJ0zTN&T-ocsGWI82AlzGi1 zu6@f`4qg=%kVy|Vy75@x!Ohtg%CfrY{!h8rW?$2D-fAcj!!~)wD{}>n$o~5x52R0& zS$eJDNjOn?q-TA@VrN!cE#3!)c{9s-%%87VZ3=XQWQl7;iF1B#Zfaf$gL6@8Vo7R> zLV0FMhJw4NZ$Nk>pEyvFDo9ZZP|7M9tb)PFz{pV75Qr>73=FM|Ev$?!wG9lc3=9Mf z0uoR(Rtj{)RRg{0EVoD$v4JcZ&QcPF28M`569QJCu7#Jtk9#N?9F pqSPX=a-Vq4Eq~a*Is;`GJYD@<);T3K0RW;4beRAE diff --git a/dev-assets/doodads/azulian/white-wr4.png b/dev-assets/doodads/azulian/white-wr4.png deleted file mode 100644 index ee29adbdfdabb47217c607593423eab4aa8f26b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 999 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vLGRFxF%`I|pPYCo?c;Ost(~>v1?h zq}4yz+f|FNOrZ2cz+9bW~QF;4C31NwbXxaNO|GBr}w|7e_d7C&B!>hVw&VK-#v~tdo!iyeD7SmMrHMp z=SPy&Vki8V_`2(O{+w<-ZX4sQv`e3l1SV~~anOr>^Q4u6{({Fte3#cKzTSAMvU_vb z%8l1-e{w5V)~3#Uy`^p95v6Ggjx9}6r&b(rn^QJdggev9|HlvZ*!?bgtud(vMLG+( zcsIRf|KEIn^H#3O!f`<=j4g38&y!g=-ZP!u^|(gf+V3+9haGcx)$RCP2IKiluHTM& z!|~!ao8G$Hvo^8EyklVYZ_7EgPGpIy2-kt%lC{BnFZQ!mUE8yB>$$>T3@I65E2SSi z5RlLf`nK!*?%meUzvcU9*V+GdEvhJY*m4>aDajr|z6=aiY77hwEes65fIOm3p^r=85s1GL71^(seKtxkiEpy*OmPlqc9UYgZ+Vn z;Xt8gPZ!4!jq`ISUgT|X;BfBeV4i#6$lvry-aa~a=GW}oviDH$$MO`$7YD36 z)HW8F2*k-+u6Ur*>9aw8{t*M?GA2GlzKL79KUqsn2&lVZ(>$f&#}-ZPoM!?JTbId& zeGiS_mff{x)0`FZ7iTG~<_|f(Hhk}|vdv1f^TRs>bmo6Q$GlmM*S*U8nibGFk|nMY zCC>S|xv6<249-QVi6yBi3gww484B*6z5(HleBwYwsvt!vKq;$aunGnv10zFSLm;vU zF)*|;wy-j`)HX1%GB6M{2uMKDkei>9nO2EgLqhJ0J3tN6ARB-=#VR?!pt2}4J)?vn zpfo8bGg-kUKQ}QmZ`(w}XrMABn6i}A;^d;tf|AVqJO+?M6_QFbb4qkG^Aw7M+?{;V z9fg6aMPaIQ6Z1;b5|c|xi&Bfg%6;ZdI0aO|2Un1vlA6N+(i)xM=?s)%@O1TaS?83{ F1OSKvepLVf diff --git a/dev-assets/doodads/bird/Makefile b/dev-assets/doodads/bird/Makefile deleted file mode 100644 index d0ff88d..0000000 --- a/dev-assets/doodads/bird/Makefile +++ /dev/null @@ -1,22 +0,0 @@ -ALL: build - -.PHONY: build -build: - doodad convert -t "Bird (red)" red/left-1.png red/left-2.png red/right-1.png \ - red/right-2.png red/dive-left.png red/dive-right.png \ - bird-red.doodad - doodad install-script bird.js bird-red.doodad - doodad edit-doodad --tag "color=red" bird-red.doodad - - doodad convert -t "Bird (blue)" blue/left-1.png blue/left-2.png blue/right-1.png \ - blue/right-2.png blue/dive-left.png blue/dive-right.png \ - bird-blue.doodad - doodad install-script bird.js bird-blue.doodad - doodad edit-doodad --tag "color=blue" bird-blue.doodad - - # Tag the category for these doodads - for i in *.doodad; do\ - doodad edit-doodad --tag "category=creatures" $${i};\ - done - - cp *.doodad ../../../assets/doodads/ \ No newline at end of file diff --git a/dev-assets/doodads/bird/bird.js b/dev-assets/doodads/bird/bird.js deleted file mode 100644 index 9a236d8..0000000 --- a/dev-assets/doodads/bird/bird.js +++ /dev/null @@ -1,274 +0,0 @@ -// Bird (red and blue) - -/* -Base A.I. behaviors (red bird) are: - -- Tries to maintain original altitude in level and flies left/right. -- Divebombs the player to attack, then climbs back to its original - altitude when it hits a floor/wall. - -Blue bird: - -- Flies in a sine wave pattern (its target altitude fluctuates - around the bird's original placement on the level). -- Longer aggro radius to dive. -*/ - -let speed = 4, - Vx = Vy = 0, - color = Self.GetTag("color"), // informs our A.I. behaviors - searchStep = 12 // pixels to step while searching for a player - searchLimit = color === "blue" ? 24 : 12, // multiples of searchStep for aggro radius - altitude = Self.Position().Y, // original height in level - targetAltitude = altitude; // bird's target height to maintain - -let direction = "left", - lastDirection = "left"; -let states = { - flying: 0, - diving: 1, -}; -let state = states.flying; - -function main() { - Self.SetMobile(true); - Self.SetGravity(false); - Self.SetHitbox(0, 0, 46, 32); - Self.AddAnimation("fly-left", 100, ["left-1", "left-2"]); - Self.AddAnimation("fly-right", 100, ["right-1", "right-2"]); - - // Player Character controls? - if (Self.IsPlayer()) { - return player(); - } - - Events.OnCollide((e) => { - // If we're diving and we hit the player, game over! - if (e.Settled && state === states.diving && e.Actor.IsPlayer()) { - FailLevel("Watch out for birds!"); - return; - } - - if (e.Actor.IsMobile() && e.Actor.HasGravity() && e.InHitbox) { - return false; - } - }); - - // Sample our X position every few frames and detect if we've hit a solid wall. - let sampleTick = 0, - sampleRate = 2, - lastSampled = Point(0, 0); - - setInterval(() => { - // Run blue bird A.I. if we are blue: moves our target altitude along a sine wave. - if (color === "blue") { - AI_BlueBird(); - } - - // Sample how far we've moved to detect hitting a wall. - if (sampleTick % sampleRate === 0) { - let curP = Self.Position() - let delta = Math.abs(curP.X - lastSampled.X); - if (delta < 5) { - direction = direction === "right" ? "left" : "right"; - } - - // If we were diving, check Y delta too for if we hit floor - if (state === states.diving && Math.abs(curP.Y - lastSampled.Y) < 5) { - state = states.flying; - } - lastSampled = curP - } - sampleTick++; - - // Are we diving? - if (state === states.diving) { - Vy = speed - } else { - // If we are not flying at our original altitude, correct for that. - let curV = Self.Position(); - Vy = 0.0; - if (curV.Y != targetAltitude) { - Vy = curV.Y < targetAltitude ? 1 : -1; - } - - // Scan for the player character and dive. - try { - AI_ScanForPlayer() - } catch (e) { - console.error("Error in AI_ScanForPlayer: %s", e); - } - } - - // TODO: Vector() requires floats, pain in the butt for JS, - // the JS API should be friendlier and custom... - let Vx = parseFloat(speed * (direction === "left" ? -1 : 1)); - Self.SetVelocity(Vector(Vx, Vy)); - - // If diving, exit - don't edit animation. - if (state === states.diving) { - Self.ShowLayerNamed("dive-" + direction); - lastDirection = direction; - return; - } - - // If we changed directions, stop animating now so we can - // turn around quickly without moonwalking. - if (direction !== lastDirection) { - Self.StopAnimation(); - } - - if (!Self.IsAnimating()) { - Self.PlayAnimation("fly-" + direction, null); - } - - lastDirection = direction; - }, 100); -} - -// A.I. subroutine: scan for the player character. -// The bird scans in a 45 degree angle downwards, if the -// player is seen nearby in that scan it will begin a dive. -// It's not hostile towards characters that can fly (having -// no gravity). -function AI_ScanForPlayer() { - // If Peaceful difficulty, do not attack. - if (Level.Difficulty < 0) { - return - } - - let stepY = searchStep, // number of pixels to skip - stepX = stepY, - limit = stepX * searchLimit, // furthest we'll scan - scanX = scanY = 0, - size = Self.Size(), - fromPoint = Self.Position(); - - // From what point do we begin the scan? - if (direction === 'left') { - stepX = -stepX; - fromPoint.Y += size.H; - } else { - fromPoint.Y += size.H; - fromPoint.X += size.W; - } - - scanX = fromPoint.X; - scanY = fromPoint.Y; - - for (let i = 0; i < limit; i += stepY) { - scanX += stepX; - scanY += stepY; - for (let actor of Actors.At(Point(scanX, scanY))) { - if (actor.IsPlayer() && actor.HasGravity()) { - state = states.diving; - return; - } - } - } - - return; -} - -// Sine wave controls for the Blue bird. -var sineLimit = 32, - sineCounter = 0, - sineDirection = 1, - sineFrequency = 5, // every 500ms - sineStep = 16; - -// A.I. Subroutine: sine wave pattern (Blue bird). -function AI_BlueBird() { - // The main loop runs on a 100ms interval, control how frequently - // to adjust the bird's target velocity. - if (sineCounter > 0 && (sineCounter % sineFrequency) > 1) { - sineCounter++; - return; - } - sineCounter++; - - targetAltitude += sineStep*sineDirection; - - // Cap the distance between our starting altitude and sine-wave target. - if (targetAltitude < altitude && altitude - targetAltitude >= sineLimit) { - targetAltitude = altitude - sineLimit; - sineDirection = 1 - } else if (targetAltitude > altitude && targetAltitude - altitude >= sineLimit) { - targetAltitude = altitude + sineLimit; - sineDirection = -1 - } -} - -// If under control of the player character. -function player() { - let playerSpeed = 12, - diving = false, - falling = false; - - // The player can dive by moving downwards and laterally, but - // de-cheese their ability to just sweep across the ground; if - // they aren't seen to be moving downwards, cancel the dive. - let lastPoint = Self.Position(); - setInterval(() => { - let nowAt = Self.Position(); - if (nowAt.Y > lastPoint.Y) { - falling = true; - } else { - falling = false; - } - lastPoint = nowAt; - }, 100); - - Events.OnKeypress((ev) => { - Vx = 0; - Vy = 0; - - if (ev.Right) { - direction = "right"; - } else if (ev.Left) { - direction = "left"; - } - - // Dive! - if (ev.Down && ev.Right && falling) { - Self.StopAnimation(); - Self.ShowLayerNamed("dive-right"); - diving = falling; - } else if (ev.Down && ev.Left && falling) { - Self.StopAnimation(); - Self.ShowLayerNamed("dive-left"); - diving = falling; - } else if (ev.Right) { - // Fly right. - if (!Self.IsAnimating()) { - Self.PlayAnimation("fly-right", null); - } - Vx = playerSpeed; - diving = false; - } else if (ev.Left) { - // Fly left. - if (!Self.IsAnimating()) { - Self.PlayAnimation("fly-left", null); - } - Vx = -playerSpeed; - diving = false; - } else { - // Hover in place. - if (!Self.IsAnimating()) { - Self.PlayAnimation("fly-" + direction); - } - diving = false; - } - - // Player is invulnerable while diving. - Self.SetInvulnerable(diving); - }); - - Events.OnCollide((e) => { - // If the player is diving at an enemy mob, destroy it. - if (diving && e.Settled && e.Actor.IsMobile() && !e.Actor.Invulnerable()) { - Sound.Play("crumbly-break.wav"); - e.Actor.Destroy(); - } - }); -} diff --git a/dev-assets/doodads/bird/blue/dive-left.png b/dev-assets/doodads/bird/blue/dive-left.png deleted file mode 100644 index 1c2f7b77fdd39559b53e77890f8d4fae3a4505bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11089 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 diff --git a/dev-assets/doodads/bird/blue/left-1.png b/dev-assets/doodads/bird/blue/left-1.png deleted file mode 100644 index e988064e317c760ece46902874a83247e1b5bead..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12128 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 vB$94S?u`?+k{)+O@geuR#PEy+zbS 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 diff --git a/dev-assets/doodads/bird/blue/right-1.png b/dev-assets/doodads/bird/blue/right-1.png deleted file mode 100644 index 7c63982b8167c567652782ddd2409dae6c011b21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12350 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 diff --git a/dev-assets/doodads/bird/red/dive-left.png b/dev-assets/doodads/bird/red/dive-left.png deleted file mode 100644 index 4ec579457c580c56832f39711b802c3e8934c173..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 959 zcmV;w13>(VP)nAwr0004mX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZQWT=8*MO4I5t5Adrp;lNGFg)WK9P8q>4rtTK|H-_ z>74h8L#!ZYh|h^f4Z0xlBi9v|-#F(T7IO?@AxHhDdZ}G zkz)a6sE{2$_#gc4*33;#xJkh%(EeiEA45Q37pPZl`}^3o>nDK!8MxA#{&EeN`6RvC z)WSzV_cm~G-PDvl;Bp7(d(ve?b|gPdA(sQ*&*+=dK+i4Ex#srP*vIJukfg5SH^9Lm zFr26Cb&q#eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00EatL_t(o!_}BgZiFxlh3ye1sgx6R(W}e}!c9i%5y)Xm zXW3$IEj7p;D2xG@qk$2xlm=mIz=R><^p*dYHgF z06IQ!Lg-6TdglNDz`#jLDoqI#Z;B*`bKnyzjai`;V9(C`h5OqTwk9VuD9{qt%4JYP zac+$zg(a*P^KAqd=1_Ub4wlUuMd>z@sY$7__L!}5%_vV}3v|-f-A#i6V^HEy-dimW ztx(cLsN9!So40RTP%?+o`xR%&AtSGZ(!2L6J^<~-oMEFcy%_)Or8ih*9$liX>?MWL z(kdmC{U(qV+kG{XX(3k&shzYB_*w%tp!6o$f&v<;gRqTXo;2QMn4G#J3TJ`v> h@=>8x@FT0t>leO(W1=r>n6Ll<002ovPDHLkV1h7|sd)eZ diff --git a/dev-assets/doodads/bird/red/dive-right.png b/dev-assets/doodads/bird/red/dive-right.png deleted file mode 100644 index 8516ae34ad22c02511c88a89b7da341e8d23e063..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 989 zcmV<310wv1P)nAwr0004mX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZQWT=8*MO4I5t5Adrp;lNGFg)WK9P8q>4rtTK|H-_ z>74h8L#!ZYh|h^f4Z0xlBi9v|-#F(T7IO?@AxHhDdZ}G zkz)a6sE{2$_#gc4*33;#xJkh%(EeiEA45Q37pPZl`}^3o>nDK!8MxA#{&EeN`6RvC z)WSzV_cm~G-PDvl;Bp7(d(ve?b|gPdA(sQ*&*+=dK+i4Ex#srP*vIJukfg5SH^9Lm zFr26Cb&q#eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00Fg0L_t(o!`+zCZG$inhVP>6QK^#E5%Su07&Ag72B_2# z@GwnZyMmFBGRgHJIK3DfYy-yBk`)IB^4-txI|D*OBPq#@Q7MGIG?J1C;MQ3X#kZ!1 z*8c@QX8?z}7Z7Hk)V>s_z1hYF&utqF0rbtixhw+!t@$qHYUwfd$*P zcV^a!DnM0#hg5G9-i6~1w9HPjlpLO_ytY)&Ua$9y%JJ@2?YOD?q7_f`V7q=I=Kz;smen zKUfsF%kN!%`+R;HhcEWs_PGWcgFloC{`mpeT>-i)?6;lk;X?fdG(ML9`pVy300000 LNkvXXu0mjf-QB)C diff --git a/dev-assets/doodads/bird/red/left-1.png b/dev-assets/doodads/bird/red/left-1.png deleted file mode 100644 index e3c6e50c07e60cc2e42ff88566d7a96ae4c3de7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1074 zcmV-21kL-2P)nAwr0004mX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZQWT=8*MO4I5t5Adrp;lNGFg)WK9P8q>4rtTK|H-_ z>74h8L#!ZYh|h^f4Z0xlBi9v|-#F(T7IO?@AxHhDdZ}G zkz)a6sE{2$_#gc4*33;#xJkh%(EeiEA45Q37pPZl`}^3o>nDK!8MxA#{&EeN`6RvC z)WSzV_cm~G-PDvl;Bp7(d(ve?b|gPdA(sQ*&*+=dK+i4Ex#srP*vIJukfg5SH^9Lm zFr26Cb&q#eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00Ih0L_t(o!|hl>Zo)7ST%){$N|pQu(i0V5K{EY8rAj^V ziQ=m7=%oT~g(oz=^&{Iu?8q!$XG4K-$Vw|&v5aTOg>(Twy0n&EB#U^g z8QEN2l}e-rl|^33=~M<1SrP<->nAwr0004mX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZQWT=8*MO4I5t5Adrp;lNGFg)WK9P8q>4rtTK|H-_ z>74h8L#!ZYh|h^f4Z0xlBi9v|-#F(T7IO?@AxHhDdZ}G zkz)a6sE{2$_#gc4*33;#xJkh%(EeiEA45Q37pPZl`}^3o>nDK!8MxA#{&EeN`6RvC z)WSzV_cm~G-PDvl;Bp7(d(ve?b|gPdA(sQ*&*+=dK+i4Ex#srP*vIJukfg5SH^9Lm zFr26Cb&q#eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00GuXL_t(o!|hi~Zo?oDeN?_jrAnM3%QQI*IYOn}#B-5u zsyN#mq2@4jVX(${Ft|~E5>G-hX0V4hZw3G=Dk>@}Dk{pMUd2&ojN|>cm!g?yX!l?| zW(oilky<^E2-ZJ#0GgXS>KU>C^xDPvxdGaLr-*UsC;Ue#M+3OSQh$7B%=8`6Y+i7l zN*Q#(v@vJJalrM_bDyy3Gw*o62VCo$$}&wfOalPL%sE3Ob0D$12A0VqFn!3WBrplz zMhML1m=&8bPKs79M9eX!XLbC1+Dx>%-Cv*vkD)x%&bcY;0;>dImtlI;Ylxb!7&>9s z2~0P^>0f)9OxlK(spZIM!FintxsDUi7-%LpZkI~L=6u??@1McxkM~F}vr?jx&O=}w zk)!bx(T)3qB(TbN`^WiBLC%65{> zK3T6mWQ7bisbfRbHw%fy$E_d}%UEA?ELhEaE6BgiFrO=-eWL88P;^!))g3KFfD){0 zVgBKf$L&_wrrXS>HQE$t{if$}Vj2%D5@Vg0M(Zn*dDa_HY0~H9a`zh$XWlZs^XC#g s)Tfn7N;;{nAwr0004mX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZQWT=8*MO4I5t5Adrp;lNGFg)WK9P8q>4rtTK|H-_ z>74h8L#!ZYh|h^f4Z0xlBi9v|-#F(T7IO?@AxHhDdZ}G zkz)a6sE{2$_#gc4*33;#xJkh%(EeiEA45Q37pPZl`}^3o>nDK!8MxA#{&EeN`6RvC z)WSzV_cm~G-PDvl;Bp7(d(ve?b|gPdA(sQ*&*+=dK+i4Ex#srP*vIJukfg5SH^9Lm zFr26Cb&q#eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00J3FL_t(o!|hm0Zo)7SeMX$4JFB~Hp*w=Q={b-bj!;!% zRjE>MKwNQ^R$T#CNTf>bMchRkY8-#Y5GblLk`CwRsV9_aA2aZo zYg}ZLYMA#aPBb!&HkX#vDbH{Fo~iAwu|A13O9^#={xfp|!U{1pywXUa6xLg*sWe{3 z=qlve70VcNMk@l(NSl>5)QdmLJPXw#JfzFSg;x>Y)3D7L)7`qS0DQcS_S`1ZE%O4m z<&F~oQB%zO+yK721wa=2Zr6N-$#lzDtO_LQb3%ELTtyqeKfmhh{oM%B?H$&_I~Gi; zu0K5f_FtaU%WxEwN|4w}qMuFP!6zW;*g=y+udnZscf=|iGVq%PFuv04ZveJB40PTW z1SM#GX~5TuI$S2``Km4zq^FKaVUFsPZ0iM-dac`X29>fFLOFVt!}4+lm5=NG=DWV$ zKDo!*VDkeGnAwr0004mX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZQWT=8*MO4I5t5Adrp;lNGFg)WK9P8q>4rtTK|H-_ z>74h8L#!ZYh|h^f4Z0xlBi9v|-#F(T7IO?@AxHhDdZ}G zkz)a6sE{2$_#gc4*33;#xJkh%(EeiEA45Q37pPZl`}^3o>nDK!8MxA#{&EeN`6RvC z)WSzV_cm~G-PDvl;Bp7(d(ve?b|gPdA(sQ*&*+=dK+i4Ex#srP*vIJukfg5SH^9Lm zFr26Cb&q#eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00G=dL_t(o!|j++j)E`{hW~E73TNbw zHvrY~qyhl%u`~jC)ZP)f4Y=tj~v-hl>g02C`$3aIENJcXAeF&pIxnb!X z6Oj}_SSH#4)Btn^h~jT*OXu1(?OBozW|q94ysr}H6Yz|dNNs^8pXc;>YEty;+_R6F zJPE|E3N?|IArj&d1%O~6@1zOTLcWhEMjCyjRn3rZ0rW7(WbApqdRL8G<%BR;AkP z{gv((b1U+82X6Ncm-Ci3Qyp72u;(elOi1K&!?keVy6|uJp?x|&pq`GMy-M)KsFldn z<|S4uo0di0Ko7!Z(dS&rZB8&`lykBni-=doeR=1^%jDHi+NMZL1e=AV&BPCJTMz^~ z8ttXzR@s-5_asr5DCOG+3%S?!<1_LxXY*>(XT(w|ZP%hW_2rau(6WdQhIg&9AGd6p yIBi}T-fh}!+zTHj{G(~J@t{002t}1^@s6I8J)%0004mX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmKpe$iQ?*hm4(%Y~kfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$%ovd`>)S(glehxvqHp#<}FOz%yfJHZw;YBNj^?taLCdn;P*Xaa`4O$`^7T ztDLtuYtq2l^-JVZ$W;L& z$2>NmL3aJ%fAG6ot2i<4B}I}z_lx6v3|w}Ff6wx;X>mpj0~lOdb3D+Or^#Uk*2M&FbNqPIYJ)$6UbkJASrOI@XJfP+I| zq(s?kKJV`B?Csw(t^R%h-CA;MWbAQF00006VoOIv0L%c)0LeSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00aO@L_t(|+U?xUZQC#u0N_W~8)Sj(paSj$J?7FK#0_%j z06laA5$F;JJBf|WEi1u!fWsu`+)VPcXX7zGN2B@RXj-U47$C^VKB7^jzG zfN`KmSZpwfbbtWHg*utRW5A{t@b~~j(F>TM0G8kA9C3d9hcr7vO(+%?8LY|7WGn&X zp0hF}l7eDmp}~T4*;+?=UL`1U%rZ$_jiJP_&J9chN)+o{z_g&mv8=%~p;WM}z_g)6 zdPC8)BF(=FbEz6os#qkj#e6E5L#bn-zzDfiO(>a|)eXbi7)>LFp`f~9$R@p2uySKJ zMKDs0>LYN$JR7QMQB9Hy#%g*@FwcS_OtWyn*fA;w#{u&-p*Ub-!JGl+YeP}M#Cts= zn74q!fT^Vi1h9=5)Y?fG@~B)MRt!ZA+A%n2VN5Fu^1O{$jp`$-hNWQW8bv+-9PHK6 zvECMGtX%*V$i-4HQq!Y`hy&QR8DN(I^DHRE*@{|2m^6lM?*>AEM<$%oLl}$sFlgFr zb6#wQ9Rvvdp&3yxG%ylQ()13olbMH$-F=|NtYWY}ib9dWsIQ{{s;oCG?OutoEf>ti zrgw6k%)GZ>xgWq|f}d2A!{kxs%biFWyf7FhJuqMHL>e0kfl=}(^W{#YSqCNl%H=`}{}ghjPb~f{ zpwjW#{G(85O;xDe zYMb0hAosjXVl179ZK~F&X^tCn69DBV10}Fc)utDmL*F)+%lI{hM$$2h6{95X8zjsg zNW?H-6-olkXt@&_OSIRcfEg`!LSw0<2N*D;)3-K#T!8V3s>4SHyoGx$>* zZJB`G+YQ2(3~rl^amI$J<~46)mksb~jI!8l%(~2DRBCXvPw6$)B6MaG;e86^29}2c a0Qe6~hm#4g;5C*20000002t}1^@s6I8J)%0004mX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmKpe$iQ?*hm4(%Y~kfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$%ovd`>)S(glehxvqHp#<}FOz%yfJHZw;YBNj^?taLCdn;P*Xaa`4O$`^7T ztDLtuYtq2l^-JVZ$W;L& z$2>NmL3aJ%fAG6ot2i<4B}I}z_lx6v3|w}Ff6wx;X>mpj0~lOdb3D+Or^#Uk*2M&FbNqPIYJ)$6UbkJASrOI@XJfP+I| zq(s?kKJV`B?Csw(t^R%h-CA;MWbAQF00006VoOIv0L%c)0LeSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00ZhtL_t(|+U?xUZQC#u0N_Vf8)Sj*paSj$J?7FK#0_%j z06laA6X+5>b^`+ukOd0l*h@wz)Pt;4W+aO5muX}IiGxIr(8+OLQTr_4?%k(QjiDJDLFfAx?tlD6jP%2opz_g*%u&lu> zpu}cFv9u!1zY20GD=2j=G}vlB6{QTh=V!;{_sI3zf!=|bo>M%S)fY6_Z5q1BZ zm~f(ZD+rTI8YWKf12blo2EjgxL6N|y=by*qjS}~!cubdo5n@{|n2YRIK)du0|Sh+)~i~*!`jaxfJrQhYgX^@ zc1kBO<9A_5U;--<{u>qr7f`%=u!g>H4v}IM)1IX<^xE$7%W{^iiA5TE!MW!z%UQA} zmgO6uR$%^rhq46oZvn~*%)b>V3o!qdptQjnQ>a|sdM>feJ&#k2VvU9BQPb8frc|3! z3a$j!m=3+*9QwmexwT&5kdy-R<}pg*(_P3#u~ZE6rce@K6{>g0SYopt1*}5#4jD^4 zJ-~ofsNNxCspU~6U=^x&$XMzLXAVpliUa1WL*>Afpr~M^Pv4t>DML|S*Q>nQ*x_cZ z-r1@>kZuo;0Bv`lED~P%&Bjho&Kzo7S-mvqp<7?>EZt~pZ*9%sdb2UkLORvl^KI<1 z0X~gUwQe?6bqK<`!Nq+__tcBfSxtn0`$bo002t}1^@s6I8J)%0004mX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmKpe$iQ?*hm4(%Y~kfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$%ovd`>)S(glehxvqHp#<}FOz%yfJHZw;YBNj^?taLCdn;P*Xaa`4O$`^7T ztDLtuYtq2l^-JVZ$W;L& z$2>NmL3aJ%fAG6ot2i<4B}I}z_lx6v3|w}Ff6wx;X>mpj0~lOdb3D+Or^#Uk*2M&FbNqPIYJ)$6UbkJASrOI@XJfP+I| zq(s?kKJV`B?Csw(t^R%h-CA;MWbAQF00006VoOIv0L%c)0LeSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00Y5EL_t(|+U?vyZq+al2H>&Dje-OxVA&0KNN&&t2Vl_~ zG!mC!$qkSisTV+cOD=)ZMM%kWW5+Y|drX^Hf+BdOd7td@j61cXzvJgun&=#xaFiW&U#${^K}~S09%b9$~Z* zgT=w0(I|gJXV#HN%%E8ZvM@%qG#mj&YXbMwthc3D<^AanSgCAy@Fs| zDAqD83YLmd1;8XwEUaQ+Il&wVCWT^S!NEAY9so=OCBlM%Nzwxam=;Qmr3TaFQ35ao zlnP4>hDbOWU?`}~+E4Sa(%I>Jmn%3`H5?OZU%8)D6^T8J)_2ftiT!=)ZQ1|$;Co2*3y%P1SXibj8U8zW>vy) zV%R=bX2OXsicQbM+AeE3H?XOyO!&g3$11*=n@V)$>~w86(6ucLwp%fZ1ttyh%n;MC z)^-jUGq$CIxw`mHZ7PCT>`MhhR0&h983mHTgTOfHLA7QSNNuPDlaw&kno%I94ni>oi%l`t7g5((zbV-(_tmKfm380Jl(5Maj5C~7Ro zt|tLAZbngKLDK^cm~k_T8mmYil>=tnjH1RWnsBDT3VcUg3g)XrrN9cd4oJYVFTpS? zVb(pW20a#QDA*+!X0_fj!zwkSWY4UlUpDr5A!@saprSf28;g{#FAYZO;002t}1^@s6I8J)%0004mX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmKpe$iQ?*hm4(%Y~kfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$%ovd`>)S(glehxvqHp#<}FOz%yfJHZw;YBNj^?taLCdn;P*Xaa`4O$`^7T ztDLtuYtq2l^-JVZ$W;L& z$2>NmL3aJ%fAG6ot2i<4B}I}z_lx6v3|w}Ff6wx;X>mpj0~lOdb3D+Or^#Uk*2M&FbNqPIYJ)$6UbkJASrOI@XJfP+I| zq(s?kKJV`B?Csw(t^R%h-CA;MWbAQF00006VoOIv0L%c)0LeSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00YZOL_t(|+U?v;ZqzUo0N`hn8wCkYz_J_ekldgP4#0vN zOe8MBk{cj3QZIniC6_>E5ds-Ee)0Rww27tZRP9Wg`Re!l>~S67Z~O5X5}a+dz54_K z0HzNoR2^7YLcRI$aP@%S-`^e%1v7}H2LS+led-PkH5)uWO`kXUH^*_jx}P6-gw_@e zW`}rYqxx3tSx0UqgJzk?@*LH|a44iLgOHaEd5-$|Yr6mPZ7MTfW4phb3_iZU{(5c^ zsXx%AT~dPXl02bm+9uYrN4bDqQi5>+Xgjb5TfUx}$f@dCZeTOi&bv^}HT64%2lJN)P*j0Tw-T6eWkb zOks#QtPZQ9;MAV$xh?OsU3EA&s$EtvEa#zDwM0!EOr#OhsK+=X>8|CdYA|k+XQY;f z9OE@$gbTouISM8iOt?8XS|>$mWxmVa3e^f;0gO@}?6S8)b#5pC<4j?8*;}Ey>c9Y# z%=LEJTOpboVo6^Dg(c+0izJm5$_2H~vhob3(WCO>cLk6Hra1G^TZ2a~h!lFuk^t$g zqOAhEBg*M8zN5-~FE3n2j^!gCU|0sY}<{KfY4Hn&Vl*Yf7RDx^gu;>b<0p_^3LJdni z>T$pv_g1K3sg(y5FvqA=vw{-?Q+|V20v30N!oZB)3Fm^vn}Ava zGu|@50joX)!*#Cbw6`LM+ByWI;ru1co53n)O{GujSw}x??C}Yp?H;n}=XuyzVV?io zV1%w5hHD3H9j%oN&cnteOEkIWk&m%M6a3K+8_RQ4Zg6!@>5+O7xtbZ^e?4=8;ZOho Ze*nz@pUlD { - // Ignore events from neighboring Boxes. - if (e.Actor.Actor.Filename === "box.doodad") { - return false; - } - - if (e.Actor.IsMobile() && e.InHitbox) { - let overlap = e.Overlap; - - if (overlap.Y === 0 && !(overlap.X === 0 && overlap.W < 5) && !(overlap.X === size)) { - // Be sure to position them snug on top. - // TODO: this might be a nice general solution in the - // collision detector... - e.Actor.MoveTo(Point( - e.Actor.Position().X, - Self.Position().Y - e.Actor.Hitbox().Y - e.Actor.Hitbox().H - 2, - )) - e.Actor.SetGrounded(true); - return false; - } else if (overlap.Y === size) { - // From the bottom, boop it up. - Self.SetVelocity(Vector(0, -speed * 2)) - } - - // If touching from the sides, slide away. - if (overlap.X === 0) { - Self.SetVelocity(Vector(speed, 0)) - } else if (overlap.X === size) { - Self.SetVelocity(Vector(-speed, 0)) - } - - return false; - } - }); - Events.OnLeave(function (e) { - Self.SetVelocity(Vector(0, 0)); - }); - - // When we receive power, we reset to our original position. - let origPoint = Self.Position(); - Message.Subscribe("power", (powered) => { - Self.MoveTo(origPoint); - Self.SetVelocity(Vector(0, 0)); - }); - - // Start animation on a loop. - animate(); -} - -function animate() { - Self.AddAnimation("animate", 100, [0, 1, 2, 3, 2, 1]); - - let running = false; - setInterval(() => { - if (!running) { - running = true; - Self.PlayAnimation("animate", function () { - running = false; - }) - } - }, 100); -} diff --git a/dev-assets/doodads/boy/Makefile b/dev-assets/doodads/boy/Makefile deleted file mode 100644 index aaa98ed..0000000 --- a/dev-assets/doodads/boy/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -ALL: build - -.PHONY: build -build: - doodad convert -t "Boy" stand-right.png stand-left.png \ - walk-right-1.png walk-right-2.png walk-right-3.png \ - walk-left-1.png walk-left-2.png walk-left-3.png \ - idle-right-1.png idle-right-2.png idle-right-3.png \ - idle-left-1.png idle-left-2.png idle-left-3.png \ - boy.doodad - doodad install-script boy.js boy.doodad - - doodad edit-doodad --tag "category=creatures" boy.doodad - - cp *.doodad ../../../assets/doodads/ \ No newline at end of file diff --git a/dev-assets/doodads/boy/boy.js b/dev-assets/doodads/boy/boy.js deleted file mode 100644 index c62bf8d..0000000 --- a/dev-assets/doodads/boy/boy.js +++ /dev/null @@ -1,62 +0,0 @@ -const playerSpeed = 12; - -let Vx = Vy = 0, - walking = false, - direction = "right", - lastDirection = direction; - -function main() { - Self.SetMobile(true); - Self.SetInventory(true); - Self.SetGravity(true); - Self.SetHitbox(0, 0, 32, 52); - Self.AddAnimation("walk-left", 200, ["stand-left", "walk-left-1", "walk-left-2", "walk-left-3", "walk-left-2", "walk-left-1"]); - Self.AddAnimation("walk-right", 200, ["stand-right", "walk-right-1", "walk-right-2", "walk-right-3", "walk-right-2", "walk-right-1"]); - Self.AddAnimation("idle-left", 200, ["idle-left-1", "idle-left-2", "idle-left-3", "idle-left-2"]); - Self.AddAnimation("idle-right", 200, ["idle-right-1", "idle-right-2", "idle-right-3", "idle-right-2"]); - - // If the player suddenly changes direction, reset the animation state to quickly switch over. - let lastVelocity = Vector(0, 0); - - Events.OnKeypress((ev) => { - Vx = 0; - Vy = 0; - - let curVelocity = Self.GetVelocity(); - if ((lastVelocity.X < 0 && curVelocity.X > 0) || - (lastVelocity.X > 0 && curVelocity.X < 0)) { - Self.StopAnimation(); - } - lastVelocity = curVelocity; - lastDirection = direction; - - let wasWalking = walking; - if (ev.Right) { - direction = "right"; - Vx = playerSpeed; - walking = true; - } else if (ev.Left) { - direction = "left"; - Vx = -playerSpeed; - walking = true; - } else { - // Has stopped walking! - walking = false; - stoppedWalking = true; - } - - // Should we stop animating? (changed state) - if (direction !== lastDirection || wasWalking !== walking) { - Self.StopAnimation(); - } - - // And play what animation? - if (!Self.IsAnimating()) { - if (walking) { - Self.PlayAnimation("walk-"+direction, null); - } else { - Self.PlayAnimation("idle-"+direction, null); - } - } - }) -} diff --git a/dev-assets/doodads/boy/idle-left-1.png b/dev-assets/doodads/boy/idle-left-1.png deleted file mode 100644 index ca649292a568fc86c6c00a6fad7f27b312900f56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11907 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 diff --git a/dev-assets/doodads/boy/idle-left-2.png b/dev-assets/doodads/boy/idle-left-2.png deleted file mode 100644 index 192388bceaad66b6eca9f63b2ad0aa1d3d2b2c8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12497 zcmeIZWmH>D7d9N+-95MzCqM}9Rvd~`EI_c}UYufu7N=0$-5rXyP$L006*KRZ-AI{4ydA5lnQ% zx2ovzV*r5OGC<$ROV`R5=;i^pgE>QiUjA-SAk+_L2LSjj)MUewX~mLDer=L^q8@6~ zVpOTD=D(C)jR<`8v6?$6YoD!aI)eVY9l!ZXp-k7=>M!r*U+Y>p%Uxz!a~4&*THiZ{ z`w4cWLw0WA$Jh6l_pz&n5BC|D=9Q~Y6;{-`ODCiQ@7{*^<>d`tuHFZx9G_k1;oRR5 zqD!Z(_EK)%KHMGLo(1+hg!E4OqHzX&KfJueS;Z;2GS_*y3w&m%-__D9v0$+(zWc-U z=WU2si;+4W&)F*NGpClbCdE9OlO+=e#~(je?w9s=6Y@fS1%Vn%{d84wf0dq_L#KaP zQ+KCduI^k}s^o;EUdE>m;B>R6afjhtPDK4U?hU`TcMcxjTfMv1q95~22|QnyZv1(0 z0r#HyEd6=BF7GY$_>t3--d>dujjFm{i(e=A+QGc%XYuC;QYRDQi#Oi8y>Igdu7pUx zPk60%9led-;Z&*}Dhy`$wyU$E739hl_ro-;cid2Uj#_#TzFT*_PQhA#UpT`ieM$J? z9#8C$e*kZ{r?%e6I+0z(!p4lZ^s+RmnBGuV!1f+bRAkhey@-3hs^HB=T}!0z;)82j z`1R2peh>(qm)s)hKIFms*FMG%1G>nyBNFz}aPN0lucA1TgL{qz1c|?kmT#k7?fzK( z#ZecFn@(Z3i4>jp-80sB;Kzm<-&8CCxrKBO#lnL{D53kofVCVG%G>Aqa!^H{_vFZ7 zAYzbFz+*8@K|;0IY{mC)bXmo`FfMn*dAeV|CzggsRC0=EwUjEkI+!J=c@_klh&Vc= z>U(gOq(7-X7j&%r)@@=+Ch;=e#I~*7@I-RlBS&I}O2UxXPubp4~lsi4jpi2muz8TFS?IZZyo37?tBP7N7zB5uAV1 z@X}=!XTrix4`)iFqm>T3*Lpc)tgK~5vMqWk0Q;!ZTW_9kM>eB7&(ZYE$JFu*xN1lG z?XOFC$lK~VbYI_H9j%MDTrqjA4*f??6P|s~X!5*yE8_fRPki;ltu~vdYH-~e&sAi3 zvs;_Sr4%2v+8Ry4X&~UDOGWKQV z?4oGw{v5x|`nkA~4X4>@JZie7J%>KJj7bJMllA#2+31rK5@N^H1s`uSqz8*c5Xn$+$nC)9PU*|1IV!{ca z;rT4$?X5>0wCvICe-^sinz7f)DP*zEc}gljL-*OmGpMmA+al+pA&z|OLTk*Mmsm^q zrH^H0;KuhRosWwgd+ILB3nUlf^C!iyPp##58!-fU>ZWhN1dg>CJ8gIy#fdqjlIPR~ zr`GmSa`ERa*Ejq6DmCl&Nty>&wP#Ig=_*rb(qv^bY*k&^`dIBEJ+;kC=9+NPpYMu} zrL5eAjC=Z@I@y#hmF;42@6?JYl5bTvn$1;lEOL0Mi+Sp`6tFy1mWu2wRi&E?z-s)Q zZ2F`6s3ysx5+i7&hsL8GIj$PWE@@3`#Z(kyITg;+)iOiY?{ z6pH7o1ffJ_GOwYK>74$`+3{IBbaZ_oI#S1i{INl{kMR=s9`+WU#bRXr?+b}ec59b;#`DCecY+pHvZte5&P zuxlOw3|+`(uV9unkse1zP(~9hrx}}s_H!%rX_BWnW7dZ<7>2t{;ZNr<3S2bE9%r&~ zw+lti*twH;c*1MAzX+QURQM29sqv&tqMrkRo?Bx%gvvfbTL$|e*3!?OB3mmF5web- zQo{Qe``9T2%ZR(`ymN(5w*u;AoZ|W+TQ6Ey*1pq9VzNGQA`wZiqzk=CH)!xviYf}! ze-T49fzflMZrma?k>IW;KNnhbmFh3p*@rW7;^a4AXbijo&_Ot|^Q~p<2t(oeqYn#M}_)5UYq%g&)`)zV@5s#d*_ z$C3e47_1qA1)^Ho32&ehj2wdEO$@nNlo!BLoT&5)eeMfGk%DOKJ=AHW%tfCvT=){& zZiwBBb17uxJ2Be<^jQUIKghG6esfa*MK-4->(WfA^JV{5t-9qsnDZ6mwk%8AtXiqH z?yHsdiBNjiW_P}>)YN+gax%;vOjB+89b#FG`DqEl05mpy{M4u>H57S{lmzXKLPoe{ z=v&nb-ZjAY*U{&FPz*=4j67O&FB!WDp1F0YUzJax!7KOnaN)SeM4(%ye1R-xc%JBvQRK>R$oW+-m-(^8_85)BVaT>CaDf z8ouE%;=K z{OoetN^)`1icdhA*FJ&<6jSQ#%d={^mt>A-fIep3qO|K4<$7ji!oW~Ea8ze0<4y4{ z0MfCW*r_!C9U`7IQA{q3>6VZ<%^O6Mm%l9r%`1b+K-T&`I~*;9?$agRxRHFwnkMRI z(s`8?ucDI-Gz#U*S0g|NHfy7J;-|_+-%S!^PcyXZGy0w#2r)%W_~pAy;~&rQoF7C` zfS4w}n)q09n4@;%c?*pap-}|L3Udr%h03rnHgRZ@irnb%JjM`}A)SI)mGh!)6K|tG z=aWLUV8O+FrgF_o6GI`OO|qH>zKW18(BN*{l+|(Wt>`9h4y)*>ex3%L!1(S_(3()& z4)DmJ-j|X7T&&1=D^8|}B^ZG-3Fe^aqbg`!%IPvmFD@ZGCbW$#Gjc#BZ@Nw;jUrZe zL?cr9$>=y3GLIa2Oi7b(4=mVfdWu?9q69s6syN zR=lM7I&T4BcAYboE7xtnCx*&ZO8|g^8K8=sE*a}S<7Pko6Q$1-=}A&A-m6q`ehM;7 zV;e}{6{N#K3Xsya$sqB0JY}qqtLBW%VL|@D8G+Mq=#s} z7zZ;QI_ZV?D)AL3vTq*AZ+H46{hrUJ9?UUA1 ztw!3Y-nLVwKP3eeB%yLXcfXJ=!*1evZDlxvbg^24JTSC~6%X7>YlaNE} zsPS$=+# z7IJN)YiO2F`lTAUu{i1%;kOZP$SgNDK-1GlmU#+3A%7Iui7u010ab{==bJ1wAh%|o z{}3+Dn-tp0h(aOfBkbG>25Ipp(W6*-sX6;}^}kIL&JD)si#S*3d6bU@8SG_F^8Fk)it@7vrE?kt3?yjwDd=WQk6c#egXYO(U@P~!4cl_^zNN{ig zSF!@SG*M~VCL`y_)sxNj`1gbIS{#ug12mr{j~f*ts1N8?cMRnGWUwVhiS;*Bl(tOQ z`_wxWo#&Z^Y+Yv<-NOd5^e~GTzxuJ!r)F3PQ>!Oi^{FKaT3|iM|G*+B7tR+MIUC&4 zx0?f7A~%&Ba%}3YwyMbT6~sBblb1yvq$eG7!|ut^D{&L?-jbc=rlItrI<)Ji5Ktf7 zl6k1N7~&~AQPSq1okL4ZzgnMhcl1?2UG=~m&Q|1V&(FWc?U7NQSs>**QRQMEx_SPB zlNp61)R%W^o#u}7ZC%mN)(9;DeA$|arHF?3IP#isAsSilP;FJS;U`MDl%zBDx0nqI z<||m(K1VxZ&7B#MNXGcBTKM6~0;?^eNt|Qr(wqFR%ah&@p7_xte{tFz_i$Uv7hOfU{f$~=7v>7?`)5An6$~oe`Pqv zGaB_9KxukEy;5JYqM&Te;e@)EZc@T`tW*+dH&{0+IEIdqfiwCoh2mQc6=6E3DnvsT z>8tb$T_(C*BBKEbgFT11IoEgkozQmVi9TK=iX80cMD0jTE-WV=NSPuX^OTW_gU+^O z%jb-IxZ;K{{IEve#eURSC?1LYj5KuO2jx4#$4!iuUu&GbZ^rnU8jX{MpAdHXTyUzD zG(BF>zkW`HFp~+D*WN(?10I$WX?!aZ)3M-2(&Jluhb}L>gJdz0IT8f6L>4hGi6A4c}5j!@R ztIfSZjzEboow%y63Q6yI8!6&U5LO(2OmP49gtX5X%P+LQF5hOTxDCW0 zqHLb@a0m~_UhXx>Tf&PX1~q$IqodwUS~jW-GR7sPW|c%>?W*YE#FS+WIo@Rg71Y}0 zO0HZx!qjxSkdTVZfbO{_DIddLnPjrNByi6H*B4?^L`N#<@T;-Yz@<7MtKRij=Ke%q zlAi0Ky+tZ%2;QGMd&jFdE!X3Dv| zi&>#Y-`FE|ZH9b6S(^n_!m+0^vJKUd6T-&O0Ml;a(|2u4Sj z8$7kuR$Y73GM1?0bUwhLLO$R?^sP8m?LEG*hE|o+B;LG-sIA06Y(Vj&qxUqov$gO1 z8`RsJ-Uq9~;8-NFUV&XFSZRZj)}CwYljWhVrDDyiU#9L_LEg96=O`t2^lm{Gdbu3W z3**>}wUfp)4BQNrPqZrJ>5CN_pXVT19Lv^0$L!nCKNeWsZa%?_ZRQguCw^^_Vw1>e zyzi4;ExDr@zL*Jrs}gA3@Nr z!iiSQ$PaDCfuQTkhtXZliM&La``$swhbiH%@$`B3}z;2$nS z1jki`bU_zkk0=dkUgSNU(p4le^?LP`i4j5!lXJJ^3}WZq^Ij4h$ZUi;Sbx?IyYEUV zVND##>eR|}M;cH|A=8JDMP8si7_AIwPw}Njz9A}CU}ka}o%}?+jP%Vm2h)V}RHE-9 z6t{llb-H{x$-78EB7edX`TXmk=#ym~_Ymg_QsZiz8i$y;14Sv~(-8WnzsAlNo(+HI zgdH>iKs<7x04o`Gz0dBGzE#`aEnOq5#$w%}wMe-P_x5fKaOyCWP{uEbW*)E3ITCA*bSR1P zasL|`N|~_`lat!xAmw32j<@|^AEyw_YJBAdQcE<;znL*vGH1s9R49b!s_k>39$qsgi-DJ`(6bU26=w~5l%Eky1PLU@Z4GE2CUm@W z3+C#%3KfR;zGv?jS#dnCIC@=qUE|V@G>}n+lCt-HMe1_s5;#*HWxds*`;}Xe&PBwAs(w4mr_T3NQ3M0}J(5XG<12Eo z3KC33A(tdaq}e-o72kM}cA{1ckFB*J8(`>SRo@xIj&VXgl7A++$984Wbo{Jk9huMJ zu^L+6W6NT(3)JsBdzl}?xQURRn8y}LgEbB(IdfMA0fg>rbRl-hV7U0DE{_@JLLZ%K zqX^Jsv0xo94fXX8x9x&U;c#MMW-fa2kpW`S5ixv0B%kg}y7wfOiu_EXI+3X?;7}kv zb?K%sdm|wOI`-Gch-Z1=KA5&_ajJmq9??r=&xLPDr{2i+uy5ly9wM+a4e=Yp#evy% znH&8yKXbjn27UainFYE21R+x&h8=XLtc<-eeQfglFb$&;!2J3*7`;oXBXvNDN|7y~ zV?BjvE~CGF0h=>8rq3_Qk29H*jv{ zvL`bNkJ4XcDs{=io;*t*-a{p5kX9&TK|QqK3zKBg;lLW|SyazIfCR=*^5(-P-wR-+ zEeu>*r3e>&bJ#h4&7vZFxEA8SFKw|rY*y6uB*+})DC85RKOKW2S2wI2rrhHwiu~&< z$xS?Yz9_d7$n2Pu0V5WY%Oyrn6P9ORec=)VHBpPhFdIyp{ z((+N?8?(HHOms*0W98czIBL3su;kH5JS90^NcC%xrk1){^+09m5)4^X-a1d_001h> z{nEks+FG!fkeOyWRB`zm-hF0!umMaUoHW zCYI88y0c^z6_IM!0az)>BqN;f2$r~b#G-@I?`vL4b~kK4Gevi-384XY6rN>3g3(CT z*nMxEW$a_isys*nzB^id`KH;#bFt#u0vnhRY>9T}|DI$TdeZ+8U(52uvWL$+A}Qi6 zR!}#TE)9*Fb_dO|E|;JP>NfbC4W|E!5EIyL3}%c&dZ`h&94$a9S?XbzB}$ zn4hx|Har3e%Cdg-Whp(b`(SU=n1%`^KL*1>A;IjRoSRxFy3g(11U1S)mLZv2l{gE< zc@Rc_wxz*9F*a5k{=mp&)+CPVRQ_(xyQKEuELPa=Gnyz0OuRLMxUs9`a7SG^Q>|t9 zevBb%eS?$`&a6hhfpjT}$C7ewd!7*o%(Qv1B!yo*-yT)?uKIZp#A4)7O&=44guZt+ z?P@|Pue6flOjH{0eb;eo*ka*$K2I3ueV~BCZ7soSeQ#-3qGq$KQ`XM~Rmk=F*<=yz zF+DFgWt>(b2EisfRzlJ>G_oYvG{$~O>qe}5_@$4vBteJ)Y;UGN^);(ps8Zf@yro&T zprJtbGdpU5YArq{1IaT$vtTlYVi=j<4gI)y{f>hQ7r~o8J6Ij1W7k61jKEW=FW!XK zn0s5;FRh#^JiAM&vdqd@FWIIb;&04T2mlXuVeD;h%7UfzZm-XqM37MFVESk;v1Jz= zR}8vZ6+T?dJ}=eCh*o|&Qhp&%(u&!4pv!L?`m^Ub*Tn^GF0|nExh5HHPA!JW?yL{* z4IJXEPn(wr*eR?uW$XRx$ zGX|2X*UtT?90fZ3689D|p^Sh;j78%vvsLf?$D|ukjciBEi07?F^qn}62W%>$1hY*5 za|S-y`@D(X6X_jAjI{w%c9FE)NKW#WN`YtURL^FGLm0?t3eFCGNX+@Egnz7Bu$C%p z$T0AyqbE|o2tk7PS=cqv+{6I@NRcpkd2LmB`G4#+BX*eIJWG;P8I+-Y_f*d*UZ3_5 zxbdpso3*U|kWQ6$BzD0Qhq?Z(X+DSPSH{>JoY4R$3-cOy7cI@yqjF_U7l*0Jb ztKQ;Crum4?;O?%=_CO5G3&EM{T6dWl7ooJ6_}7P(ltGG!eeY$;wAav&s=CBM(DpcfvJTZ^$%Q_Lk-!PH;0x%x&o(e0jdGocon)#~umo>)Zk*8UhL0gn zyvW?2m2i(V;%;u3eqZh2IHWhEV=%+{bi}XPV`ZZ{t*Y8z>tVo6^QrL;WSo(uK896= zupmE)Zwy{v$KF3zr=5I;$#Ke!OY z`R`&rCg2|vFDFSRBMoh!Jlq2c1o47+`FRxmU_OFOQrJKV4_iBku7c9v5Qr;DCI>Gs zHwYh}udgq!uMjWX!=6t-OiYZAUyx5wkOyJGWNSNEyYx7TkH*XK;Kk3-o@IjrSE(lXkM5_Y- z(WJ7fhW0-_ep6r%b8-9Qg&_MsEWKcM|03%@V*6e5C!K!}1mXTq-2brtNA7=&5mp)+ z5Cyo6_wVpj6(pH{w-2#}+rVrge@<<{0=Bkb5QqmP!q3kG0*l!4fWaa{Jp3YJA|PRq zwGGrp=-;4JT|K?5Ty3Dgp%CD_Fa(Y*SXfZV%1Vq!$WGLT2gENR#3Ke06XpR6SPKdX zSqnl1`ECCVLdye&P^Fdgzen{O$`%2I01~p{x3=T4w&E8=KnaTRfJKFDc!WivB0@F- z{GwJO)_m6sjDL6Ye) z%+=fPUlsZ=7pR_>)o(ThM1%#zM8QJB0$@Qgeqq6X89jk|cp{Ye8&iOvSLiR?-`xU1 zB!eK<>bFi20Dn9Xxj^JSpjKXR4}Cb?S(52@NWkBof8-66_^VS?V4esI|KE!LTl0EQ z_rI?G8UoI+KUF~BAK5~zZ2oG*)5-_>7o7;dzp88;tX%D(i1Gcmp#D(~`@eOTosb9! z3Pz9%6%*qD30hh4Sc7bZcm%9LU@;r09aumJ^e2sfqI<&aynL-ZptAOeOcB{21oS5x zAjcmnIsenz*8%#QCw|1(<`?GS7u83seuV`gLIQ|$2tPj)-`@%I{T|i-$XJ5!|HFyI zAA^6J1`vLKl_91V#B9a)&*|!K&VJMQ|M2s7U;IC80RjELM*b^)|3}yV==!f1_^*ur zr>_6e^TUH`w)h5fG^9;ho~737P!oq0V(m5aC)!g5nF_5=WMNPZtkfUGx^ zh(Zi6RSiXq9W+d25Ccej^&_H)%1hD6OCIj>dzB3Mvv`Br0)1g#4#3}wH^VS|3IG6w zQ&mA$-)QhCv)5@+hIF_WB8V0-46#V=zeaI%GrpubtIK%ypB!6^>K#RY(VB6AMq9IyMwS!kBlp5??> zO2m+ipeRu$UU-fAe2hpIL|+Dwg*j-Vy-BR$&q#rRg{v#wWI*fyQvuIU;)&Fe_5BAE zdI>d4odNbnsWtw4YJMbzKM7|!dq^T>=S943@naf|VrAxMDvZwLH(k`f5@rHr9WgNm z(n;pCO$XO$OoG!Z4Zt&6s;`_AkA`%4B1r4D@ot1n+fmBES6 z9_`c{6v(FDdn|44Mn~J6ciDj>$(po(AOT!87XYC%O`eO_rbc?4vHq0wfx8)h_oO9V{LbN^WvQNofGS*1FjGQ1#6E#sg|an z*r_VGLB$V6{V&0{TQ)|C5Rz=Q@HRaBdc43H9kq3Gzz-XnLzE%%(kqNY^DbPBrc`M zD~)7XYDH=q)CoUe1BXDrj7`TH6j$L19xE#@!z=d zy$BY~Uiyat%>eZH?Vdd{G1#FSW-wNVzS~KDsb9!k<1f?Xm^l#tQ9%4xK~YnoR?af~ F{{Uj>o~!@> diff --git a/dev-assets/doodads/boy/idle-left-3.png b/dev-assets/doodads/boy/idle-left-3.png deleted file mode 100644 index 7c0aa438a346943e60040cf773bfdd59c4cfa2dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 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 V*C!jf`8^E*YD$`lwepss{|Ea|zLWp} diff --git a/dev-assets/doodads/boy/idle-right-3.png b/dev-assets/doodads/boy/idle-right-3.png deleted file mode 100644 index 345b43f0b599260ed764cf731ce1fff59fb5c52d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12267 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 diff --git a/dev-assets/doodads/boy/stand-left.png b/dev-assets/doodads/boy/stand-left.png deleted file mode 100644 index 3ce4be7ed74c142826a640ba0eebbeec800a90b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1388 zcmV-y1(W)TP)EX>4Tx04R}tkv&MmKpe$iQ?)7;2Rn#3WT;LSL`5963Pq?8YK2xEOfLO`CJjl7 zi=*ILaPVWX>fqw6tAnc`2!4P#IXWr2NQwVT3N2zhIPS;0dyl(!fKV?p&FUBjG~G5+ ziMW`_u8N^o^k4u%bU~DvWz0!Z629Z>9s$1I#dwzgxj#prnzI-X5Q%4*VcNtS#M7I$ z!FiuJ!ius=d`>)O(glehxvqHp#<}3Kz%wIeIyFxmAr=d5th6yJni}yGaa7fG$`>*o ztDLtuYvn3y-jlyDoYPm9xlVH!2`pj>5=1DdqJ%PR#Aww?v5=zuxQ~Cx^-JVZ$W;O( z#{w$QAiI9>Klt6Pm7kpOlEQJI^TlyKMu5;R(5N}i_p#$NPJrMuaHY5Wl{zr7NT;3U1Cs<00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNlirueSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00TrxL_t(o!|j(bNLxV|$N%@}-qC(u!0$5pBf2j@{6^MjVKnDf@ z>MuhnB%JW!S&E+b`Xl4bvx+_l4-^0+b;m?H<$D%EX*CzR4k`m7yaK#o7UsOykERBz ziU5T00Pc!i$47u+>}`7PknWhp}Hz~`z%Hl%2 zWxB>$I3_*yYD|G5BCxUNr=u#k00W0$PhNvcORj^}5-sFypDSdli~z94<5b(lUi>(2><$v`!V+{Bk<^i~Q#4ZfrgLkHk{u??{A86-6t%Yl z!523gAj!l;ND#|tX6RN`w-T7MOa24v;gbX)_*Jq-LMUKXi6FxY6+%HY$~g)Ewe~+M zY8vGntt>8R*A@->%72(CwsN8aFrA(93R>aG$MQQJ5ojWXzT zb_$)tE(&=Y=|K+wkhL-zRoOOb8wT7_+c+XWk57G8g1eqHr3#1K8S3IG4`)rmKr*a5}^u;YoOXq1+v!7# diff --git a/dev-assets/doodads/boy/stand-right.png b/dev-assets/doodads/boy/stand-right.png deleted file mode 100644 index 66a85d15b3d5a7c79c34c5b1d6d0884841a7b8e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1382 zcmV-s1)2JZP)EX>4Tx04R}tkv&MmKpe$iQ?)7;2Rn#3WT;LSL`5963Pq?8YK2xEOfLO`CJjl7 zi=*ILaPVWX>fqw6tAnc`2!4P#IXWr2NQwVT3N2zhIPS;0dyl(!fKV?p&FUBjG~G5+ ziMW`_u8N^o^k4u%bU~DvWz0!Z629Z>9s$1I#dwzgxj#prnzI-X5Q%4*VcNtS#M7I$ z!FiuJ!ius=d`>)O(glehxvqHp#<}3Kz%wIeIyFxmAr=d5th6yJni}yGaa7fG$`>*o ztDLtuYvn3y-jlyDoYPm9xlVH!2`pj>5=1DdqJ%PR#Aww?v5=zuxQ~Cx^-JVZ$W;O( z#{w$QAiI9>Klt6Pm7kpOlEQJI^TlyKMu5;R(5N}i_p#$NPJrMuaHY5Wl{zr7NT;3U1Cs<00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNlirujz02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00TZrL_t(o!|j;QOB+EH$G^LH62YUIO9k~0NKh(4&_gK1 zLr5WBBn4qTY7d28DtKtAh4vVaT_|nvVxYIASPwac6d^tKkO=h>BRvIzy=8iEXPo^# zv$NY?Iw0;oX7_#O``*lZ8{q%A8=BJ7GX@Erb7O}3m{4;3@_qRHLy#~KEfL26aJVb1 zh$iG*)G-IJH*dPk4^p#u{&}E@hhxSd(#}1cMo&x?080fP;Hp1x0r84xNdjE;2R22V z_Y`Cz?hpipgoio)b}xV)n>S7c=Zbk1sD1Ath&vn!<$)g%uf&Av>H)X_c&AP~g?jgR zmU!nxyLo@Tx*^2Dp9fxv=uAql-Qk}T?WP?n;6N%CO3X>IP(pfn4OjgEiiHvbC>BcW zo)3jsI4FpZGW5mtztf&xUPGF*I|1Z!f>)(p#ooMWbDTS-hHUN80+?X2bAlNK3XAFeeB!{uRB{WZWwP5us*dJ}l zoT_Y=G5O@uclDwQ$amYc)#FvES8@AkAv6@m_7++f9pnybntIFc1hEwI0%=`z*f|me z5be7o;9KMT>Cn?21Q5NH`}7^T!(E||o#+rz+yB@g66ihUPRxV>!Xdl>oS%1zLihnB zpo(|_3u^WFT_f^yfplV0=k;pj8WR8S6YZwG-xN_u8De$A?I;Gvi8nQsoiwTJq=`Dj zjj6HiXcejoc_!RP7~5MA1qnarXADxwcUXgBo}6O8k@0VGt%^#k=#TCt_CI`AD_}eT z9qYd)UGuu*o^`b#1t6Rgt&0wOvDfI1dsxyJr4^9sC!DdZeO%*K4hFz0(nmwMqzg|> zAy25Y?zqRCq>v|5n8KVsYXgyiklv!#WBVt59}R7Uk;@+YIl-&&Px=X20NGGThvRxY zzzCzitAw8lK`UL-7m-3+W-In diff --git a/dev-assets/doodads/boy/walk-left-1.png b/dev-assets/doodads/boy/walk-left-1.png deleted file mode 100644 index 733624d2e010eae7e503b2cc724e3f90169c7749..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1370 zcmV-g1*Q6lP)EX>4Tx04R}tkv&MmKpe$iQ?)7;2Rn#3WT;LSL`5963Pq?8YK2xEOfLO`CJjl7 zi=*ILaPVWX>fqw6tAnc`2!4P#IXWr2NQwVT3N2zhIPS;0dyl(!fKV?p&FUBjG~G5+ ziMW`_u8N^o^k4u%bU~DvWz0!Z629Z>9s$1I#dwzgxj#prnzI-X5Q%4*VcNtS#M7I$ z!FiuJ!ius=d`>)O(glehxvqHp#<}3Kz%wIeIyFxmAr=d5th6yJni}yGaa7fG$`>*o ztDLtuYvn3y-jlyDoYPm9xlVH!2`pj>5=1DdqJ%PR#Aww?v5=zuxQ~Cx^-JVZ$W;O( z#{w$QAiI9>Klt6Pm7kpOlEQJI^TlyKMu5;R(5N}i_p#$NPJrMuaHY5Wl{zr7NT;3U1Cs<00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNlirueSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00S~fL_t(o!|j+cXd5vUhJPKIvUseMC4oTp95n?K@L~$- z5K^!g(?Y==x1<@`rL+{1-B3uDG#nfkCH}^*;UY>G{dP|2A$!Yu24AojGR^5L<{jEr8v<*(=pSZGni90y;1NP=9Kq zkaWVEhgo`gbv-fOzNqShh(J?dlUE8U_t0Dm* zA^_VlGcJ2}4dSuR^P_9RcFyl!bW7s4yEhT=5ybXAP*Hjjgh6gE2k{f&GFhoWmKL+A z#s`rdOI;U4ASO9P0uhS|esSI%VxNEBUJmpPfB$m(k;Mc6w1141+1e~&YqJy?WBs+e z>)6^XMKG*CGe#taXJ*XPMv0mz`{B4NkB=#a(L0RXq0E@Yoh|@ibkYO>eEWG88xLV4 zrEnaeT?g>sk#UTAsuu;X21+UB@4o;5TZg0wHH>cE`hrkUkkwNg&DO=g^j zLp407F0ib? zJ*Ou_tfn;8@SF!^?{IoqXZ8PtP6f?pOFn&T=8U<-hLg;3rUZZ%eFgxi!H?GsnwisC zOjIjnj1E>XI#@CO{V-CZ^<<6K_J!I205*hq8)vBPrx2K9fO7(XVi2I<)uMOZck2K; z)|Hrr66ex)V-Nu7AcRfrrEX>4Tx04R}tkv&MmKpe$iQ?)7;2Rn#3WT;LSL`5963Pq?8YK2xEOfLO`CJjl7 zi=*ILaPVWX>fqw6tAnc`2!4P#IXWr2NQwVT3N2zhIPS;0dyl(!fKV?p&FUBjG~G5+ ziMW`_u8N^o^k4u%bU~DvWz0!Z629Z>9s$1I#dwzgxj#prnzI-X5Q%4*VcNtS#M7I$ z!FiuJ!ius=d`>)O(glehxvqHp#<}3Kz%wIeIyFxmAr=d5th6yJni}yGaa7fG$`>*o ztDLtuYvn3y-jlyDoYPm9xlVH!2`pj>5=1DdqJ%PR#Aww?v5=zuxQ~Cx^-JVZ$W;O( z#{w$QAiI9>Klt6Pm7kpOlEQJI^TlyKMu5;R(5N}i_p#$NPJrMuaHY5Wl{zr7NT;3U1Cs<00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNlirueSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00THlL_t(o!|j+sYZE~f$N#f<3WXk%=F)=62WT)Tp->M& zXb&YqdMOoz^_U#JSjeH$3VO4-2we~jUJNKbq*8n6Nh(790Ey6EVvDCjsJD!V?M!DU zJK5RU-6H6~!t7+&_nZHF^X5%}|IKYgYgXE(fpg9rVhV9X3t)Xa_)85?Qy>yb0Ua0s zXgms~kne;S_cQdQe>yVWJht^gWS}uHN_R|WGoE)pD6Phz8=xu>A}b&p7GX~Mr)Fx1 zs`!8q8Gx;r8TWgS8^mIr#~)4!Te-M;*)5UV`u0e`bBNk)P+58zghAG39PbW@Gg+xX zrn8wuSgI$bIp>Hsk0UK0LU3{9*zCnqOUIDoa&Vma5zs z>(AbrLuIMTVOT#fMtlqhX3YJKDh;FT$DOu+e2g)SPK&!knK8?2Z2-W<-X;Lx%eN!X z_$4e?3Of#(4FHR)p<~oi{V;FUK`BM*-V*>osaQaHtcAZ1roi&fURjQ| zOlDk!6Sk*bjp?I^A6V+ak5LsEz?nnPQP-f#l52mXN=wCp#}z77MgTEX>4Tx04R}tkv&MmKpe$iQ?)7;2Rn#3WT;LSL`5963Pq?8YK2xEOfLO`CJjl7 zi=*ILaPVWX>fqw6tAnc`2!4P#IXWr2NQwVT3N2zhIPS;0dyl(!fKV?p&FUBjG~G5+ ziMW`_u8N^o^k4u%bU~DvWz0!Z629Z>9s$1I#dwzgxj#prnzI-X5Q%4*VcNtS#M7I$ z!FiuJ!ius=d`>)O(glehxvqHp#<}3Kz%wIeIyFxmAr=d5th6yJni}yGaa7fG$`>*o ztDLtuYvn3y-jlyDoYPm9xlVH!2`pj>5=1DdqJ%PR#Aww?v5=zuxQ~Cx^-JVZ$W;O( z#{w$QAiI9>Klt6Pm7kpOlEQJI^TlyKMu5;R(5N}i_p#$NPJrMuaHY5Wl{zr7NT;3U1Cs<00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNlirueSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00TuyL_t(o!|j+cXd5vUhJPKIyktz8C4oYBo0=9=a0k=D zLvX=ff&+%jXm{&UgNGEm&~81CF?29pVraOcfaJbUMFJ|9g7(B;bFWHlj6Z&8EI%t~w+v#EKTc{(=8LH9*4xkw6OQzyLsF zFOWjg0k0mf(~HZIr@wt}>w}0uOJJ1l*xXoOxR*g`H3r=PRe=yu0nsoIb8$Herv|Tz z1cZnHY{tyE?A|np#V(${8xb~he)ghUBDehmPr$nn)q9|#^dbm@tZsD{SAfZ6r2^U9 zSdTS6h-_Kvy1)eql0zgA3o*g}Iqwefn!m4Zb@UB?{y6{1Vgdl#U#7|wwu>li7hPlQ zI(hd23fn~&hF$x{h{UjO#vC+@G>EcC$31y`EHR9J*L8<7W9I5T0KoNW3jpxx>$ipe z8LX=mjyq^K0OZSoW7JYT$XYc}N|AW<3;>Wxr;w}n-2Us+7BcA+GU-(0C2IK%U`mMB ze9NR$c=^0Fjg5ZS9K^}{Tlo9og?4|eN_5^H#$Mi8I)ijU+UK@9FqgQ=x4g4=O3|jt zjPr2Z^3ml`0+p-guO1J6G?KK@-&8 zDY=PC380$2seOkkh38(c8ry?}+pwtiB8nQ)$P$fGy4^fPtb5U*+rofu@m0d9B&kzL zQs3=fTxr{>B&jqvuwo@&HUeVl0N6Vvc+^l;O(9l@c3{>{Qr^h#cjZ-fz!jp*n6)?G z2{6r=iQOT$vE7?zMOA?2%Rpbf0S>-8)@+J=8MyyY{}>=&_IxSL92bdSND)c|h*g{ho~6 zRpnHsYU#Kl%(sJPt(wR9PaH-n4TuQ<)_*o}LV>J=0pMqU2c^iaw8ALBnh5|M2&oI0 zE14RsZ#I_3xEX>4Tx04R}tkv&MmKpe$iQ?)7;2Rn#3WT;LSL`5963Pq?8YK2xEOfLO`CJjl7 zi=*ILaPVWX>fqw6tAnc`2!4P#IXWr2NQwVT3N2zhIPS;0dyl(!fKV?p&FUBjG~G5+ ziMW`_u8N^o^k4u%bU~DvWz0!Z629Z>9s$1I#dwzgxj#prnzI-X5Q%4*VcNtS#M7I$ z!FiuJ!ius=d`>)O(glehxvqHp#<}3Kz%wIeIyFxmAr=d5th6yJni}yGaa7fG$`>*o ztDLtuYvn3y-jlyDoYPm9xlVH!2`pj>5=1DdqJ%PR#Aww?v5=zuxQ~Cx^-JVZ$W;O( z#{w$QAiI9>Klt6Pm7kpOlEQJI^TlyKMu5;R(5N}i_p#$NPJrMuaHY5Wl{zr7NT;3U1Cs<00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNlirueSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00SmTL_t(o!|j+cNE=ZY$N%qe5{jd-OND@YL}`(L9YUcQ zLJG+uDF|^i9SU74WU$mi3ti&qfoO0s&@C<2!7h>_XlJ2N7n_V((#_W)dFQ*AyLa#1 zdnXCu1^v1 zoPkW(PJt{XJk0j@TLBzv(Kr>vJLXkj{`H5TSo9>5p?A5`=+s1MIl zG`J=@C%4Cs9xHM1{UE3i#i9&)I>KwBbK-}RG^ApoFmr5n$3I`+;q#Xn zWq%?NLFOJD8Yt0j2K)0BZ2ziS1Mt^G&n0MsB46=>c_7TEY1Ngo(mH2s1Zy|p{jrfu zR3%@*mxFN zc>4~?UgP*hKhQ4&i2o`NnLBdzHKomtS)WK?{L_O-2;fdSrag!t6~t}cohwmagU!@9 z+A7FKzRexAe-{`j(K#75D9Z&J4bgLnFaP<&n1o346W^6kVGKFS)sL;#WLsrcGCa= zTHC$Q0?~pPU6i)=vU0^%Gg`eu_q9vKP0a6`;U4r7hnPbdmpIhEHZcWYLFaH=s54HA zrH0sq2nFDSGXSARhz$st0t6WL4+g_SsDe0#0P*Hj4G0wgshOrj2Y}9@94ifxed5Qx zJ>Pl1-?y%SObI$QH8tjxK={_{z=qX?F2KJzZI5n(vPU;gI%u3CHtj`!0fJ72MR5NA QGynhq07*qoM6N<$f~W9g-2eap diff --git a/dev-assets/doodads/boy/walk-right-2.png b/dev-assets/doodads/boy/walk-right-2.png deleted file mode 100644 index 2aac09e32e931d4fb3c1a1bf9f13df5b218ec351..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1365 zcmV-b1*-aqP)EX>4Tx04R}tkv&MmKpe$iQ?)7;2Rn#3WT;LSL`5963Pq?8YK2xEOfLO`CJjl7 zi=*ILaPVWX>fqw6tAnc`2!4P#IXWr2NQwVT3N2zhIPS;0dyl(!fKV?p&FUBjG~G5+ ziMW`_u8N^o^k4u%bU~DvWz0!Z629Z>9s$1I#dwzgxj#prnzI-X5Q%4*VcNtS#M7I$ z!FiuJ!ius=d`>)O(glehxvqHp#<}3Kz%wIeIyFxmAr=d5th6yJni}yGaa7fG$`>*o ztDLtuYvn3y-jlyDoYPm9xlVH!2`pj>5=1DdqJ%PR#Aww?v5=zuxQ~Cx^-JVZ$W;O( z#{w$QAiI9>Klt6Pm7kpOlEQJI^TlyKMu5;R(5N}i_p#$NPJrMuaHY5Wl{zr7NT;3U1Cs<00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNlirueSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00S*aL_t(o!|j;QYZ^fm$G^LH3IUHMUK&X92Plyg3A6_( z=s_%)OR&AHN7Gv`6+EQWLVJvtLWDx4mkPaUNpnb{gp`2&1Cm0#SUoO?y*WMTth3|( znBAStDFchU&voBtzwgbwHv;!#Hk3fWj%md8o>9})M>X-qjY&4h558`Wh`E{s>ha;vD&(1BJ`cKRt0CN>sfc{{(1jH($gbC0e3{8sg z*AyfoI|NQ4VPP7-76Pc!yfG^9Z_KJd?Uh}S<#2?Q2X;WL5|N;94`2y^b;{c*)cdDv z#5yM~&ll$p9}97?>w#4w@=0kmJM44f^4tvNupkxkMZ-xUUqoVO5B>r%Y!K%_}p|a65InGqu#`)QsnLV9K0svN?yfWGO z5qOHGQ%R&#NlZ@bAcWwNdWcN5Z33Wnd8K@=!n@aX+gm25b<17Krh*O#awWr=0YYsahjy?pbf3D^f^}Lj4%(9O zs^m&odG^Ql?L`&v-fh!Xk5#49!sOGYYbdmXeOz4ikg2wn;4ME7GFQk7CBltkfM@%CoyT~Rv6eWDFsB$1` z{X#hrYg(0>LIFs{jp$SAf9( zS+Ne;^D)MrW{00CN@PFVmlDxv)O4-uy2+;NdZ<;D@Bl6#%AHP88?}gRB}f1!M?e1o XSvY+44q!rH00000NkvXXu0mjf*@b7f diff --git a/dev-assets/doodads/boy/walk-right-3.png b/dev-assets/doodads/boy/walk-right-3.png deleted file mode 100644 index 0bd2b72123eb94e700612e050a9384beccbfa2e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1391 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 diff --git a/dev-assets/doodads/build.sh b/dev-assets/doodads/build.sh deleted file mode 100755 index a668a3e..0000000 --- a/dev-assets/doodads/build.sh +++ /dev/null @@ -1,114 +0,0 @@ -#!/bin/bash - -# Build all the doodads from their source files. -if [[ ! -d "./azulian" ]]; then - echo Run this script from the dev-assets/doodads/ working directory. - exit 1 -fi - -mkdir -p ../../assets/doodads - -boy() { - cd boy/ - make - cd .. - - cd thief/ - make - cd .. -} - -buttons() { - cd buttons/ - make - cd .. -} - -switches() { - cd switches/ - make - cd .. -} - -doors() { - cd doors/ - make - cd .. - - cd gems/ - make - cd .. -} - -trapdoors() { - cd trapdoors/ - make - cd .. -} - -azulians() { - cd azulian/ - make - cd .. -} - -mobs() { - cd bird/ - make - cd .. -} - -objects() { - cd objects/ - make - cd .. - - cd box/ - make - cd .. - - cd crumbly-floor/ - make - cd .. - - cd regions/ - make - cd .. -} - -onoff() { - cd on-off/ - make - cd .. -} - -warpdoor() { - cd warp-door/ - make - cd .. -} - -creatures() { - cd snake/ - make - cd .. - - cd crusher/ - make - cd .. -} - -boy -buttons -switches -doors -trapdoors -azulians -mobs -objects -onoff -warpdoor -creatures -doodad edit-doodad -quiet -lock -author "Noah" ../../assets/doodads/*.doodad -doodad edit-doodad ../../assets/doodads/azu-blu.doodad -doodad edit-doodad -hide ../../assets/doodads/boy.doodad diff --git a/dev-assets/doodads/buttons/Makefile b/dev-assets/doodads/buttons/Makefile deleted file mode 100644 index bd82563..0000000 --- a/dev-assets/doodads/buttons/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -ALL: build - -.PHONY: build -build: - doodad convert -t "Sticky Button" sticky1.png sticky2.png button-sticky.doodad - doodad install-script sticky.js button-sticky.doodad - - doodad convert -t "Button" button1.png button2.png button.doodad - doodad install-script button.js button.doodad - - doodad convert -t "Button Type B" typeB1.png typeB2.png button-typeB.doodad - doodad install-script button.js button-typeB.doodad - - # Tag the category for these doodads - for i in *.doodad; do\ - doodad edit-doodad --tag "category=gizmos" $${i};\ - done - - cp *.doodad ../../../assets/doodads/ \ No newline at end of file diff --git a/dev-assets/doodads/buttons/README.md b/dev-assets/doodads/buttons/README.md deleted file mode 100644 index 001f1bb..0000000 --- a/dev-assets/doodads/buttons/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# Button Doodads - -```bash -doodad convert -t "Sticky Button" sticky1.png sticky2.png sticky-button.doodad -doodad install-script sticky.js sticky-button.doodad - -doodad convert -t "Button" button1.png button2.png button.doodad -doodad install-script button.js button.doodad - -doodad convert -t "Button Type B" typeB1.png typeB2.png button-typeB.doodad -doodad install-script button.js button-typeB.doodad -``` diff --git a/dev-assets/doodads/buttons/button.js b/dev-assets/doodads/buttons/button.js deleted file mode 100644 index a07bba2..0000000 --- a/dev-assets/doodads/buttons/button.js +++ /dev/null @@ -1,60 +0,0 @@ -function main() { - let timer = 0; - let pressed = false; - - // Has a linked Sticky Button been pressed permanently down? - let stickyDown = false; - Message.Subscribe("sticky:down", (down) => { - stickyDown = down; - Self.ShowLayer(stickyDown ? 1 : 0); - }); - - // Track who all is colliding with us. - let colliders = {}; - - Events.OnCollide((e) => { - if (!e.Settled) { - return; - } - - if (colliders[e.Actor.ID()] == undefined) { - colliders[e.Actor.ID()] = true; - } - - // If a linked Sticky Button is pressed, button stays down too and - // doesn't interact. - if (stickyDown) { - return; - } - - // Verify they've touched the button. - if (e.Overlap.Y + e.Overlap.H < 24) { - return; - } - - if (!pressed && !stickyDown) { - Sound.Play("button-down.wav") - Message.Publish("power", true); - pressed = true; - } - - - if (timer > 0) { - clearTimeout(timer); - } - - Self.ShowLayer(1); - }); - - Events.OnLeave((e) => { - delete colliders[e.Actor.ID()]; - - if (Object.keys(colliders).length === 0 && !stickyDown) { - Sound.Play("button-up.wav") - Self.ShowLayer(0); - Message.Publish("power", false); - timer = 0; - pressed = false; - } - }); -} diff --git a/dev-assets/doodads/buttons/button1.png b/dev-assets/doodads/buttons/button1.png deleted file mode 100644 index 6736af8b730ff79cff948fb5733fded66fb24a4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 769 zcmV+c1OEJpP)EX>4Tx04R}tkv&MmKpe$i(~2S$5j%)DWT@g`K~%(1t5Adrp;l;i>s5OiY-Vf#LI@#*5JCtcUm^e~PfO|r03xzYtn1orP}R`8L`1fSrIfn+V~mXuIcJ#j zSnT4Jgs$N4^>G)wU^7I00000NkvXXu0mjfz@bde diff --git a/dev-assets/doodads/buttons/button2.png b/dev-assets/doodads/buttons/button2.png deleted file mode 100644 index 67c3559bf75e056df0cecf5be4129c8645d9d7d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 728 zcmV;}0w?{6P)EX>4Tx04R}tkv&MmKpe$i(~2S$5j%)DWT@g`K~%(1t5Adrp;l;i>s5Oi|A`< zH^YUWmR;EZA%qY@2qA*4nCB7)SvyaStbjk}evq@M1F!uPaI(1ff72~f6KjQOFeLI*f zoaw8xx>J1KDOD|*o{9ppjqdM`wWs+0X?77AR~+&w#INs>|EV_#1Y~tWTBd3M0000< KMNUMnLSTZiYd2v4 diff --git a/dev-assets/doodads/buttons/sticky.js b/dev-assets/doodads/buttons/sticky.js deleted file mode 100644 index e9d6866..0000000 --- a/dev-assets/doodads/buttons/sticky.js +++ /dev/null @@ -1,35 +0,0 @@ -function main() { - let pressed = false; - - // When a sticky button receives power, it pops back up. - Message.Subscribe("power", (powered) => { - if (powered && pressed) { - Self.ShowLayer(0); - pressed = false; - Sound.Play("button-up.wav") - Message.Publish("power", false); - Message.Publish("sticky:down", false); - } - }) - - Events.OnCollide((e) => { - if (!e.Settled) { - return; - } - - if (pressed) { - return; - } - - // Verify they've touched the button. - if (e.Overlap.Y + e.Overlap.H < 24) { - return; - } - - Sound.Play("button-down.wav") - Self.ShowLayer(1); - pressed = true; - Message.Publish("power", true); - Message.Publish("sticky:down", true); - }); -} diff --git a/dev-assets/doodads/buttons/sticky1.png b/dev-assets/doodads/buttons/sticky1.png deleted file mode 100644 index dbd955b3a48e4fdf7e47982e201dbddcb2c7af32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 767 zcmVEX>4Tx04R}tkv&MmKpe$i(~2S$5j%)DWT@g`K~%(1t5Adrp;l;i>s5Oi7WREFK5)*--62UOChtU>c<&1%VvNUo z2mwZKjtCl|KDUl*^oCaKoRd1E+MWD7S+AYa!eWetFaeNq`Ffpd1->ieRS8e!(@uT* z@oC^EebtJ)&GwT3GScX}J#y?Ut|;G(xCEpghjbO{>09!i>K*xFC|WLh?~`uco>*oi xlU(AfLAV=`pNPs1Tsbv+=`QJ1cTfEz)(dMscnufd%_#r?002ovPDHLkV1mJGLm~hG diff --git a/dev-assets/doodads/buttons/sticky2.png b/dev-assets/doodads/buttons/sticky2.png deleted file mode 100644 index c9e556b6d263195abd8412c4b0b2c03d0c01565e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 726 zcmV;{0xA88P)EX>4Tx04R}tkv&MmKpe$i(~2S$5j%)DWT@g`K~%(1t5Adrp;l;i>s5OiT&2Cu5DJAh8d3V}1v+kX;!c?^rCID)S@2*p$!dEf=i|`bmb?VoP zvxR5oYE*ZBI!^+~%AnivXtkTTF1{z?Dp2n@WK-~8-z)!9AF)AN*mVSCy8r+H07*qo IM6N<$f~)B=!vFvP diff --git a/dev-assets/doodads/buttons/typeB1.png b/dev-assets/doodads/buttons/typeB1.png deleted file mode 100644 index ff2d2b42d6a95ce56c5f01512b904199afea4b94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 736 zcmV<60w4W}P)EX>4Tx04R}tkv&MmKpe$i(~2S$5j%)DWT@g`K~%(1t5Adrp;l;i>s5OiVkuJ353Q&yO&Ho_c$QsZ0Y)Ki3C@mZ&?Ui=q*-DCAU+4ySHwRRQP#J5tM zO`+euE&o%aE;LK=*c{4brBR?Sl9>+j8gB+d16Qso|MgQR@RMvSbrh S3fEZx0000EX>4Tx04R}tkv&MmKpe$i(~2S$5j%)DWT@g`K~%(1t5Adrp;l;i>s5Oi(lc?Vp2@6C%E)9EMlAkY ziK4�<$35JCtcgb+f$;{eptL#%_U#xYbE>&Rru^^&Xc};B9b+pxL=& zUT*_dv52^_qLrPp!c?^r<^a@Y->y!*S@^Kec51fqFUGuK_kFVVwW3?@Ca$w@r#S1v d`1+3gr!JSJM&8LeRL}qb002ovPDHLkV1lJlC^-NC diff --git a/dev-assets/doodads/crumbly-floor/Makefile b/dev-assets/doodads/crumbly-floor/Makefile deleted file mode 100644 index 7fe4048..0000000 --- a/dev-assets/doodads/crumbly-floor/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -ALL: build - -.PHONY: build -build: - doodad convert -t "Crumbly Floor" floor.png shake1.png shake2.png \ - fall1.png fall2.png fall3.png fall4.png fallen.png \ - crumbly-floor.doodad - doodad install-script crumbly-floor.js crumbly-floor.doodad - for i in *.doodad; do\ - doodad edit-doodad --tag "category=objects" $${i};\ - done - cp *.doodad ../../../assets/doodads/ \ No newline at end of file diff --git a/dev-assets/doodads/crumbly-floor/crumbly-floor.js b/dev-assets/doodads/crumbly-floor/crumbly-floor.js deleted file mode 100644 index 283bd65..0000000 --- a/dev-assets/doodads/crumbly-floor/crumbly-floor.js +++ /dev/null @@ -1,59 +0,0 @@ -// Crumbly Floor. -function main() { - Self.SetHitbox(0, 0, 98, 11); - - Self.AddAnimation("shake", 100, ["shake1", "shake2", "floor", "shake1", "shake2", "floor"]); - Self.AddAnimation("fall", 100, ["fall1", "fall2", "fall3", "fall4"]); - - // Recover time for the floor to respawn. - let recover = 5000; - - // States of the floor. - let stateSolid = 0; - let stateShaking = 1; - let stateFalling = 2; - let stateFallen = 3; - let state = stateSolid; - - Events.OnCollide((e) => { - - // If the floor is falling, the player passes right thru. - if (state === stateFalling || state === stateFallen) { - return; - } - - // Floor is solid until it begins to fall. - if (e.InHitbox && (state === stateSolid || state === stateShaking)) { - // Only activate when touched from the top. - if (e.Overlap.Y > 0) { - return false; - } - - // If movement is not settled, be solid. - if (!e.Settled) { - return false; - } - - // Begin the animation sequence if we're in the solid state. - if (state === stateSolid) { - state = stateShaking; - Self.PlayAnimation("shake", () => { - state = stateFalling; - Self.PlayAnimation("fall", () => { - Sound.Play("crumbly-break.wav") - state = stateFallen; - Self.ShowLayerNamed("fallen"); - - // Recover after a while. - setTimeout(() => { - Self.ShowLayer(0); - state = stateSolid; - }, recover); - }); - }) - } - - return false; - } - }); -} diff --git a/dev-assets/doodads/crumbly-floor/fall1.png b/dev-assets/doodads/crumbly-floor/fall1.png deleted file mode 100644 index fdc1616620ec892f2bda49b8121a6ac38876c0d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1119 zcmeAS@N?(olHy`uVBq!ia0vp^Ng&L^3?w7FrEM7)7;7?}odYtHlNlH^Ce}{0^*HPx zb2L7BsgfwWwuj)!fVnyy@fKO4T>*+$xYkX?(-2LFz2M>-XT|Ia-GMqi! zQQ!|lVPR=d$wZ<5(?z0=R21ClFaIuA{+^+J@0pOz$vgq3r#)03IjQZ|Vu=?#B=Ae{ z;FKdiwSFR#Kgh&?|M2mv-m%Sl&i}Qnnlk4k!+Zyu(x25FV?<0v}Q$!vW zKMHKt^Z0Y3^yX9ZbFA%uZH#l41b;q~n6&W1u_Ecsixvv`3%QGiF0QFRmfHGREPZQC z>e=c~;%!B@P8nU#Q)a*?`fZkn9oU%fL{j#=y|f!octgDAe$RfuYoZ zf#FpG1B2BJ1_tqhIlBUFfD#e`J|V6^8VJsuIg^%_=4&b4ovJf)=FI>9{~NFQy9Ox1 zSQ6wH%;50sMjD8d?NMQuIx`4nZ*@Y z^f*2@0)@VMx;TbJ9DX}-qfnE9fJ?Yw)*t4!i}PmwU=-mo^{wLC`~N>nx&FotQ#S4i zZ`m+=Z;Vik?3{H|Mbe$z1Mq z@8Zt2Y&qZAq<Rtj{)RR zg{0EVoD$v4JcZ&QcPF28M_|M=h{9CoCgzo=j1vdI7d diff --git a/dev-assets/doodads/crumbly-floor/fall2.png b/dev-assets/doodads/crumbly-floor/fall2.png deleted file mode 100644 index ac135c26f095b31d5ef148bb13774d2c530b48c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1124 zcmeAS@N?(olHy`uVBq!ia0vp^Ng&L^3?w7FrEM7)7;7?}odYtHlNlH^Ce}{0^*HPx zb2L7BsgfwWwuj)!fVnyy@fKO4T>*+$xYkX?(-2LFz2M>-XT|Ia-GMqi! zQQ!|lVPR=d$wZ<5(?z0=R21ClFaIuA{+^+J@0pOz$vgq3r#)03IjQZ|Vu=?#B=Ae{ z;FKdiwSFR#Kgh&?|M2mv-m%Sl&i}Qnnlk4k!+Zyu(x25FV?<0v}Q$!vW zKMHKt^Z0Y3^yX9ZbFA%uZH#l41b;q~n6&W1u_Ecsixvv`3%QGiF0QFRmfHGREPZQC z>e=c~;%!B@P8nU#Q)a*?`fZkn9oU%fL{j#=y|f!octgDAe$RfuYoZ zf#FpG1B2BJ1_tqhIlBUFfD)nsJ|V6^`plU#X=!P`meSp+Ix}a^{Qv)d`K*UZKncc@ zAirP+hi5m^K%69RcNezAv>mlT4rhT!WHAE+w=f7ZGR&GI0Tg5}@$_|Nf6B-#uE3(l z@wpKw^w-nHF(l&f+ey0xk0|iCTxUP`mQO+};TW&L4hHov_fM@=d7!todAE!H2ZN}v z7s(IA-!R2lJ};TjH2KQHgxu+F3|%~i``-Lk+hzGg#I@ZkW9`QUd{J*+)v}9CHdb;< ztSoYVvgp#SVgtD@$yXUCf;P+7HA_A7b}>$zoU&cER<9;j_NL6GiFYqfT&Wy=%W&t` zt=hL3o~+g{5VJYav;EHJGYN5<= zD4O&CGaHAlqvOLPOH_aXAz9)YQR1ARo1212CIfCFd7Z7GFVdQ&MBb@026+)c>n+a diff --git a/dev-assets/doodads/crumbly-floor/fall3.png b/dev-assets/doodads/crumbly-floor/fall3.png deleted file mode 100644 index cad059da78965ab0cc125fea616844993c6533b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1120 zcmeAS@N?(olHy`uVBq!ia0vp^Ng&L^3?w7FrEM7)7;7?}odYtHlNlH^Ce}{0^*HPx zb2L7BsgfwWwuj)!fVnyy@fKO4T>*+$xYkX?(-2LFz2M>-XT|Ia-GMqi! zQQ!|lVPR=d$wZ<5(?z0=R21ClFaIuA{+^+J@0pOz$vgq3r#)03IjQZ|Vu=?#B=Ae{ z;FKdiwSFR#Kgh&?|M2mv-m%Sl&i}Qnnlk4k!+Zyu(x25FV?<0v}Q$!vW zKMHKt^Z0Y3^yX9ZbFA%uZH#l41b;q~n6&W1u_Ecsixvv`3%QGiF0QFRmfHGREPZQC z>e=c~;%!B@P8nU#Q)a*?`fZkn9oU%fL{j#=y|f!octgDAe$RfuYoZ zf#FpG1B2BJ1_tqhIlBUFfD)nsJ|V6^`plU#X=!P`meSp+Ix}a^{Qv)d`K*UZKncc@ zAirP+hi5m^K%69RcNezAv>mlT4rhT!WHAE+w=f7ZGR&GI0Tg5}@$_|Nf6B-#uE3(l z@wpKw^wZPDF(l&f+sUVS4=eDr$zHm1n(c(J!bS%^o(bOH;+G~gGiUNwt_TYKX|Hgg z<`_T24`1GEx6~z$n8-VOB=;mS&A7J5aCs<)+@+JTQ(sqdZYrXSI6*!r#c@T83GHojN#9q)&5T^4#g@%a5K7V59|JFW=Pn(DPQ zXeE$(HUBFU>l=-E$=cQmz(9~Jag8W(&d<$F%`0JWE=o--Nlj5G&n(GMaQE~L2yf&Q z2P#qpDM|rKStWy2Fc=va8R!}s>Ka*u7#La^m{=JZX&V?=85l@>+sFnGH9xvX*+$xYkX?(-2LFz2M>-XT|Ia-GMqi! zQQ!|lVPR=d$wZ<5(?z0=R21ClFaIuA{+^+J@0pOz$vgq3r#)03IjQZ|Vu=?#B=Ae{ z;FKdiwSFR#Kgh&?|M2mv-m%Sl&i}Qnnlk4k!+Zyu(x25FV?<0v}Q$!vW zKMHKt^Z0Y3^yX9ZbFA%uZH#l41b;q~n6&W1u_Ecsixvv`3%QGiF0QFRmfHGREPZQC z>e=c~;%!B@P8nU#Q)a*?`fZkn9oU%fL{j#=y|f!octgDAe$RfuYoZ zf#FpG1B2BJ1_tqhIlBUFfD)nsJ|V6^`plU#X=!QQsX8-f&h)jE{{R2~wfFyK0VNnq zg8YIR9G=}s196hP-Cfuc({|JXIh+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{V5}}xB`nF z$LB_%&{Izr$B>A_Z>JpOZBY<#b-!p`lCX_QSo%W(W891VQ(4_uN>T;O^Z(D3kf||v zEYNv?S8A!s*7X82-0YRl=6+<{n>UfGS>!ywOi5pO$F2=+Gp7_5l}-Maa3O8Nj5})< zrMvMSx_7Hl{!2X1!JFG>Z=9yZ{C4h5_E+t0E1HWxnMOAAw?>!zQ7KN2m>_aJJo(4B zvgz_JYW|aVx|}nZZMrfjvBm1yuY@vLjz6*qT!Z`+yurS<*% zVx#(nFJ`F8Uh?mq5W4yJw3$Z7rk{T_O-JMFK1QJbK)~|ek$9QZRlW0W06CH+t`Q~9 z`MJ5Nc_j?aMX8A;sVNHOnI#zt?w-B@;f;LaKt-w`MJYfjt7NbW1|tI_16@NyT_cMS z14AnV6DuPlZ36=<0|SYVd(We2$jwj5OsmALA#)8YFkTp>K{f!hqg8T#L1j^9dPWID zKxtA=X0n1yer{rB-nNN`(LiNNFl8yJ#mPmP1tppJc?=+jDkPO==9K7W<|z~hxjXr! zI|3t`K@_GsH!-g?Eit*Iv?#R*tlVebgi}BTd~gN%DXBROAg$2}p3XoS22WQ%mvv4F FO#sA)s$c*B diff --git a/dev-assets/doodads/crumbly-floor/fallen.png b/dev-assets/doodads/crumbly-floor/fallen.png deleted file mode 100644 index ffd3423b9f2776e8edb145f3b5bd2a38098278f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5299 zcmeHLdsq`!7LRo;LbYlUt%@=Rw2Dq<5&}u4iGWGefDwcU==z#WCdrf}6K4hpsGqN@ zASfzo#rmoipXfqW6m_M(SzoJS@pDDR=jvLi7K^&R_D+HjTi34NxBbuX1?JxSJHK=8 z@1ApJhMf3egWLLb^%DpLZFNI53E;1h|F-@U_}!xT)J%b(Wk{AGg-gIQASXkcDH{oK znNAWSU6ffMaQ)-nS0fkJKy7ASQE2B)4T-uY@4qfoR{5ZQM(M=e+YDv1l~MySzcl2b zt|9O9eUp0B`FDN#y-2fTQR2_mp0iK1@~^jSP7MjF-Zkpl-Oz$@4J-|)%S{o zjxKM&=wR+%MaMDzp-T@Rotsd$cfj$xNtF$otP>$_RKw)Rk^o;i|3JCp;@U;}Rr9JZ zmIano_Nai4_3eFjs<10MWXHT(>DdC&2)y>?ZfPns1ssddiL$^+}al1vF{ zmAt>w_;EL#u+x_}_jX9CRmC4@)#uduYr~&)KapRWdFZy!z2td2s!T=u_4lfuFARG0 zV=vWqTlw;zXRqPLttuJI%t4s)llKb-Ht+jAe^@rZ?v%`6I4ty^@nCh-3ct2k^^V~)a;LRR8eQ0JLtNoB z?XBJgnM*I78Nayym^P2QF#m=MB>m}za=RaCeQs8^ce4ysi`5M)D)Y4@zn97@rb~Z$61>;Ea*|*tDwI4MRt#8 zBZ+S(_lwFN|M`I~pR~X4yI7O6SJJP;HEV5Rts=HIW^0GTmEFfO?R8UUgif_9*KTiM zZY1XI{47eNTN71KBuHxA;m+Fqfy@R?PR}Dt*9^*4ED52KQeu|fO5L@=dU}IygnnBm z|BpJsh08{kEmY(lOvTLSh_dBuUv$*!^4dGoyB8U@CaC9zkJysL!fo$V4a|kZ?bS@b z6?=Bg8(6n7b?3^7irZ14-LGa3#vYag2a(VZv+~euL)5e9Dv#;yiIdkg#MJ%soHg-! ztC+wK|GF`{IBVnTCs!R!S)Qm2PymsU-H)=GGkjnC$x|uaQYxb$P{5?PV&xeu%b_W=cK9M$gamnH* zU7p|D{ItsF%ACtyKQG2qqgC-Jd{@%M6l>O*D4#;55wy3YwZl)lKk;IVFRx1t63w!1}t z>;LS5bmxWaZMke!a@qv>t&W|)7Kg11F+BXX5F6a)c5HXQ59<2*7WtNDu_p~R*)a-5 zVD=#4rFA{&^{3dyk|jqCV|!nnXIR<0U46xs)F8_*>wXw{Bf7)6EoGa+3%`FFZ2Nb~ zFKtrKw;j2;;z~6dw!!k^$r0p}P4QU)ak;Yuf_AwSXfG-Hp%_8iMYxGJk|LMg3EGc9 zpp0}maUzxEAR}p^94g^Ydn$wwWl{-~!}X}%sV1$|kSvBw%o=7OvQi0!Nf5|WCfA{5rTsC0>NfFGn}OlB-W zGpLaQj8sA^$2l{}%5a6zf|26b0z1*?5b;UF^k;XgKX;eZ!Ud%)jlnHZR%A^ufVwQ%( zVWb3yrD1X@tT4$?SS*&~xLksoO-90tO6OoX+(D2$6(AQ;fG5H%L&YS4!@$l2OJ#~M zSRp3DVLY6`O~77GDx_W%aSR120k?Ta#Z#F8l|*JFO#~VSn^9B-OQm8G#uah}EC*CF zBTC5eFi$l6IbhN8I+ai&Lfz!wEEw1f5Ekca12DVi z!Co*mL*g9G7--t267rEjJf*v&AZ25*U_)ubZRiG*CcfSpD{dfeLEJ+n@;2~qm=djY zhU0(ZX@)kjL^E6l&7{ULamFu5f_pp9o4`#>382@p9FwX0olX4;r}U)j5MWC)nO^=A z$qAm3ryxhKV8ka6L#$&8C-Qn56`9N{_OCU%xKa~U{8Mq5A*fO7_=|8gqcRLdg`VSulnCEYUu{pxw;a75^ALWOEd937y&)c1yzV<7X3reBpMl#W(sX}p zObfnp{=iRTy8VG30QGw(@1*a0x!%k5P71se_XxroSL@tFHC~QM{_8H;;az=9G^VxL8l$2**b9i^#1_E!>Azu diff --git a/dev-assets/doodads/crumbly-floor/floor.png b/dev-assets/doodads/crumbly-floor/floor.png deleted file mode 100644 index c592c09de8335d378af4daf48e1720a10fcd13e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1036 zcmeAS@N?(olHy`uVBq!ia0vp^Ng&L^3?w7FrEM7)7;7?}odYtHlNlH^Ce}{0^*HPx zb2L7BsgfwWwuj)!fVnyy@fKO4T>*+$xYkX?(-2LFz2M>-XT|Ia-GMqi! zQQ!|lVPR=d$wZ<5(?z0=R21ClFaIuA{+^+J@0pOz$vgq3r#)03IjQZ|Vu=?#B=Ae{ z;FKdiwSFR#Kgh&?|M2mv-m%Sl&i}Qnnlk4k!+Zyu(x25FV?<0v}Q$!vW zKMHKt^Z0Y3^yX9ZbFA%uZH#l41b;q~n6&W1u_Ecsixvv`3%QGiF0QFRmfHGREPZQC z>e=c~;%!B@P8nU#Q)a*?`fZkn9oU%fL{j#=y|f!octgDAe$RfuYoZ zf#FpG1B2BJ1_tqhIlBUFfD#e`J|V6^8VJ(T($1VY<7+A1ovJf)=FI>9|KAUor3I8= zED7=pW^j0RBMrn!@^*J&7fbAT4dieZctjR6FmMZlFeAgPITAoY_7YEDSN5lj%;E|x zdK{k{fkKNsT^vIq4!@mnk(WtPz$NpbSlD_-L2ipq)`~pVXUqNz&1v1t@WbS@-HEg| zce5pzH8SsPkhyZzLv?lKhjm{CkIMdd!cjGQv+C^`_a80Oof!CriP?;y!l*J*_|%k# z(a-+0=)UuP;mmsGoKDhqp=inHj}m2U%gU$aG{_y$dwcgjpU<-1#mD8InsOC*3poY< zQr{My*<+N*q1Yne1SbBN#tZmncUQ=OZbSDKcXTvA$; nS_D?^GjGBvpaMR)g8Y=!90riq=mbw^pbUejtDnm{r-UW|!}f); diff --git a/dev-assets/doodads/crumbly-floor/shake1.png b/dev-assets/doodads/crumbly-floor/shake1.png deleted file mode 100644 index b59c2516e0588cf03e37dae3dcaff2f49b73e7c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1036 zcmeAS@N?(olHy`uVBq!ia0vp^Ng&L^3?w7FrEM7)7;7?}odYtHlNlH^Ce}{0^*HPx zb2L7BsgfwWwuj)!fVnyy@fKO4T>*+$xYkX?(-2LFz2M>-XT|Ia-GMqi! zQQ!|lVPR=d$wZ<5(?z0=R21ClFaIuA{+^+J@0pOz$vgq3r#)03IjQZ|Vu=?#B=Ae{ z;FKdiwSFR#Kgh&?|M2mv-m%Sl&i}Qnnlk4k!+Zyu(x25FV?<0v}Q$!vW zKMHKt^Z0Y3^yX9ZbFA%uZH#l41b;q~n6&W1u_Ecsixvv`3%QGiF0QFRmfHGREPZQC z>e=c~;%!B@P8nU#Q)a*?`fZkn9oU%fL{j#=y|f!octgDAe$RfuYoZ zf#FpG1B2BJ1_tqhIlBUFfD#e`J|V6^8VJ(T(z;W1&YU^pYbiZ*=FI>9|KGaFQ~{J= zED7=pW^j0RBMrn!@^*J&7fbAT4dieZctjR6FmMZlFeAgPITAoY_7YEDSN5lj%;E|x zdK{k{fkKNsT^vIq4!=Erk+<1^$2BnQ1=qS0OpUBvw;2P@GKf_E7yKnNo$*lm*K^ZF zpEnuZsp9?H>a)s!bLat`HZIGRuTKAsc=Tj@-D!o=u0!QJw^!dtY0O`7>)ARf_SH8! z5_X1d*;~!WVRKnl`CZQ18Oe&S)2qbzBtEE#yqk94f_v`g`K;x7Vud{O!)&_Jo04*# zHa_2?)TB`rtI+`k|89u~CFMCsth%lZbgg8GYeb22er|4RUI~M9QEFmIYKlU6W=V#E zyQgnJcq5-UP?0J~Q3_DXDjBST!N|bKK-bVv*T^Eoz|hLT#LCD>+rYrez(C^T-t#CL za`RI%(<*Um$Xvq;3{(bbkPX1>WR;v>P+63jo>9UOP@0sJnXKTFpPQJOw{4*+$xYkX?(-2LFz2M>-XT|Ia-GMqi! zQQ!|lVPR=d$wZ<5(?z0=R21ClFaIuA{+^+J@0pOz$vgq3r#)03IjQZ|Vu=?#B=Ae{ z;FKdiwSFR#Kgh&?|M2mv-m%Sl&i}Qnnlk4k!+Zyu(x25FV?<0v}Q$!vW zKMHKt^Z0Y3^yX9ZbFA%uZH#l41b;q~n6&W1u_Ecsixvv`3%QGiF0QFRmfHGREPZQC z>e=c~;%!B@P8nU#Q)a*?`fZkn9oU%fL{j#=y|f!octgDAe$RfuYoZ zf#FpG1B2BJ1_tqhIlBUFfD#e`J|V6^8VJ(T(z;W1&YU^pYbiZ*=FI>9|KGaFQ~{J= zED7=pW^j0RBMrn!@^*J&7fbAT4dieZctjR6FmMZlFeAgPITAoY_7YEDSN5lj%;E|x zdK{k{fkLZ1T^vIq4!^x{P_oHDpd~PBLo1{1fun3b84Nc?6lVSNE>JJ}z~#QbQe5Go zKhxdJ^?CJ;hV13+=luA&x9^Bd+H*-;z3*tiIZoM}9M_v&lDFRo$GnPFI^nafL+R#1 zrKXdSU!GlV+Ijqx@zKl~6)Sm!ryttzHt|naP+)ksrNX_Z#S%LzwbjI?&w88j@Lz56 z(>s4Z1%KG_C;jcIrBNHNH#)gMz?1d03}s!MP|k zu_QG`p**uBL&4qCHz2%`PaLR76{IKyC}oulR>5FoU}T_cXsBys5n^CyWnf}uWTb6i zU}az+@p12Y6b-rgDVb@NxHV+1VFd;*gEYtnV79VK&M&Ae%1qBFVF)Nq%E?StaLLb2 z%*@+1(J&gQObMneCAB!YD6^m>Ge3_3FN!D8u0C>gTe~DWM4f;bM?Y diff --git a/dev-assets/doodads/crusher/Makefile b/dev-assets/doodads/crusher/Makefile deleted file mode 100644 index abbac86..0000000 --- a/dev-assets/doodads/crusher/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -ALL: build - -.PHONY: build -build: - doodad convert -t "Crusher" sleep.png peek-left.png peek-right.png \ - angry.png ouch.png crusher.doodad - doodad install-script crusher.js crusher.doodad - - # Tag the category for these doodads - for i in *.doodad; do\ - doodad edit-doodad --tag "category=creatures" $${i};\ - done - - cp *.doodad ../../../assets/doodads/ \ No newline at end of file diff --git a/dev-assets/doodads/crusher/angry.png b/dev-assets/doodads/crusher/angry.png deleted file mode 100644 index 6fdc1598a8a4da58d2a8844e60a2bd168c0de973..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2405 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 { - // The bottom is deadly if falling. - if (state === states.falling || state === states.hit && e.Settled) { - if (e.Actor.IsMobile() && e.InHitbox && !e.Actor.Invulnerable()) { - if (e.Overlap.H > 72) { - if (e.Actor.IsPlayer()) { - FailLevel("Don't get crushed!"); - return; - } else { - e.Actor.Destroy(); - } - } - } - } - - // Our top edge is always solid. - if (e.Actor.IsPlayer() && e.InHitbox) { - if (e.Overlap.Y < helmetThickness) { - // Be sure to position them snug on top. - // TODO: this might be a nice general solution in the - // collision detector... - e.Actor.MoveTo(Point( - e.Actor.Position().X, - Self.Position().Y - e.Actor.Hitbox().Y - e.Actor.Hitbox().H, - )) - e.Actor.SetGrounded(true); - } - } - - // The whole hitbox is ordinarily solid. - if (state !== state.falling) { - if (e.Actor.IsMobile() && e.InHitbox) { - return false; - } - } - }); - - setInterval(() => { - // Find the player. - let player = Actors.FindPlayer(), - playerPoint = player.Position(), - point = Self.Position(), - delta = 0, - nearby = false, - below = false; - - // Face the player. - if (playerPoint.X < point.X + (size.W / 2)) { - direction = "left"; - delta = Math.abs(playerPoint.X - (point.X + (size.W/2))); - } - else if (playerPoint.X > point.X + (size.W / 2)) { - direction = "right"; - delta = Math.abs(playerPoint.X - (point.X + (size.W/2))); - } - - if (delta < watchRadius) { - nearby = true; - } - if (delta < fallRadius) { - // Check if the player is below us. - if (playerPoint.Y > point.Y + size.H) { - below = true; - } - } - - switch (state) { - case states.idle: - if (nearby) { - Self.ShowLayerNamed("peek-"+direction); - } else { - Self.ShowLayerNamed("sleep"); - } - - if (below) { - state = states.drop; - } else if (nearby) { - state = states.peeking; - } - - break; - case states.peeking: - if (nearby) { - Self.ShowLayerNamed("peek-"+direction); - } else { - state = states.idle; - break; - } - - if (below) { - state = states.drop; - } - - break; - case states.drop: - // Begin the fall. - Self.ShowLayerNamed("angry"); - Self.SetVelocity(Vector(0.0, dropSpeed)); - lastAltitude = -point.Y; - state = states.falling; - case states.falling: - Self.ShowLayerNamed("angry"); - Self.SetVelocity(Vector(0.0, dropSpeed)); - - // Landed? - if (point.Y === lastAltitude) { - Sound.Play("crumbly-break.wav") - state = states.hit; - Self.PlayAnimation("hit", () => { - state = states.rising; - }); - } - break; - case states.hit: - // A transitory state while the hit animation - // plays out. - break; - case states.rising: - Self.ShowLayerNamed("sleep"); - Self.SetVelocity(Vector(0, -riseSpeed)); - - point = Self.Position(); - if (point.Y <= targetAltitude.Y+4 || point.Y === lastAltitude.Y) { - Self.MoveTo(targetAltitude); - Self.SetVelocity(Vector(0, 0)) - state = states.idle; - } - } - - lastAltitude = point.Y; - }, 100); -} - -// If under control of the player character. -function player() { - Events.OnKeypress((ev) => { - if (ev.Right) { - direction = "right"; - } else if (ev.Left) { - direction = "left"; - } - - // Jump! - if (ev.Down) { - Self.ShowLayerNamed("angry"); - return; - } else if (ev.Right && ev.Left) { - Self.ShowLayerNamed("ouch"); - } else if (ev.Right || ev.Left) { - Self.ShowLayerNamed("peek-"+direction); - } else { - Self.ShowLayerNamed("sleep"); - } - }); -} diff --git a/dev-assets/doodads/crusher/ouch.png b/dev-assets/doodads/crusher/ouch.png deleted file mode 100644 index c982e6e66bddf89ccade54e9637e7b9d168de1ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2253 zcmV;;2r~DHP)EX>4Tx04R}tkv&MmKpe$iKSYs=gB3(YGE^rEqN0vkg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2C=otzY1q{ROvg%&X$9QWhhy~o`kex4aNQptJZFtLztVY!7_!BB}Oi6e@tQNBOz zvch?bvs$XK#y$B9Ls@NQnd>wM5yv8yAVPqQ3W_MfLX=jG6cb6>k9qj}9luB}nOsFM zax9<>6_Voz|AXJ%nz@N_Hz^bY+Foq?V;E@P1?pAX{yw(t`Uwzt2ClTGzgz=mK1r`O zwa5|By$xJkH#K<=xZDByo^;8O94SE4pUVO7XY@@Opyw9oTyuMC?BnzSNKsdb8{ps& z7|B!iy2raaT6_EVOryUa#c*=S+P_|M00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<^=%+05vTy*3|$202y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00yN=L_t(|+U;DwYa2@t9$l_`wOp7KuP|x?!Ij{e`~@}v zW0x*mIFMH0O1KKD%oFJXagoBLk}(9o`W0yes*J#mIIs)j!mgDr=v60H>;1hmduL}p z2t?<**>C5Ynf-Aq0WcU0JzA=ZMNuq54UWg-7KSa+P7EJPUf8|@0LXPW_j*0=28P2S ziY=9$5I!k*Vf!k_NVCVsN5G2a%9hHG*bV?dS(flmp2N@6)8(~?uU}X0E6b9cSB$^B z1u;FW!v6mL%ICAQvmjfd9npp?1^~dj!^0I(Qt^thqeJHVz?*&_Z2(i*sv_D1Q49cB z5o7Jc2WYq3weZ65mzN+PZ*Sq<;US7BZ~A={Tei%oiUM;j9Zf)1r!!KEp>w<|j}*d1WeC>Hr70O>QLW%pH0cKbx8bss?Li+Fn$;rOITgwN}kFIDyOH6!ph06nC46eu=xk_(dR zHEa_XZ?-BB;~VsnMKPVNY+S&9@Y0b}i1CufkjAY;d~2~N#?fRGjwYMvq-~t2#*f(k zxbPwy)J5V{!lZ)CpRz9*ma;CTDn=OjIUOg}^_VuXobT#GvW4ME_e$#w`C4_as~D!) zjIQHHlg;3Ee7MG#MX3bEqR!$_S)X5&vtjAbAGNBK_#fkA*P9iE<40F zMRCOJaNS0cIfP_Kt%9hW5}FC32&!mx8O$plE?MI{yF{P%VnHldThr;%2`AkvrPD$N zW0$G7s+?8rcRHPAnUXonS!sI7wfFiHbl0~RwFzP(r>o04AxvV}91%0Xi+n^;OyXm| zT|}Q{=>|BTwTErYh#g2>?3?(i+E!f)8An=}V(5s8ox@yMr8p=db2kM7hA8N}y*e={ zR=6%vin-%(G}(lmzx$+vdrlpp)LRXzDJVsz*s=o)Ic9`50hFA?0h}s3|MO%2 zd$CWngo;73FvMQOr2ytPsT!9dzG8@3QPeifPk1Lrha%Q)H-)(ol~TRc2y}q3Z{>_!(tM zP^|^(9>6izK;rw5*mpF^N>KkjedJOEr}}6`NyywaA$9uOpZuIyO>G z(J$N89ddJR-{;;&9F&W3BGmv}=erJHQ8G#*wz{h-Bev&4R@1i4#*j8gcgIm&lP(N} zs8|31n6gUllt@8QEmIG-ZZ00000NkvXXu0mjf!a*@p diff --git a/dev-assets/doodads/crusher/peek-left.png b/dev-assets/doodads/crusher/peek-left.png deleted file mode 100644 index b2327baf8156aa4567b25cb001323b3a578e8a6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2219 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 mKp+qZ1OkCTAP@)yM*Ih)gr{Mj;@Bzx0000 diff --git a/dev-assets/doodads/crusher/sleep.png b/dev-assets/doodads/crusher/sleep.png deleted file mode 100644 index 796f656c8c522c8918bb8ef5eb32648f0567a40a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2106 zcmV-A2*vk_P)EX>4Tx04R}tkv&MmKpe$iKSYs=gB3(YGE^rEqN0vkg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2C=otzY1q{ROvg%&X$9QWhhy~o`kex4aNQptJZFtLztVY!7_!BB}Oi6e@tQNBOz zvch?bvs$XK#y$B9Ls@NQnd>wM5yv8yAVPqQ3W_MfLX=jG6cb6>k9qj}9luB}nOsFM zax9<>6_Voz|AXJ%nz@N_Hz^bY+Foq?V;E@P1?pAX{yw(t`Uwzt2ClTGzgz=mK1r`O zwa5|By$xJkH#K<=xZDByo^;8O94SE4pUVO7XY@@Opyw9oTyuMC?BnzSNKsdb8{ps& z7|B!iy2raaT6_EVOryUa#c*=S+P_|M00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<^=%*H3Bm1r|AFy02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00t6CL_t(|+U;DwYg9oHo;$a*ekp=wIvcBlYy1y_Af!x@ zB7*IKRY)aQ1rIyH6c)kiKoENin}bwo(mjYput@5&le6(1o6Y{3-I?8YaXtu`yZ2_l zoo{A$_D2K|2n22nY#)xt<5jA`#bPm_u%+9{;ls&`+E)Mo%JuMMGC?;mo6SgU+3ck7 zDZz`{SBfIdZf|daDw;c6HamJd003>yJGEjzCqf1w5Oy==q& z{{Efc&(6-0Z0UA%8>Scl0M8E(?}$>0SB@PQhS(RL9vzWQU^ZJ_MEjtN0RVTz*n0H} znx?73i^5+hL0n`TXS*cZgNGa{#6h4rl&2JtY@|Qsj`o zvIV)EPS?h-mP@#tPO}JKPNyVxs6oXm)n7wwBLD!u-@hjrU#aYLxLPjZYPrl7rQ_AM z?fNHG6tkZpTMAoYnM%i!wUwfM02MD+g{Au|#y)x-l0w?G2uj7y&JKJ%IDi+QKCLsO z!{g7NqsvcfUKGKmxXGGzJC`U}F(`Ra3aeauEaUNbHJMCE7CW5L_x0dFCtjQrR@kO# zU^bgs_p!*fPD+4dc!&xAxZm27vYNDcst&&CZmKnbg@L zJ5z{_nbc#PP}>n^cJu+mn$9RKhRgA>JW2?cl_6A>OJ6c3#4(0j?mVJ6Bhl4?@z&nG zXyX(6cS}icjuUpxn$UE=Z|k*gh`aLZd*A zZ^(x%j&ioM@dduaLxUiec-Z>-*S_hd5#9 z4-Ss0yi}=Z^L3x$ z$=jk850w)+MDZ;U=hw$@{_7jc$GtwnrH*EiuqSU&N`ImH+11Rkb;!)ODIZoxgJ&S`8`5#T+KHNu2V?7bOT)$(t*R zIhp#-$GOGuiL&?PEsVBzQR_MK-QH02c3TiWQDVzevn}k<5ef`!nM{$nDp!CMLR{+s z>`5M$M~Mnf#Hg(CIDh5EI?f06Om$Ce)b{u+>Ay_f= ztf+PO%5{&o23S|>F%B-#`B)w~nM|=tM+uTLRAJ^5u3-&hH@AI?4DZD{gj$Fi!;ikV zmeXc*hWJWeY-DiH6Vmr0Nmw{Q4O5 z$vw7Y#FFM-WydTUb?27~qF&w0sk5>69<}O}n;i!nBWhmUU96uCh2*?!Jk=)-C~7lp!aP&}3*EMndm}Y+~BVX>)#k zoW-^1!cdEf6##%QtISS?-qW8qzqdIkWJ7P$XHWmmi27h3*#t3(cZAK~JF+Hek4@KS ztHATCkgW(C_W~i*mi~E6AK5Y5-d*X(ljiRNfj}S-2m}IwKp+qZ1OkCTAP@)y0)apv k5C{YUfj}S-2n1IA1wrNm81poj5 diff --git a/dev-assets/doodads/doors/Makefile b/dev-assets/doodads/doors/Makefile deleted file mode 100644 index 4f3c106..0000000 --- a/dev-assets/doodads/doors/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -SHELL = /bin/bash - -ALL: build - -.PHONY: build -build: - ./build.sh diff --git a/dev-assets/doodads/doors/README.md b/dev-assets/doodads/doors/README.md deleted file mode 100644 index 8fc5bf2..0000000 --- a/dev-assets/doodads/doors/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# Button Doodads - -```bash -doodad convert -t "Red Door" red1.png red2.png red-door.doodad -doodad convert -t "Blue Door" blue1.png blue2.png blue-door.doodad -doodad convert -t "Green Door" green1.png green2.png green-door.doodad -doodad convert -t "Yellow Door" yellow1.png yellow2.png yellow-door.doodad - -doodad convert -t "Red Key" red-key.png red-key.doodad -doodad convert -t "Blue Key" blue-key.png blue-key.doodad -doodad convert -t "Green Key" green-key.png green-key.doodad -doodad convert -t "Yellow Key" yellow-key.png yellow-key.doodad - -doodad convert -t "Electric Door" electric{1,2,3,4}.png electric-door.doodad -``` diff --git a/dev-assets/doodads/doors/blue-closed.png b/dev-assets/doodads/doors/blue-closed.png deleted file mode 100644 index c8e2c8bdbb8edeffcbbcbd4521444cca7b7eea84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1068 zcmV+{1k?M8P)EX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZQWT=8*MO4I5t5Adrp;lNGFg)WK9P8q>4rtTK|H-_ z>74h8L#!ZYh|h^f4Z0xlBi9v|-#F(T7IO?@AxHhDdZ}G zkz)a6sE{2$_#gc4*33;#xJkh%(EeiEA45Q37pPZl`}^3o>nDK!8MxA#{&EeN`6RvC z)WSzV_cm~G-PDvl;Bp7(d(ve?b|gPdA(sQ*&*+=dK+i4Ex#srP*vIJukfg5SH^9Lm zFr26Cb&q#eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00IO_L_t(|+U?vwPr^VP#_^}b$v0sL3A4Kl@CKZG4K_vx zTqN-w$by3m^))#02FieYH;n@clVLQz037fNR49LiU*Y>K+_mYY{iN64H90)l$zX+J zyj`F4kt`)x!qE3joN`VCKmY**kN^najN!^NfNS9em!=VO=J6!ch&l6k@hrtAVlESS zh7s)nrXi)_0yqcJAfD})$T*@=Jp02KhiDWp8v|*>cueI01Q0*~34j0s2p|CvKmY+G z00IagfCNAQ0R)f$xQ*;&nM2qat_i7>(${%}#dch-e3UoRX66CIjt1qkQF+z{hsCy{ zD2nS1MY=t%uGQv$#M>2~OZ)Zr4l5~MXyfq4!TxOXJ%ycNaax<(LfrXErR2p=!*g9Y zJe3;JW4teUtjkMlPrGoXB=7o8gQthlwwv1O?YU!sedB1Dkbu7w5ySoVeJ* zDs4&9jP`U8T{xNVuPYVuQcJ;pV*{3AiZUtopL;?G@l6W3(VhuUkPhJr{Opi{SAwfv+)}k9z~pd;S5Kg6F!h zRYbFZ<7mmTAb?9ET7HR`oQZUMqjK$jvJT*!ocG^MP1P9200EX>4Tx04R}tkv&MmKpe$i(~2S$5j%)DWT@g`K~%(1t5Adrp;l;i>s5Oi(#2^TSJ6x7Cd0O_tqy@z;xM`D3n8b(L zpKov|$5ASkN~Kb%^sj=mCvWlKLfb=phGD{hHIy-5@2bfJwnyEhuWrOHdoQcyyJR-m zoCr>*wrWX&b(Au~$BeOTl3XubU?;9U}J!Zm`;LQ&J O0000L7=A<$( zXiTh~XzOvBI51`w?24q zJn8Deqmkk4;f?}-7z&F@f=VU|{huxpb)=%;PJj7#x$^f63&WCD-8AD{F)LLiDbR3g zoG9~pjwFG-5(j6T@u~Hj^yq_3{PzzZzv>;@yyyI1%Uwp1lNs$MR!n=@=DNqxW^d-p zIo~^-*C?cSobPn!-KFqR`MT)z`xeh-#VXQHc&I(=bUu=_uXU z`9!N}VlrduiV3pzKjiYhW{YAVDIwD zKoQOYkH}&M25w;xW@MN(M*=9wUgGKN%Kn5$jzLF6{7$16P)M@GHKN2hKQ}iuuY|$5 zC^fMpHASI3vm`^o-P1Q9ypc~F7~LVBE{-7;x8B~d&pzZJ)Bf>&t6$`7b0Mo~4bJgR z3xc=%l)ZR%`^6>Adw0ol{Crw7?_|TFkBU3zJn5f2x2FI8 zj)m-hFZ}Gi-YZ|!5IOO6MB4rZr#5{F4Lxb|;L+dI3ykaddv&IFFt7+XFq|}6@YQ%_ z=7FyZFTQzc7IG7St&914sa3JnZG7|aZ@f~ulf^JJ=ioiA3Zf8aY$U%Gm^)z>$T zdp|7s{Cq0&1O^%Qgt=93zumu`@9kOq%z;VZ!0$-*Yb(R|?$L>TSM%>RD~C+G0nl6z zkSz@?KwHpld$8iw9=$(5H_Da(eLI_NOG)_?jd<4otecjEIv4WIJ_w8i22WQ%mvv4F FO#osKesll; diff --git a/dev-assets/doodads/doors/blue-right.png b/dev-assets/doodads/doors/blue-right.png deleted file mode 100644 index 472c545d2cac7d593540e54f275f0dd9ee1020b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 884 zcmeAS@N?(olHy`uVBq!ia0vp^0YL1-!3HFMu^RX?Ffg`cIy(n=Iy);A6y>L7=A<$( zXiTh~XzOvBI51`w?24q zJn8Deqmkk4;f?}-7z&F@f=VU|{huxpb)=%;PJj7#x$^f63&WCD-8AD{F)LLiDbR3g zoG9~pjwFG-5(j6T@u~Hj^yq_3{PzzZzv>;@yyyI1%Uwp1lNs$MR!n=@=DNqxW^d-p zIo~^-*C?cSobPn!-KFqR`MT)z`xeh-#VXQHc&I(=bUu=_uXU z`9!N}VlrduiV3pzKjiYhW{YAVDIwD zKoQOYkH}&M25w;xW@MN(M*=9wUgGKN%Kn5$jzLH2L&_RpOfpE8xJHyX=jZ08=9Mrw z7o{eaq^2m8XO?6rxO@5rgg5eu1Ebr=)5S5Q;?~=5~fq`komah+a z5+wH&ZhtFt@p6y4(m6rfvlWqgg0^of)(M6(K2v=9km(2GMbUY;CZAAV9B|a+{uS6)n o<9@#P_|8{8y~i${2tOFlDCiPqYvWgb4H)zopr0Cg61xBvhE diff --git a/dev-assets/doodads/doors/blue-unlocked.png b/dev-assets/doodads/doors/blue-unlocked.png deleted file mode 100644 index 660ce7bb76d4d906937f6190a3d81cc86465d356..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 906 zcmV;519kj~P)EX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZQWT=8*MO4I5t5Adrp;lNGFg)WK9P8q>4rtTK|H-_ z>74h8L#!ZYh|h^f4Z0xlBi9v|-#F(T7IO?@AxHhDdZ}G zkz)a6sE{2$_#gc4*33;#xJkh%(EeiEA45Q37pPZl`}^3o>nDK!8MxA#{&EeN`6RvC z)WSzV_cm~G-PDvl;Bp7(d(ve?b|gPdA(sQ*&*+=dK+i4Ex#srP*vIJukfg5SH^9Lm zFr26Cb&q#eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00Cl2L_t(|+U?stZi6rw#_`vvw}K&DrXA9`Jwr1m13g2h zUVsktT<(Bq5DFx?)P4y6X9)o9*)US+(Y^aVhZn`TA}@%fe<~w5gl+@lwsQh%>h2Hc}*5j~)%+dJET}q;Y)*TipD;^~{h8zi89niwHFf8Nh!6%pWGcHY7vcrOF9V@%N z*lIq#bGxi|a5X((@917Vc~SS2AN!YFP&(H9xNgtx?>nm5IldZQUUR`>!OLwky^b99 zDGPm53q$74KA~QM6#PpHoqZO-OPSH=X z3A4;Eyml(|+8*`#M2qF?b&Buisx`XmI5u&xhE54+>y=n*r70G)MgIFo{#|vQF_yz?s_b`i(P=vF< zBeIx*K~EWk87r3BmjMOYOFVsD*&nkAvT+OSe*a)KP)M@GHKN2hKQ}iuuY|$5C^fMp zHASI3vm`^o-P1Q9ypc~FsOXKSi(^Q|t+%%?ay2OMv?hw)-H2nb+orCC_E{I)-rTh0w`^51vPk-_7*rq!)QugiQ_`<3E4x{J=u`DC-%o3ErvR0` z;rwvrgPO^~t;-Lv>&KQdeD8}}wOMGxc}*5j~)%+dJET}q;Y)*TipD;^~{h8zi89niwHFf8Nh!6%pWGcHY7vcrOF9V@%N z*lIq#bGxi|a5X((@917Vc~SS2AN!YFP&(H9xNgtx?>nm5IldZQUUR`>!OLwky^b99 zDGPm53q$74KA~QM6#PpHoqZO-OPSH=X z3A4;Eyml(|+8*`#M2qF?b&Buisx`XmI5u&xhE54+>y=n*r70G)MgIFo{#|vQF_yz?s_b`i(P=vF< zBeIx*K~EWk87r3BmjMOYOFVsD*&nkAvT-XFTWr(@3Q3l@MwB?`=jNv7l`uFLr6!i7 zrYMwWmSiZnd-?{1H}Z)C6&>(&aSW-r_4c+S*HHx?RtMdCThm`<{$0%IC8hF`L$22 zzACFhY+KQ%Lt8Oa!vz%73=a$4Yp`VynqOz*@aa)9qnXA%^94u#DF&Tqxv`=`*FZL5 u^X2*68xlWmzI1vQW7g)wi!*2XCA-#j777`BR(z8HGRo7{&t;ucLK6UBnk2CR diff --git a/dev-assets/doodads/doors/build.sh b/dev-assets/doodads/doors/build.sh deleted file mode 100755 index 7615a8d..0000000 --- a/dev-assets/doodads/doors/build.sh +++ /dev/null @@ -1,52 +0,0 @@ -# doodad convert -t "Red Door" red1.png red2.png door-red.doodad -# doodad edit-doodad -q --tag color=red door-red.doodad -# doodad install-script locked-door.js door-red.doodad - -doodad convert -t "Red Door" red-closed.png red-unlocked.png red-right.png red-left.png door-red.doodad -doodad edit-doodad -q --tag color=red door-red.doodad -doodad install-script colored-door.js door-red.doodad - -doodad convert -t "Blue Door" blue-closed.png blue-unlocked.png blue-right.png blue-left.png door-blue.doodad -doodad edit-doodad -q --tag color=blue door-blue.doodad -doodad install-script colored-door.js door-blue.doodad - -doodad convert -t "Green Door" green-closed.png green-unlocked.png green-right.png green-left.png door-green.doodad -doodad edit-doodad -q --tag color=green door-green.doodad -doodad install-script colored-door.js door-green.doodad - -doodad convert -t "Yellow Door" yellow-closed.png yellow-unlocked.png yellow-right.png yellow-left.png door-yellow.doodad -doodad edit-doodad -q --tag color=yellow door-yellow.doodad -doodad install-script colored-door.js door-yellow.doodad - -doodad convert -t "Small Key Door" small-closed.png small-unlocked.png small-right.png small-left.png small-key-door.doodad -doodad edit-doodad -q --tag color=small small-key-door.doodad -doodad install-script colored-door.js small-key-door.doodad - -doodad convert -t "Red Key" red-key.png key-red.doodad -doodad edit-doodad -q --tag color=red key-red.doodad -doodad install-script keys.js key-red.doodad - -doodad convert -t "Blue Key" blue-key.png key-blue.doodad -doodad edit-doodad -q --tag color=blue key-blue.doodad -doodad install-script keys.js key-blue.doodad - -doodad convert -t "Green Key" green-key.png key-green.doodad -doodad edit-doodad -q --tag color=green key-green.doodad -doodad install-script keys.js key-green.doodad - -doodad convert -t "Yellow Key" yellow-key.png key-yellow.doodad -doodad edit-doodad -q --tag color=yellow key-yellow.doodad -doodad install-script keys.js key-yellow.doodad - -doodad convert -t "Small Key" small-key.png small-key.doodad -doodad edit-doodad -q --tag color=small small-key.doodad -doodad install-script keys.js small-key.doodad - -doodad convert -t "Electric Door" electric{1,2,3,4}.png door-electric.doodad -doodad install-script electric-door.js door-electric.doodad - -# Tag the category for these doodads -for i in *.doodad; do doodad edit-doodad --tag "category=doors" $i; done -doodad edit-doodad --tag "category=doors,gizmos" door-electric.doodad - -cp *.doodad ../../../assets/doodads/ diff --git a/dev-assets/doodads/doors/colored-door.js b/dev-assets/doodads/doors/colored-door.js deleted file mode 100644 index 1c47ab6..0000000 --- a/dev-assets/doodads/doors/colored-door.js +++ /dev/null @@ -1,68 +0,0 @@ -// Colored Locked Doors. - -const color = Self.GetTag("color"), - keyname = color === "small" ? "small-key.doodad" : "key-" + color + ".doodad"; - -function main() { - // Layers in the doodad image. - let layer = { - closed: 0, - unlocked: 1, - right: 2, - left: 3, - }; - - // Variables that change in event handler. - let unlocked = false; // Key has been used to unlock the door (one time). - let opened = false; // If door is currently showing its opened state. - let enterSide = 0; // Side of player entering the door, -1 or 1, left or right. - - Self.SetHitbox(34, 0, 13, 76); - - Events.OnCollide((e) => { - // Record the side that this actor has touched us, in case the door - // needs to open. - if (enterSide === 0) { - enterSide = e.Overlap.X > 0 ? 1 : -1; - } - - if (opened) { - return; - } - - if (e.InHitbox) { - if (unlocked) { - Self.ShowLayer(enterSide < 0 ? layer.right : layer.left); - opened = true; - Sound.Play("door-open.wav") - return; - } - - // Do they have our key? - let hasKey = e.Actor.HasItem(keyname) >= 0; - if (!hasKey) { - // Door is locked. - return false; - } - - if (e.Settled) { - unlocked = true; - Self.ShowLayer(enterSide < 0 ? layer.right : layer.left); - Sound.Play("unlock.wav"); - - // If a Small Key door, consume a small key. - if (color === "small") { - e.Actor.RemoveItem(keyname, 1) - } - } - } - }); - Events.OnLeave((e) => { - Self.ShowLayer(unlocked ? layer.unlocked : layer.closed); - // Sound.Play("door-close.wav") - - // Reset collision state. - opened = false; - enterSide = 0; - }); -} diff --git a/dev-assets/doodads/doors/electric-door.js b/dev-assets/doodads/doors/electric-door.js deleted file mode 100644 index 5c35201..0000000 --- a/dev-assets/doodads/doors/electric-door.js +++ /dev/null @@ -1,65 +0,0 @@ -// Electric Door - -let animating = false; -let opened = false; -let powerState = false; - -// Function to handle the door opening or closing. -function setPoweredState(powered) { - powerState = powered; - - if (powered) { - if (animating || opened) { - return; - } - - animating = true; - opened = true; - Sound.Play("electric-door.wav") - Self.PlayAnimation("open", () => { - animating = false; - }); - } else { - animating = true; - Sound.Play("electric-door.wav") - Self.PlayAnimation("close", () => { - opened = false; - animating = false; - }) - } -} - -function main() { - Self.AddAnimation("open", 100, [0, 1, 2, 3]); - Self.AddAnimation("close", 100, [3, 2, 1, 0]); - - Self.SetHitbox(0, 0, 34, 76); - - // A linked Switch that activates the door will send the Toggle signal - // immediately before the Power signal. The door can just invert its - // state on this signal, and ignore the very next Power signal. Ordinary - // power sources like Buttons will work as normal, as they emit only a power - // signal. - let ignoreNextPower = false; - Message.Subscribe("switch:toggle", (powered) => { - ignoreNextPower = true; - setPoweredState(!powerState); - }) - - Message.Subscribe("power", (powered) => { - if (ignoreNextPower) { - ignoreNextPower = false; - return; - } - - setPoweredState(powered); - }); - - Events.OnCollide((e) => { - if (e.InHitbox) { - if (!opened) { - return false; - } - } - }); -} diff --git a/dev-assets/doodads/doors/electric.gif b/dev-assets/doodads/doors/electric.gif deleted file mode 100644 index c280b2d05257900f62a766f5cfef2c4cc6a96895..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10568 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 diff --git a/dev-assets/doodads/doors/green-closed.png b/dev-assets/doodads/doors/green-closed.png deleted file mode 100644 index e178cdab504cac5da4b045740c414f44b1f5dd6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1047 zcmV+y1nB#TP)EX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZQWT=8*MO4I5t5Adrp;lNGFg)WK9P8q>4rtTK|H-_ z>74h8L#!ZYh|h^f4Z0xlBi9v|-#F(T7IO?@AxHhDdZ}G zkz)a6sE{2$_#gc4*33;#xJkh%(EeiEA45Q37pPZl`}^3o>nDK!8MxA#{&EeN`6RvC z)WSzV_cm~G-PDvl;Bp7(d(ve?b|gPdA(sQ*&*+=dK+i4Ex#srP*vIJukfg5SH^9Lm zFr26Cb&q#eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00HkwL_t(|+U?shZo)7ahT-28Q!mhwt#paR6}Uhrju6!| zLsY3Zs2G@2`3OwC09Qa_feuJa6&L90F0~0kfsnR|1MerHCa8{*NB$iLjFNC-E3{Ef zpL9n;N_xis>M&0EMhJia0tg@hkZH`}tmbJquhDOs9#|!z!coGPTEf|~Z9_SC+EBLH z{UTrhkMy?C(1Hdm>TTSGnMj9qQwb$1pmVVmJ`Ys%KuQ=u0w90@0!RP^5I_J4fB*sr zAOR3S00ATb0tn!xr;(Kj#uzIi636k;uO(;qGrv9f82rgGTi*kXF*b@KiK56~bP?Ws zKKHN5*QC@jlO(ZqUXN-5FPp_;AwNCG|Io(ajc!K=p#D8AVvG?Hk^C{I)2WQdV|9@| zFdx@*3ZXJ3-0%1IdSbrq)r^7p-tybF!{P8c0OL4TNs?H1!MRd9d+c&;d%d0?8tN?H z+Q&c_H_+!U)JiJye)n*){o{6du(-$=V^^zHt$2+A7Q_R7ZkPT|twqwzs;%`#EX>4Tx04R}tkv&MmKpe$i(~2S$5j%)DWT@g`K~%(1t5Adrp;l;i>s5Oi-%p`X*#NI13Go;C2#u^(aQGO0Cu2DBLX3hF8}}l07*qoM6N<$g2crvZ2$lO diff --git a/dev-assets/doodads/doors/green-left.png b/dev-assets/doodads/doors/green-left.png deleted file mode 100644 index 37728e563f67ecb0ab4312c82e8621a4e2d7b6f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 875 zcmeAS@N?(olHy`uVBq!ia0vp^0YL1-!3HFMu^RX?Ffg`cIy(n=Iy);A6y>L7=A<$( zXiTh~XzOvBI51`w?24q zJn8Deqmkk4;f?}-7z&F@f=VU|{huxpb)=%;PJj7#x$^f63&WCD-8AD{F)LLiDbR3g zoG9~pjwFG-5(j6T@u~Hj^yq_3{PzzZzv>;@yyyI1%Uwp1lNs$MR!n=@=DNqxW^d-p zIo~^-*C?cSobPn!-KFqR`MT)z`xeh-#VXQHc&I(=bUu=_uXU z`9!N}VlrduiV3pzKjiYhW{YAVDIwD zKoQOYkH}&M25w;xW@MN(M*=9wUgGKN%Kn5$jzQZ{c;?|#Kq1Kz*N775{M_8syb=cI zqSVBa)D(sC%#sWRcTeAd@J2pyV01fsx;TbZ+x0 z`~_R?uBIIw)6Q;l71;7xBzD0IuEfe z55FFI@hj8!_Q`Y7kMplE@$J?*eI(OCaAJlGXQ+7-g98I2%LJ)vuK%~wc5C-PzszZU zK~4UlMB;S!AGJBP^3OM{-B@eCo{4Qk+V-C<*DMmQ<~`Q*xy$g&YTw#D9>4$ao#0^R zP-tKfYG7dEP+-Jho?}`S(|Jm?%B(>ve9>01wOeDRi8JJWh*R}6s&IMN$ncHh!^VmZ z!(}$+$2|7*vGe};eBAY;mDpyJrynnD{$<5&0aODsn8^dgY+wOehsxY`@w&hDyY1Fq jrmTExmrk!|{mL7=A<$( zXiTh~XzOvBI51`w?24q zJn8Deqmkk4;f?}-7z&F@f=VU|{huxpb)=%;PJj7#x$^f63&WCD-8AD{F)LLiDbR3g zoG9~pjwFG-5(j6T@u~Hj^yq_3{PzzZzv>;@yyyI1%Uwp1lNs$MR!n=@=DNqxW^d-p zIo~^-*C?cSobPn!-KFqR`MT)z`xeh-#VXQHc&I(=bUu=_uXU z`9!N}VlrduiV3pzKjiYhW{YAVDIwD zKoQOYkH}&M25w;xW@MN(M*=9wUgGKN%Kn5$jzQb3_itDxP)M@GHKN2hKQ}iuuY|$5 zC^fMpHASI3vm`^o-P1Q9ypc~F7~LM8E{-7;x8B|{^g9$FbKqh4EoFhd4%f>W&4q>8 z)7>8@>|o+Hf564tZ1t<}2q#atLaBk73YQ?y7t#Ique6y=(SLuxOhMPlZY#S?@R!<4 zu6k9IPcF%w_3ZY~n7wzllyASjcmDl1Mc)>Oin3k!k#y(v_x1O}qwS?x|7tccFf#o) zANu^);d$}*cfCE{UakFMLLX;(OYetw8*Q&zgg>|2Hv9MO2F7<0xyK!>qYvb+J{x(@#UlTKBVayZ;{-fQ7Z4!^~ zbtqTNuZTY?akyv~%L^%v0*STruPH9Q@^<+YC)@S)wKb`{tpVp>Pgu6{_C56m=?=FW zrZ|meVB}Ibut(}hymi^$<2&DX^_)wcu)YZxJKJmuvySnq0Rx`F)78&qol`;+0JJ=J AA^-pY diff --git a/dev-assets/doodads/doors/green-unlocked.png b/dev-assets/doodads/doors/green-unlocked.png deleted file mode 100644 index 254fadb006b5071c7b1b23498afa5c91debc68db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 888 zcmeAS@N?(olHy`uVBq!ia0vp^0YL1-!3HFMu^RX?Ffg`cIy(n=Iy);A6y>L7=A<$( zXiTh~XzOvBI51`w?24q zJn8Deqmkk4;f?}-7z&F@f=VU|{huxpb)=%;PJj7#x$^f63&WCD-8AD{F)LLiDbR3g zoG9~pjwFG-5(j6T@u~Hj^yq_3{PzzZzv>;@yyyI1%Uwp1lNs$MR!n=@=DNqxW^d-p zIo~^-*C?cSobPn!-KFqR`MT)z`xeh-#VXQHc&I(=bUu=_uXU z`9!N}VlrduiV3pzKjiYhW{YAVDIwD zKoQOYkH}&M25w;xW@MN(M*=9wUgGKN%Kn5$jzL@d-EXT6Kq1Kz*N775{M_8syb=cI zqSVBa)D(sC%#sWRcTeAd@J2pyU~~s~x;TbZ+G?6e-$cSJDir;~q}u=AWtup_&SWFUV+DIn_G2ygy7!$3&hxJ+|FrRmz90i5 zi+}@@!u1))qtAZ*9%o$ZKj(n*M=p2H`Yg`tsnu;o`{pdnd40b60K>n+TYDDnWV>UX zYty>Z<9F4H3eSQq(~2JaKX8C^NeiP20~3cr1B(ODzzGaM7K0Gf=mrL+AN+=!lhTg< zo}QTlfK87^>59Xsgh}(elGH}jrq;!@6Q&! zeHPvOSK`2&&!>~y6JKom_iV4K=F+13AC_I=`+n?-J+JQR?c5J!122^=);ATO85wzf zt7e?}fw>pv9(A3C?gkGAphp=vfv(|DU<9&&4&Gc}*5j~)%+dJET}q;Y)*TipD;^~{h8zi89niwHFf8Nh!6%pWGcHY7vcrOF9V@%N z*lIq#bGxi|a5X((@917Vc~SS2AN!YFP&(H9xNgtx?>nm5IldZQUUR`>!OLwky^b99 zDGPm53q$74KA~QM6#PpHoqZO-OPSH=X z3A4;Eyml(|+8*`#M2qF?b&Buisx`XmI5u&xhE54+>y=n*r70G)MgIFo{#|vQF_yz?s_b`i(P=vF< zBeIx*K~EWk87r3BmjMOYOFVsD*&nkAvhgq%2$*jI3Q3l@MwB?`=jNv7l`uFLr6!i7 zrYMwWmSiZnd-?{1H}Z)C6>ax)aSW-r_4c+mUyA|{L%@uR>+@DFpL=t+(ZPip>%E0I z_iU*#`DP|}KTNvz$-~Ff6jLr)l1>u{-cpBjB9u%d=|Hn1g5`_mI_(x_ZcxblyWXvyg`Uz s!&j+*g8S1M(Jg2w{v!RW;>-Kb_U4y)_rDGOs|Qly>FVdQ&MBb@0LN%28vpc}*5j~)%+dJET}q;Y)*TipD;^~{h8zi89niwHFf8Nh!6%pWGcHY7vcrOF9V@%N z*lIq#bGxi|a5X((@917Vc~SS2AN!YFP&(H9xNgtx?>nm5IldZQUUR`>!OLwky^b99 zDGPm53q$74KA~QM6#PpHoqZO-OPSH=X z3A4;Eyml(|+8*`#M2qF?b&Buisx`XmI5u&xhE54+>y=n*r70G)MgIFo{#|vQF_yz?s_b`i(P=vF< zBeIx*K~EWk87r3BmjMOYOFVsD*&nkAvhj#~KD??`KV&hxd-G%I_;y> { - if (e.Settled) { - if (e.Actor.HasInventory()) { - // If we don't have a quantity, and the actor already has - // one of us, don't pick it up so the player can get it. - if (quantity === 0 && e.Actor.HasItem(Self.Filename) === 0 && !e.Actor.IsPlayer()) { - return; - } - - Sound.Play("item-get.wav") - e.Actor.AddItem(Self.Filename, quantity); - Self.Destroy(); - } - } - }) -} diff --git a/dev-assets/doodads/doors/red-closed.png b/dev-assets/doodads/doors/red-closed.png deleted file mode 100644 index 57fa66a24e0d3aed45754b33d2751ed72b41ab2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1010 zcmVEX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZQWT=8*MO4I5t5Adrp;lNGFg)WK9P8q>4rtTK|H-_ z>74h8L#!ZYh|h^f4Z0xlBi9v|-#F(T7IO?@AxHhDdZ}G zkz)a6sE{2$_#gc4*33;#xJkh%(EeiEA45Q37pPZl`}^3o>nDK!8MxA#{&EeN`6RvC z)WSzV_cm~G-PDvl;Bp7(d(ve?b|gPdA(sQ*&*+=dK+i4Ex#srP*vIJukfg5SH^9Lm zFr26Cb&q#eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00GKLL_t(|+U?stPQx%5#_`vvhv5z|GzX}}DVm`j=+a2s z0G2E;|Mnh!$al>Z}HZCW{Ue|q!PI7-}!Y0*awJ?M#y zR8ToG<})Dx0tg_01V8`_;{!-~JC8P2n_I8h*7C}Q3M4fva9*)Y1(Lt3z@mMg{W%qQ zB2kW2V6F4MC>^*0&;o2YaK$Ffr5u0+KmY**kN^lEfB+Hz0R#|00w90@0!RP^5WrK< zAdfldcsHxSyF7kda-;SB{nYb1S!dT#L*Pv>zJXqIKR9<^c%!u>Ns{Y(y;|7=SN1xW zfyl$1Q}?^O#WN<~bi8YlnfIc#Hend%=Ec~biKKn)buQL!%$w;2@TbWUydp%A@^$qI zIQXMp%i#BY?{ELnQERa-t(3+USX9}4Z@y|MM3IA?y)h#4@^oI=e|EJ!m|Ub|F^|vv zA3z4#gsXn!$LDtc-uFeKDE;p3U1V0!r|;93QJhHoe*Tp!krsGm%K%m+yV({k1K0r3 zRXp~A{2K!x2N5c81l8wq6;50P3~t6#fjnr#J`g|v0VDtd2q1t2KmY**kN^lEfB=%3 gaq1uGF-|M}0!Rr(3}^siAOHXW07*qoM6N<$f|7Z*9RL6T diff --git a/dev-assets/doodads/doors/red-key.png b/dev-assets/doodads/doors/red-key.png deleted file mode 100644 index 38db17399b7ce28fe853fb5c4046b4deb5df7909..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 699 zcmV;s0!00ZP)EX>4Tx04R}tkv&MmKpe$i(~2S$5j%)DWT@g`K~%(1t5Adrp;l;i>s5OirNs=V_D+tc`l@F1Wd(BWeRf=Fg3j?v4*`e7Y5b`EKr#r;Uhp4^RQrk#X$oeI! zT%)1YB&&PDduxgf4d}gDO=L~RF<8kTYRX;Nd!wc-)>BWso;V}_IcBar8a7_;pL7=A<$( zXiTh~XzOvBI51`w?24q zJn8Deqmkk4;f?}-7z&F@f=VU|{huxpb)=%;PJj7#x$^f63&WCD-8AD{F)LLiDbR3g zoG9~pjwFG-5(j6T@u~Hj^yq_3{PzzZzv>;@yyyI1%Uwp1lNs$MR!n=@=DNqxW^d-p zIo~^-*C?cSobPn!-KFqR`MT)z`xeh-#VXQHc&I(=bUu=_uXU z`9!N}VlrduiV3pzKjiYhW{YAVDIwD zKoQOYkH}&M25w;xW@MN(M*=9wUgGKN%Kn5$jzPzG(=`)CppayVYeb22er|4RUI~M9 zQEFmIYKlU6W=V#EyQgnJcq5-UFuL75T^vIyZoR#;G53&zMBBsj9gLeCcX=eTnqS}8 zYAxT(ZFPRaJ>PS&+dQ7@>g-HrHfuP=;>hxd>0|!qeN!j4me~BV44&hWvOM-k^`wR3 zw);yiAFo}pds~^e?yUF5D{Rh}m&TqpS)fu|W&eWdcAoO-vn~uw910C7k{5nWp29iD zDB*VQmw(@^Zfd45=`w%2te&|k_ykK7tIfQ9`!xL&g?}7>)<0{X_x}HNv;7$S_pN%< z$fD4|z~lio1e3|faU;diSL{MJW6map>0WwMyTk?34J&G|vUj{`Wa#6#P+KYb^!)2Z zQ&z35&pI%hUpzE={UVEX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZQWT=8*MO4I5t5Adrp;lNGFg)WK9P8q>4rtTK|H-_ z>74h8L#!ZYh|h^f4Z0xlBi9v|-#F(T7IO?@AxHhDdZ}G zkz)a6sE{2$_#gc4*33;#xJkh%(EeiEA45Q37pPZl`}^3o>nDK!8MxA#{&EeN`6RvC z)WSzV_cm~G-PDvl;Bp7(d(ve?b|gPdA(sQ*&*+=dK+i4Ex#srP*vIJukfg5SH^9Lm zFr26Cb&q#eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00B8kL_t(|+U?vwPQq{;#^G;C58w^lOguxEZr*~eb?M$~ zIJo%h<}KVfg(hy^z#G(ophhhb28~dQMspwTz)puR@ z>v*2aoBnR|H2U$S0joS_&_i91`uevi4L-ICofJTT009DAXfLmC04;FD^<7_Go_&QD z2yl3P5pnhvS|GsT_3b+63N7%&@};eB-}k@2)(P;(Th%$xhX_Cc1PBnI00IOEPyhh} z1So(20Rj|2fB*q5w9PujW}N^Yi&qvAWf2D>uHbF)c9lg$bCCc#2LhZ&1|0qvb@v!Or@{00000NkvXXu0mjfu6}e7 diff --git a/dev-assets/doodads/doors/red-unlocked.png b/dev-assets/doodads/doors/red-unlocked.png deleted file mode 100644 index 8124fb514ac04483fc37ec3081acca498f8d1e24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 849 zcmeAS@N?(olHy`uVBq!ia0vp^0YL1-!3HFMu^RX?Ffg`cIy(n=Iy);A6y>L7=A<$( zXiTh~XzOvBI51`w?24q zJn8Deqmkk4;f?}-7z&F@f=VU|{huxpb)=%;PJj7#x$^f63&WCD-8AD{F)LLiDbR3g zoG9~pjwFG-5(j6T@u~Hj^yq_3{PzzZzv>;@yyyI1%Uwp1lNs$MR!n=@=DNqxW^d-p zIo~^-*C?cSobPn!-KFqR`MT)z`xeh-#VXQHc&I(=bUu=_uXU z`9!N}VlrduiV3pzKjiYhW{YAVDIwD zKoQOYkH}&M25w;xW@MN(M*=9wUgGKN%Kn5$jzLH7;)RGGKq1Kz*N775{M_8syb=cI zqSVBa)D(sC%#sWRcTeAd@J2pyV03GGx;TbZ+h}o?=WVr~Un+ZZS!*t!k3mmrig0D(QP624P0eeFYjA7@0&G z7}!5^2E=Xa_jA21zP@tyk0*!})1i<0x&_Ti1%o@>@Hy}$K+?t0;V z2JQnBh5Pjq`->P@6&xC{66qedTd$Ozw~aJ7J|lG5TPLrVm%3Q_<(}`j>QuHxS^o2d zH4=vL8GS#vEu}WRkM8^Fb>wLM$}bzEm%Yzo*x%Rx{jc5M#rbQUi$4by^UE|_Y`Ac; z!S<0*gc}*5j~)%+dJET}q;Y)*TipD;^~{h8zi89niwHFf8Nh!6%pWGcHY7vcrOF9V@%N z*lIq#bGxi|a5X((@917Vc~SS2AN!YFP&(H9xNgtx?>nm5IldZQUUR`>!OLwky^b99 zDGPm53q$74KA~QM6#PpHoqZO-OPSH=X z3A4;Eyml(|+8*`#M2qF?b&Buisx`XmI5u&xhE54+>y=n*r70G)MgIFo{#|vQF_yz?s_b`i(P=vF< zBeIx*K~EWk87r3BmjMOYOFVsD*&nkAvT;c{DO!913Q3l@MwB?`=jNv7l`uFLr6!i7 zrYMwWmSiZnd-?{1H}Z)C747kKaSW-r_4cMCUxNYcn2%(YfkP&=-}$iVQAbHe20{r6bI z{*>r4cN`VY-O7@5@Y^y@rVO45tY_E7GHp8e#G7%EBl8vJoMs`02P^vOzZy*dCe26j yJ9$(VoW8x@>)c}*5j~)%+dJET}q;Y)*TipD;^~{h8zi89niwHFf8Nh!6%pWGcHY7vcrOF9V@%N z*lIq#bGxi|a5X((@917Vc~SS2AN!YFP&(H9xNgtx?>nm5IldZQUUR`>!OLwky^b99 zDGPm53q$74KA~QM6#PpHoqZO-OPSH=X z3A4;Eyml(|+8*`#M2qF?b&Buisx`XmI5u&xhE54+>y=n*r70G)MgIFo{#|vQF_yz?s_b`i(P=vF< zBeIx*K~EWk87r3BmjMOYOFVsD*&nkAvT>Oe{0tEX3Q3l@MwB?`=jNv7l`uFLr6!i7 zrYMwWmSiZnd-?{1H}ZiLZS!<-45_&F_O>-&ivbU-gLL74?RMdS#P`Qe?a|`p@UIIJ zG1`}Yw0?5D+`h-|OpzZp%KiwKkpt?)09}&;>lrNA6yk3!JD|z%dgr-mppVNOOb=|ir_VYgqDJz- jl}BqC1FOArd|4_OS_0T->^)J|3^K^m)z4*}Q$iB}4_O>b diff --git a/dev-assets/doodads/doors/small-closed.png b/dev-assets/doodads/doors/small-closed.png deleted file mode 100644 index b97ae465ae3754df1aa959fc4befb9cc0aef5813..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1099 zcmV-R1ho5!P)EX>4Tx04R}tkv&MmP!xqvQ$>-Ag9W8HWT;LSq>4Cd6^c+H)C#RSn7s54nlvOS zE{=k0!NH%!s)LKOt`4q(Aov5~=H{g6A|>9J6k5c1;qgAsyXWxUeSpxYFwN?k05sh; z)5(OG&8><(uLvNBAw&?DnPtpLQVPEHbx++?cQKyj-}h(rt9gq70g-r?8KzCVK|H-_ z8=Uuv!>lB$#OK80CS8#Dk?V@bZ=8!R3p_JyX43P-VPdh^!Ab|SlBp3-5l2-`r+gvn zvC4UivsS6G);;+PLwS8=nd`Jhki;UEAVGwJ8p^1^MvQiy6borOPx$yFu3sXTLas6x zITlcb2HEw4|H1FsT7}8DmlR3>-7k*wF$(nT0?oSPd>=bb^8^S!16O+6Uu^(0pQP8@ zTJ#7Q*aj}H+nTZmTeSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00JXPL_t(|+U=Y%irYXGhJOX0L-iIRg&H-%ix1#syJ6W| zqzMFpG3X+OH0qWu<^X~%w1ptJajA2Jz@&&JW{n(cH;FZJzQ3AhkA|7wPw&%6!jZy} zd*gA@n3H}NihI^t<$2y361^f822NNQh=JoO3S}bJ+E+uQu4`pkHtHH?A^nJ-S5P`x_7-1j=LSZNjg`qGt5QtzPg2Mkjg_9&X8AIU{ z6dn>&1Azz-0U~VWFp#Yr5J4CSg`qGMhQic93ha;qNz#w+pLBmGJw5MKRqTZa>*jW+o7){X6NV^Bk{2}gjq}@~yp<5# zDcn-{!~0?V$iN=?cUK-CuGH7gvMdVamb`(0Z> z;n3+i*;AOunot;F;2FhpVJHlRp)e3Z7zl--FcgNu)IbcxKqx$(Ciz$JKLP0$;wt?_ RuH*m!002ovPDHLkV1n`d^B4dC diff --git a/dev-assets/doodads/doors/small-key.png b/dev-assets/doodads/doors/small-key.png deleted file mode 100644 index 11e4eca0c732efb86766d1e3f0188aa244ebaf33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 682 zcmV;b0#*HqP)EX>4Tx04R}tkv&MmP!xqvQ$>-Ag9W8HWT;LSq>4Cd6^c+H)C#RSn7s54nlvOS zE{=k0!NH%!s)LKOt`4q(Aov5~=H{g6A|>9J6k5c1;qgAsyXWxUeSpxYFwN?k05sh; z)5(OG&8><(uLvNBAw&?DnPtpLQVPEHbx++?cQKyj-}h(rt9gq70g-r?8KzCVK|H-_ z8=Uuv!>lB$#OK80CS8#Dk?V@bZ=8!R3p_JyX43P-VPdh^!Ab|SlBp3-5l2-`r+gvn zvC4UivsS6G);;+PLwS8=nd`Jhki;UEAVGwJ8p^1^MvQiy6borOPx$yFu3sXTLas6x zITlcb2HEw4|H1FsT7}8DmlR3>-7k*wF$(nT0?oSPd>=bb^8^S!16O+6Uu^(0pQP8@ zTJ#7Q*aj}H+nTZmTeSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{004qXL_t(Y$L*BK4Zt7_1i`IPnR{^`u8dm97otQl!X}Bd z^F&CqUXGLi0002+MMR`o_ma1`)@lww-eOhFGXY%0%sj}Lxjh9SuZc@3!+LlF{ls^Z zS{m3^b%?kR@QQdA^0-{#^54DV(Eob%>`k>_)x53tbIo2iKFL7=A<$( zXiTh~XzOt}K%~__*mYu8GwV`|loftrOS&wwM7shMuW+rknz82#|11*~O})OR?1KmA zA6?bly?Gtqx+aAm%#WTuTk=9l_1<)ms3R2*KiZw!{rtnd+J*}&49>oq#b9#R?DEN$ z8E4ma*{8 zO?O&nBw;BQ(8_l6YxDnu?{7x6p4>5A#Eapse&1(9t}kzx&hC0#BX8~ZnT5lSIlSt2 zd@h6W{3X|KM}6UtxWT5k?)I!r>@n{c4*R#|oLVQcL{)_Az;DUgU_OaGtiP`9*}3&x z;V*`ijIfo`4;~0eXa{}Ub$)lX_49A}{@Hc*xwDIwa$fVl3XB%EByV>YhW{YAVDIwD zKoQOYkH}&M25w;xW@MN(M*=9wUgGKN%Kns*g+WAl%QTBXppayVYeb22er|4RUI~M9 zQEFmIYKlU6W=V#EyQgnJcq5-UFuLnKT^vIyZoQpzu(#Pjz_mT})eNN_0j%la4&okq zEtC6A9x&BBcJe-_>LMuZtgt#^)BE{CXFN_`|8W0=lb(wHQCZWY6YYO&Dr^33C-?T1 zMc<`uZ}k_?TGknR-SZloU;P7(si~TluRp!&{ml2_-tmz1CD*=Pdy?~@f5G{ZgjK@R zte)s+`{h5dVPBq8HLZW;*7B@pHTO4Q(KU1%WL(I~+Iq(#~e z1xR!#@U#FaF6Tre0cJx1APrU{;0RNaqQExqr{KKPmhIKm))yp%LqkJCdkiP?-7z?3 z@!Tc!{q@k$RjazLMID==n|$VyRq~lb5|gV^>p4Yn^2Bj3+mG6V2Q1N|YrFuq7#g9mF-c(Se0o5W-gGIpP3zkBAy` zBL~}}En)GeXZT&WH98Z1ZsNJ$3hzW(FLulRNSymlS#utO9tDnm{ Hr-UW|#7mEg diff --git a/dev-assets/doodads/doors/small-right.png b/dev-assets/doodads/doors/small-right.png deleted file mode 100644 index 4f5505602e7fcd633715a28b0265dae098567a80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 936 zcmeAS@N?(olHy`uVBq!ia0vp^0YL1-!3HFMu^RX?Ffg`cIy(n=Iy);A6y>L7=A<$( zXiTh~XzOt}K%~__*mYu8GwV`|loftrOS&wwM7shMuW+rknz82#|11*~O})OR?1KmA zA6?bly?Gtqx+aAm%#WTuTk=9l_1<)ms3R2*KiZw!{rtnd+J*}&49>oq#b9#R?DEN$ z8E4ma*{8 zO?O&nBw;BQ(8_l6YxDnu?{7x6p4>5A#Eapse&1(9t}kzx&hC0#BX8~ZnT5lSIlSt2 zd@h6W{3X|KM}6UtxWT5k?)I!r>@n{c4*R#|oLVQcL{)_Az;DUgU_OaGtiP`9*}3&x z;V*`ijIfo`4;~0eXa{}Ub$)lX_49A}{@Hc*xwDIwa$fVl3XB%EByV>YhW{YAVDIwD zKoQOYkH}&M25w;xW@MN(M*=9wUgGKN%Kns*g+WB_&A$={ppayVYeb22er|4RUI~M9 zQEFmIYKlU6W=V#EyQgnJcq5-UFuEH&T^vIyZoR#;vA5Ykt3g2f7NAGIaYD2{CeqLi#QiX*C&ar74L)dQlA{#b}n+)dVR&+ zL1(zmtZi8;`stkIQSlG;@^h*#$JC$ceLM5>MB9RQzb@UFXZhtovlFAH0@q>#5NhUN zbx9O)10exL5rNh~2@rB@VOj*1UTn}Iz}0a`qvw!@4?l~bz|Oom#cK|%H9V#gDjF)9 zd?sD1=8D-dOZ8P%^1-1y@8+G1I&JoBs^!l2$RjM_|WfmWKcU diff --git a/dev-assets/doodads/doors/small-unlocked.png b/dev-assets/doodads/doors/small-unlocked.png deleted file mode 100644 index 5596796e3d0f52b02a053457149b6ddc03de4486..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 932 zcmV;V16%xwP)EX>4Tx04R}tkv&MmP!xqvQ$>-Ag9W8HWT;LSq>4Cd6^c+H)C#RSn7s54nlvOS zE{=k0!NH%!s)LKOt`4q(Aov5~=H{g6A|>9J6k5c1;qgAsyXWxUeSpxYFwN?k05sh; z)5(OG&8><(uLvNBAw&?DnPtpLQVPEHbx++?cQKyj-}h(rt9gq70g-r?8KzCVK|H-_ z8=Uuv!>lB$#OK80CS8#Dk?V@bZ=8!R3p_JyX43P-VPdh^!Ab|SlBp3-5l2-`r+gvn zvC4UivsS6G);;+PLwS8=nd`Jhki;UEAVGwJ8p^1^MvQiy6borOPx$yFu3sXTLas6x zITlcb2HEw4|H1FsT7}8DmlR3>-7k*wF$(nT0?oSPd>=bb^8^S!16O+6Uu^(0pQP8@ zTJ#7Q*aj}H+nTZmTeSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00DeSL_t(|+U=aNk;5PmMVA}bK@m!nsSTP@NHa9B1&}GB z26e(EmWR0+pU<+-fb@PO0vPcO`@9Zpq@CoQ^GwZ`{%VDus*3l117e;S3jjL~00CGx zrj-{_)u$zrQj&R|tM1{_(x;hH>h1(yT6>}GM5$^nPuRUNH4upakYHgXf`zd#0U!Xe zFc!wbSeP1!L;y&z@aZi)48y}Q7Jgvizl^DYNCb%>5n4F_(#jzb0zfQ`g|RRerUn8K zi6D`Gj&m-Hh=dT#J0)^&-9rI%&Sh)u?fK_s_e!K(cO1vOEQ>iDz;cr!BG%g5sd@F( zmFrH^BqH(=h}FNwlpC)xzk3VE7$wG7ZGLwa9>+0Xub9LbWxHmtTDU9^<+_Kv!q<)E z;`uEW4j~xlTwd4pWAK`as%Gzf-aDofp_Kz5p%*?$FZ>&j-og*6)Ib0N5DQ~rEDS&_ zj6?_ku`m|K!dRFZ2tWX0VJwV=u`m`!A_Rb^v9NUdSMcBNKgIITT0D~g0000EX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZQWT=8*MO4I5t5Adrp;lNGFg)WK9P8q>4rtTK|H-_ z>74h8L#!ZYh|h^f4Z0xlBi9v|-#F(T7IO?@AxHhDdZ}G zkz)a6sE{2$_#gc4*33;#xJkh%(EeiEA45Q37pPZl`}^3o>nDK!8MxA#{&EeN`6RvC z)WSzV_cm~G-PDvl;Bp7(d(ve?b|gPdA(sQ*&*+=dK+i4Ex#srP*vIJukfg5SH^9Lm zFr26Cb&q#eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00KoxL_t(|+U=V^PQx%1#y=x2f*8t@sXYK30C9;(61V3c;L?g+JyyWsFbB$Ds@7Phy$1boFac&;rpa0i5*+^ukYEfv7;bI zW`i=S=|=BE62UbPDkY=Md!PuA011!)DFP%wuX;WHNa10isUF>K^;|wS47|54B@AH2 z;mdT9=#f34!4Hpu|@UI*J5+DH*AVq)#NPq-L5g-8)AOTVYNPq-LfD{1| zAOR8}MS#DpM%IPXG&KMa$8qhlP|rJ8^jMG*iX&+~GJE9=6e(GcVD zxKeg7xL7p2v@TpzXS)EFJ8G5ZIesjs_|V3}D+6=WlmgN;1pxT!+!e&ew|2Ol_rY7Z z@DO)*w?&>?)@nMPwsR7R<5+2}D`{G5xM`vCmDO4!Ns^s;*3K<3NfOoRbW9XQZfDIV zbpgPV`tUDY*wyF9ISvni=f@*Y?swk54`Wv8?R`>Q_xr&8{UUER2TsozNC&xFzh6DC zGq$!KU?{w0_v_Zznn1cn#+dK1&$@6KnswvZ9JsmW2FoB>Xyq}Gs<%M%^l)T1kb95I zD_NV&_as|hXgUD~z>@05d>`0WfOZD9mbWU5X-Xo)n3vZ{?SqoS7=CEOF^~WWkN_zH zBtQZrK#BkfkN^pgB0vHpKmw!!CF+IhUu^#unsI|x#TDyy00000NkvXXu0mjf#x?SE diff --git a/dev-assets/doodads/doors/yellow-key.png b/dev-assets/doodads/doors/yellow-key.png deleted file mode 100644 index c83c7386a9f92070c4432260bcf264a1cdba3cf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 728 zcmV;}0w?{6P)EX>4Tx04R}tkv&MmKpe$i(~2S$5j%)DWT@g`K~%(1t5Adrp;l;i>s5OivPG^vMsG+av!J`xv|s;|y`DNe$4$}`sdC8P33uKAIE%p3_KBywIPsML z;~CO(%TwviY$m2v_C&wA=N@t%EHSt@oKo$rng^>JtGgXL*6jhV=2$LB4HotQ0000< KMNUMnLSTY(j5av{ diff --git a/dev-assets/doodads/doors/yellow-left.png b/dev-assets/doodads/doors/yellow-left.png deleted file mode 100644 index 944a42099c4163bf897f9a47cbd7280493127582..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 886 zcmeAS@N?(olHy`uVBq!ia0vp^0YL1-!3HFMu^RX?Ffg`cIy(n=Iy);A6y>L7=A<$( zXiTh~XzOvBI51`w?24q zJn8Deqmkk4;f?}-7z&F@f=VU|{huxpb)=%;PJj7#x$^f63&WCD-8AD{F)LLiDbR3g zoG9~pjwFG-5(j6T@u~Hj^yq_3{PzzZzv>;@yyyI1%Uwp1lNs$MR!n=@=DNqxW^d-p zIo~^-*C?cSobPn!-KFqR`MT)z`xeh-#VXQHc&I(=bUu=_uXU z`9!N}VlrduiV3pzKjiYhW{YAVDIwD zKoQOYkH}&M25w;xW@MN(M*=9wUgGKN%Kn5$jzOFI>Qt!;ppayVYeb22er|4RUI~M9 zQEFmIYKlU6W=V#EyQgnJcq5-UFuMIbT^vIyZoR#8cWsjaL)*jt`GI@hisd;ikTz(M zW_Zb#vmm;l`jOhP;?U$pNf}Qfs_uP1)}g5B-*wdCjEMjBhT2W}{JZA-{!qbVwW7bw z&ik63)78>i**3>OX0JlcXBu|FtSWYV(Y0@?UmZ_e(kJf-eMbLs*joa zmRHwqlRY4A%lzqf(5&8{Q5EYa{L$o1U`WcUSj}`Vx$=aF_~bwOAKpC-a@M&%r?Ggo zK?8UAgDHBkKQ!4D8W@Bc7??N|7&(AUCJzv^fd#^J<9`vO_?+vD6T@8Xl%9!(Y)6(h z$emB`3B3J}!Gj@>dBZBbS<7C2tCMk;<+EnsbYR$i>(O)O)vp$9lU03rzy3cfBhztB w9(*=1?O1v5p19py9WUcl!QRx#^{oH7)9)qBeqzn=8W{Wxp00i_>zopr04`N-l>h($ diff --git a/dev-assets/doodads/doors/yellow-right.png b/dev-assets/doodads/doors/yellow-right.png deleted file mode 100644 index 4b8971014afef688270fc7530cf127ba278aaedb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 883 zcmeAS@N?(olHy`uVBq!ia0vp^0YL1-!3HFMu^RX?Ffg`cIy(n=Iy);A6y>L7=A<$( zXiTh~XzOvBI51`w?24q zJn8Deqmkk4;f?}-7z&F@f=VU|{huxpb)=%;PJj7#x$^f63&WCD-8AD{F)LLiDbR3g zoG9~pjwFG-5(j6T@u~Hj^yq_3{PzzZzv>;@yyyI1%Uwp1lNs$MR!n=@=DNqxW^d-p zIo~^-*C?cSobPn!-KFqR`MT)z`xeh-#VXQHc&I(=bUu=_uXU z`9!N}VlrduiV3pzKjiYhW{YAVDIwD zKoQOYkH}&M25w;xW@MN(M*=9wUgGKN%Kn5$jzL=>{=?-dKq1Kz*N775{M_8syb=cI zqSVBa)D(sC%#sWRcTeAd@J2pyV03$Xx;TbZ+#DS0g#X>K?-d?1}S<2jA z(CmHZfZ(k|*TXog1zbItdmrz4{l9)9&&wZ$_e2{f$}F!tZaVR`qr3aX)0@_;fBh@j z=9tI)W$%uc@70S|edIX3yYSb~e)o;P;&i?QGca)|G%&E;`WwgagF9}X^y?1K6~=n! z&z8hk@jvkLc6e+lz1fhDH=j3i&r-%ajTzkf9tSM1aby-7cRC-NefXx6kJFsS`(=p? z=I;)e?c4Psn9qTMQH6n#MZkec0LWySzyM@2a6*|E9DR!?Ewg0YA?_dQ8fvb5>;Z2@ z@+z&=pDYth1sv>m-Hp3cdiTq&+~}37j2q54F#KQ4(v&Exb2`i=H7PDVb9>{>gTe~ HDWM4fGlg`; diff --git a/dev-assets/doodads/doors/yellow-unlocked.png b/dev-assets/doodads/doors/yellow-unlocked.png deleted file mode 100644 index da2d0e734d44c71500b16d840619d5c61c1087a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 939 zcmeAS@N?(olHy`uVBq!ia0vp^0YL1-!3HFMu^RX?Ffg`cIy(n=Iy);A6y>L7=A<$( zXiTh~XzOvBI51`w?24q zJn8Deqmkk4;f?}-7z&F@f=VU|{huxpb)=%;PJj7#x$^f63&WCD-8AD{F)LLiDbR3g zoG9~pjwFG-5(j6T@u~Hj^yq_3{PzzZzv>;@yyyI1%Uwp1lNs$MR!n=@=DNqxW^d-p zIo~^-*C?cSobPn!-KFqR`MT)z`xeh-#VXQHc&I(=bUu=_uXU z`9!N}VlrduiV3pzKjiYhW{YAVDIwD zKoQOYkH}&M25w;xW@MN(M*=9wUgGKN%Kn5$jzP=%Rk-w2ppayVYeb22er|4RUI~M9 zQEFmIYKlU6W=V#EyQgnJcq5-UFuI#PT^vIyZoR#Iu(#Pjp!MNLt+zj>OnD-p!_+)vUeWAMKsK z+3$yN?Y3jFjoZ&y^eHI`IaU1bH(RBpq_ow}nWMfaZ+iY)4gY^V$;&f$Jy(@+Dlj}2 z8r>6kYTLCdeZ7WW_rHI?w{z91N{O~RrFTCqx_fu#uI=tsi|wZw>LfG#i8;3>bnC6E z-%=5ob}`J)V*;6PCV28XPUx|P1`~FLN_2dLeeqZ1Uj57vLS3j3^ HP6c}*5j~)%+dJET}q;Y)*TipD;^~{h8zi89niwHFf8Nh!6%pWGcHY7vcrOF9V@%N z*lIq#bGxi|a5X((@917Vc~SS2AN!YFP&(H9xNgtx?>nm5IldZQUUR`>!OLwky^b99 zDGPm53q$74KA~QM6#PpHoqZO-OPSH=X z3A4;Eyml(|+8*`#M2qF?b&Buisx`XmI5u&xhE54+>y=n*r70G)MgIFo{#|vQF_yz?s_b`i(P=vF< zBeIx*K~EWk87r3BmjMOYOFVsD*&nkAvhgT;*NImFg(OQ{BTAg}b8}PkN*J7rQWHy3 zQxwWGOEMJPJ$(bh8~Mb6iXMBqIEGZ*dV4#XugO4w^}@6b;n$92eLa0dpjT?a_8Z3Y z)dZd`*?U;|+NS+^s?nwA4}KO5->`1xx#_9@EteTpFanLh1P204zt^0CPb=R4>9+9h+F>2_h+u?pcP1}nB3?|wcsO86mq zA(-P_XIrp;-A2(5*~YrY3vY`3*tYUo;|&vLJJabi*e+^Lkf|?haQ~diV(zq8=eJ0c mwIjMK4itp)TO42d->#m0MT6@4E+&Q;kP=TOB+y diff --git a/dev-assets/doodads/doors/yellow2.png b/dev-assets/doodads/doors/yellow2.png deleted file mode 100644 index a9855637e023e961f18ebaa4f10f46f3d5612e90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 746 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU~JBGb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)%+dJET}q;Y)*TipD;^~{h8zi89niwHFf8Nh!6%pWGcHY7vcrOF9V@%N z*lIq#bGxi|a5X((@917Vc~SS2AN!YFP&(H9xNgtx?>nm5IldZQUUR`>!OLwky^b99 zDGPm53q$74KA~QM6#PpHoqZO-OPSH=X z3A4;Eyml(|+8*`#M2qF?b&Buisx`XmI5u&xhE54+>y=n*r70G)MgIFo{#|vQF_yz?s_b`i(P=vF< zBeIx*K~EWk87r3BmjMOYOFVsD*&nkAvhkRlSUYJiP)M@GHKN2hKQ}iuuY|$5C^fMp zHASI3vm`^o-P1Q9ypc~FsOYe#i(^Q|t+%%g`3@`aum%JdhM${qSuJ|%+NlSaj{Gie z`e2;mu+XLc-Hh3nJ{QRvHoyM$*C+e$1BCpEP)EX>4Tx04R}tkv&MmKpe$iKSYs=gB3(YGE^rEqN0vkg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2C=otzY1q{ROvg%&X$9QWhhy~o`kex4aNQptJZFtLztVY!7_!BB}Oi6e@tQNBOz zvch?bvs$XK#y$B9Ls@NQnd>wM5yv8yAVPqQ3W_MfLX=jG6cb6>k9qj}9luB}nOsFM zax9<>6_Voz|AXJ%nz@N_Hz^bY+Foq?V;E@P1?pAX{yw(t`Uwzt2ClTGzgz=mK1r`O zwa5|By$xJkH#K<=xZDByo^;8O94SE4pUVO7XY@@Opyw9oTyuMC?BnzSNKsdb8{ps& z7|B!iy2raaT6_EVOryUa#c*=S+P_|M00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<^=&0Hz>zPugw4e02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00C1;L_t(I%Z=2(OT$1E!0~Uc1)&)%#kzIwk5OHuP!5-_ zrMPz}63Axz7r2Ovb}L8``~&h2xCOyMq>j~qLqKpWT^x!?Tuh1aF1feeare1*?;QsQ zv324`ChLR=WbN0DK#>Pk+8rOD((d?qpfG{r$ODBAstq0AZZsM6djJgjJ?uu4+R)L0 zLI(jHx9R{y^MK@72Z}ssG9Jm(%PW5}9?3jVsA`mk090VQh9VDgS7qt0%F?rpJThi{QZtGdHsw;N8zBe}hI5Sl;$h4@q*cz1CwizPeEg8(eu%U4}F z3j!#nvGr_fEg=GY@3(7lv9lm0rUFeMEtUq84bVZ#n(6+tXdaLS8Hedl`vYo=2F?## R!$JT6002ovPDHLkV1iF7eXali diff --git a/dev-assets/doodads/gems/blue-2.png b/dev-assets/doodads/gems/blue-2.png deleted file mode 100644 index 2760b457e60ead1238b460be8b7dd2dbbf434077..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 927 zcmV;Q17Q4#P)EX>4Tx04R}tkv&MmKpe$iKSYs=gB3(YGE^rEqN0vkg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2C=otzY1q{ROvg%&X$9QWhhy~o`kex4aNQptJZFtLztVY!7_!BB}Oi6e@tQNBOz zvch?bvs$XK#y$B9Ls@NQnd>wM5yv8yAVPqQ3W_MfLX=jG6cb6>k9qj}9luB}nOsFM zax9<>6_Voz|AXJ%nz@N_Hz^bY+Foq?V;E@P1?pAX{yw(t`Uwzt2ClTGzgz=mK1r`O zwa5|By$xJkH#K<=xZDByo^;8O94SE4pUVO7XY@@Opyw9oTyuMC?BnzSNKsdb8{ps& z7|B!iy2raaT6_EVOryUa#c*=S+P_|M00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<^=&0H!oQuI&J^}02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00DPNL_t(I%Z-#VYr;SnhTlsAN?pXUAap3Cb?s1!Ah-Dk zoVtn#*`kYUe?a0E2qDlP;BRPyAQZ$x7u#%-(5(a!3T7zRpx zc70O{R79ZXi#uwVmLD(Xl-KoI8Vu7q0xD&o$a7MFVOoCVIkeZ(kj)(_tPFHE+3jDh zUf3Br>N4TPF&1@Z{AOJYy6TffE$K`kYbl>f6 zc4u5rP0f&BGGcCQ~5w5CFK@d5`jI)uLmOxHgFZ)@XMQ z)NtR5K&1ygacz?AdJ(A5vs3pOTLmZsNr&uB`v=4~9qP1GT9^O;002ovPDHLkV1fZa BlVJb= diff --git a/dev-assets/doodads/gems/blue-3.png b/dev-assets/doodads/gems/blue-3.png deleted file mode 100644 index b40177c9c839ab166e279cbad46c6a7885111fc7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 903 zcmV;219<$2P)EX>4Tx04R}tkv&MmKpe$iKSYs=gB3(YGE^rEqN0vkg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2C=otzY1q{ROvg%&X$9QWhhy~o`kex4aNQptJZFtLztVY!7_!BB}Oi6e@tQNBOz zvch?bvs$XK#y$B9Ls@NQnd>wM5yv8yAVPqQ3W_MfLX=jG6cb6>k9qj}9luB}nOsFM zax9<>6_Voz|AXJ%nz@N_Hz^bY+Foq?V;E@P1?pAX{yw(t`Uwzt2ClTGzgz=mK1r`O zwa5|By$xJkH#K<=xZDByo^;8O94SE4pUVO7XY@@Opyw9oTyuMC?BnzSNKsdb8{ps& z7|B!iy2raaT6_EVOryUa#c*=S+P_|M00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<^=&0H#1ElW+4Co02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00Cb~L_t(I%Z=1MOT$1I2k`%$gNRG%C`7wR)wP32p&Ty# z0)7I61iG1i0&&)Cfl>;(m!e-ljz9*HI<^fifvVsVx&#a;ak_9dFL%#)x%~3HTn^BP z&5K^DvybXPq}9{{sR}YoivxgRT3iKE9Y}-bO{mX zNRD(Gps3vOEI_=NBl0~~^iGypz1`seuzhd{09cL&%rGtfv~$ed+KP{7!P>g`$o=FY z%Zvg*GIUAgd$|USrt3gi&;AcVF3suNtlsYM$oDEC0N9YR-`AI`n9#eEZZ{NbA4Vhm zdYmYs!b6)3T_TQvD37$7P(h`?lMIUStDsz&MI~?T?uFk!aU*zp538Wu0IKe@bQ+)v d(hl95_798m_{+Sgn}+}Z002ovPDHLkV1lHqiiQ9H diff --git a/dev-assets/doodads/gems/blue-4.png b/dev-assets/doodads/gems/blue-4.png deleted file mode 100644 index 63f8480eb5ef9446bc405743753925267d7fd656..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 835 zcmV-J1HAl+P)EX>4Tx04R}tkv&MmKpe$iKSYs=gB3(YGE^rEqN0vkg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2C=otzY1q{ROvg%&X$9QWhhy~o`kex4aNQptJZFtLztVY!7_!BB}Oi6e@tQNBOz zvch?bvs$XK#y$B9Ls@NQnd>wM5yv8yAVPqQ3W_MfLX=jG6cb6>k9qj}9luB}nOsFM zax9<>6_Voz|AXJ%nz@N_Hz^bY+Foq?V;E@P1?pAX{yw(t`Uwzt2ClTGzgz=mK1r`O zwa5|By$xJkH#K<=xZDByo^;8O94SE4pUVO7XY@@Opyw9oTyuMC?BnzSNKsdb8{ps& z7|B!iy2raaT6_EVOryUa#c*=S+P_|M00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<^=&0H#bU8qBsBm02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00A3GL_t(I%bnD*io-Ar08q&s^q^bz%xSyc7zqA|{y{hb zw>4S%6K%M~G?;u#O`&5xAanK`I@OaqIk-J17S$;17hx#^AjIPP$575O3WQ$?31lHC zN;3rj5T%(4fh+_qSL-ns0$B*!Zjv#-T&*F_i%F1CAk+2WRyYN+5L8zskJ3yHZNu%k z?IwZU;rI_k3S_Gq+J^5AN96)_RdOu_ju-{9F$bcZBR5RfgAZ~)9_Pi_#Srw=O}9edr4R%F@bQXiDR2NVZpZ9n z&q0&Fla>POs^n9h^g*OOw!huapQm55zunKFt%1~iX1X5Us_5NK`vCqw#K-`)`<(y) N002ovPDHLkV1lxoW0n8_ diff --git a/dev-assets/doodads/gems/gemstone.js b/dev-assets/doodads/gems/gemstone.js deleted file mode 100644 index efb9361..0000000 --- a/dev-assets/doodads/gems/gemstone.js +++ /dev/null @@ -1,24 +0,0 @@ -// Gem stone collectibles/keys. - -const color = Self.GetTag("color"), - shimmerFreq = 1000; - -function main() { - Self.SetMobile(true); - Self.SetGravity(true); - - Self.AddAnimation("shimmer", 100, [0, 1, 2, 3, 0]); - Events.OnCollide((e) => { - if (e.Settled) { - if (e.Actor.HasInventory()) { - Sound.Play("item-get.wav") - e.Actor.AddItem(Self.Filename, 1); - Self.Destroy(); - } - } - }); - - setInterval(() => { - Self.PlayAnimation("shimmer", null); - }, shimmerFreq); -} \ No newline at end of file diff --git a/dev-assets/doodads/gems/green-1.png b/dev-assets/doodads/gems/green-1.png deleted file mode 100644 index ff76d09267ed6f95dd83d3db8518f317eea65e9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 785 zcmV+s1Md8ZP)EX>4Tx04R}tkv&MmKpe$iKSYs=gB3(YGE^rEqN0vkg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2C=otzY1q{ROvg%&X$9QWhhy~o`kex4aNQptJZFtLztVY!7_!BB}Oi6e@tQNBOz zvch?bvs$XK#y$B9Ls@NQnd>wM5yv8yAVPqQ3W_MfLX=jG6cb6>k9qj}9luB}nOsFM zax9<>6_Voz|AXJ%nz@N_Hz^bY+Foq?V;E@P1?pAX{yw(t`Uwzt2ClTGzgz=mK1r`O zwa5|By$xJkH#K<=xZDByo^;8O94SE4pUVO7XY@@Opyw9oTyuMC?BnzSNKsdb8{ps& z7|B!iy2raaT6_EVOryUa#c*=S+P_|M00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<^=&0Hvxt9H=zIk02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{008MpL_t(I%dM0x4#GeXMqisAf*-%CCqUsUk-bC}fm1+G zy#Ru6090KS23xh&1#VFU86ewb%aVR(vzgtO`DQW`kkT@cA^^satuyWWxjd8rRM$#z zgAksee3PqRA@!xEzSJ*}BofJkWS;1J`8!aQ?cRDm$pS1~a z!NYGLIX~;uCo4=cTAcP?9S*+*d_hiFpBmi^2eUOM?0evC^WV>d*fi@U_ed^NHSJim z71;&uOn^Be{woM5%0jv3(yXgwR9!0-Pht%akkXp_%+(N^b=haZkel`atzdKSNn9M= P00000NkvXXu0mjf$x2Ac diff --git a/dev-assets/doodads/gems/green-2.png b/dev-assets/doodads/gems/green-2.png deleted file mode 100644 index 996d565ad208a4be8ca1c89fe38adb3fa405f42c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 807 zcmV+?1K9kDP)EX>4Tx04R}tkv&MmKpe$iKSYs=gB3(YGE^rEqN0vkg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2C=otzY1q{ROvg%&X$9QWhhy~o`kex4aNQptJZFtLztVY!7_!BB}Oi6e@tQNBOz zvch?bvs$XK#y$B9Ls@NQnd>wM5yv8yAVPqQ3W_MfLX=jG6cb6>k9qj}9luB}nOsFM zax9<>6_Voz|AXJ%nz@N_Hz^bY+Foq?V;E@P1?pAX{yw(t`Uwzt2ClTGzgz=mK1r`O zwa5|By$xJkH#K<=xZDByo^;8O94SE4pUVO7XY@@Opyw9oTyuMC?BnzSNKsdb8{ps& z7|B!iy2raaT6_EVOryUa#c*=S+P_|M00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<^=&0HwSE%l9T`d02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{0093zF~|;zJ22b= zWG{fKW>D*@Fj!QoOSuIYQkKx9?M%PQB%8PYr%eK+cwr<(0Dvi=5~Y2G@gjDvWrvJV ze_$$6nhPcy=mM0tvKgCwoHIpc(oD!roO5S1wfP!|T#M(`me!Y(_Qu;~WD;=B2z_yU zAom9lI>aTA6m_t%YM&n lfIMUw%jo{N6KVq+NpC0MeLTo?H%tHk002ovPDHLkV1iyeRK@@R diff --git a/dev-assets/doodads/gems/green-3.png b/dev-assets/doodads/gems/green-3.png deleted file mode 100644 index 8449974524299c5dd7e63556fb7bbdccab51a963..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 864 zcmV-m1E2hfP)EX>4Tx04R}tkv&MmKpe$iKSYs=gB3(YGE^rEqN0vkg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2C=otzY1q{ROvg%&X$9QWhhy~o`kex4aNQptJZFtLztVY!7_!BB}Oi6e@tQNBOz zvch?bvs$XK#y$B9Ls@NQnd>wM5yv8yAVPqQ3W_MfLX=jG6cb6>k9qj}9luB}nOsFM zax9<>6_Voz|AXJ%nz@N_Hz^bY+Foq?V;E@P1?pAX{yw(t`Uwzt2ClTGzgz=mK1r`O zwa5|By$xJkH#K<=xZDByo^;8O94SE4pUVO7XY@@Opyw9oTyuMC?BnzSNKsdb8{ps& z7|B!iy2raaT6_EVOryUa#c*=S+P_|M00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<^=&0Hw$GT-oF3<02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00B5jL_t(I%dM2LYQj(yhCf3F7k6vum^0l?dFrYvt;>7H5ko3{l9Zr}tNTjc>pK=1W^mX5!~olbQIr zbC7=@`wzNV=F6n_*yH8v&ARKl0R%fc?+Bp!u1;t3u?d12VWFr4IjK>|i>3jDB5Ir1 z&hAd9t<$(^Lj8W9N~-^N=7U2#}(0000EX>4Tx04R}tkv&MmKpe$iKSYs=gB3(YGE^rEqN0vkg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2C=otzY1q{ROvg%&X$9QWhhy~o`kex4aNQptJZFtLztVY!7_!BB}Oi6e@tQNBOz zvch?bvs$XK#y$B9Ls@NQnd>wM5yv8yAVPqQ3W_MfLX=jG6cb6>k9qj}9luB}nOsFM zax9<>6_Voz|AXJ%nz@N_Hz^bY+Foq?V;E@P1?pAX{yw(t`Uwzt2ClTGzgz=mK1r`O zwa5|By$xJkH#K<=xZDByo^;8O94SE4pUVO7XY@@Opyw9oTyuMC?BnzSNKsdb8{ps& z7|B!iy2raaT6_EVOryUa#c*=S+P_|M00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<^=&0HxTbd7gGQL02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00A3GL_t(I%dM2ZZiFxl#y=24U!i2ilQ(*gQQe4iOW)=e z)GaS?3(VC`*}7M3o^t!~3b)bW8kDvPe_AXd5gY&T=Qv4FVZcU~0RSEW&e;NhA~l&% z?22DLU28)B1>>BpT!kDE0N$QoXn#K0P%;2qJ}v+N^KOW9w$ckFs4#GOhe#*nKE5># z9u9|DX?||zoQf2rlQH=8dIXm|DciJ$TwFRq8tRiGH9l*4m-;=rH4Xf=|L(72&{5|8 ze6prB#3hewKel8v(w~mG(TGV5!a_2a!qd6Gt+8ljOZ()8cZ6+G)wkVT)96*OzgC)s zj)-Z^|6sb-#3kF+VQ}}E51Nwd@1VPe&^y>h_6Y=9W*s_F!8`x} N002ovPDHLkV1gQ?W*`6n diff --git a/dev-assets/doodads/gems/red-1.png b/dev-assets/doodads/gems/red-1.png deleted file mode 100644 index 9a14ea0a730df2b4bada4beb8807a2377cfd0f49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 711 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 diff --git a/dev-assets/doodads/gems/totem-blue-1.png b/dev-assets/doodads/gems/totem-blue-1.png deleted file mode 100644 index 0f561a3593390c7147d7a9e9a4a074665270d6bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 958 zcmV;v13~EX>4Tx04R}tkv&MmKpe$iKSYs=gB3(YGE^rEqN0vkg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2C=otzY1q{ROvg%&X$9QWhhy~o`kex4aNQptJZFtLztVY!7_!BB}Oi6e@tQNBOz zvch?bvs$XK#y$B9Ls@NQnd>wM5yv8yAVPqQ3W_MfLX=jG6cb6>k9qj}9luB}nOsFM zax9<>6_Voz|AXJ%nz@N_Hz^bY+Foq?V;E@P1?pAX{yw(t`Uwzt2ClTGzgz=mK1r`O zwa5|By$xJkH#K<=xZDByo^;8O94SE4pUVO7XY@@Opyw9oTyuMC?BnzSNKsdb8{ps& z7|B!iy2raaT6_EVOryUa#c*=S+P_|M00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<^=&1BsIX{lmh?&02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00EXsL_t(Y$K}_*O9EjS!11qV4TAm=is7J<+7LCgWZ6=f z|3LqM;GhUC4vwNhL;V?Pv^F~!;;$hDJ6kfc9|+o(T!R^!C*8f0AwApOaeVH%_j#Z9 zeGR*74uu(q#2CTHHT8{wmgddf~O*`I}7V3ypWovqj?_Glo@%Ff56H z%PtoHK95@nmPElph`^E_(7PXC(Pn4UzXO1G+lSF=!ygRlf+am5!1|I60Hsg^V8!0Q z)&ol-;A#4pa5O?PnG%8}tz-Bd1XN)yV=Re)A(NAk$;owHW+QN*8&>VTgLya{N}=|Z zVaVj1~pBYNw6rW zxjCr8gQC$30_ue{vABvQd_ej0o(QPB;SXmF2!TRN+W-cHK;cC^Vd;)d{F!W5M8Wyn gm`%0W{x`>p4+s7lU4F}h%>V!Z07*qoM6N<$f}&ZUeEEX>4Tx04R}tkv&MmKpe$iKSYs=gB3(YGE^rEqN0vkg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2C=otzY1q{ROvg%&X$9QWhhy~o`kex4aNQptJZFtLztVY!7_!BB}Oi6e@tQNBOz zvch?bvs$XK#y$B9Ls@NQnd>wM5yv8yAVPqQ3W_MfLX=jG6cb6>k9qj}9luB}nOsFM zax9<>6_Voz|AXJ%nz@N_Hz^bY+Foq?V;E@P1?pAX{yw(t`Uwzt2ClTGzgz=mK1r`O zwa5|By$xJkH#K<=xZDByo^;8O94SE4pUVO7XY@@Opyw9oTyuMC?BnzSNKsdb8{ps& z7|B!iy2raaT6_EVOryUa#c*=S+P_|M00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<^=&1BsjiM=)M2|02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00G5GL_t(Y$K}^gOTu6r2k@_}i_l&~B6#p%(V-Vmur77j z8|Vcj4B8Mnw8M^Khd?@ZFF~zNL1zPF{ZT|j-MnOEe-K=FN$gO2m^pIK6DiW~_-qfK z{hmL+=b3M9In>9PgTn;ES2#K7Keyk|Y_)Lz@c5@#^XUbz?apK}oi0@E%#9aSJ9F?Y zg_vQE1>BOi0RXFu3rsM_0$x@P(#8UFEE#?eK@_QAjuy1D?CTW(z|4Gr8s=EQqsRs% zMaIR=EqN~z3?LR$Ji#0-czv2B&m~31c{+_qFhJV8z?_#w zD-cAH%okSH5sxPbY=Z!hFBGBf!~g*0x(NVC9j69BPs6M6mg{`&C-$&eJR=$AvKa!} z@e??5A!)odG+%-!BA3mOA$5Y~x;YZ`v}K&|-Pe!`qR0$-E)H%P+l!`LH>p6XGHB0n z&ot084FdKW1{FwM@HO5Vs6xGlfplJ{0-26BC(HseAL1Hs4Q>3fTvu4Z>ARTy>azWB bek(ozRr(FvKt?H-00000NkvXXu0mjf@gA|M diff --git a/dev-assets/doodads/gems/totem-blue-3.png b/dev-assets/doodads/gems/totem-blue-3.png deleted file mode 100644 index 8373a3c0adbd3b0e17fb3ae06920ce8212068c7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 987 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 diff --git a/dev-assets/doodads/gems/totem-green-1.png b/dev-assets/doodads/gems/totem-green-1.png deleted file mode 100644 index 4a2e33fb48665af5dab5a3256cebf6c4c09ac640..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 887 zcmV--1Bm>IP)EX>4Tx04R}tkv&MmKpe$iKSYs=gB3(YGE^rEqN0vkg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2C=otzY1q{ROvg%&X$9QWhhy~o`kex4aNQptJZFtLztVY!7_!BB}Oi6e@tQNBOz zvch?bvs$XK#y$B9Ls@NQnd>wM5yv8yAVPqQ3W_MfLX=jG6cb6>k9qj}9luB}nOsFM zax9<>6_Voz|AXJ%nz@N_Hz^bY+Foq?V;E@P1?pAX{yw(t`Uwzt2ClTGzgz=mK1r`O zwa5|By$xJkH#K<=xZDByo^;8O94SE4pUVO7XY@@Opyw9oTyuMC?BnzSNKsdb8{ps& z7|B!iy2raaT6_EVOryUa#c*=S+P_|M00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<^=&1Boh+s5&i%G02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00B=)L_t(Y$7A#`SO3pIXTZcT0D$q*#%cfGeE7=n?A0rV zr_W!~%%acVe=&Ui@|oe?htC7!(*d!R1)E^`(?wLXpi?@II7=BA7#J8N85pwC(@D1E z?3xn{3=9kmC*NLVV0cbq@Mfi_GfbN~lW5Bxp1;rV@cezah2`0~qy;Ywc$>K~Olz1) zvTw^V zPCvfz0I!8q%cn3OhOb&g-@<_!7E--L`gs4{z!ih|5)nz3Qj&0pwiH&n4C-3u?cG;I z$1l#p;mzHb3?j`1p1 zy?Vlz4bX$rPs)yA)3ZZl`1CmgLubuo`ZZUuH8F;K!)#z0+aso10RZMngou|jQ!fAj N002ovPDHLkV1g{7f{6eC diff --git a/dev-assets/doodads/gems/totem-green-2.png b/dev-assets/doodads/gems/totem-green-2.png deleted file mode 100644 index ae892e6d49c21d7aa6e478192053a1a4a65f413e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 938 zcmV;b16BNqP)EX>4Tx04R}tkv&MmKpe$iKSYs=gB3(YGE^rEqN0vkg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2C=otzY1q{ROvg%&X$9QWhhy~o`kex4aNQptJZFtLztVY!7_!BB}Oi6e@tQNBOz zvch?bvs$XK#y$B9Ls@NQnd>wM5yv8yAVPqQ3W_MfLX=jG6cb6>k9qj}9luB}nOsFM zax9<>6_Voz|AXJ%nz@N_Hz^bY+Foq?V;E@P1?pAX{yw(t`Uwzt2ClTGzgz=mK1r`O zwa5|By$xJkH#K<=xZDByo^;8O94SE4pUVO7XY@@Opyw9oTyuMC?BnzSNKsdb8{ps& z7|B!iy2raaT6_EVOryUa#c*=S+P_|M00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<^=&1Bo<eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00DwYL_t(Y$7A#`SO3pIXTZcT0D$q*#%cfGeE7=n?A0rV zr_W!~%%acVe=&Ui@|oe?htC7!(*d!R1)E^`(?wLXpi?@II7=BA7#J8N85q3H-0&JG zZ>WeQq zBjF&84GADUPSJsXfCmEu0|Ud#usDYBRf`y84HU4d<7Q!H=&YH{z`(%3AY~xSz_5nI z)Qc+^aal-l>O}`D!yqZJ^6gjg~8iy45l#qoV@4q7$pMx)W zNda%~zG8TL_Z5bZ$;vXYc%9NPgJg%`vly?XTTku6T6p6sabR(|_~-@(KPfxXErnH2 zxGX|WEa<-Sld@yj^z0BBK7G!BS|6^VadQP*6Jy9X%m${hJz}~Q0Fujw=3l2{ApigX M07*qoM6N<$f^`y@zW@LL diff --git a/dev-assets/doodads/gems/totem-green-3.png b/dev-assets/doodads/gems/totem-green-3.png deleted file mode 100644 index b850991fd6a063f135a5cf12d7b535480f99e376..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 978 zcmV;@11EX>4Tx04R}tkv&MmKpe$iKSYs=gB3(YGE^rEqN0vkg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2C=otzY1q{ROvg%&X$9QWhhy~o`kex4aNQptJZFtLztVY!7_!BB}Oi6e@tQNBOz zvch?bvs$XK#y$B9Ls@NQnd>wM5yv8yAVPqQ3W_MfLX=jG6cb6>k9qj}9luB}nOsFM zax9<>6_Voz|AXJ%nz@N_Hz^bY+Foq?V;E@P1?pAX{yw(t`Uwzt2ClTGzgz=mK1r`O zwa5|By$xJkH#K<=xZDByo^;8O94SE4pUVO7XY@@Opyw9oTyuMC?BnzSNKsdb8{ps& z7|B!iy2raaT6_EVOryUa#c*=S+P_|M00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<^=&1BpPclsagO402y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00F8=L_t(Y$K{u?O9F8e$G?h$)DWa4T}X*UZ5aj*fwR-) zWN?tsAJFX5(0a2e-P&+q)L_u!SSRb%cM)%G(V0jcfqL|unfj4s z0CqlY4hjI617f~a0DwOnF#PetTIh!_&vAf25Gf!5uUi!bJPZN=&v%aifb*LYXey2~ z;ergRfU6atDt-5O9$tn4ipD9WqjB;xmCYXx099Z!nNWP{{h+O^FM-|5Vk$H(Ic^En zt9OoD$G;0K7+JKgWO_W0LQ1Q^LMpBC4Fai1aP;&7fR|x3DV?Auv2%5*?A6vN*Q{?2 za&+BBM_IK?NwKx^(|9|Q9?&SoZjz!m5|VAbR~Ag`p{XoA8+NuHvr)=G-|P&!;g0>0 zs!M`IFqWj(3ZSVv1%QM7L;L5cdOXq5_;)WgSr%+Ai%evf9Gd4i(3BQvRC{X0Zf_*P z=CUJ1DnOct>Pc~8V|w+j7=Qj^=FDaL-#jb608V#>>`x#2^8f$<07*qoM6N<$f*w<= AJOBUy diff --git a/dev-assets/doodads/gems/totem-green-4.png b/dev-assets/doodads/gems/totem-green-4.png deleted file mode 100644 index 4aa4c7d6be64d3c061241962560f33c1bf019c5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 956 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 diff --git a/dev-assets/doodads/gems/totem-red-2.png b/dev-assets/doodads/gems/totem-red-2.png deleted file mode 100644 index d08ce2186913a3b4e0550029cc4036a7ff0ea0e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 805 zcmeAS@N?(olHy`uVBq!ia0vp^vLMXC1|-8Kr}Hx~Ft%hmI|q0=J1Z0v<)>xlq%tsQ zOst(~>v7mY=4iaV%fzl`Q5RRE5OwZFi~6Ekl|neSI<4kYn_lNQxlQHh(ZB*-iys>! zN(&0FT|F2oz+&$pGk1K+5S6sdPQ8n>qHlfmj~`XyPb2R=|0fgcbuFdAUtwPAu0+9n0sq`6tLL?k z475GCK3aZU;V7aYCqTXw&P-pm+R zgCd;;Jff2xv;S|te|Of-&O&od5$0QQIlq%7GVZg!3cdZ$Zrj^moB|bW>$WW0AH$qx z=egc&>j}XNdwFAG%uOr#cidt8HLv941Q|_-%kxh&zEA(+E4kpg*o&Cr>g+d|H(?D8gCb z5n0T@z%2~Ij105pNB{-dOFVsD*`Kj8il_?Jd=StC3Q3l@MwB?`=jNv7l`uFLr6!i7 zrYMwWmSiZnd-?{1H}Z)C75(*eaSZV|p8Uli{Qr4}^aDo>7#coaI+pqWe$9_lAKqNm zZd-mn{?eI6=kM1W*8KZ4^Wok0^URMg2YS2f%0_r!{VjI!deGN>t~~FTxSrTHqf>@k z_D!w?2+X-N_rxZUK)l_a;|gEC@E%?*?hg@JZ(nij!Go0J1y3L8Zqi9py6(gV1iGe` zV9ud%f4NDyhTNKBMg|53GB?UOR^QSV&o_KgTxh5<^RCks|K9mYxuk`}?Cm9&=|m=$`mGSgeN2{q#Ms%Vm1s e3SM5zz;K{r*5O{Er$2xJ!QkoY=d#Wzp$P!S996{t diff --git a/dev-assets/doodads/gems/totem-red-3.png b/dev-assets/doodads/gems/totem-red-3.png deleted file mode 100644 index bd5614243b50ec1638276965800956d96c7d57c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 790 zcmV+x1L^#UP)EX>4Tx04R}tkv&MmKpe$iKSYs=gB3(YGE^rEqN0vkg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2C=otzY1q{ROvg%&X$9QWhhy~o`kex4aNQptJZFtLztVY!7_!BB}Oi6e@tQNBOz zvch?bvs$XK#y$B9Ls@NQnd>wM5yv8yAVPqQ3W_MfLX=jG6cb6>k9qj}9luB}nOsFM zax9<>6_Voz|AXJ%nz@N_Hz^bY+Foq?V;E@P1?pAX{yw(t`Uwzt2ClTGzgz=mK1r`O zwa5|By$xJkH#K<=xZDByo^;8O94SE4pUVO7XY@@Opyw9oTyuMC?BnzSNKsdb8{ps& z7|B!iy2raaT6_EVOryUa#c*=S+P_|M00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<^=&1B^Bb7g^BeSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{008buL_t(Y$7A#`SO3pIXTZcT0D$q*#%cfGeE7=n?A0rV zr_W!~%%acVe=&Ui@|oe?htC7!(@{%DEge`()%zCF*HZPqMGWtxMaZ_8i5v?x6{Hv# z7#J9I^wr3+n28(<#pRV4gr2@(5R;H0%VH*SEIe@V2!n%@9mBqz`^d7GiChaA7#PU5 zn2B5qVSpTqSxB*vfq{YHz`jFR)$ZH5kHN*ygMpcgi-DnU5yQ=*IMOXePNnPa++Yav z^C0MhO)sA^STZp)=vx}#wHRxCN=e2?2QZ6~>r)nd3P;P{QA diff --git a/dev-assets/doodads/gems/totem-red-4.png b/dev-assets/doodads/gems/totem-red-4.png deleted file mode 100644 index 98ddcc98c3e9cb6403424bfb6aac4cb9f3c7175c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 817 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 AkN^Mx diff --git a/dev-assets/doodads/gems/totem-yellow-3.png b/dev-assets/doodads/gems/totem-yellow-3.png deleted file mode 100644 index da774b79766c2fdb601e2d107781107a2a9feb83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1054 zcmV+(1mXLMP)EX>4Tx04R}tkv&MmKpe$iKSYs=gB3(YGE^rEqN0vkg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2C=otzY1q{ROvg%&X$9QWhhy~o`kex4aNQptJZFtLztVY!7_!BB}Oi6e@tQNBOz zvch?bvs$XK#y$B9Ls@NQnd>wM5yv8yAVPqQ3W_MfLX=jG6cb6>k9qj}9luB}nOsFM zax9<>6_Voz|AXJ%nz@N_Hz^bY+Foq?V;E@P1?pAX{yw(t`Uwzt2ClTGzgz=mK1r`O zwa5|By$xJkH#K<=xZDByo^;8O94SE4pUVO7XY@@Opyw9oTyuMC?BnzSNKsdb8{ps& z7|B!iy2raaT6_EVOryUa#c*=S+P_|M00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<^=&1Br7`ZsbByA02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00H(%L_t(Y$K{vLOTu6n$G`r%h~Bz%2on#&unr1#j>5t} zVj~)K^c>8P9C+>$1Vy<2pi2i$Jb4M~P!cKxic}O8f=UpH9mc!fP3Pva40>Sf-QFJ` zzR&wU&z{-Vmx6u#ve_{Ovt6C+_n%u`+&?|x?&0yrK<&48v^#CQw%XHCIu)pMoWZvp zNw+WHVJ8bEuuV3oyvr4gPEI z;?AN1b~xPDLPoof-kCi1_8wGY7QzKAgbQD8rNBmNon}-f60_hrM%70Y&->I%)Em9; zCkNtIS|NdHfjr0H;P}FN$mEJu-AP)Qtnfo=pPpSi+s&ab8WC+6U)kq*wS#R`E zt94N1ljwEP)EX>4Tx04R}tkv&MmKpe$iKSYs=gB3(YGE^rEqN0vkg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2C=otzY1q{ROvg%&X$9QWhhy~o`kex4aNQptJZFtLztVY!7_!BB}Oi6e@tQNBOz zvch?bvs$XK#y$B9Ls@NQnd>wM5yv8yAVPqQ3W_MfLX=jG6cb6>k9qj}9luB}nOsFM zax9<>6_Voz|AXJ%nz@N_Hz^bY+Foq?V;E@P1?pAX{yw(t`Uwzt2ClTGzgz=mK1r`O zwa5|By$xJkH#K<=xZDByo^;8O94SE4pUVO7XY@@Opyw9oTyuMC?BnzSNKsdb8{ps& z7|B!iy2raaT6_EVOryUa#c*=S+P_|M00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<^=&1BrvdxV2l6&02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00I6A9PMm`11AmkAb?UXLNgAzI)yA zC>;ybh!T9*a|3<3RQdNp6>PpZ1%MD~-q$3HB>{kx9`&Xh8g7IE&KIW;A{`jx_tl&3 zP_PjN_%JgGKxN|qfY+|Xv8{e|c(4%#s9=vD-Pa1$nPXcVwa)=4&E=^zg2A^cy$Mt> zzi(xETB~<#3nTFWfLbGB%N+Jxo|VNwpb+VS`CVC_rm}HBHj~h5gQ`8SPo?x?_29?$ z1pua*j5i#l^nOu!n>lMUynNG&-!kn^{5ia}-HJB`7fV7ne;CVVuHS!Yp}^8YAv#p$ z)Uhpgb~~YfmGyl}bNT*RV)WTND4%|HBi}N)RGE777%4rD+UGd7#jCd;G)O&uQz}g} zNj8&UwYnE?I4Jw{`7WE)Syroix=Q^pfagyOqu(-DYF#Fcdzj``|7})h0W^FNY?#WS zN^_|)wT27i`zJ{a+S+dE3iTJwFkq<9dksdz)wH<@3wxhNTFge-9Q=z}q?(VilKgXv g*?5-i|K_*iC*yX@Q+WDSpa1{>07*qoM6N<$f{G;6eE -1) { - totems[link.ID()] = false; - } else { - linkedReceiver = true; - } - } - - // Shimmer animation is just like the gemstones: first 4 frames - // are the filled socket sprites. - Self.AddAnimation("shimmer", 100, [0, 1, 2, 3, 0]); - - Events.OnCollide((e) => { - if (activated) return; - - if (e.Actor.IsMobile() && e.Settled) { - // Do they have our gemstone? - let hasKey = e.Actor.HasItem(keyname) >= 0; - if (!hasKey) { - return; - } - - // Take the gemstone. - e.Actor.RemoveItem(keyname, 1); - Self.ShowLayer(0); - - // Emit to our linked totem neighbors. - activated = true; - Message.Publish("gem-totem:activated", Self.ID()); - tryPower(); - } - }); - - Message.Subscribe("gem-totem:activated", (totemId) => { - totems[totemId] = true; - tryPower(); - }) - - setInterval(() => { - if (activated) { - Self.PlayAnimation("shimmer", null); - } - }, shimmerFreq); -} - -// Try to send a power signal for an activated totem. -function tryPower() { - // Only emit power if we are linked to something other than a totem. - if (!linkedReceiver) { - return; - } - - // Can't if any of our linked totems aren't activated. - try { - for (let totemId of Object.keys(totems)) { - if (totems[totemId] === false) { - return; - } - } - } catch(e) { - console.error("Caught: %s", e); - } - - // Can't if we aren't powered. - if (activated === false) { - return; - } - - // Emit power! - Message.Publish("power", true); -} \ No newline at end of file diff --git a/dev-assets/doodads/gems/yellow-1.png b/dev-assets/doodads/gems/yellow-1.png deleted file mode 100644 index 016d42ae867b62360eb04e6dbc8fe341f3015021..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 971 zcmV;+12p`JP)EX>4Tx04R}tkv&MmKpe$iKSYs=gB3(YGE^rEqN0vkg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2C=otzY1q{ROvg%&X$9QWhhy~o`kex4aNQptJZFtLztVY!7_!BB}Oi6e@tQNBOz zvch?bvs$XK#y$B9Ls@NQnd>wM5yv8yAVPqQ3W_MfLX=jG6cb6>k9qj}9luB}nOsFM zax9<>6_Voz|AXJ%nz@N_Hz^bY+Foq?V;E@P1?pAX{yw(t`Uwzt2ClTGzgz=mK1r`O zwa5|By$xJkH#K<=xZDByo^;8O94SE4pUVO7XY@@Opyw9oTyuMC?BnzSNKsdb8{ps& z7|B!iy2raaT6_EVOryUa#c*=S+P_|M00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<^=&0Hx-{ReSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00E;(L_t(I%dM25Z^A$n#=mxl7#U{E($o!tY0U)590DAM zKLY`V1cjW!42kKVu@L4~(JWI~Y8pV0+?d#wlpqFKCz^M=-rCOWQ@wY+-+k}y-P4ev zP6tueoZ~=Ci?b}qcw}(^n9eo`)}h(&#^YFilm=xgh#&y4TpeIr27+~%*zo5cKazo3 z9tZ#?PGJ6qB7rVJEms;*=Z zD?S1Mj{BzAh(y4JzXbreUTEt0L&tqHciy%P@vW01awXd*km`!gO1>O%0rwBdVA|p= z$!m20=yxriEXsV*IRQYsRpsqgoQPRe+mu1%3II+hIG^M8;_~zEta#Wlc8d3pF95(z?R@w0`c|r4mpEgmczWikpoBBE tpULS3>(H!T#bettgj=EX>4Tx04R}tkv&MmKpe$iKSYs=gB3(YGE^rEqN0vkg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2C=otzY1q{ROvg%&X$9QWhhy~o`kex4aNQptJZFtLztVY!7_!BB}Oi6e@tQNBOz zvch?bvs$XK#y$B9Ls@NQnd>wM5yv8yAVPqQ3W_MfLX=jG6cb6>k9qj}9luB}nOsFM zax9<>6_Voz|AXJ%nz@N_Hz^bY+Foq?V;E@P1?pAX{yw(t`Uwzt2ClTGzgz=mK1r`O zwa5|By$xJkH#K<=xZDByo^;8O94SE4pUVO7XY@@Opyw9oTyuMC?BnzSNKsdb8{ps& z7|B!iy2raaT6_EVOryUa#c*=S+P_|M00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<^=&0HyRI+{!IV?02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00D7HL_t(I%dM2XZo)7S$Ip>jkeDlvpe*S-WPpu@$M8TF zq)d4NCZsZ?gCC=++6@Mtp;)S{grSnf9El}J>Cie{9J}q%n<6{+^Zz~xc#Lyse0M?s zah+2iB;lbpXHTz+t(K9#{UsY0l-eKznT!WMVK9wH-{7jjK=KAJk@ci-t z`$NSHkoZ7pCfRnY;d+^A8*HFOSpxt-E))|2NPu6$AX|ljY}S#+YOxW{p_#@beIMPy zWISjU0RUVtGfjs(X1=jwnn{L>lnceEtqMER;f}q(#XW_-;so|Rc$+ zYYla(*u$gjIk{9BJIZt0gB@k7Wu&`J`FC5)!`3&jtA#7&%gs@qVSlJP1?a(C_R}QT z_ifYS#JdVnly#dYtje^L5J0HwH5_ijLyaMLHf`0N*~DXF12DuixQU`Oo33HU$yTR| vE#|j#7pS*_zAjW_hv(ZQ_C6#3xoJNER8iSj9CAby00000NkvXXu0mjf6@ia; diff --git a/dev-assets/doodads/gems/yellow-3.png b/dev-assets/doodads/gems/yellow-3.png deleted file mode 100644 index fb9ac0f6907c7e9c4482832409979a2b5a2a170c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 898 zcmV-|1AY97P)EX>4Tx04R}tkv&MmKpe$iKSYs=gB3(YGE^rEqN0vkg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2C=otzY1q{ROvg%&X$9QWhhy~o`kex4aNQptJZFtLztVY!7_!BB}Oi6e@tQNBOz zvch?bvs$XK#y$B9Ls@NQnd>wM5yv8yAVPqQ3W_MfLX=jG6cb6>k9qj}9luB}nOsFM zax9<>6_Voz|AXJ%nz@N_Hz^bY+Foq?V;E@P1?pAX{yw(t`Uwzt2ClTGzgz=mK1r`O zwa5|By$xJkH#K<=xZDByo^;8O94SE4pUVO7XY@@Opyw9oTyuMC?BnzSNKsdb8{ps& z7|B!iy2raaT6_EVOryUa#c*=S+P_|M00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<^=&0Hy#N6I#d7v02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00CM_L_t(I%dM2ZZo)7S#y>}4;SFvCMU_yWp-VRw9wSSJ z44Lu-ObiSxc?=dd7_6urFeA2$9VS6J1S zQmLveDaa%T^CSSk>3j?JiS(U=yrS`F&;u2D=6no;(pYa=iWR7YNJac^0symV=E9=9 zudmN{Cn3@`em8J)F`qo7{}!KB(~>NakO5$~zmhi3%zsYW YZ@4q%HUkq)!TEX>4Tx04R}tkv&MmKpe$iKSYs=gB3(YGE^rEqN0vkg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2C=otzY1q{ROvg%&X$9QWhhy~o`kex4aNQptJZFtLztVY!7_!BB}Oi6e@tQNBOz zvch?bvs$XK#y$B9Ls@NQnd>wM5yv8yAVPqQ3W_MfLX=jG6cb6>k9qj}9luB}nOsFM zax9<>6_Voz|AXJ%nz@N_Hz^bY+Foq?V;E@P1?pAX{yw(t`Uwzt2ClTGzgz=mK1r`O zwa5|By$xJkH#K<=xZDByo^;8O94SE4pUVO7XY@@Opyw9oTyuMC?BnzSNKsdb8{ps& z7|B!iy2raaT6_EVOryUa#c*=S+P_|M00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<^=&0HzB^87ijeSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00BoyL_t(I%dM25l7lc1hW{`*S>1`e8%+8R6_qu8jF`%* zJ^>0@!(-G`B6tTdOnWYaj;!DWY*|vma5uM(-SFk#&7TMa!WgunT9!dfY1(iN%w_VwdUWY`Xui5U)wHzozps&vl0Kn;7DFC=+wMrA+ zLtdL%4wNAfL3q2AOA~GHk0*wD2b7-t7lR9bxZVa}1OSJ9Y{`^Mf^6ge zJDORVXqy-FD!Kn?B$SggE)S{+h44*F_Bfi@h5)3BuOFF~A9tE)%iYc)+`N;@mfX!L z2v;?NaiBjp{si&XIq2;Gx`Jzm7h!y7{dWELO#J6d`vZ1dzXY%aYNh}H002ovPDHLk FV1jf8d5-`9 diff --git a/dev-assets/doodads/mischievous.js b/dev-assets/doodads/mischievous.js deleted file mode 100644 index c7b4e0b..0000000 --- a/dev-assets/doodads/mischievous.js +++ /dev/null @@ -1,43 +0,0 @@ -function main() { - console.log("%s initialized!", Self.Doodad().Title); - - console.log(Object.keys(console)); - console.log(Object.keys(log)); - console.log(Object.keys(log.Config)); - console.log(Object.keys(Self.Canvas.Palette)); - console.log(Object.keys(Self.Canvas.Palette.Swatches[0])); - - Self.Canvas.Palette.Swatches[0].Color = RGBA(255, 0, 255, 255); - Self.Canvas.Palette.Swatches[1].Color = RGBA(0, 255, 255, 255); - console.log(Self.Canvas.Palette.Swatches); - log.Config.TimeFormat = "haha"; - - var colors = [ - RGBA(255, 0, 0, 255), - RGBA(255, 153, 0, 255), - RGBA(255, 255, 0, 255), - RGBA(0, 255, 0, 255), - RGBA(0, 153, 255, 255), - RGBA(0, 0, 255, 255), - RGBA(255, 0, 255, 255) - ]; - var colorIndex = 0; - setInterval(function() { - console.log("sticky tick"); - Self.Canvas.MaskColor = colors[colorIndex]; - colorIndex++; - if (colorIndex == colors.length) { - colorIndex = 0; - } - }, 100); - - // log.Config.Colors = 0; // panics, can't set a golog.Color - - Events.OnCollide( function() { - - Self.ShowLayer(1); - setTimeout(function() { - Self.ShowLayer(0); - }, 200); - }) -} diff --git a/dev-assets/doodads/objects/Makefile b/dev-assets/doodads/objects/Makefile deleted file mode 100644 index e79ee47..0000000 --- a/dev-assets/doodads/objects/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -ALL: build - -.PHONY: build -build: - # Start Flag - doodad convert -t "Start Flag" start-flag.png start-flag.doodad - doodad install-script start-flag.js start-flag.doodad - - # Exit Flag - doodad convert -t "Exit Flag" exit-flag.png exit-flag.doodad - doodad install-script exit-flag.js exit-flag.doodad - - # Checkpoint Flag - doodad convert -t "Checkpoint Flag" checkpoint-active.png \ - checkpoint-inactive.png checkpoint-flag.doodad - doodad install-script checkpoint-flag.js checkpoint-flag.doodad - - # Anvil - doodad convert -t "Anvil" anvil.png anvil.doodad - doodad install-script anvil.js anvil.doodad - - for i in *.doodad; do\ - doodad edit-doodad --tag "category=objects" $${i};\ - done - cp *.doodad ../../../assets/doodads/ \ No newline at end of file diff --git a/dev-assets/doodads/objects/anvil.js b/dev-assets/doodads/objects/anvil.js deleted file mode 100644 index 8ea5d59..0000000 --- a/dev-assets/doodads/objects/anvil.js +++ /dev/null @@ -1,52 +0,0 @@ -// Anvil -var falling = false; - -function main() { - // Note: doodad is not "solid" but hurts if it falls on you. - Self.SetHitbox(0, 0, 48, 25); - Self.SetMobile(true); - Self.SetGravity(true); - Self.SetInvulnerable(true); - - // Monitor our Y position to tell if we've been falling. - let lastPoint = Self.Position(); - setInterval(() => { - let nowAt = Self.Position(); - if (nowAt.Y > lastPoint.Y) { - falling = true; - } else { - falling = false; - } - lastPoint = nowAt; - }, 100); - - Events.OnCollide((e) => { - if (!e.Settled) { - return; - } - - // Were we falling? - if (falling) { - if (e.InHitbox) { - if (e.Actor.IsPlayer()) { - // Fatal to the player. - Sound.Play("crumbly-break.wav"); - FailLevel("Watch out for anvils!"); - return; - } - else if (e.Actor.IsMobile() && !e.Actor.Invulnerable()) { - // Destroy mobile doodads. - Sound.Play("crumbly-break.wav"); - e.Actor.Destroy(); - } - } - } - }); - - // When we receive power, we reset to our original position. - let origPoint = Self.Position(); - Message.Subscribe("power", (powered) => { - Self.MoveTo(origPoint); - Self.SetVelocity(Vector(0, 0)); - }); -} diff --git a/dev-assets/doodads/objects/anvil.png b/dev-assets/doodads/objects/anvil.png deleted file mode 100644 index 205beccb30199cdf8c61d57b22e1fe99ffc6844c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 796 zcmV+%1LOROP)X1^@s6ccHC$0004mX+uL$Nkc;* zaB^>EX>4Tx04R}tkv&MmKp2MKrb>%c9E>31kfAzR5EXIMDionYs1;guFuC*(nlvOS zE{=k0!NH%!s)LKOt`4q(Aov5~=H{g6A|-y;6k5c1$8itueecWNcYshYGu`eQ2Xw=+ zQi-^f$*xMFSA=N}KtxDkwmB!uN%)Shdj$A?7vov}b$^atEoU)O(FKVgxvqNr#<|dBfoFUT9?#W*m$r&rlT&FdR1QxLb84^@fQ9>CGVze8i*htZN+{ZuE^vmQ@$yEX) z#{w$Qp)~#AfAG7vc7AfgONzvS?ibhn7y&}NK%?fm-^Z@oI01ssz?ISVSL(pbC+W4e z7Ci#`wtjJ_!g^xpzKYhK@4=Qw=;($uTu4RCM> zj20++-RIrm&c6Ly)9T+34AOFbbr;fx00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru

D_9ta=#Ep7k+02y>eSad^gZEa<4bO1wgWnpw> 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 diff --git a/dev-assets/doodads/objects/checkpoint-flag.js b/dev-assets/doodads/objects/checkpoint-flag.js deleted file mode 100644 index 5b28815..0000000 --- a/dev-assets/doodads/objects/checkpoint-flag.js +++ /dev/null @@ -1,58 +0,0 @@ -// Checkpoint Flag. -var isCurrentCheckpoint = false, - playerEntered = false - broadcastCooldown = time.Now(); - -function main() { - Self.SetHitbox(22 + 16, 16, 75 - 16, 86); - setActive(false); - - // If the checkpoint is linked to any doodad, the player character will - // become that doodad when they cross this checkpoint. - let skin = null; - for (let actor of Self.GetLinks()) { - skin = actor.Filename; - actor.Destroy(); - } - - // Checkpoints broadcast to all of their peers so they all - // know which one is the most recently activated. - Message.Subscribe("broadcast:checkpoint", (currentID) => { - setActive(false); - return "a ok"; - }); - - Events.OnCollide((e) => { - if (!e.Settled) { - return; - } - - // Only care about the player character. - if (!e.Actor.IsPlayer()) { - return; - } - - SetCheckpoint(Self.Position()); - setActive(true); - - // Don't spam the PubSub queue or we get races and deadlocks. - if (time.Now().After(broadcastCooldown)) { - Message.Broadcast("broadcast:checkpoint", Self.ID()); - broadcastCooldown = time.Now().Add(5 * time.Second) - } - - // Are we setting a new player skin? - if (skin && e.Actor.Doodad().Filename !== skin) { - Actors.SetPlayerCharacter(skin); - } - }); -} - -function setActive(v) { - if (v && !isCurrentCheckpoint) { - Flash("Checkpoint!"); - } - - isCurrentCheckpoint = v; - Self.ShowLayerNamed(v ? "checkpoint-active" : "checkpoint-inactive"); -} diff --git a/dev-assets/doodads/objects/checkpoint-inactive.png b/dev-assets/doodads/objects/checkpoint-inactive.png deleted file mode 100644 index 6781ff9abfdae14001a0b37147d0d8228a660731..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7309 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 N2WMh!Tx94G@gMm|3!?x4 diff --git a/dev-assets/doodads/objects/exit-flag.js b/dev-assets/doodads/objects/exit-flag.js deleted file mode 100644 index d45a754..0000000 --- a/dev-assets/doodads/objects/exit-flag.js +++ /dev/null @@ -1,19 +0,0 @@ -// Exit Flag. -function main() { - Self.SetHitbox(22 + 16, 16, 75 - 16, 86); - - Events.OnCollide((e) => { - if (!e.Settled) { - return; - } - - // Only care if it's the player. - if (!e.Actor.IsPlayer()) { - return; - } - - if (e.InHitbox) { - EndLevel(); - } - }); -} diff --git a/dev-assets/doodads/objects/exit-flag.png b/dev-assets/doodads/objects/exit-flag.png deleted file mode 100644 index 585152db46014ba1c64abae3b93371250d07273b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 932 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 P00000NkvXXu0mjf!dYHl diff --git a/dev-assets/doodads/on-off/blue-off.png b/dev-assets/doodads/on-off/blue-off.png deleted file mode 100644 index 1375fe6ff54ff1d623f211ec694ea71c212fa493..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 668 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 diff --git a/dev-assets/doodads/on-off/state-block-blue.js b/dev-assets/doodads/on-off/state-block-blue.js deleted file mode 100644 index 16e1421..0000000 --- a/dev-assets/doodads/on-off/state-block-blue.js +++ /dev/null @@ -1,23 +0,0 @@ -// Blue State Block -function main() { - Self.SetHitbox(0, 0, 42, 42); - - // Blue block is ON by default. - let state = true; - - Message.Subscribe("broadcast:state-change", (newState) => { - state = !newState; - - // Layer 0: ON - // Layer 1: OFF - Self.ShowLayer(state ? 0 : 1); - }); - - Events.OnCollide((e) => { - if (e.Actor.IsMobile() && e.InHitbox) { - if (state) { - return false; - } - } - }); -} diff --git a/dev-assets/doodads/on-off/state-block-orange.js b/dev-assets/doodads/on-off/state-block-orange.js deleted file mode 100644 index 7e3d518..0000000 --- a/dev-assets/doodads/on-off/state-block-orange.js +++ /dev/null @@ -1,23 +0,0 @@ -// Orange State Block -function main() { - Self.SetHitbox(0, 0, 42, 42); - - // Orange block is OFF by default. - let state = false; - - Message.Subscribe("broadcast:state-change", (newState) => { - state = newState; - - // Layer 0: OFF - // Layer 1: ON - Self.ShowLayer(state ? 1 : 0); - }); - - Events.OnCollide((e) => { - if (e.Actor.IsMobile() && e.InHitbox) { - if (state) { - return false; - } - } - }); -} diff --git a/dev-assets/doodads/on-off/state-button.js b/dev-assets/doodads/on-off/state-button.js deleted file mode 100644 index 291260c..0000000 --- a/dev-assets/doodads/on-off/state-button.js +++ /dev/null @@ -1,55 +0,0 @@ -// State Block Control Button - -// Button is "OFF" by default. -let state = false; - -function main() { - Self.SetHitbox(0, 0, 42, 42); - - // When the button is activated, don't keep toggling state until we're not - // being touched again. - let colliding = false; - - // If we receive a state change event from a DIFFERENT on/off button, update - // ourself to match the state received. - Message.Subscribe("broadcast:state-change", (value) => { - state = value; - showSprite(); - }); - - Events.OnCollide((e) => { - if (colliding) { - return false; - } - - // Only trigger for mobile characters. - if (e.Actor.IsMobile()) { - // Only activate if touched from the bottom or sides. - if (e.Overlap.Y === 0) { - return false; - } - - colliding = true; - state = !state; - Message.Broadcast("broadcast:state-change", state); - - showSprite(); - } - - // Always a solid button. - return false; - }); - - Events.OnLeave((e) => { - colliding = false; - }) -} - -// Update the active layer based on the current button state. -function showSprite() { - if (state) { - Self.ShowLayer(1); - } else { - Self.ShowLayer(0); - } -} diff --git a/dev-assets/doodads/palette.json b/dev-assets/doodads/palette.json deleted file mode 100644 index a2f9e19..0000000 --- a/dev-assets/doodads/palette.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "#000000": { - "name": "black" - }, - "#666666": { - "name": "dark-grey" - }, - "#999999": { - "name": "grey" - }, - "#CCCCCC": { - "name": "light-grey" - }, - "#FF0000": { - "name": "red" - }, - "#0099FF": { - "name": "light-blue" - }, - "#0000FF": { - "name": "blue" - }, - "#009900": { - "name": "green" - }, - "#999900": { - "name": "gold" - }, - "#4D391B": { - "name": "brown" - }, - "#8B652C": { - "name": "light-brown" - } -} diff --git a/dev-assets/doodads/regions/Makefile b/dev-assets/doodads/regions/Makefile deleted file mode 100644 index 1c3f568..0000000 --- a/dev-assets/doodads/regions/Makefile +++ /dev/null @@ -1,38 +0,0 @@ -ALL: build - -.PHONY: build -build: - # Goal Region - doodad convert -t "Goal Region" goal-128.png reg-goal.doodad - doodad install-script goal.js reg-goal.doodad - - # Checkpoint Region - doodad convert -t "Checkpoint Region" checkpoint-128.png reg-checkpoint.doodad - doodad install-script checkpoint.js reg-checkpoint.doodad - - # Fire Region - doodad convert -t "Fire Region" fire-128.png reg-fire.doodad - doodad install-script fire.js reg-fire.doodad - - # Stall Region - doodad convert -t "Stall Player (250ms)" stall-128.png reg-stall-250.doodad - doodad edit-doodad --tag "ms=250" reg-stall-250.doodad - doodad install-script stall.js reg-stall-250.doodad - - # Power Source - doodad convert -t "Power Source" power-64.png power-source.doodad - doodad install-script power.js power-source.doodad - - # Warp Door - doodad convert -t "Invisible Warp Door" warp-door-64.png reg-warp-door.doodad - doodad edit-doodad --tag "color=invisible" reg-warp-door.doodad - doodad install-script ../warp-door/warp-door.js reg-warp-door.doodad - - # Reset Level Timer - doodad convert -t "Reset Level Timer" timer-64.png reg-reset-timer.doodad - doodad install-script reset-timer.js reg-reset-timer.doodad - - for i in *.doodad; do\ - doodad edit-doodad --tag "category=technical" $${i};\ - done - cp *.doodad ../../../assets/doodads/ diff --git a/dev-assets/doodads/regions/checkpoint-128.png b/dev-assets/doodads/regions/checkpoint-128.png deleted file mode 100644 index 13766e692d29a842d95b8a53c235a583caa2fcec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 956 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrU~I{Bb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)%+dJZrAxP1+;BXi==?gxG2}?#>VOumg<%<24?el1pK)o@k{uRY>sZOqR84;ndGGl@8NsayMhDb|&Trb4D3~wcpC46v z?)QiXRy^>v{Y+QF`>L`8m~g)_Ibqn`Tx%(%2aBDsgFhg0K=Zu{qOU%b+E zr*&KsmSO?TY&SnP|3COX@9d)|Ewe@ZnEvW-`zy%KwA*2K=I#5(x81d4{B!=m)O%mA zM;$n${_^ZPF>5BaZH?Wp*DZU)INkcdh2U7T6!%Y;MY>!c{O#GN$Pql)AopkM)h)xA&)8{r$@zy{xDuQC7|!7%gl`-tI08|3PrU-sO{l zBAf*tk;M!Q+`=Ht$S`Y;1W=H@#M9T6{V5j*lcrIZ57#YVOz!k_aSW-r_4Zb5P_uzZ z!^I0Pu(aDAJU(4TdJrHYP5MZ#hjh<)t{N$rQ->W`F{Lg)Vvm|%+>Tmn! zoXPVo>E9NA``w$*W%|Oep5N53w=9^*zvKI@6aTKq?cSEV_pi~6U-i`sUG0KTe~Z1t zbdKkTXuop$xBEsXPUkL4-)MQjz9#Q%4bS$ojCEEP(cgc>$(&8U#9m;s@z-1ZJ>L)H z@h)gTxa$0Yt(=eIYuf_XF@3GDt+IL1^S=JHN;fHFYPb9B{%mNi_< zz+#LNOpHJokdK*wazMbA6j|Xktu>ehDAvHh(+H9Q82|EI<-$ z3|KNjCyZ4+CDgzbB*t+-0AgtagU7Sm{s#po&hJ%zfAMx*wQX8B1B-)Z{043Pxie)m QIYD|oUHx3vIVCg!06ztjzW@LL diff --git a/dev-assets/doodads/regions/checkpoint.js b/dev-assets/doodads/regions/checkpoint.js deleted file mode 100644 index 1645f69..0000000 --- a/dev-assets/doodads/regions/checkpoint.js +++ /dev/null @@ -1,38 +0,0 @@ -// Checkpoint Region -// Acts like an invisible checkpoint flag. -var isCurrentCheckpoint = false; - -function main() { - Self.Hide(); - setActive(false); - - // Checkpoints broadcast to all of their peers so they all - // know which one is the most recently activated. - Message.Subscribe("broadcast:checkpoint", (currentID) => { - setActive(false); - }); - - Events.OnCollide((e) => { - if (isCurrentCheckpoint || !e.Settled) { - return; - } - - // Only care about the player character. - if (!e.Actor.IsPlayer()) { - return; - } - - // Set the player checkpoint. - SetCheckpoint(Self.Position()); - setActive(true); - Message.Broadcast("broadcast:checkpoint", Self.ID()) - }); -} - -function setActive(v) { - if (v && !isCurrentCheckpoint) { - Flash("Checkpoint!"); - } - - isCurrentCheckpoint = v; -} diff --git a/dev-assets/doodads/regions/fire-128.png b/dev-assets/doodads/regions/fire-128.png deleted file mode 100644 index 117a231f879e5c23ca611ac8e9ffbfa32928211c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 965 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrU~I{Bb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)%+dH@S4~lN?GB5S6^{}eLyiQl4rt+87?yGM;FC-G8J8w3*nm5IldZQUej0Ta5>j_YDf3X zH>+-Z?Gj-5k}T46Mkm>C(xeZv@!vTkmQ`2g9BpXuusO|hS?!*}yn9=C z&;33k7&ayJQSl?g$$B1tPLv*fY<`Y)I_o@1!^>7JvJ+ToF(=lyAYIA`CcGo`bfJrV@HCnz{MimFaYRCZhK*VQWW_IT}|=5_H( z)1B4{Nmz;nG_u|N+Wi0E`@FS(p0rFC>0_R&-}l*&r{pbD@2tl)^45NjSvc&N!>dlm zuVgl!zvOyU)EAByciHsTMbFyA9`lZY*}pC4)H;zRnom9-_$^r*EcRkIt5bGd{@L0& zb_|)Xv?`fpWSEp$PsM$&EHAIl|35GD+jnLS*P_l(3HOuXF*Aw$FN_DqF!Z*N5xH5o`W zTs*Kt`rC7*JMynL`k%SLb7g+C?+MHPP~~I!4wp*SCsr(%o%i^L>-^nMZL_4eUrV0% zrE?kQg2KChu55fd#d+_u`#X&rycw7r7&sc(Y!~epD?VTN=9=96cWU443y|TwNE~um5;8-*sD^(|AY+%kW;Ke(9i>H74te))@UclzGiCGh$B zp_7u_j_$|ftLjn~YVQ)*A~LIfFEax}{4U;->`QXHn><1OabQ>mBpDbL7+4s<;7)h! zLEcT;GgKH@8W>m-xPYVp0~1IM80-+deMmYb+QJj0iQ|9>L~8>?vY~pT_72A~*2yeD zO$`h_ji_41cQ;9=gd3o1%{a4u=>y$uI@0--{kM*-{W@bVqX2{EUj{=TOZ`1b4;4XX Nd%F6$taD0e0ssu}n-c&4 diff --git a/dev-assets/doodads/regions/fire.js b/dev-assets/doodads/regions/fire.js deleted file mode 100644 index 977537a..0000000 --- a/dev-assets/doodads/regions/fire.js +++ /dev/null @@ -1,19 +0,0 @@ -// Goal Region. -function main() { - Self.Hide(); - - Events.OnCollide((e) => { - if (!e.Settled) { - return; - } - - // Only care if it's the player. - if (!e.Actor.IsPlayer()) { - return; - } - - if (e.InHitbox) { - FailLevel("You have died!"); - } - }); -} diff --git a/dev-assets/doodads/regions/goal-128.png b/dev-assets/doodads/regions/goal-128.png deleted file mode 100644 index c93dd3c33546f288fe14cc14cf61deaf3425b9a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 990 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrU~I{Bb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)%+dJZrAxP1+;BXi==?gxG2}?#>VOumg<%<24?el1pK)o@k{uRY>sZOqR84;ndGGl@8NsayMhDb|&Trb4D3~wcpC46v z?)QiXRy^>v{Y+QF`>L`8m~g)_Ibqn`Tx%(%2aBDsgFhg0K=Zu{qOU%b+E zr*&KsmSO?TY&SnP|3COX@9d)|Ewe@ZnEvW-`zy%KwA*2K=I#5(x81d4{B!=m)O%mA zM;$n${_^ZPF>5BaZH?Wp*DZU)INkcdh2U7T6!%Y;MY>!c{O#GN$Pql)AopkM)h)xA&)8{r$@zy{xDuQC7|!7%gl`-tI08|3PrU-sO{l zBAf*tk;M!Q+`=Ht$S`Y;1W=H@#M9T6{V5j*ldh<@R@GKuOy2f%aSW-r_4bxyU$X)O zYe3enFL`@?`7ho+b2sgNyF%E5j~{D}Ynj;1d;fFeW}Va9bPh*VUVAmY_;S{Y z|HtDPS9UFzQhR=Kb)nsyRq-#sN3Z_BGP&WN_{=QcqXlJ0_g@qUzHak(ZtdS$hwJbE z?hf{ydP^%jb9&uZx$L;@57(&Fe>&OCdn2nRD7%I?CW|NFv%;Eda;X-V7My;3I7t0=?=4`CWStUj;0O|OU@&O}D&k-Os|Cv+XuTnJPx1C4 zQnf=&zn&Cc(Ef%?4QwJugBm!HLAG0c&ez=Ga&lAQNz*9n{MD(~m=zdWKCqwMAG&i- S_6AT6X7F_Nb6Mw<&;$Ur { - if (!e.Settled) { - return; - } - - // Only care if it's the player. - if (!e.Actor.IsPlayer()) { - return; - } - - if (e.InHitbox) { - EndLevel(); - } - }); -} diff --git a/dev-assets/doodads/regions/power-128.png b/dev-assets/doodads/regions/power-128.png deleted file mode 100644 index fcdab4199ebcb125d3332d5a865569ff8647b90a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcmZvadsNbQ6u`ecenKoaHFVmnn9UtchnYHMmJ;B*nN7{q63y!9(Itv+X8jcH*h8j4 zc_PPVnXOQI`xfk^Zi{@B8fogt$0ja(D=7~L?eyR7^PGFn{o`}*JsT42XN=p70{|EY z_|v}AXV~CaBYk}06(pjwR$^(I$e*}(9RWCHNfCW9jYzrs>q#H0s&>w}rZp-`WYuBND=zDSq~?Bt846+B!qlB;il&U(Zm>GDb*5hJQoGZuvvP%1ZhgJJ zNBOABshpO8G#Q@rN_VtMo074*Nh8>n`PH!E zkAW}L*tCwpCT%0ws>oD3B*C)qxK3rVac}OW0gFBEelz#xQ`@^ltvwPFh<0ZvN*n56 zCUuQZIyDPxckyI=cD*ZOXtkD^DYa2%XlkjwLt=VuzPQfFa@+V_pPLVfFII^AoX*R; zEb^HVFU$TK++XynS=&gqwkL!$XNO3+Ym1HEr=w_>zviwCW7n1zA1OT-d`Tn=Nrb-Q5NhKE6KjZ6^= zE`a3LyVKJ|vf{G&LULB1FFd6NO@z}$e%X?Hrt)LVCSWH9$wxFUDP^zKcN}%kW7tV( z#^h%RJRSUxd1rz^$z0_8x~De&%{lrEH;A_>T$59&`-(h|g5>3r(ng^hEQ|q^5#0uw z+zlXnK}3To{D1?J1TWoeED?5=7XXsMkKPTrLj(f`xl?}p`FwVyYXC6OBZBn&_keoN z|K#tnTXJ}}`93ql@lC)H1O59Ypj~Qm)=vgX>qkpKVy diff --git a/dev-assets/doodads/regions/power-64.png b/dev-assets/doodads/regions/power-64.png deleted file mode 100644 index 14a743c8feeee74e613d50d1c3068f14547be649..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 780 zcmV+n1M~ceP)EX>4Tx04R}tkv&MmKpe$iQ>CS}IM_kNAw%nAK~%(1t5Adrp;l;o12rOiF%h$A91vpy$DX?TvWd-(Wzm*836=l&cKwO}&9Clb%Hx?vG-5KnJf zb?RNS*tc!=brq9;ex)h%ypV0NMR96kRU=q0~J(ZAwjE7iir&ECq4Ybj$a~|LaquJ zITlcZ2HEk0|H1EW&En*Qn-oq0{V%rt5eEXhK)Y$%-^aGyJ^}pCz?I(h*IK~LC+W?u z7CQn4wtNAlAYibdf4jJ_!k4Bi5vHMh6UK29HiEOnK>0S*p< z(Gq2^d%Qc?+uOfqI{p0s8>VuEVI3Yv00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliruJlQENbaX7)e1XFW=Z9P|)zcLQWQ7^!xQ>S*? zy_K}jECB={KsWZx-YSFTRv=x^?cF;s!Q}St-1VNp+SVo|lXr3QE^c*HUh9?gA+t|3P(EKO@5*e|9x1S;(zNldZ=SsZVEX(mF<@ST z=`nIw1lh4?gZB3RPwxVy#HVJLNRK;b0RR91=!DPW+GhX)5P$##AOHafKmY;&0000$ z87e=Dk_sc>kJZ>|eivW~AOHafKmY;|fB*!Dx4|0t^E6A~8~gyR=dVUnIP8%C0000< KMNUMnLSTZTC{uF) diff --git a/dev-assets/doodads/regions/power.js b/dev-assets/doodads/regions/power.js deleted file mode 100644 index 6b555a3..0000000 --- a/dev-assets/doodads/regions/power.js +++ /dev/null @@ -1,22 +0,0 @@ -// Power source. -// Emits a power(true) signal once on level start. -// If it receives a power signal, it will repeat it after 5 seconds. -// Link two of these bad boys together and you got yourself a clock. -function main() { - Self.Hide(); - - // See if we are not linked to anything. - var links = Self.GetLinks(); - if (links.length === 0) { - console.error( - "%s at %s is not linked to anything! This doodad emits a power(true) on level start to all linked doodads.", - Self.Title, - Self.Position() - ); - } - - Message.Subscribe("broadcast:ready", () => { - Message.Publish("switch:toggle", true); - Message.Publish("power", true); - }); -} diff --git a/dev-assets/doodads/regions/reset-timer.js b/dev-assets/doodads/regions/reset-timer.js deleted file mode 100644 index eb12c60..0000000 --- a/dev-assets/doodads/regions/reset-timer.js +++ /dev/null @@ -1,30 +0,0 @@ -// Reset Level Timer. -function main() { - Self.Hide(); - - // Reset the level timer only once. - let hasReset = false; - - Events.OnCollide((e) => { - if (!e.Settled) { - return; - } - - // Only care if it's the player. - if (!e.Actor.IsPlayer()) { - return; - } - - if (e.InHitbox && !hasReset) { - Level.ResetTimer(); - hasReset = true; - } - }); - - // Receive a power signal resets the doodad. - Message.Subscribe("power", (powered) => { - if (powered) { - hasReset = true; - } - }); -} diff --git a/dev-assets/doodads/regions/stall-128.png b/dev-assets/doodads/regions/stall-128.png deleted file mode 100644 index ea0bd5e2a9eada590cea1567f3123580270fdaba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1106 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrU~I{Bb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)%+dH@S4~lN?GB5S6^{}eLyiQl4rt+87?yGM;FC-G8J8w3*nm5IldZQUej0Ta5>j_YDf3X zH>+-Z?Gj-5k}T46Mkm>C(xeZv@!vTkmQ`2g9BpXuusO|hS?!*}yn9=C z&;33k7&ayJQSl?g$$B1tPLv*fY<`Y)I_o@1!^>7JvJ+ToF(=lyAYIA`CcGo`bfJrV@HCnz{MimFaYRCZhK*VQWW_IT}|=5_H( z)1B4{Nmz;nG_u|N+Wi0E`@FS(p0rFC>0_R&-}l*&r{pbD@2tl)^45NjSvc&N!>dlm zuVgl!zvOyU)EAByciHsTMbFyA9`lZY*}pC4)H;zRnom9-_$^r*EcRkIt5bGd{@L0& zb_|)Xv?`fpWSEp$PsM$&EHAIl|35GD+jnLS*P_l(3HOuX@eA5~sqbZAVDk5LaSW-r_4ZC~Ub6xN zTS9Ktmb)v{U(BuA{&qU2a+k+J{dwv)=a)Gj31?A}j<;Wbf8l}OpXG|{%TF7w3wsy( z+NP4H#FxR!ye;qL&wqQ4Z>>zXSP&zX;WuBO*Y5g0 z{khWqPoGY+5C6Y(Kd-(2*1%W4ZP_26pCdfq`lPP-r;Nhb$G@gelbpWw3Sai|tib)t z`WY^}CO5ouG7kU$;hcT7euNF1hwWkSd55dZ^0$indcBsPUbyUY{j()@HjS%e4_p&h zkU66}HQMOJ9bE=X_MYZ|$9fjKey=lKydrY{UbcqBpZ$BKKJ_IxOmnn2s_@}<*OA!A zg6cPl|E}&~oF>*3Ww$t(+f(;d!Lm=!uZaW0Y{8_fu?JUL=DcfTv+h5yx<_ucw9_-a zv_F-v79F!r(J7eYeeL#v{K;Z^OP{qVl%KviGk$B_!Np_6FMa;5H1P{VFVlq2PLEe?PhDFj&$z;(E59(k&9+~`gzJFlvVuZ^6(S95 zvstpGHL~8%Dcx>9k8PP$b> diff --git a/dev-assets/doodads/regions/stall.js b/dev-assets/doodads/regions/stall.js deleted file mode 100644 index 56cf5d4..0000000 --- a/dev-assets/doodads/regions/stall.js +++ /dev/null @@ -1,40 +0,0 @@ -// Stall Player. -// Tags: ms (int) -// Grabs the player one time. Resets if it receives power. -function main() { - Self.Hide(); - - let active = true, - timeout = 250, - ms = Self.GetTag("ms"); - - if (ms.length > 0) { - timeout = parseInt(ms); - } - - Events.OnCollide((e) => { - if (!active || !e.Settled) { - return; - } - - // Only care if it's the player. - if (!e.Actor.IsPlayer()) { - return; - } - - if (e.InHitbox) { - // Grab hold of the player. - e.Actor.Freeze(); - setTimeout(() => { - e.Actor.Unfreeze(); - }, timeout); - - active = false; - } - }); - - // Reset the trap if powered by a button. - Message.Subscribe("power", (powered) => { - active = true; - }); -} diff --git a/dev-assets/doodads/regions/timer-64.png b/dev-assets/doodads/regions/timer-64.png deleted file mode 100644 index 4c5587974741a99717bc55269fcf4eb0fd0f1fb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 901 zcmV;01A6?4P)EX>4Tx04R}tkv&MmKp2MKrivmJ1uIB#$WWauh>AFB6^c+H)C#RSm|Xe?O&XFE z7e~Rh;NZ_<)xpJCR|i)?5c~mgbaGO3krKa43N2#1*Znzq)ttqEfJi*c4AUmwAfDc| z4bJ<-VOEq?;&b9LlP*a7$aTfzH_io@1)do;)2VslFtJ!@W2KE*(bR~ih@+~eQ@)V# zSmnIMSu0mr^Pc>Lp`5<5%ynABNMI35kRU=q6(y8mBSyPUiiH%N$9?<}*DsMvAy)~E z91EyGgY5dj|KN9Tt^DMKmlTQvoiC2_F#>e$0*#vEd>=bb;{*sk16O*>U#SB#pQP7X zTJ#9$+XgPKTbi;5TCi1XOrEd$s6h?M(NpVNALh2OR~mM1{yODA>N z%?jOTLI46FU~R~py;UVk-`?xHC&s?EPRJs__OSEV-}BgC{hDhs%0ct@So_d8(}uv8 zwp(&QZDHYB^1inpvL8-B$N|@cZOP7z|Ir~KV;-(MVsjwH-bKQw9P}%3Wai}8B?*@7 z^WCb!oc%Y(u~H#qYLAtwRR910;LAE7Mh{%~BW(8iwH*8EwLp!wcZxc7UZ@TsPUM0x+0Fod80MHOg7B0Sq zhV8?Ld4Ebnq-E_OVwZLyvxU>=fEFakZ9(V+%31@J=z)~Hpz=s9EkHvAAp`*s009sH0T8e(1b?0; b1lGnMaXU~x8$4z=00000NkvXXu0mjfriPUd diff --git a/dev-assets/doodads/regions/warp-door-64.png b/dev-assets/doodads/regions/warp-door-64.png deleted file mode 100644 index f2b31d43b9e052d0dc7ed90a7a068015bd500e37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 821 zcmV-51Iqk~P)EX>4Tx04R}tkv&MmP!xqvQ$>-AgGEFHGgLvaAS&XhRVYG*P%E_RVDi#GXws0R zxHt-~1qXi?s}3&Cx;nTDg5VE`qmz@OiTyrGnJet4ik&{7FJrA6-y{D4^000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2j&3-0umG4(lG)600A*cL_t(|+U=WB4uc>JhQW9j z@8dytA5Y_+%m~5NVvu6LFWJL{ZS=R4w%g*mggsR7*+SIJ*M3gx_dl3|bKDCMQ`gbD z-KeBCvjq?U0emw{fg%r#rR!&b^z3Xt=1AkO@qo`3;_)aME{(GVdJC{FVVCa8s5!)R z*PvXOC*8Mc5NuVblwMnk36G`1H5HZ=>GNQA^|{#?kVfb`UeP1UH$4UNJ802BbI0I_ zA^`vZycBgREamc=aSIKRzisg=xqEs|J1)&{Wps60JYTq!3XhN~(-HD6z-(a=J-?na z;Q_rm!sfPs`L_7osBfVKRwY2%7S9(i_4l;>zo)%`-v^Kf00000fKOc30;IwS@MHF9 zH03Z`009sH0T2KI5C8!XAgcy7@aJi^z&rQ?$wSF;A2tV&00000NkvXXu0mjfuGeS^ diff --git a/dev-assets/doodads/snake/Makefile b/dev-assets/doodads/snake/Makefile deleted file mode 100644 index 6fa8016..0000000 --- a/dev-assets/doodads/snake/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -ALL: build - -.PHONY: build -build: - doodad convert -t "Snake" left-1.png left-2.png left-3.png right-1.png right-2.png right-3.png \ - attack-left-1.png attack-left-2.png attack-left-3.png attack-right-1.png attack-right-2.png \ - attack-right-3.png snake.doodad - doodad install-script snake.js snake.doodad - - # Tag the category for these doodads - for i in *.doodad; do\ - doodad edit-doodad --tag "category=creatures" $${i};\ - done - - cp *.doodad ../../../assets/doodads/ \ No newline at end of file diff --git a/dev-assets/doodads/snake/attack-left-1.png b/dev-assets/doodads/snake/attack-left-1.png deleted file mode 100644 index d7e3cdfe44bcea1f52e642db598df59e328165a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1202 zcmV;j1Wo&iP)EX>4Tx04R}tkv&MmKpe$iKSYs=gB3(YGE^rEqN0vkg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2C=otzY1q{ROvg%&X$9QWhhy~o`kex4aNQptJZFtLztVY!7_!BB}Oi6e@tQNBOz zvch?bvs$XK#y$B9Ls@NQnd>wM5yv8yAVPqQ3W_MfLX=jG6cb6>k9qj}9luB}nOsFM zax9<>6_Voz|AXJ%nz@N_Hz^bY+Foq?V;E@P1?pAX{yw(t`Uwzt2ClTGzgz=mK1r`O zwa5|By$xJkH#K<=xZDByo^;8O94SE4pUVO7XY@@Opyw9oTyuMC?BnzSNKsdb8{ps& z7|B!iy2raaT6_EVOryUa#c*=S+P_|M00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<^=%)ATBmTM=1aR02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00N3hL_t(|+U=UVPQx%1hL0;R3?R}qLa2x#3p@lPBSXfD zxf|-rQi&BYkq2Pp0eFo{EOg)^RJxW5kXVq+0B((O(l*#WCON+psZpgS{&Ft=aSA{p zkw_#Gi9{liNF)-8L?V#_5W~7~(usw7KFCH46GQ`J(Ne8$6I$J75E0S9iU1u*(f5@C zp+kvMz7(v=fQV9_yU?qxYq&XoLWSWqB8p%Dz!XL;QX@(^{7MVPW=EAl46+e>zWm7j ze*bOJedrF&VzhVBGK4qkS$E8Hg~v*NAyAYULwBgwepfct|kNKwuA9K}7_C zP^`4tLes)3`J;n5~Up0H`XXMbO@MffdaxbeM$(J?G(Lh=n$~lY6CkOLVy6^ zaTi-cP&aEQ!Lj zs4>pNuI$LILr`mqi>Pp3BjimdV1DtN=O=vsUBHW>nrEOEUG%?9jk4`DuXebeNtn-? zuxRHnS#j5Gl-W)JQ-xoqP|lk_f{qA13e+dB=XI3w!o?P)lS>zB)ncnp-joLFLTq(~ zR&Vy3*+qFE%yxay)4=6Ub*ndqlcUw?`SICnX&6@9r|K^CJqQz!MR%@EskHY7QwX<@ z@8S6f)j+9r;V+vqdJT{@Ndnm3Tmb-plOq6tSd@thXNF3>dD9H?mjXA)Mr^Mg3kkqR zRCpP~U9`Nfryh&L1O6i_0A8V%>a=4q?k8g0Pei9({y&PtvzO0k8l{-fJ=} QVE_OC07*qoM6N<$f?FB`mH+?% diff --git a/dev-assets/doodads/snake/attack-left-2.png b/dev-assets/doodads/snake/attack-left-2.png deleted file mode 100644 index 8fec20b4eb488affaf1c5bb592110c99e06cd6ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1139 zcmV-(1dRKMP)EX>4Tx04R}tkv&MmKpe$iKSYs=gB3(YGE^rEqN0vkg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2C=otzY1q{ROvg%&X$9QWhhy~o`kex4aNQptJZFtLztVY!7_!BB}Oi6e@tQNBOz zvch?bvs$XK#y$B9Ls@NQnd>wM5yv8yAVPqQ3W_MfLX=jG6cb6>k9qj}9luB}nOsFM zax9<>6_Voz|AXJ%nz@N_Hz^bY+Foq?V;E@P1?pAX{yw(t`Uwzt2ClTGzgz=mK1r`O zwa5|By$xJkH#K<=xZDByo^;8O94SE4pUVO7XY@@Opyw9oTyuMC?BnzSNKsdb8{ps& z7|B!iy2raaT6_EVOryUa#c*=S+P_|M00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<^=%)ATlCC8)g6i02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00K)%L_t(|+U=UZOT$1E$KRDK4vKY+A{B=?DEKcpIyz)5 z&T%UK1%<91+tIa`*YO)Qo~+}#`6gYN7PKOd=iYbcS_@k@I)QYmSHzw z!Y~G+?plcxeY<#vQE!F{!!r4?x@&<0{}Zjd(NB+hGq`#>twyk{yH*r}5ZkBBTVvdx zi^X7_IDY?m4It(JQ}!4U2V*&1ZDD-fl>hk5>yvQ=CIsUk zlH35Wzqwnv7=Z}`Ek^7+H6~quQ=yg?L|h(`2E+suwBV$+Ko%e-Tq3aJ0u>6RU8j7VzaCV?tlj0gtHwEm@1qrC;wf7K5JEk>x-RacV1ji${CPNVHZr*#+@v88Sp z=)p1qB;bkWjD@89yD8sTP4a7+QXJU;*cfKE%lE68`K?wYn#0P=JN+3IsQ zFxv9*!P;>Jz)v+BCtlN*{?L*B(2-tKe~uxF1R~Gl^AE}zA~vP|!{Gn`002ovPDHLk FV1kr;@rnQd diff --git a/dev-assets/doodads/snake/attack-left-3.png b/dev-assets/doodads/snake/attack-left-3.png deleted file mode 100644 index 00948cdd5915c8481d94627abaff20f8b87e39bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 935 zcmeAS@N?(olHy`uVBq!ia0vp^P9V&|1|%PcFuY)3U~I{Bb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)%+Yvzmx*1?qAspRA?n>>sm^KzrwuKU5SGE0{*#CR?ll6 z8EAWOeYE_z!cknM?#Zq*xwniQd=v41i?phVN&;ISE zLzUf|qgHJ=X8V)dIWjkO=4%sn!Q)EP6r37*xVkhBI!y`d6%qEl)nEDJx9oloy_qqt z21Pmxctj^XX8+%O|L&}vorUI_BFwkqa(*XEWZY+c6?*%h-L|*CI0Y)$)@@m~KZZHY z&U3xl))Rsk_VUKWn44De@3_PGYhKC82{M`vm*<~me4qZsS8~B~u@^DL)!Ai(P=vF< zBeIx*fm;}a85w5HkpK#^mw5WRvOi;GWKyu)I^obeppayVYeb22er|4RUI~M9QEFmI zYKlU6W=V#EyQgnJcq5-UFuLnKT^vIyZoR#|(d)2-1p9~jL%OWSM@*dpt(G)5t$*-> zIpqxVoZy1eGw-hS*){NAxGoSgYoXTBvbBqx#2?Cd-QHq)Mf3j5-}MCnlN^fn|9k(M zcP0D5uF{lg^Sl3DnOq|#f2g#kmP7i~`rotHAG%TQn=G`^_F{y4nlQ4FWqh&d8YY=3do}*$b*mpSW%25#HMUpz`&_CrbmrEWdaAZ~4=o zrEX>4Tx04R}tkv&MmKpe$iKSYs=gB3(YGE^rEqN0vkg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2C=otzY1q{ROvg%&X$9QWhhy~o`kex4aNQptJZFtLztVY!7_!BB}Oi6e@tQNBOz zvch?bvs$XK#y$B9Ls@NQnd>wM5yv8yAVPqQ3W_MfLX=jG6cb6>k9qj}9luB}nOsFM zax9<>6_Voz|AXJ%nz@N_Hz^bY+Foq?V;E@P1?pAX{yw(t`Uwzt2ClTGzgz=mK1r`O zwa5|By$xJkH#K<=xZDByo^;8O94SE4pUVO7XY@@Opyw9oTyuMC?BnzSNKsdb8{ps& z7|B!iy2raaT6_EVOryUa#c*=S+P_|M00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<^=%)At1=$TWeSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00N0gL_t(|+U=P?PXaL*#@{ntNQ7{#gcyy(E&4(H0E~VB zHo|IROk9Z*%*N5d(b2C!;sS$uG0J)v7+grs0js5HFZZX{x4`>MVvf-M?(OqFZ2?Fm z5{X12kw_#Gi9{liNFw{h5Oz+tbE3e;AD2s+JJ2f!u- zR1m63`fX-)^5`J=WXFR~cszR6KI6C9_It#5@RUV*)|Ll`@Ib^X zD>!>Q)jl%2Us`LYs9i&Z@bxiAgMbRcl}d0bP+>!G4g?kir$Ef^m#Dw*R7GG_gOeVy zb0EZa$^XXMXE;?6JW=k{rb|}6RfBq~h8C~ULC9&c-m2{$2;MGb7+A{#1q5%CNicS% zB4ilYRpHDjw%=xJ9uf8On81P(wr z@{h{`;sglY4phGLC=-Z>wG3n>UG(S__9J63m~8-gCTv5@)|<}@z*g8QwIcZB!+r!| zKhkyu-5x`PpbB2jdxYw8muG^kJ4_p`)2c^^)uB6!P(j$}WSP|%RdAB_CmWS4RcW#4 zd4tJzX+1}%Zno0`QFV;6Ji|)+lpTKtQ6|$Azb~gtQ&5=cNvF*YNxtB>Sz_G&`j{)9 zL0cM~^M3&0rJ2Mi0#bpLvxTW8;uV2#-L3w8zPMQ!gOSEBOt;oTOXKDJ8vp=~4=Qlo zt-{4s1W)^rIwzz_m?{9yn5A3|9Ei@m0!VlMs54Q~3(9Jr%tSRDA5?z-yHE}^%ivYe zY^2NFAo%1tklTkP4DX5$81qIvw^>G`AdW^sEOw7gRql#dz5UGxK$7$W?vPAH5y3AP P00000NkvXXu0mjfKPL@u diff --git a/dev-assets/doodads/snake/attack-right-2.png b/dev-assets/doodads/snake/attack-right-2.png deleted file mode 100644 index 6bbef9cf1cd34d8eabf194f4ac6da4291150b009..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1127 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 diff --git a/dev-assets/doodads/snake/left-3.png b/dev-assets/doodads/snake/left-3.png deleted file mode 100644 index 9c8eedb4e2655668f1dbb3fc4e09168972d7c36a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1152 zcmV-`1b_R9P)EX>4Tx04R}tkv&MmKpe$iKSYs=gB3(YGE^rEqN0vkg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2C=otzY1q{ROvg%&X$9QWhhy~o`kex4aNQptJZFtLztVY!7_!BB}Oi6e@tQNBOz zvch?bvs$XK#y$B9Ls@NQnd>wM5yv8yAVPqQ3W_MfLX=jG6cb6>k9qj}9luB}nOsFM zax9<>6_Voz|AXJ%nz@N_Hz^bY+Foq?V;E@P1?pAX{yw(t`Uwzt2ClTGzgz=mK1r`O zwa5|By$xJkH#K<=xZDByo^;8O94SE4pUVO7XY@@Opyw9oTyuMC?BnzSNKsdb8{ps& z7|B!iy2raaT6_EVOryUa#c*=S+P_|M00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<^=%)AR<5Y3jzQD02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00LM^L_t(|+U=S>Pr^VL$Df*87&PG85Msj6$q(Y_z(}0C z5mpxyS4NqQBZFT@2O}}c+7cXGnw*0ilzJ_#eXe(s|8L@@wDiYw&&vfO0000000000 z0000000000000MrXZiv`=*yz_pQj7Y1reeN2~T$)M4m?^f1F&ro~I9!E(j5gNJx>9 zKxgCAjS!nMged{38_boU5n@e-XF`NdLRsdM$jUMiONzS?=-?w&YNHH?UuPa+~B z>J0KvAJ3AX2ZPm)3|mWtT}1i@0?IF)>bQV>nU!&H<+IGM`aE5D0r|2$w!1Wr&{H}h zqHdM>w^gI4-^f;!gPJv}3W#Tkl|I6=DZmv8#zg2QPF)^wMFP8sqB+B539KT5(3hQo z*xMLo6QTSq5c}S4lW6`Rrz!nCq5L zwxvmO*=%%F`JC>vO-L}3BeK23K8pH~ykku4TX@_Ont(eRSRx|Z zKUCR`&P$g2UNEX>4Tx04R}tkv&MmKpe$iKSYs=gB3(YGE^rEqN0vkg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2C=otzY1q{ROvg%&X$9QWhhy~o`kex4aNQptJZFtLztVY!7_!BB}Oi6e@tQNBOz zvch?bvs$XK#y$B9Ls@NQnd>wM5yv8yAVPqQ3W_MfLX=jG6cb6>k9qj}9luB}nOsFM zax9<>6_Voz|AXJ%nz@N_Hz^bY+Foq?V;E@P1?pAX{yw(t`Uwzt2ClTGzgz=mK1r`O zwa5|By$xJkH#K<=xZDByo^;8O94SE4pUVO7XY@@Opyw9oTyuMC?BnzSNKsdb8{ps& z7|B!iy2raaT6_EVOryUa#c*=S+P_|M00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<^=%)ArYBATU7u602y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00N6iL_t(|+U=P!PuoBg$NxsRAQjYPbrAw}a2NJ|1x5ys zRp&4v)<`U@h>f}G*r8))J_Az+M1)Y+6eR--(lNl9^KoZ8@w@nuzTXxS8}sAc|K7U* zf*=TjAP9mW2!bF8f*=TjAPB;{BH{Ef*&x+b@Bg{@o2;}5BVgyaU;J#ed-d{!37|E; z9Da%_BjF&y7GN{ly(&Zih$=&Il>h+yH+vXaudUB&Y9R?%33ZImCZr-17;%3$ExrD@ zwYjw4t-7cLHyDkCf4?390KHs!#Q-Qivl1B*l3+?bLwFmFwQDF2%fXfqyI%;g*0l&% zLRWMyf(s&oi-?`$e(j90vLf7Vk%Np*Lh9?~w)Qnl)ZHTc?Xzf#@@YxNOMgK=N3fqh zvq7qRxnfZnEXMGVjAd2^o1yFe&bv&Cr4qZ%W^+Pi2CXI&XN+oLb7pDFXd=WnqjV}_ z@a=W~zxe5YD5@U87UhoPZH1_|5>Agc006`DS>v;ZMKMdly{G;2rB{S4;rjLg0Py4Y zW2q{d9>>|8=Ax%kZMWQ36=4K?-d+a)oE`x{s%;s*Q>J;^?C+yvVh1HvPDCHW=b1d~q{RqHcIOdIq;dFaP!NRwlP5jOShaPv R{MP^g002ovPDHLkV1kMO7z6+S diff --git a/dev-assets/doodads/snake/right-2.png b/dev-assets/doodads/snake/right-2.png deleted file mode 100644 index 37828ced4eeecc62d2a719165f37765c480a69fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1172 zcmV;F1Z(?=P)EX>4Tx04R}tkv&MmKpe$iKSYs=gB3(YGE^rEqN0vkg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2C=otzY1q{ROvg%&X$9QWhhy~o`kex4aNQptJZFtLztVY!7_!BB}Oi6e@tQNBOz zvch?bvs$XK#y$B9Ls@NQnd>wM5yv8yAVPqQ3W_MfLX=jG6cb6>k9qj}9luB}nOsFM zax9<>6_Voz|AXJ%nz@N_Hz^bY+Foq?V;E@P1?pAX{yw(t`Uwzt2ClTGzgz=mK1r`O zwa5|By$xJkH#K<=xZDByo^;8O94SE4pUVO7XY@@Opyw9oTyuMC?BnzSNKsdb8{ps& z7|B!iy2raaT6_EVOryUa#c*=S+P_|M00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<^=%)Ar+oepG*J%02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00L}DL_t(|+U=RWPQp+ahTodAFhGPAiNQGF;)OUmbTrO5 z8CDY)*2b+D;OGT#AxsR$#t_y@>fmBh2RzMb=`TIyJL30jKm+yZ_j?2whG7_nVHk#C z7=~dOhG7_nVHk$_!&oNV#Aw_P^FCj=E9;;|NCCr1FM4lwHvhdd3kXA8+@0)2hD9ks z6`(RZn@1u5>_vt!O#%R1y!%44j zygpbF>tzt@3Z}>)8K`8NRBMIj_@o7s)(z1M&KxiqgG}){cnt(-vOezcTY*hO!RS z!kO}&VV$VZvVF>k*zmda6lKny4@rMN!c-I%H_A5pr&T9i&D^+F+GcAF340t}SY}=tkCXb+@QmD0dmAj7yCoDMe5e mNn;LXsz{^!PZ+~6|C=8VeNwA`kv-M`0000EX>4Tx04R}tkv&MmKpe$iKSYs=gB3(YGE^rEqN0vkg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2C=otzY1q{ROvg%&X$9QWhhy~o`kex4aNQptJZFtLztVY!7_!BB}Oi6e@tQNBOz zvch?bvs$XK#y$B9Ls@NQnd>wM5yv8yAVPqQ3W_MfLX=jG6cb6>k9qj}9luB}nOsFM zax9<>6_Voz|AXJ%nz@N_Hz^bY+Foq?V;E@P1?pAX{yw(t`Uwzt2ClTGzgz=mK1r`O zwa5|By$xJkH#K<=xZDByo^;8O94SE4pUVO7XY@@Opyw9oTyuMC?BnzSNKsdb8{ps& z7|B!iy2raaT6_EVOryUa#c*=S+P_|M00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru<^=%)AsLtD(`Ntx02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00L1-L_t(|+U=OVPQx%1g-?(dBtW!lL5PYWEIbG!Lr271 zCd7)=rEA322Vmp@`XHScDk6kf3!(!Hk{Q6kb@S6Uc5PMX+X8`_5BuDE4G=;IA%qY@ z2qA2p_MXGtc{ndu#oC5yEcx zc>Tot<2L}H(Gj^~0A%lMR7RK*)K-sCTt;114eug!3G3(=ir8XL8HkAE+h%1~xshS1 z2cfDAf8i;89u04OgsKi^sZ5iJm#pyCVwcJAA;kNvQ6@td;<}6mF@09aD3W7SND%iC zri?{|n2nfs5#7uG(l>ZmeNlB}*w`JSu7v*0E&$-}ep-3?vPhRX^NiVi&_&svJA@4h zG=_tvze#yW;MCinP~6 zyaTBp4coU(X)?)>vptWEFk@2Ub5b>*#&H00000 LNkvXXu0mjf&>`_Y diff --git a/dev-assets/doodads/snake/snake.js b/dev-assets/doodads/snake/snake.js deleted file mode 100644 index 952f742..0000000 --- a/dev-assets/doodads/snake/snake.js +++ /dev/null @@ -1,131 +0,0 @@ -// Snake - -/* -A.I. Behaviors: - -- Always turns to face the nearest player character -- Jumps up when the player tries to jump over them, - aiming to attack the player. -*/ - -let direction = "left", - jumpSpeed = 12, - watchRadius = 300, // player nearby distance for snake to jump - jumpCooldownStart = time.Now(), - size = Self.Size(); - -const states = { - idle: 0, - attacking: 1, -}; -let state = states.idle; - -function main() { - Self.SetMobile(true); - Self.SetGravity(true); - Self.SetHitbox(20, 0, 28, 58); - Self.AddAnimation("idle-left", 100, ["left-1", "left-2", "left-3", "left-2"]); - Self.AddAnimation("idle-right", 100, ["right-1", "right-2", "right-3", "right-2"]); - Self.AddAnimation("attack-left", 100, ["attack-left-1", "attack-left-2", "attack-left-3"]) - Self.AddAnimation("attack-right", 100, ["attack-right-1", "attack-right-2", "attack-right-3"]) - - // Player Character controls? - if (Self.IsPlayer()) { - return player(); - } - - Events.OnCollide((e) => { - // The snake is deadly to the touch. - if (e.Settled && e.Actor.IsPlayer() && e.InHitbox) { - // Friendly to fellow snakes. - if (e.Actor.Doodad().Filename.indexOf("snake") > -1) { - return; - } - - FailLevel("Watch out for snakes!"); - return; - } - }); - - setInterval(() => { - // Find the player. - let player = Actors.FindPlayer(), - playerPoint = player.Position(), - point = Self.Position(), - delta = 0, - nearby = false; - - // Face the player. - if (playerPoint.X < point.X + (size.W / 2)) { - direction = "left"; - delta = Math.abs(playerPoint.X - (point.X + (size.W/2))); - } - else if (playerPoint.X > point.X + (size.W / 2)) { - direction = "right"; - delta = Math.abs(playerPoint.X - (point.X + (size.W/2))); - } - - if (delta < watchRadius) { - nearby = true; - } - - // If we are idle and the player is jumping nearby... - if (state == states.idle && nearby && Self.Grounded()) { - if (playerPoint.Y - point.Y+(size.H/2) < 20) { - // Enter attack state. - if (time.Since(jumpCooldownStart) > 500 * time.Millisecond) { - state = states.attacking; - Self.SetVelocity(Vector(0, -jumpSpeed)); - Self.StopAnimation(); - Self.PlayAnimation("attack-"+direction, null); - return; - } - } - } - - // If we are attacking and gravity has claimed us back. - if (state === states.attacking && Self.Grounded()) { - state = states.idle; - jumpCooldownStart = time.Now(); - Self.StopAnimation(); - } - - // Ensure that the animations are always rolling. - if (state === states.idle && !Self.IsAnimating()) { - Self.PlayAnimation("idle-"+direction, null); - } - }, 100); -} - -// If under control of the player character. -function player() { - let jumping = false; - - Events.OnKeypress((ev) => { - Vx = 0; - Vy = 0; - - if (ev.Right) { - direction = "right"; - } else if (ev.Left) { - direction = "left"; - } - - // Jump! - if (ev.Up && !jumping) { - Self.StopAnimation(); - Self.PlayAnimation("attack-"+direction, null); - jumping = true; - return; - } - - if (jumping && Self.Grounded()) { - Self.StopAnimation(); - jumping = false; - } - - if (!jumping && !Self.IsAnimating()) { - Self.PlayAnimation("idle-"+direction, null); - } - }); -} diff --git a/dev-assets/doodads/switches/Makefile b/dev-assets/doodads/switches/Makefile deleted file mode 100644 index b603c1f..0000000 --- a/dev-assets/doodads/switches/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -ALL: build - -.PHONY: build -build: - doodad convert -t "Switch" switch-off.png switch-on.png switch.doodad - doodad convert -t "Floor Switch" down-off.png down-on.png switch-down.doodad - doodad convert -t "Left Switch" left-off.png left-on.png switch-left.doodad - doodad convert -t "Right Switch" right-off.png right-on.png switch-right.doodad - - doodad install-script switch.js switch.doodad - doodad install-script switch.js switch-down.doodad - doodad install-script switch.js switch-left.doodad - doodad install-script switch.js switch-right.doodad - - # Tag the category for these doodads - for i in *.doodad; do\ - doodad edit-doodad --tag "category=gizmos" $${i};\ - done - - cp *.doodad ../../../assets/doodads/ \ No newline at end of file diff --git a/dev-assets/doodads/switches/down-off.png b/dev-assets/doodads/switches/down-off.png deleted file mode 100644 index 2b08ca01119caaae2027d970bb24ae49a1c08094..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 678 zcmV;X0$KfuP)EX>4Tx04R}tkv&MmKpe$iQ?()$2P=p=WN4i%h>AFB6^c-y)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfadlF3krMxx6k5c1aNLh~_a1le0HI!Hs@X9PsG4P@ z;xRFkT@?eb2%rlCh+tS^raqTUCg3@~?&0I>U6f~epZjz4Dmjw@K9P8q>4rtTK|H-_ z>74h8L#!w%#OK6g23?T&k?XR{Z=4Gb3p_Jqq*L?6A!4!6#&R38qM;H`5r-93qkJLb zvch?bvs$jQ<~{ifgE?(wnd>x15XT~xkc0>sRg_SMg($5WDJD|1AM@}JIsPQMWO9|j z$gzM5R7j2={11M2Yvv~>+@xR(=zOv5j|dRh1sXNm{yw(t#tGnm2ClT0zfuQgK1r{& zwD1wow+&oew={VVxZD8-pLEHP9LY~p$mfCgGy0}1(0>c`thv24_i_3Fq^YaK4RCM> zj20++-Q(Te?Y;ebrrF;QTx@clua%s}00006VoOIv0RI600RN!9r;`8x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru;|B&6C@&{2vM2xm02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{004eTL_t(o!|jzp4uBvG1P9}f_!E5-uf?kuDi~V{>740y zLI?{%5ClOGY)tc5a%cjzRu_?;L@T8L;31MU0f3w{03y;mZzAC?q6NB%JcYT4j0BmB zjE0zs%mkQ;%nqA~yczslBzg6N#(Ddie?dgl0^6^ywf#%n#1aql0x9n_*U3pNr2qf` M07*qoM6N<$f}Wol`v3p{ diff --git a/dev-assets/doodads/switches/down-on.png b/dev-assets/doodads/switches/down-on.png deleted file mode 100644 index 527b2a00edb260164d719c543b81282f1483b4d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 674 zcmV;T0$u%yP)EX>4Tx04R}tkv&MmKpe$iQ?()$2P=p=WN4i%h>AFB6^c-y)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfadlF3krMxx6k5c1aNLh~_a1le0HI!Hs@X9PsG4P@ z;xRFkT@?eb2%rlCh+tS^raqTUCg3@~?&0I>U6f~epZjz4Dmjw@K9P8q>4rtTK|H-_ z>74h8L#!w%#OK6g23?T&k?XR{Z=4Gb3p_Jqq*L?6A!4!6#&R38qM;H`5r-93qkJLb zvch?bvs$jQ<~{ifgE?(wnd>x15XT~xkc0>sRg_SMg($5WDJD|1AM@}JIsPQMWO9|j z$gzM5R7j2={11M2Yvv~>+@xR(=zOv5j|dRh1sXNm{yw(t#tGnm2ClT0zfuQgK1r{& zwD1wow+&oew={VVxZD8-pLEHP9LY~p$mfCgGy0}1(0>c`thv24_i_3Fq^YaK4RCM> zj20++-Q(Te?Y;ebrrF;QTx@clua%s}00006VoOIv0RI600RN!9r;`8x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru;|B&6DH3K~&v*a;02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{004SPL_t(o!|l~U4ge7lMA0I1R?ftooXM=rPDXTfSkzw% z@rVSVlu}A5HLb5qik^T{$`T|x1CUbsg#=GPYwa7XwNCd7rvYrl7J!M^2Cxt&00UtL zSP>L}1wjMsBB+3|sN--C0F0BJDCg|@f$_gv&;75si7OuF3t1db*JnOlY5)KL07*qo IM6N<$g3E~+AOHXW diff --git a/dev-assets/doodads/switches/left-off.png b/dev-assets/doodads/switches/left-off.png deleted file mode 100644 index 33accebce394ec550b9d0ace9d95e9626485f569..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 702 zcmV;v0zv(WP)EX>4Tx04R}tkv&MmKpe$iQ?()$2P=p=WN4i%h>AFB6^c-y)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfadlF3krMxx6k5c1aNLh~_a1le0HI!Hs@X9PsG4P@ z;xRFkT@?eb2%rlCh+tS^raqTUCg3@~?&0I>U6f~epZjz4Dmjw@K9P8q>4rtTK|H-_ z>74h8L#!w%#OK6g23?T&k?XR{Z=4Gb3p_Jqq*L?6A!4!6#&R38qM;H`5r-93qkJLb zvch?bvs$jQ<~{ifgE?(wnd>x15XT~xkc0>sRg_SMg($5WDJD|1AM@}JIsPQMWO9|j z$gzM5R7j2={11M2Yvv~>+@xR(=zOv5j|dRh1sXNm{yw(t#tGnm2ClT0zfuQgK1r{& zwD1wow+&oew={VVxZD8-pLEHP9LY~p$mfCgGy0}1(0>c`thv24_i_3Fq^YaK4RCM> zj20++-Q(Te?Y;ebrrF;QTx@clua%s}00006VoOIv0RI600RN!9r;`8x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru;|B&6DlCieSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{005RrL_t(o!|m8h3cw%?1kj0>^-S?jp2=>c2(^A%97{>A%25M+Yz~&rtRfmL2eN-MjE7<2^OTg zI~b5#LY&WYirQ81}4%Bo|*#%1FV*mgE07*qoM6N<$f)rCD>Hq)$ diff --git a/dev-assets/doodads/switches/left-on.png b/dev-assets/doodads/switches/left-on.png deleted file mode 100644 index 36d5c45d3f28fc5c43108895285f6c5f075f7599..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 696 zcmV;p0!RIcP)EX>4Tx04R}tkv&MmKpe$iQ?()$2P=p=WN4i%h>AFB6^c-y)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfadlF3krMxx6k5c1aNLh~_a1le0HI!Hs@X9PsG4P@ z;xRFkT@?eb2%rlCh+tS^raqTUCg3@~?&0I>U6f~epZjz4Dmjw@K9P8q>4rtTK|H-_ z>74h8L#!w%#OK6g23?T&k?XR{Z=4Gb3p_Jqq*L?6A!4!6#&R38qM;H`5r-93qkJLb zvch?bvs$jQ<~{ifgE?(wnd>x15XT~xkc0>sRg_SMg($5WDJD|1AM@}JIsPQMWO9|j z$gzM5R7j2={11M2Yvv~>+@xR(=zOv5j|dRh1sXNm{yw(t#tGnm2ClT0zfuQgK1r{& zwD1wow+&oew={VVxZD8-pLEHP9LY~p$mfCgGy0}1(0>c`thv24_i_3Fq^YaK4RCM> zj20++-Q(Te?Y;ebrrF;QTx@clua%s}00006VoOIv0RI600RN!9r;`8x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru;|B&6DjC|MMKb^Z02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{0059lL_t(o!|mA73Bxc9MbT@maWdIGyJ>U)0000EX>4Tx04R}tkv&MmKpe$iQ?()$2P=p=WN4i%h>AFB6^c-y)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfadlF3krMxx6k5c1aNLh~_a1le0HI!Hs@X9PsG4P@ z;xRFkT@?eb2%rlCh+tS^raqTUCg3@~?&0I>U6f~epZjz4Dmjw@K9P8q>4rtTK|H-_ z>74h8L#!w%#OK6g23?T&k?XR{Z=4Gb3p_Jqq*L?6A!4!6#&R38qM;H`5r-93qkJLb zvch?bvs$jQ<~{ifgE?(wnd>x15XT~xkc0>sRg_SMg($5WDJD|1AM@}JIsPQMWO9|j z$gzM5R7j2={11M2Yvv~>+@xR(=zOv5j|dRh1sXNm{yw(t#tGnm2ClT0zfuQgK1r{& zwD1wow+&oew={VVxZD8-pLEHP9LY~p$mfCgGy0}1(0>c`thv24_i_3Fq^YaK4RCM> zj20++-Q(Te?Y;ebrrF;QTx@clua%s}00006VoOIv0RI600RN!9r;`8x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru;|B&6Dh5}oNX7sF02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{0056kL_t(o!|m2l3cw%;24LM~JCoh1Gr5Atzn26fFlql01{yapb#zq0^tTA5L`-e0Z`w;Py1N_$iieR0NtW&4b08T dokHYxbpwNlP}l1=S?mA+002ovPDHLkV1l4T9+Ln7 diff --git a/dev-assets/doodads/switches/right-on.png b/dev-assets/doodads/switches/right-on.png deleted file mode 100644 index c5a196edf6077eace0e972599517ee7b5b0984cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 702 zcmV;v0zv(WP)EX>4Tx04R}tkv&MmKpe$iQ?()$2P=p=WN4i%h>AFB6^c-y)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfadlF3krMxx6k5c1aNLh~_a1le0HI!Hs@X9PsG4P@ z;xRFkT@?eb2%rlCh+tS^raqTUCg3@~?&0I>U6f~epZjz4Dmjw@K9P8q>4rtTK|H-_ z>74h8L#!w%#OK6g23?T&k?XR{Z=4Gb3p_Jqq*L?6A!4!6#&R38qM;H`5r-93qkJLb zvch?bvs$jQ<~{ifgE?(wnd>x15XT~xkc0>sRg_SMg($5WDJD|1AM@}JIsPQMWO9|j z$gzM5R7j2={11M2Yvv~>+@xR(=zOv5j|dRh1sXNm{yw(t#tGnm2ClT0zfuQgK1r{& zwD1wow+&oew={VVxZD8-pLEHP9LY~p$mfCgGy0}1(0>c`thv24_i_3Fq^YaK4RCM> zj20++-Q(Te?Y;ebrrF;QTx@clua%s}00006VoOIv0RI600RN!9r;`8x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru;|B&6DJ-Wv($fF{02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{005RrL_t(o!|m9+4Zt7_1kfWZu@lU6(>hH=g%GlhNns=! zS5JI=h=SN5v*Hts07;Mpfbz|F#4lDN5m5-ajgZ!w8uB;-poLfwLK3ysQP4oFh|+rp z029PxJIoNTgK2_zUQso~yIH9qCpzW|656(>kQ>>t4LKcPTabtp9gy2mzJx@+CrZAo k5|M~RB;r^rjr^Z@0SVAD*A>LBApigX07*qoM6N<$g0Yb$1poj5 diff --git a/dev-assets/doodads/switches/switch-off.png b/dev-assets/doodads/switches/switch-off.png deleted file mode 100644 index 4e7c006f6bf976cc9edc593b478758e238607d93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 687 zcmV;g0#N;lP)EX>4Tx04R}tkv&MmKpe$iQ?()$2P=p=WN4i%h>AFB6^c-y)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfadlF3krMxx6k5c1aNLh~_a1le0HI!Hs@X9PsG4P@ z;xRFkT@?eb2%rlCh+tS^raqTUCg3@~?&0I>U6f~epZjz4Dmjw@K9P8q>4rtTK|H-_ z>74h8L#!w%#OK6g23?T&k?XR{Z=4Gb3p_Jqq*L?6A!4!6#&R38qM;H`5r-93qkJLb zvch?bvs$jQ<~{ifgE?(wnd>x15XT~xkc0>sRg_SMg($5WDJD|1AM@}JIsPQMWO9|j z$gzM5R7j2={11M2Yvv~>+@xR(=zOv5j|dRh1sXNm{yw(t#tGnm2ClT0zfuQgK1r{& zwD1wow+&oew={VVxZD8-pLEHP9LY~p$mfCgGy0}1(0>c`thv24_i_3Fq^YaK4RCM> zj20++-Q(Te?Y;ebrrF;QTx@clua%s}00006VoOIv0RI600RN!9r;`8x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru;|B&6Co;pZ!ae{102y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{004(cL_t(Y$L*Iv3IHJpMRn+`b*8+mvzZ`TSc*|F{#AnY z>PKY=6Xl#43?d=~tE|vZd;)5NJ3&SG1BVpg0AC4a^Cb~h2ROi6@rTB@-)tpdh9zWqoY`Avv@aoemXW54I$ VMHARk@{9lg002ovPDHLkV1fZDAr=4t diff --git a/dev-assets/doodads/switches/switch-on.png b/dev-assets/doodads/switches/switch-on.png deleted file mode 100644 index bb191ceb34088939814073122478456f4fe8a97c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 699 zcmV;s0!00ZP)EX>4Tx04R}tkv&MmKpe$iQ?()$2P=p=WN4i%h>AFB6^c-y)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfadlF3krMxx6k5c1aNLh~_a1le0HI!Hs@X9PsG4P@ z;xRFkT@?eb2%rlCh+tS^raqTUCg3@~?&0I>U6f~epZjz4Dmjw@K9P8q>4rtTK|H-_ z>74h8L#!w%#OK6g23?T&k?XR{Z=4Gb3p_Jqq*L?6A!4!6#&R38qM;H`5r-93qkJLb zvch?bvs$jQ<~{ifgE?(wnd>x15XT~xkc0>sRg_SMg($5WDJD|1AM@}JIsPQMWO9|j z$gzM5R7j2={11M2Yvv~>+@xR(=zOv5j|dRh1sXNm{yw(t#tGnm2ClT0zfuQgK1r{& zwD1wow+&oew={VVxZD8-pLEHP9LY~p$mfCgGy0}1(0>c`thv24_i_3Fq^YaK4RCM> zj20++-Q(Te?Y;ebrrF;QTx@clua%s}00006VoOIv0RI600RN!9r;`8x010qNS#tmY zE+YT{E+YYWr9XB6000McNliru;|B&6Cm!)=uH66t02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{005IoL_t(Y$L*I<4uBvGLp$PG;Y@JZ`lE?4h;Axqvi<>K zZ);!y!HHswgh8bgfmK%MB94IC;73pb { - state = powered; - showState(state); - }); - - Events.OnCollide((e) => { - if (!e.Settled || !e.Actor.IsMobile()) { - return; - } - - if (collide === false) { - Sound.Play("button-down.wav") - state = !state; - - Message.Publish("switch:toggle", state); - Message.Publish("power", state); - showState(state); - - collide = true; - } - }); - - Events.OnLeave((e) => { - collide = false; - }); -} - -// showState shows the on/off frame based on the boolean powered state. -function showState(state) { - if (state) { - Self.ShowLayer(1); - } else { - Self.ShowLayer(0); - } -} diff --git a/dev-assets/doodads/test/index.js b/dev-assets/doodads/test/index.js deleted file mode 100644 index 07ee2f7..0000000 --- a/dev-assets/doodads/test/index.js +++ /dev/null @@ -1,13 +0,0 @@ -// Test Doodad Script -function main() { - console.log("I am actor ID " + Self.ID()); - - // Set our doodad's background color to pink. It will be turned - // red whenever something collides with us. - Self.Canvas.SetBackground(RGBA(255, 153, 255, 153)); - - Events.OnCollide( function(e) { - console.log("Collided with something!"); - Self.Canvas.SetBackground(RGBA(255, 0, 0, 153)); - }); -} diff --git a/dev-assets/doodads/thief/Makefile b/dev-assets/doodads/thief/Makefile deleted file mode 100644 index 1d7a149..0000000 --- a/dev-assets/doodads/thief/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -SHELL = /bin/bash - -ALL: build - -.PHONY: build -build: - doodad convert -t "Thief" stand-right.png stand-left.png \ - walk-right-{1,2,3}.png walk-left-{1,2,3}.png \ - thief.doodad - doodad install-script thief.js thief.doodad - - doodad edit-doodad --tag "category=creatures" thief.doodad - - cp *.doodad ../../../assets/doodads/ diff --git a/dev-assets/doodads/thief/stand-left.png b/dev-assets/doodads/thief/stand-left.png deleted file mode 100644 index 9dc96b5e86033717e44e7963b530e44fc0797b25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1523 zcmVEX>4Tx04R}tkv&MmKpe$i(`r>J4t5Z62w0sgh>AFB6^c-y)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HI!Hsu>suRLwF{ z@tBy&u8P4|bRz%(ofwvwsm~>o33!gLd-(Wz7v)*r=l&eMO3q|}Pb8jYx?vG-5KnJf zI_G`jFe^$5@j3CBK^G)`C`-Nm{=^dvE0V2XsE zax9<%6_Voz|AXJ%n)%5IHz^bYI$mu1V+0890*#t&e;?a+;{@eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00YZOL_t(o!|j+)NEA^V$G@{I9+RP*F4DmgGFw8#U{4i9 zc-STAu(xPW5`sYxc@R1X-2x9ngpdeb!b2c>h%Tm=A!S&W*&T&oPf|Em!$w_%d>!)l zd^^6GeQzA~(hruMc{6W5zkl=I?>E4IIYk*69AU<3f$7*d4fx>TAOOH|9Ar=0YJ!tw zPugmdMxy}$$eaco0D>UEj5A|olO&Fc%s4Yf6r8MY8-g%Y_ApT#$Km&kKn@Q}wjJCw zP4x8iC|NB6qu`?Tk*}c$4}w6+dKDo!#Xr^qrfFjJ_bSjq{zYnv#Cjl~&-1ujmc_?? z-vk8#lO9%)qf@Q$4 zCw$*e6b@3H!jOpr&{&iw+zwaU6Vkmv1cem|Ul)}Lk0+5V0NA!|h`A63mj*gpCe2q4 zlyrR;aMWJU@FD~NS%S-A9tK~#dS(B}ktJb_@DcO`tvN-E? z_JOeVu^xE*^1UHiU9EZirwfjPD>Wu!E`;-;TJx~+=>jicWV>DzSgSLd8XcBa!~~aB z#Hr>$6bJy$3@zYBz7H$*2LE4tbd%9J0Eou`P<-&w(C!V#Z;!J-m*zMGKnqwDx-OF! zueJ^C5CFiFhv%6LBw85-IdTX9;OF{XtYG1g*&9J3jk1GTjt$#Dj_J{`+@m)(bq-z zvE{&*?XLiU{>$;jNqub@V{?^smg2FwiZNZr{#M)#tII-t(}UIZuY2k`dkz4wwRH!; zhjczr$fVF+WCR5Oe@AFqyDY9qebd9z)}oPW2nyXrMsDBv{*8|lsDL69y^-hxg^u_; zzP6PovJ_K-7P^ZpRRxx|7LEF*hjwnJ@aQU`>Pi+fj~(UNDmSst&V%m+&1O?JujQVY z`?N!F=)qBj>;qFxLRGj_iT$}OsRFui=^Pa$GAa*hHk)YU;z)(tDPbsNym%jrn8%VP Z{9lop0;)ccV&nh-002ovPDHLkV1n@Sv~mCd diff --git a/dev-assets/doodads/thief/stand-right.png b/dev-assets/doodads/thief/stand-right.png deleted file mode 100644 index 96b5f135ba4ec560909e6f7ebf5133de465d62dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1536 zcmV+b2LJhqP)EX>4Tx04R}tkv&MmKpe$i(`r>J4t5Z62w0sgh>AFB6^c-y)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HI!Hsu>suRLwF{ z@tBy&u8P4|bRz%(ofwvwsm~>o33!gLd-(Wz7v)*r=l&eMO3q|}Pb8jYx?vG-5KnJf zI_G`jFe^$5@j3CBK^G)`C`-Nm{=^dvE0V2XsE zax9<%6_Voz|AXJ%n)%5IHz^bYI$mu1V+0890*#t&e;?a+;{@eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00Y=bL_t(o!{t~pNE|^FeRDZXBgmp&8cAUga_S+nB(jZ3 znpBFALTm&JM{|o&0wxBQgH;GSp0;X+}>n4x`0A1Ii>-vqTk>~&D zx{d{$lejK5asc2sPJqO9s*y8olX#xj_Taim5V{gHO+$Zwe_IFJwqe>PNlHf5g|P%E z30>FQ?qz1%wlbLj0RU1GY0PmPQ1{A65Pn0-k_1&j)3itu`K*JA0@pff=MBGsacvx7 zfgVsG3l(hJX269)fwjA?%kC}9B3GioMr{M=_yyeRx5Q+!hs|6x*LB-mlM{Epv_21;IRz0(@rq;;17QQp+#vqXiyMdP3gD%u zgH4Zi1^Se$ZYU8NfQDiCdD#vYMM4Cpz$3$h0D!&y!vLXj)eVga%d&`cAD|{Xps4Rf z@G#rkKSa6O3f&9xD*JhqTSkTlv9xKST(tlIE3*cBwzO$6lDzC~35n{#BAflntbz6Q zby%+~2D-Fqu{KfmR0JpqP18{NQd4~QNofB#@V1R;>-}Q}uxr)v$S4NxcdZW>*E+kNR;Ez@eD`v70dFs#-;w73l#obr z*Q&GUyH*{yzRqFw(<(_tAj)`hqB8`++l^16dBtnpfhqG6ldyCJMx* zYR9={44l1YSH7G}y$^&HsxqUX^qQ(XPjVQAWx$uItW%u@{P%=RzmTXHt@XsTEiI{7 z1x(u{RCX~davX>KGTVrfY{OA`gXeiDl`2@=sFF-#pj4`0X1)_M^PMP_DoSNsao`@- z=0^QYV*mh#9zFrEgIeu@l*IJ2U)cuX;zpIM0sc9-+yw_mG#9viHLKv@%MJjb(Rj+* znm>P>S3OM^h28?(ri=RVH%2_O!w3K-`X>FM`-2SFZE~e|FISW{U2HeDNahOgv*tl2 z`X*Vh^>+85x4Q=b{5TSsWyRZ#EyAmDC1(LIe`cR*)B0X!7t-V4=ujyJk_4fzFovIW zd{qK|S6A@kL#x#adq2=m(&zF)s4_4BT#)fEOCa&Al90$Hm0o35Nl4_9fUA;dwOUlE m*mp>ZsE>Nz7ux-}cm4tl%O1&})9h9N0000 { - let victim = e.Actor; - if (!e.Settled) { - return; - } - - // Thieves don't steal from Thieves (unless controlled by the player). - if (!Self.IsPlayer() && victim.Drawing.Doodad.Filename === "thief.doodad") { - return; - } - - // Steal inventory - let stolen = 0; - if (victim.HasInventory()) { - let myInventory = Self.Inventory(), - theirInventory = victim.Inventory(); - - for (let key in theirInventory) { - if (!theirInventory.hasOwnProperty(key)) { - continue; - } - - let value = theirInventory[key]; - if (value > 0 || myInventory[key] === undefined) { - victim.RemoveItem(key, value); - Self.AddItem(key, value); - stolen += (value === 0 ? 1 : value); - } - } - - // If the player lost their items, notify them. - if (victim.IsPlayer() && stolen > 0) { - Flash("Watch out for thieves! %d item%s stolen!", parseInt(stolen), stolen === 1 ? ' was' : 's were'); - } - - // If the Thief IS the player, notify your earnings. - if (Self.IsPlayer() && stolen > 0) { - Flash("Awesome! Stole %d item%s from the %s!", parseInt(stolen), stolen === 1 ? '' : 's', e.Actor.Drawing.Doodad.Title); - } - } - }); -} - -// Enemy Doodad AI: walks back and forth, changing direction -// when it encounters and obstacle. -function ai() { - // Walks back and forth. - let Vx = Vy = 0.0, - playerSpeed = 4, - direction = "right", - lastDirection = "right", - lastSampledX = 0, - sampleTick = 0, - sampleRate = 2; - - setInterval(() => { - if (sampleTick % sampleRate === 0) { - let curX = Self.Position().X, - delta = Math.abs(curX - lastSampledX); - if (delta < 5) { - direction = direction === "right" ? "left" : "right"; - } - lastSampledX = curX; - } - sampleTick++; - - Vx = parseFloat(playerSpeed * (direction === "left" ? -1 : 1)); - Self.SetVelocity(Vector(Vx, Vy)); - - // If we changed directions, stop animating now so we can - // turn around quickly without moonwalking. - if (direction !== lastDirection) { - Self.StopAnimation(); - } - - if (!Self.IsAnimating()) { - Self.PlayAnimation("walk-" + direction, null); - } - - lastDirection = direction; - }, 100); -} - -// If under control of the player character. -function playable() { - Events.OnKeypress((ev) => { - if (ev.Right) { - if (!Self.IsAnimating()) { - Self.PlayAnimation("walk-right", null); - } - } else if (ev.Left) { - if (!Self.IsAnimating()) { - Self.PlayAnimation("walk-left", null); - } - } else { - Self.StopAnimation(); - animating = false; - } - }) -} diff --git a/dev-assets/doodads/thief/walk-left-1.png b/dev-assets/doodads/thief/walk-left-1.png deleted file mode 100644 index 5e0e16d4324895a1562026a557a4458075fb8ede..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1502 zcmV<41tI#0P)EX>4Tx04R}tkv&MmKpe$i(`r>J4t5Z62w0sgh>AFB6^c-y)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HI!Hsu>suRLwF{ z@tBy&u8P4|bRz%(ofwvwsm~>o33!gLd-(Wz7v)*r=l&eMO3q|}Pb8jYx?vG-5KnJf zI_G`jFe^$5@j3CBK^G)`C`-Nm{=^dvE0V2XsE zax9<%6_Voz|AXJ%n)%5IHz^bYI$mu1V+0890*#t&e;?a+;{@eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00Xv3L_t(o!|j+qNE=Zc$G;bXW5c1jF47@Xu-Z^Uu#l-O zbZ}6*xs_&;B3LMtItU$vZUqOSlt4vrDQ==e$10Sglp}--adQ&IOG~h{i&U>e^1Hme zymxu`a+;+-ICA&yT|U2m_ulV!z<(K_%;)EQV^Cl^HwFRE=kovn$8nInZmS7SlDuxK zNe&MW0RV|XzyYAqXrSbjjHFKDs7T2v88SFo-!lX}RP<-8IF1v{nTHt8OR^W-G)-hO z86~S(pbXAhFMSPJc%#u!vR*|9PVo=*fN7f8|FaJak$(}JBB35A6beDyEz1hVJ*K^^zE{fS=EFMS@+_Eg8#r!y%@ll2HsUrjgXTc&M?+MTI zw8BA(Qy3Cq02-5d!X0uWdqTJuupnL${ywV=KdvK50I+S_U~_>7&*f4b4{ep(O1hp4 zIBKsazX$<9lHj74^Wb}TCt7E4FxC^i zWY4oOO*0Zav?yI&nD!|LD%F}a9{}Lf$KNnbQ)wk+;~%Lct5j=OQnD$PWMS4v*#~&* zLp|{F{bz%BtLM^vy3uGE;YxxnW`rCP(mw_8C0Bii+3;7Fa(>cX_JA||+~B91i& zWFP>zF|~~cg*(`@4}#yF7Y}{91_1UP0A`nF!2x}ZTDSNA~P@#>yd9wb%ZGHVH*9v;#5L?SAD_h`q^ z&G^W>p$IOUH#t6mnbBE4w(M;E8GrENOODtUB0rUCf224&I}<(AF(+hR{}oXS#9L^z zfbr)5V@)q5BF|A-h(zuO?`}~D;>ZC%WUeo{*4pU)0n!aR2-cL3GXMYp07*qoM6N<$ Ef+3)png9R* diff --git a/dev-assets/doodads/thief/walk-left-2.png b/dev-assets/doodads/thief/walk-left-2.png deleted file mode 100644 index 402e8d0c8fe7363ff15d50903252623d6a2405cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1463 zcmV;o1xWgdP)EX>4Tx04R}tkv&MmKpe$i(`r>J4t5Z62w0sgh>AFB6^c-y)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HI!Hsu>suRLwF{ z@tBy&u8P4|bRz%(ofwvwsm~>o33!gLd-(Wz7v)*r=l&eMO3q|}Pb8jYx?vG-5KnJf zI_G`jFe^$5@j3CBK^G)`C`-Nm{=^dvE0V2XsE zax9<%6_Voz|AXJ%n)%5IHz^bYI$mu1V+0890*#t&e;?a+;{@eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00WOnL_t(o!|j+)NEA^V$G;DX!oJe^Jh09@BaqS;;(oGj67 zugSKzw*dfct$+hSwOU2a%~^>kg`;CRH)n;x$@_n%K!&P*Of=VZ`FF;lhRc@t7o0JM zuC6XEuSH-OT=YKlHWcC2YE{d79V0m9zitE=V_5sW2DDRr5u1>@5y)gRJnyz`^L5|% z0RXAPR3s59?`tAJU=b>UY2EWZc%Fx`)L1MLXd}37+e(k+b+O`2jq0f;1q2ttDxe$* z-}fV>gM?EW+UfylEi4jVyJs8;<+DHp$wK7oq8NESiX{NRaU4sm1sOcrpRD<(g^g2@ zp6>y!-t8%GLI98;xGLu|_~wn?lcN$BqANlLS8hb2*QY?75t1*IFxsEw(a;5l?gL~L zk6s1YLBXr@~4GF=- zNXV8tOo1_G1h3na&P)skR0H`!DYPB{;KTc0V2o+)gkt`UTC#kh)R2};edK?CmRbA5CNDE6{z8 z0*pMIl8}bX1-cV1gHexVNtB!gXD(elXS| zBoT2Gp|*gha~oE1eFXqeTwmcWIAaWz{k`Vg1)n~50$4fuETONbw|NmDE0^!pfGhiZ z@GE|#0yGjZ(wPnHj^ok2xOM7%$EC}y+lnayO%+ht-$P$dFN$07OiJ1Umdi_)U-4_a zrcb-W#z<#2h$6tWaDteB&-`JOOdh`vI5;@q$8_H42n1npNrcr10YRhE`WGK7??OP% Rvzq__002ovPDHLkV1lOJm{$M* diff --git a/dev-assets/doodads/thief/walk-left-3.png b/dev-assets/doodads/thief/walk-left-3.png deleted file mode 100644 index 352a45c13f77a4a2335a8cb01757644db58f7c15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1533 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 diff --git a/dev-assets/doodads/thief/walk-right-2.png b/dev-assets/doodads/thief/walk-right-2.png deleted file mode 100644 index 2e33928b43764bd3cc0a09ab523a3e266768277f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1480 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 VMsEM#l2ZTx002ovPDHLkV1m7duOR>c diff --git a/dev-assets/doodads/trapdoors/Makefile b/dev-assets/doodads/trapdoors/Makefile deleted file mode 100644 index 596c1b2..0000000 --- a/dev-assets/doodads/trapdoors/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -SHELL = /bin/bash - -ALL: build - -.PHONY: build -build: - # Build the four basic trapdoors. - doodad convert -t "Trapdoor" down{1,2,3,4}.png trapdoor-down.doodad - doodad convert -t "Trapdoor Left" left{1,2,3,4}.png trapdoor-left.doodad - doodad convert -t "Trapdoor Right" right{1,2,3,4}.png trapdoor-right.doodad - doodad convert -t "Trapdoor Up" up{1,2,3,4}.png trapdoor-up.doodad - doodad install-script trapdoor.js trapdoor-down.doodad - doodad install-script trapdoor.js trapdoor-left.doodad - doodad install-script trapdoor.js trapdoor-right.doodad - doodad install-script trapdoor.js trapdoor-up.doodad - - doodad edit-doodad -q --tag direction=down trapdoor-down.doodad - doodad edit-doodad -q --tag direction=left trapdoor-left.doodad - doodad edit-doodad -q --tag direction=right trapdoor-right.doodad - doodad edit-doodad -q --tag direction=up trapdoor-up.doodad - - # Tag the category for these doodads - ls -hal *.doodad - for i in *.doodad; do\ - echo $${i};\ - doodad edit-doodad -q --tag "category=doors" $${i};\ - done - - # Build the Electric Trapdoor. - doodad convert -t "Electric Trapdoor" electric{1,2,3,4}.png electric-trapdoor.doodad - doodad install-script electric-trapdoor.js electric-trapdoor.doodad - doodad edit-doodad -q --tag "category=doors,gizmos" electric-trapdoor.doodad - - cp *.doodad ../../../assets/doodads/ diff --git a/dev-assets/doodads/trapdoors/README.md b/dev-assets/doodads/trapdoors/README.md deleted file mode 100644 index 02d30b2..0000000 --- a/dev-assets/doodads/trapdoors/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Button Doodads - -```bash -doodad convert -t "Trapdoor Down" down{1,2,3}.png trapdoor-down.doodad -``` diff --git a/dev-assets/doodads/trapdoors/down.gif b/dev-assets/doodads/trapdoors/down.gif deleted file mode 100644 index 07a1fc93140517477b9d6bc51e5a2ff62664120a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9157 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 PD8u0C>gTe~DWM4fwiL1i diff --git a/dev-assets/doodads/trapdoors/down3.png b/dev-assets/doodads/trapdoors/down3.png deleted file mode 100644 index 6c1f19160095773bb430fb5cc181084b9c651a0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1112 zcmeAS@N?(olHy`uVBq!ia0vp^VIa)H3?!FV)Er@8V64t`b`Ho)PG(@xm{>c}*5j~) z%+dJET}q;Y)*TipD;^~{h8zi89niwHFf8Nh!6%pWGcHY7vcrOF9V@%N*lIq#bGxi| za5X((@917Vc~SS2AN!YFP&(H9xNgtx?>nm5IldZQUUR`>!OLwky^b99DGPm53q$74KA~QM6#PpHoqZO-OPSH=X3A4;Eyml(| z+8*`#M2qF?b&Buisx`XmI5u&xhE54+>y=n*r70G)MgIFo{#|vQF_yz?s_b`a@a2CEqi4B`cIb_Lo1B@_dELR^6~5cpb3&zw0^Q<}XyRVOVijf<60S66rX^y&Zq z|L^~!8VOXvSQ6wH%;50sMjD8dd}TctjR6Fz6|RFk{71`!b*)dx@v7 zEBjMsc_wwPKf;sd0)?J=x;Tb-9Dh66kn6AkkLy*Qd26So=(WiJ!(*?*f!!|`NPpqG zTm4Y0ZOhpu?*mRG@g8hzudoqTO5Y zH#_1@`ayXX?~SoNe-t9R{)&|z({=T}7$h@^>E3G12V1!wXNcZj<~!T$_&I4;J|9la zpL%&&^HED`9XhN=+KYj98XJZf7+D#cTNxW^8yHv_7`P`*C`Zwdo1c=IRteW&WD#OyXk}<%Wn>7^ zP`>4FA5eod$Od56v`Wq|s4U7%&nRICC{4=AOjdBo&rQtC+cwcK8mLSOrYt43IJqdZ zpd>Rtj{)RRg{0EVoD$v4JcZ&QcPF28M`569QJCu7#Jtk9#N?9FqSPX=a-Vq4Eq~a*Is;`GJYD@<);T3K0RYyms*eBw diff --git a/dev-assets/doodads/trapdoors/down4.png b/dev-assets/doodads/trapdoors/down4.png deleted file mode 100644 index a15da36a260145be75473fe6845f6a9590321465..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1007 zcmeAS@N?(olHy`uVBq!ia0vp^VIa)H3?!FV)Er@8V64t`b`Ho)PG(@xm{>c}*5j~) z%+dJET}q;Y)*TipD;^~{h8zi89niwHFf8Nh!6%pWGcHY7vcrOF9V@%N*lIq#bGxi| za5X((@917Vc~SS2AN!YFP&(H9xNgtx?>nm5IldZQUUR`>!OLwky^b99DGPm53q$74KA~QM6#PpHoqZO-OPSH=X3A4;Eyml(| z+8*`#M2qF?b&Buisx`XmI5u&xhE54+>y=n*r70G)MgIFo{#|vQF_yz?s_b`a@a2CEqi4B`cIb_Lo1B@_dELR^6~5cpb3&zw0kEiFw`nw^W4QCC-Y`t<4DsXG7v z|F8e#_Xenfu_VYZn8D%MjWiG^$=lt9E91f!P%_{w@Q5sCV9-+rVaAH3_GLgp_7YED zSN5mO@=WSne}pH^1q#)Ax;Tb-9DjSso43J%hvmYf1Ze?>Z^tHzu!k@R6*Mx0JP<1| z@YN`oF)x1BOLv#h)d^Qu^xjGit2NU-fBV|q9LBY=z2R5<@-pI#+tY8C)ub~lzz| z7#LX@n_C$hX&V?=85p=HO(;jvkei>9nN|tcU}OE zj#38pM1wK%ybv!En1KaTxlq%tsQ zOst(~>v7mYqV4`NukH|;9)(8}7FtCLh!$Sa5?Sc9LNuz>VCNV9Stcr)dVNjV2M^9a zx~jQ*^E$qDO$tAlA3b}v=lEWK=I(JMt zxz1~0cuOXqgNsMvHcR!>o-sK z=c4C)EtF zoKb(db(@$i)30rf-LJPTd&fB4`oM$9DU%yo?Fy1 zT)MLQ32#9GM~|3B_1))pAD-LyH~R9c`}{nYit0+mFSP-qg)Pb3-G$*l2rk&Wd@@jk zv%n*=n1O*?7=#%aX3dcR3bL1Y`ns||<=_w#=W0s%_!TH5S>hT|;+&tGo0?a`;9QiN zSdyBeP@Y+mq2TW68xY>eCk~A6R!oWr<*PGom{~Nobck`zo5o`bZeOekdzt-#1 zW~+$Bz3U&Xv6-df?^zcTpY!F&?(Jt*WQxUpchyw&y!8F=J;AcwcMt!$T_|(;du?0d z35!1dsaMK&pVh3qVq0X%xBrdF?D9D7jd@G9<>trPtDmX1`)+w=tIexFX2+e@WS?HW z9CZ$-QTqtk1Vy2I=v1^>bP0l+XkKgPowq diff --git a/dev-assets/doodads/trapdoors/electric2.png b/dev-assets/doodads/trapdoors/electric2.png deleted file mode 100644 index 139d9c8f9fc931bc6c6c39da0b85a6c6da73eb9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1064 zcmeAS@N?(olHy`uVBq!ia0vp^MIg+<1|<9Mw$?H*Ft%hmI|q0=J1Z0v<)>xlq%tsQ zOst(~>v7mYqV4`NukH|;9)(8}7FtCLh!$Sa5?Sc9LNuz>VCNV9Stcr)dVNjV2M^9a zx~jQ*^E$qDO$tAlA3b}v=lEWK=I(JMt zxz1~0cuOXqgNsMvHcR!>o-sK z=c4C)EtF zoKb(db(@$i)30rf-LJPTd&fB4`oM$9DU%yo?Fy1 zT)MLQ32#9GM~|3B_1))pAD-LyH~R9c`}{nYit0+mFSP-qg)Pb3-G$*l2rk&Wd@@jk zv%n*=n1O*?7=#%aX3dcR3bL1Y`ns||<=_w#=WFFOeFGGdEOCt}an8@pP0cG|a4t$s zEJ;mKD9u0?LTWZbX zSvE;COMWh$sy{m|{zB!}$~!DOzo;heOMjJf^0CSFsnNgo@hi3z?2OTAnI{sr?qzyx z^mbwY=-`~2t(RrRti@k3Kb&f+cR1#h^7UW$Z*{$>v8%6Mf9Ie@U!u(M2|--7_n$ZK z_WL*Eit=@hrC&mKua#Q=bYgbRcT1!GWrZ@%*Gm_^-ZiVa%j*69nDsIHcUEnkr<`w> z5wZ22Oo(Rtte{`N{_y+kzrM3^UUuNMl`?-))wewne9o8hbeHP2z8%N>Y_m38U;6cM z*z?eH5mzgZ9NTTVF;(Rm^9(l2+Px-A-`HHa$++js?oY21C6*Znzs+BJE?M_P_4}=M zS5{i{mKHDlnehB7%gvJYre-A%pJ~jTC%l|B!g~3;7n_!?{H%4Z^1DoRsa&D{;wtsI zzt)|rzVWiv@!i(o?-wf1Yrl&-Z*PBPW&7Jbwk1ziTbt^!Ry;X(yV%`sZ?HZ0zFlk1 z-?oW*E^ByV_qyQd!!;kQ{3qD&+_Z-0^R7=XUKEsC{`z}v?ej|Aa$mmK?)xQ=Z+#8` d#y(LXs)k{?OUYb|{;md)dQVqBmvv4FO#n|uEX>4Tx04R}tkv&MmKp2MKrb>%c9E>31kfAzR5EXIMDionYs1;guFuC*(nlvOS zE{=k0!NH%!s)LKOt`4q(Aov5~=H{g6A|-y;6k5c1$8itueecWNcYshYGu`eQ2Xw=+ zQi-^f$*xMFSA=N}KtxDkwmB!uN%)Shdj$A?7vov}b$^atEoU)O(FKVgxvqNr#<|dBfoFUT9?#W*m$r&rlT&FdR1QxLb84^@fQ9>CGVze8i*htZN+{ZuE^vmQ@$yEX) z#{w$Qp)~#AfAG7vc7AfgONzvS?ibhn7y&}NK%?fm-^Z@oI01ssz?ISVSL(pbC+W4e z7Ci#`wtjJ_!g^xpzKYhK@4=Qw=;($uTu4RCM> zj20++-RIrm&c6Ly)9T+34AOFbbr;fx00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru

BC7ZQ;OX`=uD02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00PZPL_t(|+U?w3Zlf>|!0|Cft4e+7VaS=xnVdW2E`8js zw97th$U4Y;80;~S|4*tKHHEY@o?&pRiu_l}v+n+ZGNSTPdyjvM$cOj1_d`U!y^|SY ztRgxe?_RdMLH5VKhJ04#!wgFI!CEUKBG>D6_(D{qj;MT?(82vdJ?~(WSRk28@?qu< zBANS2;#fY6U&8)Dp;8`{H3`k!Qe*N_O`Y*_xe(SJnaW3BRi7gAMQh!S=zLVe`;ov@ zL=wxi*VXxWx>vE*cGlW1a1ZlAoYj&Um5;Z%8&Kz5$A*BKx0%=nHv}sAxBc_(m1^ae ztaI+^Gwn6IM?Rc$(si95dq4grbdCJwJ@IGk749dbBJ=y%C(oG4x_LZV&wNuSB67Rk z2(2r*vEW{xkQ?_ZHKD@O8S`JbFi$(E?FVIB`3%F zYK)EblGggDO6Xf!FxA=@;999ujZ2x>7aC4ewAge>+!EVW6&W*4K_|8`i40D#wAi#Q zHD*%v)oWG^8wB~PacykP))mCWK%2l#cWwgOt57q)ua{41Y2%WO_4|@*d0u& zDO&5~P6RDhKWPd^K)WZ#>?#ZTtA)*eIA6dgnjIr6@&3KDAi> zl3>0X{V6roJdwP$@|Of_wJw^@m{f1sXNc6Tl?hgH zQdPS~zW6?Da6k1Z*GR6Fg<_yOwZ2eQX4{I>P9z)Z0XaKTt?>)^Q=4;6+O|FOzd{SX z^MBNe9GzfaN$yFt$Tjjs_Fz>fRgI~2^1^@O>9yFj&R*+*Cspl=9J}Q>TSaz(TP?Nj zQ=e?Xlw@WWE)HCwB=n5!761SM0000000000000000000000000000000000000000 f000000Mz^iv5k(`f8Ien00000NkvXXu0mjfA+Jc# diff --git a/dev-assets/doodads/trapdoors/electric4.png b/dev-assets/doodads/trapdoors/electric4.png deleted file mode 100644 index 97b9bac24a5e7ce2916ab05df6afb02365ce6b69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 972 zcmeAS@N?(olHy`uVBq!ia0vp^MIg+<1|<9Mw$?H*Ft%hmI|q0=J1Z0v<)>xlq%tsQ zOst(~>v7mYqV4`NukH|;9)(8}7FtCLh!$Sa5?Sc9LNuz>VCNV9Stcr)dVNjV2M^9a zx~jQ*^E$qDO$tAlA3b}v=lEWK=I(JMt zxz1~0cuOXqgNsMvHcR!>o-sK z=c4C)EtF zoKb(db(@$i)30rf-LJPTd&fB4`oM$9DU%yo?Fy1 zT)MLQ32#9GM~|3B_1))pAD-LyH~R9c`}{nYit0+mFSP-qg)Pb3-G$*l2rk&Wd@@jk zv%n*=n1O*?7=#%aX3dcR3bL1Y`ns||<=_w#7k`*ER|hC0S>hT|;+&tGo0?a`;9QiN zSdyBeP@Y+mq2TW68xY>eCk~A6C7v#hAr-gY-np3DY#_oK&~xL&nJ04(`OWP7H$^NX zY4!@!C06dML?-Q$-)FO9MUc~W)Ae!fXR5aZ&OILR(|t$S3VRzKqorFc=Pf&FHgAPm z{|5i6{TiEZq;5O-b!4 zxZ@IUBb?p8?aNY1?)mq-aMG>4>-i>qZu&FTJG-aQ_|X>Ljb-nr%B~d!!qDuiQCq`+ zlq(Q|nIKV7$E>v(Kp3_9+N!OKz%UEM=>kKDP}bU0eb-Lyj*Vii{3vj|aLukgT%R5( zmc@!M%hYPSdEM@K#`;`c#X7mROW!Z1Hpk58Ty5N9=JfE#2Fs-;<@+pu#tSF`V+<>( Z`OOfMbG-G|#7Jq7yr-+5%Q~loCICOJy7T}5 diff --git a/dev-assets/doodads/trapdoors/left1.png b/dev-assets/doodads/trapdoors/left1.png deleted file mode 100644 index 6bb04d206bbe0c3498d5466253b3b0f5c53c1bab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1038 zcmeAS@N?(olHy`uVBq!ia0vp^VIa)H3?!FV)Er@8V64e>b`Ho)PG(@xm{>c}*5j~) zMBDvk)4D=r&L}*Zu+S<}K(z3RmdHY<6{1n420Op-&ytuVBJO^0>w^d9ldc{-8X3+W z?kMnwv9Pc-sAQthes3<_q&<&!w140C{pmYvhm4S!dF8!~yBGXT1$XB!4%fcH!{K?v_{$6sgDrbUAD zh5MsQ93Q!_TWz<$P_I(wgU`iNY0o-blU80in8m(%(^6r7q2s1^7t|;|-+ZjHdvn~{ zjn`~{awoGUS9ZSM(l+4`lbE7&Q)<3|Js$^ea0zJ$F{C#Tm522pZZC0`Pm

F@VQJjb{Dx-d zge5LFvl-vNd-vw{e$%!8{xW>iDJrev+_euF9SX@FLB0$ORcZ_j4J`}|zkoswFBlj~ z4Hy_+B``2p&0t^Yj<$PKtAHHN0*}aI1_nK45N51cYF`EvWH0gbb!C6b zEYGCQ^+$NpT%gcGPZ!4!kK=DI8FD!}@~~XU;mWpeDwQ}GSIoNpf#^4`|G(5eIOh1U z;FEKS90e;9BX}&u7$$mzRB^gV!D%mh%OCn%#339 z>W*BE-nh%Fw{d$Pl8Te9PZHpayA>4ZsX#m7HHtS(KTcQNj>Vnv|27 ztl*NLo0yrmZK7c`P?-`;SxRbga#3bMNoIZ?1IVEYNu`-NCAyh;3dKS0PCn_5!a&uc zFx9zb`Ho)PG(@xm{>c}*5j~) zMBDvk)4D=r&L}*Zu+S<}K(z3RmdHY<6{1n420Op-&ytuVBJO^0>w^d9ldc{-8X3+W z?kMnwv9Pc-sAQthes3<_q&<&!w140C{pmYvhm4S!dF8!~yBGXT1$XB!4%fcH!{K?v_{$6sgDrbUAD zh5MsQ93Q!_TWz<$P_I(wgU`iNY0o-blU80in8m(%(^6r7q2s1^7t|;|-+ZjHdvn~{ zjn`~{awoGUS9ZSM(l+4`lbE7&Q)<3|Js$^ea0zJ$F{C#Tm522pZZC0`Pm

F@VQJjb{Dx-d zge5LFvl-vNd-vw{e$%!8{xW>iDJrev+_euF9SX@FLB0$ORcZ_j4J`}|zkoswFBlj~ z4Hy_+B``2p&0t^Yj<$PKtAHHN0*}aI1_nK45N51cYF`EvWH0gbb!C6b zEYGCQ^+$NpT%gbcPZ!4!kK=EzTJs$;;9*NpXO89cI5Vx9X_j^Y>o>obyt7^>FXr2j z5WOf!>#4j|?M9vFferGW@r#h^?C#VPI zvK-Pdlh*O%76?+i)V}TP8>^+a_pdEE_&dzxv~$N1ZojQkI&L%PoIIuRAvgW*sh^6s z4i@e9@YXduy)kNK&h{4@E?#8zh}HgjBj|eG-)mmE<|}TW*D0O5yEGaoCf0ZO;+qH6 zS9U-B@Hl&G?;i%f)Sq9Xa=Fb{uv%Ljd%dyy{JH8IL2t}AuiV4%dRCR|M-{~>K)*_s zxJHyX=jZ08=9Mrw7o{eaq^2m8XO?6rxO@5rgg5eu0~M))6r}*AtdhYh7>o>z40R2R zb&U-}42-Od&8>`$v<(cb3=G_pCX}OS$jwj5Osj-zFtP|SGPE)@ure})Xei(Ew-2a6 z8e{`7KUyW{7gQEyre~Be1e7M_WF{-P%<38#Px_}~iiQ&Mvn VKw6^{Je`3u44$rjF6*2UngE%7w@Cm1 diff --git a/dev-assets/doodads/trapdoors/left3.png b/dev-assets/doodads/trapdoors/left3.png deleted file mode 100644 index b7cbb41d190893bb1b1ea4a7ae2b6e084a33129a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1079 zcmeAS@N?(olHy`uVBq!ia0vp^VIa)H3?!FV)Er@8V64e>b`Ho)PG(@xm{>c}*5j~) zMBDvk)4D=r&L}*Zu+S<}K(z3RmdHY<6{1n420Op-&ytuVBJO^0>w^d9ldc{-8X3+W z?kMnwv9Pc-sAQthes3<_q&<&!w140C{pmYvhm4S!dF8!~yBGXT1$XB!4%fcH!{K?v_{$6sgDrbUAD zh5MsQ93Q!_TWz<$P_I(wgU`iNY0o-blU80in8m(%(^6r7q2s1^7t|;|-+ZjHdvn~{ zjn`~{awoGUS9ZSM(l+4`lbE7&Q)<3|Js$^ea0zJ$F{C#Tm522pZZC0`Pm

F@VQJjb{Dx-d zge5LFvl-vNd-vw{e$%!8{xW>iDJrev+_euF9SX@FLB0$ORcZ_j4J`}|zkoswFBlj~ z4Hy_+B``2p&0t^7~m7)3Z#J`EiG;4%$d5ny3?mm_qCMfVrA5nX75hb z`TzfawEb^YpbEy4AirP+hi5m^K%69RcNeaV3tvF#fV03OvY3HEPZ@+6E0)@q0R`Dh zJbhi+pEAocsdN1io-`LIbi~ueF~sBe+o^_phYSQ*&g;b_b7j3&y6C*`fcT4*I#1d6 zu$mDdV3)~TvAvoOzIHrKNun|DnpQ`Bprm?rNR@l9V2 z7AF^F7L;V>=P`gBs*qHgnNy;hnWs=3b`Ho)PG(@xm{>c}*5j~) zMBDvk)4D=r&L}*Zu+S<}K(z3RmdHY<6{1n420Op-&ytuVBJO^0>w^d9ldc{-8X3+W z?kMnwv9Pc-sAQthes3<_q&<&!w140C{pmYvhm4S!dF8!~yBGXT1$XB!4%fcH!{K?v_{$6sgDrbUAD zh5MsQ93Q!_TWz<$P_I(wgU`iNY0o-blU80in8m(%(^6r7q2s1^7t|;|-+ZjHdvn~{ zjn`~{awoGUS9ZSM(l+4`lbE7&Q)<3|Js$^ea0zJ$F{C#Tm522pZZC0`Pm

F@VQJjb{Dx-d zge5LFvl-vNd-vw{e$%!8{xW>iDJrev+_euF9SX@FLB0$ORcZ_j4J`}|zkoswFBlj~ z4Hy_+B``2p&0t^7~m7)3Z#J`EiG;4%$d5ny1tgu)2C1GPSxRJWz>{r z|NsAg!|V0H2xed`3GxeOaCmkj4a77N#5JPCIX^cyHLrxhxhOTU zBsE2$JhLQ2!QIn0AiR-J9H>YYq$mX_Wt9w8!C+)yWTb`Ho)PG(@xm{>c}*5j~) zMBDvk)4D=r&L}*Zu+S<}K(z3RmdHY<6{1n420Op-&ytuVBJO^0>w^d9ldc{-8X3+W z?kMnwv9Pc-sAQthes3<_q&<&!w140C{pmYvhm4S!dF8!~yBGXT1$XB!4%fcH!{K?v_{$6sgDrbUAD zh5MsQ93Q!_TWz<$P_I(wgU`iNY0o-blU80in8m(%(^6r7q2s1^7t|;|-+ZjHdvn~{ zjn`~{awoGUS9ZSM(l+4`lbE7&Q)<3|Js$^ea0zJ$F{C#Tm522pZZC0`Pm

F@VQJjb{Dx-d zge5LFvl-vNd-vw{e$%!8{xW>iDJrev+_euF9SX@FLB0$ORcZ_j4J`}|zkoswFBlj~ z4Hy_+B``2p&0t^LKdr;B5V$MLt9&hj2I;9*TztaD)l<2xq7eAciBd`?`_Q@$2n4x8dV zU%Sw8lfPw6)hBNv~ zr4qC5v)9&}I({$s|EA|+?6;eJSGOH_o4un`cptAuMXvIsFUv@$fXGBSi{DBtq852!&JWCJi~ zStaKeR2F5XXOu7mlqTh5CM&q)=O$+6ZJTHq4OFHCQzopr02CgV%>V!Z diff --git a/dev-assets/doodads/trapdoors/right2.png b/dev-assets/doodads/trapdoors/right2.png deleted file mode 100644 index e7f33d4e5da9c412f26b577cbe1065ae1631ff42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1111 zcmeAS@N?(olHy`uVBq!ia0vp^VIa)H3?!FV)Er@8V64e>b`Ho)PG(@xm{>c}*5j~) zMBDvk)4D=r&L}*Zu+S<}K(z3RmdHY<6{1n420Op-&ytuVBJO^0>w^d9ldc{-8X3+W z?kMnwv9Pc-sAQthes3<_q&<&!w140C{pmYvhm4S!dF8!~yBGXT1$XB!4%fcH!{K?v_{$6sgDrbUAD zh5MsQ93Q!_TWz<$P_I(wgU`iNY0o-blU80in8m(%(^6r7q2s1^7t|;|-+ZjHdvn~{ zjn`~{awoGUS9ZSM(l+4`lbE7&Q)<3|Js$^ea0zJ$F{C#Tm522pZZC0`Pm

F@VQJjb{Dx-d zge5LFvl-vNd-vw{e$%!8{xW>iDJrev+_euF9SX@FLB0$ORcZ_j4J`}|zkoswFBlj~ z4Hy_+B``2p&0t^P%|r;B5V$MLt<4EYWj@Gv+m_LwVO=kTjBpuSOm!*tcinJ2y%Uh=rG zbepPx=Bnj<>Zi-*Y-1=B+#tsO`rKxN7m2oOq(59bfBuJKb;;q1w~P}PBbW8;<|plvirGiW8*`TOPP?U+7bt9YDu2_Ze}5)lY*qN*f78c? zap&p!(*IBWK;b4?;u=xnoS&PUnpeW$T$GwvlA5AWo>`Ki;O^-g5Z=fq4pgKHQj`Le zvPuT4U@$T;GSoFN)-^T^F)*?+Hn%c1(l#)#GB9vYnoy3SAvZrIGp!P?!N?-S$k58r zz{}t-#(xQX^;)ToN1MuUrc2 zYH@N=Wo8nRyDuLGDgI>5jrc)uJ%fxruqDX^F`trA4VlVC6pZ iCY%B);Dam3Pf5*T0BMa*@N@>sFnGH9xvXb`Ho)PG(@xm{>c}*5j~) zMBDvk)4D=r&L}*Zu+S<}K(z3RmdHY<6{1n420Op-&ytuVBJO^0>w^d9ldc{-8X3+W z?kMnwv9Pc-sAQthes3<_q&<&!w140C{pmYvhm4S!dF8!~yBGXT1$XB!4%fcH!{K?v_{$6sgDrbUAD zh5MsQ93Q!_TWz<$P_I(wgU`iNY0o-blU80in8m(%(^6r7q2s1^7t|;|-+ZjHdvn~{ zjn`~{awoGUS9ZSM(l+4`lbE7&Q)<3|Js$^ea0zJ$F{C#Tm522pZZC0`Pm

F@VQJjb{Dx-d zge5LFvl-vNd-vw{e$%!8{xW>iDJrev+_euF9SX@FLB0$ORcZ_j4J`}|zkoswFBlj~ z4Hy_+B``2p&0t^7~m7)3Z#Kx=FFLCX=%E;y3?mm_qCMPlxF8*W$aGX z`Tzg_q`nOqKoyK7L4Lsu4$p3+fjCLt?k-#z7rubf0cU|nWHAGSo-znCRxGtI0}8U2 zc>21sKV_C@Qs??3JZUaaXs@S>V~EG`w-X$>4jBlzx-&(V+c;G>zKA)fy(7G(!Tf_t z>z!+!+AC&1B$nv+(n)Q+8nOV3HvwRTkURQ9drL|)QZmDKM#C@Th+XO#+_32{GBcwb4p_h!`irokD{#) zwM#hr=7d-zztCpoc`d3T9WI<6larX;RhX>FlXP3KP2^&51(*LrO`BFj);FONZk+{d z&p-ct+?Mg8Rn@zR!Fz#W$sk$c8d2h$pPQSSSHj?2l$uzQnxasiS(2gP?&%v4-pD5o zRHO=0lme8pN(QT7FfuSQ)HN{HH8u<}FtRc>w=y=;HZZU!M@H$NpatrD)m z$RfnZ(8|!j%E%C+p?u5VKA;9^kPW~rXO)~^P+63jo>9UOP@0sJnXKTFpPQJOw{416IqA=CDiFu`IiOD6U pMX5z#Wc)I$ztaD0e0stfToo)aC diff --git a/dev-assets/doodads/trapdoors/right4.png b/dev-assets/doodads/trapdoors/right4.png deleted file mode 100644 index 8c0d01de9a76bd50ccef56d7e34745364a7b77a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 991 zcmeAS@N?(olHy`uVBq!ia0vp^VIa)H3?!FV)Er@8V64e>b`Ho)PG(@xm{>c}*5j~) zMBDvk)4D=r&L}*Zu+S<}K(z3RmdHY<6{1n420Op-&ytuVBJO^0>w^d9ldc{-8X3+W z?kMnwv9Pc-sAQthes3<_q&<&!w140C{pmYvhm4S!dF8!~yBGXT1$XB!4%fcH!{K?v_{$6sgDrbUAD zh5MsQ93Q!_TWz<$P_I(wgU`iNY0o-blU80in8m(%(^6r7q2s1^7t|;|-+ZjHdvn~{ zjn`~{awoGUS9ZSM(l+4`lbE7&Q)<3|Js$^ea0zJ$F{C#Tm522pZZC0`Pm

F@VQJjb{Dx-d zge5LFvl-vNd-vw{e$%!8{xW>iDJrev+_euF9SX@FLB0$ORcZ_j4J`}|zkoswFBlj~ z4Hy_+B``2p&0t^7~m7)3Z#Kx=FFLCX=%E;y3?mm_qCMnPSw$rX6IsM z{Qv*|ri~@5fhrhFg8YIR9G=}s196hP-CejcE_?x{1I_}E$YKTtJ!KGPtXOJa1{7p3 z@$_|Nf66S+q|Wt6c+y;;P>!dIV~EG`w-+|@HW=`@1TOZtV!?W42CGsYYghuqtR4pA z4WLV0FMhJw4NZ$Nk>pEyvFDo9ZZP|7M9tb)PFz{pV7z*yJVFvP&f%Glh>*ht&J zz{Qch;Ff=hmGVrJg9iH6ZYWlAt*DXGQDMVSR9nfZAPAcra>m1gFY=w{|A6bHFG z`J_7v167N{ROcqFN!D8u0C>gTe~ HDWM4flIwcw diff --git a/dev-assets/doodads/trapdoors/trapdoor.js b/dev-assets/doodads/trapdoors/trapdoor.js deleted file mode 100644 index 9bb6d70..0000000 --- a/dev-assets/doodads/trapdoors/trapdoor.js +++ /dev/null @@ -1,88 +0,0 @@ -// Trapdoors. - -// What direction is the trapdoor facing? -const direction = Self.GetTag("direction"); - -function main() { - // Set our hitbox based on our orientation. - let thickness = 10; - let doodadSize = 86; - if (direction === "left") { - Self.SetHitbox(48, 0, doodadSize, doodadSize); - } else if (direction === "right") { - Self.SetHitbox(0, 0, thickness, doodadSize); - } else if (direction === "up") { - Self.SetHitbox(0, doodadSize - thickness, doodadSize, doodadSize); - } else { // Down, default. - Self.SetHitbox(0, 0, doodadSize, thickness); - } - - let animationSpeed = 100; - let opened = false; - - // Register our animations. - let frames = []; - for (let i = 1; i <= 4; i++) { - frames.push(direction + i); - } - - Self.AddAnimation("open", animationSpeed, frames); - frames.reverse(); - Self.AddAnimation("close", animationSpeed, frames); - - Events.OnCollide((e) => { - if (opened) { - return; - } - - // Is the actor colliding our solid part? - if (e.InHitbox) { - // Are they touching our opening side? - if (direction === "left") { - if (doodadSize - e.Overlap.X < thickness) { - // Touching the right edge, open the door. - opened = true; - Self.PlayAnimation("open", null); - return; - } - if (e.Overlap.W === doodadSize - thickness) { - return false; - } - } else if (direction === "right") { - if (e.Overlap.X > 0) { - return false; - } else if (e.Settled) { - opened = true; - Self.PlayAnimation("open", null); - } - } else if (direction === "up") { - if (doodadSize - e.Overlap.Y < thickness) { - // Touching the bottom edge, open the door. - opened = true; - Self.PlayAnimation("open", null); - return; - } - if (e.Overlap.H === doodadSize - thickness) { - return false; - } - } else if (direction === "down") { - if (e.Overlap.Y > 0) { - return false; - } else if (e.Settled) { - opened = true; - Self.PlayAnimation("open", null); - } - } - - return true; - } - }); - - Events.OnLeave(() => { - if (opened) { - Self.PlayAnimation("close", () => { - opened = false; - }); - } - }) -} diff --git a/dev-assets/doodads/trapdoors/up1.png b/dev-assets/doodads/trapdoors/up1.png deleted file mode 100644 index bc7830c0046b01cca2f82806ea8948c3e03c8dab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^VIa)H3?!FV)Er@8V64e>b`Ho)PG(@xm{>c}*5j~) zMBDvk)4D=r&L}*Zu+S<}K(z3RmdHY<6{1n420Op-&ytuVBJO^0>w^d9ldc{-8X3+W z?kMnwv9Pc-sAQthes3<_q&<&!w140C{pmYvhm4S!dF8!~yBGXT1$XB!4%fcH!{K?v_{$6sgDrbUAD zh5MsQ93Q!_TWz<$P_I(wgU`iNY0o-blU80in8m(%(^6r7q2s1^7t|;|-+ZjHdvn~{ zjn`~{awoGUS9ZSM(l+4`lbE7&Q)<3|Js$^ea0zJ$F{C#Tm522pZZC0`Pm

F@VQJjb{Dx-d zge5LFvl-vNd-vw{e$%!8{xW>iDJrev+_euF9SX@FLB0$ORcZ_j4J`}|zkoswFBlj~ z4Hy_+B``2p&0t^TT$X?><>&pI= zS)NIq>yPlHxj>;=o-U3d9>?Ea+{nvh$kUoQne*LCF@t{218WX3m@Hhj>uX^G!#&ST zzfbW?e~4K2MTUYw=>@;`O-piK+N{2I*5$Uw?PqRZb9cXqXwE2($p5Tc%zY&%=-IVp zx8E}?dwb^i(pjoMt^aJ#vD0BV*r#v2<~#edDEY-oc`c<&(^)FFURV2aF57wAo)cm{ z2lTY}u1)6ES@ia2{x?R)t|pBZ9lt)HDMg~TPx(3F&#)csVMpnk=R>nr!1_o9J2JT4{%271r z=BH$)Rl+qGS%erFS{WKx85u$}lyCV9a)va>24GIIO3p8+EXqvJC}9XFP0GnkR&dGB zP0Y;OHqkH|s7wi_EG4x#xhS)sBr`vc0pw7Hq|(fs65Y%^h2kK0C!cgjVW4VJnCjfb wywbG9b`Ho)PG(@xm{>c}*5j~) zMBDvk)4D=r&L}*Zu+S<}K(z3RmdHY<6{1n420Op-&ytuVBJO^0>w^d9ldc{-8X3+W z?kMnwv9Pc-sAQthes3<_q&<&!w140C{pmYvhm4S!dF8!~yBGXT1$XB!4%fcH!{K?v_{$6sgDrbUAD zh5MsQ93Q!_TWz<$P_I(wgU`iNY0o-blU80in8m(%(^6r7q2s1^7t|;|-+ZjHdvn~{ zjn`~{awoGUS9ZSM(l+4`lbE7&Q)<3|Js$^ea0zJ$F{C#Tm522pZZC0`Pm

F@VQJjb{Dx-d zge5LFvl-vNd-vw{e$%!8{xW>iDJrev+_euF9SX@FLB0$ORcZ_j4J`}|zkoswFBlj~ z4Hy_+B``2p&0t^Yj<$PKtAHHN0*}aI1_nK45N51cYF`EvWH0gbb!C6b zEYGCQ^+$NpT%gcJPZ!4!kK=DI`|>q8@UTAM65qi6?XmZb>{F~AF$a!Th_26P|9Sl4 z#2tz+qc{F=ii=j*6rm&5eKcv~8P_Eg-0l$HsnPpK{O2bBwIbVJxEs8V zXI|QWd*=F`U*`Q!b3fnu{Bij0v#ZJ%tF!+1`tLJe&kN`|$r9Iy66gHf+|;}h2Ir#G z#FEq$h4Rdj3%v5~fc zft7)Qd(wn*6b-rgDVb@Na1BNlAx4H)h6Ywfh7b+qTmJR|HAsVO0A@g|H6Ahz*%9LQrQc{bPi!uvJGV}8oKn_(%D$UF((ap?LC=POW z@=13T2C5c?sm@KzD@{vGE-5WaEdnd|nK$7SPyruYL4HbV4g*MQbb_ZdP=>+N)z4*} HQ$iB}6Wp<{ diff --git a/dev-assets/doodads/trapdoors/up3.png b/dev-assets/doodads/trapdoors/up3.png deleted file mode 100644 index a18640e61cd9153d5e85022656e33ad4a6cb5ff4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1102 zcmeAS@N?(olHy`uVBq!ia0vp^VIa)H3?!FV)Er@8V64e>b`Ho)PG(@xm{>c}*5j~) zMBDvk)4D=r&L}*Zu+S<}K(z3RmdHY<6{1n420Op-&ytuVBJO^0>w^d9ldc{-8X3+W z?kMnwv9Pc-sAQthes3<_q&<&!w140C{pmYvhm4S!dF8!~yBGXT1$XB!4%fcH!{K?v_{$6sgDrbUAD zh5MsQ93Q!_TWz<$P_I(wgU`iNY0o-blU80in8m(%(^6r7q2s1^7t|;|-+ZjHdvn~{ zjn`~{awoGUS9ZSM(l+4`lbE7&Q)<3|Js$^ea0zJ$F{C#Tm522pZZC0`Pm

F@VQJjb{Dx-d zge5LFvl-vNd-vw{e$%!8{xW>iDJrev+_euF9SX@FLB0$ORcZ_j4J`}|zkoswFBlj~ z4Hy_+B``2p&0t^7~m7)3Z#84rMpvgfQ+=Xw3#z!PMfuiPFcLULIR&P$K{0j>DtS zJ^L<4Xlkk0U(jp$`TF?t^WGggV%<;UH{EZ`wUV*>!MDz~f?wQvzi;7Pj=g+(_p&yw zG!R|3$nWU7MHRB&!d=_`1}RQTv=8@~AQ&pxvFT0F9j{K`=c*e?;PS8T;6;E=?-uO3dJiVUb#`NSgwi_X54*xx< zy?NE5=Mu_?R&~XhC?A@%`$10eHO`N08%tWgU)#vbKXJW;x8MEVdB)MYI%4|{%maE; zvcxr_#5q4VH#M(>!MP|ku_QG`p**uBL&4qCHz2%`PaLR76{IKyC}oulR>5FoU}UIk zV61Cw7-C>#Wo&L`Y@}^qU}a$7o;0BxMMG|WN@iLmT!WECh>@X{p@Ef=Aw)y@mcM;K z4bmVRfEm&%IlrK?C^J2ygdw0bDJL^o!6iR8F*9%5M8jyHG9{R@l+@znqRfJl%=|nC zkV6%cN;7jxbTji5ii6ype9|3-fvQDes&fbP0l+XkK=r6FT diff --git a/dev-assets/doodads/trapdoors/up4.png b/dev-assets/doodads/trapdoors/up4.png deleted file mode 100644 index dc68a2d97b551e372de75f9011a86729d8f290e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1006 zcmeAS@N?(olHy`uVBq!ia0vp^VIa)H3?!FV)Er@8V64e>b`Ho)PG(@xm{>c}*5j~) zMBDvk)4D=r&L}*Zu+S<}K(z3RmdHY<6{1n420Op-&ytuVBJO^0>w^d9ldc{-8X3+W z?kMnwv9Pc-sAQthes3<_q&<&!w140C{pmYvhm4S!dF8!~yBGXT1$XB!4%fcH!{K?v_{$6sgDrbUAD zh5MsQ93Q!_TWz<$P_I(wgU`iNY0o-blU80in8m(%(^6r7q2s1^7t|;|-+ZjHdvn~{ zjn`~{awoGUS9ZSM(l+4`lbE7&Q)<3|Js$^ea0zJ$F{C#Tm522pZZC0`Pm

F@VQJjb{Dx-d zge5LFvl-vNd-vw{e$%!8{xW>iDJrev+_euF9SX@FLB0$ORcZ_j4J`}|zkoswFBlj~ z4Hy_+B``2p&0t^7~m7)3Z#84rMpvgfQ+=Xw3#z!PM1+qi?MbIlcGgqAye<_9s5d~ zxg(Yq{H>dET2)gqUqFz!MP|ku_QG`p**uBL&4qCHz2%`PaLR76{IKyC}oulR>5FoU}UIkV61Cw z7-C>#Wo&L`Y@}^qU}a$7o;0BxMMG|WN@iLmT!WECh>@X{p@Ef=Aw)y@mcM;K4bmVR zfEmUrIlrK?C^J2ygdw0bDJL^o!6iR8F*9%5M8jyHG9{R@l+@znqRfJl%=|nCkV6%c zN;7jxbTji5ii6ype9|3-fvQDes&fbP0l+XkKf~EX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZQWT=8*MO4I5t5Adrp;lNGFg)WK9P8q>4rtTK|H-_ z>74h8L#!ZYh|h^f4Z0xlBi9v|-#F(T7IO?@AxHhDdZ}G zkz)a6sE{2$_#gc4*33;#xJkh%(EeiEA45Q37pPZl`}^3o>nDK!8MxA#{&EeN`6RvC z)WSzV_cm~G-PDvl;Bp7(d(ve?b|gPdA(sQ*&*+=dK+i4Ex#srP*vIJukfg5SH^9Lm zFr26Cb&q#eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00AmVL_t(&-tE~x4uUWg2Jr6@PEtmW;DVQ7(Vdfcp0aQR zMtYSx7?F?$`xGd~uagj({@x!5ML{!o9AM-C0AtcBoI{3#jKe_kP@1C0yrf^u&7&3w zUIW0bHpIrm-_VcR|CY}%~Ti08fVNjB7wc~*QaXuC)BQ-C%bKk#IIlNAdY zv+;~PbZ%3~6f<2gbZ(c@gce*v*iv9iSvMovVM{@E!dSu(INK8e0M!Y&48j+q^pJD! zacy45*9N#1K25XU3J)~$`km^oSpu+G;~!}JcY-}a2qARf9L;wH) diff --git a/dev-assets/doodads/warp-door/blue-2.png b/dev-assets/doodads/warp-door/blue-2.png deleted file mode 100644 index ca96abffa8d3aaf3cdcc4cd54da1584cdbd469e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 976 zcmV;>126oEP)EX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZQWT=8*MO4I5t5Adrp;lNGFg)WK9P8q>4rtTK|H-_ z>74h8L#!ZYh|h^f4Z0xlBi9v|-#F(T7IO?@AxHhDdZ}G zkz)a6sE{2$_#gc4*33;#xJkh%(EeiEA45Q37pPZl`}^3o>nDK!8MxA#{&EeN`6RvC z)WSzV_cm~G-PDvl;Bp7(d(ve?b|gPdA(sQ*&*+=dK+i4Ex#srP*vIJukfg5SH^9Lm zFr26Cb&q#eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00F2;L_t(&-tC&fal$YVMZXv-k&h{X3vR}j6hH@=NddW} z22M0!E|lOSnn@+f0YoMX#?r1N%&gpup8_J=H=6Z~8UC)&XaL2l$a1UKKlh#S#0 z!UWc5oMKtwM6~EB-2VlLrhU;NOY036xZ3mAY zfOpOt@28z^33QRkAyzfpa`D*-Q zJG6TMFWfvkcRenxlA4qmZFUgBj5fa`%o(kI>B&GQD!<&DHL>#Zf(Va0@;aiY6AGdr z3Zftiq9BqMvUblpChV#=&vC+KK?Kw1Cp{*SHg4=sPQeHq0NRiL6Qcenxo0geJPndi ya8x)|oLwW5Un~MCDSRJagzwS-0000EX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZQWT=8*MO4I5t5Adrp;lNGFg)WK9P8q>4rtTK|H-_ z>74h8L#!ZYh|h^f4Z0xlBi9v|-#F(T7IO?@AxHhDdZ}G zkz)a6sE{2$_#gc4*33;#xJkh%(EeiEA45Q37pPZl`}^3o>nDK!8MxA#{&EeN`6RvC z)WSzV_cm~G-PDvl;Bp7(d(ve?b|gPdA(sQ*&*+=dK+i4Ex#srP*vIJukfg5SH^9Lm zFr26Cb&q#eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00DkUL_t(&-tE}CZNo4S2H>B9C!tD@kj4hmW(}>N8SGw- zXGoO=s3ID{rML=HP=rN2oJis6WZ(!Gkmy1m$m4-`3T5lCgK+==X#JS6*1u~27UTIa z!vEF+m;8TykRJY;Y>o&~4*$cZ2wV)$`aD43(d`R?Px9R2(04KUxS zAv1ZRZZHba&oBQA&uLFh520>ubV9;v06>*@&!s|jO}Qcyoq)RWTha$a-2(uXYU%UH z`R-t#rV;NtX}VvYM~M0;ze1vIA#CPk+$$kh#TSNHy8}qb6RZ%Xeyenz<@gFjAOaDH zK%VzXAU!lv#Bzw8xI|s@jUmIkNozU;8FTtcVdB#5_dP2Ik)&42Us=2{BRE z@E~Fcah_OT`)-JsuYEU0OxL~)h;i-9gm^%h5kSA;Tehr_ALf*cyDF3EjQ{`u07*qo IM6N<$g5M{fga7~l diff --git a/dev-assets/doodads/warp-door/blue-4.png b/dev-assets/doodads/warp-door/blue-4.png deleted file mode 100644 index f67689027d0c5b5f07bf67528566ed6ca33bf68b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 807 zcmV+?1K9kDP)EX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZQWT=8*MO4I5t5Adrp;lNGFg)WK9P8q>4rtTK|H-_ z>74h8L#!ZYh|h^f4Z0xlBi9v|-#F(T7IO?@AxHhDdZ}G zkz)a6sE{2$_#gc4*33;#xJkh%(EeiEA45Q37pPZl`}^3o>nDK!8MxA#{&EeN`6RvC z)WSzV_cm~G-PDvl;Bp7(d(ve?b|gPdA(sQ*&*+=dK+i4Ex#srP*vIJukfg5SH^9Lm zFr26Cb&q#eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{0093c)P!NfhHCVwjK%a&g zsHl-b5k{c&tzwGAmV$&u<#VKeRop$@oh_eZ;Cw&@u?7GfEFb_x#_xv!=cb&(d8|-L z5JCtcgb+dqA%vum8X(rPG&4xQG0G4D!pZ1oL>rMH&)2wU-$B1e%r(^0tf^^_4f;W0 z(u*aDyJo+gKm*Y3N{*aU-0qk`;<`AbYofK zkZ*`(MhGE<5JCtcgb+gbs+foHRq@xPS9k!gFeAe4n;F6t`hzFyLLiF$!O~<7G~KeW lGz)+z_XiMv3OKJ0`2Y-DH&eP%^%ejC002ovPDHLkV1j~zUIG9B diff --git a/dev-assets/doodads/warp-door/blue-off.png b/dev-assets/doodads/warp-door/blue-off.png deleted file mode 100644 index a42b51c5f461a5f2c849fa3b354a0cc27c9c6dc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 685 zcmV;e0#f~nP)EX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZQWT=8*MO4I5t5Adrp;lNGFg)WK9P8q>4rtTK|H-_ z>74h8L#!ZYh|h^f4Z0xlBi9v|-#F(T7IO?@AxHhDdZ}G zkz)a6sE{2$_#gc4*33;#xJkh%(EeiEA45Q37pPZl`}^3o>nDK!8MxA#{&EeN`6RvC z)WSzV_cm~G-PDvl;Bp7(d(ve?b|gPdA(sQ*&*+=dK+i4Ex#srP*vIJukfg5SH^9Lm zFr26Cb&q#eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{004zaL_t(&-tF2=4nQyvfYIq(#UY)+A)SQ{;x8f=)y4aE zgtTeqSt+sBk5dd?Ib5&3x&P&z-I{rMuy)JZ`RgX`PE4&;9u-uajcnya(ol#RYD5h+ zqJ|n#Lyd$lzM_U2QA3TWp@te!Lyf4RMs2I9^+Vh?thLGBHFPC^`F@->5fL#1R^4hQ T!A`5E00000NkvXXu0mjfc{M4- diff --git a/dev-assets/doodads/warp-door/door-1.png b/dev-assets/doodads/warp-door/door-1.png deleted file mode 100644 index e057d24d6b8a9db586c99f43efc3c66d85efeef9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 891 zcmV->1BCpEP)EX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZQWT=8*MO4I5t5Adrp;lNGFg)WK9P8q>4rtTK|H-_ z>74h8L#!ZYh|h^f4Z0xlBi9v|-#F(T7IO?@AxHhDdZ}G zkz)a6sE{2$_#gc4*33;#xJkh%(EeiEA45Q37pPZl`}^3o>nDK!8MxA#{&EeN`6RvC z)WSzV_cm~G-PDvl;Bp7(d(ve?b|gPdA(sQ*&*+=dK+i4Ex#srP*vIJukfg5SH^9Lm zFr26Cb&q#eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00C1;L_t(&-tCz&Zo)tiML*7#AQ7cVKuCy|E6|w3&{5IQ z<^;X~wGTn(#)TVBfq+zLpj$x-WJ9b)>?~j#^nd5oj{N5Dcs*;^hFu&`0Vx1zeX3F+ z);}5^Dx%7OD3eXL$}j0HvC3wWNu94YmYdbxVp$^uAqYVTLJ)!wgdhYV$kU%|(stif zuCcXY7YCkwU1}suG{VIGNGY9f4HCujEG04GrLoCU;)EDvHc_Gsqxcx}(0$}Q<9sc+ zxFH6~yAmcEQGCq)96;(u^>@~5t{~8v8(HS2F@fHCO?)@%GGi8V43Tc`ej`<0W0cl~ z38Jv4<`MvlRrIdm-wDEX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZQWT=8*MO4I5t5Adrp;lNGFg)WK9P8q>4rtTK|H-_ z>74h8L#!ZYh|h^f4Z0xlBi9v|-#F(T7IO?@AxHhDdZ}G zkz)a6sE{2$_#gc4*33;#xJkh%(EeiEA45Q37pPZl`}^3o>nDK!8MxA#{&EeN`6RvC z)WSzV_cm~G-PDvl;Bp7(d(ve?b|gPdA(sQ*&*+=dK+i4Ex#srP*vIJukfg5SH^9Lm zFr26Cb&q#eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00F~EL_t(&-tC&bZNoqeg(>3}NaY_G&=@J)NOPq20v<#Q zxK@`c3q*|zjS(P-qACj<;1tRw##yq+BTrEfva}C;pC2iKqMYO@oM8rG007oYgF4)_ z7BJ`CIsfc-wSm|7H)vW5&o4jc^YjY@lh7q~$*|%iN2C&l01Sd~6NbhDW)cdbAPS-& z3Zfti@^3*VnSi#d&F_Ht!hJJtR1gP%5sn73UYa0)pk~F?8UUcIEtIvDb0nnJE~=A2 zX*jiZP8<)02hvw-m;B-0L~#S%BO!^SfH<4|2K1XUv@E2nX2=!)^HBHDAigVQZNEjS zmn!>)R-FK{-8CE(mQ@z9JL~aa0E%H(_Qg2lf-LBjrSE$mBHMLN?r*@79dQ7@D5fNj zPlAI{Xb+4}bV7I6GQ#M?$Ya zebQrrjCFprF@W0nq9EMY9ioot+X)3x5Cu^X1yK-2jBO;%RKjC3jEMz69iBu%INRsH z`I-c~0>{q4Xb{c{yifRY6@dZ?Z8(bXC^`(SJZQY>WT^002ovPDHLkV1hTywjuxk diff --git a/dev-assets/doodads/warp-door/door-3.png b/dev-assets/doodads/warp-door/door-3.png deleted file mode 100644 index d225a8dfe255952893f7efa2db126e34c44d938a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 957 zcmV;u148_XP)EX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZQWT=8*MO4I5t5Adrp;lNGFg)WK9P8q>4rtTK|H-_ z>74h8L#!ZYh|h^f4Z0xlBi9v|-#F(T7IO?@AxHhDdZ}G zkz)a6sE{2$_#gc4*33;#xJkh%(EeiEA45Q37pPZl`}^3o>nDK!8MxA#{&EeN`6RvC z)WSzV_cm~G-PDvl;Bp7(d(ve?b|gPdA(sQ*&*+=dK+i4Ex#srP*vIJukfg5SH^9Lm zFr26Cb&q#eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00EUrL_t(&-tF13PQx$|2H>B_?@)>mc?2fZ0S59Mo!OYW zu<-y4Y)qXqATjX*^+1Na06P*QWaG26ZzrVb78}|3AHduZ950Rxn(q3@?Y|KdZ0kH+)4uJ?nAOaDH zKm;O?gM_&ESr!NdA{au22!>chUK&0~`-ZOzq6RA@^3q^FQ&PU9$I=UNt7BJk-seO) zVi9gG17Yiz{e z-ZwTP7(#{Ug>+R1C886;f$$()2oJ)A*n&_$CkFSvVwUQp8wfW7 fXic88lo#>~!xYl8H00000NkvXXu0mjf01l-? diff --git a/dev-assets/doodads/warp-door/door-4.png b/dev-assets/doodads/warp-door/door-4.png deleted file mode 100644 index 65f3e03ebea572ff92e2d5f1c91e115f672bd39b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 830 zcmV-E1Ht@>P)EX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZQWT=8*MO4I5t5Adrp;lNGFg)WK9P8q>4rtTK|H-_ z>74h8L#!ZYh|h^f4Z0xlBi9v|-#F(T7IO?@AxHhDdZ}G zkz)a6sE{2$_#gc4*33;#xJkh%(EeiEA45Q37pPZl`}^3o>nDK!8MxA#{&EeN`6RvC z)WSzV_cm~G-PDvl;Bp7(d(ve?b|gPdA(sQ*&*+=dK+i4Ex#srP*vIJukfg5SH^9Lm zFr26Cb&q#eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{009%$aPWIF5!F)_z7~oEX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZQWT=8*MO4I5t5Adrp;lNGFg)WK9P8q>4rtTK|H-_ z>74h8L#!ZYh|h^f4Z0xlBi9v|-#F(T7IO?@AxHhDdZ}G zkz)a6sE{2$_#gc4*33;#xJkh%(EeiEA45Q37pPZl`}^3o>nDK!8MxA#{&EeN`6RvC z)WSzV_cm~G-PDvl;Bp7(d(ve?b|gPdA(sQ*&*+=dK+i4Ex#srP*vIJukfg5SH^9Lm zFr26Cb&q#eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{009_DL_t(&-tE~<4uc>N1>o1lli<=Lbi-*_x%VO-$c;x} zDOYJ1H1(&{f;*DjE5JCtcgb+dqA%qY@$m#bruh;#pO+jvPg|F=^+o1Sxyn735S;e0000< KMNUMnLSTZ??rDes diff --git a/dev-assets/doodads/warp-door/orange-2.png b/dev-assets/doodads/warp-door/orange-2.png deleted file mode 100644 index 2bb01fbd6fcb928a11f65366c3259c3b797908ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 967 zcmV;&133JNP)EX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZQWT=8*MO4I5t5Adrp;lNGFg)WK9P8q>4rtTK|H-_ z>74h8L#!ZYh|h^f4Z0xlBi9v|-#F(T7IO?@AxHhDdZ}G zkz)a6sE{2$_#gc4*33;#xJkh%(EeiEA45Q37pPZl`}^3o>nDK!8MxA#{&EeN`6RvC z)WSzV_cm~G-PDvl;Bp7(d(ve?b|gPdA(sQ*&*+=dK+i4Ex#srP*vIJukfg5SH^9Lm zFr26Cb&q#eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00Ey#L_t(&-tC$(Zo@DPMSp^vL>_yDE&@%W>GN>{NijGZos1=m=XgZQAO&C*glmvG_Snc!5Cu^X1yK+MQINX@IaE!^AQVjr$@>YgjZk4k&4D60k^^H0;Q2Hjzcn|m(5?a8Z}IHh zvRzswG&wz5aS%?AR@@`h9<9FVu|Q&(U+l@6oB5(3-0cogkLd1%f+&cBD2Re62&;yy zT(hnUyV@Ycj-)6Er~CX*w@H|l8~v4&(EEX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZQWT=8*MO4I5t5Adrp;lNGFg)WK9P8q>4rtTK|H-_ z>74h8L#!ZYh|h^f4Z0xlBi9v|-#F(T7IO?@AxHhDdZ}G zkz)a6sE{2$_#gc4*33;#xJkh%(EeiEA45Q37pPZl`}^3o>nDK!8MxA#{&EeN`6RvC z)WSzV_cm~G-PDvl;Bp7(d(ve?b|gPdA(sQ*&*+=dK+i4Ex#srP*vIJukfg5SH^9Lm zFr26Cb&q#eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00DAIL_t(&-tE~ja>6hW1<;QtClMt_NJEj9Yq(04#%D-s zXmW;BTp%j&5h%SyE)ojlAX^qhM(Z^*s~N^vF8s#c)o9m?rot~~FrEOwn9Br_J2wDm zV7?vhIuWpZzYoz=K;cgWH=A%2b3k+;(nBE%QHVkmq7a2B>`l#v4`�Ves)|5&Yukzq(zirY}nN$KJ3b!KLg)~+>ppRVQT=N z-MO#*`Pcr>(v}F;3Ah`VU4Wl0+vWNAS^>L{j89~!6JYCjx{^b`EhfmC^>H{$hye2< zoW5Lrl$#L$wQx3b3h5`ITgAtP5X}I>u}&mIr24JedDiq*h(Z*i5QSWCmOy)GtcY|7 zg`22*KgTCS`g@g}h|$5C8!@`}&5cNga3SIl!yB0Yg9so(h!7%#2q8KU?sZ~x?K>qR wTKi6o7_5CI5JBxLh4_O=BLJ@j-c+)X6ZE5cgu#+2eEEX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZQWT=8*MO4I5t5Adrp;lNGFg)WK9P8q>4rtTK|H-_ z>74h8L#!ZYh|h^f4Z0xlBi9v|-#F(T7IO?@AxHhDdZ}G zkz)a6sE{2$_#gc4*33;#xJkh%(EeiEA45Q37pPZl`}^3o>nDK!8MxA#{&EeN`6RvC z)WSzV_cm~G-PDvl;Bp7(d(ve?b|gPdA(sQ*&*+=dK+i4Ex#srP*vIJukfg5SH^9Lm zFr26Cb&q#eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{008?*L_t(&-tF134Z<)G1<)VFBu>c)Py~sVHBwR0cm}AU zVFoH{q@)NVQ09s(0);VBgp8t5b^E&*~4X%iA`=*<4jr!op`X3O@`e1635bd-uHTEIe h^#Qzo3iMtd@&t#%Fuus#viJZ1002ovPDHLkV1me7SIYnZ diff --git a/dev-assets/doodads/warp-door/orange-off.png b/dev-assets/doodads/warp-door/orange-off.png deleted file mode 100644 index 476703a5db35acdcf9c2b3557b9259cc05d6fb33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 687 zcmV;g0#N;lP)EX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZQWT=8*MO4I5t5Adrp;lNGFg)WK9P8q>4rtTK|H-_ z>74h8L#!ZYh|h^f4Z0xlBi9v|-#F(T7IO?@AxHhDdZ}G zkz)a6sE{2$_#gc4*33;#xJkh%(EeiEA45Q37pPZl`}^3o>nDK!8MxA#{&EeN`6RvC z)WSzV_cm~G-PDvl;Bp7(d(ve?b|gPdA(sQ*&*+=dK+i4Ex#srP*vIJukfg5SH^9Lm zFr26Cb&q#eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{004(cL_t(&-tF4434kyVK+(&s;*ideA)Q4VBO)SV5mUTh zX;2bEo|Pr`mO0j`MmgWN>o?ERdHMhV002ovPDHLkV1m8mC_n%J diff --git a/dev-assets/doodads/warp-door/warp-door.js b/dev-assets/doodads/warp-door/warp-door.js deleted file mode 100644 index 2bde9f3..0000000 --- a/dev-assets/doodads/warp-door/warp-door.js +++ /dev/null @@ -1,157 +0,0 @@ -// Warp Doors - -const color = Self.GetTag("color"), - isStateDoor = color === 'blue' || color === 'orange'; - -// State in case we're a blue warp door. -let state = color === 'blue', - animating = false, - collide = false; - -function main() { - // Declare animations and sprite names. - let animSpeed = 100; - let spriteDefault, spriteDisabled; // the latter for state doors. - if (color === 'blue') { - Self.AddAnimation("open", animSpeed, ["blue-2", "blue-3", "blue-4"]); - Self.AddAnimation("close", animSpeed, ["blue-4", "blue-3", "blue-2", "blue-1"]); - spriteDefault = "blue-1"; - spriteDisabled = "blue-off"; - } else if (color === 'orange') { - Self.AddAnimation("open", animSpeed, ["orange-2", "orange-3", "orange-4"]); - Self.AddAnimation("close", animSpeed, ["orange-4", "orange-3", "orange-2", "orange-1"]); - spriteDefault = "orange-1"; - spriteDisabled = "orange-off"; - } else if (color === 'invisible') { - // Invisible Warp Door region. - Self.Hide(); - Self.AddAnimation("open", animSpeed, [0, 0]); - Self.AddAnimation("close", animSpeed, [0, 0]); - } else { - Self.AddAnimation("open", animSpeed, ["door-2", "door-3", "door-4"]); - Self.AddAnimation("close", animSpeed, ["door-4", "door-3", "door-2", "door-1"]); - spriteDefault = "door-1"; - } - - // Find our linked Warp Door. - let linkedDoor = null; - for (let link of Self.GetLinks()) { - if (link.Title.indexOf("Warp Door") > -1) { - linkedDoor = link; - break; - } - } - - // Subscribe to the global state-change if we are a state door. - if (isStateDoor) { - Message.Subscribe("broadcast:state-change", (newState) => { - state = color === 'blue' ? !newState : newState; - - // Activate or deactivate the door. - Self.ShowLayerNamed(state ? spriteDefault : spriteDisabled); - }); - } - - // For player groundedness work-around - let playerLastY = []; // last sampling of Y values - - // The player Uses the door. - let flashedCooldown = false; // "Locked Door" flashed message. - Events.OnUse((e) => { - if (animating) { - return; - } - - // Doors without linked exits are not usable. - if (linkedDoor === null) { - if (!flashedCooldown) { - Flash("This door is locked."); - flashedCooldown = true; - setTimeout(function() { - flashedCooldown = false; - }, 1000); - } - return; - } - - // Only players can use doors for now. - if (e.Actor.IsPlayer()) { - if (isStateDoor && !state) { - // The state door is inactive (dotted outline). - return; - } - - // The player must be grounded or have no gravity to open the door. - if (!e.Actor.Grounded() && e.Actor.HasGravity()) { - // Work-around: if two Boxes are stacked atop each other the player can - // get stuck if he jumps on top. He may not be Grounded but isn't changing - // effective Y position and a warp door may work as a good way out. - let yValue = e.Actor.Position().Y; - - // Collect a sampling of last few Y values. If the player Y position - // is constant the last handful of frames, treat them as if they're - // grounded (or else they can't activate the warp door). - playerLastY.unshift(yValue); - if (playerLastY.length < 6) { - return; - } - - // We have enough history. - playerLastY.pop(); - - // Hasn't moved? - let isGrounded = true; - for (let i = 0; i < playerLastY.length; i++) { - if (yValue !== playerLastY[i]) { - isGrounded = false; - break; - } - } - - if (!isGrounded) { - return; - } - - // Player was effectively grounded! No change in Y position. - } - - // Freeze the player. - e.Actor.Freeze() - - // Play the open and close animation. - animating = true; - Self.PlayAnimation("open", () => { - e.Actor.Hide() - Self.PlayAnimation("close", () => { - Self.ShowLayerNamed(isStateDoor && !state ? spriteDisabled : spriteDefault); - animating = false; - - // Teleport the player to the linked door. Inform the target - // door of the arrival of the player so it doesn't trigger - // to send the player back here again on a loop. - if (linkedDoor !== null) { - Message.Publish("warp-door:incoming", e.Actor); - e.Actor.MoveTo(linkedDoor.Position()); - } - }); - }); - } - }); - - // Respond to incoming warp events. - Message.Subscribe("warp-door:incoming", (player) => { - animating = true; - player.Unfreeze(); - Self.PlayAnimation("open", () => { - player.Show(); - Self.PlayAnimation("close", () => { - animating = false; - - // If the receiving door was a State Door, fix its state. - if (isStateDoor) { - Self.ShowLayerNamed(state ? spriteDefault : spriteDisabled); - } - }); - }); - }); -}