From ef39e00e2517f6e5faa3b75916f94617794dd0db Mon Sep 17 00:00:00 2001 From: larentoun <31931237+larentoun@users.noreply.github.com> Date: Thu, 18 Apr 2024 16:30:26 +0300 Subject: [PATCH] Revert "Nanomap (#5)" This reverts commit 08707dff4de58eb0dbacd6909928391f25cc1c46. --- .github/ISSUE_TEMPLATE/bug_report.md | 29 + .github/ISSUE_TEMPLATE/config.yml | 11 - .github/ISSUE_TEMPLATE/feature_request.md | 7 + .github/ISSUE_TEMPLATE/issue_report.yml | 89 - .github/workflows/ci_suite.yml | 1 - .github/workflows/render_nanomaps.yml | 46 - .github/workflows/translate_branch_update.yml | 37 - SQL/bandastation/bandastation_update.sql | 40 - SQL/bandastation/database_changelog.md | 54 - code/__HELPERS/text.dm | 8 +- code/_compile_options.dm | 2 +- code/modules/unit_tests/barsigns.dm | 4 +- config/bandastation/bandastation_config.txt | 7 - config/bandastation/tts_replacements.json | 180 - config/config.txt | 1 - config/dynamic.json | 34 +- config/game_options.txt | 31 +- dependencies.sh | 1 - interface/skin.dmf | 6 +- .../_defines220/_defines220.dm | 4 - .../_defines220/_defines220.dme | 14 - .../_defines220/code/defines/keybindings.dm | 4 - .../_defines220/code/defines/misc.dm | 6 - .../_defines220/code/defines/spans.dm | 1 - .../_defines220/code/defines/subsystems.dm | 18 - .../code/defines/text_to_speech.dm | 75 - .../_defines220/code/signals_atom.dm | 8 - .../code/signals_mob/signals_mob_ai.dm | 1 - .../code/signals_mob/signals_mob_carbon.dm | 1 - .../code/signals_mob/signals_mob_living.dm | 9 - .../code/signals_mob/signals_mob_main.dm | 1 - .../code/signals_mob/signals_mob_silicon.dm | 1 - .../code/signals_mob/signals_mob_simple.dm | 1 - .../_helpers220/_helpers220.dm | 4 - .../_helpers220/_helpers220.dme | 3 - .../_helpers220/code/unsorted.dm | 0 modular_bandastation/_modpack.dm | 17 - modular_bandastation/_modpacks.dm | 62 - .../_signals220/_signals220.dm | 4 - .../_signals220/_signals220.dme | 8 - .../code/signals_mob/signals_mob_ai.dm | 1 - .../code/signals_mob/signals_mob_carbon.dm | 1 - .../code/signals_mob/signals_mob_living.dm | 14 - .../code/signals_mob/signals_mob_main.dm | 1 - .../code/signals_mob/signals_mob_silicon.dm | 1 - .../code/signals_mob/signals_mob_simple.dm | 1 - .../_singletons/_singletons.dm | 4 - .../_singletons/_singletons.dme | 5 - .../_singletons/code/_defines.dm | 23 - .../_singletons/code/repository.dm | 147 - .../_singletons/code/singletons.dm | 11 - .../aesthetics/_aesthetics.dm | 4 - .../aesthetics/_aesthetics.dme | 19 - .../aesthetics/airlocks/code/airlock.dm | 28 - .../airlocks/code/airlock_assembly_types.dm | 190 - .../aesthetics/airlocks/code/airlock_types.dm | 216 - .../airlocks/icons/centcom/centcom.dmi | Bin 2024 -> 0 bytes .../airlocks/icons/centcom/overlays.dmi | Bin 6108 -> 0 bytes .../airlocks/icons/external/external.dmi | Bin 3357 -> 0 bytes .../airlocks/icons/external/overlays.dmi | Bin 6937 -> 0 bytes .../glass_large/atmospheric_glass_large.dmi | Bin 9564 -> 0 bytes .../icons/glass_large/command_glass_large.dmi | Bin 9189 -> 0 bytes .../glass_large/engineering_glass_large.dmi | Bin 9634 -> 0 bytes .../icons/glass_large/glass_large.dmi | Bin 8807 -> 0 bytes .../airlocks/icons/glass_large/overlays.dmi | Bin 45659 -> 0 bytes .../glass_large/security_glass_large.dmi | Bin 9258 -> 0 bytes .../icons/glass_large/supply_glass_large.dmi | Bin 15382 -> 0 bytes .../airlocks/icons/hatch/centcom.dmi | Bin 3074 -> 0 bytes .../airlocks/icons/hatch/maintenance.dmi | Bin 1797 -> 0 bytes .../airlocks/icons/hatch/overlays.dmi | Bin 9385 -> 0 bytes .../airlocks/icons/highsec/highsec.dmi | Bin 3205 -> 0 bytes .../airlocks/icons/highsec/overlays.dmi | Bin 8681 -> 0 bytes .../airlocks/icons/station/atmos.dmi | Bin 2083 -> 0 bytes .../airlocks/icons/station/bananium.dmi | Bin 2002 -> 0 bytes .../airlocks/icons/station/bathroom.dmi | Bin 1576 -> 0 bytes .../airlocks/icons/station/botany.dmi | Bin 2099 -> 0 bytes .../airlocks/icons/station/corporate.dmi | Bin 2097 -> 0 bytes .../airlocks/icons/station/diamond.dmi | Bin 2030 -> 0 bytes .../airlocks/icons/station/engineering.dmi | Bin 2110 -> 0 bytes .../aesthetics/airlocks/icons/station/eva.dmi | Bin 2181 -> 0 bytes .../airlocks/icons/station/freezer.dmi | Bin 1620 -> 0 bytes .../airlocks/icons/station/gold.dmi | Bin 3506 -> 0 bytes .../airlocks/icons/station/heads/cap.dmi | Bin 2174 -> 0 bytes .../airlocks/icons/station/heads/ce.dmi | Bin 2213 -> 0 bytes .../airlocks/icons/station/heads/cmo.dmi | Bin 2116 -> 0 bytes .../airlocks/icons/station/heads/command.dmi | Bin 3754 -> 0 bytes .../airlocks/icons/station/heads/hop.dmi | Bin 2147 -> 0 bytes .../airlocks/icons/station/heads/hos.dmi | Bin 2189 -> 0 bytes .../airlocks/icons/station/heads/qm.dmi | Bin 2126 -> 0 bytes .../airlocks/icons/station/heads/rd.dmi | Bin 2099 -> 0 bytes .../airlocks/icons/station/maintenance.dmi | Bin 2132 -> 0 bytes .../icons/station/maintenanceexternal.dmi | Bin 2156 -> 0 bytes .../airlocks/icons/station/medical.dmi | Bin 2141 -> 0 bytes .../airlocks/icons/station/mining.dmi | Bin 2141 -> 0 bytes .../airlocks/icons/station/overlays.dmi | Bin 7462 -> 0 bytes .../airlocks/icons/station/plasma.dmi | Bin 3522 -> 0 bytes .../airlocks/icons/station/psych.dmi | Bin 2120 -> 0 bytes .../airlocks/icons/station/public.dmi | Bin 2111 -> 0 bytes .../airlocks/icons/station/research.dmi | Bin 2166 -> 0 bytes .../airlocks/icons/station/sandstone.dmi | Bin 3363 -> 0 bytes .../airlocks/icons/station/science.dmi | Bin 2114 -> 0 bytes .../airlocks/icons/station/security.dmi | Bin 2123 -> 0 bytes .../airlocks/icons/station/service.dmi | Bin 2161 -> 0 bytes .../airlocks/icons/station/silver.dmi | Bin 3264 -> 0 bytes .../airlocks/icons/station/tranquilite.dmi | Bin 2025 -> 0 bytes .../airlocks/icons/station/uranium.dmi | Bin 3521 -> 0 bytes .../airlocks/icons/station/virology.dmi | Bin 2133 -> 0 bytes .../airlocks/icons/station/wood.dmi | Bin 2165 -> 0 bytes .../airlocks/icons/station2/glass.dmi | Bin 1934 -> 0 bytes .../airlocks/icons/station2/overlays.dmi | Bin 7704 -> 0 bytes .../aesthetics/airlocks/sound/bolts_down.ogg | Bin 17863 -> 0 bytes .../aesthetics/airlocks/sound/bolts_up.ogg | Bin 16881 -> 0 bytes .../aesthetics/airlocks/sound/close.ogg | Bin 22951 -> 0 bytes .../aesthetics/airlocks/sound/close_force.ogg | Bin 53621 -> 0 bytes .../aesthetics/airlocks/sound/open.ogg | Bin 12012 -> 0 bytes .../aesthetics/airlocks/sound/open_force.ogg | Bin 47159 -> 0 bytes .../aesthetics/floors/code/floors.dm | 2 - .../aesthetics/floors/icons/floors.dmi | Bin 378872 -> 0 bytes .../aesthetics/walls/code/walls.dm | 81 - .../aesthetics/walls/icons/false_walls.dmi | Bin 2603 -> 0 bytes .../walls/icons/reinforced_wall.dmi | Bin 5924 -> 0 bytes .../aesthetics/walls/icons/wall.dmi | Bin 3125 -> 0 bytes .../aesthetics/windoors/code/windoors.dm | 2 - .../aesthetics/windoors/icons/windoors.dmi | Bin 35123 -> 0 bytes .../windows/code/directional_windows.dm | 44 - .../windows/code/full_tile_windows.dm | 79 - .../aesthetics/windows/icons/directional.dmi | Bin 908 -> 0 bytes .../windows/icons/reinforced_window.dmi | Bin 4196 -> 0 bytes .../windows/icons/reinforced_window_edges.dmi | Bin 1770 -> 0 bytes .../aesthetics/windows/icons/spawners.dmi | Bin 3021 -> 0 bytes .../aesthetics/windows/icons/window.dmi | Bin 3767 -> 0 bytes .../aesthetics/windows/icons/window_edges.dmi | Bin 1879 -> 0 bytes modular_bandastation/ai_laws/_ai_laws.dm | 4 - modular_bandastation/ai_laws/_ai_laws.dme | 3 - .../ai_laws/code/nt_default.dm | 13 - modular_bandastation/barsigns/_barsigns.dm | 4 - modular_bandastation/barsigns/_barsigns.dme | 3 - .../barsigns/code/barsigns.dm | 53 - .../barsigns/icons/barsigns.dmi | Bin 409094 -> 0 bytes .../communication/_communication.dm | 4 - .../communication/_communication.dme | 6 - .../communication/code/LOOC.dm | 128 - .../code/_communication_defines.dm | 5 - .../communication/code/whisper.dm | 25 - .../code/~communication_defines.dm | 2 - .../crawl_speed/_crawl_speed.dm | 4 - .../crawl_speed/_crawl_speed.dme | 6 - .../crawl_speed/code/_crawl_speed_defines.dm | 2 - .../crawl_speed/code/crawl_speed_component.dm | 24 - .../crawl_speed/code/crawl_speed_mob.dm | 12 - .../crawl_speed/code/~crawl_speed_defines.dm | 2 - .../cyrillic_fixes/_cyrillic_fixes.dm | 4 - .../cyrillic_fixes/_cyrillic_fixes.dme | 3 - .../cyrillic_fixes/code/cyrillic_fixes.dm | 47 - .../database220/_database220.dm | 4 - .../database220/_database220.dme | 3 - .../database220/code/database220.dm | 28 - modular_bandastation/discord/_discord.dm | 4 - modular_bandastation/discord/_discord.dme | 3 - modular_bandastation/discord/code/discord.dm | 74 - .../emote_panel/_emote_panel.dm | 4 - .../emote_panel/_emote_panel.dme | 3 - .../emote_panel/code/emotes.dm | 632 --- modular_bandastation/events/_events.dm | 4 - modular_bandastation/events/_events.dme | 4 - modular_bandastation/events/code/events.dm | 2 - modular_bandastation/events/code/threat.dm | 8 - .../examine_panel/_examine_panel.dm | 4 - .../examine_panel/_examine_panel.dme | 7 - .../code/_examine_panel_defines.dm | 4 - .../code/examine_panel_component.dm | 121 - .../examine_panel/code/examine_panel_mob.dm | 19 - .../examine_panel/code/examine_panel_prefs.dm | 18 - .../code/~examine_panel_defines.dm | 2 - modular_bandastation/example/_example.dm | 16 - modular_bandastation/example/_example.dme | 3 - modular_bandastation/example/code/example.dm | 2 - modular_bandastation/gunhud/_gunhud.dm | 4 - modular_bandastation/gunhud/_gunhud.dme | 7 - .../gunhud/code/_gunhud_defines.dm | 5 - .../gunhud/code/gunhud_component.dm | 150 - .../gunhud/code/gunhud_hud.dm | 7 - .../gunhud/code/gunhud_screen.dm | 86 - .../gunhud/code/~gunhud_defines.dm | 5 - modular_bandastation/gunhud/icons/gun_hud.dmi | Bin 11023 -> 0 bytes .../keybinding/_keybinding.dm | 4 - .../keybinding/_keybinding.dme | 13 - modular_bandastation/keybinding/code/admin.dm | 49 - .../code/artificial_intelligence.dm | 4 - .../keybinding/code/carbon.dm | 14 - .../keybinding/code/client.dm | 14 - .../keybinding/code/communication.dm | 23 - modular_bandastation/keybinding/code/emote.dm | 4 - modular_bandastation/keybinding/code/human.dm | 29 - .../keybinding/code/living.dm | 44 - modular_bandastation/keybinding/code/mob.dm | 71 - .../keybinding/code/movement.dm | 29 - modular_bandastation/keybinding/code/robot.dm | 24 - modular_bandastation/modular_bandastation.dme | 25 - .../pixel_shift/_pixel_shift.dm | 4 - .../pixel_shift/_pixel_shift.dme | 6 - .../pixel_shift/code/layer_shift.dm | 36 - .../pixel_shift/code/pixel_shift_component.dm | 96 - .../pixel_shift/code/pixel_shift_keybind.dm | 17 - .../pixel_shift/code/pixel_shift_mob.dm | 5 - .../translations/_translations.dm | 4 - .../translations/_translations.dme | 4 - .../translations/code/moustache.dm | 37 - .../translations/code/restaurant_customer.dm | 177 - modular_bandastation/tts/_tts.dm | 4 - modular_bandastation/tts/_tts.dme | 28 - modular_bandastation/tts/code/SSHttp.dm | 86 - .../tts/code/_tts_rust_g_ss220.dm | 61 - .../tts/code/base_seeds/mobs/_base.dm | 13 - .../tts/code/base_seeds/mobs/alien.dm | 11 - .../tts/code/base_seeds/mobs/friendly.dm | 61 - .../tts/code/base_seeds/mobs/guardian.dm | 16 - .../tts/code/base_seeds/mobs/hostile.dm | 46 - .../tts/code/base_seeds/mobs/lavaland.dm | 34 - .../tts/code/base_seeds/mobs/other.dm | 22 - .../tts/code/base_seeds/mobs/pets.dm | 7 - .../tts/code/base_seeds/objs/objs.dm | 23 - modular_bandastation/tts/code/hear.dm | 11 - modular_bandastation/tts/code/numbers.dm | 161 - .../tts/code/providers/silero.dm | 49 - modular_bandastation/tts/code/seeds/base.dm | 7 - modular_bandastation/tts/code/seeds/silero.dm | 4863 ----------------- modular_bandastation/tts/code/shell.dm | 61 - .../tts/code/sound/radio_chatter.ogg | Bin 4031 -> 0 bytes .../tts/code/tts_component.dm | 158 - .../tts/code/tts_configuration.dm | 19 - .../tts/code/tts_preferences.dm | 55 - modular_bandastation/tts/code/tts_provider.dm | 32 - modular_bandastation/tts/code/tts_seed.dm | 42 - .../tts/code/tts_subsystem.dm | 490 -- modular_bandastation/tts/code/tts_vv.dm | 10 - .../tts/code/~undefs/~undefs.dm | 76 - .../whitelist220/_whitelist220.dm | 7 - .../whitelist220/_whitelist220.dme | 3 - .../whitelist220/code/whitelist220.dm | 75 - .../world_topics/_world_topics.dm | 4 - .../world_topics/_world_topics.dme | 3 - .../world_topics/code/world_topics.dm | 38 - rust_g_ss220.dll | Bin 8039936 -> 0 bytes tgstation.dme | 1 - .../packages/tgui-say/ChannelIterator.test.ts | 4 - tgui/packages/tgui-say/ChannelIterator.ts | 25 +- tgui/packages/tgui-say/styles/colors.scss | 4 - tgui/packages/tgui/components/NanoMap.js | 224 - tgui/packages/tgui/components/index.ts | 3 - .../packages/tgui/interfaces/ExaminePanel.tsx | 46 - .../CharacterPreferenceWindow.tsx | 19 - .../interfaces/PreferencesMenu/VoicePage.tsx | 264 - .../tgui/interfaces/PreferencesMenu/data.ts | 18 - .../features/base_bandastation.tsx | 19 - .../character_preferences/examine_panel.tsx | 14 - .../game_preferences/bandastation/looc.tsx | 9 - .../tgui/styles/components/NanoMap.scss | 35 - tgui/packages/tgui/styles/main.scss | 3 - tools/bandastation_check_grep.sh | 12 - tools/build/build.js | 1 - tools/ci/install_rust_g.sh | 4 - tools/nanomap_renderer/README.MD | 6 - tools/nanomap_renderer/nanomap-renderer | Bin 4073448 -> 0 bytes .../nanomap-renderer-invoker.sh | 24 - tools/tgs_scripts/InstallDeps.sh | 7 +- tools/tgs_scripts/PreCompile.sh | 19 - 267 files changed, 87 insertions(+), 11274 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md delete mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md delete mode 100644 .github/ISSUE_TEMPLATE/issue_report.yml delete mode 100644 .github/workflows/render_nanomaps.yml delete mode 100644 .github/workflows/translate_branch_update.yml delete mode 100644 SQL/bandastation/bandastation_update.sql delete mode 100644 SQL/bandastation/database_changelog.md delete mode 100644 config/bandastation/bandastation_config.txt delete mode 100644 config/bandastation/tts_replacements.json delete mode 100644 modular_bandastation/_defines220/_defines220.dm delete mode 100644 modular_bandastation/_defines220/_defines220.dme delete mode 100644 modular_bandastation/_defines220/code/defines/keybindings.dm delete mode 100644 modular_bandastation/_defines220/code/defines/misc.dm delete mode 100644 modular_bandastation/_defines220/code/defines/spans.dm delete mode 100644 modular_bandastation/_defines220/code/defines/subsystems.dm delete mode 100644 modular_bandastation/_defines220/code/defines/text_to_speech.dm delete mode 100644 modular_bandastation/_defines220/code/signals_atom.dm delete mode 100644 modular_bandastation/_defines220/code/signals_mob/signals_mob_ai.dm delete mode 100644 modular_bandastation/_defines220/code/signals_mob/signals_mob_carbon.dm delete mode 100644 modular_bandastation/_defines220/code/signals_mob/signals_mob_living.dm delete mode 100644 modular_bandastation/_defines220/code/signals_mob/signals_mob_main.dm delete mode 100644 modular_bandastation/_defines220/code/signals_mob/signals_mob_silicon.dm delete mode 100644 modular_bandastation/_defines220/code/signals_mob/signals_mob_simple.dm delete mode 100644 modular_bandastation/_helpers220/_helpers220.dm delete mode 100644 modular_bandastation/_helpers220/_helpers220.dme delete mode 100644 modular_bandastation/_helpers220/code/unsorted.dm delete mode 100644 modular_bandastation/_modpack.dm delete mode 100644 modular_bandastation/_modpacks.dm delete mode 100644 modular_bandastation/_signals220/_signals220.dm delete mode 100644 modular_bandastation/_signals220/_signals220.dme delete mode 100644 modular_bandastation/_signals220/code/signals_mob/signals_mob_ai.dm delete mode 100644 modular_bandastation/_signals220/code/signals_mob/signals_mob_carbon.dm delete mode 100644 modular_bandastation/_signals220/code/signals_mob/signals_mob_living.dm delete mode 100644 modular_bandastation/_signals220/code/signals_mob/signals_mob_main.dm delete mode 100644 modular_bandastation/_signals220/code/signals_mob/signals_mob_silicon.dm delete mode 100644 modular_bandastation/_signals220/code/signals_mob/signals_mob_simple.dm delete mode 100644 modular_bandastation/_singletons/_singletons.dm delete mode 100644 modular_bandastation/_singletons/_singletons.dme delete mode 100644 modular_bandastation/_singletons/code/_defines.dm delete mode 100644 modular_bandastation/_singletons/code/repository.dm delete mode 100644 modular_bandastation/_singletons/code/singletons.dm delete mode 100644 modular_bandastation/aesthetics/_aesthetics.dm delete mode 100644 modular_bandastation/aesthetics/_aesthetics.dme delete mode 100644 modular_bandastation/aesthetics/airlocks/code/airlock.dm delete mode 100644 modular_bandastation/aesthetics/airlocks/code/airlock_assembly_types.dm delete mode 100644 modular_bandastation/aesthetics/airlocks/code/airlock_types.dm delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/centcom/centcom.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/centcom/overlays.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/external/external.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/external/overlays.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/glass_large/atmospheric_glass_large.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/glass_large/command_glass_large.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/glass_large/engineering_glass_large.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/glass_large/glass_large.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/glass_large/overlays.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/glass_large/security_glass_large.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/glass_large/supply_glass_large.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/hatch/centcom.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/hatch/maintenance.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/hatch/overlays.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/highsec/highsec.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/highsec/overlays.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/atmos.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/bananium.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/bathroom.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/botany.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/corporate.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/diamond.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/engineering.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/eva.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/freezer.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/gold.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/heads/cap.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/heads/ce.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/heads/cmo.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/heads/command.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/heads/hop.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/heads/hos.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/heads/qm.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/heads/rd.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/maintenance.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/maintenanceexternal.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/medical.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/mining.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/overlays.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/plasma.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/psych.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/public.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/research.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/sandstone.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/science.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/security.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/service.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/silver.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/tranquilite.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/uranium.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/virology.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station/wood.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station2/glass.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/icons/station2/overlays.dmi delete mode 100644 modular_bandastation/aesthetics/airlocks/sound/bolts_down.ogg delete mode 100644 modular_bandastation/aesthetics/airlocks/sound/bolts_up.ogg delete mode 100644 modular_bandastation/aesthetics/airlocks/sound/close.ogg delete mode 100644 modular_bandastation/aesthetics/airlocks/sound/close_force.ogg delete mode 100644 modular_bandastation/aesthetics/airlocks/sound/open.ogg delete mode 100644 modular_bandastation/aesthetics/airlocks/sound/open_force.ogg delete mode 100644 modular_bandastation/aesthetics/floors/code/floors.dm delete mode 100644 modular_bandastation/aesthetics/floors/icons/floors.dmi delete mode 100644 modular_bandastation/aesthetics/walls/code/walls.dm delete mode 100644 modular_bandastation/aesthetics/walls/icons/false_walls.dmi delete mode 100644 modular_bandastation/aesthetics/walls/icons/reinforced_wall.dmi delete mode 100644 modular_bandastation/aesthetics/walls/icons/wall.dmi delete mode 100644 modular_bandastation/aesthetics/windoors/code/windoors.dm delete mode 100644 modular_bandastation/aesthetics/windoors/icons/windoors.dmi delete mode 100644 modular_bandastation/aesthetics/windows/code/directional_windows.dm delete mode 100644 modular_bandastation/aesthetics/windows/code/full_tile_windows.dm delete mode 100644 modular_bandastation/aesthetics/windows/icons/directional.dmi delete mode 100644 modular_bandastation/aesthetics/windows/icons/reinforced_window.dmi delete mode 100644 modular_bandastation/aesthetics/windows/icons/reinforced_window_edges.dmi delete mode 100644 modular_bandastation/aesthetics/windows/icons/spawners.dmi delete mode 100644 modular_bandastation/aesthetics/windows/icons/window.dmi delete mode 100644 modular_bandastation/aesthetics/windows/icons/window_edges.dmi delete mode 100644 modular_bandastation/ai_laws/_ai_laws.dm delete mode 100644 modular_bandastation/ai_laws/_ai_laws.dme delete mode 100644 modular_bandastation/ai_laws/code/nt_default.dm delete mode 100644 modular_bandastation/barsigns/_barsigns.dm delete mode 100644 modular_bandastation/barsigns/_barsigns.dme delete mode 100644 modular_bandastation/barsigns/code/barsigns.dm delete mode 100644 modular_bandastation/barsigns/icons/barsigns.dmi delete mode 100644 modular_bandastation/communication/_communication.dm delete mode 100644 modular_bandastation/communication/_communication.dme delete mode 100644 modular_bandastation/communication/code/LOOC.dm delete mode 100644 modular_bandastation/communication/code/_communication_defines.dm delete mode 100644 modular_bandastation/communication/code/whisper.dm delete mode 100644 modular_bandastation/communication/code/~communication_defines.dm delete mode 100644 modular_bandastation/crawl_speed/_crawl_speed.dm delete mode 100644 modular_bandastation/crawl_speed/_crawl_speed.dme delete mode 100644 modular_bandastation/crawl_speed/code/_crawl_speed_defines.dm delete mode 100644 modular_bandastation/crawl_speed/code/crawl_speed_component.dm delete mode 100644 modular_bandastation/crawl_speed/code/crawl_speed_mob.dm delete mode 100644 modular_bandastation/crawl_speed/code/~crawl_speed_defines.dm delete mode 100644 modular_bandastation/cyrillic_fixes/_cyrillic_fixes.dm delete mode 100644 modular_bandastation/cyrillic_fixes/_cyrillic_fixes.dme delete mode 100644 modular_bandastation/cyrillic_fixes/code/cyrillic_fixes.dm delete mode 100644 modular_bandastation/database220/_database220.dm delete mode 100644 modular_bandastation/database220/_database220.dme delete mode 100644 modular_bandastation/database220/code/database220.dm delete mode 100644 modular_bandastation/discord/_discord.dm delete mode 100644 modular_bandastation/discord/_discord.dme delete mode 100644 modular_bandastation/discord/code/discord.dm delete mode 100644 modular_bandastation/emote_panel/_emote_panel.dm delete mode 100644 modular_bandastation/emote_panel/_emote_panel.dme delete mode 100644 modular_bandastation/emote_panel/code/emotes.dm delete mode 100644 modular_bandastation/events/_events.dm delete mode 100644 modular_bandastation/events/_events.dme delete mode 100644 modular_bandastation/events/code/events.dm delete mode 100644 modular_bandastation/events/code/threat.dm delete mode 100644 modular_bandastation/examine_panel/_examine_panel.dm delete mode 100644 modular_bandastation/examine_panel/_examine_panel.dme delete mode 100644 modular_bandastation/examine_panel/code/_examine_panel_defines.dm delete mode 100644 modular_bandastation/examine_panel/code/examine_panel_component.dm delete mode 100644 modular_bandastation/examine_panel/code/examine_panel_mob.dm delete mode 100644 modular_bandastation/examine_panel/code/examine_panel_prefs.dm delete mode 100644 modular_bandastation/examine_panel/code/~examine_panel_defines.dm delete mode 100644 modular_bandastation/example/_example.dm delete mode 100644 modular_bandastation/example/_example.dme delete mode 100644 modular_bandastation/example/code/example.dm delete mode 100644 modular_bandastation/gunhud/_gunhud.dm delete mode 100644 modular_bandastation/gunhud/_gunhud.dme delete mode 100644 modular_bandastation/gunhud/code/_gunhud_defines.dm delete mode 100644 modular_bandastation/gunhud/code/gunhud_component.dm delete mode 100644 modular_bandastation/gunhud/code/gunhud_hud.dm delete mode 100644 modular_bandastation/gunhud/code/gunhud_screen.dm delete mode 100644 modular_bandastation/gunhud/code/~gunhud_defines.dm delete mode 100644 modular_bandastation/gunhud/icons/gun_hud.dmi delete mode 100644 modular_bandastation/keybinding/_keybinding.dm delete mode 100644 modular_bandastation/keybinding/_keybinding.dme delete mode 100644 modular_bandastation/keybinding/code/admin.dm delete mode 100644 modular_bandastation/keybinding/code/artificial_intelligence.dm delete mode 100644 modular_bandastation/keybinding/code/carbon.dm delete mode 100644 modular_bandastation/keybinding/code/client.dm delete mode 100644 modular_bandastation/keybinding/code/communication.dm delete mode 100644 modular_bandastation/keybinding/code/emote.dm delete mode 100644 modular_bandastation/keybinding/code/human.dm delete mode 100644 modular_bandastation/keybinding/code/living.dm delete mode 100644 modular_bandastation/keybinding/code/mob.dm delete mode 100644 modular_bandastation/keybinding/code/movement.dm delete mode 100644 modular_bandastation/keybinding/code/robot.dm delete mode 100644 modular_bandastation/modular_bandastation.dme delete mode 100644 modular_bandastation/pixel_shift/_pixel_shift.dm delete mode 100644 modular_bandastation/pixel_shift/_pixel_shift.dme delete mode 100644 modular_bandastation/pixel_shift/code/layer_shift.dm delete mode 100644 modular_bandastation/pixel_shift/code/pixel_shift_component.dm delete mode 100644 modular_bandastation/pixel_shift/code/pixel_shift_keybind.dm delete mode 100644 modular_bandastation/pixel_shift/code/pixel_shift_mob.dm delete mode 100644 modular_bandastation/translations/_translations.dm delete mode 100644 modular_bandastation/translations/_translations.dme delete mode 100644 modular_bandastation/translations/code/moustache.dm delete mode 100644 modular_bandastation/translations/code/restaurant_customer.dm delete mode 100644 modular_bandastation/tts/_tts.dm delete mode 100644 modular_bandastation/tts/_tts.dme delete mode 100644 modular_bandastation/tts/code/SSHttp.dm delete mode 100644 modular_bandastation/tts/code/_tts_rust_g_ss220.dm delete mode 100644 modular_bandastation/tts/code/base_seeds/mobs/_base.dm delete mode 100644 modular_bandastation/tts/code/base_seeds/mobs/alien.dm delete mode 100644 modular_bandastation/tts/code/base_seeds/mobs/friendly.dm delete mode 100644 modular_bandastation/tts/code/base_seeds/mobs/guardian.dm delete mode 100644 modular_bandastation/tts/code/base_seeds/mobs/hostile.dm delete mode 100644 modular_bandastation/tts/code/base_seeds/mobs/lavaland.dm delete mode 100644 modular_bandastation/tts/code/base_seeds/mobs/other.dm delete mode 100644 modular_bandastation/tts/code/base_seeds/mobs/pets.dm delete mode 100644 modular_bandastation/tts/code/base_seeds/objs/objs.dm delete mode 100644 modular_bandastation/tts/code/hear.dm delete mode 100644 modular_bandastation/tts/code/numbers.dm delete mode 100644 modular_bandastation/tts/code/providers/silero.dm delete mode 100644 modular_bandastation/tts/code/seeds/base.dm delete mode 100644 modular_bandastation/tts/code/seeds/silero.dm delete mode 100644 modular_bandastation/tts/code/shell.dm delete mode 100644 modular_bandastation/tts/code/sound/radio_chatter.ogg delete mode 100644 modular_bandastation/tts/code/tts_component.dm delete mode 100644 modular_bandastation/tts/code/tts_configuration.dm delete mode 100644 modular_bandastation/tts/code/tts_preferences.dm delete mode 100644 modular_bandastation/tts/code/tts_provider.dm delete mode 100644 modular_bandastation/tts/code/tts_seed.dm delete mode 100644 modular_bandastation/tts/code/tts_subsystem.dm delete mode 100644 modular_bandastation/tts/code/tts_vv.dm delete mode 100644 modular_bandastation/tts/code/~undefs/~undefs.dm delete mode 100644 modular_bandastation/whitelist220/_whitelist220.dm delete mode 100644 modular_bandastation/whitelist220/_whitelist220.dme delete mode 100644 modular_bandastation/whitelist220/code/whitelist220.dm delete mode 100644 modular_bandastation/world_topics/_world_topics.dm delete mode 100644 modular_bandastation/world_topics/_world_topics.dme delete mode 100644 modular_bandastation/world_topics/code/world_topics.dm delete mode 100644 rust_g_ss220.dll delete mode 100644 tgui/packages/tgui/components/NanoMap.js delete mode 100644 tgui/packages/tgui/interfaces/ExaminePanel.tsx delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/VoicePage.tsx delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/base_bandastation.tsx delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/examine_panel.tsx delete mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/bandastation/looc.tsx delete mode 100644 tgui/packages/tgui/styles/components/NanoMap.scss delete mode 100644 tools/bandastation_check_grep.sh delete mode 100644 tools/nanomap_renderer/README.MD delete mode 100644 tools/nanomap_renderer/nanomap-renderer delete mode 100644 tools/nanomap_renderer/nanomap-renderer-invoker.sh diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000000000..904de8b36c9a9 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,29 @@ +--- +name: Bug report +about: Create a report to help reproduce and fix the issue +--- + + +## Issue Summary + + + +## Round ID: + + + + + +## Testmerges: + + + +## Reproduction: + + + + + + diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index c1650b6160286..0000000000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,11 +0,0 @@ -#DOCS -#https://docs.github.com/en/github-ae@latest/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository#configuring-the-template-chooser -# -blank_issues_enabled: true -contact_links: - - name: Feature Request - url: https://discord.com/channels/1097181193939730453/1181261198096875670 - about: Запросы новых фич следует оставлять на форуме ss13-трекер в дискорде. - - name: Exploit Reports - url: https://github.com/ss220club/Paradise-SS220/security - about: Критические баги, которые могут быть использованы со злыми намерениями, следует оставлять по ссылке. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000000000..11687283df4c7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,7 @@ +--- +name: Feature request +about: Suggest an idea for this project + +--- + +Feature requests are not handled in the repository. The best place to discuss these ideas would be on the /tg/station 13 forums here: https://tgstation13.org/phpBB/viewforum.php?f=9&sid=5153c1c704a4fb1006bf7a265e45e03f diff --git a/.github/ISSUE_TEMPLATE/issue_report.yml b/.github/ISSUE_TEMPLATE/issue_report.yml deleted file mode 100644 index f1ee1a82cef48..0000000000000 --- a/.github/ISSUE_TEMPLATE/issue_report.yml +++ /dev/null @@ -1,89 +0,0 @@ -#For more details -# https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-issue-forms -# https://docs.gitea.com/1.19/usage/issue-pull-request-templates -#Be sure to check the docs -# -#Format -#- type: | markdown | textarea | input | checkboxes | -# id: | just an id, no actual relevance | -# attributes: -# label: | Box title | -# description: | Box small text - Description | -# -name: "Issue Report" -#title: "[Bug]: " | if you want to have a have it automatically say [Bug] when they start the form -description: "Доложите о проблемах или багах, что бы мы могли их исправить." -#labels: "Баг" - -body: - - type: markdown - attributes: - value: Спасибо за оставленный отчёт! Не забудьте дать ему соответствующее проблеме название для упрощения работы другим. - - - type: input - id: version - attributes: - label: BYOND Version - description: "На какой версии BYOND встретился баг. (Если уверены, что не связано, можно пропустить)" - - - type: textarea - id: description - attributes: - label: Описание проблемы - description: В чем состоит суть проблемы? (Обязательное поле) - placeholder: Я сел на стул, от чего взорвался, а мой мозг оказался в душе на ЦК! - validations: - required: true - - - type: textarea - id: what-expected - attributes: - label: Что должно было произойти? - description: Почему вы считаете это проблемой? - placeholder: Я ожидал, что я просто сяду на стул и буду сидеть. - - - type: textarea - id: what-happened - attributes: - label: Что случилось вместо этого? - description: Как произошедшее отличается от ваших ожиданий? - placeholder: Я умер и оказался на ЦК. - - - type: textarea - id: why-bad - attributes: - label: Почему это плохо/Какие последствия? - description: Почему вы считаете эту проблему значительной? - placeholder: Игроки должны иметь возможность сидеть на стульях, не взрываясь. - - - type: textarea - id: how-to-reproduce - attributes: - label: Шаги для повторения проблемы. - description: Самая важная часть. Опишите ВСЁ, что вы делали, что бы встретиться с проблемой. (Обязательное поле) - placeholder: Нашел стул, сел, взорвался. - validations: - required: true - - - type: textarea - id: when-problem-start - attributes: - label: Когда проблема началась? - description: Если отчет связан с тем, что раньше работало иначе, опишите последний раз, когда механика работала корректно. (Обязательное поле) - placeholder: Я мог садиться на стулья без проблем неделю назад, так что примерно тогда. - validations: - required: true - - - type: textarea - id: extra-information - attributes: - label: Дополнительная информация - description: Всё, что вы считаете важным/относящимся к проблеме. - placeholder: Я думаю, что проблема начала появляться после этого PR https://github.com/ss220club/Paradise-SS220/pull/583 - - - type: textarea - id: logs - attributes: - label: Связанные логи - description: Пожалуйста, предоставьте связанные логи или рантаймы, если имеете к ним доступ. (Лучше цензурить IP-адреса) - render: DM diff --git a/.github/workflows/ci_suite.yml b/.github/workflows/ci_suite.yml index 74bdeb94edc99..f514e52b21fdc 100644 --- a/.github/workflows/ci_suite.yml +++ b/.github/workflows/ci_suite.yml @@ -86,7 +86,6 @@ jobs: - name: Ticked File Enforcement if: steps.linter-setup.conclusion == 'success' && !cancelled() run: | - bash tools/bandastation_check_grep.sh # BANDASTATION EDIT ADDITION - checking modular_bandastation code tools/bootstrap/python tools/ticked_file_enforcement/ticked_file_enforcement.py < tools/ticked_file_enforcement/schemas/tgstation_dme.json tools/bootstrap/python tools/ticked_file_enforcement/ticked_file_enforcement.py < tools/ticked_file_enforcement/schemas/unit_tests.json - name: Check Define Sanity diff --git a/.github/workflows/render_nanomaps.yml b/.github/workflows/render_nanomaps.yml deleted file mode 100644 index 532cfa7f169c7..0000000000000 --- a/.github/workflows/render_nanomaps.yml +++ /dev/null @@ -1,46 +0,0 @@ -# GitHub action to autorender nanomaps outside the game -# This kills off the awful verb we have that takes a full 50 seconds and hangs the whole server -# The file names and locations are VERY important here -# DO NOT EDIT THIS UNLESS YOU KNOW WHAT YOU ARE DOING -# -aa -name: 'Render Nanomaps' -on: - schedule: - - cron: "0 0 * * *" - workflow_dispatch: - -jobs: - generate_maps: - name: 'Generate NanoMaps' - runs-on: ubuntu-22.04 - steps: - - id: create_token - uses: actions/create-github-app-token@v1 - with: - app-id: ${{ secrets.APP_ID }} - private-key: ${{ secrets.PRIVATE_KEY }} - - - run: echo "GH_TOKEN=${{ steps.create_token.outputs.token }}" >> "$GITHUB_ENV" - - - name: 'Update Branch' - uses: actions/checkout@v4 - with: - token: ${{ steps.create_token.outputs.token }} - - - name: Branch - run: | - git branch -f nanomap-render - git checkout nanomap-render - git reset --hard origin/master - - - name: 'Generate Maps' - run: './tools/nanomap_renderer/nanomap-renderer-invoker.sh' - - - name: 'Commit Maps and open PR' - run: | - git config --local user.email "action@github.com" - git config --local user.name "NanoMap Generation" - git pull origin master - git commit -m "NanoMap Auto-Update (`date`)" -a || true - git push -f -u origin nanomap-render - gh pr create -t "Automatic NanoMap Update" -b "This pull request updates the server NanoMaps. Please review the diff images before merging." -l "NanoMaps" -H "nanomap-render" -B "master" diff --git a/.github/workflows/translate_branch_update.yml b/.github/workflows/translate_branch_update.yml deleted file mode 100644 index 2fb5ee7c002ce..0000000000000 --- a/.github/workflows/translate_branch_update.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Update translation branch - -on: - workflow_dispatch: - push: - branches: ['master'] - -concurrency: - group: translation - cancel-in-progress: false - -jobs: - update_translation: - runs-on: ubuntu-latest - permissions: - contents: write - pull-requests: write - name: 'Update old translation' - - steps: - - name: 'Update Branch' - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: 'Git config' - run: | - git config --local user.email "action@github.com" - git config --local user.name "SS220Manager" - - - name: Merge with their incoming - run: | - git checkout origin/translate - git merge origin/master --strategy-option theirs - git push origin HEAD:translate - - diff --git a/SQL/bandastation/bandastation_update.sql b/SQL/bandastation/bandastation_update.sql deleted file mode 100644 index d3883dc403d45..0000000000000 --- a/SQL/bandastation/bandastation_update.sql +++ /dev/null @@ -1,40 +0,0 @@ --- --- Table structure for table `schema_revision_220` --- -DROP TABLE IF EXISTS `schema_revision_220`; -CREATE TABLE `schema_revision_220` ( - `major` TINYINT(3) unsigned NOT NULL, - `minor` TINYINT(3) unsigned NOT NULL, - `date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - PRIMARY KEY (`major`, `minor`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; - --- --- Table structure for table `ckey_whitelist` --- -DROP TABLE IF EXISTS `ckey_whitelist`; -CREATE TABLE `ckey_whitelist` ( - `id` INT(11) NOT NULL AUTO_INCREMENT, - `date` DATETIME DEFAULT now() NOT NULL, - `ckey` VARCHAR(32) NOT NULL, - `adminwho` VARCHAR(32) NOT NULL, - `port` INT(5) UNSIGNED NOT NULL, - `date_start` DATETIME DEFAULT now() NOT NULL, - `date_end` DATETIME NULL, - `is_valid` BOOLEAN DEFAULT true NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - --- --- Table structure for table `admin_wl` --- -DROP TABLE IF EXISTS `admin_wl`; -CREATE TABLE `admin_wl` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `ckey` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, - `admin_rank` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'Administrator', - `level` int(2) NOT NULL DEFAULT '0', - `flags` int(16) NOT NULL DEFAULT '0', - PRIMARY KEY (`id`), - KEY `ckey` (`ckey`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/SQL/bandastation/database_changelog.md b/SQL/bandastation/database_changelog.md deleted file mode 100644 index 74e7053c6a622..0000000000000 --- a/SQL/bandastation/database_changelog.md +++ /dev/null @@ -1,54 +0,0 @@ -Any time you make a change to the schema files, remember to increment the database schema version. Generally increment the minor number, major should be reserved for significant changes to the schema. Both values go up to 255. - -Make sure to also update `DB_MAJOR_VERSION_220` and `DB_MINOR_VERSION_220`, which can be found in `code/modular_bandastation/_defines220/code/defines/subsystems.dm`. - -The latest database version is 1.1; The query to update the schema revision table is: - -```sql -INSERT INTO `schema_revision_220` (`major`, `minor`) VALUES (1, 1); -``` -or - -```sql -INSERT INTO `SS13_schema_revision_220` (`major`, `minor`) VALUES (1, 1); -``` - ------------------------------------------------------ -Version 1.1, 17 April 2024, by larentoun -Created the tables: schema_revision220, ckey_whitelist, admin_wl - -```sql -CREATE TABLE `schema_revision220` ( - `major` TINYINT(3) unsigned NOT NULL, - `minor` TINYINT(3) unsigned NOT NULL, - `date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - PRIMARY KEY (`major`, `minor`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -``` - -```sql -CREATE TABLE `ckey_whitelist` ( - `id` INT(11) NOT NULL AUTO_INCREMENT, - `date` DATETIME DEFAULT now() NOT NULL, - `ckey` VARCHAR(32) NOT NULL, - `adminwho` VARCHAR(32) NOT NULL, - `port` INT(5) UNSIGNED NOT NULL, - `date_start` DATETIME DEFAULT now() NOT NULL, - `date_end` DATETIME NULL, - `is_valid` BOOLEAN DEFAULT true NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -``` - -```sql -CREATE TABLE `admin_wl` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `ckey` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, - `admin_rank` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'Administrator', - `level` int(2) NOT NULL DEFAULT '0', - `flags` int(16) NOT NULL DEFAULT '0', - PRIMARY KEY (`id`), - KEY `ckey` (`ckey`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -``` ------------------------------------------------------ diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index b0d38a624fb83..40915672ef960 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -92,7 +92,7 @@ if(ascii_only) if(length(text) > max_length) return null - var/static/regex/non_ascii = regex(@"[^\x20-\x7E\t\n\u0400-\u04FF]") // BANDASTATION EDIT: Allow cyrillic symbols + var/static/regex/non_ascii = regex(@"[^\x20-\x7E\t\n]") if(non_ascii.Find(text)) return null else if(length_char(text) > max_length) @@ -178,12 +178,12 @@ switch(text2ascii(char)) // A .. Z - if(65 to 90, 1040 to 1071, 1025) //Uppercase Letters //SS220 EDIT CHANGE - Cyrillic Fixes + if(65 to 90) //Uppercase Letters number_of_alphanumeric++ last_char_group = LETTERS_DETECTED // a .. z - if(97 to 122, 1072 to 1103, 1105) //Lowercase Letters //SS220 EDIT CHANGE - Cyrillic Fixes + if(97 to 122) //Lowercase Letters if(last_char_group == NO_CHARS_DETECTED || last_char_group == SPACES_DETECTED || cap_after_symbols && last_char_group == SYMBOLS_DETECTED) //start of a word char = uppertext(char) number_of_alphanumeric++ @@ -1177,7 +1177,7 @@ GLOBAL_LIST_INIT(binary, list("0","1")) /// Removes all non-alphanumerics from the text, keep in mind this can lead to id conflicts /proc/sanitize_css_class_name(name) - var/static/regex/regex = new(@"[^a-zA-Z0-9а-яА-ЯёЁ]","g") // BANDASTATION EDIT: Add Cyrillic support for this proc + var/static/regex/regex = new(@"[^a-zA-Z0-9]","g") return replacetext(name, regex, "") /// Converts a semver string into a list of numbers diff --git a/code/_compile_options.dm b/code/_compile_options.dm index cd274c26deeaa..0d534fac9a36c 100644 --- a/code/_compile_options.dm +++ b/code/_compile_options.dm @@ -98,7 +98,7 @@ #endif #ifndef PRELOAD_RSC //set to: -#define PRELOAD_RSC 0 // 0 to allow using external resources or on-demand behaviour; BANDASTATION EDIT - Original: 1 +#define PRELOAD_RSC 1 // 0 to allow using external resources or on-demand behaviour; #endif // 1 to use the default behaviour; // 2 for preloading absolutely everything; diff --git a/code/modules/unit_tests/barsigns.dm b/code/modules/unit_tests/barsigns.dm index 0ba46441957b3..d1242da3d5769 100644 --- a/code/modules/unit_tests/barsigns.dm +++ b/code/modules/unit_tests/barsigns.dm @@ -7,14 +7,12 @@ var/obj/machinery/barsign_type = /obj/machinery/barsign var/icon/barsign_icon = initial(barsign_type.icon) var/list/barsign_icon_states = icon_states(barsign_icon) - var/icon/barsign_icon_ss220 = 'modular_bandastation/barsigns/icons/barsigns.dmi' // BANDASTATION EDIT Barsigns - var/list/barsign_icon_states_ss220 = icon_states(barsign_icon_ss220) // Check every datum real bar sign for(var/sign_type in (subtypesof(/datum/barsign) - /datum/barsign/hiddensigns)) var/datum/barsign/sign = new sign_type() - if(!(sign.icon_state in barsign_icon_states) && !(sign.icon_state in barsign_icon_states_ss220)) // BANDASTATION EDIT Barsigns + if(!(sign.icon_state in barsign_icon_states)) TEST_FAIL("Icon state for [sign_type] does not exist in [barsign_icon].") /** diff --git a/config/bandastation/bandastation_config.txt b/config/bandastation/bandastation_config.txt deleted file mode 100644 index de1681f429ba1..0000000000000 --- a/config/bandastation/bandastation_config.txt +++ /dev/null @@ -1,7 +0,0 @@ -## Text-to-speech -#TTS_TOKEN_SILERO mytoken -#TTS_ENABLED -#TTS_CACHE_ENABLED -#TTS_API_URL_SILERO - -#WHITELIST220 diff --git a/config/bandastation/tts_replacements.json b/config/bandastation/tts_replacements.json deleted file mode 100644 index d62e9b1a7be9d..0000000000000 --- a/config/bandastation/tts_replacements.json +++ /dev/null @@ -1,180 +0,0 @@ -{ - "tts_acronym_replacements": { - "нт": "Эн Тэ", - "смо": "Эс Мэ О", - "гп": "Гэ Пэ", - "рд": "Эр Дэ", - "гсб": "Гэ Эс Бэ", - "срп": "Эс Эр Пэ", - "цк": "Цэ Каа", - "рнд": "Эр Эн Дэ", - "сб": "Эс Бэ", - "рцд": "Эр Цэ Дэ", - "брпд": "Бэ Эр Пэ Дэ", - "рпд": "Эр Пэ Дэ", - "рпед": "Эр Пед", - "тсф": "Тэ Эс Эф", - "срт": "Эс Эр Тэ", - "обр": "О Бэ Эр", - "кпк": "Кэ Пэ Каа", - "пда": "Пэ Дэ А", - "id": "Ай Ди", - "мщ": "Эм Ще", - "вт": "Вэ Тэ", - "ерп": "Йе Эр Пэ", - "се": "Эс Йе", - "апц": "А Пэ Цэ", - "лкп": "Эл Ка Пэ", - "см": "Эс Эм", - "ека": "Йе Ка", - "ка": "Кэ А", - "бса": "Бэ Эс Аа", - "днк": "Дэ Эн Ка", - "тк": "Тэ Ка", - "бфл": "Бэ Эф Эл", - "бщ": "Бэ Щэ", - "кк": "Кэ Ка", - "ск": "Эс Ка", - "зк": "Зэ Ка", - "ерт": "Йе Эр Тэ", - "вкд": "Вэ Ка Дэ", - "нтр": "Эн Тэ Эр", - "пнт": "Пэ Эн Тэ", - "авд": "А Вэ Дэ", - "пнв": "Пэ Эн Вэ", - "ссд": "Эс Эс Дэ", - "кпб": "Кэ Пэ Бэ", - "сссп": "Эс Эс Эс Пэ", - "крб": "Ка Эр Бэ", - "бд": "Бэ Дэ", - "сст": "Эс Эс Тэ", - "скс": "Эс Ка Эс", - "икн": "И Ка Эн", - "нсс": "Эн Эс Эс", - "емп": "Йе Эм Пэ", - "бс": "Бэ Эс", - "цкс": "Цэ Ка Эс", - "срд": "Эс Эр Дэ", - "жпс": "Джи Пи Эс", - "gps": "Джи Пи Эс", - "ннксс": "Эн Эн Ка Эс Эс", - "ss": "Эс Эс", - "сс": "Эс Эс", - "тесла": "тэсла", - "трейзен": "трэйзэн", - "нанотрейзен": "нанотрэйзэн", - "мед": "м ед", - "меде": "м еде", - "кз": "Кэ Зэ", - "гбс": "Гэ Бэ Эс", - "цпсс": "Цэ Пэ Эс Эс", - "гкк": "Гэ Кэ Ка" - }, - "tts_job_replacements": { - "nanotrasen navy field officer": "Полевой офицер флота Нанотрэйзен", - "nanotrasen navy officer": "Офицер флота nanotrasen", - "supreme commander": "Верховный главнокомандующий", - "solar federation general": "Генерал Солнечной Федерации", - "special operations officer": "Офицер специальных операций", - "civilian": "Гражданский", - "tourist": "Турист", - "businessman": "Бизнэсмэн", - "trader": "Торговец", - "assistant": "Ассистент", - "chief engineer": "Главный Инженер", - "station engineer": "Станционный инженер", - "trainee engineer": "Инженер-стажер", - "Engineer Assistant": "Инженерный Ассистент", - "Technical Assistant": "Технический Ассистент", - "Engineer Student": "Инженер-практикант", - "Technical Student": "Техник-практикант", - "Technical Trainee": "Техник-стажер", - "maintenance technician": "Техник по обслуживанию", - "engine technician": "Техник по двигателям", - "electrician": "Электрик", - "life support specialist": "Специалист по жизнеобеспечению", - "atmospheric technician": "Атмосферный техник", - "mechanic": "Механик", - "chief medical officer": "Главный врач", - "medical doctor": "Врач", - "Intern": "Интерн", - "Student Medical Doctor": "Врач-практикант", - "Medical Assistant": "Ассистирующий врач", - "surgeon": "Хирург", - "nurse": "Медсестра", - "coroner": "К+оронэр", - "chemist": "Химик", - "pharmacist": "Фармацевт", - "pharmacologist": "Фармаколог", - "geneticist": "Генетик", - "virologist": "Вирусолог", - "pathologist": "Патологоанатом", - "microbiologist": "Микробиолог", - "psychiatrist": "Психиатр", - "psychologist": "Психолог", - "therapist": "Терапевт", - "paramedic": "Парамедик", - "research director": "Директор исследований", - "scientist": "Учёный", - "student scientist": "Учёный-практикант", - "Scientist Assistant": "Научный Ассистент", - "Scientist Pregraduate": "Учёный-бакалавр", - "Scientist Graduate": "Научный выпускник", - "Scientist Postgraduate": "Учёный-аспирант", - "anomalist": "Аномалист", - "plasma researcher": "Исследователь плазмы", - "xenobiologist": "Ксенобиолог", - "chemical researcher": "Химик-исследователь", - "roboticist": "Робототехник", - "student robotist": "Студент-робототехник", - "biomechanical engineer": "Биомеханический инженер", - "mechatronic engineer": "Инженер мехатроники", - "head of security": "Глава службы безопасности", - "warden": "Смотритель", - "detective": "Детектив", - "forensic technician": "Криминалист", - "junior security officer": "Младший офицер службы безопасности", - "security officer": "Офицер службы безопасности", - "security trainer": "Тренер службы безопасности", - "security cadet": "Кадет службы безопасности", - "Security Assistant": "Ассистент службы безопасности", - "Security Graduate": "Выпускник кадетской академии", - "brig physician": "Врач брига", - "security pod pilot": "Пилот пода службы безопасности", - "captain": "Капитан", - "ai": "И И", - "cyborg": "Киборг", - "robot": "Робот", - "head of personnel": "Глава персонала", - "nanotrasen representative": "Представитель Нанотрэйзен", - "blueshield": "Блюшилд", - "magistrate": "Магистрат", - "internal affairs agent": "Агент внутренних дел", - "human resources agent": "Агент по персоналу", - "bartender": "Бармэн", - "chef": "Повар", - "cook": "Кук", - "culinary artist": "Кулинар", - "butcher": "Мясник", - "botanist": "Ботаник", - "hydroponicist": "Гидропонист", - "botanical researcher": "Ботаник-исследователь", - "quartermaster": "Квартирмейстер", - "cargo technician": "Карго техник", - "shaft miner": "Шахтёр", - "spelunker": "Спелеолог", - "clown": "Клоун", - "mime": "Мим", - "janitor": "Уборщик", - "custodial technician": "Техник по уходу за помещениями", - "librarian": "Библиотекарь", - "journalist": "Журналист", - "barber": "Парикмахер", - "hair stylist": "Стилист", - "beautician": "Косметолог", - "explorer": "Исследователь", - "chaplain": "Священник", - "syndicate officer": "Офицер синдиката", - "visitor": "посетитель" - } -} diff --git a/config/config.txt b/config/config.txt index 16ebcc2d322ce..1c87fc110ae9a 100644 --- a/config/config.txt +++ b/config/config.txt @@ -5,7 +5,6 @@ $include dbconfig.txt $include comms.txt $include logging.txt $include resources.txt -$include bandastation/bandastation_config.txt $include interviews.txt $include lua.txt $include auxtools.txt diff --git a/config/dynamic.json b/config/dynamic.json index aa384ef5ca636..a4a1eb7ebdbfb 100644 --- a/config/dynamic.json +++ b/config/dynamic.json @@ -4,6 +4,7 @@ "Traitors": { "cost": 8, "scaling_cost": 9, + "weight": 0, "required_candidates": 1, "minimum_required_age": 0, "requirements": [ @@ -39,6 +40,7 @@ }, "Changelings": { + "weight": 0 }, "Heretics": { @@ -46,47 +48,49 @@ }, "Wizard": { + "weight": 0 }, "Blood Cult": { + "weight": 0 }, "Nuclear Emergency": { - }, - - "Clown Operatives": { + "weight": 0 }, "Revolution": { - }, - - "Malfunctioning AI": { - }, - - "Spies": { + "weight": 0 } }, "Midround": { "Syndicate Sleeper Agent": { + "weight": 0 }, "Malfunctioning AI": { + "weight": 0 }, "Wizard": { + "weight": 0 }, "Nuclear Assault": { + "weight": 0 }, "Blob": { + "weight": 0 }, "Blob Infection": { + "weight": 0 }, "Alien Infestation": { + "weight": 0 }, "Nightmare": { @@ -98,15 +102,19 @@ }, "Abductors": { + "weight": 0 }, "Space Ninja": { + "weight": 0 }, "Spiders": { + "weight": 0 }, "Revenant": { + "weight": 0 }, "Sentient Disease": { @@ -117,15 +125,12 @@ "weight": 0 }, - "Dangerous Space Pirates": { - "weight": 0 - }, - "Obsessed": { "weight": 0 }, "Space Changeling": { + "weight": 0 }, "Paradox Clone": { @@ -135,9 +140,11 @@ "Latejoin": { "Syndicate Infiltrator": { + "weight": 0 }, "Provocateur": { + "weight": 0 }, "Heretic Smuggler": { @@ -145,6 +152,7 @@ }, "Stowaway Changeling": { + "weight": 0 } }, diff --git a/config/game_options.txt b/config/game_options.txt index a606519765421..f6d321c1b8e13 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -33,7 +33,7 @@ COMMENDATION_PERCENT_POLL 0.05 ## To speed things up make the number negative, to slow things down, make the number positive. ## These modify the run/walk speed of all mobs before the mob-specific modifiers are applied. -RUN_DELAY 2.2 +RUN_DELAY 1.5 WALK_DELAY 4 ## The variables below affect the movement of specific mob types. THIS AFFECTS ALL SUBTYPES OF THE TYPE YOU CHOOSE! @@ -44,8 +44,9 @@ WALK_DELAY 4 ##MULTIPLICATIVE_MOVESPEED /mob/living/silicon/robot 0 ##MULTIPLICATIVE_MOVESPEED /mob/living/carbon/alien 0 ##MULTIPLICATIVE_MOVESPEED /mob/living/basic/slime 0 -##MULTIPLICATIVE_MOVESPEED /mob/living/simple_animal 0 -##MULTIPLICATIVE_MOVESPEED /mob/living/basic 0 +MULTIPLICATIVE_MOVESPEED /mob/living/simple_animal 0 +MULTIPLICATIVE_MOVESPEED /mob/living/basic 0 + ## NAMES ### ## If uncommented this adds a random surname to a player's name if they only specify one name. @@ -83,7 +84,7 @@ STATION_GOAL_BUDGET 1 ## GAME MODES ### ## Uncomment to not send a roundstart intercept report. Gamemodes may override this. -NO_INTERCEPT_REPORT +#NO_INTERCEPT_REPORT ## Percent weight reductions for three of the most recent modes @@ -157,7 +158,7 @@ ALLOW_AI_MULTICAM ## Secborg ### ## Uncomment to prevent the security cyborg model from being chosen -DISABLE_SECBORG +#DISABLE_SECBORG ## Peacekeeper Borg ### ## Uncomment to prevent the peacekeeper cyborg model from being chosen @@ -166,7 +167,7 @@ DISABLE_SECBORG ## AWAY MISSIONS ### ## Uncomment to load one of the missions from awaymissionconfig.txt or away_missions/ at roundstart. -ROUNDSTART_AWAY +#ROUNDSTART_AWAY ## How long the delay is before the Away Mission gate opens. Default is half an hour. ## 600 is one minute. @@ -192,28 +193,28 @@ MINIMAL_ACCESS_THRESHOLD 20 #ASSISTANTS_HAVE_MAINT_ACCESS ## Uncoment to give security maint access. Note that if you dectivate JOBS_HAVE_MINIMAL_ACCESS security already gets maint from that. -SECURITY_HAS_MAINT_ACCESS +#SECURITY_HAS_MAINT_ACCESS ## Uncomment to give everyone maint access. #EVERYONE_HAS_MAINT_ACCESS ## Comment this out this to make security officers spawn in departmental security posts -SEC_START_BRIG +#SEC_START_BRIG ## This variable is how you may configure "Scaling Access" for Departmental Security Officers. ## Set to 0/commented out for "off", Departmental Security Officers will never get additional room-specific access (beyond general departmental doors). ## Set to 1 if you want to enable "Scaling Access", where Departmental Security Officers will get access to most rooms within a department depending on how many security officers there are relative to the number of people on a station. ## Set to 2 if you want Departmental Security Officers to always have access to all rooms in a department. -DEPSEC_ACCESS_LEVEL 2 +DEPSEC_ACCESS_LEVEL 1 ## GHOST INTERACTION ### ## Uncomment to let ghosts spin chairs. You may be wondering why this is a config option. Don't ask. -GHOST_INTERACTION +#GHOST_INTERACTION ## NEAR-DEATH EXPERIENCE ### ## Comment this out to disable mobs hearing ghosts when unconscious and very close to death -#NEAR_DEATH_EXPERIENCE +NEAR_DEATH_EXPERIENCE ## NON-VOCAL SILICONS ### ## Uncomment these to stop the AI, or cyborgs, from having vocal communication. @@ -229,7 +230,7 @@ GHOST_INTERACTION ## Set to 4 for "specified", silicons will start with an existing lawset. (If no specified lawset is identified, the AI will spawn with asimov.) -DEFAULT_LAWS 4 +DEFAULT_LAWS 0 ## SILICON ASIMOV SUPERIORITY OVERRIDE ### ## This makes "Asimov Superiority" show up as a perk for humans in the character creation menu even if asimov is not the default lawset, such as when used with asimov++ @@ -242,7 +243,7 @@ DEFAULT_LAWS 4 ## See datums\ai_laws.dm for the full law lists ## IE, SPECIFIED_LAWS asimovpp, SPECIFIED_LAWS robocop, SPECIFIED_LAWS antimov -SPECIFIED_LAWS nt_default +SPECIFIED_LAWS asimovpp ## RANDOM LAWS ## ## ------------------------------------------------------------------------------------------ @@ -255,7 +256,6 @@ RANDOM_LAWS asimovpp RANDOM_LAWS paladin RANDOM_LAWS robocop RANDOM_LAWS corporate -RANDOM_LAWS nt_default ## Quirky laws. Shouldn't cause too much harm #RANDOM_LAWS hippocratic @@ -297,7 +297,6 @@ LAW_WEIGHT liveandletlive,5 LAW_WEIGHT peacekeeper,5 LAW_WEIGHT ten_commandments,5 LAW_WEIGHT nutimov,5 -LAW_WEIGHT nt_default,5 ## Quirky laws. Shouldn't cause too much harm LAW_WEIGHT reporter,3 @@ -459,7 +458,7 @@ MICE_ROUNDSTART 10 ROUNDSTART_TRAITS ## Uncomment to disable human moods. -DISABLE_HUMAN_MOOD +#DISABLE_HUMAN_MOOD ## Enable night shifts #ENABLE_NIGHT_SHIFTS diff --git a/dependencies.sh b/dependencies.sh index fcb48eefcc31b..087c337a0461f 100644 --- a/dependencies.sh +++ b/dependencies.sh @@ -9,7 +9,6 @@ export BYOND_MINOR=1633 #rust_g git tag export RUST_G_VERSION=3.1.0 -export RUST_G_VERSION_SS220=3.0.0-ss220 #node version export NODE_VERSION=20 diff --git a/interface/skin.dmf b/interface/skin.dmf index b3e581d344f52..ede8e37684078 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -111,12 +111,12 @@ window "mapwindow" size = 640x480 anchor1 = 0,0 anchor2 = 100,100 - font-family = "Arial" - font-size = 7pt + font-family = "Grand9K Pixel" + font-size = 6pt is-default = true right-click = true saved-params = "zoom;letterbox;zoom-mode" - style = ".center { text-align: center; } .maptext { font-family: 'Small Fonts'; font-size: 7pt; -dm-text-outline: 1px black; color: white; line-height: 1.1; } .command_headset { font-weight: bold; } .context { font-family: 'Small Fonts'; font-size: 12pt; -dm-text-outline: 1px black; } .subcontext { font-family: 'Small Fonts'; font-size: 12pt; line-height: 0.75; } .small { font-family: 'Small Fonts'; font-size: 6pt; line-height: 1.4; } .big { font-family: 'Small Fonts'; font-size: 12pt; } .reallybig { font-size: 12pt; } .extremelybig { font-size: 12pt; } .greentext { color: #00FF00; font-size: 6pt; } .redtext { color: #FF0000; font-size: 6pt; } .clown { color: #FF69BF; font-weight: bold; } .his_grace { color: #15D512; } .hypnophrase { color: #0d0d0d; font-weight: bold; } .yell { font-weight: bold; } .italics { font-family: 'Small Fonts'; font-size: 6pt; line-height: 1.4; }" + style = ".center { text-align: center; } .maptext { font-family: 'Grand9K Pixel'; font-size: 6pt; -dm-text-outline: 1px black; color: white; line-height: 1.0; } .command_headset { font-weight: bold; } .context { font-family: 'Pixellari'; font-size: 12pt; -dm-text-outline: 1px black; } .subcontext { font-family: 'TinyUnicode'; font-size: 12pt; line-height: 0.75; } .small { font-family: 'Spess Font'; font-size: 6pt; line-height: 1.4; } .big { font-family: 'Pixellari'; font-size: 12pt; } .reallybig { font-size: 12pt; } .extremelybig { font-size: 12pt; } .greentext { color: #00FF00; font-size: 6pt; } .redtext { color: #FF0000; font-size: 6pt; } .clown { color: #FF69BF; font-weight: bold; } .his_grace { color: #15D512; } .hypnophrase { color: #0d0d0d; font-weight: bold; } .yell { font-weight: bold; } .italics { font-family: 'Spess Font'; font-size: 6pt; line-height: 1.4; }" elem "status_bar" type = LABEL pos = 0,464 diff --git a/modular_bandastation/_defines220/_defines220.dm b/modular_bandastation/_defines220/_defines220.dm deleted file mode 100644 index 89c20b6a61efd..0000000000000 --- a/modular_bandastation/_defines220/_defines220.dm +++ /dev/null @@ -1,4 +0,0 @@ -/datum/modpack/defines220 - name = "Дефайны220" - desc = "Добавляет дефайны, которые нам нужны" - author = "larentoun" diff --git a/modular_bandastation/_defines220/_defines220.dme b/modular_bandastation/_defines220/_defines220.dme deleted file mode 100644 index a9ec1bda68950..0000000000000 --- a/modular_bandastation/_defines220/_defines220.dme +++ /dev/null @@ -1,14 +0,0 @@ -#include "_defines220.dm" - -#include "code/signals_atom.dm" -#include "code/defines/keybindings.dm" -#include "code/defines/misc.dm" -#include "code/defines/spans.dm" -#include "code/defines/subsystems.dm" -#include "code/defines/text_to_speech.dm" -#include "code/signals_mob/signals_mob_ai.dm" -#include "code/signals_mob/signals_mob_carbon.dm" -#include "code/signals_mob/signals_mob_living.dm" -#include "code/signals_mob/signals_mob_main.dm" -#include "code/signals_mob/signals_mob_silicon.dm" -#include "code/signals_mob/signals_mob_simple.dm" diff --git a/modular_bandastation/_defines220/code/defines/keybindings.dm b/modular_bandastation/_defines220/code/defines/keybindings.dm deleted file mode 100644 index 54cd3afa9f555..0000000000000 --- a/modular_bandastation/_defines220/code/defines/keybindings.dm +++ /dev/null @@ -1,4 +0,0 @@ -#define COMSIG_KB_MOB_PIXEL_SHIFT_DOWN "keybinding_mob_pixel_shift_down" -#define COMSIG_KB_MOB_PIXEL_SHIFT_UP "keybinding_mob_pixel_shift_up" -#define COMSIG_KB_CLIENT_LOOC_DOWN "keybinding_client_looc_down" -#define COMSIG_KB_CLIENT_WHISPER_DOWN "keybinding_client_whisper_down" diff --git a/modular_bandastation/_defines220/code/defines/misc.dm b/modular_bandastation/_defines220/code/defines/misc.dm deleted file mode 100644 index 84efa510030c4..0000000000000 --- a/modular_bandastation/_defines220/code/defines/misc.dm +++ /dev/null @@ -1,6 +0,0 @@ -///Do (almost) nothing - indev placeholder for switch case implementations etc -#define NOOP (.=.) -/// Copies the L from element START to elememt END if L is initialized, otherwise returns an empty list. -#define LAZYCOPY_RANGE(L, START, END) ( L ? L.Copy(START, END) : list() ) -/// Cuts the L from element START to elememt END if L is initialized, otherwise returns an empty list. -#define LAZYCUT(L, START, END) ( L ? L.Cut(START, END) : NOOP ) diff --git a/modular_bandastation/_defines220/code/defines/spans.dm b/modular_bandastation/_defines220/code/defines/spans.dm deleted file mode 100644 index c596abf4ba3a7..0000000000000 --- a/modular_bandastation/_defines220/code/defines/spans.dm +++ /dev/null @@ -1 +0,0 @@ -#define span_maptext(str) ("" + str + "") diff --git a/modular_bandastation/_defines220/code/defines/subsystems.dm b/modular_bandastation/_defines220/code/defines/subsystems.dm deleted file mode 100644 index 90e9cdf733c47..0000000000000 --- a/modular_bandastation/_defines220/code/defines/subsystems.dm +++ /dev/null @@ -1,18 +0,0 @@ -//! ## DB defines -/** - * DB major schema version for BANDASTATION - * - * Update this whenever the db schema changes - * - * make sure you add an update to the schema_version stable in the db changelog - */ -#define DB_MAJOR_VERSION_220 1 - -/** - * DB minor schema version for BANDASTATION - * - * Update this whenever the db schema changes - * - * make sure you add an update to the schema_version stable in the db changelog - */ -#define DB_MINOR_VERSION_220 1 diff --git a/modular_bandastation/_defines220/code/defines/text_to_speech.dm b/modular_bandastation/_defines220/code/defines/text_to_speech.dm deleted file mode 100644 index 8d56e1734a006..0000000000000 --- a/modular_bandastation/_defines220/code/defines/text_to_speech.dm +++ /dev/null @@ -1,75 +0,0 @@ -#define VV_HK_SELECT_TTS_VOICE "select_tts_voice" - -#define TTS_TRAIT_PITCH_WHISPER (1<<1) -#define TTS_TRAIT_RATE_FASTER (1<<2) -#define TTS_TRAIT_RATE_MEDIUM (1<<3) - -#define TTS_TRAIT_ROBOTIZE "tts_trait_robotize" - -#define TTS_CATEGORY_OTHER "Другое" -#define TTS_CATEGORY_WARCRAFT3 "WarCraft 3" -#define TTS_CATEGORY_HALFLIFE2 "Half-Life 2" -#define TTS_CATEGORY_STARCRAFT "StarCraft" -#define TTS_CATEGORY_PORTAL2 "Portal 2" -#define TTS_CATEGORY_STALKER "STALKER" -#define TTS_CATEGORY_DOTA2 "Dota 2" -#define TTS_CATEGORY_LOL "League of Legends" -#define TTS_CATEGORY_FALLOUT "Fallout" -#define TTS_CATEGORY_FALLOUT2 "Fallout 2" -#define TTS_CATEGORY_POSTAL2 "Postal 2" -#define TTS_CATEGORY_TEAMFORTRESS2 "Team Fortress 2" -#define TTS_CATEGORY_ATOMIC_HEART "Atomic Heart" -#define TTS_CATEGORY_OVERWATCH "Overwatch" -#define TTS_CATEGORY_SKYRIM "Skyrim" -#define TTS_CATEGORY_RITA "Rita" -#define TTS_CATEGORY_METRO "Metro" -#define TTS_CATEGORY_HEROESOFTHESTORM "Heroes of the Storm" -#define TTS_CATEGORY_HEARTHSTONE "Hearthstone" -#define TTS_CATEGORY_VALORANT "Valorant" -#define TTS_CATEGORY_EVILISLANDS "Evil Islands" -#define TTS_CATEGORY_WITCHER "Witcher" -#define TTS_CATEGORY_LEFT4DEAD "Left 4 Dead" -#define TTS_CATEGORY_SPONGEBOB "SpongeBob" -#define TTS_CATEGORY_TINYBUNNY "Tiny Bunny" -#define TTS_CATEGORY_BALDURS_GATE_3 "Baldur's gate 3" -#define TTS_CATEGORY_PORTAL "Portal" -#define TTS_CATEGORY_TMNT "Teenage mutant ninja turtle" -#define TTS_CATEGORY_STAR_WARS "Star Wars" -#define TTS_CATEGORY_TRANSFORMERS "Transformers" -#define TTS_CATEGORY_LOTR "The Lord of the rings" -#define TTS_CATEGORY_SHREK "Shrek" -#define TTS_CATEGORY_POTC "Pirates of the Caribbean" -#define TTS_CATEGORY_HARRY_POTTER "Harry Potter" -#define TTS_CATEGORY_X3 "X3" -#define TTS_CATEGORY_OVERLORD2 "The Overlord 2" -#define TTS_CATEGORY_MARVEL "Marvel" -#define TTS_CATEGORY_WOW "World of Warcraft" -#define TTS_CATEGORY_TREASURE_ISLAND "Treasure Island" -#define TTS_CATEGORY_BOYS_WORD "Слово пацана" - -#define TTS_GENDER_ANY "Любой" -#define TTS_GENDER_MALE "Мужской" -#define TTS_GENDER_FEMALE "Женский" - -#define TTS_PHRASES list(\ - "Так звучит мой голос.",\ - "Так я звучу.",\ - "Я.",\ - "Поставьте свою подпись.",\ - "Пора за работу.",\ - "Дело сделано.",\ - "Станция Нанотрейзен.",\ - "Офицер СБ.",\ - "Капитан.",\ - "Вульпканин.",\ - "Съешь же ещё этих мягких французских булок, да выпей чаю.",\ - "Клоун, прекрати разбрасывать банановые кожурки офицерам под ноги!",\ - "Капитан, вы уверены что хотите назначить клоуна на должность главы персонала?",\ - ) - -#define BIG_WORKER_TIER 220 -#define LITTLE_WORKER_TIER 110 - -#define BIG_WORKER_TTS_LEVEL 3 -#define LITTLE_WORKER_TTS_LEVEL 1 -#define DONATOR_LEVEL_MAX 5 diff --git a/modular_bandastation/_defines220/code/signals_atom.dm b/modular_bandastation/_defines220/code/signals_atom.dm deleted file mode 100644 index 6cb23c4e1f485..0000000000000 --- a/modular_bandastation/_defines220/code/signals_atom.dm +++ /dev/null @@ -1,8 +0,0 @@ -///from base of atom/change_tts_seed(): (mob/chooser, override, new_traits) -#define COMSIG_ATOM_TTS_SEED_CHANGE "atom_tts_seed_change" -///from base of atom/cast_tts: (mob/listener, message, atom/location, is_local, effect, traits, preSFX, postSFX) -#define COMSIG_ATOM_TTS_CAST "atom_tts_cast" -///from base of atom/tts_trait_add(): (trait) -#define COMSIG_ATOM_TTS_TRAIT_ADD "atom_tts_trait_add" -///from base of atom/tts_trait_remove(): (trait) -#define COMSIG_ATOM_TTS_TRAIT_REMOVE "atom_tts_trait_remove" diff --git a/modular_bandastation/_defines220/code/signals_mob/signals_mob_ai.dm b/modular_bandastation/_defines220/code/signals_mob/signals_mob_ai.dm deleted file mode 100644 index fa7df8ae680b9..0000000000000 --- a/modular_bandastation/_defines220/code/signals_mob/signals_mob_ai.dm +++ /dev/null @@ -1 +0,0 @@ -// Signals for /mob/living/silicon/ai diff --git a/modular_bandastation/_defines220/code/signals_mob/signals_mob_carbon.dm b/modular_bandastation/_defines220/code/signals_mob/signals_mob_carbon.dm deleted file mode 100644 index ef6039c440fc8..0000000000000 --- a/modular_bandastation/_defines220/code/signals_mob/signals_mob_carbon.dm +++ /dev/null @@ -1 +0,0 @@ -// Signals for /mob/living/carbon diff --git a/modular_bandastation/_defines220/code/signals_mob/signals_mob_living.dm b/modular_bandastation/_defines220/code/signals_mob/signals_mob_living.dm deleted file mode 100644 index db4d5bdb08e8c..0000000000000 --- a/modular_bandastation/_defines220/code/signals_mob/signals_mob_living.dm +++ /dev/null @@ -1,9 +0,0 @@ -// Signals for /mob/living - -//from base of living/set_pull_offset(): (mob/living/pull_target, grab_state) -#define COMSIG_LIVING_SET_PULL_OFFSET "living_set_pull_offset" -//from base of living/reset_pull_offsets(): (mob/living/pull_target, override) -#define COMSIG_LIVING_RESET_PULL_OFFSETS "living_reset_pull_offsets" -//from base of living/CanAllowThrough(): (atom/movable/mover, border_dir) -#define COMSIG_LIVING_CAN_ALLOW_THROUGH "living_can_allow_through" - #define COMPONENT_LIVING_PASSABLE (1<<0) diff --git a/modular_bandastation/_defines220/code/signals_mob/signals_mob_main.dm b/modular_bandastation/_defines220/code/signals_mob/signals_mob_main.dm deleted file mode 100644 index 7aa41cead07d5..0000000000000 --- a/modular_bandastation/_defines220/code/signals_mob/signals_mob_main.dm +++ /dev/null @@ -1 +0,0 @@ -// Signals for /mob diff --git a/modular_bandastation/_defines220/code/signals_mob/signals_mob_silicon.dm b/modular_bandastation/_defines220/code/signals_mob/signals_mob_silicon.dm deleted file mode 100644 index 1e776fa5270e2..0000000000000 --- a/modular_bandastation/_defines220/code/signals_mob/signals_mob_silicon.dm +++ /dev/null @@ -1 +0,0 @@ -// Signals for /mob/living/silicon diff --git a/modular_bandastation/_defines220/code/signals_mob/signals_mob_simple.dm b/modular_bandastation/_defines220/code/signals_mob/signals_mob_simple.dm deleted file mode 100644 index 937b109659eb5..0000000000000 --- a/modular_bandastation/_defines220/code/signals_mob/signals_mob_simple.dm +++ /dev/null @@ -1 +0,0 @@ -// Signals for /mob/living/simple_animal diff --git a/modular_bandastation/_helpers220/_helpers220.dm b/modular_bandastation/_helpers220/_helpers220.dm deleted file mode 100644 index f252781a26351..0000000000000 --- a/modular_bandastation/_helpers220/_helpers220.dm +++ /dev/null @@ -1,4 +0,0 @@ -/datum/modpack/defines220 - name = "Хелперы220" - desc = "Добавляет хелперы, которые нам нужны" - author = "larentoun" diff --git a/modular_bandastation/_helpers220/_helpers220.dme b/modular_bandastation/_helpers220/_helpers220.dme deleted file mode 100644 index b6f843f544780..0000000000000 --- a/modular_bandastation/_helpers220/_helpers220.dme +++ /dev/null @@ -1,3 +0,0 @@ -#include "_helpers220.dm" - -#include "code/unsorted.dm" diff --git a/modular_bandastation/_helpers220/code/unsorted.dm b/modular_bandastation/_helpers220/code/unsorted.dm deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/modular_bandastation/_modpack.dm b/modular_bandastation/_modpack.dm deleted file mode 100644 index 5569426fa6404..0000000000000 --- a/modular_bandastation/_modpack.dm +++ /dev/null @@ -1,17 +0,0 @@ -/datum/modpack - /// A string name for the modpack. Used for looking up other modpacks in init. - var/name - /// A string desc for the modpack. Can be used for modpack verb list as description. - var/desc - /// A string with authors of this modpack. - var/author - -/datum/modpack/proc/pre_initialize() - if(!name) - return "Modpack name is unset." - -/datum/modpack/proc/initialize() - return - -/datum/modpack/proc/post_initialize() - return diff --git a/modular_bandastation/_modpacks.dm b/modular_bandastation/_modpacks.dm deleted file mode 100644 index 68a24b2f48e0a..0000000000000 --- a/modular_bandastation/_modpacks.dm +++ /dev/null @@ -1,62 +0,0 @@ -#define INIT_ORDER_MODPACKS 84 - -SUBSYSTEM_DEF(modpacks) - name = "Modpacks" - init_order = INIT_ORDER_MODPACKS - flags = SS_NO_FIRE - var/list/loaded_modpacks = list() - -/datum/controller/subsystem/modpacks/Initialize() - var/list/all_modpacks = list() - for(var/modpack in subtypesof(/datum/modpack/)) - all_modpacks.Add(new modpack) - // Pre-init and register all compiled modpacks. - for(var/datum/modpack/package as anything in all_modpacks) - var/fail_msg = package.pre_initialize() - if(QDELETED(package)) - CRASH("Modpack of type [package.type] is null or queued for deletion.") - if(fail_msg) - CRASH("Modpack [package.name] failed to pre-initialize: [fail_msg].") - if(loaded_modpacks[package.name]) - CRASH("Attempted to register duplicate modpack name [package.name].") - loaded_modpacks.Add(package) - - // Handle init and post-init (two stages in case a modpack needs to implement behavior based on the presence of other packs). - for(var/datum/modpack/package as anything in all_modpacks) - var/fail_msg = package.initialize() - if(fail_msg) - CRASH("Modpack [(istype(package) && package.name) || "Unknown"] failed to initialize: [fail_msg]") - for(var/datum/modpack/package as anything in all_modpacks) - var/fail_msg = package.post_initialize() - if(fail_msg) - CRASH("Modpack [(istype(package) && package.name) || "Unknown"] failed to post-initialize: [fail_msg]") - - return SS_INIT_SUCCESS - -/client/verb/modpacks_list() - set name = "Modpacks List" - set category = "OOC" - - if(!mob || !SSmodpacks.initialized) - return - - if(length(SSmodpacks.loaded_modpacks)) - . = "
QGI+0o z*Yjfy+J3q0seBT51MGd27lW(<*9^UX+s6z*X0E)wHxB+jJcA|a;c?NbH5cDljc+$5 zB_*L%78q$mS;s)A>*-48qCH9*ntzl@#_tjIeJHpU_)^rGUrIw1y{IS*DKy~sm9`HD z$Pw`$BlWqKE1vB6!MCIH@ms#%QW-Spm2cpfY@>oQXk`=qhAf}5vU1JZj^Q)YLh-b* ztoX$LI4xCRLRq&+C2zmcaJIb!k-kuCWF7PBt1{?gpx?uW5`LnF2c$J0<$pVeMV;`` zT>MyoTO_sqz2rH2O-EVEigGHP(z@d67qTeYDH3epm2t^~ zn05uX$R6C)_cZ|S{uO{!v-x`Rd;~F@fVc9cE0|Rc_-I>r;_hFViklRc~ b*#D+PJqCmRtTo}yry IBoR<+dR~3!L_2%eoPklVEQq>L;FTEs# _exXlT==( zkCd29`NyR6Fa+F{nu0{|l@9P#ia&3k!N4`VhA4OiP#)x)+V{6s!quctJ@%Sviq6j< zDk70ccH`Kl58-ss_?Szcw)q>YVc^29%VZj+q{=4#IkmAMeU@O^VqNjizhXcjNB-$` zF_su6^{Fk|#taOb_h7nY)Qa2@{wc&dB*B7c--+by51(Mkn~}(Mc8Z_9(&_Rbo~vdj z{bF$`=k8Lb8@}R#9D#guB4;gL#O{UUlQ=HDn-6>-GscupJa3QUJ?(MOFe~D-?@A(7 zIaVRCUSgSdyKB(a;1NPxe{o-b5NFf4|G~}IUk^ChC6SyW$8E@85-$gB930~nRJvHI z0T)$(1;Mh^fM!LwSujhu0BYH0Axj`Ht0gZ7q;rrh6N$fZtGK$MR!~OXOeZFz+%Z@1 z&bAxNkBlVv!G|`)*aG|Fjk#Z6Xs$U-spN_55|?{Rt7-3=;-mlaztF}%%(<_1C+#o; z=)m yE|gvFUJoihsM{f>RCj zSHDPWuzWT-7M}-p44bwMiL&lckC%x4zGs`yYBU c=NsCu4_84O^9W#HB+(ivKp |EC%{FEoi=r zwn`yqX!efeT_>7rkF~N3zv&rvH`FIM+$Sgy0HTXt=5#YBYO<$}tC`AUm4&ai{Ste! zQ`#i7`bt&qS9<&T&j_# I z3aZ2Rh98=NGx#b}`yIFv6qI5o3*vnT$-Xs+0gu;#95-Jbj}~k4j*z&N#h=G$z8Tti z 9#D4C-k=AWuj}z z?KsJ9F!bS8S#`|?oMAVNG5o6-BowXnUb5w!id{f()o>#pKTmU?a}-G;jWj s)%Sv9wfnbaX_|Zeh;3ySfq7xoLf9i=v=5PA6-S5US4p z{ytcn((E_>DIFF4>*c7PSqZs}m`A1d^6u(=e$--fR^$1x+r6r)ED6Mj)eyY>-EQT< zLWxscDqGWM# ! z{I;()NL;|If5&ioNkKu^z2@R0cUsVTQp&)c2GX78_AKosQn##<%=oCl5K*Vq1v|nT zj!AMsZ--Zo7!w)!8!(0R6Zyq2QB*eIQ3+*&ZTO#Ric9CVT-&dm3Yr)hg&$zDuG$_i zI(DRNiQI}!ibtE0J5&2KPr90U6Rbsq0v$j4e$VaGy6!C@nNk0_KFQ^i1Z${erC`@O zM2Wc%eWJzsX)`KFf_h~r08cQ8N>r%4h2)yPa}8M1H9YU~DaNRcQX~6<=XaF-rnz1` zTExuT-Mce`yDvYS>^A&npC@u(@b~P|*><}Q>klu!2>3O}Ft}{fWn_5K0eC#y>krWv zXbxRF6XM%eyB}`ZNNdJtF(!a=pdot<$Hg+>e5Wm&sO1>81?0??^sy7@Jyz$+61bdo z?FJJlkD!m20Cu*DTNAF7?&6-0ra5M5UbP&26AA{}Sa`_Mln?LnS){1wU*q`p+ge6M zr;TMPY8)OVtIiY}bFVsTA`(HR^Jt=@et8m>K@fycd$=XnL?xBpyj${OUcClJ{X9-t za_OtvVxqJxBPPyRasma A;(b1?FIx^8U$6Ud;E)4!_4FhjaCp19m0bs6iB7H+ga#_ylD)7) zChF21R(J%Zbd;bmdbUd2g_lk{Q&XO!oOYe__M94+&A6IAvqyADtZZI``O46T+%2F& z4)jqp{1{O!q)XtD-xg3;Dr6PnvsD7&dX91VstkYhy7X_AntP*$xcdgj9(H^Q2b`jf z(+ RFwv<3!#07; zU9A;H)8PCh(NQBz@2}N#$h&g%fq^tR#Va8-gwcwEt%$rQdGk1e0|LO0a1A|5Yve*j zaHi&lDDY&{)f1c$$S|DkT+bo*a_g8cz79F`=h {C)y%=_0O2;wNGT>Hj$CyF9aQKyr!elBJ5WTrj5uF@V36%+xJ%`rVTZ ;$VIyQbT&Xd5*xUUQkr1;d~Mp9fTya~gg~Dj#+q5YcSb-I(c(xp z3U0=9_vg)J*)RCo^D1slXCD zZeunFZ8~j z5AauMR%^tnEUUMXo=HgT$~$X%XLxp)ZKVaGdh5@xznO^2O)SK=tFshMn*z&A<57xN zzeEn~t%)Mvw4dcNnl|-&IMdwhbpvKiFd#9OeV5(gNO(xx|DfMZOZZhQdE@f;iae>i z;e1bWLQ+U{wJtu0X>cjBigb*l$9hlVKXlmU!8s4VtRN~R9=pF{W545)hNlwdOI)g4 zBKiICTpl?3!&q_a^>Jt$TyvZJ>Hq~nod_eKB&NnDhV19p25MLQPSf7^?|K@4ak#9X z&3;1BJ*+i#U7#BnyKr|h_~WV0;XXb%z__lFP3Ud`EOhh$)L&1CJx$x$G{rXr+m|e( zx3}k#DuN=Rtmva=wv4}jD$q5;vyf_uQX M9b?;)vKLR=4p2DD({C6-C0v9Oj ;j(JJEU_24BGTzi< zi%8^S-z%IwnVHPiS&Co{{DyocR-SzCniI5(N4vpho}Tn`GO93X{#~d4CT2>4om@x; z#9_-zzCql~r=h1$_ip6U%ZPj>17#!~!l^o(7N5u{gXek;2kMlH7{D7Vy=l&kX6XXc z;Pjg%$q6Jn5MB|KT-5~EtZ;tjtn|80(c#_6orWq>nu}ixS=~Kf<;BILf!hC7QTZcG z-inC8_P1IAyaI`?@Ag~zh3UOJ5fh?>aT$z;ynMpgy+8G3{)Nm_ wA8y~6o(Q_;Ku?Yq<_%EH!49NdxTBsB|NTP@ zS1VRk%k5lbE~tRhkRkM!DFHOqF9j7Vb+5!Oig+S`nJe*Mp^Fg=5Bp0N&%ZTrwSK*Y zWdiQUZU(qAd#_REoT`BT(+u#7+e_9A3KLQGB3GLTAdG?Q)WnNa$Wu^qL2~L&O%#(_ z!leo_AY%b=p< n72$dV%RAJVbjGx>uzN`yTTYc?Hb^x3X|Aw-WCA21m^Y%gmaiLFhgY<2?L>p zp!B2$Nf7qi^QmhsNLkR6qGW~EOB&^Ef)fMz6_TJWf0#`r;jz?XU@4{we`$Czur KD z(iqWTy8(R~&X L?yIThq>P*?WJ zN53vw&DbnOFkkG+D mj;EN^84bmB#0x?DDWRbO$vx;@bnz5a#&g`bhXXf`2=UW_4tohP&B90 zi=w{4=!yMQo)MEzUoox!W>avxag5*sSqfoK6YO{e1ZOHAnlQe&9Ukl(E4=Te_&~|N za|r5eBi&scpZtaV{)G4*E54#?yb7KML(YwbFkMb&*G~5;K&k%S+ov7=uo7>)M7>1M zz=NDrD|Pf3?+7dV2t?oZ{UL1!^! XUbpjy-9@ ;&+x=6}Ab(=%*jAKCij=_58cZH`Q` tUaUWg+~HpGgXLKV{aXDPC!3MyyCooNHKlM@%Kct#=-9Q jn<~e;l`=#4de%PoBc4)j9i@?7fq$V z!E*ihx{_f7yxyyB$y-;opTVnUE*b2x?jOD{%Vzs_l{YX_>$9E2WrNU)yj9_24ztb{ zcKL2L`A#jelky|)q;sCq3#?;>qL)((I!i2DT7~`IXGxoAAHOa)b$0|)aorv%nc?u3 zG}&>NN3Bcv?bvw3yn1VMY5q^w;Djds6m2%A{@gsLPJy{=-+Hd|tCqh~(Qh%%uD5=| zzRDC6{zX6E(tfBvRD!HxWTY0odWZQy2Tb*^f4v9`#6|&t0PQl&@Op6OD&Y& Z1+) WkOfEh7X~CMEsI_czBa% zwLK3{MNLf&b$5I`Wm66Eog3inKHbMwc^H <~8wt-iKGh1j3S=A_U4afblSbkwU-Q$XxV*FAV Rv7nRsME%+QN2$>MeR%i=9yYp5gYxr?ROqF>|E2b$ zPF=!T`ZV{nL^AY|i!bv$_pBZ95}a{oA?WZh1~WfDFFD(s-fSd=8e&rOppTE+xWs#_ zFHNE9C^@5{`_L0S6+ib1J7BGip{mA8s2LYuiD}01WTH>4Ro8ltaP|Hj;iyyd^qi0T z_;qY1rAXX)Y5xfH=^yW(m8b=&6wUSFGPwg%sI*jdl>D6^Lwp;`= fP>q zH^#RJs$}HBr$XPkKJzT>gT>J`>+qD+)TGP~EghY(nQF0la2!e*mjTUeol$|Yd$GFo z>LXLvv=_D~HAf0dcHu0U>wc-o$ldP=9^B>rlaK%Sr4Ia)f6xsMDiD3ykIE(RW^;41 zbj ;NFX~V;ycVHHmyg^Mhps zK^!?GH8kCy6&?E$DocsmVl0(3z9Mv4Da?ulb}kgpaW}ANFVUcvDJaG~F~=iZcw{W8 zB6MjrD5;5|A2OTnrlBe>?oL0s7Lm41%L${#UHt5S|72Biu&x-Y^o;Pbm(k}dy63Wu zdqvxnyCZ)_=ceti8Jy;+XllxoY|^NjD4qj%sm^+DIhPW}KXZ*pZy#WItBSvIme)>L zqG|9qrzfaF8C2-{&c8V-*{T<+O6?Zi6_`U)n9s^#2|h)!#3VU}2c=z;RjZdK8c1In zFPK}$PWR&}0n_yVkTv_n>tTFPW@3(>sAt)xtXnp13GroDmOw4vyr!0O& 3b` zdwMdZpC)R0Lfduu`^fPv!n%74b$tHitUl`nGcPZ%iVq(?P-$ajwn+ Dx !9$Y7eIgFYEM|VC=A4J3->ZHy=xi=T{}wpM!?!kJ_m7pIzVo z>2tkkq?u7V@+E|n8dM MMasXxP%Y^8g7b#VN}!XV_vU!2&YR`7pBokNLrRj z;;x`g?P-PaGh0ga)c^6a?mfCObkZsVZliBT-vd8RYal~O%Zg!;`?}B4-LZR)YWmOI zD*NN|DJ!-)&p|LRCx>`Acuu1{;R}n4o0v=Fy*SK*nHzgK1N^dV< t0yRYioI4pw>d?YkX(e~IuaJ>%u|HF{iJoGpR52PAc497(@G`2?*zh@qur6v$e) zxAA3osomIg)Ab7N`{<}M$kY0%mzIO{TKjh%wNnRY+L&iYwbz8@#gm4NWdh19HbDUm zC}9#DnO 13#Kr&3J rSFn*)Fcl0#^{ !n2Q|=FP;~0k;s*?? zyG$}&edW45sLj+VC;0w721+Ij5`%GrUAYKzCt+Wwzq9coxBlzcXVfmx%#+zUyXNLx zxBa)8gO{eD&$*F%1G}y3E&PfR!5Zh!pHE!r_ql&x?ftE%nBA?qy$K#3_%^NfnH|$j z2g<9C%=Fbjoq+x9{sywBSTrxkO#cYun<>v!RpRvwope=pRc 9^ z!M`o0D;73zn80A}G6< ){8v^| 72Q6xJGfZW9 z8if`%NrME6JL?VKJd6OTJZazdhj(*2ZoG-{7fb(k_o-)mV)gC;$VIQ#JD`*z6fc8> zVszF0`Xbu(ikp58WCs5IljCqdzsigpVi HXhhD|KPSx!7K4hAk=g|Pf+Z+B`E w+p4_U)aYXU#u5?a%K_oI+)sr%Ecc{)QI* z+SzIJeazNrfWTQ?_~ONj&atyRJgC#Q3~ljm@0z%T?r_`|?f-;s=&NSY=@%?^K?A}) zmni}m!5Own7WO&IUfvZYw_G 25`r7CZQtICc*$FP~gyIG)5#Y`M zbb~;Tl&R?lfU}oZ7N~v=Fj<&_wq8A#c0*J+ibWs-Tw^qmiOoRa#k>z-?9R@A+ZU7# zL|CZ2WzTcX4Nw9O#Y>b?IsHMjLmMc!nuru `P>CP6iwD~ih+jj5Id+@ik(<3Dz0*lj64)O$mz>+ b}WQV_2xr4^l*&fYZ#RsMmDYr)~fJpHyouG5#HAk++ zGNtJdc~>^8SUC9HBO>(Hh*&JC;xPAc#I#ZnQqlB77wK~V+wD<8OGINvS{i1g$lMsT zQ@1L?<>loEvu%$hT>>?*rKKKfLJz1rs~F62TNZ^#Ccf@J=d=(o{jhEK@c*ObzbXAv zK|&+MAS5LvrPQseo{9k1=}T3VIi+|o5_Q^q> 4t%pojCf6cT;5!MwQ>yBY51MtL!94HEj!@-+2jo$s# zLUM@l$&z_p%T?V6!MPqR^rs7NR=cvF=Q?zZ<9ZwK9EjcbUyCCLKCf1w$d5Fbr3Wp# z^{_t+&c3rNhqfrjo5q8K&!f3TJHdCWaP+|}9oxom5H@qjBj(WvcEA5%I{h&7!kVD@ z+J5FzB}*C523cxhp}d1foLx3Z4a*(K61~HI{?MUgN5MSH((a+&X%4ZAl`QEf_QWQ$ zZ!ybTrG32ef5YnkzBLeff#(8xt3H0bF7j)4zAyEKV5Wde{VCw(V%y^*VaS#UYT%oc zPn#eMn6v(a#-Ag31}S2*|K3>88onokyXz|C(S_uXEFo+7`uksf9r+A2(NdRG_09A_ zS+9|#y0uS)E}23e{ciX0Q4)AcTuKpBFl72~;`yqKF0{1)h4q#;F8X#kD6+)oRPA zZz+vok#7WfMtCYFcNN#A@0r3EO86oHVGnI_H|IvN!h;;bEG;DM;IQ4Jn_q-kL0Gyy z=C@6s2XyQ9FF|!prc-?0FtNqsMkyzeya~aqACt6_m9~^rar82hI4>C`gD^TM0PqE}S!hiTCwn>gSDixnzbiLalSKo@ zLn13w5&!7ho?ZcnO(HJ)IVR0Mgf?v1yWztKdwwg{TRDbg2w~BD81uNCjX)2=E~L={ z+#?7pVdYshEF8Z0(8E(#Oi}-n-W;SjJQey|gxYgOJ_bRjI4k!xFRjtV_vcgfm&&+Y z+P#E6^-PG|UvCZ!4cfqxCl^bJhP%b@!Rp8gGN%Cu2%u(YQ**sn1jG!So1->?4mfRa ziue?xIehoi4(?HGF_>0NcdZ+J{+ BsnA21)_$(h_5^km6#Tlj= z9wb`(*HA^ZGdos~_Ig&-e+;{nFG2;D8yPeo>H(_0EL3-4=5x&NjXs+QKVTg#ixVIH z+T*yYq3Z0>1=Xq0JHA@RpberA_plT +VV`;knZQ#~sI z6w5O(um*fVNK}+aQ#5vH@Z-+~yG8}q`annMxN9mDR*G%TXi{)OE*9k9+M?Z$YB_Q{ zmJ1m_oc)NeA 0P6!9#Bf#ncQ%fVfeQDKwT$K{c&vBAR)}oj#%T41vF_ 4Jt?S3nVL_W@%PM*^72{`R9ewvJ>sv9f+ z7~DJhTc_OI8kH2XBH4E>e1{Z(eIpNRj<`x#kMgHZ!yQ<&Aq#1d+kxlZb^I1Z?)!1- z{+U-FJ96X*SY_k4Ex&b@@JO%f(@Pyt-w{;of~T=bb9%k4gkO)|ZcxxJHH*UO%-~d; zxbk6&?1O|R Y ^Wp$beIvzhUpa_@SjEiMppKb&$KSvy&1L!utBsQ#qARf; z<)Ae?lPo &7B!>l_Dlf3?+~U{? eJ=L NMouWSBkBI>raM-qThn{{*!VgvWUY7(!}Hju?-5hit$L#1f6 z!vh7`(FI)N5z>i>8PRWCU*a;^4UD9?I;E 5_@liFYVoUnaG-%IGJeA9)bJ%gm;ho#!HKEM;_fcUbjfCDT@m_CbIhV zIn2d{ywBk5oVtr&7iu7`^-`TkDSW1KG@jXFO^<=65z8N?`yQ402=RR9(*eh7bL&fS z(gWOeEWGMD;=dz91b1uZr;obL#$P75JI%QOHC$*5%o&--Y4(+z>=aqu{|(qsJ7H$g zx|Z8D)t@%d;2kEWLVQx r(Wc T)K|M+O;(U DAhLt1|`RxHi$)nySW@Jeo4< zM{f4fIrAx&*UkCj$Gj)Z7VLd-^~poAypw?BLO;$s;54u;(rv_3THC KeOluYJlqIW2A_hABZnF1XaW8k&0SsOU`t~Nc$Vie4l?L|F;&Z<}(R%K? zmL4q|9kIJ zL20SUsa}hTRf`EE^J68pc>=3er5?$^J6UChB)pF}8HuOVPx@N8u}?AO2AasWl}uTf zw8|BV7;w!Cp-tp~00rGb*}LbDj$$B1!czSPh n=kJi0tocB#2m 5!;Yr70*#3-G8Er3ngBgNmRipa?{SBm@Bkr7EaY1r-IP zsB}m|5mD(V2qK{fNKGgbASCzT``-0^-+k}8Yu!Jx&fc?UX3yDY@7ceZ$z3}eb0Gm~ z0RRAmEG>?n0stu3gaR-g@WFegtqpvr+nsbgMx{~}758aqYR7xaJtHeQIyw@GM87jq zvJep%-l1c6 g>9MIj>eE6u!XHARty;k-YJ@i9@FPe1s zWj0$SiOcCtjD2bA)HFH7JE3q{GBwA^?UdsaH>jYnn~l?%z||l~tPJ37=8RGiEQ _okm~rAK_! zq4ypjb@${RxtIqW7r7bO2sG;4?E0WA6oLEmBH5;9ium1WF*LNlP`-Wkj8L@$Uy2l= zd$VTdG&gK`M7Qnr9ZjObdAPCi^Ma=HQ5o3ZH)@A-xV@CEjeah(Wa+$=rx=lae6(_7 zcwyt%xb3$dovp3c_k_dM#<4s84*cnTR~|W)g+7ei^m6)e+?Pi_gwj#&GkiZyfci;9 zhN0usJxtTZ6=rY_c5 ?k*e>trN<7PI;k| e9Vz1E}8!GVp>aiCWIg zjBU0F@|``<3zWl?gha) %4`VwcT+8_81{W?n; z${S7o4kx5d5idRQ6sJ2!$i^jd9X=4%$~jgMZkJyH${TsUk?a6(_Cn#6AG1xSffQ_q zFt_p&;VemFX8d|C5V3rdk_F9t+$k0wBa+ak!Fp@oJ0YrjmFJ^4Re CW=;<3R>ON#Pqknp9fOXO _gS@&OkT!u}i8Lx(v$x_NL9f4|-47>+}V(IL>;PiH7A}s1El+j6p8&eZo6Uh-iWg zoPA1Bs_bSzkqy0bo;uBt^w)g~e+{qNn{=jsqUs+MCL^5td6emiW|MZ&7czAHt%W_y zj*MIrlg>rJr~g6X Tuyx$mW0JAr*oCWHLh$?ES@d3Y4FQac$(y#jyanR8t6GwCnc3Mk zOQ{ZbQm2NZXb#tABn2yAE6e(Z6~J{iQ;O`i`E5x|?;UIH_n*bZ`uUX}1RilmJjw6+ zGstT=DRx7og*!!Gd0v;Ie^Z0gg%)g%);3)5C}}#6%>7_47QVo0(#xC-dj P z+63j$qI>+DQ^kamqLE47kF6MdJLf_^!}&(%cj4AuYXAWWo-2!wpoYh?DW9R4)CjUK zPzSiW2kp)hI!)e3zsU`g`)LAcX8DpkWr>ou#;4#(wcz$3K81fAJtd{_xEpF1o_j_u z-I}~)X{I?JP#}b1KAMojKA|U%i;UX=*NPDc)Aa;_QzSDCoWy_T#J6fg+`__@#`F`{ z CQv2)qi+@5N3o`) zU(7A#m>lY9$c7zh3p8xb{h@&tJK#Ma6G9d{Lc8=@?6&I9trx;MioXT8QczjhBLt`f zeBeZi1_~#l1XrboE+9{l9wubbk9uf-hk3>IQ;M2ieoPjWMCagWeW%%|Hv+h^>)_V+ z8L8HEDvW=zU#=`@y7MymDmi^q^$Ku5^}F>BEsoUE8c$n3OVw~azjlffR$Vi<_51VU zkMzQ?-pjLD;rU{9`r=}OFIkaN>h9dravte8cellRJYs?;skY;7t+s!D 3rVrnJVR(y@z0f7?RWZ?s#_9>ngg>_5A8bH@A-m^`)iLF^!7<#fXkDbW%i0xN& zme6IuV&g2AQt@JN$(#JyoL@g(GjJ~iOvYx$=R~kk{8mcO0O=BSlVMXv%*dElQ^4YP zSZob|(!kP&EL-0iag;7PYbDEJn1fNc;Y+1GV; ITA-c+pdv&tx6)0cwF=Lk3uP@ DybfskX^M>OBy%QVq;s4Br6KV)ZF==Rt-wNSGxP2 zDz~PjT4&{Q_CftmsdM}q`<3V~uieys_mYEGy`fv+io3T9*YciK?&i5m;?YLCSyk71 zxiDpOUyxtQ$HG!<@Z!#
jX;N!YEk8<1*wpnq_37f*HL z!kg8W`R6s_FBy$bCVZVO1B?9vF4Eo46#=a4u@?kJkdlVg?`Mk<^pZkXBhzdr=Akav z=}`5cLoNC=#r3cVIgJl%-xPS*`=TtfN7*#h1yzE8?KfV7SN6A8uF)EK3YGC5?jIH` zT0SGQax>3m(Hl_CeWQLn2Y6lpy9tjYeMtd4Y#$4 4==7#I)dcpdEvT)oS3Oq4~l<7Z+rVyKuU$|90YA6a9`IL zD$&|=IE=FMn@=e$M|PO?!Dh5o7sH`STw|ZtIp?Z^+xH&@+KYZvJuV-9Wxfz}0T)@_ zup9&MOe1mmubv7yJL!cBiUT)SPOF&k1;n6FFkGx5DB-bR**lbDn?KJAq@$CCEYNp< zXH6&vI^@V1JM9^WwGycHh}UgQRGwxv;opTD{bAz8*!GF7)vKF7*mD~Z{)CV%V_j@5 zAt!@q%;uS4t=4~PSrxGh&F~^bl=Sd&!&!*w+I9@3+MV)<14*2R-DVYs)x$YQ7$S_m zSqR~!2Zh9ez*qG Kl)#Y)Hte{+eKEVSlv`$-TbAh-YrldqE1P z39Ru3F24-`YQwT>fw`Grkmghp)VbZi#XInI_J{Ug@yLubDXGf^ptOm&i7_RI0XDaI z6u461H6QXkrv8YKg!?oDPnHVT^;U#s4PgO+z!yKoDKWd~A(IAH7u(}2L3V#Lp6SXK zWj^APysYBcEuQ@6F9@z|X%BjZoZ`(b9_p#y26cIrz`}%-WjflVUR?uuK~^yt`tXCN zwQ;HE0giyN2nRATG!}}J=uSu(_}mi~ZV+C6g+H8w`S(apTU7q_2bs6m=NWrU|Di7< zu7z-cYfqMcikD 0m`iC9Dy6}A`i*1@YjK#ecc0?;jLI;>$_=lK|#L+np#37gt zzSD6=?Wi|7jtY8wkk%WF34a0;z RCc~=%8>$PFi4ZJzZ87lcnnrM&iMpp-Evz?Hqp_d)B<4ZfQEFL zK 6I15dnq_SZS6_rE%y)fdEYwI(}!) |gg$+1Xn3FkNTX6j8^LuW4G6pat{VM{+Wfa+(ZYfZ2RXj+jL~JWZTnH! z=*~zYsXr1z=#SK+$a&b7?X_d0j1e4&K?P3~Tgi-l5pUFzMrDYx3|WW)VZo&gVL|55 z=r5E36g _P6#nXBQq_%j5aI@JDPcDgH5gpvQYvs6)4 z7jo6&qQJA_UtZpAvw01jl%x(0H?>3KcIuDDwhAOweJCRl8YrM#y=LnFU4GN}qx#VK z5yX^ 6B z5{ibo=L!jrDr_3-9djPNAVX^qu@Q68`)*ab7}a}Q+@@mZ+$P=ez-CGJp`FDGQB!*c ze;}szUUn&Jj|kLw_6H%-1m9OjDqV`+NR5zswnB!ITm5Ue9IC`Zq9iu15POtOf7&<2 zO`0khH7a60mc5GLr1>A&GLGzg6dK7*#@3u4&|;%BD6JshgO`amw$F>~v+QFH#sbz5 zwwd8sRG*F? #OFh=RVjH8Np%in93vK-w7Nre$~)!5=# zjOlVJ>xR<4r5s*0wZnZdp6G14$6)_!h36y6Oocy^@48pbH4mx~cINaPg&SLUL5pr| zGyOOvT95(LjJy#2A@$?=E~}~i#Faf!6EB&eTJ~)`a8`$cukwJ>BPwqfe(r$p^YKKF zivU47@vwch|4zgAVrn+bp &v+H>e=qjBp>M`B5 t4uIFKL+i#(wK$TFmW*LxGV`#03oP-Ls_)X_ujs;;w1e^idE@szyr?!|#IL zwkSRNeQS8p3%^V#bRq%r0TUD8yOzTF#z3q7oC=+O;q2!71O@`v^9FXFGs5u>S0v}2 z2a0ND^J;o&o*>RQV8q4u%WajvuO0>>YO23^l7(`aW)O|leVVu*vNzZ6j6zwu2J%s% znxfQH*V^ppW1*EjkjfCS1%Ew4^ir8aWx&>+6LOjZ=Ka4hYc-t?a2lr-c|m-|5E;<6 zFe$}>=xTN?Q7Ag=oDn;vXE7CDgnO2U(v60Td}i!s^y*ohxq`f{u>V`*p4@GPE2s>` zl8EAwmkj5&ljd8SV=3ugc5DTWEuKGpBT>&3hoR$11Wz00uFC0~L` mUu*KMtQ8Y-sOP &1vV2V)D5jWv{ KcK^EAi&rDAGef<@1^>E7aOUdu@BbZpF#Kr8A9 Y ZNXAg+n;hE^=G_;Du)l%_(skIQ|G%&uXa0j?8~T~ z7vD!;=Z<`04Ldd9#ziACjP_M|2Q_$jkvkc;M6C~enq;Tvz8MXRt~loKrRS^aGw*KH z+Z(}gzOFhg`!X{24Wh1OBEGv7lJ5uY&hT^43D&p}boIk}Qu~2cv%{fG@1R51M!kdH z)70GEoA-#9-8rUqZb$s1*3!m?ug&)1yFOnHqJ=Ux4J!K; zMK4%|su52}n2eUO2eBBLJ^W!Dh*zByM;msQFbSeRHOi6*Rcy|c3qS+NTu3%Oc@*49 zgy$ogb +i<;o zmw$RWnLiEd=ex2AGnVm-#OlzN5DK$_tBQ@yM`xA`#fk_6J=1Ia;YvMFqAwYKOoDaE zEh1j)K=KpWE975``j^{ >C$;PV?ETLH2b7eO=nrRLpV2GY@Z7+IwW?!b$~v?cfR3=|vy&(NG5j^?sxv*O z1zz?RCd%N+Ps}(gx_3Wof^vBB%MIm@f8c>t8=vQVp5n+UWEIkfy!#K#w2KH6#y=pu z>BKvF$Q{~hDj$WD@b8jO?S+H=V-lEe%`jW7!te0%Mh(#*aRH@AAhZD;=BdkL7>lgv znLQgANxyUCtjT8kU7#Yo^a?Y7Qcc08X#t)0(#z2F*bXohtAp%SWJMSCL?`GK#dX)d z08rU|nb8Y)pWSmh;q}_hJNr=E?((=*;Hz4 T4<|i!jv}g3ztI)lN zOa(9+!C;tWy<0Qdvd%ZZPlSaKRZ`k;p&V>^ek&5=p@+O5^AOfw^XDS3O_MW(@k`ip zM}veG{<>di=i^6TUXPUgSTKv&ZCX5{9C)B1RNTxnU6+eb@hKph;^S`hP)N;raIsT4 zp6(3M)m{A3;Kf@a6yo3tWO`PTzyQjgOJ<+~EV$5}iD_RfA_&24eypv9ju&4S#j5C) zK2Jp{`bg`gB%-NrT;)3=B-%XwMZPiGbwzeAz-3$4u1+%*E>DDj087G9npfN?bQkun z`R7TH$8&YKVj}{IAVi1@EYH5RyMuj@3+~N}Y#s&zZDVXpZ)fE38;7#N-3)rCZi%y` zDG$ildKs+bE6QZForR#zv%OSlZvw7b)9*9J`Sm$kKQoCYtISY)if61j!`w)I>Kh2o z{?q$Z5+PvdGejYQC~n@93c|QQnm7>0ZAz4ao@xs@0J 9x)>qN(=AR?wVh*Bt`aa8p9(*$B3i1Gk=D zo1#%j_7toH2Yzp3tD2!n?^_&sjNn3Twm6{4r89pSPE)W54!mw7B7_U|-+m|4?qe~g z+wY$g`1hrE{)^gJyuBJ0RezU&AH=#tl-%81K!^5fWqVPC))6>z8|rGZ6LT| zKwWz|kOPUW8T3Tv--Z0oHE&qaw6kxejHD5PLIRqNO!(UBbBKMyRec>X&?&nS!O-m5 zVE)qQY=y9S@T;4CJllzA3(oW6Gi;t0U5go2KVpa`{<^s81R@2_CE0q0!JXyLq-7e< z)bd)SEjXnWog2SMm}|)8K#YmVvEOEpH?r*Na)|BWdLiFDz?gViZ{4zgYVl0kmuGoz zfU5!2smGl;U@o@O2=ZQrG2S;qnsiO7(Z6v|bv~K2Ti%*HThyBE_1=D=7up0Ulyv z3+F{^@A9u5xHH^*dsDL6|6F5);5pp`qsF{t8IJ lP<{xiMbsST>_duf|`Bb~c;m+e$oaIf;ALw7`PnssU zDz?Y|0X~V3G9y~k-TT=p^63%JRyGrt`g6NNH6TrLcJl#}+lX}WE%I T!WVE^jtw8@I((YsnEjislX7wbu_Xt{LaK@AtPR1-D>O0X9OXcxlecf2 zZn*7eBPy=RPJhr?#g^Wk;lO{ mStSySCt*lRJ*2#LVnU`kC?s$VTi)1!!Oy8 z>p7 szHMbf=|=s8xN#yARqeiNKMIyG`-Az95tq-dQQ~X==@h z?X)AkRi^gRo)KMVFz*WDkA@$CpK-@SL41#Go{w5u-`Yi#!0JgGLIes&lo |HdlgCv2^!Azur09f=Ry?=rc#orbCj{wxqjD_=%G*a$zue!MPr zr*~I$_o5iS=!*aIJf(qyRo#cM_szL06@3#_Ml}Cnl*`+H=w;>A4?9AYObuv < zrZH4}y!AtRdN6(%);CZ7i>e3ic~qf<=`B#VnbRI7 zRY#Tdi+SuxuUnr{| z?E}9k<$bMtYk&{^a>9m0oeId Y`))>VbzQJQ>fZICI3^_Aohl^(Qk0MB?)* z5HBaa=7MQ@4VE=nfCxt3 yT=uMn`QWZ&+MDZ$xhf`*bqf)053c}MnFGv zRwh}LNN~Z~<=tYVe%>LPOw(eMOB_JpoXGswy>%Z9 z&?CY-zh$1FicVf>HIm6^D6x5jgTRB7?O$yk1lv|d-@d)DaQQY*0^404-SR(B^S?88 z`dfrGiKe-N^zwDY^r6ocY##Zk@4hOWAXE)%eieNo4;$QjcxBUXaMJwfBTtE3buP&e ztiRoyzS#Umx^e=YR4Yzh4@OkbL^dL7A?B=k6=zMextHqGYl@T^Du(#lpj3#^wI~DG z)M^#l)xObv>IsOqaRyq=i`lO4=xAVZRt6c*=5tLsC H#oQDK0(-r&pAM$-~OO!~c!*Kbz4Lop@` yp>g=u|Or8M$u2s-m?g@>8Q3Qu*eU8%KFmzW)?) z-Yx)+>ub@qcI?VUzH7An%ji-O8=N~$>VLswTmJe=NpgXhjSCW)ZxSsbO7{^2vxSA4 zDj3#PUqF3m6C!an>ydEyp`r#=7iq3JXI7Mt2#-B56P-HP2o YmDzj-} zPOSgIF&t%U5jGTC`ZKCcMJ!4ZCR1`65eJsLOcEFQ<`{4e=8bf&jovGDHKi)N6yYal zyL^>&BpK_O@&^&+F*7j>Blt*v&z>>q222U&xL8dFf~gvv`bS4<5Qxlxjhf&8RWi6C zBij5jWxhT}7$roq^a&=XQH4F#O!yMTZ9?iKq<(cuwZXg}tZeQMm;Nq)BX_%s6%uZV ziv=su_;-Qjdx>$#1o_VzrqvHdW@W(p##VFaGan(5Dx4F>_A+$Q gIh*&VUw2l`($L zhRLgE&Ru!LZ?gg`%sKer(3y>horw?UY1;~j_$J%Y?#8x<36JSVtphs`-cjXk6SxoR z$Au^6YK6aER|RdT?rDp?E9Gfj>RqL#OZosRXJoucpa)-LIc`m=Mw=s*OG1x_u?x>1 zp#>($`Nn8`{N`)uQIUQN_I%V~y|z`s{(?;b0KinX{|oSw6nOnXp{-LN>~p-Jk(;eJ zsd+p)wR$h!UD`u})R-5Ys(U5=AM%2E@h{KgOD`)e4L$TT49J$3SZ-iZ>0RJb%++fT z>906vgVxgp50gH~s8BziDAlXm2i(=Q2TEFoMTS081ic{^hG+C|H3cv&FX6%RRX{HA zOMFeT%RTo_tCi1w^#zf{d8lGt1+c1ZcZFGWQ9@-r7%|#;Jz%#$az~nrAsC$O!_S+R z5_mtUFUWas%f;`v*Od&D4)J*6WRHkH6~EbZzSe}l#7O8{J9YJ3e7x%{4L6eMv$3Re zbZpG*i$7J7ZPn*bm3-gLbgk2=(-%s??=;|9F!Q;IhZg!#b04O)Aa~13z)NMikZy6V zztubd^FU|m2K?^ZW0rG*MFZlV9bZxLe%4!;bN-fyVoxxQP9#d;F8uC3am^f )n0_`YyGSTxP7tgI zku#uflz@Gi8LHm|Pl2}q55@jAZ2f*Vra6Fr0yQ+Mj*X1E(9&T7R)Bmkxg-6%I#yA$ zhh8e;-_&} }Q-c;SN!*&+}GMcjY9UOfD9`T3Wt^}^}w*T4>T0=-LU z5zH_j2VM2Ji1BvTQf91GJ{+tL)a~GsT3LCTL>@B!AND|Ai5bKU55noh@+&Dh7LlB% z7Iv?2=#6iKu%CjIy`@bOtSEdc2cm5xAMl7fj85E+Zlb_AM$S+5Eg{F?+ct17`!I*5 z%KzX%=4kW((RlN7QaEJwaA;{^B`8?mE;l!GbphAEaJ}^z5D(S*A5^D+AVh6ghQYws zp&$PjRsW~*pdFbU$h?mex`+c=+)Ww8t%~49*1JJT2BBPGO!zI)WK-%JtdeL_*k&yT z+IRKWq2Rzx#Jh+6eIQep&6!2fZR*5|&2~5Z_@X4(y{~xC4`k9wGIQI0B>&_1|Mz&< z`ej?2qr5f(oH^+6mu;oilLsBPXHM=lfP>UqkFBM)XP!KK8l=|csNJRi5y4~6?) w+a{I(4({pez>=RGwtewLE?s{G$_KdCcbM8#5gFe*u=xxbOe~ diff --git a/modular_bandastation/aesthetics/airlocks/icons/glass_large/command_glass_large.dmi b/modular_bandastation/aesthetics/airlocks/icons/glass_large/command_glass_large.dmi deleted file mode 100644 index e9b28dcf83bf4295697f7dc6fa83d9efbf3d430c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9189 zcmaia2UJtdw{IGR9s~qLC45R%5D+OMkbu%lP?RDaL6I)KNfHndktTMkqSA{f0#Xu@ zA_`KZ*H8qdh7t%NB=6+&fA4zty|>m|D=X*B?BDE}*)y|emy>8|VaUrR#sva_c#VxN zTmpe0z$*j y8fKp m&FLj8OY0V+TIJ_uNhtXA^g^yNrPfQ`?3M$4lozAY2$pi{_7VWrAfO__WK zM79kJsJQ0UED`?ku=Foub9%D@=^J~_4r>FLhgVWBixds1ta62RFbpW`jVBnz#cQ*3 zW=|@x_kRg}lu7Q3FA(-)7(ZFq?PhM|#;hk{ciZI&->{P{H#XXx<>(R57Zwo7*wcb~ z(P4L`1nt)y1(^m6>dAQ26i2TnaqkBLUfJ-2xxKjPyjeHQ=+VIq*}Ia{1&H4e@Bo>X zrIl@XdWEw;vmlX4*-p?e4_Nohf{iB%EKXIDze8=yLm(z2Fg%ohC|(EGdi?<`c=Njz zb9p(_{x{^BBsvsy)TN0pJFW^`?$p>wBeTD7xdSs|v{o>;3Yb#V@0%h>!pOZ=4tj>2 z)L}GSHd7)1R0WlYmO^|G(*X}u^Pe2P+D=t;hv+n=aq_Ew*~H{bedTk3bo$2(v;~cw zpF8k@9L#W#4_MM@^B1&aC(mtg%$x>4*_~2fSKQQl pct(HR%^2F 9s1#mk*Do${E1XilksyYg)N6Ug0yS6(xIKyLtuGOUa$1YHVtr{5n z3CM3<-$BnD#7FpWjuL4g#kI_7!JYz#M`^fQnm99J--^&nn8T-R!5o;GI<{tlF{E)6 zElp}1JL@Gwy0QCa>}&`2>^I%u$4NFeHcT}Ocp8|-=?SO)S^-FPo)gk2)8~wW29A`U zV0T;$WE8xr50NITX {E2VTK4v*y>MuZn~27vDhkWxFeTVQi~b6#c^es=}PKT @iDNw>|cgWq`=hLUsaMAln8yo-CSU?6VsU68m$G$kuspe%VPKOA# zEyQWNj4PjA-Qc)8>+ek1UqQ4w%7VN7{l=d;gtyGcJT>eAa~YvI9VNnfm97OQ(ZNp8 z)4xF{(7z#Nrx-%lTehB!hx9gahi~rKHZ=ZJag^1fP!E2w0na6=*vx1IuY0_suP)1< z{N|CD^d+w6oT{|UIrKU3`^9!I$14L@ jy%Vw5PU zdA qr^7+Rd z>YQ5Y5X6ggW>TaEQ#bb)9I2;tYj)3rogSs2Qg$K^OSVH#j}b*lZb26hKCMkKkDiRj zMt%h|^g+-3PWkbo@H?W2Ji|Lxb-pA{wMu?XqTG+2u<3f(#Edf=E~#%_Fg*3ZOVb)b zBjU~Lhr?sL&D7AIGn*ClWT%S)Y>No>O80LEQSmaE C`!q>lG1+hwElq!r|pA2uj-+s3|;>AJUq z3Y$K<9wKbVL_$!6D`sCYGv_5qaU!HtLd1G6d-xjx^o&=~PDi&V?&}3f^lXRKHU2zK z4twe>_hFKKHi)aeOzwg4s@lH!hf4QjQJ@(BP l5~Wrp_p6;=WkWj z>n1L?4ZW=unihCrzQb0k(sfoM_t?V+ZgF`ww2S={`PjB3DN3Y{B-cYsw@x-*?Pq(a z7&}qY@;f9pbt3LZy6x0`k1M{NzN?Qv@jle(d7<24DFUdH_f_Zc2TH#BmRp+jj^(xP zl?qDQ+>b @7=2o?D1Z1M@gKF+ajlycG@J5(@(^P{HEqHJOxGW=Qd}s2_E`U*f<1s6I=qR zQ+FJxr4JQc1o&s$Io#pT45>DF(96Vy7rDg8?)q@i$EDB21=330n^l$hf+rXMsSu>^ zZJu)27*p=hKs_)npQWcuJBh|XFv8~3g;joT=_0=xO4US3>`X=jckV!&WY|n9U*x20 zi~#0ImxrFJawm;gxYlsy9Cc^GF
I-1VoxV9yVh&!EaB+cIC26sn0`ykt|>=TTL*^i+tR3s$<54lBy@LmmrpIs-xyj8 z+FVP(qD2TXHW9T9@Cl*@@OCH;i=smXoZ9*jxCxYt?_r5Hf5X=Xq$wy9 wMRoDds+5rb_ zzDI)UBeTzemls2TI-8218dkZUZFpd5T;Xr?%N2@STj~j{S|#wwVa@rA6+wG&5W$I1 zdHvs4G{T{%Yt|Bxm0aeuu#E`6!)@E|wGQkfyVY|hDN3qsD@ZbjCeBGA<_IY_n%&UY znh6Sibf%;=;)vAlKJ=4yQtF~?9fARNENPW9>@e7OHgBq||A!&m^tUcM-6e!)-xA9a8HN} zsWZzA@a;&FiLZFVq&}Ut*$fk%M@;`)nYUATWV&Xc1auG&tnbJ^G?GF*=yMc)7_?L~ zph(KO$tjP*zu$vzE#g;0&UX5jIO7#?Qk8TVAl 6A4So`0_z2IweYoPX#@FYq8IF1HOJvm4>c7zl%d{+vo+NnjXCXoOGjtz3y< zuKru0Ox%{Z?b?jZ(E_v}AP=K8eAlT}!8;asP1b-%p~xHMw8!t*D*wZ{NV`Y-w^`D^ zHH YqWM|P}q z!tc?dtABTBT{;+f@zKvULF$k6D7rTxw7pV^E>ylP_!qF;#m+HSE70+Khtpx8YR{K% zsXG&VEN)gNV0h(YrIHjmZ*FVXV-+rYmA0>xLXeCO9_aV?4&zZ}h^EwM3k!d`BQKB6 zP5t>)UjZ$&e0X0czQj3{z^-kz1ix>MQ#^`_$I$F-3#(G7aF?;8&xgMKxgL{$hRc9} znWmcdsd5Y q3@>qlJp*3ee-H-Pg2LYfxUyaKf1(oKeuJ?c_E3wYj2x%-2m@? z*mf9HAYu1%-FQaz_nD|aLryo)F=A^sUg_BafTz-EEz4k8C9nkv #WO)C$A}xkg#MrA688D){oXyZofVB8Ao`gcpI2_s%e-uV;;VO`mccHN`@Pfn zdO|Y9;>^)P7`2NL8_QAE@Ai+ %iF$BgPLO&A!?($s3?VV)aXsVieHf|#1# zbuWMAJAQE?S`q1wc$J3MKGj$@+D$D=NyHW$KFgZ859AflzuaD732N;DZL3dqve9sw zBWDy!$uHlzbu;&~4wvCN%{Smh%_q{+I>J@0N1(>x(FQ-9&V<%dE)m=lzUX#yuhiLl zhFFh=J*~)Oc&(EHL%N%f6;5F* iA;=t6KM__^$iu}Uz z8m&gQ1i~4ikBK1^8506#rYJViOwP{>D*j|z6o5&dv``jEFSX@Px);N2e9Qk;)$zqY z70H8ZR^fnKV8v|Gnez}8LM7&Ve)GKR_DU*WEa}gVa-5-G&*rP 3$_qAD@K-w^1g?&8I2XWY* 7yb(T4(^3++X@dL95C0 zzLnZS1z2 zTvM&+m9xZ%u} zruf4lakhy54FwvEF7rZRM812u?n61E`59d&a7XN!ATG==8wR-9`R+Y79gi70KoVtK z0iAWyU})rgtJvDZgG_lWmw;tsRX>je?6k+uOFKdSXFnA;mj2n91=g$tbeck)4L?EH zKybiquQEXpWGun1?j^9A|FWpQa?keEw@k{L0YFRg)4MjmTZ+c8`lan}%Qe*%-Zw3o zk|BesN!LSpTgzr-ZZ$r2af8t4Xz1(>-sG5EV%W8^^>#7Qp~Jz`UNWCsV3gezc5CFv zGql@~sl*R$NN*S8bSNshq!A`4*gtniOq8%xsCo|8BzQ9!HA#GBId$Ysz__upGT3g^ zc-GkTx`^;s8-tGq)Aa#^yXxue>|CURTjQq6%7BW9VwXQ%U&yb-nMZciSfVF?^A@5` zToXvhmJ}3Bd)sVSwm+j2Q1-e+$f9MiL@Q#ju)zSI%aFb`Y oLq`^oF5IJ_$_EMTQXx;tz8(jgQY+`{fPBhjamZVsb zibJ_xkH^0PJB4IHZ03bTi7k?pW6uIbOqw{}zIb-WFKDBf3t5*s$$mS!@3u%FQzJm+ z{`mYE{Vg@mb?}2n=q<;Ev;(>;b;h80jOMDI%G$AL`B6no>U)D B%QzMefa3*IU|sfMosJ_L#T5BiK_oUT}}VE$X1~w5FsrtbeV>DeNBtf8OAlU~TDC zJvZB~Ic%vXkT&925||3v=Qh%^Q^M2e+qi_z3Z5R|R*bfu;K;-&5mq5p(9Spp+q!g4 zJ{FuPV|v{(cS?NYgrEQ5Q)>c-^l)l2{?)@nFW2-AFk@{66+d9X@iIwoEpw4#Tcv9M zLf(%$%62;cP6}=zNNE0!$fp`>*{LPa=;Xq+K9=GcTzF5Qof7)%%|webapabSjBY_- z2mc!!_^Wx6%!tjVXicmvaW(}e3!p%j3+m7oxakTKJ^de7C0c`t1CH8GjyN(Fbu%){ z{(pEX|E+r%Y%KGO2?^cTslkHlV{*p`IKZh{aV7#@&9@V z_Zhdh6-6%)u(<%KXKgJG3(k+hD$=<{DSJ`V&cvdrDQ+gjVxIvFwQ_N1=Q9C!g+PEa z*cxcJLzxgi)~t0W^zZ7jrmQp#7^Zt7X0`uLRPbNo=R1Jl{+q-zhves}e9DrNiv$yA ziQC^|$ppF!zXM&)X9-NS1tsAT8O_0X{pS|IKph2$^nbdEJCXcWnVIkCQ0vGHeFB2P zW?Fsdw$Kn==B42}m=9;es=A8OS(%x7Fw3%NkI?q*JTyU};D=0i<@;DPV!uf{7SQx} zv~f2@nAc%UoT7gt%q(dz?Pq@9;gdRbp1gK%o*26Q3577gn4nxNY&}>3Y`6j Ze4E!zU3t2R{axm>0Oz=2bF ^8jNtmUjzYE2tA!>?prliUr}<#A+0jiU{Ro$B8n1c^A9BcnTsfVA%YCPaX xf4Ww{(_)*72MQ9VV??}&bTmgga&oVt_J<{^hs{> z`qK|V{0nQT^f&i@cF_&Y0vbO@$mFohi*=$xT+zh3m4=^WcAOW3@fFpo_-#>GwiLKc zZX{OKnW wO)5ol)?WW^PBw=dev%kURGH3Bw2EayaK28D12T)tR+I7T3WDU}T% z5*GK_g _Hx(om z+ttq$tj}TmQPyDVYW64UBT^Pr*%7h$g75RexW~RO_Wz+TfgIKGLZ)1*Z*B NOJcdxG82kdE7 z<53QB4FR>M@)##JsjVLVCzK{hEYW_3W6z=gS#kMm@&b0QqvSzPSNo{f@P0Bdv;t{~ zko0~fP9sgY{a>3`RVyUX>?FEk+XW&Pp1K>s1l=WY@a5nz1dg}aaVulvRs2`3wE6>9 zt}3`|EXz6Sx7u(^hRBIUP|%v=j<9S$mwhHqHs_PkH}=9q^iglld!&x<{ag9v1)Uds zBjqmRfZ$qD((C2?^6O;p3T-Y!@?2}*wjE)x1s{gza5~3U5V0h5feEsLa7$XK0Oqe! zcs0g?WzjzcLTAAgH;*s2qaqe%fXT3+4%ojEgrD5^^01%x#Nuqu$ycng!e`GfjrX%_ zxj#G@-wT)=rB}~2qMuF489-taJ7xXk Y{l})Q?vJwo{3YOqkux|(H&7AU zR19~%R#_d_G7p5Zh0Q${r;r11ZN(EW89>Ag-utMRM;}EiR#QK~gbcK#=nkbEE7?5t z_o^u#{a|qWS1RkmBKlvxRv*1BvY7Bmi`_A*S{bly?_tqCGhea7y?G3P*&mBaEJl zBh#=o|4&7@Rxm|~q--yK$t1;ny)i8#eurHH_v>mQ=zHN~;bt4%lV!TpE4W)R&ELFn z&@|pW=!49nKNn}y=}@!%i!l?>b`l)WgSgXf1qDxK{aQF^x95hyZB%n;@@E9?_Hh?Q zy}OAng`UoaP^iFp@)+pa-IUNtHy9K2OaurbxSD=%F26YOAaAtTyz|a({0jbfQQI=^ z!hxJa8+Tu~8RJ&)>CfecpzX%E!w>Iw@jO3$Kd^rZKMi{@3SANwKG(_fW^;2J9m>tU zD*n~a_45RDgqNo_N+JsK_iuMZL4H_}= OJ)9Iv0p{YnS qhgB2$HG*PRJZ?J0pZi0ekK1;CIqj62p3+9&irh8&~$9xVV;7tQ)SoPrv@T zz)d-OoX2uykh166@YKg2tZf;JLqq5^JOJ|FOdz{Yb)49_-k^RJ2M-`v_0nl$~G zFs1oDu1fm~;kfPaVmuH&%!tp(>mCXcfpkAf641H!mimF^CVE8K5{{>dnAtbZ$^eYq zuZ!7Y`~5!E6>_-~rFGU=fakt0k6kMwU3WRP>@=QtnL{zb&=Slcx0J^*xh(+Ql5iZC zAZ^n)UBDX2&Ff;}uf%FAd8!h1tMq1zs O?u|LTAt4W&Gj=!jeDZGnx-Hcwepn(k&es8JHa3sbU2xv3jpim9YUvHJZ=- z=^H6KPQ8{-Q`pD=5;^@DH-MNWqY&ktLU8yD?xBJ>sU$Yr3MVOCOM(%u2vbu@tJG#} z2n(WTidcyjDWGj6kYqthfPs*uG7N*)%+XXGT%3uaytK;0%U~?j>Zw=S<$7A8%#)uB zhzk1$uLEvG9*|VB_*h>X_LwsV64DTr%-?8II?%emc)kD)T~j}M( x31<9tDY zko+^@dtAbu;JcJP>A2=I@2;cq`XV_eo)KxllD{jP+z W}Ke-JMkb*JOKr4 zIjM83J!!sNTtkQD$iHY-)_?4(^4re$)Rnt{6Uqv06vvoa{&1uKSx1{H)q|u}+U?qU z>&J&FSL&Pp6WFk#oQth1nFQjuaa4He7eS;&lLZO7o*=CQglhryPh{zLBw7f04|Rre z#T3nhY(bI4eo-ZQy8l53mpwsg0uesM7k|$Ak2Eo?5V8;DQt)RTzl*vZnFY8Gjx0Yx z-|0>`@Q|XY1+SS_z|#-xLx;I*u%M{vZG?;BI0L*KKZe3J2JFErMM5cRVXij*LI20g z&}!h*^AJ8x7wi9v^k3lr2Qxn=XuEj@Npz~+hi< MUZCBUUEaZ!+~21_I# zxa|gXD5~=cBM(d {mC$`H1aQ)gHIidNVd<9uM(mu& z-T=Mw95{c8)$l}0HXspVK>D&RK)ieZ+5(G@&zW +Ev%xGyEY3Ho=%Zhxz5CO zA2@DzDL$i!0nR;cP}TWtAF5;cz#ZU5)w(DE^iSHna7d8}*Rnh&s&p#T3i#p%WUOy- Kp pwx-9iQ6gh9)xB(!qzrMB~5CjK1*qi~Oe~w-Q9&*DSor8~i1YHTd5fFUC-wy-| z%Q@o|5Ew$;JQJ|KHLqf&uF~_R_e{lEt$rQStXl7B DUgS$v#1i^ySpHeEXd-x ziDOvKFV|lG{T=CkcQ{Tb8hxzBI%mMN<9SacLa!UJ**(|%ewyuSV7JVl=J>C-M-CA6 zk$$JpL0?XS@5}rq-2vaZ(bFQ8e|Ye+uAaToQXbP|Wr)017Je*i`J2?CGlFlQZol2x zX$oh&sc$Y%Ju=)(zw_ZNEhp`Qw9NP7?Nq0R$-Qk9W4s*4Krla}GS)->%#A<@ zZCaVa|GKr)ZN#+7+EcWF2>b^3C7+^=ajg1uL34cS^+@N<{fK`q--ixvRJr1Oe-&}s zL9~Snc<`C{D{P~nYFvM>jiDA)NSH{AhrgAhPd ~8Oa|ur{8k_&1(GFEe(ScjDMZG_WwBQk4lfhB zv@Zl}u#f)o=uXuCpiZGjA`N_u!Ku|RL{6b|Aa30HM=(2OP@^Ll@f*Swhuw>oQ}x-2 z!jz`%z|t)I#a~4~yWMvQ&wY-&9^H3!%svNls=0F&dX;(ZQ#pbqgg9q&22rT~V07KU z27EA|P$?3yS#-!)g!|N?;R7L22Eu~xzKYnT;-Bhseewz6Y&oybf6_Ok$OJ1_&6WB5 zmue1P4IT>Z;guV{B@50y{OPOU?YR$a?lv0KN&c*D{F^M$fD3oU!hD%K#F^pgZu2lI zSb?M$ZnO4U(Jg?l>cBz|^lcK9qO6>O|C#^APVW@@)}BiDPI)eO?e3Sn)NvoI&BOY4 zSBNB )6}5eQJ1w_QalB0+>55% zwJN02tW>FM+X$ui+FlKu?6QzM!o_K{TqDG5gE~D19rw9*i=L;qGQOPUBOz1IXk^yp z>!%=q_XUj?M*Ui)`}vj*E#( ^dZj`Qjbh`E92SdHpmRY^jGV)9fAcO+A#oLYNd3_!jh<8y~;ZJIV|S z{*#EY;Kx)V>YHR50`7K9O0mR`GkZXoeOQ!0QJsJlu_0a!%=vI&Lb}#2oR=ki2nVTD z69MO;fh}bKHa5Bh$!KmDkqsDb=_#`$26b$N=HcZgkQI;sq+3I&MqyPmm)+s8DS~~x zUJ7WKphJY;olZvPCqgN%cm)z6m%DSuK~m#sE_c{_g==b=j(EC-De{+JB0qXPg~Siw zMcT+6a^TeqFoBrJ2Z{3FxSyv$d=*bBd$z$r{#512^CYuI`*>UUt*6ssr2cy|)HyY9 z+_-Bf#AXH+WeXVuZGhrmbTsvx*?Rz6KPhc&-6yv9jLmu9F=IPAmxgd(9CUxUF!7}S zQ! Js`ta~>l85R!7!Z>Ku? zFMTRsrqqL0zCRf5)FBd~bp1RR)TkZ`=NLuNwtxh#ukYj2B7Az(6mk`!)o6UY@!ej> z!~A5Z$b$Jg2|96D0jrK8FW@d+Y$%7w%;RWO!$u8a{jC9MH;mRztf>D1Fq vo}+uhwiy^5ItMNU3`>ls@iJ*N!p|tAfO0p+eSL)1{+S!`Cq*wDRKe4 zzx){2a4v_cf*8|Ek#QW$-YtMA|5R6Lx}>}(WL3D=>sB<603zdK&b*@n ziC^o@82dp1D&(i v3Sxs@W#rd*EO4${{s$PkynewL=So_fSoqZ10=br6GM6J8LrPB-|xQ2QZf~@l|`J1{N?v0?DX% zf<7g;#s#dJ;fRJ3hdaTOF>&gpNc|F W6cEV%*@V>EN^kqbw~)el96NdlTFwY47Td<$*+jBO*U%?bm=7|6()PG{7f>a zE<86J+Bvi`D330?R3rlq{B>xHD+P%UXDiYj8y0X8eh_;;7Jrq)XS1T3-8_^r3{o=4S@(9GX=X*qdk5w|u z>xf%M{ZL&3JfEEj3a+6^V^c&QK32tIhmJvuxqPsiz)TQrf`+};mv5}utRG&QJ2zPc zIuiYr+}_1tQ!F9Aqb<6q`%&|^&f@*BZ~z_f#yMJ`-)Y8StgXBO4(5R*O(&=Baz `F$f_~T< zKb%9j6;`crb8r06x{JfVbS|00+@D3bS$JX`iwcdsv%v{+Pn8qiXY8aam)kbzGF=RJ zlaaZ(yvUNc)OR9i_3`WnP&*!E3Dv}FOlI5ol=`^*G^Zz8-$FfC0dDhcEmlW1r*M+f z(^TK04mR~ZhtPZDPHOco$+vqq_msXx11#|D6R*Rq7PC HosJ@Wdpi=82>_SkK8f%G%3OTH$Y^W}cx;+S$2g zkxWROicI~|E#^;iJpwNr1#P6HtZZNwwl6xzZ(Z1Y&r5hY-dlr3v=rTMATl3JHe4Qc zq)YS=;sIRu0H>#?%dmdhWYx3`Rp5T4bW730iCJbT3*|(Y&}imtq}V|_c{+InU)g*g zKA_A8Z#s?3irpi0eFg_|d`+IA)J(OS9_fgC+`j-jbd*^Ad^&WFo{7&aGiBPYPVvY7 z> K17$uJALi4-1oW;6h3+K zNXW&y!`~-FvP54_1M*gV+6m=|zNT@$L_{0%ko_a(w=0+BI3$#gzj|mB&Ut{y{%qR( zChh2|#K#esOI7I2cG+!vBkuPVqoQnlqE~2A&}G*WOW~a;QCrhwlWgAx>Va62`TD`Z zR`(hOjwklTV4Dy;uk87j^@9|N>hIxKsh6&j==#P_@A0@_e)oOHhP_iS?WkxmNMsbW zA9jqR^!@5oHy<&1u0>Hr&k^q#jvrITdSW }|CtQA<`ch01{Qj_Ybb2nL{Rl)^d0S_YM^W1@(5?uW! zR1K^E)X#JExd$i~;5oC4^-t1fz8|fI@PsXDcN(;2wVVNq190Iye8m;J07xr8pCwpe zho)iI+LmmR4pQgv1fUz-VdPj6mZV)QOxl%(w)qApg7a=U^vxd=Lpj;TdKgWd>{xDU zB^mOIue*teNxLbMLx3GKwBy9GdZM#yt?5gF2&p~R+Hvz`S!9#WNKxoe_tUplmtis& zqJKM#gx6JnEzpc>3R^#1+gFxG+WI51(S8}2yT?hTL%%o{2Zn0)4)}l`!i6jPO5UPs zk5#M*F}N%IZ>e#tTq4FIL#b-Kywt#u?$*|lY33z|Cvr|;8Q@G!oSqynpVPx+xYFaM ztXNY{LKJ);$~&`o+zQoJEKbIKjPbmW{DKxvMulK%V(ziSnJ-Mq?01u+5gjckbS564 zDC%lPI}EZy+&=dsKSGqYb|rdf0QRw@9_|?x0xX4_YlsR>EHyFXD);@!ohajvBVP&^ z=48lNdtjmFtiKU17PD5b-A0Ioe~>U1rz`a^*sgM)E}xEH(0I}MR+DQJ#@b-fsFJzN z{3yUub&mGrnXfd?T12G8wqcB33-jX!$!z^fn9d$}%^c$dp@)gkF?EQjW9R4+Q}=Pi zn|XwppP=Uv67MF1#}}#Ejo>}?hS0Wxe17+^wmtA{5%spw)Iq}b`Z1a0Gb_}R?XLgL zJP@>(Zf(7q3w(g1Oj)Lm#C;X47C{gcMiXWc1*kKN)D{Bz%We=aFOnec^Kl(kFhnk= z=5_8?2PuK!gkjaf2q8L~vHCJq^^E%mH&fH@pRdENd)ExPe&$gHFWgD^N0D3C&;5Jg zk(NJdzon2Jv+}CZD$FJm)cfly$n>w1I(o_!+HScAy+!I`#ZCH$SKD14LDaWTvw%!N z2i)5J^G_LPZ@klle^rut)`5&No4x}{uM%Fq5vd-1t{lPNbNcho=RCR^u|68F-R2xR zf4V2W(unhUSl{3MGhy6CH+0J*=*X|n-9Npg-UWwD{q+5xpSYCK`yaMsoD1zK;S*Zj zj!03Y5nOifv28zkZoY1Zok4)!5I@D`XI@&{d|!hD#pt!7_8m=0_dkM)iT{oKz4d3f zn#Z4_A|jt}PPs p$=(Ucdpba6L#$WCMjXk%ob3d1 APO6TZ% Xco;eN_W1z5N47M5L_iCIBseF}NyAb1Y=XGC@Vs>pk{- z3mDVWr_mYjUFyHNkHt~Pw$gm~+lpq?ekU6N{t?(z^ot4ixS?UCX;(5__e@dgAin&& zRh?uhw{+0{cuf;UMLlV77Tkq*N#*W~e(OHJdbTuC`p~pe58=*}C$(%wspa}q1tMuS zbE(&K3S_|k7<7+QN_qRFbL0FJ2F$a7g671f2wfAs&K_VidaC3R6nKsi5%hAO6<`H$ zm8}|rf#Sb8o(!!*gkic4UbC_if#N*ITz9jc)Y=5C7V~J =&`yHjCd=#3jd;o-aCzNTDIEl&-pBE81YocyH+Rb{ zdZ%XoSz%kV=R3Q~&z|+$L;mOyYtIADIH0TMh~ZH46{^sF+K=;{y_&tI##js oY&8LzW}11H4r}m;s23E z*23iX!2fp;#A0y2Fld0n{n3;KINUBg1#nsn-cG=4?Xj~0CME>%?lm|t5Hfuy;QxVZ z*(a6kZ{piyw@-hO*+P(g9k}U0gMV~ >ToR+1h+Me z7FF}fhuhiz`aSg?++p;w?|b%7Q1*ZH@$V)bemM=BL2hYYKSjXZX7Fb9lQHhhm}{H6 znWKaPA;zA^AI3Am>~Qy;lE1_yqI#VOKxxwdw7W-#cI>3nV`#FDY6MuP+X*0Y6x zcO; &;MBRUj-LW;(Hw;*s?TDmU-T)xAcB1^KcJ5 zD^hU!^o|THIYCiTCk1ptL}dAjVBJ0LE$xJfk9T$?j{CWrM)4ic(|%^m@hJO=9U`{V z`gC!!$-JWCV25lV3*L8Jy)1oLLCYc0`(=pa{j}K&Hy#Wvj2&@Eyv~x%s_4&p^5sF= z&y$wtrcRYygJ*llE39lYkUz~gj0ge?)86b-d(bh4)!iCf XVXkY94`-J zWT#_Kqxg>=;BDL5sY~oq69`g>pH9Nmz^{exC{Rn$gNu4$#msS?=9ICwCsxUo7=-_u zBZd+J7&EApiwsJ?O7b|li48bb0>-TI!RcGSt(^n}6*a#cPyn1V8&v85@yj*Ari)31 zS}vQyvRRO*J&`8^ou9$`7{+&z(Uk@>u#|DW=hPS+9+4?^m|;9B+)Lg~2O-wCIDllU zuu}Hi9;mUG#i{K#uIMurd=T@! #q dww=KI%Pvul#V^1+q4 zzjJPH?0Wyvzy^Oi3gTg%OuNyQbs78J+6ux)0B& !tfszVkaZy0KUyF4ZdCCt*le0 z+mxLMBD`%|;VAHf4`$XsZdq#zP+o0G;&xti%p*+8I8zh$prd+63#`khc*7{I8UXoT zjhR59YaXeB1K-uSSA^S&1MDERA!3+gQ2iX{77#_RC7G!y7XojMy!LBweMQK*CwGs1 z8ZPm6>hkR<>Ab_wr!}p^Dh~4UyablU*3=r7pP&)le{TSADD1`Y&Kz8jBtxSc#|fCc z--hX_HkO2B(tS)OJ{glitn4L_b|JBA(g$^c Foed(Btk;Da`ahj%{%OMW-U-yvrNXOw;J}_k8Gyb# z{+-p{dt`^|fyvJtIG-Zz&E1u6KjV*}2&d6%OuW&;x@R5v+VS3f=D%T`*4(w*9_*h; zoQ&ovya@G|lC!4i(bMvaR0BdWS`(+Ds>Oj?q^9GW@*9u`2kHIpStr+FePWAqdcEog zXq
Gwn8;*W$2RQu$!b;Kl);7_fs zbzs*Gg~WhwuhF59=T2_@KpZs@>D7EZrOe@+Y+W3C2>auU&UQdC8VnSX_ Pq7 z-({0LkQXoSZ>Zhh=6^%}XORN#EPw H #V> zPBsCb8k_R|aNWCDg&pcc>m@B8T
Rr$1`uq=@ za%zrrL&W$6V7 zjF2L^F_Kw0d8s^g9}vn-=cC{2iHddd5WCB{@7C`^fb6B6eu-^rGrwCckKiS*FVkM$ z{&+ayV%o2>HbE}cTjD?ucq>CyHbjnDRw;hy_lV>==(g$-H7d;H{khvT zWk+wj=(nH=?mh-vi(M$@N9asTYnM1q48H$Z#%X+{3Sr>vP847MsrMbzAsGf95zldE zfXzkX1O!anCdL>AM|S3r)y !c+&t)a z0|-23_#zYZmI1^iD_BKm#Zc7iZ6TIn-yPXF-Qhvp5$fqV%p{g(;zE=VKmG! e zsN^=?$fVsaiFgX)^Optx5dI*M(|{I&rS~{lPOMGU@TO6|LkE-5?><ú|Xk-kHo zA3mODW_VGBm6 !Q&sK_fsyP (Usn)KcO+50A6 zJhYP^xODQvuKJ1Yj6k*8{6aOiwT C7l)D$XE0i;B2IYbL@*hMxe1*2AbN*9d$VT{^+Hx-EC!~VC|~r zqq4mVhdw+o%-KkSLMc))e?d~~u+czP_!9#4Png~!wE;Qk2Q*F}ASp8@MQWFt4L!D_ za*!AgoG`>sWFtiDTooTgRAtoj)AxPt*)t>1j(;}4{~*dOt7DFTgTS1-34}Bu@<6!r zVJppwoWM^4{=-moc|fUz%AX7|5f;< z5t5B`%LBRpXVZVz{HL-Pe_*oygL~ll2j5X{iu+#Th^G%*GVx*d)>Ee#Y{uxwng@d@ z65Gdkzz{r4MB&?-$S&t`SVb9N+{gRA&jHf}mEU#&hN0iqD*6GMZaxoBX4T5SqIv<3 zU(Gl30Nn-e(64-fNB%p4!@x+g66A^j4Tpuy>;Ma{AGlipi1Z!jGhspRNyO{}^oeLg zj{u!2x^uDgShs73u%IdrOIV!+Jvu$c(sSSA^}lttejvNz{~1QP{QNkeh!}rQ_y(W> qp=enMG)6vAdIX37jhi2soUIlnQn33L?|{#xKo%!#j+dFb#rziyWUu!C diff --git a/modular_bandastation/aesthetics/airlocks/icons/glass_large/glass_large.dmi b/modular_bandastation/aesthetics/airlocks/icons/glass_large/glass_large.dmi deleted file mode 100644 index ddd1871e6feff195ecd30fda5c77f200fbf00035..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8807 zcmZ{Kc|6qL_y5c=jh(WuqsYFs*a|~sD_bEXMrhH(Sc-R;86ygXLX@$T%9=G>WX3Wf zM2jtCY}pxEW-!b5HTC#>KcC qhdl|%ZXZF;9vy0oo&6i%PL;(6@O?JK5VzT?|YCyU7%Oiy-q_G*KqTc15fp1YVV z7?fL4pBVQ#kvl&5pj8K?e`4A_R!0d@R`;slXg#OIwK}7M67s? `I(ox$(w7N=@4(RE@Y31{0-*HP=*@s%1Z z8kNPIMX+WGUcnE`cHjhSdXrYy{oaoRS6$n6s_d!#dhN7TM$)( -3Kdp9R``3dng#My+k|E6Swh>k zcO6+PD^&e2&>$!53aAfi1nbi`b#q~`;*>fZz{adA r6 z&Y8_IcN|2Fv>XkYSI-Uidw#W|ns*JcB}!RtD#KpM$;Jc{#Ix)Vx~>px*D5Oxk>=@_ ztD@d^2@wjhKcZ8n5>h;SDLFp$*~(Q=P*ni#7vkJ{Lil*q=u!i5!!Wm?_(BdO$xsXT z5>gZ7cyW;#`jGX5MRWG|yj+BR^rLZOY|kq4Q%w=cy!`D*P*y%nX8PA*2XOUI|8*x~ z)z6>X?zD=hjP;5w>@>~$7$^jcghup_xJasz(FFaG^zc=~rkllYmV2YOieZZF;@`lz zykTm@LaJUQv^%becSAHepJPL`y!v=r86 NAwW_KB7YX-7Yc zXG(}BANnjRRESNf qF8D{%t kntG7t>dw?LnY|?> zE2v__aT1rgRZ*PnCHS1SKNg<8^#C&ke!4uB`OA_bIR&OYaH!DZZ%hvDwm4XKZ<{HB zw)rZI#&Ec!InxzRcze3isSgS(7F&)|PK@a|<6g$W(Fqe(m8VXmt_F~^3sdP5cG*%5 zD`kh%ew?@OIo6!;elH9=b?wfP$@g6PC`W5FpR)a wB?h&h{*`*H{(Is1_ zR3`%+-$m^av%$gJJB1YvG+Qukd?8XE=547vgC*qb_a-&bO*s~Mh=D=S(H~mqFH1$g zk{TM)?8;XsF(gV@eAwuYaEYQYB`++Vryz^70kJ}O#(BmKtfHl#ltbrJ; TM1^smNy2tTWCdH_T zH(49E=Il*7)|_c3j=53eF?h^_-Ye0REDQRm80i7HhFb10ixNm}{prKdfapCrRdzxi zstZPQ8pWG6`$$E+J2bP7gs$i)%AKe*4{NojPwYIi{o_CFma0GFL?rgQsm7OzHr04U z6n=D3-=w}wV2QP^B2OPznwNaMFMe-UQ~>C;_Bi#G@(pJbo;(`rEy}CnsGgjBc6Da- z=y^wt9XCRm&bCJ4gnFn=WvLQ(>FM>u!Sm85c#RiZV?_TE@2k706|koe(lt}<)lzj4 zz3G3$;d8|tXBm0bCk)wiL`jmIF1ZxZuKY<*FYw^@A-qP0ikHQ5?!MF%jl<1iOq1BM z_f60c=snv0=q8R54*ClvPjz4yJrPawa;SXSs^F$7HPWWjxBVuzv6Q?DoPpkekBY5y zZ<`?TUxG*1EY=ka+>SaQt%=L5EE>E$cmk(MXPo3i^0zA{O$Z9yT{(z|Pq`c%L#MhQ zT2!!z9IXBsMZi3msG{{}_&z|S=Kg9&RiY}A&!|TT!@cz;_Q&Q={5>=UAWd6-Sz>e> z=}I}o$PpRM!!_YYV>lwipjH kMM)ol+8vSAPKf5LaO0Jwi~RFhch zIqMI0C<~Baw?Lw~G6&thFOD+7xbb7B4;Kv9GdT7nKFK~i;q1S8tQLa}Nxj!Uc{A}z z2@_l%Z~InkHYnA1QxIfnU3~%HdG^UTLcZpLQE}e1Dh<|lKEWsPN%ZfsRb~aPbIESo zn8ud6B;2sH?p-VV?Yy?UKKWIsj&4R5p>s?YlhX2D1yt9mA;no5=}b^m7rbql!SU;@ zSo%w~@#}%kO {+fN ziq>k-fFU-@snlq3@XI$LyyC^hZBBa8_Odn6f}>D1Q{8e6&mo8eq&11W!~{>v)oEo- z=1kNN3#p*_at (>7=kbq$i1- zPllWBv+ewSdrfD~k4pn1f#7F>p2 40Xj(vCXdn(Rtc!he?UEJs#c(cy0`ie6pKfC0gNp|yU6kBg2 zucxy#vKTDoEMs2f`k0h@b*y_$sFWyC6+dkPtG^t+G%H_wGl?N%1fH0Vay! diS1uipgsOakcJ%n zs@ZyB-N#_b(IkxP25S1HGQ+CcG2!Kslq@IWSnz$!>{EZqZhZ?KnJrbgQ7ZS-*C)@$ zEr0b;j3HO1P6Y%9?ftG|)=AcQ!ZYQazR`TLxVP+#e)E-= ( zu0n19ez)c|=$cfB$DDAtpH~lvZorgPQbY45EKXW0Uy~YAtP=u4k&UF%_pg&AfkTsG z>*ODT%km>Lvzv?yI9U%TzTfDxop@?;MTl--r+4-c_m4edH`a5MM1_cjgYs$Q@+ki3 zLaaOh)yp0n67MH?XK=FO*}aw(&C<;%QwGDQE HW&)oB5`*y9AEYax3K{&}35 zAG5mJ^upK+>sV&?Q%sL9N{&pPHb1w)lj{-PA!@3xBXQ8xg{G?0GC!DW{kL1#4iD{f zf;>a&s5NC*3l}1tbqUAtdD}NVG7e8{f$OW^4o9h!giNqnQ#Cq>ty&@uh9jh^ER zPNtxIX~TM8mNrn%z~2W{*9(eGRyB~fHiatJRb+^T#ty~{$KdIAB)juaLhzq^(wj(M zSFQ&lp#`LY9Y6QRA9Gh3>VY5wI}Z)x$bnGFh*ikRM$A}