diff --git a/Audio/avali_skinsounds.guids.txt b/Audio/avali_skinsounds.guids.txt index 2ac1a44..3a227d9 100644 --- a/Audio/avali_skinsounds.guids.txt +++ b/Audio/avali_skinsounds.guids.txt @@ -1,1006 +1,1006 @@ -{ad25a031-880b-4f88-ac12-82d6c52fbdea} event:/char/badeline/appear -{7a71fc61-b688-4d82-a2b7-781c2434e942} event:/char/badeline/booster_begin -{b2ee45d8-e1b0-43f1-baaa-f6e77d37ddb5} event:/char/badeline/booster_final -{207a212a-2beb-4022-a8da-11ac987d3097} event:/char/badeline/booster_reappear -{7e3c6b4e-e41a-4e9a-9d24-22737c66593b} event:/char/badeline/booster_relocate -{2592d638-f3c5-4f6f-81e0-888a04affa40} event:/char/badeline/booster_throw -{bbe7d0c8-45f9-4671-b49e-8e38e357bb81} event:/char/badeline/boss_bullet -{898fc1ea-250b-4d03-8f37-c0c35799a915} event:/char/badeline/boss_hug -{b4002010-ff11-4311-87c7-f87028220f78} event:/char/badeline/boss_idle_air -{e7a2ddd6-091a-44ab-aac7-e57bd13c009c} event:/char/badeline/boss_laser_charge -{58b5d825-ebcf-457b-b493-9be82640b9eb} event:/char/badeline/boss_laser_fire -{646b0a01-2101-424f-804b-18842f72a62d} event:/char/badeline/boss_prefight_getup -{33df1e8a-7605-4b2d-8235-ee78fbaa8c55} event:/char/badeline/climb_ledge -{b54ae334-409b-4bba-82e2-62753f764f90} event:/char/badeline/dash_red_left -{50356124-434a-4dca-aeb1-52462846fb8a} event:/char/badeline/dash_red_right -{16b40879-0a79-4e42-8c91-fe419a8e186c} event:/char/badeline/disappear -{937c3941-eeb8-4f1f-8451-765b33545202} event:/char/badeline/dreamblock_enter -{3b142d62-975a-41a3-9b59-8e5ba4f6cbdb} event:/char/badeline/dreamblock_exit -{697102c2-9978-42b7-a3b0-0c2b99c9032e} event:/char/badeline/dreamblock_travel -{d879f9dd-98d0-479e-9f08-a1848f4a0f5c} event:/char/badeline/duck -{ff6442f1-66c2-4dba-8d57-038dda8fd296} event:/char/badeline/footstep -{8824489f-1d0b-4670-beb2-08d67cfd3c3b} event:/char/badeline/grab -{c122d904-fb7a-4bfe-99a1-f5a4f8701d17} event:/char/badeline/grab_letgo -{c2cd2f17-045c-4312-b7f6-8e7b750577c0} event:/char/badeline/handhold -{95ce0255-9a27-47b4-a902-fb25c0f2a2e2} event:/char/badeline/jump -{64424649-d82c-4efc-90a9-f54e8411d9b7} event:/char/badeline/jump_assisted -{58e689a2-1717-434f-9fa7-dffcd72ab27e} event:/char/badeline/jump_climb_left -{d9a77828-0390-434a-8cbc-e3df56a40cc4} event:/char/badeline/jump_climb_right -{6faecb61-f82e-400e-9785-4d407a82c838} event:/char/badeline/jump_dreamblock -{bc8a6051-399a-4f76-a865-02b53c5fe8ab} event:/char/badeline/jump_special -{73a21bdf-62c2-46d8-ae04-68e6c0c26b7f} event:/char/badeline/jump_super -{7ca46073-e6b8-4f74-b9a8-ac54a8966c5b} event:/char/badeline/jump_superslide -{2336b17f-5769-4e2e-a636-aee1ddef9086} event:/char/badeline/jump_superwall -{ab3be2a7-36d0-43cb-990a-2c49ba5d5c60} event:/char/badeline/jump_wall_left -{3e5b18db-8f99-4ab7-ad08-8529fd257b6b} event:/char/badeline/jump_wall_right -{8f924592-8b14-40d6-81af-d42fab0b6da1} event:/char/badeline/landing -{25294859-6bfd-434e-9528-8433245fe3b5} event:/char/badeline/level_entry -{38557af4-adf9-4328-9f2c-167b12ff9f8e} event:/char/badeline/maddy_join -{450fb5b3-e9e3-45d8-9f34-ba05e292958f} event:/char/badeline/maddy_split -{1a114663-4b93-4aab-ba8c-ca8793f2831e} event:/char/badeline/stand -{97d0d2e4-92f5-48cf-948f-4fc85b0a0791} event:/char/badeline/temple_move_chats -{a5ceb7fd-8a03-4c79-8d4f-81ad37400f43} event:/char/badeline/temple_move_first -{a2443155-5af1-4e19-80d5-a81a3d9cf06d} event:/char/badeline/wallslide -{9fdf9618-b47b-4427-bb22-4642a42296b9} event:/char/dialogue/sfx_support/phone_static_ex -{0793a2c4-4c0b-41de-8f60-cbaed147961b} event:/char/dialogue/sfx_support/phone_static_mom -{e27b3ab9-d6c9-4952-92bf-e652b98a9ed5} event:/char/dialogue/!!!_README -{aba9f19a-b015-4dfa-ab6a-c1c34385e6e9} event:/char/dialogue/badeline -{0d2b6a74-2224-4d42-b4c1-275e02188e35} event:/char/dialogue/ex -{93dc35c9-2d7f-428b-a991-10a75e908831} event:/char/dialogue/granny -{6db7fffa-a9ef-4b37-8c16-6857785af731} event:/char/dialogue/madeline -{eb633670-e129-48ad-82cc-bc3b09203d6f} event:/char/dialogue/madeline_mirror -{9a3d146f-f39b-41f5-a269-890782e44fcc} event:/char/dialogue/mom -{94086ab9-c160-4468-b8f5-20d8c0df94f3} event:/char/dialogue/oshiro -{81a8f569-0320-45e8-a85d-f05fc73ab18a} event:/char/dialogue/secret_character -{e15162c0-8d07-4a4a-86b2-31a4143ef96c} event:/char/dialogue/theo -{06f37413-874a-4d3a-b325-e43d5835bded} event:/char/dialogue/theo_mirror -{b778a405-ac7f-440e-8754-aef888736b87} event:/char/dialogue/theo_webcam -{baf0c37e-6b25-4b7f-8bcf-653b7ffbb4a5} event:/char/granny/cane_tap -{e6fcb1bd-e802-4b86-ba6a-4d5b4f9d1d8e} event:/char/granny/laugh_firstphrase -{7d86252d-c88c-4317-865e-430792def883} event:/char/granny/laugh_oneha -{ae79fcef-d9b4-44c5-91e5-e0348229e9d5} event:/char/madeline/Vanilla Backup/death -{421fe5d0-9d4b-40a5-ab8e-23b1ec4bf1b3} event:/char/madeline/Vanilla Backup/idle_crackknuckles -{ae4aea88-f499-49e8-9536-78c4bad21743} event:/char/madeline/Vanilla Backup/idle_sneeze -{65659bc0-3d2b-429c-9bdc-42e7a2d29a94} event:/char/madeline/Vanilla Backup/predeath -{75ab6aef-3f69-4776-b60f-5700451cc9a2} event:/char/madeline/backpack_drop -{99373af6-beba-488d-b516-ff48fd95e8b8} event:/char/madeline/campfire_sit -{9435a742-7595-48a4-b2af-2757c4f927da} event:/char/madeline/campfire_stand -{9457c17c-688b-4701-b2ae-b89d821d54f7} event:/char/madeline/climb_ledge -{82f8448b-9452-4b12-838c-dcd81098476e} event:/char/madeline/core_hair_charged -{315ac151-5eb6-4e6b-b1b7-0531f3572c44} event:/char/madeline/crystaltheo_lift -{eb1249df-06cf-434d-991b-0b73464eef06} event:/char/madeline/crystaltheo_throw -{cb220baa-d2cb-4a87-9907-a6595dba6735} event:/char/madeline/dash_pink_left -{8ec31009-771f-4473-a3fc-45b209d6aa87} event:/char/madeline/dash_pink_right -{b9d3a7c5-3d49-4b8a-aad1-fcfaf87293af} event:/char/madeline/dash_red_left -{066cd550-a394-4bed-a4cf-c71905a160ed} event:/char/madeline/dash_red_right -{2de81082-0768-430b-b7fb-728c94bd1dcb} event:/char/madeline/death -{06d7cbaf-9d9e-4f67-8adb-37a599dd4c37} event:/char/madeline/dreamblock_enter -{0a9527ad-360b-4cd2-b585-92b066720b34} event:/char/madeline/dreamblock_exit -{47bc2416-fd95-4a75-8952-7c43757e0e66} event:/char/madeline/dreamblock_travel -{0d6cb459-91af-4842-8d2b-0f0e103313ef} event:/char/madeline/duck -{73ada323-e77f-43f7-b0df-a8facdef03b7} event:/char/madeline/footstep -{8aa6ab7b-3104-4a06-8e7e-b1141ac0d23d} event:/char/madeline/grab -{0e0bb484-9840-47f8-a697-773134e4bedb} event:/char/madeline/grab_letgo -{7f8c23d1-bd9d-4a10-b8af-fd4a5cb12244} event:/char/madeline/handhold -{92a3c07d-326f-45b0-9001-4ed3a7c178a2} event:/char/madeline/idle_crackknuckles -{852ea39f-c182-4385-9aa3-1d95cb02040b} event:/char/madeline/idle_scratch -{8c51bec8-fb5a-4f50-ac30-9ad4c2c49ba2} event:/char/madeline/idle_sneeze -{eeede5f5-3691-4cd9-8b2c-91e02d3d41ed} event:/char/madeline/jump -{73ba5692-b6bd-4c78-a392-e41fa7425ead} event:/char/madeline/jump_assisted -{faac7cb1-bc6a-4e0d-8dc5-97f3c94363e6} event:/char/madeline/jump_climb_left -{1a77f0d4-81d8-4f97-bdf1-8e1e39cc69ef} event:/char/madeline/jump_climb_right -{5e5a1f06-5cf9-4daf-a7ed-3b36554dd44b} event:/char/madeline/jump_dreamblock -{25759b99-ad2a-4483-bb7e-0c4eac782c53} event:/char/madeline/jump_special -{4fc69f31-fc0f-42d3-af4c-20424c74d6a4} event:/char/madeline/jump_super -{8f5b7d80-8ca1-4415-942c-f1338b8a79f1} event:/char/madeline/jump_superslide -{67bb774a-41bd-4375-a4e7-53031c7f75cd} event:/char/madeline/jump_superwall -{f63c2b0a-f708-44f5-af13-6bba7e3af2cb} event:/char/madeline/jump_wall_left -{3b128250-55a7-4a1b-8d8e-edf325d80192} event:/char/madeline/jump_wall_right -{a7289b79-f525-4762-943e-98cf5c94151a} event:/char/madeline/landing -{60e29264-3711-498c-a7ed-c58ecefb5543} event:/char/madeline/mirrortemple_big_landing -{33880264-68a6-4863-8a03-e4ea7c5a72df} event:/char/madeline/predeath -{14d582cb-0c50-4837-bcc5-e7e03ff23687} event:/char/madeline/revive -{73265a98-2cb3-4d98-9643-cf592c2b9131} event:/char/madeline/stand -{7d18d617-475b-4d12-ad45-885c619e7540} event:/char/madeline/summit_areastart -{72eb7f2d-c3e9-41b2-afc0-b4cfee087389} event:/char/madeline/summit_flytonext -{f5babe6c-1ec1-4d4e-8934-a1809b5e26cb} event:/char/madeline/summit_sit -{dae064c8-86f9-458b-83af-fbd8b699a3b9} event:/char/madeline/theo_collapse -{cad411d1-889d-4fb6-85e7-210db19d1e11} event:/char/madeline/wallslide -{cab0df89-b0d1-439c-8ac7-37db9d43e3a1} event:/char/madeline/water_dash_gen -{fb5d35c5-47c8-439d-8d52-ec6daf91887b} event:/char/madeline/water_dash_in -{5ce79651-4adc-4592-b018-38aa212d6ca6} event:/char/madeline/water_dash_out -{4016ea56-842c-4649-99c4-7057db18c835} event:/char/madeline/water_in -{5cf06f89-cf18-4dfa-bc69-5e4b58095cf3} event:/char/madeline/water_move_general -{7d656ffa-050f-4cab-bbc9-03863fa14e4f} event:/char/madeline/water_move_shallow -{3b90c629-7dcf-467b-a438-75e3287c8ae5} event:/char/madeline/water_out -{e1fec409-ace5-4006-8b7c-ccf9fbf1ac59} event:/char/oshiro/boss_charge -{05362357-0f1e-4f89-9d04-8a2778451a6c} event:/char/oshiro/boss_enter_screen -{f5fc7368-4f02-4479-a805-0efdff3633f6} event:/char/oshiro/boss_precharge -{28afe636-0afc-4a73-957d-fa53f6295250} event:/char/oshiro/boss_reform -{53cd822c-b7e1-4d50-8574-4fe404457747} event:/char/oshiro/boss_slam_final -{83376c6a-a014-418e-9e21-dbc48df90069} event:/char/oshiro/boss_slam_first -{945afadd-8b82-439d-a3d5-c70d53d8df96} event:/char/oshiro/boss_transform_begin -{6be863d8-6204-4f23-9f06-f90d6d7a8092} event:/char/oshiro/boss_transform_burst -{6dd647fe-eefd-43d7-8a35-5a614678dd12} event:/char/oshiro/chat_collapse -{2985ee63-eec3-4263-bf6d-71e332bfa805} event:/char/oshiro/chat_get_up -{c4fc63e7-6814-466a-9077-c90a82fc710e} event:/char/oshiro/chat_turn_left -{a5b71a3a-2b11-43d7-a6dc-c2fc90d9d07e} event:/char/oshiro/chat_turn_right -{7714e509-b855-47b0-b57b-3b7d803c5652} event:/char/oshiro/move_01_0xa_exit -{4f200dab-f854-4ed1-8e93-b736211791d5} event:/char/oshiro/move_02_03a_exit -{ecd941b2-7246-49f9-ad46-dd6eee981bd5} event:/char/oshiro/move_03_08a_exit -{ce338380-a29d-461a-b661-267fa7acd32c} event:/char/oshiro/move_04_pace_left -{e2f5eac6-9d40-4bc5-bcaf-d14b6269354b} event:/char/oshiro/move_04_pace_right -{b6e13523-090a-44eb-aa4f-1a3c270c507f} event:/char/oshiro/move_05_09b_exit -{d63e2c8f-499c-4edc-a892-041ae47d5b96} event:/char/oshiro/move_06_04d_exit -{96c70110-4204-4456-b3ed-baf02ba4139a} event:/char/oshiro/move_07_roof00_enter -{dfc82939-d51a-4454-aedf-1b3c6d4cf986} event:/char/oshiro/move_08_roof07_exit -{56221566-2fd7-4b1a-99d7-6af227ab8398} event:/char/theo/phone_taps_loop -{f37cd8d3-4249-47ca-8243-28ae26cf7c5c} event:/char/theo/resort_ceilingvent_hey -{5220fbf8-61c9-4a15-8490-8571a7cfa54f} event:/char/theo/resort_ceilingvent_popoff -{d3ade5b6-5418-4d18-8ac3-b31f1f5a9581} event:/char/theo/resort_ceilingvent_seeya -{6fb99d9c-74ca-412d-b3b0-247b39a382df} event:/char/theo/resort_ceilingvent_shake -{30c6c5c3-bf5d-4cbe-b3ea-3ed4c1e2396e} event:/char/theo/resort_crawl -{757f9c8a-033b-4c8d-82d8-f415972efc8d} event:/char/theo/resort_standtocrawl -{56e5cd34-78ba-45b2-96f3-83fc95c7c8df} event:/char/theo/resort_vent_grab -{aeef3032-ca85-4ac7-9866-c04c15bb8ef3} event:/char/theo/resort_vent_rip -{3d4ee73d-0198-43a2-b1d4-7b98cb16944b} event:/char/theo/resort_vent_tug -{4b18a52d-d2ba-4f5c-9880-9b49a0179e72} event:/char/theo/resort_vent_tumble -{3e111712-ffe7-404b-8dfe-08b630014170} event:/char/theo/yolo_fist -{1220c5e3-9e68-4e3f-9731-37f8efeca4d5} event:/classic/!!!_README -{96db8ec4-31c6-45aa-ae05-0b73cd02a1ff} event:/classic/pico8_boot -{79038cb9-407b-4d35-892a-1ec71396a682} event:/classic/pico8_mus_00 -{b7c9c3a9-c1bc-4a77-961e-b306f5b9c140} event:/classic/pico8_mus_01 -{feac844d-0797-404b-a390-3ab8257a187c} event:/classic/pico8_mus_02 -{7186f56e-2df7-42eb-9375-3b272fe60ce1} event:/classic/pico8_mus_03 -{aaa40caf-ae3a-4f7e-a2b3-92c2ebe55df6} event:/classic/sfx0 -{3e4da5d7-22bc-4a2a-975f-962d0b13ea30} event:/classic/sfx1 -{6452fdae-f5bc-405a-95b0-ab1aeef0c504} event:/classic/sfx13 -{a9262674-7b9d-4aea-8a57-84c2f26049b6} event:/classic/sfx14 -{818fc44f-268e-48ff-8876-b8a64842b5ed} event:/classic/sfx15 -{4d5e60c8-4be0-42c1-9f24-e5ebecd840eb} event:/classic/sfx16 -{e52366bb-874d-4e52-97b0-5f84602ce96d} event:/classic/sfx2 -{5956eda7-31c9-47f6-8b62-f8b488c879a5} event:/classic/sfx23 -{21c14b80-cb2e-4f2e-8d1e-b8f3941b162c} event:/classic/sfx3 -{14db4278-02a9-4513-9361-0e53d9da8811} event:/classic/sfx35 -{4e545f69-79f2-4d28-950c-10cbb43e77e6} event:/classic/sfx37 -{bbabbdbc-da20-42af-9c0d-0daa8299cc7f} event:/classic/sfx38 -{09c2f490-6fc5-4d52-95e1-e873ff360487} event:/classic/sfx4 -{4e2a357d-8a57-4ea6-8df5-b9411495dfd6} event:/classic/sfx5 -{606bd67d-d92a-46f0-a2e1-0a95ea23bfef} event:/classic/sfx51 -{6ccb266f-2044-41dc-88bd-55d20f34627a} event:/classic/sfx54 -{55989b60-f060-4a18-87cc-0d1ad5428801} event:/classic/sfx55 -{c2f12510-a65f-4fe6-b8c2-d6dafd0bd33d} event:/classic/sfx6 -{52df708d-a28a-46e8-bf24-a7516b8d6960} event:/classic/sfx61 -{e489d78b-10c5-47e7-9ad5-bee84ab5df55} event:/classic/sfx62 -{99e37b23-955b-4b57-8297-e5c24a7618ee} event:/classic/sfx7 -{a0206dfc-61d3-447f-ac45-dbcaeeb2babf} event:/classic/sfx8 -{94844611-3d78-4843-bef4-5a7fb9cd3930} event:/classic/sfx9 -{0fa79a65-c103-4f72-84d6-7a22c9b2f43c} event:/env/amb/00_prologue -{04cc4be2-4acf-474a-a897-8709563af4c3} event:/env/amb/01_main -{f34c1fdf-5470-453f-afc5-c3ef0f0f65cb} event:/env/amb/02_awake -{409883b0-271d-4b20-9f0b-2d24e2f3c328} event:/env/amb/02_dream -{c37ce843-6664-44ab-9d07-8acdbc9efed8} event:/env/amb/03_exterior -{fee4e52e-5f96-4739-b609-07ccd6c60610} event:/env/amb/03_interior -{db641550-ff4f-430a-9dad-9e038e382ae5} event:/env/amb/03_pico8_closeup -{d0ea5750-b681-4bcd-a795-8a1fa908ac2e} event:/env/amb/04_main -{edc1c4bb-137f-4551-92f0-220b11118e0d} event:/env/amb/05_interior_dark -{36b91db4-ad22-4c8d-aa83-7964f95398ab} event:/env/amb/05_interior_main -{fb77cba9-f373-4f6b-9057-2fa3fffdd657} event:/env/amb/05_mirror_sequence -{8a921fb6-6b6c-4f2d-bd8b-8d7a319a44fc} event:/env/amb/06_lake -{b09159fb-d5a0-4daa-ab5f-0f1898bc3335} event:/env/amb/06_main -{2e69b6a7-2ab5-4a35-a307-27a52fdf7458} event:/env/amb/09_main -{a64aedd6-1f18-4f49-a41d-9a9f5ebbe616} event:/env/amb/worldmap -{c15f9104-cc0f-4d4f-b085-fb0e40d43924} event:/env/local/02_old_site/phone_lamp -{f271db26-d18b-488c-8a6f-d5f2b98039fa} event:/env/local/03_resort/broken_window_large -{3052bb3d-8343-4d09-bf59-d525735f4407} event:/env/local/03_resort/broken_window_small -{6217f4fb-20f3-4fc2-9ab5-45297d919bc5} event:/env/local/03_resort/pico8_machine -{9ccbd053-b248-430d-9e0b-d7d294b97e39} event:/env/local/06_reflection/boss_idle_ground -{ce0c8cf0-9aa6-4b7a-a66a-cd8509e5f674} event:/env/local/07_summit/flag_flap -{e9d25928-9e16-43ac-9e79-f099290d643c} event:/env/local/09_core/conveyor_idle -{57b3a09b-dbc8-435e-8d24-6d1f913ac85c} event:/env/local/09_core/fireballs_idle -{7fc7eafb-26b7-4b84-bfb4-1d779c22a066} event:/env/local/09_core/lavagate_idle -{7cc20e5f-81e5-4166-acc6-704dc13f46f3} event:/env/local/campfire_loop -{a780517b-19c9-47d4-88ab-091fb03f1f9e} event:/env/local/campfire_start -{cc54fdc5-ac1a-4df6-8180-03295b15aca1} event:/env/local/waterfall_big_in -{1a51e71c-fbf7-4f0c-b659-622ada05f17c} event:/env/local/waterfall_big_main -{76e57bb1-14a6-44cc-ae96-de5ae20e81fd} event:/env/local/waterfall_small_in_deep -{9bbc655b-22ce-4c82-897b-cfe0fad986d5} event:/env/local/waterfall_small_in_shallow -{ccef0473-c1e5-4dd0-8c94-fc3fe5fc95bb} event:/env/local/waterfall_small_main -{6a3f7aaf-bea3-4ac6-a919-d4b6eef81ae7} event:/env/state/underwater -{3f2d088f-f438-42c1-b9e9-6e6a44203865} event:/game/00_prologue/bridge_rumble_loop -{fb47d655-bc4f-4361-b4a2-d19e30518d24} event:/game/00_prologue/bridge_support_break -{319ecd12-335d-44ff-94ca-07fe499d4a87} event:/game/00_prologue/car_down -{45cba62a-4146-4fdb-8b39-643e9ab1782c} event:/game/00_prologue/car_up -{0c8ca90b-c14e-41ca-8233-ec0f74a6aab5} event:/game/00_prologue/fallblock_first_impact -{388260ad-8996-4220-a041-4165704072d4} event:/game/00_prologue/fallblock_first_shake -{477f6667-1b22-4276-a0cf-1370ae099d9e} event:/game/00_prologue/intro_vignette -{b9976863-f695-4730-b534-9299bf5f58b1} event:/game/01_forsaken_city/birdbros_finish -{9df8975f-f839-4ee6-91ec-61fcfc2a93a3} event:/game/01_forsaken_city/birdbros_fly_loop -{811bbaf0-41b3-4271-8cba-215e12986fb5} event:/game/01_forsaken_city/birdbros_thrust -{e9da9c8d-7bdb-4345-9724-35892a5b44ac} event:/game/01_forsaken_city/console_blue -{893973ec-2dd4-4478-b771-30ac723a7c9e} event:/game/01_forsaken_city/console_purple -{20819c4b-843b-46f2-8c05-8e062e76681d} event:/game/01_forsaken_city/console_red -{6b0262b0-9ae4-474e-9f76-aa1c59942351} event:/game/01_forsaken_city/console_static_long -{024160fc-f496-4d0a-9b5d-16d473524b95} event:/game/01_forsaken_city/console_static_loop -{214e17a6-b3af-451f-a29f-a08351abe64d} event:/game/01_forsaken_city/console_static_short -{6a535067-5141-44c5-92fa-69aa73d96058} event:/game/01_forsaken_city/console_white -{6ddd11c0-8481-4912-81be-ac3ecaeef96f} event:/game/01_forsaken_city/console_yellow -{99c35088-2d5e-4846-b27e-e1adfcd15afa} event:/game/01_forsaken_city/fallblock_ice_impact -{8d6d24fe-c860-4328-9650-c29b39ba87a2} event:/game/01_forsaken_city/fallblock_ice_shake -{c7f359ea-785f-4328-8135-4000ec1486bc} event:/game/01_forsaken_city/zip_mover -{f4f839d0-f7cc-402a-9767-ad79d20ae5d6} event:/game/02_old_site/lantern_hit -{44ed360f-e714-4a3a-99e8-3aed8ecf22cb} event:/game/02_old_site/sequence_badeline_intro -{77800c0d-5128-44d0-8bb1-67174af44406} event:/game/02_old_site/sequence_mirror -{7a436113-5059-4565-a239-927c4876b345} event:/game/02_old_site/sequence_phone_pickup -{1da40d8f-f7d3-425c-9f34-37684fda4aa4} event:/game/02_old_site/sequence_phone_ring_loop -{2c58d235-d6db-4974-825f-426ec121fe23} event:/game/02_old_site/sequence_phone_ringtone_loop -{5a79bbfe-cff0-4117-890d-90e4121c3fec} event:/game/02_old_site/sequence_phone_transform -{d75e80d5-50b4-4a0c-91c8-b7d377fd0d9b} event:/game/02_old_site/theoselfie_foley -{24197259-c364-40a3-b155-f4ba57503891} event:/game/02_old_site/theoselfie_photo_filter -{1eb80e39-81b3-45ec-a5c7-285e31d92245} event:/game/02_old_site/theoselfie_photo_in -{9524d309-340d-4bd4-9479-b6c08e2615cd} event:/game/02_old_site/theoselfie_photo_out -{ab48ef65-2a19-4e26-bd96-c91188020dd6} event:/game/03_resort/clutterswitch_books -{72ea8830-baf4-40b0-bc3a-d05ae7a3ace3} event:/game/03_resort/clutterswitch_boxes -{9f8d7e9f-ec6d-4903-81bc-e1c4e0869dc1} event:/game/03_resort/clutterswitch_finish -{bbec6527-f6d3-42a3-9ad5-4ebbeeebccc9} event:/game/03_resort/clutterswitch_linens -{99b2879f-9f5f-4c28-8a2f-46e379488863} event:/game/03_resort/clutterswitch_return -{4518ae95-ba77-4242-b617-6c18d2f4f570} event:/game/03_resort/clutterswitch_squish -{dcef90ad-4141-4451-a54a-139802c4cfe5} event:/game/03_resort/deskbell_again -{b65c24ca-a160-4d14-b930-2c851cc91f30} event:/game/03_resort/door_metal_close -{1a62e6d5-c2d5-45c7-8d15-ae1352a8b1a4} event:/game/03_resort/door_metal_open -{aec16b15-9f62-4a00-ad28-abfe8b8565dd} event:/game/03_resort/door_wood_close -{d2c8b607-3339-4882-bfa6-e2023dd9ab5f} event:/game/03_resort/door_wood_open -{d77f57f5-6a0e-41d7-aff8-3d2e35942458} event:/game/03_resort/fallblock_wood_impact -{705d6d6f-3d2e-46c5-babb-c84a5ddb35f9} event:/game/03_resort/fallblock_wood_shake -{94fcaef2-821e-4308-8532-4f141db24227} event:/game/03_resort/fallblock_wooddistant_impact -{f84f688a-176f-41b7-b8e9-96df630ff088} event:/game/03_resort/fluff_tendril_emerge -{477a28ea-70e0-4085-8053-d3bf776aedc2} event:/game/03_resort/fluff_tendril_recede -{11bddfee-df7f-41b8-84a0-8fbe19a1ba30} event:/game/03_resort/fluff_tendril_touch -{1e7997d7-a551-479e-90d3-f6929fd665ef} event:/game/03_resort/forcefield_bump -{4c443389-e3fc-41ab-b502-29d39a06f591} event:/game/03_resort/forcefield_idle_loop -{512ca8f8-a58f-4bd0-bd55-a237fa07c6c6} event:/game/03_resort/forcefield_vanish -{ce414756-a0c5-481c-9d0b-dc045f5d5771} event:/game/03_resort/key_unlock -{a20f939e-69a3-4b1a-a1ae-7dfcfa310fe0} event:/game/03_resort/lantern_bump -{142ae054-bc66-4b91-8c25-eff2ee9e4f05} event:/game/03_resort/memo_in -{a3b55290-30ce-464e-b669-9582d71e7c70} event:/game/03_resort/memo_out -{e4408a77-67c1-4e52-974d-4e1363d4cb6f} event:/game/03_resort/platform_horiz_left -{ce237948-99bc-45ba-a812-45c3166d1ce9} event:/game/03_resort/platform_horiz_right -{9ade5023-0a36-4b94-bd91-a542cee21719} event:/game/03_resort/platform_vert_down_loop -{457fdcf2-f81a-4b03-a669-e1193355a7c2} event:/game/03_resort/platform_vert_end -{a4c41f6f-ff8f-4ec8-b122-6c6ab1f81e23} event:/game/03_resort/platform_vert_start -{f894b1fb-3842-414c-aef3-ae5a271587d1} event:/game/03_resort/platform_vert_up_loop -{fc333ed7-13ad-42a5-903d-8ddb19226c0e} event:/game/03_resort/sequence_oshiro_intro -{e00ff4f4-f290-443a-ad1d-27e6c429c328} event:/game/03_resort/sequence_oshirofluff_pt1 -{e00d4196-5c66-4504-af86-08a0ed590b8e} event:/game/03_resort/sequence_oshirofluff_pt2 -{c3deeaef-d69e-4595-9bba-31caa24af6d8} event:/game/03_resort/suite_bad_ceilingbreak -{19ecfec2-e1a0-4335-862f-eaa1d9e679fd} event:/game/03_resort/suite_bad_exittop -{90e330ed-1d4f-4a5a-9dfd-1567b918879c} event:/game/03_resort/suite_bad_intro -{2b2852bd-7b5e-4c42-a05d-31b667dfc577} event:/game/03_resort/suite_bad_mirrorbreak -{9adf0f9b-8820-44de-aede-62403e1c095c} event:/game/03_resort/suite_bad_moveroof -{503d84f2-17c0-4a36-9f8c-7a17e4517e52} event:/game/03_resort/suite_bad_movestageleft -{1f43075b-c346-4a3d-a81d-b2a2fa18b281} event:/game/03_resort/trapdoor_frombottom -{9cf437b5-d65b-4dd9-a6a4-76fe3e7f9c14} event:/game/03_resort/trapdoor_fromtop -{3164e6e3-a335-4821-bbed-eb598dcae9ce} event:/game/04_cliffside/arrowblock_activate -{51df0abc-4ee9-4dd8-8123-d559a7f51383} event:/game/04_cliffside/arrowblock_break -{05956d91-3c60-437c-b83c-c7883b36408d} event:/game/04_cliffside/arrowblock_debris -{77afc34f-d0dc-4224-89c6-936762850581} event:/game/04_cliffside/arrowblock_move -{f478a136-13df-4b80-946d-1081658ef79f} event:/game/04_cliffside/arrowblock_move_child -{a09bfe4a-d2df-48da-af7f-64c1db765dcf} event:/game/04_cliffside/arrowblock_reappear -{d5e8a4f4-f627-4802-975c-b99ef4fea5ee} event:/game/04_cliffside/arrowblock_reform_begin -{7d6ccc8f-678e-4648-bead-3a5c82cfd916} event:/game/04_cliffside/arrowblock_side_depress -{9a3d6d97-4b11-4771-bf58-fbe2d7274579} event:/game/04_cliffside/arrowblock_side_release -{29ffaa1c-75e8-43e8-9002-54bc40193f8b} event:/game/04_cliffside/cloud_blue_boost -{24844c62-b116-4d87-b944-e748e897bd28} event:/game/04_cliffside/cloud_pink_boost -{39c755bc-96f7-4fe8-89b6-0b1a93a61881} event:/game/04_cliffside/cloud_pink_reappear -{bff1e723-0426-432f-8cbd-780f03e54492} event:/game/04_cliffside/gondola_cliffmechanism_start -{03879103-1510-4dca-a1d0-5e8749bfa6a1} event:/game/04_cliffside/gondola_finish -{056c87c9-457e-475f-b216-206d73982cd2} event:/game/04_cliffside/gondola_halted_loop -{e714a1e9-e0de-4ff0-bb70-9290eeafb029} event:/game/04_cliffside/gondola_movement_loop -{b8669a2f-941b-47c3-9e37-fff4c4086a54} event:/game/04_cliffside/gondola_restart -{4071aef2-1c21-4095-9fe9-500c007d3dcd} event:/game/04_cliffside/gondola_scaryhair_01 -{6817fd65-b0e9-43b5-8338-029e57b0f794} event:/game/04_cliffside/gondola_scaryhair_02 -{d0fff247-3b15-4a9c-8606-00cf2da9475a} event:/game/04_cliffside/gondola_scaryhair_03 -{81f28bb7-3b0a-43e7-bcd8-4bab557fe657} event:/game/04_cliffside/gondola_theo_fall -{b3501af7-543d-4a16-ba86-5fb0da4416fd} event:/game/04_cliffside/gondola_theo_lever_fail -{898f077b-02af-4524-883d-8bd2a8d7bd9b} event:/game/04_cliffside/gondola_theo_lever_start -{8a992dbc-82cf-41f6-9ebe-493eb1dd3c3a} event:/game/04_cliffside/gondola_theo_recover -{6d7ed51e-7e2c-43ed-913d-6617d6dd43e0} event:/game/04_cliffside/gondola_theoselfie_halt -{e916ead7-7d6f-43a7-aaf7-b6a507a6664f} event:/game/04_cliffside/greenbooster_dash -{bcd8c865-476c-4ff8-a8a4-facf110321a8} event:/game/04_cliffside/greenbooster_end -{a0bb25ba-3b9d-45a1-b4cd-214fe07288c0} event:/game/04_cliffside/greenbooster_enter -{80c246ab-79ac-4190-81c0-56bc959e67c8} event:/game/04_cliffside/greenbooster_reappear -{6bfa7995-5b42-4cc2-8459-6c650085f0c2} event:/game/04_cliffside/snowball_impact -{1c2db8f7-e816-4ebc-b825-0fd27357291e} event:/game/04_cliffside/snowball_spawn -{f2966dfb-524f-456f-9107-d2b2c8bbf398} event:/game/04_cliffside/stone_blockade -{c9374bde-64a8-4f26-b4ce-d84b28dac8c8} event:/game/04_cliffside/whiteblock_fallthru -{564d50fe-6229-4fc5-bef4-771b026308f2} event:/game/05_mirror_temple/bladespinner_spin -{097d5975-dee1-42e2-a3f0-1524b9d60fc6} event:/game/05_mirror_temple/button_activate -{e3598466-186b-4d6e-92bf-0a796a4b5f6a} event:/game/05_mirror_temple/button_depress -{797e3c30-39f9-4ab4-9749-9b7451598ec4} event:/game/05_mirror_temple/button_return -{3f6dc969-2f5c-4324-9cef-fc0119536f80} event:/game/05_mirror_temple/crackedwall_vanish -{1e303df8-ca93-4c8a-83a4-671e311469b0} event:/game/05_mirror_temple/crystaltheo_break_free -{5d717d53-4596-4f11-8f44-c73fb9543aba} event:/game/05_mirror_temple/crystaltheo_hit_ground -{ac5d3d51-3aac-4c22-a608-ba0bb777ca27} event:/game/05_mirror_temple/crystaltheo_hit_side -{f64177a2-2611-49cc-8c63-d74c1e29c8a3} event:/game/05_mirror_temple/eye_pulse -{ca49621b-2ecf-4c77-8282-ba1719986f0f} event:/game/05_mirror_temple/eyebro_eyemove -{22a41a42-5e6f-4185-85d4-b5d1a8c38d4d} event:/game/05_mirror_temple/eyewall_bounce -{7f180cd1-0f90-433d-b71e-c9a6cc7f49e7} event:/game/05_mirror_temple/eyewall_destroy -{68e31409-b316-478b-8eb3-67a885e9dd33} event:/game/05_mirror_temple/gate_main_close -{3ec0a31a-f6af-4426-aaa1-db57098dbd39} event:/game/05_mirror_temple/gate_main_open -{adbfae43-5c5b-4b38-abd2-e13215ebde56} event:/game/05_mirror_temple/gate_theo_close -{2b2b58c7-88e0-4575-aaa5-fbf276beddcf} event:/game/05_mirror_temple/gate_theo_open -{2cc437e8-70f0-48b0-ac2a-0dc93ee06b87} event:/game/05_mirror_temple/key_unlock_dark -{fef47165-cad5-492a-8a42-3db9cc48c2bd} event:/game/05_mirror_temple/key_unlock_light -{4fa2a3d9-560d-4546-92b7-969d2ca1fb29} event:/game/05_mirror_temple/mainmirror_reveal -{b857bbcf-540e-46fd-af37-5ea6d12e28f2} event:/game/05_mirror_temple/mainmirror_torch_lit_1 -{35abfea4-7b3b-489d-bcd8-431b93b87fa4} event:/game/05_mirror_temple/mainmirror_torch_lit_2 -{36604f79-14aa-4a46-a7b3-42a15fc7fbc1} event:/game/05_mirror_temple/mainmirror_torch_loop -{bdeb0f35-c06a-4f67-96d6-57869f22114f} event:/game/05_mirror_temple/redbooster_dash -{b3da9cec-f45e-4dcd-bf8b-c84a7dd5c56b} event:/game/05_mirror_temple/redbooster_end -{1ed8d7f1-ef06-4db9-98d2-4f2ea3b46e7b} event:/game/05_mirror_temple/redbooster_enter -{7f0e5b69-8d8a-4983-ac98-deb970106cc6} event:/game/05_mirror_temple/redbooster_move -{ae2f6ea7-bd05-41df-a0dd-044058292d72} event:/game/05_mirror_temple/redbooster_reappear -{39c3eab6-ef3e-4ffb-8653-b0345fc67e20} event:/game/05_mirror_temple/room_lightlevel_down -{752d010d-81f5-4ea8-a9ab-b99d4e0e1dd9} event:/game/05_mirror_temple/room_lightlevel_up -{9521ed4e-a395-4ef2-89cc-3a3c99942108} event:/game/05_mirror_temple/seeker_aggro -{a35ec65b-6b2b-47b1-8c5f-b13facb6487f} event:/game/05_mirror_temple/seeker_booped -{3147835f-3002-4097-bc14-53c456a8501f} event:/game/05_mirror_temple/seeker_dash -{051055e4-9308-4765-9a0b-877491039301} event:/game/05_mirror_temple/seeker_dash_turn -{48325639-2492-43e0-81de-cd7898db8b8c} event:/game/05_mirror_temple/seeker_death -{d7f87c78-d631-4cb3-8487-f077d65ed4a5} event:/game/05_mirror_temple/seeker_hit_lightwall -{b51e22cd-a7bb-42e5-a0d9-af5e9bfe3c36} event:/game/05_mirror_temple/seeker_hit_normal -{ded98d91-1f1e-4fcf-b177-959028cd379c} event:/game/05_mirror_temple/seeker_playercontrolstart -{fd08f871-88dc-484f-8773-497258aa3034} event:/game/05_mirror_temple/seeker_revive -{439c8be0-4350-4504-9df9-173abc3e15bb} event:/game/05_mirror_temple/seeker_statue_break -{1b02729d-bb1d-4366-94fb-a5683edbfa38} event:/game/05_mirror_temple/swapblock_move -{c4d97750-9512-487d-bd98-cfbe021a2702} event:/game/05_mirror_temple/swapblock_move_end -{a9879415-f054-4486-9582-44cf599b5e70} event:/game/05_mirror_temple/swapblock_return -{7820adbb-5c57-46ac-bde1-9ecba7fa730e} event:/game/05_mirror_temple/swapblock_return_end -{2bf6eb6d-2bbb-4bbf-bf76-1f37fd8b6098} event:/game/05_mirror_temple/torch_activate -{3d116858-7da6-4838-a3bc-5e1f1fb73fd4} event:/game/06_reflection/badeline_feather_slice -{79ca9943-db1f-4118-9c48-1893e5937e42} event:/game/06_reflection/badeline_freakout_1 -{45b9d18d-7871-4c32-93af-521b3bd55483} event:/game/06_reflection/badeline_freakout_2 -{3b218b08-138f-48ab-9e13-00d093114e40} event:/game/06_reflection/badeline_freakout_3 -{3a28d465-3e86-4e3c-8ffd-5e5ba8449c95} event:/game/06_reflection/badeline_freakout_4 -{d1915e57-1952-448d-8610-6b123f6b449c} event:/game/06_reflection/badeline_freakout_5 -{6d25e0a4-6603-4ead-b934-ab432c153bd9} event:/game/06_reflection/badeline_pull_cliffbreak -{74f464a2-074c-4693-9aa6-fc4b1a875f50} event:/game/06_reflection/badeline_pull_impact -{a78e5da7-9ee8-4ba7-bdf0-f3fa45dfb3d8} event:/game/06_reflection/badeline_pull_rumble_loop -{b03ce754-f33d-44f6-aaa8-4f7702dfc335} event:/game/06_reflection/badeline_pull_whooshdown -{03185ab0-0f08-4c6e-a6ae-1c44da6b2842} event:/game/06_reflection/boss_spikes_burst -{a67c7b2a-2efe-437d-b4eb-9b0b7c9a5c38} event:/game/06_reflection/crushblock_activate -{0b58832d-4e27-44db-a154-558d490c3083} event:/game/06_reflection/crushblock_impact -{964ff961-da31-4ff4-b344-7b7dd4ddc7d7} event:/game/06_reflection/crushblock_move_loop -{a8ad11bd-1740-42fc-a83b-e067c2461c18} event:/game/06_reflection/crushblock_move_loop_covert -{251c3dfb-0cab-4ef7-bb2c-2b0f8aa56537} event:/game/06_reflection/crushblock_rest -{115ebebd-cb97-4ba1-bc55-5f6dac63a699} event:/game/06_reflection/crushblock_rest_waypoint -{b04421be-109d-400f-8797-cdd05d0f6bd7} event:/game/06_reflection/crushblock_return_loop -{88cc2646-c70d-47bb-9e88-1de934fa1792} event:/game/06_reflection/fall_spike_smash -{441f8a0a-8783-4894-b45c-815c95877931} event:/game/06_reflection/fallblock_boss_impact -{d7c6ea52-c946-4099-9a90-553be5d5335b} event:/game/06_reflection/fallblock_boss_shake -{eb66579e-6a05-4b8d-ad27-0f39703998c7} event:/game/06_reflection/feather_bubble_bounce -{6e29b787-1f7a-4f44-84a8-eb867342a37f} event:/game/06_reflection/feather_bubble_get -{eef6081c-aa94-4203-a235-41cc41007d4e} event:/game/06_reflection/feather_bubble_renew -{3cafbad4-ca29-4798-815a-ada3a887ffd3} event:/game/06_reflection/feather_get -{9a2f4eef-a598-4031-9600-4ed2d0ecec3c} event:/game/06_reflection/feather_reappear -{38215515-d671-4635-a2ff-9b6749619301} event:/game/06_reflection/feather_renew -{e08e627f-334c-46f1-b8a8-9c090cadc788} event:/game/06_reflection/feather_state_bump -{ea1e1d39-ace6-481c-8438-d57709355f1e} event:/game/06_reflection/feather_state_end -{a7153155-8c54-4635-9ea5-5423d9cd02e5} event:/game/06_reflection/feather_state_loop -{7d1dcd4a-298d-4943-b70d-f41311ec4f1b} event:/game/06_reflection/feather_state_warning -{61497bfa-cd5f-4c26-86ae-a12d04fd5dee} event:/game/06_reflection/hug_badeline_glow -{3aded16d-06f6-4a37-aa4c-91bd91ee290a} event:/game/06_reflection/hug_image_1 -{d375e1f8-d1ac-47f2-8bc9-bc51029404e6} event:/game/06_reflection/hug_image_2 -{21cc70d3-7469-431e-b31d-63844d7005c5} event:/game/06_reflection/hug_image_3 -{97ad5be6-ab5a-4587-9868-1a6a36befc48} event:/game/06_reflection/hug_levelup_text_in -{be107a92-39f3-4789-8fbb-b1055dee27ee} event:/game/06_reflection/hug_levelup_text_out -{21db4b0c-6524-4545-8266-c6ea1bf032ef} event:/game/06_reflection/pinballbumper_hit -{8d6249fc-9f0d-4980-b876-036252ae209d} event:/game/06_reflection/pinballbumper_reset -{34751b86-7136-491f-b281-4acfc5abc130} event:/game/06_reflection/scaryhair_move -{990ebd4d-3117-4c00-8328-88b757411c91} event:/game/06_reflection/scaryhair_whoosh -{91dc7f98-2590-4c28-adcb-02c1881cf8d2} event:/game/06_reflection/supersecret_dashflavour -{8b071bc7-bb71-4db6-9a0c-78c576426dc8} event:/game/06_reflection/supersecret_heartappear -{3e6f0df6-6fe4-47de-b2c0-d08bcfa21319} event:/game/06_reflection/supersecret_torch_1 -{ba61f3cf-14b9-4d76-b433-4a6d8f14dedc} event:/game/06_reflection/supersecret_torch_2 -{a962651f-30eb-4a9c-97fc-d835f6a87783} event:/game/06_reflection/supersecret_torch_3 -{954696fc-a63e-4463-a54c-10838017aa8e} event:/game/06_reflection/supersecret_torch_4 -{007817b9-722a-44c8-8e14-cc66233ce495} event:/game/07_summit/altitude_count -{6fb5dd68-3aab-4a50-ad31-33d08b2e88e5} event:/game/07_summit/checkpoint_confetti -{98bbbca2-1b04-495b-8a02-7eae819d473c} event:/game/07_summit/gem_get -{c4168a8d-2840-4f88-8dae-c53ae7a67551} event:/game/07_summit/gem_unlock_1 -{e67a6421-0ca8-4051-98f4-8ee400f0db93} event:/game/07_summit/gem_unlock_2 -{b7fd1fc1-f041-42ef-82c3-ff792e998a1a} event:/game/07_summit/gem_unlock_3 -{dccaadfe-f788-4980-8a91-4f8fadb26609} event:/game/07_summit/gem_unlock_4 -{f7e67666-e4fe-49db-a6e3-209bfae067a4} event:/game/07_summit/gem_unlock_5 -{c8ad0627-526a-4251-b3c9-9e77637278a0} event:/game/07_summit/gem_unlock_6 -{4ab3c742-e5f8-4337-a38e-ea8ed81f3585} event:/game/07_summit/gem_unlock_complete -{d16b3d24-62a8-428d-a6c9-9a1d9b0b47db} event:/game/09_core/bounceblock_break -{9d02cd4d-a187-4104-a985-505de199fb25} event:/game/09_core/bounceblock_reappear -{7be458ab-5b1e-4237-84e7-ead255468209} event:/game/09_core/bounceblock_touch -{c11484c7-8cc1-4328-b074-2ed680b452f1} event:/game/09_core/conveyor_activate -{a97e79b8-1e79-4f31-a648-7b99414a800c} event:/game/09_core/final_heart_get -{91d12529-3e7b-47e2-bc73-2037267fc6ca} event:/game/09_core/frontdoor_heartfill -{12eebf33-5c32-46f2-b988-00fdffb83b6d} event:/game/09_core/frontdoor_unlock -{2718ffac-db8e-4f95-b54e-253134bd48a5} event:/game/09_core/hotpinball_activate -{3988aed8-0d51-4226-8ebb-89a25c823c78} event:/game/09_core/iceball_break -{6c7ea8bb-a843-4cd6-8397-c31344ae3a83} event:/game/09_core/iceblock_reappear -{cb58d270-9f66-4686-aea7-ca779f5ce612} event:/game/09_core/iceblock_touch -{2823a745-a4bf-428a-9c9f-01d36d543f63} event:/game/09_core/pinballbumper_hit -{d9c39b1e-abbe-40b0-a78a-b78b61d94ebd} event:/game/09_core/rising_threat -{4873d018-21da-4850-8503-df248e413cb5} event:/game/09_core/switch_dies -{e08cde3f-631d-47ab-a94a-9281717c3219} event:/game/09_core/switch_to_cold -{9b4a375f-ac9e-4d57-a145-b7e488e46191} event:/game/09_core/switch_to_hot -{93c5f4b9-cb2c-4db0-ad3f-b05272ff8950} event:/game/general/assist_dash_aim -{f32eab8f-468d-430f-8fb4-c603abc19aab} event:/game/general/assist_dreamblockbounce -{0cc0f8af-53e0-4301-a6ba-9d3545a34e4e} event:/game/general/assist_nonsolid_in -{992b2466-36d9-4202-a439-2a74a43a19d1} event:/game/general/assist_nonsolid_out -{b98b9406-a64d-4428-b882-a33366f50cbf} event:/game/general/assist_screenbottom -{5f8d988c-528d-4d55-a6e2-4c47bfc50176} event:/game/general/bird_in -{51d238e6-4f1b-46f6-a94d-df78f8df8ac7} event:/game/general/bird_land_dirt -{391d10bd-1577-4ae2-8370-04e1bd3f0fc5} event:/game/general/bird_peck -{4d1ae0ae-db96-47b7-925c-ce84c6ab722e} event:/game/general/bird_squawk -{7ea54ed8-0285-4dfc-a1ce-558444a4aa59} event:/game/general/bird_startle -{73b07905-9234-4900-af6e-b27820978106} event:/game/general/birdbaby_flyaway -{855749a2-8c5a-4db6-9877-f7cfd3a2183c} event:/game/general/birdbaby_hop -{2708f97c-8a18-4c6b-9bd7-1abf90dac0f6} event:/game/general/birdbaby_tweet_loop -{0e132294-09bd-44a3-9af3-9392521eddef} event:/game/general/cassette_block_switch_1 -{4286af39-b45f-42e6-887d-f8515180d3f8} event:/game/general/cassette_block_switch_2 -{9db695ce-ce56-4025-9528-030d6b599c86} event:/game/general/cassette_bubblereturn -{111996f6-8bae-408f-86d1-0aeae8203f4b} event:/game/general/cassette_get -{4c42d16c-381c-43ca-9d5d-56595e196b08} event:/game/general/cassette_preview -{1acb8e84-5f79-4dcd-86aa-e8a514535b7d} event:/game/general/crystalheart_blue_get -{96349ed6-cd24-4010-a9ee-0e93101a6609} event:/game/general/crystalheart_bounce -{10ff4e08-9448-49ae-8092-d402bb128538} event:/game/general/crystalheart_gold_get -{78f2deb2-fccc-4d1d-b78a-9667d574bbf3} event:/game/general/crystalheart_pulse -{e04dbcbd-4476-4174-9046-1e92febcc08e} event:/game/general/crystalheart_red_get -{8b672ab7-0d76-45fb-a9e9-1676ca014d6f} event:/game/general/debris_dirt -{3795b486-390b-46cc-97f9-dced1a83453b} event:/game/general/debris_stone -{972b07a3-38ff-4818-b24d-151db5d3a044} event:/game/general/debris_wood -{735f3afc-00bc-46da-94f1-2cb51e3bfecc} event:/game/general/diamond_return -{a47180e1-9bc2-4dbc-86c7-6402cea2e2be} event:/game/general/diamond_touch -{5381856a-d548-4a31-b7e5-b94d2a72881e} event:/game/general/fallblock_impact -{a9cc805b-cc3c-4e29-af3b-bc69914e5a10} event:/game/general/fallblock_shake -{3070bcdd-928f-4ffb-ba75-d43dbb2c2864} event:/game/general/key_get -{2b6c4db0-c9c8-4be7-8835-b4866bc1e4f5} event:/game/general/lookout_move -{60836b2c-9999-4f03-8801-2c01dc40b163} event:/game/general/lookout_use -{f372e3a9-bb65-4343-bf47-b87d18d10383} event:/game/general/passage_closed_behind -{e217436d-8f73-462c-9877-ac095e8f20b8} event:/game/general/platform_disintegrate -{58e5b7db-c18b-4399-bd5c-dd592c9c1b47} event:/game/general/platform_return -{38e9f295-6400-41e8-b574-9a1e8c908622} event:/game/general/secret_revealed -{2626645e-6392-4963-8361-4dccfa511758} event:/game/general/seed_complete_berry -{26391bcd-7613-49ad-a9bd-529f7bcaeb29} event:/game/general/seed_complete_main -{884bccb8-958a-4278-8a1b-daf74fff37c0} event:/game/general/seed_poof -{b5d1aeec-3d7e-4eed-9e82-5014b99162ce} event:/game/general/seed_pulse -{c4df15cb-44b5-4913-b238-29083f1d8b0a} event:/game/general/seed_reappear -{6160ad7b-16f6-49a5-aa9b-55d75da5a8e1} event:/game/general/seed_touch -{1a7858a9-96f8-426a-a06f-0c2750e43f85} event:/game/general/spotlight_intro -{b38c0f26-cef2-487f-b99c-295757ccd5a9} event:/game/general/spotlight_outro -{a4c52eee-f6a0-4ebe-976f-fab38d4cfa7a} event:/game/general/spring -{2452bb12-5d79-4849-b62b-17cc06744679} event:/game/general/strawberry_blue_pulse -{5c271b0b-eba2-400b-8011-e1d673324674} event:/game/general/strawberry_blue_touch -{3b9e48f1-e72d-46a6-909b-4ce5044c4253} event:/game/general/strawberry_flyaway -{3b45b8d4-ff15-4d36-9411-3e4ce2726377} event:/game/general/strawberry_get -{e144b578-20dd-4722-897c-24de90562b7b} event:/game/general/strawberry_laugh -{0886e368-bce4-4922-97c3-edeadf714e29} event:/game/general/strawberry_pulse -{525d00db-bc31-4054-9f61-0238bfd62941} event:/game/general/strawberry_touch -{dd319a09-d197-4604-8ebf-c5fee614d863} event:/game/general/strawberry_wingflap -{5a1e6a52-fa6a-44fb-b7ef-931a000b7c95} event:/game/general/thing_booped -{30fafd37-cd47-4a56-ab3b-0cc8f1beec5b} event:/game/general/touchswitch_any -{0d6edb8b-2936-4e11-bc13-2c8bba70cbfa} event:/game/general/touchswitch_gate_finish -{845556f0-842c-46d2-ac6c-64fc05f14cb0} event:/game/general/touchswitch_gate_open -{0bf56c65-3c71-4a0a-bce1-0bc63af5b3f6} event:/game/general/touchswitch_last -{effc3510-2efe-422f-aa3a-30b8ace60533} event:/game/general/touchswitch_last_cutoff -{479dda0f-e99f-478b-96c0-6367cf06cab2} event:/game/general/touchswitch_last_oneshot -{329fd34b-cca4-4d8c-a07e-fdf8be436e38} event:/game/general/wall_break_dirt -{7c01de41-a31a-43c3-9c0f-9ae85ad94c68} event:/game/general/wall_break_ice -{92f75010-4e90-428e-834c-1315ddbd9460} event:/game/general/wall_break_stone -{634bdd66-3f53-4679-8ced-fadfc60d412f} event:/game/general/wall_break_wood -{51873fdd-604e-4810-9db1-8c6e5a6049b5} event:/music/cassette/01_forsaken_city -{e44a2aa5-f96e-4d75-8018-8bee278017ad} event:/music/cassette/02_old_site -{bb2ac8fc-6353-4127-bc7b-7439262508da} event:/music/cassette/03_resort -{bda820f1-0c6f-4c4f-8e8b-615d94a6bb89} event:/music/cassette/04_cliffside -{117d38ce-6174-491e-9564-107d17a7b187} event:/music/cassette/05_mirror_temple -{832066ac-c78a-4c60-a7d0-dbc2c4712dd7} event:/music/cassette/06_reflection -{464d1185-b4c6-4ab8-b570-ed2a92c3aade} event:/music/cassette/07_summit -{ac98793d-c890-4675-bb13-3a3aec282b0b} event:/music/cassette/09_core -{474ccf9f-bad7-48e2-b7c6-df307b74e4a5} event:/music/lvl0/bridge -{8b890963-5cea-4df9-8d73-ca2116519928} event:/music/lvl0/intro -{02fa256c-1e08-46e5-9082-85c38b403d4c} event:/music/lvl0/title_ping -{1af3da54-a900-4929-acdf-5098a27c4d8e} event:/music/lvl1/main -{294d9147-9177-42ba-9bd8-04defb79a6a6} event:/music/lvl1/theo -{aa60a19a-6bab-43d2-9b18-9c0f39087123} event:/music/lvl2/awake -{11062cdc-badd-4bd5-96b2-f47463ddd9b2} event:/music/lvl2/beginning -{e2d41f6a-ec7d-4b25-a74f-3746b7207f4f} event:/music/lvl2/chase -{c6d8b40c-ab8b-415e-8279-fd5ddfde7f68} event:/music/lvl2/dreamblock_sting_pt1 -{f0a05548-59a3-4b71-baf0-2d591c25677e} event:/music/lvl2/dreamblock_sting_pt2 -{8d56aaf8-b0f5-4f8c-b27a-9c07e13e5fa2} event:/music/lvl2/evil_madeline -{78ac6937-dfd7-4d1c-a3b0-a71818c2cc49} event:/music/lvl2/mirror -{a013a019-5c83-47fa-8c76-bf26a0ee3ab7} event:/music/lvl2/phone_end -{92c762da-6b09-4ae6-bea6-6264d405d309} event:/music/lvl2/phone_loop -{73c95a24-6c35-4dc5-893d-7e79ecc61481} event:/music/lvl3/clean -{31a7988d-80bf-40ee-84f0-644a17abe6cc} event:/music/lvl3/explore -{cc153928-7bcc-4c83-b9e2-586dca338588} event:/music/lvl3/intro -{16a8585c-e163-4594-bbeb-5bb2977f947f} event:/music/lvl3/oshiro_chase -{416d5500-d42a-4981-baa8-83381cbbce3f} event:/music/lvl3/oshiro_theme -{e15a069f-4f5d-430e-9741-b8fffb62ab3d} event:/music/lvl4/heavy_winds -{bd2bf7cc-8196-4f69-9548-418ea37eb9fd} event:/music/lvl4/main -{afcdbcca-8216-4659-ad5d-a2f4d836e1ee} event:/music/lvl4/minigame -{ddeb5097-ebd0-4e92-964c-b9458ae3ff18} event:/music/lvl5/middle_temple -{7e1c842a-b3d8-440a-9c39-196826b8bee2} event:/music/lvl5/mirror -{1b5af286-b8ce-444a-8f9b-03bc5fb66166} event:/music/lvl5/mirror_cutscene -{b19f2493-502a-408c-847b-4e0bb666e202} event:/music/lvl5/normal -{2d16d1b8-f6c7-472d-879f-c583537302d7} event:/music/lvl5/seeker_drums_layer -{466271ba-3e10-4943-ba99-0bd63ade7636} event:/music/lvl6/badeline_acoustic -{42d3ce68-8863-487c-bc3c-a1f74bd85911} event:/music/lvl6/badeline_fight -{e1a395a5-aa17-4418-ac3d-ffa51c618014} event:/music/lvl6/badeline_glitch -{f1e2f6f3-29d9-4914-8296-4261a223d3ac} event:/music/lvl6/madeline_and_theo -{29904477-ac10-4b8d-8858-0ac06df88d02} event:/music/lvl6/main -{1841d8c6-d1af-4319-9926-9ed41e4a8d85} event:/music/lvl6/secret_room -{78fca5fd-8d0a-42d2-b5d8-3501cef99c85} event:/music/lvl6/starjump -{f351bdf5-087b-451d-92c6-1ac651117107} event:/music/lvl6/the_fall -{435249ff-4293-4369-8652-5d2f314551c5} event:/music/lvl7/final_ascent -{443b630c-e94c-4aba-ad10-4cc7468d49cb} event:/music/lvl7/main -{f335427a-7961-4e4e-b94c-58c2a4490182} event:/music/lvl8/main -{38e2f39c-382d-4136-86fd-e24520f3b71e} event:/music/lvl9/main -{4d5dc6c1-fd41-4e8d-bf91-84a15631055d} event:/music/menu/complete_area -{ac1cb91e-c5ed-42f9-82f9-847cc2c0df9e} event:/music/menu/complete_bside -{705df905-2639-470f-963f-408f30e23a2b} event:/music/menu/complete_summit -{f47636da-f583-418c-beb4-f4e0d3e80ec3} event:/music/menu/credits -{a8ac3582-9e94-40af-b76a-2ff51f076e6f} event:/music/menu/level_select -{889ddcf6-8d06-4106-9e73-f5d63f964717} event:/music/remix/01_forsaken_city -{1d8f0733-f7c7-4af1-947d-da16faaa673a} event:/music/remix/02_old_site -{ec2e5fa5-9f50-4fd7-bdc2-45474c4967a3} event:/music/remix/03_resort -{a0b49e74-eb0b-4519-bb38-987095b66578} event:/music/remix/04_cliffside -{8efb347e-e501-4bab-9349-7b6dbba66551} event:/music/remix/05_mirror_temple -{51acfb4c-c5b1-4bd7-af44-a0c2472327db} event:/music/remix/06_reflection -{16aaecdf-ca62-4273-9bff-7900f3d92a4b} event:/music/remix/07_summit -{10deb10e-5387-4e38-8ce5-aa83feaa5cf7} event:/music/remix/09_core -{a38a422d-553d-4a98-bd77-4fb94c9a40a8} event:/new_content/char/badeline/birdcrash_scene_float -{cad1c006-44ce-4a92-8c90-5996befaa8c4} event:/new_content/char/badeline/booster_finalfinal_part1 -{db21d96e-f70a-4799-987e-574c9f68cc2d} event:/new_content/char/badeline/booster_finalfinal_part2 -{5a554fe3-4398-4960-ab5e-70dc62685ded} event:/new_content/char/badeline/booster_first_appear -{4316d3ba-709e-4fc5-8e8c-0279daf4659e} event:/new_content/char/badeline/booster_relocate_slow -{fd06af1f-776a-4879-9100-91b14c48bb66} event:/new_content/char/badeline/maddy_join_quick -{bd5452ab-7b14-4571-bca2-21656793c2d6} event:/new_content/char/granny/cane_tap_ending -{1cc5e3b3-4078-4728-9405-a5ab3ac94759} event:/new_content/char/granny/dissipate -{eeab0167-3ebd-45b2-b701-7dc9f98959e0} event:/new_content/char/madeline/Vanilla Backup/death_golden -{b17c7077-e1c9-4ba8-8f49-4eec29d9f1ce} event:/new_content/char/madeline/bounce_boost -{5534c1ec-5c0a-4589-a5c7-cbb3fcbfa160} event:/new_content/char/madeline/glider_drop -{e2c752dc-10dc-41e7-8709-95cbbcfe9104} event:/new_content/char/madeline/hiccup_ducking -{57531525-33bf-45a5-bf27-306814b95457} event:/new_content/char/madeline/hiccup_standing -{89dec006-6bd9-4491-b238-bfc13a072506} event:/new_content/char/madeline/screenentry_golden -{a260d3a1-20b3-44f1-9543-e8ec9bcccfe9} event:/new_content/char/madeline/screenentry_gran -{ff56e917-feba-4631-84eb-2718c65c1e58} event:/new_content/char/madeline/screenentry_gran_landing -{82b35daf-877f-401a-9b49-6a4bb9ff5bc3} event:/new_content/char/madeline/screenentry_lowgrav -{0653a7ee-59e5-4915-8695-dcba555607b5} event:/new_content/char/madeline/screenentry_stubborn -{c2e8cdc9-b6a3-4f66-8500-af91182f176e} event:/new_content/char/madeline/death_golden -{e36926d3-b7b4-409f-904c-5d5d1131b55a} event:/new_content/char/tutorial_ghost/appear -{a41658fa-080f-4fde-9a63-d571b36237ed} event:/new_content/char/tutorial_ghost/dash_red_left -{2e4105eb-0489-4a3b-8466-b356d06a7f8c} event:/new_content/char/tutorial_ghost/dash_red_right -{14db73f4-6a9b-494a-b1b6-1e82763b508e} event:/new_content/char/tutorial_ghost/disappear -{052e57b9-276e-4eee-ab21-09a978ef3621} event:/new_content/char/tutorial_ghost/dreamblock_sequence -{97781d70-8798-43ce-b1b8-aec9039c3262} event:/new_content/char/tutorial_ghost/footstep -{6279ab0b-6594-4756-8495-4eefa78093a1} event:/new_content/char/tutorial_ghost/grab -{8490f47c-fa00-40cb-a2ff-2d94c2ac9292} event:/new_content/char/tutorial_ghost/handhold -{94bde26a-6355-4896-b674-d44adf70705d} event:/new_content/char/tutorial_ghost/jump -{0f15b7da-7808-4c29-8bb8-382c1ec6e407} event:/new_content/char/tutorial_ghost/jump_super -{5e86985d-5063-4a53-ad24-46896ff682a2} event:/new_content/char/tutorial_ghost/land -{03c328c7-8d1c-48c2-b2e6-d1d8225e4d89} event:/new_content/env/local/cafe_computer -{e88c096c-382f-4add-aa77-36653d4a0b14} event:/new_content/env/local/cafe_sign -{4525fa59-c11e-4863-843f-3783571b11cf} event:/new_content/env/local/kevinpc -{9cb8fd7f-f28f-4f21-8153-2d3c5830e0a1} event:/new_content/env/local/tutorial_static_left -{e0a3bd21-b245-4733-9fb5-69f2261b4ce5} event:/new_content/env/local/tutorial_static_right -{58a69c31-956e-42a2-a9a2-359e67921ffa} event:/new_content/env/10_electricity -{7c6562f4-68b1-484a-8e50-a935f1ab56f7} event:/new_content/env/10_endscene -{3f8d0871-07ac-49dd-b7c2-893043eaaf83} event:/new_content/env/10_grannyclouds -{fceb8b1e-7d92-400b-903f-406dade6162c} event:/new_content/env/10_rain -{f89e2eed-f3a6-46bf-9de1-9a3827ff79db} event:/new_content/env/10_rushingvoid -{589ad0f1-53f4-4567-b6a1-34c670afb80d} event:/new_content/env/10_space_underwater -{a351d4ea-7c48-43ce-a371-db4ee6f5ddc5} event:/new_content/env/10_voidspiral -{447f67ef-0777-4a7a-94e2-c00300316d10} event:/new_content/game/10_farewell/bird_camera_pan_up -{d3a1e63e-2265-4652-988f-3d07724ab466} event:/new_content/game/10_farewell/bird_crashscene_leave -{2bb2c164-719e-4ead-8dbd-f6943e93ec31} event:/new_content/game/10_farewell/bird_crashscene_recover -{a1745c53-2c9e-4545-bc28-275b56d913d8} event:/new_content/game/10_farewell/bird_crashscene_relocate -{61f52438-bee9-4393-ac9b-10a03ec220b9} event:/new_content/game/10_farewell/bird_crashscene_start -{712650d6-3edc-40f8-96e7-c4d70aabc7fb} event:/new_content/game/10_farewell/bird_crashscene_twitch_1 -{59ecf2bc-ad5d-4055-ad4d-c477789353f9} event:/new_content/game/10_farewell/bird_crashscene_twitch_2 -{84666200-9dc1-435c-86dc-c576f7fea100} event:/new_content/game/10_farewell/bird_crashscene_twitch_3 -{ba4f0d7f-6781-437f-8f40-babd44ffd7e5} event:/new_content/game/10_farewell/bird_flappyscene -{613e3e96-0787-4e4c-b1b9-d5b85edb09f2} event:/new_content/game/10_farewell/bird_flappyscene_entry -{9aa30c86-bd74-4fe0-a746-6206a161dbda} event:/new_content/game/10_farewell/bird_fly_uptonext -{00c336f3-361c-455c-a735-88d322bb0a87} event:/new_content/game/10_farewell/bird_flyuproll -{9ba95702-66ae-441f-944e-c123175195ff} event:/new_content/game/10_farewell/bird_relocate -{ff882573-75c7-4aeb-86e2-73a946646308} event:/new_content/game/10_farewell/bird_startle -{f73f6ebb-c858-4a36-b59a-74c66ee1f901} event:/new_content/game/10_farewell/bird_throw -{ee413800-8752-4f0b-9a5d-3084e2473aa2} event:/new_content/game/10_farewell/bird_wingflap -{67ac36e7-71f0-4956-97b1-ac7ce0e1bd0a} event:/new_content/game/10_farewell/cafe_computer_off -{4be46c93-4868-4b41-ab86-cd5b4cb24ab4} event:/new_content/game/10_farewell/cafe_computer_on -{2760b17a-48e8-4008-8fdc-c5180c7e7516} event:/new_content/game/10_farewell/cafe_computer_on_old -{cb643135-d2a6-4999-b669-d2385a7cf546} event:/new_content/game/10_farewell/cafe_computer_startupsfx -{e50e05b1-7d84-42b4-9978-eaed3a3d9945} event:/new_content/game/10_farewell/endscene_attachment_click -{0d8902b7-105c-4f09-973b-28e701845084} event:/new_content/game/10_farewell/endscene_attachment_notify -{9492988e-612e-418d-a1a5-b416db84f087} event:/new_content/game/10_farewell/endscene_dial_theo -{87c24e15-dce0-40ae-a8b5-878e5a071dc6} event:/new_content/game/10_farewell/endscene_final_input -{0a35baac-0a14-4121-b6fe-8336c5ae6507} event:/new_content/game/10_farewell/endscene_photo_zoom -{8e4da22f-7a93-46b7-8e07-7255d3431e1b} event:/new_content/game/10_farewell/fakeheart_bounce -{a72e0e5c-5db0-4542-8a29-25d4d8e19a14} event:/new_content/game/10_farewell/fakeheart_get -{51f68531-d228-4786-b703-6a5f44e41cee} event:/new_content/game/10_farewell/fakeheart_pulse -{08327e1d-c840-4d1e-9733-0cf4a843f867} event:/new_content/game/10_farewell/fusebox_hit_1 -{6b7fe1af-1dfd-40f1-89bc-b3e43f6eddcf} event:/new_content/game/10_farewell/fusebox_hit_2 -{0a4ae8c6-5797-4d09-8636-106589eeeeae} event:/new_content/game/10_farewell/glider_emancipate -{59507330-6098-4229-9ad1-7c927ec01298} event:/new_content/game/10_farewell/glider_engage -{cd01863f-3e92-4952-9a97-9a529df26b53} event:/new_content/game/10_farewell/glider_land -{faf2332c-87fb-46d7-b108-99de35f7d683} event:/new_content/game/10_farewell/glider_movement -{0ef75714-36af-4845-bd24-72028d9c1efb} event:/new_content/game/10_farewell/glider_platform_dissipate -{d3bd0dd4-28a4-4217-ac40-a3b8c2531979} event:/new_content/game/10_farewell/glider_wallbounce_left -{de545f84-effc-4211-b6e5-ecffe93189db} event:/new_content/game/10_farewell/glider_wallbounce_right -{825153d7-05f3-44b4-834c-fa2248bab331} event:/new_content/game/10_farewell/glitch_long -{b26ebe07-7db5-40d0-9282-2d1449db8c5a} event:/new_content/game/10_farewell/glitch_medium -{42d600c5-32c3-4433-8a1e-be394b30bcde} event:/new_content/game/10_farewell/glitch_short -{6fc73c45-4446-4114-b002-6dfeb92769d7} event:/new_content/game/10_farewell/heart_door -{67466be6-2fc8-4d0e-992e-0c882a8adf9a} event:/new_content/game/10_farewell/key_unlock_1 -{ce614f36-80cd-453a-8af8-3ba2c20c5a5a} event:/new_content/game/10_farewell/key_unlock_2 -{e4d013b8-4cd3-4cab-aec7-829d00c6307a} event:/new_content/game/10_farewell/key_unlock_3 -{324223a1-46c3-437e-9069-ed5059b47b95} event:/new_content/game/10_farewell/key_unlock_4 -{65131955-b8d6-4254-9fe9-ce9965b0f8c9} event:/new_content/game/10_farewell/key_unlock_5 -{d27aa340-38c2-46fe-9e45-83c4f6be9070} event:/new_content/game/10_farewell/lightning_strike -{9f711ad4-4561-47f1-ab99-938d1169b1ca} event:/new_content/game/10_farewell/locked_door_appear_1 -{7a366698-8474-4be8-83ab-be004cb6a2a3} event:/new_content/game/10_farewell/locked_door_appear_2 -{c2f181a5-e820-4e13-aa2d-ff902fab795a} event:/new_content/game/10_farewell/locked_door_appear_3 -{a4f824f9-22e8-4589-a9b9-0db1ad747fa3} event:/new_content/game/10_farewell/locked_door_appear_4 -{1c75f1cf-5825-42f1-b57f-5b5a5cefdedd} event:/new_content/game/10_farewell/locked_door_appear_5 -{17a8ef3e-78e8-430c-9cf4-995a121ef1fe} event:/new_content/game/10_farewell/pico8_flag -{711fa1d2-88c6-4f74-a650-fe7011e736fa} event:/new_content/game/10_farewell/pinkdiamond_return -{8aeeda91-d53c-409e-9f6b-37f8724ca79a} event:/new_content/game/10_farewell/pinkdiamond_touch -{cabdd646-45f5-4dbd-9cd2-898a99a794c4} event:/new_content/game/10_farewell/ppt_cube_transition -{b8e2f523-8fd3-444c-99aa-b45e5910fcda} event:/new_content/game/10_farewell/ppt_dissolve_transition -{43420008-de4c-4d1c-8f4b-15c4871e4354} event:/new_content/game/10_farewell/ppt_doubleclick -{35472fac-2f05-4eb5-8281-d929b5ce41bb} event:/new_content/game/10_farewell/ppt_happy_wavedashing -{c0b225c7-09c9-4ab7-a093-706c35d87598} event:/new_content/game/10_farewell/ppt_impossible -{55899a39-fc05-43d3-8878-834a4a25b6d4} event:/new_content/game/10_farewell/ppt_its_easy -{5c9780f7-de2d-4811-813e-f89201d92e35} event:/new_content/game/10_farewell/ppt_mouseclick -{445a96f2-982e-49d4-895a-19889e614955} event:/new_content/game/10_farewell/ppt_spinning_transition -{33a10afa-41bd-4534-8222-17e7947e9517} event:/new_content/game/10_farewell/ppt_wavedash_whoosh -{82f68918-aab7-4a13-a58a-05a318a8c32c} event:/new_content/game/10_farewell/puffer_boop -{495bbb28-2513-4698-8d54-fa114ff6722d} event:/new_content/game/10_farewell/puffer_expand -{355e716c-e169-4114-a223-a4e3156d23cf} event:/new_content/game/10_farewell/puffer_reform -{6fc9a437-3cb1-4455-b2e1-421eb885177c} event:/new_content/game/10_farewell/puffer_return -{2f7381e9-7264-4df3-8cff-84cc46b2d3d9} event:/new_content/game/10_farewell/puffer_shrink -{7867f29b-8e33-4e2e-8d56-00cf9211cadd} event:/new_content/game/10_farewell/puffer_splode -{026c5b8c-d51e-42df-a9bd-ae7b1e84f7b2} event:/new_content/game/10_farewell/quake_onset -{28caabf1-2b9d-480e-bcc2-5947a2398087} event:/new_content/game/10_farewell/quake_rockbreak -{a948d002-6935-4b70-92bf-39b7e43c56e0} event:/new_content/game/10_farewell/strawberry_gold_detach -{b0f9d304-0ba2-4858-b514-7620a56dda0b} event:/new_content/game/10_farewell/zip_mover -{3f2d120c-8b3f-4adf-b110-42388e8c5674} event:/new_content/music/lvl10/cinematic/bird_crash_first -{92aa23ba-8ab2-4448-aae6-67acbe73582b} event:/new_content/music/lvl10/cinematic/bird_crash_second -{3482e653-439f-46cc-8cbd-02abf456b0e4} event:/new_content/music/lvl10/cinematic/end -{0aab6c8a-4133-4265-8bad-098df594150f} event:/new_content/music/lvl10/cinematic/end_intro -{c188c18a-cede-4cca-b9c1-455f89a13ca8} event:/new_content/music/lvl10/cassette_rooms -{427b4b7d-22a7-4295-9f47-931b594b4daa} event:/new_content/music/lvl10/final_run -{c76a681f-24c9-48b2-b9c7-ca8bca24902e} event:/new_content/music/lvl10/golden_room -{4d1d9d21-9e89-405f-844f-070ae9d6611e} event:/new_content/music/lvl10/granny_farewell -{e296f495-1041-400e-9c31-c59ef318e7b7} event:/new_content/music/lvl10/intermission_heartgroove -{c6c1c7be-a5a5-4654-8e6f-15aed6a96847} event:/new_content/music/lvl10/intermission_powerpoint -{f7e0cc43-4a57-49ee-a114-7d9d1e40b198} event:/new_content/music/lvl10/part01 -{af7a6f63-887d-4508-b54e-ff4e4f296ae1} event:/new_content/music/lvl10/part02 -{57cceb1a-e169-43f4-802c-d41992ec6926} event:/new_content/music/lvl10/part03 -{8023c811-1142-42b8-8789-cbf1221c5c81} event:/new_content/music/lvl10/reconciliation -{2133d394-da16-49a5-82d2-59dfabecf762} event:/new_content/ui/postcard_variants_in -{f065adf0-963d-4d3e-a4fe-1538154936f7} event:/new_content/ui/postcard_variants_out -{4c875fde-bab4-4ddf-a32b-1a098a44e2a1} event:/new_content/ui/rename_entry_accept_locked -{b3639ef6-f73d-4ae0-a8c7-8edb94279868} event:/new_content/ui/skip_all -{7d16c138-146a-4337-97b7-777ec6146448} event:/new_content/timeline_bubble_to_remembered -{b5fd173e-9a58-4412-9be1-094108b82157} event:/state/cafe_computer_active -{d85a0635-cbcf-4ba3-8466-b6e24aa45894} event:/state/underwater -{c4d2289a-859e-42e9-ba38-eee1791a3a62} event:/ui/game/chatoptions_appear -{dd4cb027-0132-4039-9303-c9ad8589683e} event:/ui/game/chatoptions_roll_down -{1b030b2e-c125-40d5-b582-5819c6c29584} event:/ui/game/chatoptions_roll_up -{bc008f9e-76c5-42d5-b2f0-574cb7dacf6f} event:/ui/game/chatoptions_select -{632ed69e-ef16-4824-8aaf-8e01aad17cce} event:/ui/game/general_text_loop -{903b26bf-ad0c-40a2-b53f-f2a08b50ae4f} event:/ui/game/hotspot_main_in -{4684b7e3-ac7e-40c0-a242-822dbd84326e} event:/ui/game/hotspot_main_out -{07defb47-8579-4c47-9528-289e7a758553} event:/ui/game/hotspot_note_in -{3f531057-7752-4e5a-a782-82ad7428ac70} event:/ui/game/hotspot_note_out -{44a55198-a0bd-4e72-baba-5654142dccef} event:/ui/game/increment_dashcount -{ea92919d-46d8-411e-82f6-b36c79d96c72} event:/ui/game/increment_strawberry -{b086c73f-8ceb-4bea-b569-bdd561e32ccf} event:/ui/game/lookout_off -{defdc0d5-8ae6-47e4-8970-29f12a66fe66} event:/ui/game/lookout_on -{6e6a7734-f98c-45cf-930f-61c51f193827} event:/ui/game/memorial_dream_loop -{037333ef-5916-4131-a76c-77b8d31c21cd} event:/ui/game/memorial_dream_text_in -{c3ddcdec-04ff-43b0-8103-ba0f0841c550} event:/ui/game/memorial_dream_text_loop -{78a27ccb-8b29-41e9-aa60-20e4d193f41d} event:/ui/game/memorial_dream_text_out -{27c68b11-4893-406e-8a68-2c7cf6a7ae0d} event:/ui/game/memorial_text_in -{12f81211-c72f-44f7-951c-4884bea99668} event:/ui/game/memorial_text_loop -{812275c5-1e5a-4d69-98e1-f7892c4bb440} event:/ui/game/memorial_text_out -{c6311b80-2ae7-4155-80f1-d3e2713efaa3} event:/ui/game/pause -{7858a8e8-adf9-40a6-8e14-e337a6979e53} event:/ui/game/textadvance_madeline -{b26824d6-39fe-4d09-9d83-ebdcbb29ba6b} event:/ui/game/textadvance_other -{38079a52-37cc-421f-a9d1-2b0f0222e779} event:/ui/game/textbox_madeline_in -{8a79d85e-2889-4b7f-8d52-b46381392b8b} event:/ui/game/textbox_madeline_out -{651eff96-de48-4c77-b069-bd718be76cff} event:/ui/game/textbox_other_in -{3b6c0f9a-9399-4af4-8443-d1bf6544869a} event:/ui/game/textbox_other_out -{ca812d95-eb8b-4ebd-a04b-e424704c17f2} event:/ui/game/tutorial_note_flip_back -{0c739c5d-67d7-4d95-861d-cc0d64892a1d} event:/ui/game/tutorial_note_flip_front -{6096b41c-7b56-4839-ad53-deb9e5693246} event:/ui/game/unpause -{59883fc3-7f79-422e-927d-1c1374123356} event:/ui/main/assist_button_info -{dd53a3ab-bc60-4da3-996d-5fc6b83483dc} event:/ui/main/assist_button_no -{7c65f68d-623c-42f1-94bd-4e2d59199d32} event:/ui/main/assist_button_yes -{3fd21d57-8fb5-4107-8d03-2048428bc2fc} event:/ui/main/assist_info_whistle -{1c2d9b78-9172-44db-a205-15b3cd91191e} event:/ui/main/bside_intro_text -{fe9c58fa-d60a-4644-b34d-c0c4ebac2486} event:/ui/main/button_back -{a3b25ad0-f493-4fd1-a31f-40b07f739225} event:/ui/main/button_climb -{b6aad0d5-cc07-46f4-ab3a-3b3692a57678} event:/ui/main/button_invalid -{8a93c5a5-538c-49f6-9d07-988839862ba1} event:/ui/main/button_lowkey -{cf18e899-f774-47e2-b72c-5252231fd47c} event:/ui/main/button_select -{aceb1345-a4e8-4bc5-a872-bb421573f59c} event:/ui/main/button_toggle_off -{dcef4547-0df6-4b2c-9a70-3aa537982264} event:/ui/main/button_toggle_on -{c0e02b41-0977-4813-a592-a2a98242b153} event:/ui/main/message_confirm -{c46d3981-3581-4b29-b3f8-d64ab072709e} event:/ui/main/postcard_ch1_in -{ffcabe42-ca8e-4460-95cb-14e528caebd7} event:/ui/main/postcard_ch1_out -{1210af0a-7e91-40af-a33c-d3fd2601ae54} event:/ui/main/postcard_ch2_in -{ddf70f5d-bd79-46da-ab2e-35d8795aab78} event:/ui/main/postcard_ch2_out -{55dfbf00-cc82-4781-b0e3-4f83a8a3fdb1} event:/ui/main/postcard_ch3_in -{468d3c98-0643-43eb-aedc-4cd3775a745c} event:/ui/main/postcard_ch3_out -{4cc4fcce-dbbc-4ffa-946d-8823ae5b1c56} event:/ui/main/postcard_ch4_in -{9920201a-f44f-464c-ad36-26934ed4b557} event:/ui/main/postcard_ch4_out -{90a158fb-009e-4cc1-9e4b-ba1ca47c05d9} event:/ui/main/postcard_ch5_in -{ab60fd25-5612-425c-bcdd-3e57a6c612bf} event:/ui/main/postcard_ch5_out -{590d1629-f340-4c4e-aee7-310f78d2c441} event:/ui/main/postcard_ch6_in -{ae32b875-534a-43de-a8bf-59d802dfb98b} event:/ui/main/postcard_ch6_out -{753b8bdc-2b0a-443a-ae37-94f321d71932} event:/ui/main/postcard_csides_in -{c74741a2-3b04-4ae8-9953-bc2bb485d643} event:/ui/main/postcard_csides_out -{cffad095-d6a7-4c91-b263-74bec658f1d8} event:/ui/main/rename_entry_accept -{9e499f93-8f88-4450-ae82-54887bb5e3ba} event:/ui/main/rename_entry_backspace -{a71ecb95-b025-4b35-8a2c-fe0cd6f68e95} event:/ui/main/rename_entry_char -{d389ba5d-76cf-4634-a763-d60d23c07cb1} event:/ui/main/rename_entry_rollover -{44e7e56e-3d7c-48e4-a1ae-a01de2685a81} event:/ui/main/rename_entry_space -{fb6ae8ab-4c41-4d90-8d2b-61a45e0a33e8} event:/ui/main/rollover_down -{987ab0da-0575-4f22-a0bc-7dd7a3a60769} event:/ui/main/rollover_up -{ef525bd4-4d18-479c-b651-56cd3699e478} event:/ui/main/savefile_begin -{c649a587-9eb6-4ba6-bafc-de133aeea2c5} event:/ui/main/savefile_delete -{ac7e055f-0a4d-4862-9032-88a8cd9e8322} event:/ui/main/savefile_rename_start -{83577bfc-85e1-444f-8c60-97ad3f3092a5} event:/ui/main/savefile_rollover_down -{b99d10cb-deb7-4b29-978b-912f929a5872} event:/ui/main/savefile_rollover_first -{15e11635-109d-417e-8424-2821f91f8020} event:/ui/main/savefile_rollover_up -{6d72de1a-04fe-4be5-826b-5576002c277f} event:/ui/main/title_firstinput -{4c808f23-d04c-49eb-9195-a9e324b57add} event:/ui/main/whoosh_large_in -{918e9353-b7fb-4d65-9bab-7e21facb3231} event:/ui/main/whoosh_large_out -{0e6af11e-69f3-4a92-b762-7421c912c3d6} event:/ui/main/whoosh_list_in -{efa0d333-7ee5-46ce-b457-b99997659215} event:/ui/main/whoosh_list_out -{03c233f3-c314-4560-8d48-a237b0b41c4a} event:/ui/main/whoosh_savefile_in -{38993101-6a7d-4344-bb63-69face96fd3a} event:/ui/main/whoosh_savefile_out -{02c8ac12-1389-44b9-8db8-1df0bd5b09b6} event:/ui/postgame/crystal_heart -{131dc336-4229-44d3-873f-e435fb501faf} event:/ui/postgame/death_appear -{26999d37-f12e-4b55-b82e-c26c02fcb288} event:/ui/postgame/death_count -{1ebd2b11-e6c4-4cc8-bb94-523470bda7b6} event:/ui/postgame/death_final -{44a2d3fc-e727-4ed4-8907-535d11f81e3e} event:/ui/postgame/goldberry_count -{426469e9-5e87-46e9-8b9d-bc2ae055c7b7} event:/ui/postgame/strawberry_count -{628514bb-19b3-4498-b365-4434988a1478} event:/ui/postgame/strawberry_total -{de75e71a-61d2-4a5c-94fe-96d0127fab02} event:/ui/postgame/strawberry_total_all -{ff2a6fb9-87b0-4de2-bd85-2d477f338d7c} event:/ui/postgame/unlock_bside -{704b695d-3513-449d-88eb-e29fc7622990} event:/ui/postgame/unlock_newchapter -{7fc9d8e3-08e2-43b8-9a9c-74f51be9a206} event:/ui/postgame/unlock_newchapter_icon -{6388ebe4-7ccd-46ad-b60d-7a85d7e5aceb} event:/ui/world_map/chapter/back -{4a191f4f-da31-43ec-bf30-f8ff8de7feed} event:/ui/world_map/chapter/checkpoint_back -{8c12045b-63ea-4faf-845c-49f6671595c2} event:/ui/world_map/chapter/checkpoint_photo_add -{40c88bb1-a035-4e54-90e1-fc879d1bf42b} event:/ui/world_map/chapter/checkpoint_photo_remove -{b5eab944-3bb1-4537-81f8-36cc0768539c} event:/ui/world_map/chapter/checkpoint_start -{08853c84-022c-4432-b99f-8894748ea056} event:/ui/world_map/chapter/level_select -{2bc690b2-830d-4fee-9960-5e9c158a07c1} event:/ui/world_map/chapter/pane_contract -{811a5ad1-89a4-4e2f-b6ee-20665c9ebde9} event:/ui/world_map/chapter/pane_expand -{d947ef25-1335-4e74-9675-7f91beb1df80} event:/ui/world_map/chapter/tab_roll_left -{6f553704-eb86-4407-91b5-c6e9714f398c} event:/ui/world_map/chapter/tab_roll_right -{f6ac20d0-ea9e-4cee-a4aa-a8b30bf3d745} event:/ui/world_map/icon/assist_skip -{7009f879-18fe-4b01-b78d-f4ef5bc66cb2} event:/ui/world_map/icon/flip_left -{c1f648bf-d9b1-455c-a3dd-b92bcce571c6} event:/ui/world_map/icon/flip_right -{687c2393-d73e-4247-a97b-4f2c2ccce388} event:/ui/world_map/icon/roll_left -{14563914-60ff-43cc-bc2e-d5766cc30964} event:/ui/world_map/icon/roll_right -{939f9872-0a8e-4cac-bf5e-12df3729da5f} event:/ui/world_map/icon/select -{0623a8c0-4454-4c71-9804-ecb030c4eb50} event:/ui/world_map/journal/back -{bbc37507-2859-4dd7-bbe5-7e6209214e03} event:/ui/world_map/journal/heart_grab -{85f626c3-7607-416c-b0ae-ddd0ed804755} event:/ui/world_map/journal/heart_release -{4ed2243f-db33-4095-97fd-800825c5a26d} event:/ui/world_map/journal/heart_roll -{d76b642b-3a69-4960-bfe3-2146b1654e5c} event:/ui/world_map/journal/heart_shift_down -{789aa61b-6d4a-4f93-92f0-bcc17c4c46c6} event:/ui/world_map/journal/heart_shift_up -{481d0322-28da-4d44-977a-cc140ff7c609} event:/ui/world_map/journal/page_cover_back -{2e990fd4-2c29-4527-8968-e47ff4006e81} event:/ui/world_map/journal/page_cover_forward -{b8f82543-3aed-4e88-8256-7b7b1bfafa2f} event:/ui/world_map/journal/page_main_back -{8da57015-c10e-4ce5-8e6b-82af4b7e73b9} event:/ui/world_map/journal/page_main_forward -{8a991cbf-dda9-4121-b960-d8bd790f5daa} event:/ui/world_map/journal/select -{309df40a-ed6b-46cc-b6a0-b1ddf5814ac8} event:/ui/world_map/whoosh/1000ms_back -{06eddf29-f6ea-43c4-a5a5-5e06c1c5bb61} event:/ui/world_map/whoosh/1000ms_forward -{25e6e3fa-ff02-440e-ac63-c83c3ad1efaf} event:/ui/world_map/whoosh/400ms_back -{c3640c55-8e89-4437-84ce-e0a3c1770575} event:/ui/world_map/whoosh/400ms_forward -{362e549d-25f0-4a5b-9c83-796e9ed389db} event:/ui/world_map/whoosh/600ms_back -{a5fff838-6687-4506-b03f-e5b16bb6ae84} event:/ui/world_map/whoosh/600ms_forward -{6f54f0d1-61d4-442e-8bf7-4dfbf6870c07} event:/ui/world_map/whoosh/700ms_back -{ca8ffe65-72eb-4fb3-9c3d-27fef47bc3d1} event:/ui/world_map/whoosh/700ms_forward -{2dca99b6-dcf5-40e6-8cd1-c72f97d364cd} event:/ui/world_map/whoosh/900ms_back -{21a98c43-8e79-4b8a-8963-a269735f3989} event:/ui/world_map/whoosh/900ms_forward -{ea595d6d-cb07-4897-81cb-4830bf5823cb} event:/!!!_README_FIRST -{c7aad72f-9796-42d3-980b-d093fd765716} bus:/ -{aac396d1-a63f-418a-810a-5d5a59fb2c43} bus:/gameplay_sfx -{2677ced7-94e4-44e2-9f5a-74aaeda5ab63} bus:/gameplay_sfx/ambience -{69a539a8-37d8-4e24-979b-291077c574a9} bus:/gameplay_sfx/ambience/00_prologue -{ca9f4472-47c9-4528-b4a7-0367eef8b734} bus:/gameplay_sfx/ambience/01_forsaken_city -{9e955e67-8d57-413c-a8ff-a52760f97355} bus:/gameplay_sfx/ambience/02_old_site -{24502313-f693-41bd-8fbb-b570e73b730d} bus:/gameplay_sfx/ambience/03_resort -{82beff30-ccff-40bf-9e07-5a1cd2978856} bus:/gameplay_sfx/ambience/03_resort/main -{8801307f-ec10-47f5-b1e6-bd4209b925a5} bus:/gameplay_sfx/ambience/03_resort/pico8_room -{537a0457-23d1-4dfa-84ee-a9a0a89091f0} bus:/gameplay_sfx/ambience/04_cliffside -{52d79f87-b8ae-49f8-9b8f-0623798fe5c0} bus:/gameplay_sfx/ambience/05_mirror_temple -{d0d5e0b6-9ffd-4f74-b865-f1f2be77d3b3} bus:/gameplay_sfx/ambience/06_reflection -{2d22a1f7-3d3f-443a-9f5c-b3af2c719942} bus:/gameplay_sfx/ambience/07_summit -{cefe7684-2923-468f-b00b-c5983937e33c} bus:/gameplay_sfx/ambience/09_core -{a98d0a0f-3a46-4300-b387-c39f0db5d47e} bus:/gameplay_sfx/ambience/10_farewell -{ddb5ed22-a8d2-4142-ba12-5bd032527511} bus:/gameplay_sfx/ambience/10_farewell/cafe_sign -{1394d383-dd5e-4772-abcd-5780e97a8ee3} bus:/gameplay_sfx/ambience/10_farewell/electricity -{fab12ece-124b-4bca-98d5-6ad4320118b0} bus:/gameplay_sfx/ambience/10_farewell/kevinpc -{992ed3aa-96d9-4f83-ac2f-3af5ac4a32db} bus:/gameplay_sfx/ambience/10_farewell/10_space_remembered -{71710caf-9227-413f-ac6a-261cf6e0cb5b} bus:/gameplay_sfx/ambience/shared_local -{8087939b-55de-4834-a7ec-2b62741a1099} bus:/gameplay_sfx/ambience/shared_local/campfire_loop -{520daa59-6d74-4eef-8d67-5c50d55bebd8} bus:/gameplay_sfx/ambience/worldmap -{db469001-f950-40b8-b411-2a1d327b3ce6} bus:/gameplay_sfx/berries -{bc43e82f-8373-4a3c-b676-5ef48f674f2e} bus:/gameplay_sfx/berries/1000s -{15f0abc3-40c1-4812-b526-303e80fe2175} bus:/gameplay_sfx/berries/2000s -{affd9e52-b032-49cb-acd6-4221f642f2e6} bus:/gameplay_sfx/berries/3000s -{ebd67fc6-0745-4b6e-afa8-2fa389df52e1} bus:/gameplay_sfx/berries/4000s -{2a8fc7b0-907d-46dc-919a-225a1258ebb8} bus:/gameplay_sfx/berries/5000s -{060010db-a9d6-41e0-b1fc-7af651b896b5} bus:/gameplay_sfx/berries/6000s -{d3031014-2f55-4036-904a-070ba37ba6df} bus:/gameplay_sfx/char -{9b8177d0-ae29-4cb1-93e6-c584b54b3804} bus:/gameplay_sfx/char/badeline -{91c7b130-9c0a-4cb2-bf01-26313faa39f9} bus:/gameplay_sfx/char/dialogue -{357a43e8-4c3d-4321-9116-1941d532be68} bus:/gameplay_sfx/char/dialogue/phone_static -{06222055-39e3-43b4-a9db-520a4ab66fbc} bus:/gameplay_sfx/char/dialogue/speech -{3828f323-8e89-4c34-b0fe-6c403cb6606b} bus:/gameplay_sfx/char/granny -{7bd1184c-7ddc-4175-bc87-a2b111b031a9} bus:/gameplay_sfx/char/madeline -{c4112d32-cfdc-4926-82a6-68afc89d352e} bus:/gameplay_sfx/char/oshiro -{99c3166e-4555-4140-b041-0a237a13fca7} bus:/gameplay_sfx/char/theo -{1ea7af9f-bcac-4a3e-8e2a-66cc1e04e9eb} bus:/gameplay_sfx/char/tutorial_ghost -{3fdf5514-61e2-4c69-9fa7-5cd0a627fc16} bus:/gameplay_sfx/classic -{1156896d-4cbe-4f11-ad91-44626753f14a} bus:/gameplay_sfx/classic/pico8_verb -{0dfbeb74-7020-4dfa-9cc8-fa85dd157aa1} bus:/gameplay_sfx/game -{6e4f0c21-c551-48a4-828e-b7ea3816b42d} bus:/gameplay_sfx/game/chapters -{55e7d588-47a3-441a-add3-f8a793212d75} bus:/gameplay_sfx/game/chapters/00_prologue -{5820993d-7e39-4b2a-a2e7-9cd902543ad1} bus:/gameplay_sfx/game/chapters/01_forsaken_city -{54bd4bc0-f511-416f-8629-a7abba53f460} bus:/gameplay_sfx/game/chapters/01_forsaken_city/birdbros_finish -{2ce9652c-a647-4e5d-b74a-b36ea60715d9} bus:/gameplay_sfx/game/chapters/01_forsaken_city/console -{30890542-6efc-4ea9-927e-3ca0c3b97d95} bus:/gameplay_sfx/game/chapters/02_old_site -{cd8aa47e-bd24-45e3-808c-a0d546f9a915} bus:/gameplay_sfx/game/chapters/03_resort -{bc44100e-d99c-401f-92a3-38ee8dd8e8ae} bus:/gameplay_sfx/game/chapters/03_resort/clutterswitch_presses -{33443f80-8d51-4756-b504-16cac32901ad} bus:/gameplay_sfx/game/chapters/03_resort/key_unlocks -{130cca3c-25f1-4e3f-a26a-d604b2a1bf58} bus:/gameplay_sfx/game/chapters/04_cliffside -{3420193e-c3db-4417-9232-4cf3ebb0d18c} bus:/gameplay_sfx/game/chapters/04_cliffside/gondola_halted -{b62be6ff-22a2-4c54-986c-0734a819f8f1} bus:/gameplay_sfx/game/chapters/04_cliffside/gondola_verb -{7eab4c86-6346-457f-a497-c4464651f92c} bus:/gameplay_sfx/game/chapters/05_mirror_temple -{60223204-af0c-42e2-a281-29ce5cad5edc} bus:/gameplay_sfx/game/chapters/05_mirror_temple/room_lightlevel -{913b4578-2371-417d-a413-90806a14a9c8} bus:/gameplay_sfx/game/chapters/06_reflection -{f2bd3dc2-e8ec-4ac6-b3b4-4810b47bb8d7} bus:/gameplay_sfx/game/chapters/07_summit -{327f796b-864b-45f9-9991-839720ec7108} bus:/gameplay_sfx/game/chapters/09_core -{2219f267-26c7-4a3c-bc90-148c7cb385c9} bus:/gameplay_sfx/game/chapters/10_farewell -{1290bf60-75df-4063-a36d-1f89c688a282} bus:/gameplay_sfx/game/chapters/10_farewell/bird_wingflaps -{05e910f2-4e6d-4f1d-a82d-014519b4667f} bus:/gameplay_sfx/game/chapters/10_farewell/cafe_computer_amb -{a40f9839-9900-436a-b1ab-566f86dfde57} bus:/gameplay_sfx/game/chapters/10_farewell/cafe_computer_sfx -{5e4eb968-5e09-4be0-bef0-76c2fc17b546} bus:/gameplay_sfx/game/chapters/10_farewell/cassette_room_cymbals -{c56ef299-cdcd-4782-a645-c8ba138ae994} bus:/gameplay_sfx/game/general -{6e3ad52b-f7d9-482d-8970-c157ebc1d716} bus:/gameplay_sfx/game/general/no_pause -{80173d30-4942-4abb-81e7-999ad33a9c18} bus:/gameplay_sfx/game/general/yes_pause -{34514772-f9f0-4a83-8fe7-2757c9206fe0} bus:/gameplay_sfx/game/general/yes_pause/birds -{dac56484-a3d4-47be-8c8e-38ecce68acc8} bus:/gameplay_sfx/game/general/yes_pause/crystalhearts -{8842a7ec-7a4c-432c-be20-64074839636d} bus:/gameplay_sfx/game/general/yes_pause/crystalhearts/fakeheart -{d001d4bf-94bd-4842-bd12-c8d07686ecf3} bus:/gameplay_sfx/game/general/yes_pause/secret_revealed -{ad993587-e7fc-427f-95b0-3a8204f772a7} bus:/gameplay_sfx/game/general/yes_pause/strawberry_pulse -{ab63552e-0d56-46cb-82f3-277df8c07c7b} bus:/gameplay_sfx/game/glitches -{cf6c699a-44d0-402c-ae02-e2e0a46cb94a} bus:/gameplay_sfx/golden_room_flavour -{eb29e2c4-d8fe-47ed-9d8a-490d0c656466} bus:/gameplay_sfx/granny_clouds_dialogue -{9bebdba3-d621-4355-9273-df3368b27182} bus:/gameplay_sfx/kevinpc_verb -{74728fec-f0ab-42ad-aeb9-03d95a119e42} bus:/gameplay_sfx/prologue_verb -{d457df36-9eb7-45c7-a624-6e74d6f10ec9} bus:/gameplay_sfx/sfx_in_space -{c66382b2-56ff-461e-8062-7f881794db85} bus:/music -{2cf5046e-8b34-4d1e-9bde-cb34c2c82607} bus:/music/stings -{035161f3-528e-4896-9238-683d2f3d60f1} bus:/music/tunes -{ae8c943a-7d3c-4e7f-a225-e98315a401e4} bus:/music/tunes/cassette -{2dce7e88-a742-4150-94ed-516b68f6c7d0} bus:/music/tunes/classic -{7429d822-1e68-4251-9907-6d4e8d14a82e} bus:/music/tunes/mains -{e4123d5a-7c10-4871-bbfb-72c4fd63f2ee} bus:/music/tunes/mains/dlc -{598cd199-b5f0-49f5-ba6b-3a2f5ef1de25} bus:/music/tunes/mains/dlc/heartgroove -{8ca23161-65dd-4d81-a97c-003d515b3062} bus:/music/tunes/mains/dlc/part01 -{b2c12b19-7dc1-4872-90da-653b17ebd258} bus:/music/tunes/mains/dlc/part02 -{b5df4708-d694-4a66-86a4-80f50b898f92} bus:/music/tunes/mains/lvl0 -{ef97f0b1-3bc4-4f64-aa42-84cd819b75be} bus:/music/tunes/mains/lvl1 -{24ffc423-525a-4e57-a96a-a392cf455198} bus:/music/tunes/mains/lvl2 -{0a5ea434-cec4-4b65-9f8c-733a13ac4e86} bus:/music/tunes/mains/lvl2/beginning -{7f93dae5-d646-46a5-ae9d-561b4ea5b4d8} bus:/music/tunes/mains/lvl2/beginning_verb -{dd297a42-ca69-42b2-8a75-81bc2c076773} bus:/music/tunes/mains/lvl3 -{281fbfae-927e-4dd8-a3b7-90d51b0fcd03} bus:/music/tunes/mains/lvl4 -{2d452462-5099-4832-9c7b-6244168969f8} bus:/music/tunes/mains/lvl5 -{8bd3048f-79b5-47bd-b697-ded53096b69a} bus:/music/tunes/mains/lvl5/eye_mains -{ea09e719-2d63-4cfa-90b1-7bc68aa0fb89} bus:/music/tunes/mains/lvl5/eye_pulse -{d10b0171-eaf7-4c53-9d55-d05d1bc34e03} bus:/music/tunes/mains/lvl5/torch_arp -{898234ab-6340-4783-9dda-de3e6a4b1c58} bus:/music/tunes/mains/lvl6 -{b3c415b6-811f-43cf-a1f5-4f979596f23f} bus:/music/tunes/mains/lvl7 -{6a55c92f-3eba-4f8c-b8cf-d70c7e200cb4} bus:/music/tunes/mains/lvl8 -{e4b86f10-cdb3-4394-8aba-4aefd2628607} bus:/music/tunes/mains/lvl9 -{dc7b136f-f266-48a1-a0ce-34938c4da9be} bus:/music/tunes/mains/layer_verbcontrol -{f81bdbae-62d5-467b-8f64-608c3c625282} bus:/music/tunes/remix -{af0b4601-5e4b-4580-afb8-ce641dcea598} bus:/music/tunes/remix/02_old_site -{33f0d1af-cd28-4272-a966-89189763d3c1} bus:/music/tunes/side_rooms -{fad3f5c6-a940-4180-8133-53243e1a6eb3} bus:/music/tunes/side_rooms/golden_room -{33116628-46c3-4bfd-9ca6-a4a152fb9ef2} bus:/music/tunes/side_rooms/ppt_content -{1ff13d10-7ecd-46fd-9140-2e67c33c217e} bus:/music/tunes/cassette_previews -{8abc7179-c5ff-48ff-85fd-73ba46b14ed3} bus:/music/tunes/pico8_mus_verb -{59256484-66d5-4ec4-9639-208cf82dfcbf} bus:/ui_sfx -{b8b28cf3-de11-4a37-ace3-02999b659e63} bus:/ui_sfx/game -{e8a05ec7-a764-4f64-aac4-4a7f3ba3e4b9} bus:/ui_sfx/rename_piano -{724d852b-c1ab-4aa4-b2b1-c13d3b299928} bus:/ui_sfx/worldmap_whoosh -{fda3f2a1-d68f-44e7-b701-10e208d3e7dc} bus:/ui_sfx/rename_verb -{45e94b3e-40aa-4719-a33e-8fdd3336bd63} bus:/Reverb -{de538080-4e35-4fae-ba40-6635b9a31bae} bus:/Reverb_Dash_Assist -{64ceaf84-8717-4592-80ab-6f3d75b5a276} vca:/gameplay_sfx -{277f4614-fa32-411a-addd-618b460440f8} vca:/music -{8d7cf364-00af-4b77-8298-c64b484c5ea4} vca:/ui_sfx -{35a38d70-5255-4def-a24c-38d4b432bc7b} snapshot:/music_all_mute -{5b5b6aa0-ca7b-4149-acc6-8e39d8e40cf9} snapshot:/music_mains_mute -{e45a0ce7-66cd-46e7-87bd-f403fd07c6f4} snapshot:/pause_menu -{bce88c97-680c-409d-8ebe-a1133d014d9b} snapshot:/music_secretrevealed -{c2361c39-b90d-4bc4-b168-c4134201a468} snapshot:/dialogue_in_progress -{69755b6c-ec19-4fd8-8db3-3cd08aaf87a1} snapshot:/game_03_clutterswitch_moment -{b3536257-a5f6-4424-92c2-c1b2dda22d72} snapshot:/mus_lvl1_verbtransition -{4c5628e7-adc7-4f0e-a060-82a919c16948} snapshot:/game_00_prologue_amb_down -{34a72406-5330-4cd8-a826-a00d559a0b2e} snapshot:/game_00_prologue_amb_off -{36956a3c-c731-43e9-903e-598f3ec922a0} snapshot:/underwater -{1ab40160-5839-4d5b-8b1d-e0a6bd83347d} snapshot:/game_02_dreammemorial_fade -{8a7f5b1b-7f61-4772-bd14-7de5aafbd44a} snapshot:/game_00_verb -{481f2201-8ce0-43b2-9f3a-bc51cb2b1de2} snapshot:/game_04_gondolafeather_main -{259cebd0-0338-4527-9b41-af852a325cd1} snapshot:/game_04_gondolafeather_verb -{05fa7a5e-2a5c-4750-944c-ed3ea46c2e64} snapshot:/char_granny_laughs_down -{a946aeab-8328-4a84-a58c-4e76700c32a8} snapshot:/env_worldmap_down -{386f6f68-a0da-4c9c-a51a-5aa8d8deea46} snapshot:/game_05_torch_arp -{93cf42c4-26a2-4f75-bd42-8ad29455d171} snapshot:/boss_pitch_sfx -{19948c40-9c7c-4b8a-8dc8-66824fd99eb9} snapshot:/music_reflection_secret -{51370088-3349-4bd9-8ef8-21e646482678} snapshot:/env_allamb_down -{3b704b9e-58b1-4522-8936-0f74cfca567e} snapshot:/game_03_pico8room -{da7d5bb5-c1ec-43df-a92c-a2986bcb978f} snapshot:/game_05_eyedeath -{6b16607b-8e2f-4b79-a1e5-339e589e6919} snapshot:/game_05_mus_pulse_controller -{d8e12b32-0f5a-4897-8bde-7be2012a0924} snapshot:/game_03_oshirofreakout -{22902dd7-41fe-4617-9412-e928455e3d4b} snapshot:/game_gen_crystalheart -{f2738ff2-989f-40bc-8421-a976ba8e49e2} snapshot:/game_05_eyedistance -{c6fa6b4e-5c95-4f3d-8616-385bc8e6f703} snapshot:/game_01_birdbros_finish -{061649d4-7a37-483d-bcd3-70793d8fcdb2} snapshot:/mus_cassette_amb_down -{1829469a-4c2d-4f04-a2b6-8a528987e9a9} snapshot:/game_10_in_space -{df897601-d549-4868-85a2-51ceca90b5df} snapshot:/game_10_final_boost -{859952f9-2a6f-47b2-855b-7fdc9678c9f4} snapshot:/game_10_cafe_computer_active -{2ef4067b-f330-40b8-ab59-15280643ba2d} snapshot:/game_10_glitch_active -{7ea9a03b-ea60-4a15-be33-26a7a9423b63} snapshot:/game_10_inside_cafe -{658d9ddb-30a9-4a55-bd62-d730d793ec83} snapshot:/game_10_amb_voidspiral_active -{9ae549ff-5ba1-4ec1-aec8-ee17190a2d08} snapshot:/game_10_granny_clouds_dialogue -{45db5a63-5d6d-4c3c-9c0c-d9924542b762} snapshot:/game_10_golden_room_flavour -{5955bc4d-e3b4-4663-a676-bdaf632c0d78} snapshot:/game_10_bird_wings_silenced -{97b29aac-da8d-4a14-9aa1-8fbdc80d4672} snapshot:/game_gen_large_berry_get -{f14989bf-0210-48f2-88ab-45fb0c662318} snapshot:/game_10_goldenroom_death_fix -{3a534bf9-d4cd-43ce-b2f1-a63b24452b46} snapshot:/game_10_kevinpc_verbtransition -{45a77b82-31db-4b49-84c5-c93bff634316} snapshot:/game_10_kevinpc_sendcontrol -{b0d8db78-996f-45db-ba9e-85f1dcb6b3fd} snapshot:/game_10_BIR_music_part02 -{973c602d-8504-457b-853f-43107629197b} snapshot:/game_10_BIR_sfx -{1125cef8-d475-441c-b76b-fe4bdb43aa42} snapshot:/game_10_BIR_music_part01 -{03db7333-40ef-44fe-83cb-7e650abdb49c} snapshot:/game_gen_dash_assist_active -{df75cc48-86f4-4adf-91d7-d50d708f5c75} snapshot:/assist_game_speed/assist_speed_90 -{feedddf6-0cfd-4e09-bd66-d1259261651e} snapshot:/assist_game_speed/assist_speed_80 -{4d899a40-a5f6-4ea0-ae36-1f5b15238747} snapshot:/assist_game_speed/assist_speed_70 -{ab9f20ac-e1fa-4ed7-9d7c-19ad254a2d28} snapshot:/assist_game_speed/assist_speed_60 -{434bc162-0111-4667-a5bd-a5327b21e422} snapshot:/assist_game_speed/assist_speed_50 -{401f67f5-af7d-4b5d-a7fd-e7d30583a9a8} snapshot:/variant_speed/variant_speed_120 -{3637f3f7-d1d0-495f-beea-8e13fb5cc4a8} snapshot:/variant_speed/variant_speed_140 -{a7e8f688-585b-4660-a43e-60875c42921a} snapshot:/variant_speed/variant_speed_160 -{d7f19e36-26eb-4630-a934-9f2f1924e3ee} snapshot:/berry_cooperation/1000s_down -{85104a93-1b84-443c-b44b-034b2aaa643b} snapshot:/berry_cooperation/2000s_down -{641d4a72-8e6e-41a8-8f3d-b28219bd4cd7} snapshot:/berry_cooperation/3000s_down -{365efe2d-29e7-4d45-988e-451406863f9a} snapshot:/berry_cooperation/4000s_down -{1aa61ee8-68fc-4c62-9a54-35743044bafe} snapshot:/berry_cooperation/5000s_down -{5044f438-f2ba-41ac-8609-855b8133e867} bank:/avali_skinsounds -{a327f717-e8b5-4fb0-b4dd-84bd8a585fe0} bank:/dlc_music -{e85b3c9e-428d-41b7-82c0-37814f3cbf15} bank:/dlc_sfx -{7916fdbf-1253-451d-a369-6dfd34341e4e} bank:/music -{98263171-3ea2-482b-abb7-9af01e4c002a} bank:/sfx -{f0efde81-92ec-4f1a-8b48-815f4d8a3255} bank:/ui -{f42d1384-f9ea-4ba4-9e08-a4d067c55b3b} bank:/Master Bank +{ad25a031-880b-4f88-ac12-82d6c52fbdea} event:/char/badeline/appear +{7a71fc61-b688-4d82-a2b7-781c2434e942} event:/char/badeline/booster_begin +{b2ee45d8-e1b0-43f1-baaa-f6e77d37ddb5} event:/char/badeline/booster_final +{207a212a-2beb-4022-a8da-11ac987d3097} event:/char/badeline/booster_reappear +{7e3c6b4e-e41a-4e9a-9d24-22737c66593b} event:/char/badeline/booster_relocate +{2592d638-f3c5-4f6f-81e0-888a04affa40} event:/char/badeline/booster_throw +{bbe7d0c8-45f9-4671-b49e-8e38e357bb81} event:/char/badeline/boss_bullet +{898fc1ea-250b-4d03-8f37-c0c35799a915} event:/char/badeline/boss_hug +{b4002010-ff11-4311-87c7-f87028220f78} event:/char/badeline/boss_idle_air +{e7a2ddd6-091a-44ab-aac7-e57bd13c009c} event:/char/badeline/boss_laser_charge +{58b5d825-ebcf-457b-b493-9be82640b9eb} event:/char/badeline/boss_laser_fire +{646b0a01-2101-424f-804b-18842f72a62d} event:/char/badeline/boss_prefight_getup +{33df1e8a-7605-4b2d-8235-ee78fbaa8c55} event:/char/badeline/climb_ledge +{b54ae334-409b-4bba-82e2-62753f764f90} event:/char/badeline/dash_red_left +{50356124-434a-4dca-aeb1-52462846fb8a} event:/char/badeline/dash_red_right +{16b40879-0a79-4e42-8c91-fe419a8e186c} event:/char/badeline/disappear +{937c3941-eeb8-4f1f-8451-765b33545202} event:/char/badeline/dreamblock_enter +{3b142d62-975a-41a3-9b59-8e5ba4f6cbdb} event:/char/badeline/dreamblock_exit +{697102c2-9978-42b7-a3b0-0c2b99c9032e} event:/char/badeline/dreamblock_travel +{d879f9dd-98d0-479e-9f08-a1848f4a0f5c} event:/char/badeline/duck +{ff6442f1-66c2-4dba-8d57-038dda8fd296} event:/char/badeline/footstep +{8824489f-1d0b-4670-beb2-08d67cfd3c3b} event:/char/badeline/grab +{c122d904-fb7a-4bfe-99a1-f5a4f8701d17} event:/char/badeline/grab_letgo +{c2cd2f17-045c-4312-b7f6-8e7b750577c0} event:/char/badeline/handhold +{95ce0255-9a27-47b4-a902-fb25c0f2a2e2} event:/char/badeline/jump +{64424649-d82c-4efc-90a9-f54e8411d9b7} event:/char/badeline/jump_assisted +{58e689a2-1717-434f-9fa7-dffcd72ab27e} event:/char/badeline/jump_climb_left +{d9a77828-0390-434a-8cbc-e3df56a40cc4} event:/char/badeline/jump_climb_right +{6faecb61-f82e-400e-9785-4d407a82c838} event:/char/badeline/jump_dreamblock +{bc8a6051-399a-4f76-a865-02b53c5fe8ab} event:/char/badeline/jump_special +{73a21bdf-62c2-46d8-ae04-68e6c0c26b7f} event:/char/badeline/jump_super +{7ca46073-e6b8-4f74-b9a8-ac54a8966c5b} event:/char/badeline/jump_superslide +{2336b17f-5769-4e2e-a636-aee1ddef9086} event:/char/badeline/jump_superwall +{ab3be2a7-36d0-43cb-990a-2c49ba5d5c60} event:/char/badeline/jump_wall_left +{3e5b18db-8f99-4ab7-ad08-8529fd257b6b} event:/char/badeline/jump_wall_right +{8f924592-8b14-40d6-81af-d42fab0b6da1} event:/char/badeline/landing +{25294859-6bfd-434e-9528-8433245fe3b5} event:/char/badeline/level_entry +{38557af4-adf9-4328-9f2c-167b12ff9f8e} event:/char/badeline/maddy_join +{450fb5b3-e9e3-45d8-9f34-ba05e292958f} event:/char/badeline/maddy_split +{1a114663-4b93-4aab-ba8c-ca8793f2831e} event:/char/badeline/stand +{97d0d2e4-92f5-48cf-948f-4fc85b0a0791} event:/char/badeline/temple_move_chats +{a5ceb7fd-8a03-4c79-8d4f-81ad37400f43} event:/char/badeline/temple_move_first +{a2443155-5af1-4e19-80d5-a81a3d9cf06d} event:/char/badeline/wallslide +{9fdf9618-b47b-4427-bb22-4642a42296b9} event:/char/dialogue/sfx_support/phone_static_ex +{0793a2c4-4c0b-41de-8f60-cbaed147961b} event:/char/dialogue/sfx_support/phone_static_mom +{e27b3ab9-d6c9-4952-92bf-e652b98a9ed5} event:/char/dialogue/!!!_README +{aba9f19a-b015-4dfa-ab6a-c1c34385e6e9} event:/char/dialogue/badeline +{0d2b6a74-2224-4d42-b4c1-275e02188e35} event:/char/dialogue/ex +{93dc35c9-2d7f-428b-a991-10a75e908831} event:/char/dialogue/granny +{6db7fffa-a9ef-4b37-8c16-6857785af731} event:/char/dialogue/madeline +{eb633670-e129-48ad-82cc-bc3b09203d6f} event:/char/dialogue/madeline_mirror +{9a3d146f-f39b-41f5-a269-890782e44fcc} event:/char/dialogue/mom +{94086ab9-c160-4468-b8f5-20d8c0df94f3} event:/char/dialogue/oshiro +{81a8f569-0320-45e8-a85d-f05fc73ab18a} event:/char/dialogue/secret_character +{e15162c0-8d07-4a4a-86b2-31a4143ef96c} event:/char/dialogue/theo +{06f37413-874a-4d3a-b325-e43d5835bded} event:/char/dialogue/theo_mirror +{b778a405-ac7f-440e-8754-aef888736b87} event:/char/dialogue/theo_webcam +{baf0c37e-6b25-4b7f-8bcf-653b7ffbb4a5} event:/char/granny/cane_tap +{e6fcb1bd-e802-4b86-ba6a-4d5b4f9d1d8e} event:/char/granny/laugh_firstphrase +{7d86252d-c88c-4317-865e-430792def883} event:/char/granny/laugh_oneha +{ae79fcef-d9b4-44c5-91e5-e0348229e9d5} event:/char/madeline/Vanilla Backup/death +{421fe5d0-9d4b-40a5-ab8e-23b1ec4bf1b3} event:/char/madeline/Vanilla Backup/idle_crackknuckles +{ae4aea88-f499-49e8-9536-78c4bad21743} event:/char/madeline/Vanilla Backup/idle_sneeze +{65659bc0-3d2b-429c-9bdc-42e7a2d29a94} event:/char/madeline/Vanilla Backup/predeath +{75ab6aef-3f69-4776-b60f-5700451cc9a2} event:/char/madeline/backpack_drop +{99373af6-beba-488d-b516-ff48fd95e8b8} event:/char/madeline/campfire_sit +{9435a742-7595-48a4-b2af-2757c4f927da} event:/char/madeline/campfire_stand +{9457c17c-688b-4701-b2ae-b89d821d54f7} event:/char/madeline/climb_ledge +{82f8448b-9452-4b12-838c-dcd81098476e} event:/char/madeline/core_hair_charged +{315ac151-5eb6-4e6b-b1b7-0531f3572c44} event:/char/madeline/crystaltheo_lift +{eb1249df-06cf-434d-991b-0b73464eef06} event:/char/madeline/crystaltheo_throw +{cb220baa-d2cb-4a87-9907-a6595dba6735} event:/char/madeline/dash_pink_left +{8ec31009-771f-4473-a3fc-45b209d6aa87} event:/char/madeline/dash_pink_right +{b9d3a7c5-3d49-4b8a-aad1-fcfaf87293af} event:/char/madeline/dash_red_left +{066cd550-a394-4bed-a4cf-c71905a160ed} event:/char/madeline/dash_red_right +{2de81082-0768-430b-b7fb-728c94bd1dcb} event:/char/madeline/death +{06d7cbaf-9d9e-4f67-8adb-37a599dd4c37} event:/char/madeline/dreamblock_enter +{0a9527ad-360b-4cd2-b585-92b066720b34} event:/char/madeline/dreamblock_exit +{47bc2416-fd95-4a75-8952-7c43757e0e66} event:/char/madeline/dreamblock_travel +{0d6cb459-91af-4842-8d2b-0f0e103313ef} event:/char/madeline/duck +{73ada323-e77f-43f7-b0df-a8facdef03b7} event:/char/madeline/footstep +{8aa6ab7b-3104-4a06-8e7e-b1141ac0d23d} event:/char/madeline/grab +{0e0bb484-9840-47f8-a697-773134e4bedb} event:/char/madeline/grab_letgo +{7f8c23d1-bd9d-4a10-b8af-fd4a5cb12244} event:/char/madeline/handhold +{92a3c07d-326f-45b0-9001-4ed3a7c178a2} event:/char/madeline/idle_crackknuckles +{852ea39f-c182-4385-9aa3-1d95cb02040b} event:/char/madeline/idle_scratch +{8c51bec8-fb5a-4f50-ac30-9ad4c2c49ba2} event:/char/madeline/idle_sneeze +{eeede5f5-3691-4cd9-8b2c-91e02d3d41ed} event:/char/madeline/jump +{73ba5692-b6bd-4c78-a392-e41fa7425ead} event:/char/madeline/jump_assisted +{faac7cb1-bc6a-4e0d-8dc5-97f3c94363e6} event:/char/madeline/jump_climb_left +{1a77f0d4-81d8-4f97-bdf1-8e1e39cc69ef} event:/char/madeline/jump_climb_right +{5e5a1f06-5cf9-4daf-a7ed-3b36554dd44b} event:/char/madeline/jump_dreamblock +{25759b99-ad2a-4483-bb7e-0c4eac782c53} event:/char/madeline/jump_special +{4fc69f31-fc0f-42d3-af4c-20424c74d6a4} event:/char/madeline/jump_super +{8f5b7d80-8ca1-4415-942c-f1338b8a79f1} event:/char/madeline/jump_superslide +{67bb774a-41bd-4375-a4e7-53031c7f75cd} event:/char/madeline/jump_superwall +{f63c2b0a-f708-44f5-af13-6bba7e3af2cb} event:/char/madeline/jump_wall_left +{3b128250-55a7-4a1b-8d8e-edf325d80192} event:/char/madeline/jump_wall_right +{a7289b79-f525-4762-943e-98cf5c94151a} event:/char/madeline/landing +{60e29264-3711-498c-a7ed-c58ecefb5543} event:/char/madeline/mirrortemple_big_landing +{33880264-68a6-4863-8a03-e4ea7c5a72df} event:/char/madeline/predeath +{14d582cb-0c50-4837-bcc5-e7e03ff23687} event:/char/madeline/revive +{73265a98-2cb3-4d98-9643-cf592c2b9131} event:/char/madeline/stand +{7d18d617-475b-4d12-ad45-885c619e7540} event:/char/madeline/summit_areastart +{72eb7f2d-c3e9-41b2-afc0-b4cfee087389} event:/char/madeline/summit_flytonext +{f5babe6c-1ec1-4d4e-8934-a1809b5e26cb} event:/char/madeline/summit_sit +{dae064c8-86f9-458b-83af-fbd8b699a3b9} event:/char/madeline/theo_collapse +{cad411d1-889d-4fb6-85e7-210db19d1e11} event:/char/madeline/wallslide +{cab0df89-b0d1-439c-8ac7-37db9d43e3a1} event:/char/madeline/water_dash_gen +{fb5d35c5-47c8-439d-8d52-ec6daf91887b} event:/char/madeline/water_dash_in +{5ce79651-4adc-4592-b018-38aa212d6ca6} event:/char/madeline/water_dash_out +{4016ea56-842c-4649-99c4-7057db18c835} event:/char/madeline/water_in +{5cf06f89-cf18-4dfa-bc69-5e4b58095cf3} event:/char/madeline/water_move_general +{7d656ffa-050f-4cab-bbc9-03863fa14e4f} event:/char/madeline/water_move_shallow +{3b90c629-7dcf-467b-a438-75e3287c8ae5} event:/char/madeline/water_out +{e1fec409-ace5-4006-8b7c-ccf9fbf1ac59} event:/char/oshiro/boss_charge +{05362357-0f1e-4f89-9d04-8a2778451a6c} event:/char/oshiro/boss_enter_screen +{f5fc7368-4f02-4479-a805-0efdff3633f6} event:/char/oshiro/boss_precharge +{28afe636-0afc-4a73-957d-fa53f6295250} event:/char/oshiro/boss_reform +{53cd822c-b7e1-4d50-8574-4fe404457747} event:/char/oshiro/boss_slam_final +{83376c6a-a014-418e-9e21-dbc48df90069} event:/char/oshiro/boss_slam_first +{945afadd-8b82-439d-a3d5-c70d53d8df96} event:/char/oshiro/boss_transform_begin +{6be863d8-6204-4f23-9f06-f90d6d7a8092} event:/char/oshiro/boss_transform_burst +{6dd647fe-eefd-43d7-8a35-5a614678dd12} event:/char/oshiro/chat_collapse +{2985ee63-eec3-4263-bf6d-71e332bfa805} event:/char/oshiro/chat_get_up +{c4fc63e7-6814-466a-9077-c90a82fc710e} event:/char/oshiro/chat_turn_left +{a5b71a3a-2b11-43d7-a6dc-c2fc90d9d07e} event:/char/oshiro/chat_turn_right +{7714e509-b855-47b0-b57b-3b7d803c5652} event:/char/oshiro/move_01_0xa_exit +{4f200dab-f854-4ed1-8e93-b736211791d5} event:/char/oshiro/move_02_03a_exit +{ecd941b2-7246-49f9-ad46-dd6eee981bd5} event:/char/oshiro/move_03_08a_exit +{ce338380-a29d-461a-b661-267fa7acd32c} event:/char/oshiro/move_04_pace_left +{e2f5eac6-9d40-4bc5-bcaf-d14b6269354b} event:/char/oshiro/move_04_pace_right +{b6e13523-090a-44eb-aa4f-1a3c270c507f} event:/char/oshiro/move_05_09b_exit +{d63e2c8f-499c-4edc-a892-041ae47d5b96} event:/char/oshiro/move_06_04d_exit +{96c70110-4204-4456-b3ed-baf02ba4139a} event:/char/oshiro/move_07_roof00_enter +{dfc82939-d51a-4454-aedf-1b3c6d4cf986} event:/char/oshiro/move_08_roof07_exit +{56221566-2fd7-4b1a-99d7-6af227ab8398} event:/char/theo/phone_taps_loop +{f37cd8d3-4249-47ca-8243-28ae26cf7c5c} event:/char/theo/resort_ceilingvent_hey +{5220fbf8-61c9-4a15-8490-8571a7cfa54f} event:/char/theo/resort_ceilingvent_popoff +{d3ade5b6-5418-4d18-8ac3-b31f1f5a9581} event:/char/theo/resort_ceilingvent_seeya +{6fb99d9c-74ca-412d-b3b0-247b39a382df} event:/char/theo/resort_ceilingvent_shake +{30c6c5c3-bf5d-4cbe-b3ea-3ed4c1e2396e} event:/char/theo/resort_crawl +{757f9c8a-033b-4c8d-82d8-f415972efc8d} event:/char/theo/resort_standtocrawl +{56e5cd34-78ba-45b2-96f3-83fc95c7c8df} event:/char/theo/resort_vent_grab +{aeef3032-ca85-4ac7-9866-c04c15bb8ef3} event:/char/theo/resort_vent_rip +{3d4ee73d-0198-43a2-b1d4-7b98cb16944b} event:/char/theo/resort_vent_tug +{4b18a52d-d2ba-4f5c-9880-9b49a0179e72} event:/char/theo/resort_vent_tumble +{3e111712-ffe7-404b-8dfe-08b630014170} event:/char/theo/yolo_fist +{1220c5e3-9e68-4e3f-9731-37f8efeca4d5} event:/classic/!!!_README +{96db8ec4-31c6-45aa-ae05-0b73cd02a1ff} event:/classic/pico8_boot +{79038cb9-407b-4d35-892a-1ec71396a682} event:/classic/pico8_mus_00 +{b7c9c3a9-c1bc-4a77-961e-b306f5b9c140} event:/classic/pico8_mus_01 +{feac844d-0797-404b-a390-3ab8257a187c} event:/classic/pico8_mus_02 +{7186f56e-2df7-42eb-9375-3b272fe60ce1} event:/classic/pico8_mus_03 +{aaa40caf-ae3a-4f7e-a2b3-92c2ebe55df6} event:/classic/sfx0 +{3e4da5d7-22bc-4a2a-975f-962d0b13ea30} event:/classic/sfx1 +{6452fdae-f5bc-405a-95b0-ab1aeef0c504} event:/classic/sfx13 +{a9262674-7b9d-4aea-8a57-84c2f26049b6} event:/classic/sfx14 +{818fc44f-268e-48ff-8876-b8a64842b5ed} event:/classic/sfx15 +{4d5e60c8-4be0-42c1-9f24-e5ebecd840eb} event:/classic/sfx16 +{e52366bb-874d-4e52-97b0-5f84602ce96d} event:/classic/sfx2 +{5956eda7-31c9-47f6-8b62-f8b488c879a5} event:/classic/sfx23 +{21c14b80-cb2e-4f2e-8d1e-b8f3941b162c} event:/classic/sfx3 +{14db4278-02a9-4513-9361-0e53d9da8811} event:/classic/sfx35 +{4e545f69-79f2-4d28-950c-10cbb43e77e6} event:/classic/sfx37 +{bbabbdbc-da20-42af-9c0d-0daa8299cc7f} event:/classic/sfx38 +{09c2f490-6fc5-4d52-95e1-e873ff360487} event:/classic/sfx4 +{4e2a357d-8a57-4ea6-8df5-b9411495dfd6} event:/classic/sfx5 +{606bd67d-d92a-46f0-a2e1-0a95ea23bfef} event:/classic/sfx51 +{6ccb266f-2044-41dc-88bd-55d20f34627a} event:/classic/sfx54 +{55989b60-f060-4a18-87cc-0d1ad5428801} event:/classic/sfx55 +{c2f12510-a65f-4fe6-b8c2-d6dafd0bd33d} event:/classic/sfx6 +{52df708d-a28a-46e8-bf24-a7516b8d6960} event:/classic/sfx61 +{e489d78b-10c5-47e7-9ad5-bee84ab5df55} event:/classic/sfx62 +{99e37b23-955b-4b57-8297-e5c24a7618ee} event:/classic/sfx7 +{a0206dfc-61d3-447f-ac45-dbcaeeb2babf} event:/classic/sfx8 +{94844611-3d78-4843-bef4-5a7fb9cd3930} event:/classic/sfx9 +{0fa79a65-c103-4f72-84d6-7a22c9b2f43c} event:/env/amb/00_prologue +{04cc4be2-4acf-474a-a897-8709563af4c3} event:/env/amb/01_main +{f34c1fdf-5470-453f-afc5-c3ef0f0f65cb} event:/env/amb/02_awake +{409883b0-271d-4b20-9f0b-2d24e2f3c328} event:/env/amb/02_dream +{c37ce843-6664-44ab-9d07-8acdbc9efed8} event:/env/amb/03_exterior +{fee4e52e-5f96-4739-b609-07ccd6c60610} event:/env/amb/03_interior +{db641550-ff4f-430a-9dad-9e038e382ae5} event:/env/amb/03_pico8_closeup +{d0ea5750-b681-4bcd-a795-8a1fa908ac2e} event:/env/amb/04_main +{edc1c4bb-137f-4551-92f0-220b11118e0d} event:/env/amb/05_interior_dark +{36b91db4-ad22-4c8d-aa83-7964f95398ab} event:/env/amb/05_interior_main +{fb77cba9-f373-4f6b-9057-2fa3fffdd657} event:/env/amb/05_mirror_sequence +{8a921fb6-6b6c-4f2d-bd8b-8d7a319a44fc} event:/env/amb/06_lake +{b09159fb-d5a0-4daa-ab5f-0f1898bc3335} event:/env/amb/06_main +{2e69b6a7-2ab5-4a35-a307-27a52fdf7458} event:/env/amb/09_main +{a64aedd6-1f18-4f49-a41d-9a9f5ebbe616} event:/env/amb/worldmap +{c15f9104-cc0f-4d4f-b085-fb0e40d43924} event:/env/local/02_old_site/phone_lamp +{f271db26-d18b-488c-8a6f-d5f2b98039fa} event:/env/local/03_resort/broken_window_large +{3052bb3d-8343-4d09-bf59-d525735f4407} event:/env/local/03_resort/broken_window_small +{6217f4fb-20f3-4fc2-9ab5-45297d919bc5} event:/env/local/03_resort/pico8_machine +{9ccbd053-b248-430d-9e0b-d7d294b97e39} event:/env/local/06_reflection/boss_idle_ground +{ce0c8cf0-9aa6-4b7a-a66a-cd8509e5f674} event:/env/local/07_summit/flag_flap +{e9d25928-9e16-43ac-9e79-f099290d643c} event:/env/local/09_core/conveyor_idle +{57b3a09b-dbc8-435e-8d24-6d1f913ac85c} event:/env/local/09_core/fireballs_idle +{7fc7eafb-26b7-4b84-bfb4-1d779c22a066} event:/env/local/09_core/lavagate_idle +{7cc20e5f-81e5-4166-acc6-704dc13f46f3} event:/env/local/campfire_loop +{a780517b-19c9-47d4-88ab-091fb03f1f9e} event:/env/local/campfire_start +{cc54fdc5-ac1a-4df6-8180-03295b15aca1} event:/env/local/waterfall_big_in +{1a51e71c-fbf7-4f0c-b659-622ada05f17c} event:/env/local/waterfall_big_main +{76e57bb1-14a6-44cc-ae96-de5ae20e81fd} event:/env/local/waterfall_small_in_deep +{9bbc655b-22ce-4c82-897b-cfe0fad986d5} event:/env/local/waterfall_small_in_shallow +{ccef0473-c1e5-4dd0-8c94-fc3fe5fc95bb} event:/env/local/waterfall_small_main +{6a3f7aaf-bea3-4ac6-a919-d4b6eef81ae7} event:/env/state/underwater +{3f2d088f-f438-42c1-b9e9-6e6a44203865} event:/game/00_prologue/bridge_rumble_loop +{fb47d655-bc4f-4361-b4a2-d19e30518d24} event:/game/00_prologue/bridge_support_break +{319ecd12-335d-44ff-94ca-07fe499d4a87} event:/game/00_prologue/car_down +{45cba62a-4146-4fdb-8b39-643e9ab1782c} event:/game/00_prologue/car_up +{0c8ca90b-c14e-41ca-8233-ec0f74a6aab5} event:/game/00_prologue/fallblock_first_impact +{388260ad-8996-4220-a041-4165704072d4} event:/game/00_prologue/fallblock_first_shake +{477f6667-1b22-4276-a0cf-1370ae099d9e} event:/game/00_prologue/intro_vignette +{b9976863-f695-4730-b534-9299bf5f58b1} event:/game/01_forsaken_city/birdbros_finish +{9df8975f-f839-4ee6-91ec-61fcfc2a93a3} event:/game/01_forsaken_city/birdbros_fly_loop +{811bbaf0-41b3-4271-8cba-215e12986fb5} event:/game/01_forsaken_city/birdbros_thrust +{e9da9c8d-7bdb-4345-9724-35892a5b44ac} event:/game/01_forsaken_city/console_blue +{893973ec-2dd4-4478-b771-30ac723a7c9e} event:/game/01_forsaken_city/console_purple +{20819c4b-843b-46f2-8c05-8e062e76681d} event:/game/01_forsaken_city/console_red +{6b0262b0-9ae4-474e-9f76-aa1c59942351} event:/game/01_forsaken_city/console_static_long +{024160fc-f496-4d0a-9b5d-16d473524b95} event:/game/01_forsaken_city/console_static_loop +{214e17a6-b3af-451f-a29f-a08351abe64d} event:/game/01_forsaken_city/console_static_short +{6a535067-5141-44c5-92fa-69aa73d96058} event:/game/01_forsaken_city/console_white +{6ddd11c0-8481-4912-81be-ac3ecaeef96f} event:/game/01_forsaken_city/console_yellow +{99c35088-2d5e-4846-b27e-e1adfcd15afa} event:/game/01_forsaken_city/fallblock_ice_impact +{8d6d24fe-c860-4328-9650-c29b39ba87a2} event:/game/01_forsaken_city/fallblock_ice_shake +{c7f359ea-785f-4328-8135-4000ec1486bc} event:/game/01_forsaken_city/zip_mover +{f4f839d0-f7cc-402a-9767-ad79d20ae5d6} event:/game/02_old_site/lantern_hit +{44ed360f-e714-4a3a-99e8-3aed8ecf22cb} event:/game/02_old_site/sequence_badeline_intro +{77800c0d-5128-44d0-8bb1-67174af44406} event:/game/02_old_site/sequence_mirror +{7a436113-5059-4565-a239-927c4876b345} event:/game/02_old_site/sequence_phone_pickup +{1da40d8f-f7d3-425c-9f34-37684fda4aa4} event:/game/02_old_site/sequence_phone_ring_loop +{2c58d235-d6db-4974-825f-426ec121fe23} event:/game/02_old_site/sequence_phone_ringtone_loop +{5a79bbfe-cff0-4117-890d-90e4121c3fec} event:/game/02_old_site/sequence_phone_transform +{d75e80d5-50b4-4a0c-91c8-b7d377fd0d9b} event:/game/02_old_site/theoselfie_foley +{24197259-c364-40a3-b155-f4ba57503891} event:/game/02_old_site/theoselfie_photo_filter +{1eb80e39-81b3-45ec-a5c7-285e31d92245} event:/game/02_old_site/theoselfie_photo_in +{9524d309-340d-4bd4-9479-b6c08e2615cd} event:/game/02_old_site/theoselfie_photo_out +{ab48ef65-2a19-4e26-bd96-c91188020dd6} event:/game/03_resort/clutterswitch_books +{72ea8830-baf4-40b0-bc3a-d05ae7a3ace3} event:/game/03_resort/clutterswitch_boxes +{9f8d7e9f-ec6d-4903-81bc-e1c4e0869dc1} event:/game/03_resort/clutterswitch_finish +{bbec6527-f6d3-42a3-9ad5-4ebbeeebccc9} event:/game/03_resort/clutterswitch_linens +{99b2879f-9f5f-4c28-8a2f-46e379488863} event:/game/03_resort/clutterswitch_return +{4518ae95-ba77-4242-b617-6c18d2f4f570} event:/game/03_resort/clutterswitch_squish +{dcef90ad-4141-4451-a54a-139802c4cfe5} event:/game/03_resort/deskbell_again +{b65c24ca-a160-4d14-b930-2c851cc91f30} event:/game/03_resort/door_metal_close +{1a62e6d5-c2d5-45c7-8d15-ae1352a8b1a4} event:/game/03_resort/door_metal_open +{aec16b15-9f62-4a00-ad28-abfe8b8565dd} event:/game/03_resort/door_wood_close +{d2c8b607-3339-4882-bfa6-e2023dd9ab5f} event:/game/03_resort/door_wood_open +{d77f57f5-6a0e-41d7-aff8-3d2e35942458} event:/game/03_resort/fallblock_wood_impact +{705d6d6f-3d2e-46c5-babb-c84a5ddb35f9} event:/game/03_resort/fallblock_wood_shake +{94fcaef2-821e-4308-8532-4f141db24227} event:/game/03_resort/fallblock_wooddistant_impact +{f84f688a-176f-41b7-b8e9-96df630ff088} event:/game/03_resort/fluff_tendril_emerge +{477a28ea-70e0-4085-8053-d3bf776aedc2} event:/game/03_resort/fluff_tendril_recede +{11bddfee-df7f-41b8-84a0-8fbe19a1ba30} event:/game/03_resort/fluff_tendril_touch +{1e7997d7-a551-479e-90d3-f6929fd665ef} event:/game/03_resort/forcefield_bump +{4c443389-e3fc-41ab-b502-29d39a06f591} event:/game/03_resort/forcefield_idle_loop +{512ca8f8-a58f-4bd0-bd55-a237fa07c6c6} event:/game/03_resort/forcefield_vanish +{ce414756-a0c5-481c-9d0b-dc045f5d5771} event:/game/03_resort/key_unlock +{a20f939e-69a3-4b1a-a1ae-7dfcfa310fe0} event:/game/03_resort/lantern_bump +{142ae054-bc66-4b91-8c25-eff2ee9e4f05} event:/game/03_resort/memo_in +{a3b55290-30ce-464e-b669-9582d71e7c70} event:/game/03_resort/memo_out +{e4408a77-67c1-4e52-974d-4e1363d4cb6f} event:/game/03_resort/platform_horiz_left +{ce237948-99bc-45ba-a812-45c3166d1ce9} event:/game/03_resort/platform_horiz_right +{9ade5023-0a36-4b94-bd91-a542cee21719} event:/game/03_resort/platform_vert_down_loop +{457fdcf2-f81a-4b03-a669-e1193355a7c2} event:/game/03_resort/platform_vert_end +{a4c41f6f-ff8f-4ec8-b122-6c6ab1f81e23} event:/game/03_resort/platform_vert_start +{f894b1fb-3842-414c-aef3-ae5a271587d1} event:/game/03_resort/platform_vert_up_loop +{fc333ed7-13ad-42a5-903d-8ddb19226c0e} event:/game/03_resort/sequence_oshiro_intro +{e00ff4f4-f290-443a-ad1d-27e6c429c328} event:/game/03_resort/sequence_oshirofluff_pt1 +{e00d4196-5c66-4504-af86-08a0ed590b8e} event:/game/03_resort/sequence_oshirofluff_pt2 +{c3deeaef-d69e-4595-9bba-31caa24af6d8} event:/game/03_resort/suite_bad_ceilingbreak +{19ecfec2-e1a0-4335-862f-eaa1d9e679fd} event:/game/03_resort/suite_bad_exittop +{90e330ed-1d4f-4a5a-9dfd-1567b918879c} event:/game/03_resort/suite_bad_intro +{2b2852bd-7b5e-4c42-a05d-31b667dfc577} event:/game/03_resort/suite_bad_mirrorbreak +{9adf0f9b-8820-44de-aede-62403e1c095c} event:/game/03_resort/suite_bad_moveroof +{503d84f2-17c0-4a36-9f8c-7a17e4517e52} event:/game/03_resort/suite_bad_movestageleft +{1f43075b-c346-4a3d-a81d-b2a2fa18b281} event:/game/03_resort/trapdoor_frombottom +{9cf437b5-d65b-4dd9-a6a4-76fe3e7f9c14} event:/game/03_resort/trapdoor_fromtop +{3164e6e3-a335-4821-bbed-eb598dcae9ce} event:/game/04_cliffside/arrowblock_activate +{51df0abc-4ee9-4dd8-8123-d559a7f51383} event:/game/04_cliffside/arrowblock_break +{05956d91-3c60-437c-b83c-c7883b36408d} event:/game/04_cliffside/arrowblock_debris +{77afc34f-d0dc-4224-89c6-936762850581} event:/game/04_cliffside/arrowblock_move +{f478a136-13df-4b80-946d-1081658ef79f} event:/game/04_cliffside/arrowblock_move_child +{a09bfe4a-d2df-48da-af7f-64c1db765dcf} event:/game/04_cliffside/arrowblock_reappear +{d5e8a4f4-f627-4802-975c-b99ef4fea5ee} event:/game/04_cliffside/arrowblock_reform_begin +{7d6ccc8f-678e-4648-bead-3a5c82cfd916} event:/game/04_cliffside/arrowblock_side_depress +{9a3d6d97-4b11-4771-bf58-fbe2d7274579} event:/game/04_cliffside/arrowblock_side_release +{29ffaa1c-75e8-43e8-9002-54bc40193f8b} event:/game/04_cliffside/cloud_blue_boost +{24844c62-b116-4d87-b944-e748e897bd28} event:/game/04_cliffside/cloud_pink_boost +{39c755bc-96f7-4fe8-89b6-0b1a93a61881} event:/game/04_cliffside/cloud_pink_reappear +{bff1e723-0426-432f-8cbd-780f03e54492} event:/game/04_cliffside/gondola_cliffmechanism_start +{03879103-1510-4dca-a1d0-5e8749bfa6a1} event:/game/04_cliffside/gondola_finish +{056c87c9-457e-475f-b216-206d73982cd2} event:/game/04_cliffside/gondola_halted_loop +{e714a1e9-e0de-4ff0-bb70-9290eeafb029} event:/game/04_cliffside/gondola_movement_loop +{b8669a2f-941b-47c3-9e37-fff4c4086a54} event:/game/04_cliffside/gondola_restart +{4071aef2-1c21-4095-9fe9-500c007d3dcd} event:/game/04_cliffside/gondola_scaryhair_01 +{6817fd65-b0e9-43b5-8338-029e57b0f794} event:/game/04_cliffside/gondola_scaryhair_02 +{d0fff247-3b15-4a9c-8606-00cf2da9475a} event:/game/04_cliffside/gondola_scaryhair_03 +{81f28bb7-3b0a-43e7-bcd8-4bab557fe657} event:/game/04_cliffside/gondola_theo_fall +{b3501af7-543d-4a16-ba86-5fb0da4416fd} event:/game/04_cliffside/gondola_theo_lever_fail +{898f077b-02af-4524-883d-8bd2a8d7bd9b} event:/game/04_cliffside/gondola_theo_lever_start +{8a992dbc-82cf-41f6-9ebe-493eb1dd3c3a} event:/game/04_cliffside/gondola_theo_recover +{6d7ed51e-7e2c-43ed-913d-6617d6dd43e0} event:/game/04_cliffside/gondola_theoselfie_halt +{e916ead7-7d6f-43a7-aaf7-b6a507a6664f} event:/game/04_cliffside/greenbooster_dash +{bcd8c865-476c-4ff8-a8a4-facf110321a8} event:/game/04_cliffside/greenbooster_end +{a0bb25ba-3b9d-45a1-b4cd-214fe07288c0} event:/game/04_cliffside/greenbooster_enter +{80c246ab-79ac-4190-81c0-56bc959e67c8} event:/game/04_cliffside/greenbooster_reappear +{6bfa7995-5b42-4cc2-8459-6c650085f0c2} event:/game/04_cliffside/snowball_impact +{1c2db8f7-e816-4ebc-b825-0fd27357291e} event:/game/04_cliffside/snowball_spawn +{f2966dfb-524f-456f-9107-d2b2c8bbf398} event:/game/04_cliffside/stone_blockade +{c9374bde-64a8-4f26-b4ce-d84b28dac8c8} event:/game/04_cliffside/whiteblock_fallthru +{564d50fe-6229-4fc5-bef4-771b026308f2} event:/game/05_mirror_temple/bladespinner_spin +{097d5975-dee1-42e2-a3f0-1524b9d60fc6} event:/game/05_mirror_temple/button_activate +{e3598466-186b-4d6e-92bf-0a796a4b5f6a} event:/game/05_mirror_temple/button_depress +{797e3c30-39f9-4ab4-9749-9b7451598ec4} event:/game/05_mirror_temple/button_return +{3f6dc969-2f5c-4324-9cef-fc0119536f80} event:/game/05_mirror_temple/crackedwall_vanish +{1e303df8-ca93-4c8a-83a4-671e311469b0} event:/game/05_mirror_temple/crystaltheo_break_free +{5d717d53-4596-4f11-8f44-c73fb9543aba} event:/game/05_mirror_temple/crystaltheo_hit_ground +{ac5d3d51-3aac-4c22-a608-ba0bb777ca27} event:/game/05_mirror_temple/crystaltheo_hit_side +{f64177a2-2611-49cc-8c63-d74c1e29c8a3} event:/game/05_mirror_temple/eye_pulse +{ca49621b-2ecf-4c77-8282-ba1719986f0f} event:/game/05_mirror_temple/eyebro_eyemove +{22a41a42-5e6f-4185-85d4-b5d1a8c38d4d} event:/game/05_mirror_temple/eyewall_bounce +{7f180cd1-0f90-433d-b71e-c9a6cc7f49e7} event:/game/05_mirror_temple/eyewall_destroy +{68e31409-b316-478b-8eb3-67a885e9dd33} event:/game/05_mirror_temple/gate_main_close +{3ec0a31a-f6af-4426-aaa1-db57098dbd39} event:/game/05_mirror_temple/gate_main_open +{adbfae43-5c5b-4b38-abd2-e13215ebde56} event:/game/05_mirror_temple/gate_theo_close +{2b2b58c7-88e0-4575-aaa5-fbf276beddcf} event:/game/05_mirror_temple/gate_theo_open +{2cc437e8-70f0-48b0-ac2a-0dc93ee06b87} event:/game/05_mirror_temple/key_unlock_dark +{fef47165-cad5-492a-8a42-3db9cc48c2bd} event:/game/05_mirror_temple/key_unlock_light +{4fa2a3d9-560d-4546-92b7-969d2ca1fb29} event:/game/05_mirror_temple/mainmirror_reveal +{b857bbcf-540e-46fd-af37-5ea6d12e28f2} event:/game/05_mirror_temple/mainmirror_torch_lit_1 +{35abfea4-7b3b-489d-bcd8-431b93b87fa4} event:/game/05_mirror_temple/mainmirror_torch_lit_2 +{36604f79-14aa-4a46-a7b3-42a15fc7fbc1} event:/game/05_mirror_temple/mainmirror_torch_loop +{bdeb0f35-c06a-4f67-96d6-57869f22114f} event:/game/05_mirror_temple/redbooster_dash +{b3da9cec-f45e-4dcd-bf8b-c84a7dd5c56b} event:/game/05_mirror_temple/redbooster_end +{1ed8d7f1-ef06-4db9-98d2-4f2ea3b46e7b} event:/game/05_mirror_temple/redbooster_enter +{7f0e5b69-8d8a-4983-ac98-deb970106cc6} event:/game/05_mirror_temple/redbooster_move +{ae2f6ea7-bd05-41df-a0dd-044058292d72} event:/game/05_mirror_temple/redbooster_reappear +{39c3eab6-ef3e-4ffb-8653-b0345fc67e20} event:/game/05_mirror_temple/room_lightlevel_down +{752d010d-81f5-4ea8-a9ab-b99d4e0e1dd9} event:/game/05_mirror_temple/room_lightlevel_up +{9521ed4e-a395-4ef2-89cc-3a3c99942108} event:/game/05_mirror_temple/seeker_aggro +{a35ec65b-6b2b-47b1-8c5f-b13facb6487f} event:/game/05_mirror_temple/seeker_booped +{3147835f-3002-4097-bc14-53c456a8501f} event:/game/05_mirror_temple/seeker_dash +{051055e4-9308-4765-9a0b-877491039301} event:/game/05_mirror_temple/seeker_dash_turn +{48325639-2492-43e0-81de-cd7898db8b8c} event:/game/05_mirror_temple/seeker_death +{d7f87c78-d631-4cb3-8487-f077d65ed4a5} event:/game/05_mirror_temple/seeker_hit_lightwall +{b51e22cd-a7bb-42e5-a0d9-af5e9bfe3c36} event:/game/05_mirror_temple/seeker_hit_normal +{ded98d91-1f1e-4fcf-b177-959028cd379c} event:/game/05_mirror_temple/seeker_playercontrolstart +{fd08f871-88dc-484f-8773-497258aa3034} event:/game/05_mirror_temple/seeker_revive +{439c8be0-4350-4504-9df9-173abc3e15bb} event:/game/05_mirror_temple/seeker_statue_break +{1b02729d-bb1d-4366-94fb-a5683edbfa38} event:/game/05_mirror_temple/swapblock_move +{c4d97750-9512-487d-bd98-cfbe021a2702} event:/game/05_mirror_temple/swapblock_move_end +{a9879415-f054-4486-9582-44cf599b5e70} event:/game/05_mirror_temple/swapblock_return +{7820adbb-5c57-46ac-bde1-9ecba7fa730e} event:/game/05_mirror_temple/swapblock_return_end +{2bf6eb6d-2bbb-4bbf-bf76-1f37fd8b6098} event:/game/05_mirror_temple/torch_activate +{3d116858-7da6-4838-a3bc-5e1f1fb73fd4} event:/game/06_reflection/badeline_feather_slice +{79ca9943-db1f-4118-9c48-1893e5937e42} event:/game/06_reflection/badeline_freakout_1 +{45b9d18d-7871-4c32-93af-521b3bd55483} event:/game/06_reflection/badeline_freakout_2 +{3b218b08-138f-48ab-9e13-00d093114e40} event:/game/06_reflection/badeline_freakout_3 +{3a28d465-3e86-4e3c-8ffd-5e5ba8449c95} event:/game/06_reflection/badeline_freakout_4 +{d1915e57-1952-448d-8610-6b123f6b449c} event:/game/06_reflection/badeline_freakout_5 +{6d25e0a4-6603-4ead-b934-ab432c153bd9} event:/game/06_reflection/badeline_pull_cliffbreak +{74f464a2-074c-4693-9aa6-fc4b1a875f50} event:/game/06_reflection/badeline_pull_impact +{a78e5da7-9ee8-4ba7-bdf0-f3fa45dfb3d8} event:/game/06_reflection/badeline_pull_rumble_loop +{b03ce754-f33d-44f6-aaa8-4f7702dfc335} event:/game/06_reflection/badeline_pull_whooshdown +{03185ab0-0f08-4c6e-a6ae-1c44da6b2842} event:/game/06_reflection/boss_spikes_burst +{a67c7b2a-2efe-437d-b4eb-9b0b7c9a5c38} event:/game/06_reflection/crushblock_activate +{0b58832d-4e27-44db-a154-558d490c3083} event:/game/06_reflection/crushblock_impact +{964ff961-da31-4ff4-b344-7b7dd4ddc7d7} event:/game/06_reflection/crushblock_move_loop +{a8ad11bd-1740-42fc-a83b-e067c2461c18} event:/game/06_reflection/crushblock_move_loop_covert +{251c3dfb-0cab-4ef7-bb2c-2b0f8aa56537} event:/game/06_reflection/crushblock_rest +{115ebebd-cb97-4ba1-bc55-5f6dac63a699} event:/game/06_reflection/crushblock_rest_waypoint +{b04421be-109d-400f-8797-cdd05d0f6bd7} event:/game/06_reflection/crushblock_return_loop +{88cc2646-c70d-47bb-9e88-1de934fa1792} event:/game/06_reflection/fall_spike_smash +{441f8a0a-8783-4894-b45c-815c95877931} event:/game/06_reflection/fallblock_boss_impact +{d7c6ea52-c946-4099-9a90-553be5d5335b} event:/game/06_reflection/fallblock_boss_shake +{eb66579e-6a05-4b8d-ad27-0f39703998c7} event:/game/06_reflection/feather_bubble_bounce +{6e29b787-1f7a-4f44-84a8-eb867342a37f} event:/game/06_reflection/feather_bubble_get +{eef6081c-aa94-4203-a235-41cc41007d4e} event:/game/06_reflection/feather_bubble_renew +{3cafbad4-ca29-4798-815a-ada3a887ffd3} event:/game/06_reflection/feather_get +{9a2f4eef-a598-4031-9600-4ed2d0ecec3c} event:/game/06_reflection/feather_reappear +{38215515-d671-4635-a2ff-9b6749619301} event:/game/06_reflection/feather_renew +{e08e627f-334c-46f1-b8a8-9c090cadc788} event:/game/06_reflection/feather_state_bump +{ea1e1d39-ace6-481c-8438-d57709355f1e} event:/game/06_reflection/feather_state_end +{a7153155-8c54-4635-9ea5-5423d9cd02e5} event:/game/06_reflection/feather_state_loop +{7d1dcd4a-298d-4943-b70d-f41311ec4f1b} event:/game/06_reflection/feather_state_warning +{61497bfa-cd5f-4c26-86ae-a12d04fd5dee} event:/game/06_reflection/hug_badeline_glow +{3aded16d-06f6-4a37-aa4c-91bd91ee290a} event:/game/06_reflection/hug_image_1 +{d375e1f8-d1ac-47f2-8bc9-bc51029404e6} event:/game/06_reflection/hug_image_2 +{21cc70d3-7469-431e-b31d-63844d7005c5} event:/game/06_reflection/hug_image_3 +{97ad5be6-ab5a-4587-9868-1a6a36befc48} event:/game/06_reflection/hug_levelup_text_in +{be107a92-39f3-4789-8fbb-b1055dee27ee} event:/game/06_reflection/hug_levelup_text_out +{21db4b0c-6524-4545-8266-c6ea1bf032ef} event:/game/06_reflection/pinballbumper_hit +{8d6249fc-9f0d-4980-b876-036252ae209d} event:/game/06_reflection/pinballbumper_reset +{34751b86-7136-491f-b281-4acfc5abc130} event:/game/06_reflection/scaryhair_move +{990ebd4d-3117-4c00-8328-88b757411c91} event:/game/06_reflection/scaryhair_whoosh +{91dc7f98-2590-4c28-adcb-02c1881cf8d2} event:/game/06_reflection/supersecret_dashflavour +{8b071bc7-bb71-4db6-9a0c-78c576426dc8} event:/game/06_reflection/supersecret_heartappear +{3e6f0df6-6fe4-47de-b2c0-d08bcfa21319} event:/game/06_reflection/supersecret_torch_1 +{ba61f3cf-14b9-4d76-b433-4a6d8f14dedc} event:/game/06_reflection/supersecret_torch_2 +{a962651f-30eb-4a9c-97fc-d835f6a87783} event:/game/06_reflection/supersecret_torch_3 +{954696fc-a63e-4463-a54c-10838017aa8e} event:/game/06_reflection/supersecret_torch_4 +{007817b9-722a-44c8-8e14-cc66233ce495} event:/game/07_summit/altitude_count +{6fb5dd68-3aab-4a50-ad31-33d08b2e88e5} event:/game/07_summit/checkpoint_confetti +{98bbbca2-1b04-495b-8a02-7eae819d473c} event:/game/07_summit/gem_get +{c4168a8d-2840-4f88-8dae-c53ae7a67551} event:/game/07_summit/gem_unlock_1 +{e67a6421-0ca8-4051-98f4-8ee400f0db93} event:/game/07_summit/gem_unlock_2 +{b7fd1fc1-f041-42ef-82c3-ff792e998a1a} event:/game/07_summit/gem_unlock_3 +{dccaadfe-f788-4980-8a91-4f8fadb26609} event:/game/07_summit/gem_unlock_4 +{f7e67666-e4fe-49db-a6e3-209bfae067a4} event:/game/07_summit/gem_unlock_5 +{c8ad0627-526a-4251-b3c9-9e77637278a0} event:/game/07_summit/gem_unlock_6 +{4ab3c742-e5f8-4337-a38e-ea8ed81f3585} event:/game/07_summit/gem_unlock_complete +{d16b3d24-62a8-428d-a6c9-9a1d9b0b47db} event:/game/09_core/bounceblock_break +{9d02cd4d-a187-4104-a985-505de199fb25} event:/game/09_core/bounceblock_reappear +{7be458ab-5b1e-4237-84e7-ead255468209} event:/game/09_core/bounceblock_touch +{c11484c7-8cc1-4328-b074-2ed680b452f1} event:/game/09_core/conveyor_activate +{a97e79b8-1e79-4f31-a648-7b99414a800c} event:/game/09_core/final_heart_get +{91d12529-3e7b-47e2-bc73-2037267fc6ca} event:/game/09_core/frontdoor_heartfill +{12eebf33-5c32-46f2-b988-00fdffb83b6d} event:/game/09_core/frontdoor_unlock +{2718ffac-db8e-4f95-b54e-253134bd48a5} event:/game/09_core/hotpinball_activate +{3988aed8-0d51-4226-8ebb-89a25c823c78} event:/game/09_core/iceball_break +{6c7ea8bb-a843-4cd6-8397-c31344ae3a83} event:/game/09_core/iceblock_reappear +{cb58d270-9f66-4686-aea7-ca779f5ce612} event:/game/09_core/iceblock_touch +{2823a745-a4bf-428a-9c9f-01d36d543f63} event:/game/09_core/pinballbumper_hit +{d9c39b1e-abbe-40b0-a78a-b78b61d94ebd} event:/game/09_core/rising_threat +{4873d018-21da-4850-8503-df248e413cb5} event:/game/09_core/switch_dies +{e08cde3f-631d-47ab-a94a-9281717c3219} event:/game/09_core/switch_to_cold +{9b4a375f-ac9e-4d57-a145-b7e488e46191} event:/game/09_core/switch_to_hot +{93c5f4b9-cb2c-4db0-ad3f-b05272ff8950} event:/game/general/assist_dash_aim +{f32eab8f-468d-430f-8fb4-c603abc19aab} event:/game/general/assist_dreamblockbounce +{0cc0f8af-53e0-4301-a6ba-9d3545a34e4e} event:/game/general/assist_nonsolid_in +{992b2466-36d9-4202-a439-2a74a43a19d1} event:/game/general/assist_nonsolid_out +{b98b9406-a64d-4428-b882-a33366f50cbf} event:/game/general/assist_screenbottom +{5f8d988c-528d-4d55-a6e2-4c47bfc50176} event:/game/general/bird_in +{51d238e6-4f1b-46f6-a94d-df78f8df8ac7} event:/game/general/bird_land_dirt +{391d10bd-1577-4ae2-8370-04e1bd3f0fc5} event:/game/general/bird_peck +{4d1ae0ae-db96-47b7-925c-ce84c6ab722e} event:/game/general/bird_squawk +{7ea54ed8-0285-4dfc-a1ce-558444a4aa59} event:/game/general/bird_startle +{73b07905-9234-4900-af6e-b27820978106} event:/game/general/birdbaby_flyaway +{855749a2-8c5a-4db6-9877-f7cfd3a2183c} event:/game/general/birdbaby_hop +{2708f97c-8a18-4c6b-9bd7-1abf90dac0f6} event:/game/general/birdbaby_tweet_loop +{0e132294-09bd-44a3-9af3-9392521eddef} event:/game/general/cassette_block_switch_1 +{4286af39-b45f-42e6-887d-f8515180d3f8} event:/game/general/cassette_block_switch_2 +{9db695ce-ce56-4025-9528-030d6b599c86} event:/game/general/cassette_bubblereturn +{111996f6-8bae-408f-86d1-0aeae8203f4b} event:/game/general/cassette_get +{4c42d16c-381c-43ca-9d5d-56595e196b08} event:/game/general/cassette_preview +{1acb8e84-5f79-4dcd-86aa-e8a514535b7d} event:/game/general/crystalheart_blue_get +{96349ed6-cd24-4010-a9ee-0e93101a6609} event:/game/general/crystalheart_bounce +{10ff4e08-9448-49ae-8092-d402bb128538} event:/game/general/crystalheart_gold_get +{78f2deb2-fccc-4d1d-b78a-9667d574bbf3} event:/game/general/crystalheart_pulse +{e04dbcbd-4476-4174-9046-1e92febcc08e} event:/game/general/crystalheart_red_get +{8b672ab7-0d76-45fb-a9e9-1676ca014d6f} event:/game/general/debris_dirt +{3795b486-390b-46cc-97f9-dced1a83453b} event:/game/general/debris_stone +{972b07a3-38ff-4818-b24d-151db5d3a044} event:/game/general/debris_wood +{735f3afc-00bc-46da-94f1-2cb51e3bfecc} event:/game/general/diamond_return +{a47180e1-9bc2-4dbc-86c7-6402cea2e2be} event:/game/general/diamond_touch +{5381856a-d548-4a31-b7e5-b94d2a72881e} event:/game/general/fallblock_impact +{a9cc805b-cc3c-4e29-af3b-bc69914e5a10} event:/game/general/fallblock_shake +{3070bcdd-928f-4ffb-ba75-d43dbb2c2864} event:/game/general/key_get +{2b6c4db0-c9c8-4be7-8835-b4866bc1e4f5} event:/game/general/lookout_move +{60836b2c-9999-4f03-8801-2c01dc40b163} event:/game/general/lookout_use +{f372e3a9-bb65-4343-bf47-b87d18d10383} event:/game/general/passage_closed_behind +{e217436d-8f73-462c-9877-ac095e8f20b8} event:/game/general/platform_disintegrate +{58e5b7db-c18b-4399-bd5c-dd592c9c1b47} event:/game/general/platform_return +{38e9f295-6400-41e8-b574-9a1e8c908622} event:/game/general/secret_revealed +{2626645e-6392-4963-8361-4dccfa511758} event:/game/general/seed_complete_berry +{26391bcd-7613-49ad-a9bd-529f7bcaeb29} event:/game/general/seed_complete_main +{884bccb8-958a-4278-8a1b-daf74fff37c0} event:/game/general/seed_poof +{b5d1aeec-3d7e-4eed-9e82-5014b99162ce} event:/game/general/seed_pulse +{c4df15cb-44b5-4913-b238-29083f1d8b0a} event:/game/general/seed_reappear +{6160ad7b-16f6-49a5-aa9b-55d75da5a8e1} event:/game/general/seed_touch +{1a7858a9-96f8-426a-a06f-0c2750e43f85} event:/game/general/spotlight_intro +{b38c0f26-cef2-487f-b99c-295757ccd5a9} event:/game/general/spotlight_outro +{a4c52eee-f6a0-4ebe-976f-fab38d4cfa7a} event:/game/general/spring +{2452bb12-5d79-4849-b62b-17cc06744679} event:/game/general/strawberry_blue_pulse +{5c271b0b-eba2-400b-8011-e1d673324674} event:/game/general/strawberry_blue_touch +{3b9e48f1-e72d-46a6-909b-4ce5044c4253} event:/game/general/strawberry_flyaway +{3b45b8d4-ff15-4d36-9411-3e4ce2726377} event:/game/general/strawberry_get +{e144b578-20dd-4722-897c-24de90562b7b} event:/game/general/strawberry_laugh +{0886e368-bce4-4922-97c3-edeadf714e29} event:/game/general/strawberry_pulse +{525d00db-bc31-4054-9f61-0238bfd62941} event:/game/general/strawberry_touch +{dd319a09-d197-4604-8ebf-c5fee614d863} event:/game/general/strawberry_wingflap +{5a1e6a52-fa6a-44fb-b7ef-931a000b7c95} event:/game/general/thing_booped +{30fafd37-cd47-4a56-ab3b-0cc8f1beec5b} event:/game/general/touchswitch_any +{0d6edb8b-2936-4e11-bc13-2c8bba70cbfa} event:/game/general/touchswitch_gate_finish +{845556f0-842c-46d2-ac6c-64fc05f14cb0} event:/game/general/touchswitch_gate_open +{0bf56c65-3c71-4a0a-bce1-0bc63af5b3f6} event:/game/general/touchswitch_last +{effc3510-2efe-422f-aa3a-30b8ace60533} event:/game/general/touchswitch_last_cutoff +{479dda0f-e99f-478b-96c0-6367cf06cab2} event:/game/general/touchswitch_last_oneshot +{329fd34b-cca4-4d8c-a07e-fdf8be436e38} event:/game/general/wall_break_dirt +{7c01de41-a31a-43c3-9c0f-9ae85ad94c68} event:/game/general/wall_break_ice +{92f75010-4e90-428e-834c-1315ddbd9460} event:/game/general/wall_break_stone +{634bdd66-3f53-4679-8ced-fadfc60d412f} event:/game/general/wall_break_wood +{51873fdd-604e-4810-9db1-8c6e5a6049b5} event:/music/cassette/01_forsaken_city +{e44a2aa5-f96e-4d75-8018-8bee278017ad} event:/music/cassette/02_old_site +{bb2ac8fc-6353-4127-bc7b-7439262508da} event:/music/cassette/03_resort +{bda820f1-0c6f-4c4f-8e8b-615d94a6bb89} event:/music/cassette/04_cliffside +{117d38ce-6174-491e-9564-107d17a7b187} event:/music/cassette/05_mirror_temple +{832066ac-c78a-4c60-a7d0-dbc2c4712dd7} event:/music/cassette/06_reflection +{464d1185-b4c6-4ab8-b570-ed2a92c3aade} event:/music/cassette/07_summit +{ac98793d-c890-4675-bb13-3a3aec282b0b} event:/music/cassette/09_core +{474ccf9f-bad7-48e2-b7c6-df307b74e4a5} event:/music/lvl0/bridge +{8b890963-5cea-4df9-8d73-ca2116519928} event:/music/lvl0/intro +{02fa256c-1e08-46e5-9082-85c38b403d4c} event:/music/lvl0/title_ping +{1af3da54-a900-4929-acdf-5098a27c4d8e} event:/music/lvl1/main +{294d9147-9177-42ba-9bd8-04defb79a6a6} event:/music/lvl1/theo +{aa60a19a-6bab-43d2-9b18-9c0f39087123} event:/music/lvl2/awake +{11062cdc-badd-4bd5-96b2-f47463ddd9b2} event:/music/lvl2/beginning +{e2d41f6a-ec7d-4b25-a74f-3746b7207f4f} event:/music/lvl2/chase +{c6d8b40c-ab8b-415e-8279-fd5ddfde7f68} event:/music/lvl2/dreamblock_sting_pt1 +{f0a05548-59a3-4b71-baf0-2d591c25677e} event:/music/lvl2/dreamblock_sting_pt2 +{8d56aaf8-b0f5-4f8c-b27a-9c07e13e5fa2} event:/music/lvl2/evil_madeline +{78ac6937-dfd7-4d1c-a3b0-a71818c2cc49} event:/music/lvl2/mirror +{a013a019-5c83-47fa-8c76-bf26a0ee3ab7} event:/music/lvl2/phone_end +{92c762da-6b09-4ae6-bea6-6264d405d309} event:/music/lvl2/phone_loop +{73c95a24-6c35-4dc5-893d-7e79ecc61481} event:/music/lvl3/clean +{31a7988d-80bf-40ee-84f0-644a17abe6cc} event:/music/lvl3/explore +{cc153928-7bcc-4c83-b9e2-586dca338588} event:/music/lvl3/intro +{16a8585c-e163-4594-bbeb-5bb2977f947f} event:/music/lvl3/oshiro_chase +{416d5500-d42a-4981-baa8-83381cbbce3f} event:/music/lvl3/oshiro_theme +{e15a069f-4f5d-430e-9741-b8fffb62ab3d} event:/music/lvl4/heavy_winds +{bd2bf7cc-8196-4f69-9548-418ea37eb9fd} event:/music/lvl4/main +{afcdbcca-8216-4659-ad5d-a2f4d836e1ee} event:/music/lvl4/minigame +{ddeb5097-ebd0-4e92-964c-b9458ae3ff18} event:/music/lvl5/middle_temple +{7e1c842a-b3d8-440a-9c39-196826b8bee2} event:/music/lvl5/mirror +{1b5af286-b8ce-444a-8f9b-03bc5fb66166} event:/music/lvl5/mirror_cutscene +{b19f2493-502a-408c-847b-4e0bb666e202} event:/music/lvl5/normal +{2d16d1b8-f6c7-472d-879f-c583537302d7} event:/music/lvl5/seeker_drums_layer +{466271ba-3e10-4943-ba99-0bd63ade7636} event:/music/lvl6/badeline_acoustic +{42d3ce68-8863-487c-bc3c-a1f74bd85911} event:/music/lvl6/badeline_fight +{e1a395a5-aa17-4418-ac3d-ffa51c618014} event:/music/lvl6/badeline_glitch +{f1e2f6f3-29d9-4914-8296-4261a223d3ac} event:/music/lvl6/madeline_and_theo +{29904477-ac10-4b8d-8858-0ac06df88d02} event:/music/lvl6/main +{1841d8c6-d1af-4319-9926-9ed41e4a8d85} event:/music/lvl6/secret_room +{78fca5fd-8d0a-42d2-b5d8-3501cef99c85} event:/music/lvl6/starjump +{f351bdf5-087b-451d-92c6-1ac651117107} event:/music/lvl6/the_fall +{435249ff-4293-4369-8652-5d2f314551c5} event:/music/lvl7/final_ascent +{443b630c-e94c-4aba-ad10-4cc7468d49cb} event:/music/lvl7/main +{f335427a-7961-4e4e-b94c-58c2a4490182} event:/music/lvl8/main +{38e2f39c-382d-4136-86fd-e24520f3b71e} event:/music/lvl9/main +{4d5dc6c1-fd41-4e8d-bf91-84a15631055d} event:/music/menu/complete_area +{ac1cb91e-c5ed-42f9-82f9-847cc2c0df9e} event:/music/menu/complete_bside +{705df905-2639-470f-963f-408f30e23a2b} event:/music/menu/complete_summit +{f47636da-f583-418c-beb4-f4e0d3e80ec3} event:/music/menu/credits +{a8ac3582-9e94-40af-b76a-2ff51f076e6f} event:/music/menu/level_select +{889ddcf6-8d06-4106-9e73-f5d63f964717} event:/music/remix/01_forsaken_city +{1d8f0733-f7c7-4af1-947d-da16faaa673a} event:/music/remix/02_old_site +{ec2e5fa5-9f50-4fd7-bdc2-45474c4967a3} event:/music/remix/03_resort +{a0b49e74-eb0b-4519-bb38-987095b66578} event:/music/remix/04_cliffside +{8efb347e-e501-4bab-9349-7b6dbba66551} event:/music/remix/05_mirror_temple +{51acfb4c-c5b1-4bd7-af44-a0c2472327db} event:/music/remix/06_reflection +{16aaecdf-ca62-4273-9bff-7900f3d92a4b} event:/music/remix/07_summit +{10deb10e-5387-4e38-8ce5-aa83feaa5cf7} event:/music/remix/09_core +{a38a422d-553d-4a98-bd77-4fb94c9a40a8} event:/new_content/char/badeline/birdcrash_scene_float +{cad1c006-44ce-4a92-8c90-5996befaa8c4} event:/new_content/char/badeline/booster_finalfinal_part1 +{db21d96e-f70a-4799-987e-574c9f68cc2d} event:/new_content/char/badeline/booster_finalfinal_part2 +{5a554fe3-4398-4960-ab5e-70dc62685ded} event:/new_content/char/badeline/booster_first_appear +{4316d3ba-709e-4fc5-8e8c-0279daf4659e} event:/new_content/char/badeline/booster_relocate_slow +{fd06af1f-776a-4879-9100-91b14c48bb66} event:/new_content/char/badeline/maddy_join_quick +{bd5452ab-7b14-4571-bca2-21656793c2d6} event:/new_content/char/granny/cane_tap_ending +{1cc5e3b3-4078-4728-9405-a5ab3ac94759} event:/new_content/char/granny/dissipate +{eeab0167-3ebd-45b2-b701-7dc9f98959e0} event:/new_content/char/madeline/Vanilla Backup/death_golden +{b17c7077-e1c9-4ba8-8f49-4eec29d9f1ce} event:/new_content/char/madeline/bounce_boost +{5534c1ec-5c0a-4589-a5c7-cbb3fcbfa160} event:/new_content/char/madeline/glider_drop +{e2c752dc-10dc-41e7-8709-95cbbcfe9104} event:/new_content/char/madeline/hiccup_ducking +{57531525-33bf-45a5-bf27-306814b95457} event:/new_content/char/madeline/hiccup_standing +{89dec006-6bd9-4491-b238-bfc13a072506} event:/new_content/char/madeline/screenentry_golden +{a260d3a1-20b3-44f1-9543-e8ec9bcccfe9} event:/new_content/char/madeline/screenentry_gran +{ff56e917-feba-4631-84eb-2718c65c1e58} event:/new_content/char/madeline/screenentry_gran_landing +{82b35daf-877f-401a-9b49-6a4bb9ff5bc3} event:/new_content/char/madeline/screenentry_lowgrav +{0653a7ee-59e5-4915-8695-dcba555607b5} event:/new_content/char/madeline/screenentry_stubborn +{c2e8cdc9-b6a3-4f66-8500-af91182f176e} event:/new_content/char/madeline/death_golden +{e36926d3-b7b4-409f-904c-5d5d1131b55a} event:/new_content/char/tutorial_ghost/appear +{a41658fa-080f-4fde-9a63-d571b36237ed} event:/new_content/char/tutorial_ghost/dash_red_left +{2e4105eb-0489-4a3b-8466-b356d06a7f8c} event:/new_content/char/tutorial_ghost/dash_red_right +{14db73f4-6a9b-494a-b1b6-1e82763b508e} event:/new_content/char/tutorial_ghost/disappear +{052e57b9-276e-4eee-ab21-09a978ef3621} event:/new_content/char/tutorial_ghost/dreamblock_sequence +{97781d70-8798-43ce-b1b8-aec9039c3262} event:/new_content/char/tutorial_ghost/footstep +{6279ab0b-6594-4756-8495-4eefa78093a1} event:/new_content/char/tutorial_ghost/grab +{8490f47c-fa00-40cb-a2ff-2d94c2ac9292} event:/new_content/char/tutorial_ghost/handhold +{94bde26a-6355-4896-b674-d44adf70705d} event:/new_content/char/tutorial_ghost/jump +{0f15b7da-7808-4c29-8bb8-382c1ec6e407} event:/new_content/char/tutorial_ghost/jump_super +{5e86985d-5063-4a53-ad24-46896ff682a2} event:/new_content/char/tutorial_ghost/land +{03c328c7-8d1c-48c2-b2e6-d1d8225e4d89} event:/new_content/env/local/cafe_computer +{e88c096c-382f-4add-aa77-36653d4a0b14} event:/new_content/env/local/cafe_sign +{4525fa59-c11e-4863-843f-3783571b11cf} event:/new_content/env/local/kevinpc +{9cb8fd7f-f28f-4f21-8153-2d3c5830e0a1} event:/new_content/env/local/tutorial_static_left +{e0a3bd21-b245-4733-9fb5-69f2261b4ce5} event:/new_content/env/local/tutorial_static_right +{58a69c31-956e-42a2-a9a2-359e67921ffa} event:/new_content/env/10_electricity +{7c6562f4-68b1-484a-8e50-a935f1ab56f7} event:/new_content/env/10_endscene +{3f8d0871-07ac-49dd-b7c2-893043eaaf83} event:/new_content/env/10_grannyclouds +{fceb8b1e-7d92-400b-903f-406dade6162c} event:/new_content/env/10_rain +{f89e2eed-f3a6-46bf-9de1-9a3827ff79db} event:/new_content/env/10_rushingvoid +{589ad0f1-53f4-4567-b6a1-34c670afb80d} event:/new_content/env/10_space_underwater +{a351d4ea-7c48-43ce-a371-db4ee6f5ddc5} event:/new_content/env/10_voidspiral +{447f67ef-0777-4a7a-94e2-c00300316d10} event:/new_content/game/10_farewell/bird_camera_pan_up +{d3a1e63e-2265-4652-988f-3d07724ab466} event:/new_content/game/10_farewell/bird_crashscene_leave +{2bb2c164-719e-4ead-8dbd-f6943e93ec31} event:/new_content/game/10_farewell/bird_crashscene_recover +{a1745c53-2c9e-4545-bc28-275b56d913d8} event:/new_content/game/10_farewell/bird_crashscene_relocate +{61f52438-bee9-4393-ac9b-10a03ec220b9} event:/new_content/game/10_farewell/bird_crashscene_start +{712650d6-3edc-40f8-96e7-c4d70aabc7fb} event:/new_content/game/10_farewell/bird_crashscene_twitch_1 +{59ecf2bc-ad5d-4055-ad4d-c477789353f9} event:/new_content/game/10_farewell/bird_crashscene_twitch_2 +{84666200-9dc1-435c-86dc-c576f7fea100} event:/new_content/game/10_farewell/bird_crashscene_twitch_3 +{ba4f0d7f-6781-437f-8f40-babd44ffd7e5} event:/new_content/game/10_farewell/bird_flappyscene +{613e3e96-0787-4e4c-b1b9-d5b85edb09f2} event:/new_content/game/10_farewell/bird_flappyscene_entry +{9aa30c86-bd74-4fe0-a746-6206a161dbda} event:/new_content/game/10_farewell/bird_fly_uptonext +{00c336f3-361c-455c-a735-88d322bb0a87} event:/new_content/game/10_farewell/bird_flyuproll +{9ba95702-66ae-441f-944e-c123175195ff} event:/new_content/game/10_farewell/bird_relocate +{ff882573-75c7-4aeb-86e2-73a946646308} event:/new_content/game/10_farewell/bird_startle +{f73f6ebb-c858-4a36-b59a-74c66ee1f901} event:/new_content/game/10_farewell/bird_throw +{ee413800-8752-4f0b-9a5d-3084e2473aa2} event:/new_content/game/10_farewell/bird_wingflap +{67ac36e7-71f0-4956-97b1-ac7ce0e1bd0a} event:/new_content/game/10_farewell/cafe_computer_off +{4be46c93-4868-4b41-ab86-cd5b4cb24ab4} event:/new_content/game/10_farewell/cafe_computer_on +{2760b17a-48e8-4008-8fdc-c5180c7e7516} event:/new_content/game/10_farewell/cafe_computer_on_old +{cb643135-d2a6-4999-b669-d2385a7cf546} event:/new_content/game/10_farewell/cafe_computer_startupsfx +{e50e05b1-7d84-42b4-9978-eaed3a3d9945} event:/new_content/game/10_farewell/endscene_attachment_click +{0d8902b7-105c-4f09-973b-28e701845084} event:/new_content/game/10_farewell/endscene_attachment_notify +{9492988e-612e-418d-a1a5-b416db84f087} event:/new_content/game/10_farewell/endscene_dial_theo +{87c24e15-dce0-40ae-a8b5-878e5a071dc6} event:/new_content/game/10_farewell/endscene_final_input +{0a35baac-0a14-4121-b6fe-8336c5ae6507} event:/new_content/game/10_farewell/endscene_photo_zoom +{8e4da22f-7a93-46b7-8e07-7255d3431e1b} event:/new_content/game/10_farewell/fakeheart_bounce +{a72e0e5c-5db0-4542-8a29-25d4d8e19a14} event:/new_content/game/10_farewell/fakeheart_get +{51f68531-d228-4786-b703-6a5f44e41cee} event:/new_content/game/10_farewell/fakeheart_pulse +{08327e1d-c840-4d1e-9733-0cf4a843f867} event:/new_content/game/10_farewell/fusebox_hit_1 +{6b7fe1af-1dfd-40f1-89bc-b3e43f6eddcf} event:/new_content/game/10_farewell/fusebox_hit_2 +{0a4ae8c6-5797-4d09-8636-106589eeeeae} event:/new_content/game/10_farewell/glider_emancipate +{59507330-6098-4229-9ad1-7c927ec01298} event:/new_content/game/10_farewell/glider_engage +{cd01863f-3e92-4952-9a97-9a529df26b53} event:/new_content/game/10_farewell/glider_land +{faf2332c-87fb-46d7-b108-99de35f7d683} event:/new_content/game/10_farewell/glider_movement +{0ef75714-36af-4845-bd24-72028d9c1efb} event:/new_content/game/10_farewell/glider_platform_dissipate +{d3bd0dd4-28a4-4217-ac40-a3b8c2531979} event:/new_content/game/10_farewell/glider_wallbounce_left +{de545f84-effc-4211-b6e5-ecffe93189db} event:/new_content/game/10_farewell/glider_wallbounce_right +{825153d7-05f3-44b4-834c-fa2248bab331} event:/new_content/game/10_farewell/glitch_long +{b26ebe07-7db5-40d0-9282-2d1449db8c5a} event:/new_content/game/10_farewell/glitch_medium +{42d600c5-32c3-4433-8a1e-be394b30bcde} event:/new_content/game/10_farewell/glitch_short +{6fc73c45-4446-4114-b002-6dfeb92769d7} event:/new_content/game/10_farewell/heart_door +{67466be6-2fc8-4d0e-992e-0c882a8adf9a} event:/new_content/game/10_farewell/key_unlock_1 +{ce614f36-80cd-453a-8af8-3ba2c20c5a5a} event:/new_content/game/10_farewell/key_unlock_2 +{e4d013b8-4cd3-4cab-aec7-829d00c6307a} event:/new_content/game/10_farewell/key_unlock_3 +{324223a1-46c3-437e-9069-ed5059b47b95} event:/new_content/game/10_farewell/key_unlock_4 +{65131955-b8d6-4254-9fe9-ce9965b0f8c9} event:/new_content/game/10_farewell/key_unlock_5 +{d27aa340-38c2-46fe-9e45-83c4f6be9070} event:/new_content/game/10_farewell/lightning_strike +{9f711ad4-4561-47f1-ab99-938d1169b1ca} event:/new_content/game/10_farewell/locked_door_appear_1 +{7a366698-8474-4be8-83ab-be004cb6a2a3} event:/new_content/game/10_farewell/locked_door_appear_2 +{c2f181a5-e820-4e13-aa2d-ff902fab795a} event:/new_content/game/10_farewell/locked_door_appear_3 +{a4f824f9-22e8-4589-a9b9-0db1ad747fa3} event:/new_content/game/10_farewell/locked_door_appear_4 +{1c75f1cf-5825-42f1-b57f-5b5a5cefdedd} event:/new_content/game/10_farewell/locked_door_appear_5 +{17a8ef3e-78e8-430c-9cf4-995a121ef1fe} event:/new_content/game/10_farewell/pico8_flag +{711fa1d2-88c6-4f74-a650-fe7011e736fa} event:/new_content/game/10_farewell/pinkdiamond_return +{8aeeda91-d53c-409e-9f6b-37f8724ca79a} event:/new_content/game/10_farewell/pinkdiamond_touch +{cabdd646-45f5-4dbd-9cd2-898a99a794c4} event:/new_content/game/10_farewell/ppt_cube_transition +{b8e2f523-8fd3-444c-99aa-b45e5910fcda} event:/new_content/game/10_farewell/ppt_dissolve_transition +{43420008-de4c-4d1c-8f4b-15c4871e4354} event:/new_content/game/10_farewell/ppt_doubleclick +{35472fac-2f05-4eb5-8281-d929b5ce41bb} event:/new_content/game/10_farewell/ppt_happy_wavedashing +{c0b225c7-09c9-4ab7-a093-706c35d87598} event:/new_content/game/10_farewell/ppt_impossible +{55899a39-fc05-43d3-8878-834a4a25b6d4} event:/new_content/game/10_farewell/ppt_its_easy +{5c9780f7-de2d-4811-813e-f89201d92e35} event:/new_content/game/10_farewell/ppt_mouseclick +{445a96f2-982e-49d4-895a-19889e614955} event:/new_content/game/10_farewell/ppt_spinning_transition +{33a10afa-41bd-4534-8222-17e7947e9517} event:/new_content/game/10_farewell/ppt_wavedash_whoosh +{82f68918-aab7-4a13-a58a-05a318a8c32c} event:/new_content/game/10_farewell/puffer_boop +{495bbb28-2513-4698-8d54-fa114ff6722d} event:/new_content/game/10_farewell/puffer_expand +{355e716c-e169-4114-a223-a4e3156d23cf} event:/new_content/game/10_farewell/puffer_reform +{6fc9a437-3cb1-4455-b2e1-421eb885177c} event:/new_content/game/10_farewell/puffer_return +{2f7381e9-7264-4df3-8cff-84cc46b2d3d9} event:/new_content/game/10_farewell/puffer_shrink +{7867f29b-8e33-4e2e-8d56-00cf9211cadd} event:/new_content/game/10_farewell/puffer_splode +{026c5b8c-d51e-42df-a9bd-ae7b1e84f7b2} event:/new_content/game/10_farewell/quake_onset +{28caabf1-2b9d-480e-bcc2-5947a2398087} event:/new_content/game/10_farewell/quake_rockbreak +{a948d002-6935-4b70-92bf-39b7e43c56e0} event:/new_content/game/10_farewell/strawberry_gold_detach +{b0f9d304-0ba2-4858-b514-7620a56dda0b} event:/new_content/game/10_farewell/zip_mover +{3f2d120c-8b3f-4adf-b110-42388e8c5674} event:/new_content/music/lvl10/cinematic/bird_crash_first +{92aa23ba-8ab2-4448-aae6-67acbe73582b} event:/new_content/music/lvl10/cinematic/bird_crash_second +{3482e653-439f-46cc-8cbd-02abf456b0e4} event:/new_content/music/lvl10/cinematic/end +{0aab6c8a-4133-4265-8bad-098df594150f} event:/new_content/music/lvl10/cinematic/end_intro +{c188c18a-cede-4cca-b9c1-455f89a13ca8} event:/new_content/music/lvl10/cassette_rooms +{427b4b7d-22a7-4295-9f47-931b594b4daa} event:/new_content/music/lvl10/final_run +{c76a681f-24c9-48b2-b9c7-ca8bca24902e} event:/new_content/music/lvl10/golden_room +{4d1d9d21-9e89-405f-844f-070ae9d6611e} event:/new_content/music/lvl10/granny_farewell +{e296f495-1041-400e-9c31-c59ef318e7b7} event:/new_content/music/lvl10/intermission_heartgroove +{c6c1c7be-a5a5-4654-8e6f-15aed6a96847} event:/new_content/music/lvl10/intermission_powerpoint +{f7e0cc43-4a57-49ee-a114-7d9d1e40b198} event:/new_content/music/lvl10/part01 +{af7a6f63-887d-4508-b54e-ff4e4f296ae1} event:/new_content/music/lvl10/part02 +{57cceb1a-e169-43f4-802c-d41992ec6926} event:/new_content/music/lvl10/part03 +{8023c811-1142-42b8-8789-cbf1221c5c81} event:/new_content/music/lvl10/reconciliation +{2133d394-da16-49a5-82d2-59dfabecf762} event:/new_content/ui/postcard_variants_in +{f065adf0-963d-4d3e-a4fe-1538154936f7} event:/new_content/ui/postcard_variants_out +{4c875fde-bab4-4ddf-a32b-1a098a44e2a1} event:/new_content/ui/rename_entry_accept_locked +{b3639ef6-f73d-4ae0-a8c7-8edb94279868} event:/new_content/ui/skip_all +{7d16c138-146a-4337-97b7-777ec6146448} event:/new_content/timeline_bubble_to_remembered +{b5fd173e-9a58-4412-9be1-094108b82157} event:/state/cafe_computer_active +{d85a0635-cbcf-4ba3-8466-b6e24aa45894} event:/state/underwater +{c4d2289a-859e-42e9-ba38-eee1791a3a62} event:/ui/game/chatoptions_appear +{dd4cb027-0132-4039-9303-c9ad8589683e} event:/ui/game/chatoptions_roll_down +{1b030b2e-c125-40d5-b582-5819c6c29584} event:/ui/game/chatoptions_roll_up +{bc008f9e-76c5-42d5-b2f0-574cb7dacf6f} event:/ui/game/chatoptions_select +{632ed69e-ef16-4824-8aaf-8e01aad17cce} event:/ui/game/general_text_loop +{903b26bf-ad0c-40a2-b53f-f2a08b50ae4f} event:/ui/game/hotspot_main_in +{4684b7e3-ac7e-40c0-a242-822dbd84326e} event:/ui/game/hotspot_main_out +{07defb47-8579-4c47-9528-289e7a758553} event:/ui/game/hotspot_note_in +{3f531057-7752-4e5a-a782-82ad7428ac70} event:/ui/game/hotspot_note_out +{44a55198-a0bd-4e72-baba-5654142dccef} event:/ui/game/increment_dashcount +{ea92919d-46d8-411e-82f6-b36c79d96c72} event:/ui/game/increment_strawberry +{b086c73f-8ceb-4bea-b569-bdd561e32ccf} event:/ui/game/lookout_off +{defdc0d5-8ae6-47e4-8970-29f12a66fe66} event:/ui/game/lookout_on +{6e6a7734-f98c-45cf-930f-61c51f193827} event:/ui/game/memorial_dream_loop +{037333ef-5916-4131-a76c-77b8d31c21cd} event:/ui/game/memorial_dream_text_in +{c3ddcdec-04ff-43b0-8103-ba0f0841c550} event:/ui/game/memorial_dream_text_loop +{78a27ccb-8b29-41e9-aa60-20e4d193f41d} event:/ui/game/memorial_dream_text_out +{27c68b11-4893-406e-8a68-2c7cf6a7ae0d} event:/ui/game/memorial_text_in +{12f81211-c72f-44f7-951c-4884bea99668} event:/ui/game/memorial_text_loop +{812275c5-1e5a-4d69-98e1-f7892c4bb440} event:/ui/game/memorial_text_out +{c6311b80-2ae7-4155-80f1-d3e2713efaa3} event:/ui/game/pause +{7858a8e8-adf9-40a6-8e14-e337a6979e53} event:/ui/game/textadvance_madeline +{b26824d6-39fe-4d09-9d83-ebdcbb29ba6b} event:/ui/game/textadvance_other +{38079a52-37cc-421f-a9d1-2b0f0222e779} event:/ui/game/textbox_madeline_in +{8a79d85e-2889-4b7f-8d52-b46381392b8b} event:/ui/game/textbox_madeline_out +{651eff96-de48-4c77-b069-bd718be76cff} event:/ui/game/textbox_other_in +{3b6c0f9a-9399-4af4-8443-d1bf6544869a} event:/ui/game/textbox_other_out +{ca812d95-eb8b-4ebd-a04b-e424704c17f2} event:/ui/game/tutorial_note_flip_back +{0c739c5d-67d7-4d95-861d-cc0d64892a1d} event:/ui/game/tutorial_note_flip_front +{6096b41c-7b56-4839-ad53-deb9e5693246} event:/ui/game/unpause +{59883fc3-7f79-422e-927d-1c1374123356} event:/ui/main/assist_button_info +{dd53a3ab-bc60-4da3-996d-5fc6b83483dc} event:/ui/main/assist_button_no +{7c65f68d-623c-42f1-94bd-4e2d59199d32} event:/ui/main/assist_button_yes +{3fd21d57-8fb5-4107-8d03-2048428bc2fc} event:/ui/main/assist_info_whistle +{1c2d9b78-9172-44db-a205-15b3cd91191e} event:/ui/main/bside_intro_text +{fe9c58fa-d60a-4644-b34d-c0c4ebac2486} event:/ui/main/button_back +{a3b25ad0-f493-4fd1-a31f-40b07f739225} event:/ui/main/button_climb +{b6aad0d5-cc07-46f4-ab3a-3b3692a57678} event:/ui/main/button_invalid +{8a93c5a5-538c-49f6-9d07-988839862ba1} event:/ui/main/button_lowkey +{cf18e899-f774-47e2-b72c-5252231fd47c} event:/ui/main/button_select +{aceb1345-a4e8-4bc5-a872-bb421573f59c} event:/ui/main/button_toggle_off +{dcef4547-0df6-4b2c-9a70-3aa537982264} event:/ui/main/button_toggle_on +{c0e02b41-0977-4813-a592-a2a98242b153} event:/ui/main/message_confirm +{c46d3981-3581-4b29-b3f8-d64ab072709e} event:/ui/main/postcard_ch1_in +{ffcabe42-ca8e-4460-95cb-14e528caebd7} event:/ui/main/postcard_ch1_out +{1210af0a-7e91-40af-a33c-d3fd2601ae54} event:/ui/main/postcard_ch2_in +{ddf70f5d-bd79-46da-ab2e-35d8795aab78} event:/ui/main/postcard_ch2_out +{55dfbf00-cc82-4781-b0e3-4f83a8a3fdb1} event:/ui/main/postcard_ch3_in +{468d3c98-0643-43eb-aedc-4cd3775a745c} event:/ui/main/postcard_ch3_out +{4cc4fcce-dbbc-4ffa-946d-8823ae5b1c56} event:/ui/main/postcard_ch4_in +{9920201a-f44f-464c-ad36-26934ed4b557} event:/ui/main/postcard_ch4_out +{90a158fb-009e-4cc1-9e4b-ba1ca47c05d9} event:/ui/main/postcard_ch5_in +{ab60fd25-5612-425c-bcdd-3e57a6c612bf} event:/ui/main/postcard_ch5_out +{590d1629-f340-4c4e-aee7-310f78d2c441} event:/ui/main/postcard_ch6_in +{ae32b875-534a-43de-a8bf-59d802dfb98b} event:/ui/main/postcard_ch6_out +{753b8bdc-2b0a-443a-ae37-94f321d71932} event:/ui/main/postcard_csides_in +{c74741a2-3b04-4ae8-9953-bc2bb485d643} event:/ui/main/postcard_csides_out +{cffad095-d6a7-4c91-b263-74bec658f1d8} event:/ui/main/rename_entry_accept +{9e499f93-8f88-4450-ae82-54887bb5e3ba} event:/ui/main/rename_entry_backspace +{a71ecb95-b025-4b35-8a2c-fe0cd6f68e95} event:/ui/main/rename_entry_char +{d389ba5d-76cf-4634-a763-d60d23c07cb1} event:/ui/main/rename_entry_rollover +{44e7e56e-3d7c-48e4-a1ae-a01de2685a81} event:/ui/main/rename_entry_space +{fb6ae8ab-4c41-4d90-8d2b-61a45e0a33e8} event:/ui/main/rollover_down +{987ab0da-0575-4f22-a0bc-7dd7a3a60769} event:/ui/main/rollover_up +{ef525bd4-4d18-479c-b651-56cd3699e478} event:/ui/main/savefile_begin +{c649a587-9eb6-4ba6-bafc-de133aeea2c5} event:/ui/main/savefile_delete +{ac7e055f-0a4d-4862-9032-88a8cd9e8322} event:/ui/main/savefile_rename_start +{83577bfc-85e1-444f-8c60-97ad3f3092a5} event:/ui/main/savefile_rollover_down +{b99d10cb-deb7-4b29-978b-912f929a5872} event:/ui/main/savefile_rollover_first +{15e11635-109d-417e-8424-2821f91f8020} event:/ui/main/savefile_rollover_up +{6d72de1a-04fe-4be5-826b-5576002c277f} event:/ui/main/title_firstinput +{4c808f23-d04c-49eb-9195-a9e324b57add} event:/ui/main/whoosh_large_in +{918e9353-b7fb-4d65-9bab-7e21facb3231} event:/ui/main/whoosh_large_out +{0e6af11e-69f3-4a92-b762-7421c912c3d6} event:/ui/main/whoosh_list_in +{efa0d333-7ee5-46ce-b457-b99997659215} event:/ui/main/whoosh_list_out +{03c233f3-c314-4560-8d48-a237b0b41c4a} event:/ui/main/whoosh_savefile_in +{38993101-6a7d-4344-bb63-69face96fd3a} event:/ui/main/whoosh_savefile_out +{02c8ac12-1389-44b9-8db8-1df0bd5b09b6} event:/ui/postgame/crystal_heart +{131dc336-4229-44d3-873f-e435fb501faf} event:/ui/postgame/death_appear +{26999d37-f12e-4b55-b82e-c26c02fcb288} event:/ui/postgame/death_count +{1ebd2b11-e6c4-4cc8-bb94-523470bda7b6} event:/ui/postgame/death_final +{44a2d3fc-e727-4ed4-8907-535d11f81e3e} event:/ui/postgame/goldberry_count +{426469e9-5e87-46e9-8b9d-bc2ae055c7b7} event:/ui/postgame/strawberry_count +{628514bb-19b3-4498-b365-4434988a1478} event:/ui/postgame/strawberry_total +{de75e71a-61d2-4a5c-94fe-96d0127fab02} event:/ui/postgame/strawberry_total_all +{ff2a6fb9-87b0-4de2-bd85-2d477f338d7c} event:/ui/postgame/unlock_bside +{704b695d-3513-449d-88eb-e29fc7622990} event:/ui/postgame/unlock_newchapter +{7fc9d8e3-08e2-43b8-9a9c-74f51be9a206} event:/ui/postgame/unlock_newchapter_icon +{6388ebe4-7ccd-46ad-b60d-7a85d7e5aceb} event:/ui/world_map/chapter/back +{4a191f4f-da31-43ec-bf30-f8ff8de7feed} event:/ui/world_map/chapter/checkpoint_back +{8c12045b-63ea-4faf-845c-49f6671595c2} event:/ui/world_map/chapter/checkpoint_photo_add +{40c88bb1-a035-4e54-90e1-fc879d1bf42b} event:/ui/world_map/chapter/checkpoint_photo_remove +{b5eab944-3bb1-4537-81f8-36cc0768539c} event:/ui/world_map/chapter/checkpoint_start +{08853c84-022c-4432-b99f-8894748ea056} event:/ui/world_map/chapter/level_select +{2bc690b2-830d-4fee-9960-5e9c158a07c1} event:/ui/world_map/chapter/pane_contract +{811a5ad1-89a4-4e2f-b6ee-20665c9ebde9} event:/ui/world_map/chapter/pane_expand +{d947ef25-1335-4e74-9675-7f91beb1df80} event:/ui/world_map/chapter/tab_roll_left +{6f553704-eb86-4407-91b5-c6e9714f398c} event:/ui/world_map/chapter/tab_roll_right +{f6ac20d0-ea9e-4cee-a4aa-a8b30bf3d745} event:/ui/world_map/icon/assist_skip +{7009f879-18fe-4b01-b78d-f4ef5bc66cb2} event:/ui/world_map/icon/flip_left +{c1f648bf-d9b1-455c-a3dd-b92bcce571c6} event:/ui/world_map/icon/flip_right +{687c2393-d73e-4247-a97b-4f2c2ccce388} event:/ui/world_map/icon/roll_left +{14563914-60ff-43cc-bc2e-d5766cc30964} event:/ui/world_map/icon/roll_right +{939f9872-0a8e-4cac-bf5e-12df3729da5f} event:/ui/world_map/icon/select +{0623a8c0-4454-4c71-9804-ecb030c4eb50} event:/ui/world_map/journal/back +{bbc37507-2859-4dd7-bbe5-7e6209214e03} event:/ui/world_map/journal/heart_grab +{85f626c3-7607-416c-b0ae-ddd0ed804755} event:/ui/world_map/journal/heart_release +{4ed2243f-db33-4095-97fd-800825c5a26d} event:/ui/world_map/journal/heart_roll +{d76b642b-3a69-4960-bfe3-2146b1654e5c} event:/ui/world_map/journal/heart_shift_down +{789aa61b-6d4a-4f93-92f0-bcc17c4c46c6} event:/ui/world_map/journal/heart_shift_up +{481d0322-28da-4d44-977a-cc140ff7c609} event:/ui/world_map/journal/page_cover_back +{2e990fd4-2c29-4527-8968-e47ff4006e81} event:/ui/world_map/journal/page_cover_forward +{b8f82543-3aed-4e88-8256-7b7b1bfafa2f} event:/ui/world_map/journal/page_main_back +{8da57015-c10e-4ce5-8e6b-82af4b7e73b9} event:/ui/world_map/journal/page_main_forward +{8a991cbf-dda9-4121-b960-d8bd790f5daa} event:/ui/world_map/journal/select +{309df40a-ed6b-46cc-b6a0-b1ddf5814ac8} event:/ui/world_map/whoosh/1000ms_back +{06eddf29-f6ea-43c4-a5a5-5e06c1c5bb61} event:/ui/world_map/whoosh/1000ms_forward +{25e6e3fa-ff02-440e-ac63-c83c3ad1efaf} event:/ui/world_map/whoosh/400ms_back +{c3640c55-8e89-4437-84ce-e0a3c1770575} event:/ui/world_map/whoosh/400ms_forward +{362e549d-25f0-4a5b-9c83-796e9ed389db} event:/ui/world_map/whoosh/600ms_back +{a5fff838-6687-4506-b03f-e5b16bb6ae84} event:/ui/world_map/whoosh/600ms_forward +{6f54f0d1-61d4-442e-8bf7-4dfbf6870c07} event:/ui/world_map/whoosh/700ms_back +{ca8ffe65-72eb-4fb3-9c3d-27fef47bc3d1} event:/ui/world_map/whoosh/700ms_forward +{2dca99b6-dcf5-40e6-8cd1-c72f97d364cd} event:/ui/world_map/whoosh/900ms_back +{21a98c43-8e79-4b8a-8963-a269735f3989} event:/ui/world_map/whoosh/900ms_forward +{ea595d6d-cb07-4897-81cb-4830bf5823cb} event:/!!!_README_FIRST +{c7aad72f-9796-42d3-980b-d093fd765716} bus:/ +{aac396d1-a63f-418a-810a-5d5a59fb2c43} bus:/gameplay_sfx +{2677ced7-94e4-44e2-9f5a-74aaeda5ab63} bus:/gameplay_sfx/ambience +{69a539a8-37d8-4e24-979b-291077c574a9} bus:/gameplay_sfx/ambience/00_prologue +{ca9f4472-47c9-4528-b4a7-0367eef8b734} bus:/gameplay_sfx/ambience/01_forsaken_city +{9e955e67-8d57-413c-a8ff-a52760f97355} bus:/gameplay_sfx/ambience/02_old_site +{24502313-f693-41bd-8fbb-b570e73b730d} bus:/gameplay_sfx/ambience/03_resort +{82beff30-ccff-40bf-9e07-5a1cd2978856} bus:/gameplay_sfx/ambience/03_resort/main +{8801307f-ec10-47f5-b1e6-bd4209b925a5} bus:/gameplay_sfx/ambience/03_resort/pico8_room +{537a0457-23d1-4dfa-84ee-a9a0a89091f0} bus:/gameplay_sfx/ambience/04_cliffside +{52d79f87-b8ae-49f8-9b8f-0623798fe5c0} bus:/gameplay_sfx/ambience/05_mirror_temple +{d0d5e0b6-9ffd-4f74-b865-f1f2be77d3b3} bus:/gameplay_sfx/ambience/06_reflection +{2d22a1f7-3d3f-443a-9f5c-b3af2c719942} bus:/gameplay_sfx/ambience/07_summit +{cefe7684-2923-468f-b00b-c5983937e33c} bus:/gameplay_sfx/ambience/09_core +{a98d0a0f-3a46-4300-b387-c39f0db5d47e} bus:/gameplay_sfx/ambience/10_farewell +{ddb5ed22-a8d2-4142-ba12-5bd032527511} bus:/gameplay_sfx/ambience/10_farewell/cafe_sign +{1394d383-dd5e-4772-abcd-5780e97a8ee3} bus:/gameplay_sfx/ambience/10_farewell/electricity +{fab12ece-124b-4bca-98d5-6ad4320118b0} bus:/gameplay_sfx/ambience/10_farewell/kevinpc +{992ed3aa-96d9-4f83-ac2f-3af5ac4a32db} bus:/gameplay_sfx/ambience/10_farewell/10_space_remembered +{71710caf-9227-413f-ac6a-261cf6e0cb5b} bus:/gameplay_sfx/ambience/shared_local +{8087939b-55de-4834-a7ec-2b62741a1099} bus:/gameplay_sfx/ambience/shared_local/campfire_loop +{520daa59-6d74-4eef-8d67-5c50d55bebd8} bus:/gameplay_sfx/ambience/worldmap +{db469001-f950-40b8-b411-2a1d327b3ce6} bus:/gameplay_sfx/berries +{bc43e82f-8373-4a3c-b676-5ef48f674f2e} bus:/gameplay_sfx/berries/1000s +{15f0abc3-40c1-4812-b526-303e80fe2175} bus:/gameplay_sfx/berries/2000s +{affd9e52-b032-49cb-acd6-4221f642f2e6} bus:/gameplay_sfx/berries/3000s +{ebd67fc6-0745-4b6e-afa8-2fa389df52e1} bus:/gameplay_sfx/berries/4000s +{2a8fc7b0-907d-46dc-919a-225a1258ebb8} bus:/gameplay_sfx/berries/5000s +{060010db-a9d6-41e0-b1fc-7af651b896b5} bus:/gameplay_sfx/berries/6000s +{d3031014-2f55-4036-904a-070ba37ba6df} bus:/gameplay_sfx/char +{9b8177d0-ae29-4cb1-93e6-c584b54b3804} bus:/gameplay_sfx/char/badeline +{91c7b130-9c0a-4cb2-bf01-26313faa39f9} bus:/gameplay_sfx/char/dialogue +{357a43e8-4c3d-4321-9116-1941d532be68} bus:/gameplay_sfx/char/dialogue/phone_static +{06222055-39e3-43b4-a9db-520a4ab66fbc} bus:/gameplay_sfx/char/dialogue/speech +{3828f323-8e89-4c34-b0fe-6c403cb6606b} bus:/gameplay_sfx/char/granny +{7bd1184c-7ddc-4175-bc87-a2b111b031a9} bus:/gameplay_sfx/char/madeline +{c4112d32-cfdc-4926-82a6-68afc89d352e} bus:/gameplay_sfx/char/oshiro +{99c3166e-4555-4140-b041-0a237a13fca7} bus:/gameplay_sfx/char/theo +{1ea7af9f-bcac-4a3e-8e2a-66cc1e04e9eb} bus:/gameplay_sfx/char/tutorial_ghost +{3fdf5514-61e2-4c69-9fa7-5cd0a627fc16} bus:/gameplay_sfx/classic +{1156896d-4cbe-4f11-ad91-44626753f14a} bus:/gameplay_sfx/classic/pico8_verb +{0dfbeb74-7020-4dfa-9cc8-fa85dd157aa1} bus:/gameplay_sfx/game +{6e4f0c21-c551-48a4-828e-b7ea3816b42d} bus:/gameplay_sfx/game/chapters +{55e7d588-47a3-441a-add3-f8a793212d75} bus:/gameplay_sfx/game/chapters/00_prologue +{5820993d-7e39-4b2a-a2e7-9cd902543ad1} bus:/gameplay_sfx/game/chapters/01_forsaken_city +{54bd4bc0-f511-416f-8629-a7abba53f460} bus:/gameplay_sfx/game/chapters/01_forsaken_city/birdbros_finish +{2ce9652c-a647-4e5d-b74a-b36ea60715d9} bus:/gameplay_sfx/game/chapters/01_forsaken_city/console +{30890542-6efc-4ea9-927e-3ca0c3b97d95} bus:/gameplay_sfx/game/chapters/02_old_site +{cd8aa47e-bd24-45e3-808c-a0d546f9a915} bus:/gameplay_sfx/game/chapters/03_resort +{bc44100e-d99c-401f-92a3-38ee8dd8e8ae} bus:/gameplay_sfx/game/chapters/03_resort/clutterswitch_presses +{33443f80-8d51-4756-b504-16cac32901ad} bus:/gameplay_sfx/game/chapters/03_resort/key_unlocks +{130cca3c-25f1-4e3f-a26a-d604b2a1bf58} bus:/gameplay_sfx/game/chapters/04_cliffside +{3420193e-c3db-4417-9232-4cf3ebb0d18c} bus:/gameplay_sfx/game/chapters/04_cliffside/gondola_halted +{b62be6ff-22a2-4c54-986c-0734a819f8f1} bus:/gameplay_sfx/game/chapters/04_cliffside/gondola_verb +{7eab4c86-6346-457f-a497-c4464651f92c} bus:/gameplay_sfx/game/chapters/05_mirror_temple +{60223204-af0c-42e2-a281-29ce5cad5edc} bus:/gameplay_sfx/game/chapters/05_mirror_temple/room_lightlevel +{913b4578-2371-417d-a413-90806a14a9c8} bus:/gameplay_sfx/game/chapters/06_reflection +{f2bd3dc2-e8ec-4ac6-b3b4-4810b47bb8d7} bus:/gameplay_sfx/game/chapters/07_summit +{327f796b-864b-45f9-9991-839720ec7108} bus:/gameplay_sfx/game/chapters/09_core +{2219f267-26c7-4a3c-bc90-148c7cb385c9} bus:/gameplay_sfx/game/chapters/10_farewell +{1290bf60-75df-4063-a36d-1f89c688a282} bus:/gameplay_sfx/game/chapters/10_farewell/bird_wingflaps +{05e910f2-4e6d-4f1d-a82d-014519b4667f} bus:/gameplay_sfx/game/chapters/10_farewell/cafe_computer_amb +{a40f9839-9900-436a-b1ab-566f86dfde57} bus:/gameplay_sfx/game/chapters/10_farewell/cafe_computer_sfx +{5e4eb968-5e09-4be0-bef0-76c2fc17b546} bus:/gameplay_sfx/game/chapters/10_farewell/cassette_room_cymbals +{c56ef299-cdcd-4782-a645-c8ba138ae994} bus:/gameplay_sfx/game/general +{6e3ad52b-f7d9-482d-8970-c157ebc1d716} bus:/gameplay_sfx/game/general/no_pause +{80173d30-4942-4abb-81e7-999ad33a9c18} bus:/gameplay_sfx/game/general/yes_pause +{34514772-f9f0-4a83-8fe7-2757c9206fe0} bus:/gameplay_sfx/game/general/yes_pause/birds +{dac56484-a3d4-47be-8c8e-38ecce68acc8} bus:/gameplay_sfx/game/general/yes_pause/crystalhearts +{8842a7ec-7a4c-432c-be20-64074839636d} bus:/gameplay_sfx/game/general/yes_pause/crystalhearts/fakeheart +{d001d4bf-94bd-4842-bd12-c8d07686ecf3} bus:/gameplay_sfx/game/general/yes_pause/secret_revealed +{ad993587-e7fc-427f-95b0-3a8204f772a7} bus:/gameplay_sfx/game/general/yes_pause/strawberry_pulse +{ab63552e-0d56-46cb-82f3-277df8c07c7b} bus:/gameplay_sfx/game/glitches +{cf6c699a-44d0-402c-ae02-e2e0a46cb94a} bus:/gameplay_sfx/golden_room_flavour +{eb29e2c4-d8fe-47ed-9d8a-490d0c656466} bus:/gameplay_sfx/granny_clouds_dialogue +{9bebdba3-d621-4355-9273-df3368b27182} bus:/gameplay_sfx/kevinpc_verb +{74728fec-f0ab-42ad-aeb9-03d95a119e42} bus:/gameplay_sfx/prologue_verb +{d457df36-9eb7-45c7-a624-6e74d6f10ec9} bus:/gameplay_sfx/sfx_in_space +{c66382b2-56ff-461e-8062-7f881794db85} bus:/music +{2cf5046e-8b34-4d1e-9bde-cb34c2c82607} bus:/music/stings +{035161f3-528e-4896-9238-683d2f3d60f1} bus:/music/tunes +{ae8c943a-7d3c-4e7f-a225-e98315a401e4} bus:/music/tunes/cassette +{2dce7e88-a742-4150-94ed-516b68f6c7d0} bus:/music/tunes/classic +{7429d822-1e68-4251-9907-6d4e8d14a82e} bus:/music/tunes/mains +{e4123d5a-7c10-4871-bbfb-72c4fd63f2ee} bus:/music/tunes/mains/dlc +{598cd199-b5f0-49f5-ba6b-3a2f5ef1de25} bus:/music/tunes/mains/dlc/heartgroove +{8ca23161-65dd-4d81-a97c-003d515b3062} bus:/music/tunes/mains/dlc/part01 +{b2c12b19-7dc1-4872-90da-653b17ebd258} bus:/music/tunes/mains/dlc/part02 +{b5df4708-d694-4a66-86a4-80f50b898f92} bus:/music/tunes/mains/lvl0 +{ef97f0b1-3bc4-4f64-aa42-84cd819b75be} bus:/music/tunes/mains/lvl1 +{24ffc423-525a-4e57-a96a-a392cf455198} bus:/music/tunes/mains/lvl2 +{0a5ea434-cec4-4b65-9f8c-733a13ac4e86} bus:/music/tunes/mains/lvl2/beginning +{7f93dae5-d646-46a5-ae9d-561b4ea5b4d8} bus:/music/tunes/mains/lvl2/beginning_verb +{dd297a42-ca69-42b2-8a75-81bc2c076773} bus:/music/tunes/mains/lvl3 +{281fbfae-927e-4dd8-a3b7-90d51b0fcd03} bus:/music/tunes/mains/lvl4 +{2d452462-5099-4832-9c7b-6244168969f8} bus:/music/tunes/mains/lvl5 +{8bd3048f-79b5-47bd-b697-ded53096b69a} bus:/music/tunes/mains/lvl5/eye_mains +{ea09e719-2d63-4cfa-90b1-7bc68aa0fb89} bus:/music/tunes/mains/lvl5/eye_pulse +{d10b0171-eaf7-4c53-9d55-d05d1bc34e03} bus:/music/tunes/mains/lvl5/torch_arp +{898234ab-6340-4783-9dda-de3e6a4b1c58} bus:/music/tunes/mains/lvl6 +{b3c415b6-811f-43cf-a1f5-4f979596f23f} bus:/music/tunes/mains/lvl7 +{6a55c92f-3eba-4f8c-b8cf-d70c7e200cb4} bus:/music/tunes/mains/lvl8 +{e4b86f10-cdb3-4394-8aba-4aefd2628607} bus:/music/tunes/mains/lvl9 +{dc7b136f-f266-48a1-a0ce-34938c4da9be} bus:/music/tunes/mains/layer_verbcontrol +{f81bdbae-62d5-467b-8f64-608c3c625282} bus:/music/tunes/remix +{af0b4601-5e4b-4580-afb8-ce641dcea598} bus:/music/tunes/remix/02_old_site +{33f0d1af-cd28-4272-a966-89189763d3c1} bus:/music/tunes/side_rooms +{fad3f5c6-a940-4180-8133-53243e1a6eb3} bus:/music/tunes/side_rooms/golden_room +{33116628-46c3-4bfd-9ca6-a4a152fb9ef2} bus:/music/tunes/side_rooms/ppt_content +{1ff13d10-7ecd-46fd-9140-2e67c33c217e} bus:/music/tunes/cassette_previews +{8abc7179-c5ff-48ff-85fd-73ba46b14ed3} bus:/music/tunes/pico8_mus_verb +{59256484-66d5-4ec4-9639-208cf82dfcbf} bus:/ui_sfx +{b8b28cf3-de11-4a37-ace3-02999b659e63} bus:/ui_sfx/game +{e8a05ec7-a764-4f64-aac4-4a7f3ba3e4b9} bus:/ui_sfx/rename_piano +{724d852b-c1ab-4aa4-b2b1-c13d3b299928} bus:/ui_sfx/worldmap_whoosh +{fda3f2a1-d68f-44e7-b701-10e208d3e7dc} bus:/ui_sfx/rename_verb +{45e94b3e-40aa-4719-a33e-8fdd3336bd63} bus:/Reverb +{de538080-4e35-4fae-ba40-6635b9a31bae} bus:/Reverb_Dash_Assist +{64ceaf84-8717-4592-80ab-6f3d75b5a276} vca:/gameplay_sfx +{277f4614-fa32-411a-addd-618b460440f8} vca:/music +{8d7cf364-00af-4b77-8298-c64b484c5ea4} vca:/ui_sfx +{35a38d70-5255-4def-a24c-38d4b432bc7b} snapshot:/music_all_mute +{5b5b6aa0-ca7b-4149-acc6-8e39d8e40cf9} snapshot:/music_mains_mute +{e45a0ce7-66cd-46e7-87bd-f403fd07c6f4} snapshot:/pause_menu +{bce88c97-680c-409d-8ebe-a1133d014d9b} snapshot:/music_secretrevealed +{c2361c39-b90d-4bc4-b168-c4134201a468} snapshot:/dialogue_in_progress +{69755b6c-ec19-4fd8-8db3-3cd08aaf87a1} snapshot:/game_03_clutterswitch_moment +{b3536257-a5f6-4424-92c2-c1b2dda22d72} snapshot:/mus_lvl1_verbtransition +{4c5628e7-adc7-4f0e-a060-82a919c16948} snapshot:/game_00_prologue_amb_down +{34a72406-5330-4cd8-a826-a00d559a0b2e} snapshot:/game_00_prologue_amb_off +{36956a3c-c731-43e9-903e-598f3ec922a0} snapshot:/underwater +{1ab40160-5839-4d5b-8b1d-e0a6bd83347d} snapshot:/game_02_dreammemorial_fade +{8a7f5b1b-7f61-4772-bd14-7de5aafbd44a} snapshot:/game_00_verb +{481f2201-8ce0-43b2-9f3a-bc51cb2b1de2} snapshot:/game_04_gondolafeather_main +{259cebd0-0338-4527-9b41-af852a325cd1} snapshot:/game_04_gondolafeather_verb +{05fa7a5e-2a5c-4750-944c-ed3ea46c2e64} snapshot:/char_granny_laughs_down +{a946aeab-8328-4a84-a58c-4e76700c32a8} snapshot:/env_worldmap_down +{386f6f68-a0da-4c9c-a51a-5aa8d8deea46} snapshot:/game_05_torch_arp +{93cf42c4-26a2-4f75-bd42-8ad29455d171} snapshot:/boss_pitch_sfx +{19948c40-9c7c-4b8a-8dc8-66824fd99eb9} snapshot:/music_reflection_secret +{51370088-3349-4bd9-8ef8-21e646482678} snapshot:/env_allamb_down +{3b704b9e-58b1-4522-8936-0f74cfca567e} snapshot:/game_03_pico8room +{da7d5bb5-c1ec-43df-a92c-a2986bcb978f} snapshot:/game_05_eyedeath +{6b16607b-8e2f-4b79-a1e5-339e589e6919} snapshot:/game_05_mus_pulse_controller +{d8e12b32-0f5a-4897-8bde-7be2012a0924} snapshot:/game_03_oshirofreakout +{22902dd7-41fe-4617-9412-e928455e3d4b} snapshot:/game_gen_crystalheart +{f2738ff2-989f-40bc-8421-a976ba8e49e2} snapshot:/game_05_eyedistance +{c6fa6b4e-5c95-4f3d-8616-385bc8e6f703} snapshot:/game_01_birdbros_finish +{061649d4-7a37-483d-bcd3-70793d8fcdb2} snapshot:/mus_cassette_amb_down +{1829469a-4c2d-4f04-a2b6-8a528987e9a9} snapshot:/game_10_in_space +{df897601-d549-4868-85a2-51ceca90b5df} snapshot:/game_10_final_boost +{859952f9-2a6f-47b2-855b-7fdc9678c9f4} snapshot:/game_10_cafe_computer_active +{2ef4067b-f330-40b8-ab59-15280643ba2d} snapshot:/game_10_glitch_active +{7ea9a03b-ea60-4a15-be33-26a7a9423b63} snapshot:/game_10_inside_cafe +{658d9ddb-30a9-4a55-bd62-d730d793ec83} snapshot:/game_10_amb_voidspiral_active +{9ae549ff-5ba1-4ec1-aec8-ee17190a2d08} snapshot:/game_10_granny_clouds_dialogue +{45db5a63-5d6d-4c3c-9c0c-d9924542b762} snapshot:/game_10_golden_room_flavour +{5955bc4d-e3b4-4663-a676-bdaf632c0d78} snapshot:/game_10_bird_wings_silenced +{97b29aac-da8d-4a14-9aa1-8fbdc80d4672} snapshot:/game_gen_large_berry_get +{f14989bf-0210-48f2-88ab-45fb0c662318} snapshot:/game_10_goldenroom_death_fix +{3a534bf9-d4cd-43ce-b2f1-a63b24452b46} snapshot:/game_10_kevinpc_verbtransition +{45a77b82-31db-4b49-84c5-c93bff634316} snapshot:/game_10_kevinpc_sendcontrol +{b0d8db78-996f-45db-ba9e-85f1dcb6b3fd} snapshot:/game_10_BIR_music_part02 +{973c602d-8504-457b-853f-43107629197b} snapshot:/game_10_BIR_sfx +{1125cef8-d475-441c-b76b-fe4bdb43aa42} snapshot:/game_10_BIR_music_part01 +{03db7333-40ef-44fe-83cb-7e650abdb49c} snapshot:/game_gen_dash_assist_active +{df75cc48-86f4-4adf-91d7-d50d708f5c75} snapshot:/assist_game_speed/assist_speed_90 +{feedddf6-0cfd-4e09-bd66-d1259261651e} snapshot:/assist_game_speed/assist_speed_80 +{4d899a40-a5f6-4ea0-ae36-1f5b15238747} snapshot:/assist_game_speed/assist_speed_70 +{ab9f20ac-e1fa-4ed7-9d7c-19ad254a2d28} snapshot:/assist_game_speed/assist_speed_60 +{434bc162-0111-4667-a5bd-a5327b21e422} snapshot:/assist_game_speed/assist_speed_50 +{401f67f5-af7d-4b5d-a7fd-e7d30583a9a8} snapshot:/variant_speed/variant_speed_120 +{3637f3f7-d1d0-495f-beea-8e13fb5cc4a8} snapshot:/variant_speed/variant_speed_140 +{a7e8f688-585b-4660-a43e-60875c42921a} snapshot:/variant_speed/variant_speed_160 +{d7f19e36-26eb-4630-a934-9f2f1924e3ee} snapshot:/berry_cooperation/1000s_down +{85104a93-1b84-443c-b44b-034b2aaa643b} snapshot:/berry_cooperation/2000s_down +{641d4a72-8e6e-41a8-8f3d-b28219bd4cd7} snapshot:/berry_cooperation/3000s_down +{365efe2d-29e7-4d45-988e-451406863f9a} snapshot:/berry_cooperation/4000s_down +{1aa61ee8-68fc-4c62-9a54-35743044bafe} snapshot:/berry_cooperation/5000s_down +{5044f438-f2ba-41ac-8609-855b8133e867} bank:/avali_skinsounds +{a327f717-e8b5-4fb0-b4dd-84bd8a585fe0} bank:/dlc_music +{e85b3c9e-428d-41b7-82c0-37814f3cbf15} bank:/dlc_sfx +{7916fdbf-1253-451d-a369-6dfd34341e4e} bank:/music +{98263171-3ea2-482b-abb7-9af01e4c002a} bank:/sfx +{f0efde81-92ec-4f1a-8b48-815f4d8a3255} bank:/ui +{f42d1384-f9ea-4ba4-9e08-a4d067c55b3b} bank:/Master Bank diff --git a/AvaliSkin.dll b/AvaliSkin.dll new file mode 100755 index 0000000..aa72db0 Binary files /dev/null and b/AvaliSkin.dll differ diff --git a/Dialog/English.txt b/Dialog/English.txt index 35344e3..f34af9d 100644 --- a/Dialog/English.txt +++ b/Dialog/English.txt @@ -1,10 +1,41 @@ AVALI_SKIN_TITLE= Avali Skin -AVALI_SKIN_COLORONE= Color One -AVALI_SKIN_COLORTWO= Color Two -AVALI_SKIN_MARKING_COLORS= Marking Colors -AVALI_SKIN_ZERODASH= Zero Dashes -AVALI_SKIN_ONEDASH= One Dash -AVALI_SKIN_TWODASH= Two Dashes -AVALI_SKIN_THREEDASH= Three Dashes -AVALI_SKIN_FOURDASH= Four Dashes -AVALI_SKIN_FIVEDASH= Five+ Dashes + +modoptions_avaliskin_colormodeopt=Dash color mode +modoptions_avaliskin_colormodeopt_ExternalDash=Use hair color +modoptions_avaliskin_colormodeopt_ManualPreset=Select color preset +modoptions_avaliskin_colormodeopt_ManualPreset_note=Selects hair color from color presets +Make sure to disable other hair color mods. +modoptions_avaliskin_colormodeopt_ManualRGB=Select RGB color +modoptions_avaliskin_colormodeopt_ManualRGB_note=Selects hair color from RGB values. +Make sure to disable other hair color mods. +modoptions_avaliskin_colormodeopt_ExternalDash_note=Uses hair color from vanilla +or from other mods (e.g., Hyperline, Prideline) + +AVALI_SKIN_COLORS=Dash colors +AVALI_SKIN_DASH0=Zero Dashes +AVALI_SKIN_DASH1=One Dash +AVALI_SKIN_DASH2=Two Dashes +AVALI_SKIN_DASH3=Three Dashes +AVALI_SKIN_DASH4=Four Dashes +AVALI_SKIN_DASH5=Five+ Dashes + +AVALI_SKIN_RED=Red +AVALI_SKIN_GREEN=Green +AVALI_SKIN_BLUE=Blue +AVALI_SKIN_COLOR=Color + +modoptions_avaliskin_celestenet_header=CelesteNet support +modoptions_avaliskin_celestenet=Enable CelesteNet support +modoptions_avaliskin_celestenet_nocelestenet=CelesteNet is not installed. Optional. + +modoptions_avaliskin_celestenetsync=CelesteNet skin sync +modoptions_avaliskin_celestenetsync_SendReceive=Send/Receive +modoptions_avaliskin_celestenetsync_Send=Send only +modoptions_avaliskin_celestenetsync_Receive=Receive only +modoptions_avaliskin_celestenetsync_None=Disable +modoptions_avaliskin_celestenetsync_note=Synchronizes skins for other CelesteNet +players if they also have this mod + +modoptions_avaliskin_celesteneteveryonehasskin=Everyone is an Avali +modoptions_avaliskin_celesteneteveryonehasskin_note=Renders all CelesteNet players +as Avalis, regardless of their skin diff --git a/Effects/AvaliRecolor.fx b/Effects/AvaliRecolor.fx new file mode 100644 index 0000000..239a561 --- /dev/null +++ b/Effects/AvaliRecolor.fx @@ -0,0 +1,35 @@ +// Compile with fxc.exe AvaliRecolor.fx /T fx_2_0 /O3 + +// Creates a texture at a given texture index +#define DECLARE_TEXTURE(Name, index) \ + texture Name: register(t##index); \ + sampler Name##Sampler: register(s##index) + +// Samples the texture and returns a color +#define SAMPLE_TEXTURE(Name, texCoord) tex2D(Name##Sampler, texCoord) + + +DECLARE_TEXTURE(text, 0); // The texture to be recolored + +uniform float4 color_replace_from; // #1ad589 +uniform float4 color_replace_to; +uniform float threshold; // 0.01 + + +// hsls provides distance instead of this... +// float fast_distance4(float4 a, float4 b) { +// float4 diff = a - b; +// return diff.x * diff.x + diff.y * diff.y + diff.z * diff.z + diff.w * diff.w; +// } + + +float4 ps_recolor(float4 pos: SV_Position, float4 in_color: COLOR0, float2 uv: TEXCOORD0): COLOR { + float4 color = SAMPLE_TEXTURE(text, uv); + return (distance(color, color_replace_from) < threshold ? color_replace_to : color) * in_color; +} + +technique Recolor { + pass { + PixelShader = compile ps_2_0 ps_recolor(); + } +} diff --git a/Effects/AvaliRecolor.o b/Effects/AvaliRecolor.o new file mode 100644 index 0000000..d0661bd Binary files /dev/null and b/Effects/AvaliRecolor.o differ diff --git a/Graphics/Sprites.xml b/Graphics/Sprites.xml index 428b3fd..42a7448 100644 --- a/Graphics/Sprites.xml +++ b/Graphics/Sprites.xml @@ -1,192 +1,192 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..cbe5ad1 --- /dev/null +++ b/LICENSE @@ -0,0 +1,437 @@ +Attribution-NonCommercial-ShareAlike 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International +Public License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution-NonCommercial-ShareAlike 4.0 International Public License +("Public License"). To the extent this Public License may be +interpreted as a contract, You are granted the Licensed Rights in +consideration of Your acceptance of these terms and conditions, and the +Licensor grants You such rights in consideration of benefits the +Licensor receives from making the Licensed Material available under +these terms and conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. BY-NC-SA Compatible License means a license listed at + creativecommons.org/compatiblelicenses, approved by Creative + Commons as essentially the equivalent of this Public License. + + d. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + e. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + f. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + g. License Elements means the license attributes listed in the name + of a Creative Commons Public License. The License Elements of this + Public License are Attribution, NonCommercial, and ShareAlike. + + h. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + i. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + j. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + k. NonCommercial means not primarily intended for or directed towards + commercial advantage or monetary compensation. For purposes of + this Public License, the exchange of the Licensed Material for + other material subject to Copyright and Similar Rights by digital + file-sharing or similar means is NonCommercial provided there is + no payment of monetary compensation in connection with the + exchange. + + l. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + m. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + n. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part, for NonCommercial purposes only; and + + b. produce, reproduce, and Share Adapted Material for + NonCommercial purposes only. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. Additional offer from the Licensor -- Adapted Material. + Every recipient of Adapted Material from You + automatically receives an offer from the Licensor to + exercise the Licensed Rights in the Adapted Material + under the conditions of the Adapter's License You apply. + + c. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties, including when + the Licensed Material is used other than for NonCommercial + purposes. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + b. ShareAlike. + + In addition to the conditions in Section 3(a), if You Share + Adapted Material You produce, the following conditions also apply. + + 1. The Adapter's License You apply must be a Creative Commons + license with the same License Elements, this version or + later, or a BY-NC-SA Compatible License. + + 2. You must include the text of, or the URI or hyperlink to, the + Adapter's License You apply. You may satisfy this condition + in any reasonable manner based on the medium, means, and + context in which You Share Adapted Material. + + 3. You may not offer or impose any additional or different terms + or conditions on, or apply any Effective Technological + Measures to, Adapted Material that restrict exercise of the + rights granted under the Adapter's License You apply. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database for NonCommercial purposes + only; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material, + including for purposes of Section 3(b); and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + +======================================================================= + +Creative Commons is not a party to its public +licenses. Notwithstanding, Creative Commons may elect to apply one of +its public licenses to material it publishes and in those instances +will be considered the “Licensor.” The text of the Creative Commons +public licenses is dedicated to the public domain under the CC0 Public +Domain Dedication. Except for the limited purpose of indicating that +material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the +public licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/SourceCode/AvaliSkinModule.cs b/SourceCode/AvaliSkinModule.cs index d955711..09cbd71 100644 --- a/SourceCode/AvaliSkinModule.cs +++ b/SourceCode/AvaliSkinModule.cs @@ -1,278 +1,429 @@ -using Microsoft.Xna.Framework; -using Microsoft.Xna.Framework.Graphics; -using Monocle; -using System; -using MonoMod.Cil; -using MonoMod.Utils; -using System.Collections.Generic; - -namespace Celeste.Mod.AvaliSkin { - // This code was built off of max480's code for the Pro Banana Skin. - // Other mods I referenced include SkinModHelper and Kayden Fox skin. - public class AvaliSkinModule : EverestModule { - public static AvaliSkinModule Instance; - public override Type SettingsType => typeof(AvaliSkinSettings); - public static AvaliSkinSettings Settings => (AvaliSkinSettings) Instance._Settings; - public static SpriteBank AvaliSpriteBank; - - // the dash colors, tbr - private static Color ZeroDashColor; - private static Color OneDashColor; - private static Color TwoDashColor; - private static Color ThreeDashColor; - private static Color FourDashColor; - private static Color FiveDashColor; - - // recolored dash particles (A = 0-dash, B = 1-dash, C = 2-dash) - private static ParticleType P_DashA; - private static ParticleType P_DashB; - private static ParticleType P_DashC; - - // Atlas for Color1 and Color2; we'll see if we need these later. - // private static Atlas Col1Atlas; - // private static Atlas Col2Atlas; - - // Color Grade IDs - private static string dashGID; - // private static string col1GID; - // private static string col2GID; - - public AvaliSkinModule() { - Instance = this; - } - - public override void Load() { - On.Celeste.PlayerSprite.ctor += onPlayerSpriteConstructor; - On.Celeste.Player.Render += onPlayerRender; - On.Celeste.Player.GetCurrentTrailColor += onPlayerGetTrailColor; - On.Celeste.Player.UpdateHair += onPlayerUpdateHair; - On.Celeste.Player.DashUpdate += onPlayerDashUpdate; - IL.Celeste.DeathEffect.Draw += DeathEffectDrawHook; - On.Celeste.Payphone.ctor += onPayphoneConstructor; - On.Celeste.Lookout.ctor += onLookoutConstructor; - } - - public override void LoadContent(bool firstLoad) { - base.LoadContent(firstLoad); - } - - public override void Unload() { - On.Celeste.PlayerSprite.ctor -= onPlayerSpriteConstructor; - On.Celeste.Player.Render -= onPlayerRender; - On.Celeste.Player.GetCurrentTrailColor -= onPlayerGetTrailColor; - On.Celeste.Player.UpdateHair -= onPlayerUpdateHair; - On.Celeste.Player.DashUpdate -= onPlayerDashUpdate; - IL.Celeste.DeathEffect.Draw -= DeathEffectDrawHook; - On.Celeste.Payphone.ctor -= onPayphoneConstructor; - On.Celeste.Lookout.ctor -= onLookoutConstructor; - } - - private void onPlayerSpriteConstructor(On.Celeste.PlayerSprite.orig_ctor orig, PlayerSprite self, PlayerSpriteMode mode) { - orig(self, mode); - - if (Settings.Enabled) { - // set the dash colors - ZeroDashColor = ColorsToHex.SettingToColor(Settings.ZeroDash); - OneDashColor = ColorsToHex.SettingToColor(Settings.OneDash); - TwoDashColor = ColorsToHex.SettingToColor(Settings.TwoDash); - ThreeDashColor = ColorsToHex.SettingToColor(Settings.ThreeDash); - FourDashColor = ColorsToHex.SettingToColor(Settings.FourDash); - FiveDashColor = ColorsToHex.SettingToColor(Settings.FiveDash); - - // build the small dash particles - P_DashA = new ParticleType(Player.P_DashA) - { - Color = ZeroDashColor, - Color2 = OneDashColor, - }; - P_DashB = new ParticleType(Player.P_DashA) - { - Color = OneDashColor, - Color2 = TwoDashColor, - }; - P_DashC = new ParticleType(Player.P_DashA) - { - Color = TwoDashColor, - Color2 = TwoDashColor, - }; - - if (self.Mode == PlayerSpriteMode.Madeline || self.Mode == PlayerSpriteMode.MadelineNoBackpack || self.Mode == PlayerSpriteMode.Playback) - { - string sprID = ""; - switch (self.Mode) - { - case PlayerSpriteMode.Madeline: - sprID = "player_avali"; break; - case PlayerSpriteMode.MadelineNoBackpack: - sprID = "player_avali_no_backpack"; break; - case PlayerSpriteMode.Playback: - sprID = "player_avali_playback"; break; - } - PlayerSprite.CreateFramesMetadata(sprID); - GFX.SpriteBank.CreateOn(self, sprID); - } - } - } - - private void onPlayerRender(On.Celeste.Player.orig_Render orig, Player self) { - if (Settings.Enabled) { - // we are going to apply a color grade to the Avali using the colors set in settings - // get the dash texture ID - switch (self.Dashes) { - case 0: - dashGID = "mcol_" + Settings.ZeroDash; break; - case 1: - dashGID = "mcol_" + Settings.OneDash; break; - case 2: - dashGID = "mcol_" + Settings.TwoDash; break; - case 3: - dashGID = "mcol_" + Settings.ThreeDash; break; - case 4: - dashGID = "mcol_" + Settings.FourDash; break; - default: - dashGID = "mcol_" + Settings.FiveDash; break; - } - - /* get the color1 and color2 grade IDS - col1GID = "col1_" + Settings.ColorOne; - col2GID = "col2_" + Settings.ColorTwo; - - This is where code to apply custom color1 and color2 would go, but I've learned that using colorgrades themselves is *not* a viable option, so I have not currently implemented it. - I might need a custom effect. - - */ - - - // apply the colorgrade to the player - Effect fxColorGrading = GFX.FxColorGrading; - fxColorGrading.CurrentTechnique = fxColorGrading.Techniques["ColorGradeSingle"]; - Engine.Graphics.GraphicsDevice.Textures[1] = GFX.ColorGrades[dashGID].Texture.Texture_Safe; - Draw.SpriteBatch.End(); - Draw.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.None, RasterizerState.CullNone, fxColorGrading, (self.Scene as Level).GameplayRenderer.Camera.Matrix); - - // render Avali... - orig(self); - - // ... and reset rendering to stop using the color grade. - Draw.SpriteBatch.End(); - Draw.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.None, RasterizerState.CullNone, null, (self.Scene as Level).GameplayRenderer.Camera.Matrix); - } else { - // skin disabled, just render Maddy - orig(self); - } - } - private void DeathEffectDrawHook(ILContext il) - { - // replace death particle, just like SkinModHelper - ILCursor cursor = new ILCursor(il); - while (cursor.TryGotoNext(MoveType.After, instr => instr.MatchLdstr("characters/player/hair00"))) { - cursor.EmitDelegate>(ReplaceDeathParticle); - } - } - private static string ReplaceDeathParticle(string deathParticle) - { - if (Settings.Enabled) { - string newDeathParticle = "characters/Avali/death_particle"; - return newDeathParticle; - } - return deathParticle; - } - private Color onPlayerGetTrailColor(On.Celeste.Player.orig_GetCurrentTrailColor orig, Player self) { - if (Settings.Enabled) { - // replace trail colors with marking colors - int dashCount = self.Dashes; - switch (dashCount) { - case 0: - return ZeroDashColor; - case 1: - return OneDashColor; - case 2: - return TwoDashColor; - case 3: - return ThreeDashColor; - case 4: - return FourDashColor; - default: - return FiveDashColor; - } - } - - // skin disabled, keep original colors - return orig(self); - } - - private void onPlayerUpdateHair(On.Celeste.Player.orig_UpdateHair orig, Player self, bool applyGravity) { - orig(self, applyGravity); - - if (Settings.Enabled) { - // change player hair color to match dash colors. - // (hair is invisible, but that influences other things like the orbs when the Avali dies and respawns) - int dashCount = self.Dashes; - switch (dashCount) - { - case 0: - self.Hair.Color = ZeroDashColor; break; - case 1: - self.Hair.Color = OneDashColor; break; - case 2: - self.Hair.Color = TwoDashColor; break; - case 3: - self.Hair.Color = ThreeDashColor; break; - case 4: - self.Hair.Color = FourDashColor; break; - default: - self.Hair.Color = FiveDashColor; break; - } - } - } - - private int onPlayerDashUpdate(On.Celeste.Player.orig_DashUpdate orig, Player self) { - if (!Settings.Enabled) { - // skin disabled: just run vanilla code - return orig(self); - } - - // back up vanilla particles - ParticleType bakDashA = Player.P_DashA; - ParticleType bakDashB = Player.P_DashB; - ParticleType bakDashBadB = Player.P_DashBadB; - - // replace them with recolored ones - Player.P_DashA = P_DashA; - Player.P_DashB = P_DashB; - Player.P_DashBadB = P_DashB; - - // run vanilla code: if it emits particles, it will use recolored ones. - int result = orig(self); - - // restore vanilla particles - Player.P_DashA = bakDashA; - Player.P_DashB = bakDashB; - Player.P_DashBadB = bakDashBadB; - - return result; - } - private void onPayphoneConstructor(On.Celeste.Payphone.orig_ctor orig, Payphone self, Vector2 pos) - { - orig(self, pos); - if (Settings.Enabled) - { - // replace payphone sprites - self.Remove(self.Sprite); - self.Add(self.Sprite = GFX.SpriteBank.Create("payphone_avali")); - self.Sprite.Play("idle"); - } - } - - private void onLookoutConstructor(On.Celeste.Lookout.orig_ctor orig, Lookout self, EntityData data, Vector2 pos) - { - orig(self, data, pos); - if (Settings.Enabled) { - // replace lookout (binoculars) sprites - DynamicData lookoutData = new DynamicData(self); - Sprite origSpr = lookoutData.Get("sprite"); - GFX.SpriteBank.CreateOn(origSpr, "lookout_avali"); - } - } - } -} +using System; +using System.Collections.Generic; + +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using Monocle; +using MonoMod.Cil; +using MonoMod.Utils; +using MonoMod.RuntimeDetour; + +using Celeste.Mod.CelesteNet.Client; +using Celeste.Mod.CelesteNet.Client.Entities; +using Celeste.Mod.CelesteNet.DataTypes; + +using ColorChoice = Celeste.Mod.AvaliSkin.AvaliSkinSettings.ColorChoice; +using ColorMode = Celeste.Mod.AvaliSkin.AvaliSkinSettings.ColorMode; + + +namespace Celeste.Mod.AvaliSkin { + // This code was built off of max480's code for the Pro Banana Skin. + // Other mods I referenced include SkinModHelper, Hyperline, Styleline, and Kayden Fox skin. + public class AvaliSkinModule : EverestModule { + public static AvaliSkinModule Instance; + public override Type SettingsType => typeof(AvaliSkinSettings); + public static AvaliSkinSettings Settings => (AvaliSkinSettings) Instance._Settings; + + public static AvaliConfig PlayerConfig { + get => new AvaliConfig { + Enabled = Settings.Enabled, + ColorMode = Settings.ColorModeOpt, + ManualPreset = Settings.DashPreset, + ManualRGB = Settings.DashRGBColor + }; + } + private static Effect FxRecolor; + + public static EverestModuleMetadata CelesteNetMeta = new EverestModuleMetadata() { + Name = "CelesteNet.Client", + Version = new Version(2, 0, 0) + }; + + public AvaliSkinModule() => Instance = this; + + + public override void Load() { + Logger.Log(LogLevel.Info, "AvaliSkin", $"Hooking stuff..."); + + On.Celeste.LevelLoader.ctor += onLevelLoaderctor; + On.Celeste.Player.Render += onPlayerRender; + + if (Everest.Loader.DependencyLoaded(CelesteNetMeta)) { + Logger.Log(LogLevel.Info, "AvaliSkin", $"Hooking for CelesteNet..."); + On.Celeste.PlayerSprite.Render += onPlayerSpriteRenderCelestenet; + On.Celeste.PlayerSprite.Render += onPlayerSpriteRenderCelestenetMisc; + } else { + On.Celeste.PlayerSprite.Render += onPlayerSpriteRenderMisc; + } + + using (new DetourContext("AvaliSkinModule") { + After = { "Hyperline" } + }) { + On.Celeste.Player.GetCurrentTrailColor += onPlayerGetTrailColor; + On.Celeste.Player.UpdateHair += onPlayerUpdateHair; + On.Celeste.Player.DashUpdate += onPlayerDashUpdate; + } + + IL.Celeste.DeathEffect.Draw += DeathEffectDrawHook; + On.Celeste.Payphone.ctor += onPayphoneConstructor; + On.Celeste.Lookout.ctor += onLookoutConstructor; + } + + + public override void LoadContent(bool firstLoad) { + base.LoadContent(firstLoad); + + IGraphicsDeviceService graphicsDeviceService = + Engine.Instance.Content.ServiceProvider + .GetService(typeof(IGraphicsDeviceService)) + as IGraphicsDeviceService; + + ModAsset asset = Everest.Content.Get("Effects/AvaliRecolor.o", true); + FxRecolor = new Effect(graphicsDeviceService.GraphicsDevice, asset.Data); + } + + + public override void Unload() { + Logger.Log(LogLevel.Info, "AvaliSkin", $"Unhooking stuff..."); + + On.Celeste.LevelLoader.ctor -= onLevelLoaderctor; + On.Celeste.Player.Render -= onPlayerRender; + + if (Everest.Loader.DependencyLoaded(CelesteNetMeta)) { + Logger.Log(LogLevel.Info, "AvaliSkin", $"Unhooking hooks for CelesteNet..."); + On.Celeste.PlayerSprite.Render -= onPlayerSpriteRenderCelestenet; + On.Celeste.PlayerSprite.Render -= onPlayerSpriteRenderCelestenetMisc; + } else { + On.Celeste.PlayerSprite.Render -= onPlayerSpriteRenderMisc; + } + + using (new DetourContext("AvaliSkinModule") { + After = { "Hyperline" } + }) { + On.Celeste.Player.GetCurrentTrailColor -= onPlayerGetTrailColor; + On.Celeste.Player.UpdateHair -= onPlayerUpdateHair; + On.Celeste.Player.DashUpdate -= onPlayerDashUpdate; + } + + IL.Celeste.DeathEffect.Draw -= DeathEffectDrawHook; + On.Celeste.Payphone.ctor -= onPayphoneConstructor; + On.Celeste.Lookout.ctor -= onLookoutConstructor; + + FxRecolor.Dispose(); + } + + + private void trySpriteSwap(PlayerSprite sprite, bool enabled) { + DynamicData dd = DynamicData.For(sprite); + bool oldEnabled = false; + // TryGet crashes with value types (of course; obviously!) + // So we use a object type with the nullable bool... this is a bug in monomod? + if (dd.TryGet("avaliskin_enabled", out bool? ddoldEnabled)) { + oldEnabled = (bool) ddoldEnabled; + } + + if (oldEnabled != enabled) { + string spriteID = ""; + switch (sprite.Mode) { + case PlayerSpriteMode.Madeline: + spriteID = enabled ? "player_avali" : "player"; break; + case PlayerSpriteMode.MadelineNoBackpack: + spriteID = enabled ? "player_avali_no_backpack" : "player_no_backpack"; break; + case PlayerSpriteMode.Playback: + spriteID = enabled ? "player_avali_playback" : "player_playback"; break; + default: return; + } + + dd.Set("avaliskin_enabled", (bool?) enabled); + Vector2 pos = sprite.RenderPosition; + GFX.SpriteBank.CreateOn(sprite, spriteID); + sprite.RenderPosition = pos; + } + } + + + private void onLevelLoaderctor( + On.Celeste.LevelLoader.orig_ctor orig, LevelLoader self, + Session session, Vector2? startPosition = null + ) { + orig(self, session, startPosition); + + // This only needs to be ran once, but we can't run this in LoadContent + // because the sprites are not loaded yet... see the original Everest + // source for this function + PlayerSprite.CreateFramesMetadata("player_avali"); + PlayerSprite.CreateFramesMetadata("player_avali_no_backpack"); + PlayerSprite.CreateFramesMetadata("player_avali_playback"); + } + + + private void onPlayerRender(On.Celeste.Player.orig_Render orig, Player self) { + PlayerSprite sprite = self.Sprite; + if (sprite.Scene != null && PlayerConfig.IsEnabled(self)) { + // swap out the player's spritebank if the enabled state changed + trySpriteSwap(sprite, true); + Color color = PlayerConfig.GetColor(self); + + // apply the recolor effect to the player: + // replace the color #1ud589 in the sprite with color + FxRecolor.Parameters["threshold"].SetValue(0.01f); + FxRecolor.Parameters["color_replace_from"].SetValue( + (new Color((byte) 0x1u, 0xd5, 0x89, 0xff)).ToVector4() + ); + FxRecolor.Parameters["color_replace_to"].SetValue(color.ToVector4()); + FxRecolor.CurrentTechnique = FxRecolor.Techniques["Recolor"]; + + Draw.SpriteBatch.End(); + Draw.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.None, RasterizerState.CullNone, FxRecolor, (self.Scene as Level).GameplayRenderer.Camera.Matrix); + + // render Avali... + orig(self); + + // ... and reset rendering to stop using the effect + Draw.SpriteBatch.End(); + Draw.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.None, RasterizerState.CullNone, null, (self.Scene as Level).GameplayRenderer.Camera.Matrix); + } else if (self.Scene != null) { + trySpriteSwap(sprite, false); + orig(self); + } else { + orig(self); + } + } + + + private void onPlayerSpriteRenderMisc(On.Celeste.PlayerSprite.orig_Render orig, PlayerSprite self) { + Player player = Engine.Scene.Tracker.GetEntity(); + if (player == null) { + orig(self); + return; + } + + // This handles rendering of misc instances of PlayerSprites: + // usually player playback entities and the such. + if ( + self.Scene != null + && (self.Entity == null || !(self.Entity is Player)) + ) { + if (PlayerConfig.IsEnabled(player)) { + trySpriteSwap(self, true); + Color color = PlayerConfig.GetColor(player); + + // apply the recolor effect to the sprite + // replace the color #1ud589 in the sprite with color + FxRecolor.Parameters["threshold"].SetValue(0.01f); + FxRecolor.Parameters["color_replace_from"].SetValue( + (new Color((byte) 0x1u, 0xd5, 0x89, 0xff)).ToVector4() + ); + FxRecolor.Parameters["color_replace_to"].SetValue(color.ToVector4()); + FxRecolor.CurrentTechnique = FxRecolor.Techniques["Recolor"]; + + Draw.SpriteBatch.End(); + Draw.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.None, RasterizerState.CullNone, FxRecolor, (self.Scene as Level).GameplayRenderer.Camera.Matrix); + + // render the sprite... + orig(self); + + // ... and reset rendering to stop using the effect + Draw.SpriteBatch.End(); + Draw.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.None, RasterizerState.CullNone, null, (self.Scene as Level).GameplayRenderer.Camera.Matrix); + } else { + trySpriteSwap(self, false); + orig(self); + } + } else { + orig(self); + } + } + + private void onPlayerSpriteRenderCelestenetMisc(On.Celeste.PlayerSprite.orig_Render orig, PlayerSprite self) { + // This handles rendering of misc instances of PlayerSprites: + // usually player playback entities and the such. + if ( + self.Scene != null && ( + self.Entity == null + || !(self.Entity is Player || self.Entity is Ghost) + ) + ) { + onPlayerSpriteRenderMisc(orig, self); + } else { + orig(self); + } + } + + + // CelesteNet must be loaded when calling this function. + private void onPlayerSpriteRenderCelestenet(On.Celeste.PlayerSprite.orig_Render orig, PlayerSprite self) { + // CelesteNet players are not actually Player classes, but instead this custom Ghost class. + // Ghosts have their own custom hair and sprite which we are able to recolor like the player. + // We need to be really paranoid here cuz celestenet jank... + CelesteNetClient client = CelesteNetClientModule.Instance.Client; + AvaliConfig everyoneHasSkin = new AvaliConfig { Enabled = true, ColorMode = ColorMode.ExternalDash}; + Color color; + Ghost ghost; + if ( + self.Scene != null && self.Entity != null + && self.Entity is Ghost ghost2 && ghost2.PlayerInfo != null + && client != null + && client.Data.TryGetBoundRef( + ghost2.PlayerInfo.ID, + out DataPlayerAvaliSkin data + ) && data != null + && data.Config.IsEnabled(ghost2) + ) { + ghost = ghost2; + color = data.Config.GetColor(ghost); + } else if ( + Settings.CelesteNetEveryoneHasSkin + && self.Scene != null && self.Entity != null + && self.Entity is Ghost ghost3 + && everyoneHasSkin.IsEnabled(ghost3) + ) { + ghost = ghost3; + color = everyoneHasSkin.GetColor(ghost); + } else if ( + self.Scene != null && self.Entity != null + && self.Entity is Ghost _ + ) { + trySpriteSwap(self, false); + orig(self); + return; + } else { + orig(self); + return; + } + + // swap out the ghost's spritebank if the enabled state changed + trySpriteSwap(self, true); + + // apply the recolor effect to the ghost: + // replace the color #1ud589 in the sprite with color + FxRecolor.Parameters["threshold"].SetValue(0.01f); + FxRecolor.Parameters["color_replace_from"].SetValue( + (new Color((byte) 0x1u, 0xd5, 0x89, 0xff)).ToVector4() + ); + FxRecolor.Parameters["color_replace_to"].SetValue(color.ToVector4()); + FxRecolor.CurrentTechnique = FxRecolor.Techniques["Recolor"]; + + Draw.SpriteBatch.End(); + Draw.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.None, RasterizerState.CullNone, FxRecolor, (self.Scene as Level).GameplayRenderer.Camera.Matrix); + + // render the ghost... + orig(self); + + // ... and reset rendering to stop using the effect + Draw.SpriteBatch.End(); + Draw.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.None, RasterizerState.CullNone, null, (self.Scene as Level).GameplayRenderer.Camera.Matrix); + } + + + private void DeathEffectDrawHook(ILContext il) { + // replace death particle, just like SkinModHelper + ILCursor cursor = new ILCursor(il); + while (cursor.TryGotoNext(MoveType.After, instr => instr.MatchLdstr("characters/player/hair00"))) { + cursor.EmitDelegate>(ReplaceDeathParticle); + } + } + + + private static string ReplaceDeathParticle(string deathParticle) { + if (PlayerConfig.Enabled) { + string newDeathParticle = "characters/Avali/death_particle"; + return newDeathParticle; + } + return deathParticle; + } + + + private Color onPlayerGetTrailColor(On.Celeste.Player.orig_GetCurrentTrailColor orig, Player self) { + Color orig_color = orig(self); + if (PlayerConfig.IsEnabled(self)) { + // Don't change the trail color if another mod is in control of it! + // The hair mod should do be doing that instead of us. + // Furthermore: naively doing this will look strange because the white + // hair flash right after dashing will be copied to the trail. + if (PlayerConfig.ColorMode != ColorMode.ExternalDash) { + // replace trail colors with marking colors + return PlayerConfig.GetColor(self); + } + } + + // skin disabled, keep original colors + return orig_color; + } + + + private void onPlayerUpdateHair(On.Celeste.Player.orig_UpdateHair orig, Player self, bool applyGravity) { + orig(self, applyGravity); + + // Don't change the hair color if another mod is in control of it! + if (PlayerConfig.IsEnabled(self) && PlayerConfig.ColorMode != ColorMode.ExternalDash) { + // change player hair color to match dash colors. + // (hair is invisible, but that influences other things like the orbs when the Avali dies and respawns) + self.Hair.Color = PlayerConfig.GetColor(self); + } + } + + + private int onPlayerDashUpdate(On.Celeste.Player.orig_DashUpdate orig, Player self) { + if (!( + PlayerConfig.IsEnabled(self) + // We can't exfiltrate a dash color in this mode because we can't extract that + // without integrating with the dash color mod, and besides, whatever mod that + // changed the dash color should have also changed these particles regardless. + && PlayerConfig.ColorMode != ColorMode.ExternalDash + )) { + // disabled, just run vanilla code + return orig(self); + } + + Color color = PlayerConfig.GetColor(self); + + // back up vanilla particles + ParticleType bakDashA = Player.P_DashA; + ParticleType bakDashB = Player.P_DashB; + ParticleType bakDashBadB = Player.P_DashBadB; + + // Replace them with recolored ones. + // We need to generate these dash particles on the fly because multiple players may + // have different colors (e.g. Celestenet). + Player.P_DashA = new ParticleType(Player.P_DashA) { + Color = color, + Color2 = color, + }; + Player.P_DashB = Player.P_DashA; + Player.P_DashBadB = Player.P_DashA; + + // run vanilla code: if it emits particles, it will use recolored ones. + int result = orig(self); + + // restore vanilla particles + Player.P_DashA = bakDashA; + Player.P_DashB = bakDashB; + Player.P_DashBadB = bakDashBadB; + + return result; + } + + + private void onPayphoneConstructor(On.Celeste.Payphone.orig_ctor orig, Payphone self, Vector2 pos) { + orig(self, pos); + if (Settings.Enabled) { + // replace payphone sprites + self.Remove(self.Sprite); + self.Add(self.Sprite = GFX.SpriteBank.Create("payphone_avali")); + self.Sprite.Play("idle"); + } + } + + + private void onLookoutConstructor(On.Celeste.Lookout.orig_ctor orig, Lookout self, EntityData data, Vector2 pos) { + orig(self, data, pos); + if (Settings.Enabled) { + // replace lookout (binoculars) sprites + DynamicData lookoutData = new DynamicData(self); + Sprite origSpr = lookoutData.Get("sprite"); + GFX.SpriteBank.CreateOn(origSpr, "lookout_avali"); + } + } + } +} diff --git a/SourceCode/AvaliSkinSettings.cs b/SourceCode/AvaliSkinSettings.cs index 9f9725e..3e07342 100644 --- a/SourceCode/AvaliSkinSettings.cs +++ b/SourceCode/AvaliSkinSettings.cs @@ -1,94 +1,326 @@ -using Monocle; - -namespace Celeste.Mod.AvaliSkin -{ - [SettingName("AVALI_SKIN_TITLE")] - public class AvaliSkinSettings : EverestModuleSettings - { - private bool enabled = true; - - [SettingSubText("Note: Enabling/disabling in-game requires either\na reload or death before some things change")] - public bool Enabled - { - get => enabled; - set - { - enabled = value; - - if (Engine.Scene is Level level) - { - // we're in a map: reset sprite the same way the Other Self toggle does. - // the hook on PlayerSprite will decide if we should use the Avali skin or not. - Player player = level.Tracker.GetEntity(); - if (player != null) - { - PlayerSpriteMode mode = (SaveData.Instance.Assists.PlayAsBadeline ? PlayerSpriteMode.MadelineAsBadeline : player.DefaultSpriteMode); - if (player.Active) - { - player.ResetSpriteNextFrame(mode); - } - else - { - player.ResetSprite(mode); - } - } - } - } - } - - #region AvaliColorSettings - - /* For later - - [SettingName("AVALI_SKIN_COLORONE")] - public ColorChoice ColorOne { get; set; } = ColorChoice.Beige; - - [SettingName("AVALI_SKIN_COLORTWO")] - public ColorChoice ColorTwo { get; set; } = ColorChoice.GreyLight; - - */ - - [SettingName("AVALI_SKIN_ZERODASH")] - [SettingSubText("Note: Changing colors in-game requires either\na reload or death before fully applying")] - public ColorChoice ZeroDash { get; set; } = ColorChoice.BlueLight; - - [SettingName("AVALI_SKIN_ONEDASH")] - public ColorChoice OneDash { get; set; } = ColorChoice.Turquoise; - - [SettingName("AVALI_SKIN_TWODASH")] - public ColorChoice TwoDash { get; set; } = ColorChoice.Pink; - - [SettingName("AVALI_SKIN_THREEDASH")] - public ColorChoice ThreeDash { get; set; } = ColorChoice.BlueDark; - - [SettingName("AVALI_SKIN_FOURDASH")] - public ColorChoice FourDash { get; set; } = ColorChoice.Yellow; - - [SettingName("AVALI_SKIN_FIVEDASH")] - public ColorChoice FiveDash { get; set; } = ColorChoice.Red; - - #endregion - - public enum ColorChoice - { - Beige, - Black, - BlueDark, - BlueLight, - Brown, - Cyan, - GreenDark, - GreenLight, - GreyDark, - GreyLight, - Magenta, - Orange, - Pink, - Purple, - Red, - Turquoise, - White, - Yellow, - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; + +using Microsoft.Xna.Framework; +using Monocle; + +using YamlDotNet.Serialization; + +namespace Celeste.Mod.AvaliSkin { + [SettingName("AVALI_SKIN_TITLE")] + public class AvaliSkinSettings : EverestModuleSettings { + private void updateOptions() { + bool loadedCelestenet = Everest.Loader.DependencyLoaded(AvaliSkinModule.CelesteNetMeta); + + // send the new settings to other celestenet players if we're connected + if (loadedCelestenet) { updateSkinCelestenet(); } + + // menu is not loaded; don't bother + if (ColorModeOptItem == null) { return; } + + // disable all the normal options if the main toggle is disabled + ColorModeOptItem.Disabled = !Enabled; + ColorSubmenuItem.Disabled = !Enabled; + + // change up the colormode note based on the selection + string colorModeNote = ""; + switch (ColorModeOpt) { + case ColorMode.ExternalDash: colorModeNote = "modoptions_avaliskin_colormodeopt_ExternalDash_note"; break; + case ColorMode.ManualPreset: colorModeNote = "modoptions_avaliskin_colormodeopt_ManualPreset_note"; break; + case ColorMode.ManualRGB: colorModeNote = "modoptions_avaliskin_colormodeopt_ManualRGB_note"; break; + } + ColorModeOptNote.Title = colorModeNote.DialogOrKey(); + + // no point in showing the submenu at all for externaldash; there's + // nothing to configure! + ColorSubmenuItem.Visible = ColorModeOpt != ColorMode.ExternalDash; + + // disable and change item visibility based on main toggle or colormode + foreach (var item in DashRGBItems) { + item.Disabled = !Enabled; + item.Visible = ColorModeOpt == ColorMode.ManualRGB; + } + + foreach (var item in DashPresetItems) { + item.Disabled = !Enabled; + item.Visible = ColorModeOpt == ColorMode.ManualPreset; + } + + + // Disable if Celestenet is not installed/enabled. + EnableCelesteNetItem.Disabled = !loadedCelestenet; + + // Independently disable the celestenet options + // The user might want the skin disabled, but not for others! + // Also disable these options if Celestenet is not installed/enabled. + CelesteNetSyncItem.Disabled = !EnableCelesteNet || !loadedCelestenet; + CelesteNetEveryoneHasSkinItem.Disabled = !EnableCelesteNet || !loadedCelestenet; + } + + // CelesteNet must be loaded when calling this function. + private void updateSkinCelestenet() { + // this needs to be in a seperate function because the entire component + // relies on an assembly reference + if (CelesteNetAvaliComponent.Instance != null) { + CelesteNetAvaliComponent.Instance.SendAvaliSkin(); + } + } + + // note: YamlDotNet ignores all private member variables + private bool enabled = true; + public bool Enabled { + get => enabled; + set { + enabled = value; + + if (Engine.Scene is Level level) { + // we're in a map: reset sprite the same way the Other Self toggle does. + // the hook on PlayerSprite will decide if we should use the Avali skin or not. + Player player = level.Tracker.GetEntity(); + if (player != null) { + PlayerSpriteMode mode = (SaveData.Instance.Assists.PlayAsBadeline ? PlayerSpriteMode.MadelineAsBadeline : player.DefaultSpriteMode); + if (player.Active) { + player.ResetSpriteNextFrame(mode); + } else { + player.ResetSprite(mode); + } + } + } + + updateOptions(); + } + } + + + public enum ColorMode { + ExternalDash, + ManualPreset, + ManualRGB + } + + public ColorMode ColorModeOpt { get; set; } = ColorMode.ExternalDash; + private TextMenu.Item ColorModeOptItem; + private TextMenu.SubHeader ColorModeOptNote; + public void CreateColorModeOptEntry(TextMenu menu, bool inGame) { + ColorModeOptItem = new TextMenuExt.EnumerableSlider( + "modoptions_avaliskin_colormodeopt".DialogOrKey(), + // Enum.GetValues returns an Array, which is not enumerable. + // However, normal object vectors are. So... + ((ColorMode[]) Enum.GetValues(typeof(ColorMode))).Select( + variant => new KeyValuePair( + variant, + $"modoptions_avaliskin_colormodeopt_{variant.ToString()}".DialogOrKey() + ) + ), + ColorModeOpt + ).Change(opt => { + ColorModeOpt = opt; + updateOptions(); + }); + menu.Add(ColorModeOptItem); + ColorModeOptItem.AddDescription(menu, "modoptions_avaliskin_colormodeopt_note".DialogOrKey()); + + List items = menu.GetItems(); + ColorModeOptNote = (TextMenu.SubHeader) items[items.IndexOf(ColorModeOptItem) + 1]; + } + + #region AvaliColorSettings + + // ColorSubmenu is a dummy setting that is only used to position the + // Submenu. This setting is never used, hence why it is Void! + [YamlIgnore] + public Void ColorSubmenu { get; set; } + private TextMenuExt.OptionSubMenu ColorSubmenuItem; + public void CreateColorSubmenuEntry(TextMenu menu, bool inGame) { + DashRGBItems.Clear(); + DashPresetItems.Clear(); + + ColorSubmenuItem = new TextMenuExt.OptionSubMenu( + "AVALI_SKIN_COLORS".DialogOrKey() + ); + + // This generates n submenus, one for each dash + for (int i = 0; i < DashRGBColor.Count; i++) { + TextMenuExt.IntSlider DashRItem, DashGItem, DashBItem; + TextMenu.Option DashColorItem; + + int j = i; // C# lambda are wierd: capturing i directly mutates the captured variable + + ColorSubmenuItem.Add( + $"AVALI_SKIN_DASH{i}".DialogOrKey(), + new List { + (DashRItem = new TextMenuExt.IntSlider( + "AVALI_SKIN_RED".DialogOrKey(), + 0, 255, DashRGBColor[j].R + ).Change( + // C# is stupidly pendatic and doesn't support property assignment in List elements + // so we have to do this ugly shit to avoid breaking up this expression into two + c => DashRGBColor[j] = new Color((byte) c, DashRGBColor[j].B, DashRGBColor[j].G) + )), + (DashGItem = new TextMenuExt.IntSlider( + "AVALI_SKIN_BLUE".DialogOrKey(), + 0, 255, DashRGBColor[j].G + ).Change( + c => DashRGBColor[j] = new Color(DashRGBColor[j].R, (byte) c, DashRGBColor[j].G) + )), + (DashBItem = new TextMenuExt.IntSlider( + "AVALI_SKIN_GREEN".DialogOrKey(), + 0, 255, DashRGBColor[j].B + ).Change( + c => DashRGBColor[j] = new Color(DashRGBColor[j].R, DashRGBColor[j].B, (byte) c) + )), + (DashColorItem = new TextMenuExt.EnumSlider( + "AVALI_SKIN_COLOR".DialogOrKey(), + DashPreset[j] + ).Change(c => DashPreset[j] = c)), + } + ); + + DashRGBItems.Add(DashRItem); + DashRGBItems.Add(DashGItem); + DashRGBItems.Add(DashBItem); + DashPresetItems.Add(DashColorItem); + } + + menu.Add(ColorSubmenuItem); + } + + + // The following two settings DashRGB & DashPreset are not shown, but + // stored. They are set in the above submenu. + [SettingIgnore] + [YamlIgnore] + public List DashRGBColor { get; set; } = new List { + ColorUtil.SettingToColor(ColorChoice.BlueLight), + ColorUtil.SettingToColor(ColorChoice.Turquoise), + ColorUtil.SettingToColor(ColorChoice.Pink), + ColorUtil.SettingToColor(ColorChoice.BlueDark), + ColorUtil.SettingToColor(ColorChoice.Yellow), + ColorUtil.SettingToColor(ColorChoice.Red), + }; + // this will get (de)serialized from/into a yaml list + [SettingIgnore] + public IEnumerable DashRGB { + get => DashRGBColor.Select(c => ColorUtil.ColorToHex(c)); + set { + DashRGBColor = value.Select(c => ColorUtil.HexToColor(c)).ToList(); + } + } + // Stores submenu items that are enabled/disabled when colormode is RGB + private List DashRGBItems = new List(); + + + [SettingIgnore] + public List DashPreset { get; set; } = new List { + ColorChoice.BlueLight, + ColorChoice.Turquoise, + ColorChoice.Pink, + ColorChoice.BlueDark, + ColorChoice.Yellow, + ColorChoice.Red, + }; + // Stores submenu items that are enabled/disabled when colormode is preset + private List> DashPresetItems = new List>(); + + + + public bool EnableCelesteNet { get; set; } = true; + [YamlIgnore] + private TextMenu.Item EnableCelesteNetItem; + public void CreateEnableCelesteNetEntry(TextMenu menu, bool inGame) { + menu.Add(new TextMenu.SubHeader( + "modoptions_avaliskin_celestenet_header".DialogOrKey(), false + )); + + EnableCelesteNetItem = new TextMenu.OnOff( + "modoptions_avaliskin_celestenet".DialogOrKey(), + EnableCelesteNet + ).Change(enabled => { + EnableCelesteNet = enabled; + updateOptions(); + }); + menu.Add(EnableCelesteNetItem); + + if (!Everest.Loader.DependencyLoaded(AvaliSkinModule.CelesteNetMeta)) { + menu.Add(new TextMenu.SubHeader( + "modoptions_avaliskin_celestenet_nocelestenet".DialogOrKey(), false + )); + } + } + + + public enum SendReceive { + SendReceive, + Send, + Receive, + None + } + + public SendReceive CelesteNetSync { get; set; } = SendReceive.SendReceive; + [YamlIgnore] + private TextMenu.Item CelesteNetSyncItem; + public void CreateCelesteNetSyncEntry(TextMenu menu, bool inGame) { + CelesteNetSyncItem = new TextMenuExt.EnumerableSlider( + "modoptions_avaliskin_celestenetsync".DialogOrKey(), + ((SendReceive[]) Enum.GetValues(typeof(SendReceive))).Select( + variant => new KeyValuePair( + variant, + $"modoptions_avaliskin_celestenetsync_{variant.ToString()}".DialogOrKey() + ) + ), + CelesteNetSync + ).Change(opt => CelesteNetSync = opt); + menu.Add(CelesteNetSyncItem); + CelesteNetSyncItem.AddDescription( + menu, + "modoptions_avaliskin_celestenetsync_note".DialogOrKey() + ); + } + + public bool CelesteNetEveryoneHasSkin { get; set; } = false; + [YamlIgnore] + private TextMenu.Item CelesteNetEveryoneHasSkinItem; + public void CreateCelesteNetEveryoneHasSkinEntry(TextMenu menu, bool inGame) { + CelesteNetEveryoneHasSkinItem = new TextMenu.OnOff( + "modoptions_avaliskin_celesteneteveryonehasskin".DialogOrKey(), + CelesteNetEveryoneHasSkin + ).Change(enabled => CelesteNetEveryoneHasSkin = enabled); + menu.Add(CelesteNetEveryoneHasSkinItem); + CelesteNetEveryoneHasSkinItem.AddDescription( + menu, + "modoptions_avaliskin_celesteneteveryonehasskin_note".DialogOrKey() + ); + + // call update options once the entire menu is loaded: this item is + // added last + updateOptions(); + } + + #endregion + + public enum ColorChoice + { + Beige, + Black, + BlueDark, + BlueLight, + Brown, + Cyan, + GreenDark, + GreenLight, + GreyDark, + GreyLight, + Magenta, + Orange, + Pink, + Purple, + Red, + Turquoise, + White, + Yellow, + } + } + + +} diff --git a/SourceCode/CelesteNetAvaliComponent.cs b/SourceCode/CelesteNetAvaliComponent.cs new file mode 100644 index 0000000..ab938b9 --- /dev/null +++ b/SourceCode/CelesteNetAvaliComponent.cs @@ -0,0 +1,89 @@ +using Microsoft.Xna.Framework; + +using Celeste.Mod.CelesteNet; +using Celeste.Mod.CelesteNet.Client; +using Celeste.Mod.CelesteNet.Client.Entities; +using Celeste.Mod.CelesteNet.DataTypes; + +using ColorChoice = Celeste.Mod.AvaliSkin.AvaliSkinSettings.ColorChoice; +using ColorMode = Celeste.Mod.AvaliSkin.AvaliSkinSettings.ColorMode; +using SendReceive = Celeste.Mod.AvaliSkin.AvaliSkinSettings.SendReceive; + + +namespace Celeste.Mod.AvaliSkin { + public class CelesteNetAvaliComponent : CelesteNetGameComponent { + private static AvaliSkinSettings ModuleSettings => AvaliSkinModule.Settings; + public static CelesteNetAvaliComponent Instance; + + private CelesteNetClientContext Ctx; + + public CelesteNetAvaliComponent(CelesteNetClientContext context, Game game) : base(context, game) { + Instance = this; + Ctx = context; + } + + public void Handle(CelesteNetConnection con, DataReady ready) { + SendAvaliSkin(); + } + + public void SendAvaliSkin() { + if (Ctx.Client != null && Ctx.Client.PlayerInfo != null) { + if ( + ModuleSettings.CelesteNetSync == SendReceive.SendReceive + || ModuleSettings.CelesteNetSync == SendReceive.Send + ) { + Logger.Log(LogLevel.Info, "AvaliSkin", $"Sending updated DataPlayerAvaliSkin!"); + AvaliConfig config = AvaliSkinModule.PlayerConfig; + Ctx.Client.Send(new DataPlayerAvaliSkin(Ctx.Client.PlayerInfo, config)); + } + } + } + } + + + public class DataPlayerAvaliSkin : DataType { + public AvaliConfig Config; + public DataPlayerInfo Player; + + static DataPlayerAvaliSkin() { DataID = "avaliskin_skinconfig"; } + public DataPlayerAvaliSkin() {} + public DataPlayerAvaliSkin(DataPlayerInfo player, AvaliConfig config) { + this.Player = player; + this.Config = config; + } + + public override MetaType[] GenerateMeta(DataContext ctx) => new MetaType[] { + new MetaPlayerPrivateState(Player), + new MetaBoundRef(DataType.DataID, Player?.ID ?? uint.MaxValue, true) + }; + + public override void FixupMeta(DataContext ctx) { + Player = Get(ctx); + Get(ctx).ID = Player?.ID ?? uint.MaxValue; + } + + protected override void Read(CelesteNetBinaryReader reader) { + Config = new AvaliConfig { + Enabled = reader.ReadBoolean(), + ColorMode = ColorMode.ExternalDash + }; + } + + protected override void Write(CelesteNetBinaryWriter writer) { + writer.Write(Config.Enabled); + if (Config.Enabled) { + // byte lengthRGB = Math.Min(ManualRGB.Count, 5); + // writer.Write((byte) ManualRGB.Count); + // foreach (var color in ManualRGB) { + // write.WriteNoA(color); + // } + + // byte lengthPreset = Math.Min(ManualPreset.Count, 5); + // writer.Write((byte) ManualPreset.Count); + // foreach (var color in ManualPreset) { + // write.Write((byte) color); + // } + } + } + } +} diff --git a/SourceCode/Data.cs b/SourceCode/Data.cs new file mode 100644 index 0000000..43764d2 --- /dev/null +++ b/SourceCode/Data.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using Microsoft.Xna.Framework; + +using Celeste.Mod.CelesteNet.Client; +using Celeste.Mod.CelesteNet.Client.Entities; +using Celeste.Mod.CelesteNet.DataTypes; + +using ColorChoice = Celeste.Mod.AvaliSkin.AvaliSkinSettings.ColorChoice; +using ColorMode = Celeste.Mod.AvaliSkin.AvaliSkinSettings.ColorMode; +using SendReceive = Celeste.Mod.AvaliSkin.AvaliSkinSettings.SendReceive; + + +namespace Celeste.Mod.AvaliSkin { + public class AvaliConfig { + private static AvaliSkinSettings Settings => AvaliSkinModule.Settings; + + public bool Enabled; + public ColorMode ColorMode; + public List ManualPreset = new List(); + public List ManualRGB = new List(); + + + public bool IsEnabled(Player player) { + return Enabled; + } + + public bool IsEnabled(Ghost ghost) { + return Settings.EnableCelesteNet + && ( + (Enabled && ( + Settings.CelesteNetSync == SendReceive.SendReceive + || Settings.CelesteNetSync == SendReceive.Receive + )) + || Settings.CelesteNetEveryoneHasSkin + ); + } + + // Check sprite.Scene != null && sprite.Entity != null && sprite.Entity is Player player + // before calling this + public Color GetColor(Player player) { + int dashes = player.Dashes; + switch (this.ColorMode) { + case ColorMode.ExternalDash: + // Infrequently, it's possible for the player to momentarily have no hair. + if (player.Hair != null && player.Sprite.HairCount > 0) { + return player.Hair.GetHairColor(0); + } else { + // If the player does have no hair, then just default to + // whatever preset... this only happens momentarily anyways + return ColorUtil.SettingToColor( + ManualPreset[Math.Min(dashes, ManualPreset.Count - 1)] + ); + } + + case ColorMode.ManualRGB: + return ManualRGB[Math.Min(dashes, ManualRGB.Count - 1)]; + + case ColorMode.ManualPreset: default: + return ColorUtil.SettingToColor( + ManualPreset[Math.Min(dashes, ManualPreset.Count - 1)] + ); + } + } + + // Check sprite.Scene != null && sprite.Entity != null && sprite.Entity is Ghost + // before calling this + public Color GetColor(Ghost ghost) { + // Infrequently, it's possible for the ghost to momentarily have no hair. + if (ghost.Hair != null && ghost.Sprite.HairCount > 0) { + return ghost.Hair.GetHairColor(0); + } else { + // todo: wtf??? + return new Color(0, 0, 0); + } + } + } +} diff --git a/SourceCode/Libraries/CelesteNet.Client.dll b/SourceCode/Libraries/CelesteNet.Client.dll new file mode 100644 index 0000000..7e0110e Binary files /dev/null and b/SourceCode/Libraries/CelesteNet.Client.dll differ diff --git a/SourceCode/Libraries/CelesteNet.Shared.dll b/SourceCode/Libraries/CelesteNet.Shared.dll new file mode 100644 index 0000000..b678430 Binary files /dev/null and b/SourceCode/Libraries/CelesteNet.Shared.dll differ diff --git a/SourceCode/Makefile b/SourceCode/Makefile new file mode 100644 index 0000000..b76407b --- /dev/null +++ b/SourceCode/Makefile @@ -0,0 +1,41 @@ +# run make release to compile everything on linux (and maybe on macos too who knows) + +SHELL = /bin/bash +# .ONESHELL: +# .SHELLFLAGS=-ec + + +LIBS = -pkg:dotnet -r:MonoMod.Utils.dll -r:MonoMod.RuntimeDetour.dll \ +-r:Celeste.exe -r:MMHOOK_Celeste.dll -r:FNA.dll -r:Mono.Cecil.dll -r:YamlDotNet.dll -r:CelesteNet.Client.dll -r:CelesteNet.Shared.dll +# If this mod is setup in the Celeste/Mods/ directory, then we use the paths: +# - ../../../, which should be the Celeste/ directory, which contains most dlls +# - ./Libraries/, which contains the optional dependency CelesteNet.Client.dll +LIB_PATH = -lib:../../../ -lib:./Libraries/ + +BINARY=AvaliSkin.dll + + +.PHONY: default release strip +default: release + +# To compile code on linux you will need the mono runtime and mcs (the mono c# compiler), and that's it actually. +release: + mcs ${LIB_PATH} ${LIBS} *.cs -t:library -out:${BINARY} -optimize + cat ${BINARY} > ../${BINARY} + rm ${BINARY} + +# This strips out code from reference assemblies so only the symbols are +# present for linking. +strip: + for file in ./Libraries/*; do mono-cil-strip "$$file"; done + +# To compile the shaders, you will need: +# - wine64 to be installed, +# - the June 2010 legacy DirectX SDK needs to be unzipped under wine +# (download: https://www.microsoft.com/en-us/download/details.aspx?id=6812) +# - and you will need D3DCompiler_43.dll which you can grab from winetricks or +# if you have steam proton installed, you probably already have a copy of it +# *somewhere* on your system. +# Man microsoft software sucks... how is this company still alive +shader_c: + wine64 DXSDK/Utilities/bin/x64/fxc.exe "AvaliRecolor.fx" "/T" "fx_2_0" "/Fo" "AvaliRecolor.o" "/O3" diff --git a/SourceCode/Misc.cs b/SourceCode/Misc.cs new file mode 100644 index 0000000..78c3260 --- /dev/null +++ b/SourceCode/Misc.cs @@ -0,0 +1,56 @@ +using System.Collections.Generic; +using Microsoft.Xna.Framework; +using YamlDotNet.Serialization; + +using Monocle; + +using CC = Celeste.Mod.AvaliSkin.AvaliSkinSettings.ColorChoice; + + +namespace Celeste.Mod.AvaliSkin { + public static class Misc { + public static string DialogOrKey(this string key, Language lang = null) { + return key.DialogCleanOrNull(lang) ?? key; + } + } + + + // This is a "never/empty type" in C#. It is impossible to construct. + // Used in cases where a variable should never be initialized. + public enum Void {} + + + public class ColorUtil { + public static Color SettingToColor(CC col) { + switch (col) { + case CC.Beige: return new Color(162, 133, 92); + case CC.Black: return new Color(0, 0, 0); + case CC.BlueDark: return new Color(22, 42, 162); + case CC.BlueLight: return new Color(50, 151, 223); + case CC.Brown: return new Color(98, 75, 33); + case CC.Cyan: return new Color(26, 225, 225); + case CC.GreenDark: return new Color(41, 132, 49); + case CC.GreenLight: return new Color(59, 219, 47); + case CC.GreyDark: return new Color(60, 60, 60); + case CC.GreyLight: return new Color(168, 168, 168); + case CC.Magenta: return new Color(228, 14, 155); + case CC.Orange: return new Color(237, 147, 32); + case CC.Pink: return new Color(233, 106, 252); + case CC.Purple: return new Color(190, 23, 214); + case CC.Red: return new Color(238, 17, 34); + case CC.Turquoise: return new Color(26, 213, 137); + case CC.White: return new Color(255, 255, 255); + case CC.Yellow: return new Color(244, 226, 15); + default: return new Color(26, 213, 137); + } + } + + public static string ColorToHex(Color color) { + return $"#{color.R:x2}{color.G:x2}{color.B:x2}"; + } + + public static Color HexToColor(string hex) { + return Monocle.Calc.HexToColor(hex); + } + } +} diff --git a/everest.yaml b/everest.yaml index a7db767..33a43ef 100644 --- a/everest.yaml +++ b/everest.yaml @@ -3,4 +3,7 @@ DLL: AvaliSkin.dll Dependencies: - Name: Everest - Version: 1.3070.0 \ No newline at end of file + Version: 1.3070.0 + OptionalDependencies: + - Name: CelesteNet.Client + Version: 2.0.0