From b57144347e39b258d2406a0a32c728fa1ef89866 Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Sun, 3 Dec 2023 20:59:46 +0300 Subject: [PATCH 01/61] [MIRROR] Nukes radio.dmi, adds inhands for somewhat relevant items. (#740) * [MIRROR] Nukes radio.dmi, adds inhands for somewhat relevant items. [MDB IGNORE] (#25147) * Nukes radio.dmi, adds inhands for somewhat relevant items. (#79792) Third /icon/ cleansing splinter 1. Comments on commits say all it does pretty much. ![image](https://github.com/tgstation/tgstation/assets/122572637/6540e588-bed8-4e98-81f5-2a6f449c53c3) Inhand for walkietalkie was requested in the project, gets rid of some usecases of old 'gangtool', headset splitoff requested by Fazzie. Inhands reflecting the items they are supposed to represent is nice. :cl: image: Following now have unique item sprites: syndicate war declaration radio, curator and chief beacon's, chaplain beacon. image: Following now have unique inhand sprites: radio, export scanner, walkie-talkie, syndicate war declaration radio, curator and chief beacon's, chaplain beacon. /:cl: * Nukes radio.dmi, adds inhands for somewhat relevant items. --------- Co-authored-by: YesterdaysPromise <122572637+YesterdaysPromise@users.noreply.github.com> * Delete radio.dmi * let it be modular * go to modular * Update tgstation.dme * Revert "Update tgstation.dme" This reverts commit f206135748869340f4de345e928c3e7ed53ecfe7. * Revert "go to modular" This reverts commit 6772aaffdf1817799989e0e2d566bc6fe635f017. * go to modular. again. --------- Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Co-authored-by: YesterdaysPromise <122572637+YesterdaysPromise@users.noreply.github.com> Co-authored-by: Iajret Co-authored-by: ReezeBL --- _maps/RandomZLevels/SnowCabin.dmm | 2 +- .../greyscale_configs/greyscale_items.dm | 22 ++-- code/datums/mutations/antenna.dm | 2 +- .../objects/items/AI_modules/_AI_modules.dm | 2 +- code/game/objects/items/choice_beacon.dm | 12 ++- .../items/circuitboards/circuitboard.dm | 2 +- .../devices/electroadaptive_pseudocircuit.dm | 2 +- .../items/devices/radio/electropack.dm | 2 +- .../items/devices/radio/encryptionkey.dm | 42 +------- .../objects/items/devices/radio/headset.dm | 1 + .../game/objects/items/devices/radio/radio.dm | 4 +- .../objects/items/implants/implant_misc.dm | 2 +- .../objects/items/implants/implantuplink.dm | 2 +- code/game/objects/items/rcd/RHD.dm | 2 +- code/game/objects/items/rcd/RPD.dm | 2 +- code/game/objects/items/robot/ai_upgrades.dm | 4 +- .../objects/items/robot/robot_upgrades.dm | 6 +- code/game/objects/items/wall_mounted.dm | 2 +- .../equipment/nuclear_authentication_disk.dm | 2 +- .../nukeop/equipment/nuclear_challenge.dm | 4 +- code/modules/bitrunning/objects/debug.dm | 2 +- code/modules/bitrunning/objects/disks.dm | 2 +- code/modules/cargo/goodies.dm | 30 ------ code/modules/cargo/supplypod.dm | 2 +- code/modules/cargo/universal_scanner.dm | 2 +- .../library/skill_learning/skillchip.dm | 2 +- .../living/basic/minebots/minebot_upgrades.dm | 4 +- .../mob/living/silicon/robot/robot_model.dm | 2 +- .../computers/item/disks/computer_disk.dm | 2 +- .../guns/energy/kinetic_accelerator.dm | 2 +- code/modules/uplink/uplink_devices.dm | 2 +- code/modules/vehicles/mecha/mecha_parts.dm | 2 +- code/modules/wiremod/core/component.dm | 2 +- .../wiremod/core/integrated_circuit.dm | 2 +- icons/mob/inhands/items/devices_lefthand.dmi | Bin 2715 -> 3430 bytes icons/mob/inhands/items/devices_righthand.dmi | Bin 2806 -> 3312 bytes icons/obj/assemblies/circuitry_n_data.dmi | Bin 0 -> 19482 bytes icons/obj/assemblies/module.dmi | Bin 19683 -> 0 bytes icons/obj/assemblies/stock_parts.dmi | Bin 19411 -> 17647 bytes icons/obj/clothing/headsets.dmi | Bin 0 -> 1590 bytes icons/obj/device.dmi | Bin 85414 -> 89562 bytes icons/obj/radio.dmi | Bin 3876 -> 0 bytes .../code/game/objects/items/encryptionkey.dm | 101 ------------------ tgstation.dme | 1 - 44 files changed, 57 insertions(+), 222 deletions(-) create mode 100644 icons/obj/assemblies/circuitry_n_data.dmi delete mode 100644 icons/obj/assemblies/module.dmi create mode 100644 icons/obj/clothing/headsets.dmi delete mode 100644 icons/obj/radio.dmi delete mode 100644 modular_skyrat/master_files/code/game/objects/items/encryptionkey.dm diff --git a/_maps/RandomZLevels/SnowCabin.dmm b/_maps/RandomZLevels/SnowCabin.dmm index 9685c667d2c..2a23215766f 100644 --- a/_maps/RandomZLevels/SnowCabin.dmm +++ b/_maps/RandomZLevels/SnowCabin.dmm @@ -4459,7 +4459,7 @@ /obj/structure/signpost/salvation{ density = 0; desc = "An intercomm. Someone seems to be on the other end. I should use it."; - icon = 'icons/obj/radio.dmi'; + icon = 'icons/obj/device.dmi'; icon_state = "intercom"; max_integrity = 99999; name = "\proper Fun Jail intercom"; diff --git a/code/datums/greyscale/config_types/greyscale_configs/greyscale_items.dm b/code/datums/greyscale/config_types/greyscale_configs/greyscale_items.dm index a345aba0b81..153bc59aab0 100644 --- a/code/datums/greyscale/config_types/greyscale_configs/greyscale_items.dm +++ b/code/datums/greyscale/config_types/greyscale_configs/greyscale_items.dm @@ -167,52 +167,52 @@ /datum/greyscale_config/encryptionkey_basic name = "Basic Encryptionkey" - icon_file = 'icons/obj/radio.dmi' + icon_file = 'icons/obj/assemblies/circuitry_n_data.dmi' json_config = 'code/datums/greyscale/json_configs/encryptionkey_basic.json' /datum/greyscale_config/encryptionkey_cube name = "Block Encryptionkey" - icon_file = 'icons/obj/radio.dmi' + icon_file = 'icons/obj/assemblies/circuitry_n_data.dmi' json_config = 'code/datums/greyscale/json_configs/encryptionkey_cube.json' /datum/greyscale_config/encryptionkey_research name = "Research Encryptionkey" - icon_file = 'icons/obj/radio.dmi' + icon_file = 'icons/obj/assemblies/circuitry_n_data.dmi' json_config = 'code/datums/greyscale/json_configs/encryptionkey_research.json' /datum/greyscale_config/encryptionkey_syndicate name = "Syndicate Encryptionkey" - icon_file = 'icons/obj/radio.dmi' + icon_file = 'icons/obj/assemblies/circuitry_n_data.dmi' json_config = 'code/datums/greyscale/json_configs/encryptionkey_syndicate.json' /datum/greyscale_config/encryptionkey_medical name = "Medical Encryptionkey" - icon_file = 'icons/obj/radio.dmi' + icon_file = 'icons/obj/assemblies/circuitry_n_data.dmi' json_config = 'code/datums/greyscale/json_configs/encryptionkey_medical.json' /datum/greyscale_config/encryptionkey_service name = "Service Encryptionkey" - icon_file = 'icons/obj/radio.dmi' + icon_file = 'icons/obj/assemblies/circuitry_n_data.dmi' json_config = 'code/datums/greyscale/json_configs/encryptionkey_service.json' /datum/greyscale_config/encryptionkey_engineering name = "Engineering Encryptionkey" - icon_file = 'icons/obj/radio.dmi' + icon_file = 'icons/obj/assemblies/circuitry_n_data.dmi' json_config = 'code/datums/greyscale/json_configs/encryptionkey_engineering.json' /datum/greyscale_config/encryptionkey_centcom name = "Centcom Encryptionkey" - icon_file = 'icons/obj/radio.dmi' + icon_file = 'icons/obj/assemblies/circuitry_n_data.dmi' json_config = 'code/datums/greyscale/json_configs/encryptionkey_centcom.json' /datum/greyscale_config/encryptionkey_cargo name = "Cargo Encryptionkey" - icon_file = 'icons/obj/radio.dmi' + icon_file = 'icons/obj/assemblies/circuitry_n_data.dmi' json_config = 'code/datums/greyscale/json_configs/encryptionkey_cargo.json' /datum/greyscale_config/encryptionkey_security name = "Security Encryptionkey" - icon_file = 'icons/obj/radio.dmi' + icon_file = 'icons/obj/assemblies/circuitry_n_data.dmi' json_config = 'code/datums/greyscale/json_configs/encryptionkey_security.json' /datum/greyscale_config/quantum_keycard @@ -344,7 +344,7 @@ /datum/greyscale_config/circuit name = "Circuit Board" - icon_file = 'icons/obj/assemblies/module.dmi' + icon_file = 'icons/obj/assemblies/circuitry_n_data.dmi' json_config = 'code/datums/greyscale/json_configs/circuit.json' /datum/greyscale_config/janicart_upgrade diff --git a/code/datums/mutations/antenna.dm b/code/datums/mutations/antenna.dm index b71f66c0fa6..7232ea7aa39 100644 --- a/code/datums/mutations/antenna.dm +++ b/code/datums/mutations/antenna.dm @@ -11,7 +11,7 @@ /obj/item/implant/radio/antenna name = "internal antenna organ" desc = "The internal organ part of the antenna. Science has not yet given it a good name." - icon = 'icons/obj/radio.dmi'//maybe make a unique sprite later. not important + icon = 'icons/obj/device.dmi'//maybe make a unique sprite later. not important icon_state = "walkietalkie" /obj/item/implant/radio/antenna/Initialize(mapload) diff --git a/code/game/objects/items/AI_modules/_AI_modules.dm b/code/game/objects/items/AI_modules/_AI_modules.dm index 77c03cd6fc6..3e9fa583364 100644 --- a/code/game/objects/items/AI_modules/_AI_modules.dm +++ b/code/game/objects/items/AI_modules/_AI_modules.dm @@ -3,7 +3,7 @@ /obj/item/ai_module name = "\improper AI module" - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "std_mod" inhand_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' diff --git a/code/game/objects/items/choice_beacon.dm b/code/game/objects/items/choice_beacon.dm index 07a7808cd84..3fe0ea8675d 100644 --- a/code/game/objects/items/choice_beacon.dm +++ b/code/game/objects/items/choice_beacon.dm @@ -71,7 +71,8 @@ /obj/item/choice_beacon/ingredient name = "ingredient delivery beacon" desc = "Summon a box of ingredients to help you get started cooking." - icon_state = "gangtool-white" + icon_state = "sb_delivery" + inhand_icon_state = "sb_delivery" company_source = "Sophronia Broadcasting" company_message = span_bold("Please enjoy your Sophronia Broadcasting's 'Plasteel Chef' Ingredients Box, exactly as shown in the hit show!") @@ -86,6 +87,8 @@ /obj/item/choice_beacon/hero name = "heroic beacon" desc = "To summon heroes from the past to protect the future." + icon_state = "sb_delivery" + inhand_icon_state = "sb_delivery" company_source = "Sophronia Broadcasting" company_message = span_bold("Please enjoy your Sophronia Broadcasting's 'History Comes Alive branded' Costume Set, exactly as shown in the hit show!") @@ -129,7 +132,11 @@ /obj/item/choice_beacon/holy name = "armaments beacon" - desc = "Contains a set of armaments for the chaplain." + desc = "Summon a set of standard issue chaplain armaments, as dictated by I.C.R.A." + icon_state = "icra_delivery" + inhand_icon_state = "icra_delivery" + company_source = "Interstellar Conservation of Religion Association" + company_message = span_bold("A choice has already been made.") /obj/item/choice_beacon/holy/can_use_beacon(mob/living/user) if(user.mind?.holy_role) @@ -141,7 +148,6 @@ // Overrides generate options so that we can show a neat radial instead /obj/item/choice_beacon/holy/open_options_menu(mob/living/user) if(GLOB.holy_armor_type) - to_chat(user, span_warning("A selection has already been made.")) consume_use(GLOB.holy_armor_type, user) return diff --git a/code/game/objects/items/circuitboards/circuitboard.dm b/code/game/objects/items/circuitboards/circuitboard.dm index c32de5b336d..9ac21c361fd 100644 --- a/code/game/objects/items/circuitboards/circuitboard.dm +++ b/code/game/objects/items/circuitboards/circuitboard.dm @@ -7,7 +7,7 @@ name = "circuit board" /// extension that is applied after the initial name AKA (Computer/Machine Board) var/name_extension = null - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "circuit_map" inhand_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' diff --git a/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm b/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm index 827642b139a..62d9ad26786 100644 --- a/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm +++ b/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm @@ -2,7 +2,7 @@ /obj/item/electroadaptive_pseudocircuit name = "electroadaptive pseudocircuit" desc = "An all-in-one circuit imprinter, designer, synthesizer, outfitter, creator, and chef. It can be used in place of any generic circuit board during construction." - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "boris" w_class = WEIGHT_CLASS_TINY custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3) diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index ce87739d114..d0b0ba1eb90 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -1,7 +1,7 @@ /obj/item/electropack name = "electropack" desc = "Dance my monkeys! DANCE!!!" - icon = 'icons/obj/radio.dmi' + icon = 'icons/obj/device.dmi' icon_state = "electropack0" inhand_icon_state = "electropack" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' diff --git a/code/game/objects/items/devices/radio/encryptionkey.dm b/code/game/objects/items/devices/radio/encryptionkey.dm index 1ae41c2b5c6..4fc64980a39 100644 --- a/code/game/objects/items/devices/radio/encryptionkey.dm +++ b/code/game/objects/items/devices/radio/encryptionkey.dm @@ -1,7 +1,7 @@ /obj/item/encryptionkey name = "standard encryption key" desc = "An encryption key for a radio headset." - icon = 'icons/obj/radio.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "cypherkey_basic" w_class = WEIGHT_CLASS_TINY /// Can this radio key access the binary radio channel? @@ -200,43 +200,3 @@ /obj/item/encryptionkey/secbot channels = list(RADIO_CHANNEL_AI_PRIVATE = 1, RADIO_CHANNEL_SECURITY = 1) - -/obj/item/encryptionkey/moth - name = "\improper Moffic translation key" - desc = "An encryption key that automatically encodes moffic heard through the radio into common. The signal's a little fuzzy." - icon_state = "translation_cypherkey" - translated_language = /datum/language/moffic - greyscale_config = null - greyscale_colors = null - -/obj/item/encryptionkey/tiziran - name = "\improper Tiziran translation key" - desc = "An encryption key that automatically encodes draconic heard through the radio into common. The signal's not quite to scale." - icon_state = "translation_cypherkey" - translated_language = /datum/language/draconic - greyscale_config = null - greyscale_colors = null - -/obj/item/encryptionkey/plasmaman - name = "\improper Calcic translation key" - desc = "An encryption key that automatically encodes calcic heard through the radio into common. The signal lacks a bit of teeth." - icon_state = "translation_cypherkey" - translated_language = /datum/language/calcic - greyscale_config = null - greyscale_colors = null - -/obj/item/encryptionkey/ethereal - name = "\improper Ethereal translation key" - desc = "An encryption key that automatically encodes ethereal heard through the radio into common. The signal's overpowering." - icon_state = "translation_cypherkey" - translated_language = /datum/language/voltaic - greyscale_config = null - greyscale_colors = null - -/obj/item/encryptionkey/felinid - name = "\improper Felinid translation key" - desc = "An encryption key that automatically encodes nekomimetic heard through the radio into common. The signal's rather scratchy." - icon_state = "translation_cypherkey" - translated_language = /datum/language/nekomimetic - greyscale_config = null - greyscale_colors = null diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index d6dd9bcc3a7..c2af9c33821 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -23,6 +23,7 @@ GLOBAL_LIST_INIT(channel_tokens, list( /obj/item/radio/headset name = "radio headset" desc = "An updated, modular intercom that fits over the head. Takes encryption keys." + icon = 'icons/obj/clothing/headsets.dmi' icon_state = "headset" inhand_icon_state = "headset" lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 1a356686a74..5930747a252 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -1,10 +1,10 @@ #define FREQ_LISTENING (1<<0) /obj/item/radio - icon = 'icons/obj/radio.dmi' + icon = 'icons/obj/device.dmi' name = "station bounced radio" icon_state = "walkietalkie" - inhand_icon_state = "radio" + inhand_icon_state = "walkietalkie" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' worn_icon_state = "radio" diff --git a/code/game/objects/items/implants/implant_misc.dm b/code/game/objects/items/implants/implant_misc.dm index ec443aae220..e6ea2e21a3a 100644 --- a/code/game/objects/items/implants/implant_misc.dm +++ b/code/game/objects/items/implants/implant_misc.dm @@ -36,7 +36,7 @@ var/obj/item/radio/radio var/radio_key var/subspace_transmission = FALSE - icon = 'icons/obj/radio.dmi' + icon = 'icons/obj/device.dmi' icon_state = "walkietalkie" /obj/item/implant/radio/activate() diff --git a/code/game/objects/items/implants/implantuplink.dm b/code/game/objects/items/implants/implantuplink.dm index 4d90c8381d0..68263b0b206 100644 --- a/code/game/objects/items/implants/implantuplink.dm +++ b/code/game/objects/items/implants/implantuplink.dm @@ -1,7 +1,7 @@ /obj/item/implant/uplink name = "uplink implant" desc = "Sneeki breeki." - icon = 'icons/obj/radio.dmi' + icon = 'icons/obj/device.dmi' icon_state = "radio" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' diff --git a/code/game/objects/items/rcd/RHD.dm b/code/game/objects/items/rcd/RHD.dm index d9c4c7cd9b7..9ebfede50d0 100644 --- a/code/game/objects/items/rcd/RHD.dm +++ b/code/game/objects/items/rcd/RHD.dm @@ -284,7 +284,7 @@ /obj/item/rcd_upgrade name = "RCD advanced design disk" desc = "It seems to be empty." - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "datadisk3" var/upgrade diff --git a/code/game/objects/items/rcd/RPD.dm b/code/game/objects/items/rcd/RPD.dm index 71a3999d261..ebe3fe36d73 100644 --- a/code/game/objects/items/rcd/RPD.dm +++ b/code/game/objects/items/rcd/RPD.dm @@ -655,7 +655,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( /obj/item/rpd_upgrade name = "RPD advanced design disk" desc = "It seems to be empty." - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "datadisk3" /// Bitflags for upgrades var/upgrade_flags diff --git a/code/game/objects/items/robot/ai_upgrades.dm b/code/game/objects/items/robot/ai_upgrades.dm index f0cbb121eeb..6627b27921e 100644 --- a/code/game/objects/items/robot/ai_upgrades.dm +++ b/code/game/objects/items/robot/ai_upgrades.dm @@ -5,7 +5,7 @@ /obj/item/malf_upgrade name = "combat software upgrade" desc = "A highly illegal, highly dangerous upgrade for artificial intelligence units, granting them a variety of powers as well as the ability to hack APCs.
This upgrade does not override any active laws, and must be applied directly to an active AI core." - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "datadisk3" @@ -34,7 +34,7 @@ /obj/item/surveillance_upgrade name = "surveillance software upgrade" desc = "An illegal software package that will allow an artificial intelligence to 'hear' from its cameras via lip reading and hidden microphones." - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "datadisk3" /obj/item/surveillance_upgrade/pre_attack(atom/A, mob/living/user, proximity) diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index b1aff8deff5..ddb45550c01 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -4,7 +4,7 @@ /obj/item/borg/upgrade name = "borg upgrade module." desc = "Protected by FRM." - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "cyborg_upgrade" w_class = WEIGHT_CLASS_SMALL var/locked = FALSE @@ -268,7 +268,7 @@ /obj/item/borg/upgrade/lavaproof name = "mining cyborg lavaproof chassis" desc = "An upgrade kit to apply specialized coolant systems and insulation layers to a mining cyborg's chassis, enabling them to withstand exposure to molten rock and liquid plasma." - icon_state = "ash_plating" + icon_state = "cyborg_ash_tracks" resistance_flags = LAVA_PROOF | FIRE_PROOF | FREEZE_PROOF require_model = TRUE model_type = list(/obj/item/robot_model/miner) @@ -963,7 +963,7 @@ name = "cyborg emergency reboot module" desc = "A reusable firmware reset tool that can force a reboot of a disabled-but-repaired cyborg, bringing it back online." w_class = WEIGHT_CLASS_SMALL - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "cyborg_upgrade1" /obj/item/borg_restart_board/pre_attack(mob/living/silicon/robot/borgo, mob/living/user, params) diff --git a/code/game/objects/items/wall_mounted.dm b/code/game/objects/items/wall_mounted.dm index 48142778a92..2fa342d0d6f 100644 --- a/code/game/objects/items/wall_mounted.dm +++ b/code/game/objects/items/wall_mounted.dm @@ -83,7 +83,7 @@ /obj/item/electronics desc = "Looks like a circuit. Probably is." - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "door_electronics" inhand_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' diff --git a/code/modules/antagonists/nukeop/equipment/nuclear_authentication_disk.dm b/code/modules/antagonists/nukeop/equipment/nuclear_authentication_disk.dm index 6372b402cab..2ed37ffaaa0 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclear_authentication_disk.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclear_authentication_disk.dm @@ -1,5 +1,5 @@ /obj/item/disk - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' w_class = WEIGHT_CLASS_TINY inhand_icon_state = "card-id" lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' diff --git a/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm b/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm index f3d2bde6fb7..48867c60854 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm @@ -7,8 +7,8 @@ GLOBAL_LIST_EMPTY(jam_on_wardec) /obj/item/nuclear_challenge name = "Declaration of War (Challenge Mode)" icon = 'icons/obj/device.dmi' - icon_state = "gangtool-red" - inhand_icon_state = "radio" + icon_state = "nukietalkie" + inhand_icon_state = "nukietalkie" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' desc = "Use to send a declaration of hostilities to the target, delaying your shuttle departure for 20 minutes while they prepare for your assault. \ diff --git a/code/modules/bitrunning/objects/debug.dm b/code/modules/bitrunning/objects/debug.dm index 790aba73116..3b85c4f4585 100644 --- a/code/modules/bitrunning/objects/debug.dm +++ b/code/modules/bitrunning/objects/debug.dm @@ -1,7 +1,7 @@ /obj/item/bitrunning_debug name = "bitrunning debug item" desc = "Adds points and reduces cooldown time for debugging" - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' base_icon_state = "datadisk" icon_state = "datadisk0" diff --git a/code/modules/bitrunning/objects/disks.dm b/code/modules/bitrunning/objects/disks.dm index 9d7c808f356..2911539b0ac 100644 --- a/code/modules/bitrunning/objects/disks.dm +++ b/code/modules/bitrunning/objects/disks.dm @@ -7,7 +7,7 @@ /obj/item/bitrunning_disk name = "generic bitrunning program" desc = "A disk containing source code." - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' base_icon_state = "datadisk" icon_state = "datadisk0" /// Name of the choice made diff --git a/code/modules/cargo/goodies.dm b/code/modules/cargo/goodies.dm index 100ac4b4ce8..cf08c773d06 100644 --- a/code/modules/cargo/goodies.dm +++ b/code/modules/cargo/goodies.dm @@ -212,36 +212,6 @@ cost = PAYCHECK_CREW * 10 contains = list(/obj/item/construction/rld) -/datum/supply_pack/goody/moth_encryption_key - name = "Moffic radio encryption key" - desc = "A hi-tech radio encryption key that allows the wearer to understand moffic when the radio is worn." - cost = PAYCHECK_CREW * 12 - contains = list(/obj/item/encryptionkey/moth) - -/datum/supply_pack/goody/lizard_encryption_key - name = "Draconic radio encryption key" - desc = "A hi-tech radio encryption key that allows the wearer to understand draconic when the radio is worn." - cost = PAYCHECK_CREW * 12 - contains = list(/obj/item/encryptionkey/tiziran) - -/datum/supply_pack/goody/plasmaman_encryption_key - name = "Calcic radio encryption key" - desc = "A hi-tech radio encryption key that allows the wearer to understand calcic when the radio is worn." - cost = PAYCHECK_CREW * 12 - contains = list(/obj/item/encryptionkey/plasmaman) - -/datum/supply_pack/goody/ethereal_encryption_key - name = "Voltaic radio encryption key" - desc = "A hi-tech radio encryption key that allows the wearer to understand voltaic when the radio is worn." - cost = PAYCHECK_CREW * 12 - contains = list(/obj/item/encryptionkey/ethereal) - -/datum/supply_pack/goody/felinid_encryption_key - name = "Felinid radio encryption key" - desc = "A hi-tech radio encryption key that allows the wearer to understand nekomimetic when the radio is worn." - cost = PAYCHECK_CREW * 12 - contains = list(/obj/item/encryptionkey/felinid) - /datum/supply_pack/goody/fishing_toolbox name = "Fishing toolbox" desc = "Complete toolbox set for your fishing adventure. Advanced hooks and lines sold separetely." diff --git a/code/modules/cargo/supplypod.dm b/code/modules/cargo/supplypod.dm index 503effd258f..126fbf08ce2 100644 --- a/code/modules/cargo/supplypod.dm +++ b/code/modules/cargo/supplypod.dm @@ -704,7 +704,7 @@ /obj/item/disk/cargo/bluespace_pod //Disk that can be inserted into the Express Console to allow for Advanced Bluespace Pods name = "Bluespace Drop Pod Upgrade" desc = "This disk provides a firmware update to the Express Supply Console, granting the use of Nanotrasen's Bluespace Drop Pods to the supply department." - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "cargodisk" inhand_icon_state = "card-id" w_class = WEIGHT_CLASS_SMALL diff --git a/code/modules/cargo/universal_scanner.dm b/code/modules/cargo/universal_scanner.dm index 2b9bb46e058..98049ce10ab 100644 --- a/code/modules/cargo/universal_scanner.dm +++ b/code/modules/cargo/universal_scanner.dm @@ -5,7 +5,7 @@ desc = "A device used to check objects against Nanotrasen exports database, assign price tags, or ready an item for a custom vending machine." icon = 'icons/obj/device.dmi' icon_state = "export scanner" - inhand_icon_state = "radio" + inhand_icon_state = "export_scanner" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' item_flags = NOBLUDGEON diff --git a/code/modules/library/skill_learning/skillchip.dm b/code/modules/library/skill_learning/skillchip.dm index 89822976993..5d40d383fb0 100644 --- a/code/modules/library/skill_learning/skillchip.dm +++ b/code/modules/library/skill_learning/skillchip.dm @@ -9,7 +9,7 @@ name = "skillchip" desc = "This biochip integrates with user's brain to enable mastery of specific skill. Consult certified Nanotrasen neurosurgeon before use." - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "skillchip" custom_price = PAYCHECK_CREW * 3 w_class = WEIGHT_CLASS_SMALL diff --git a/code/modules/mob/living/basic/minebots/minebot_upgrades.dm b/code/modules/mob/living/basic/minebots/minebot_upgrades.dm index 6f5d43af1af..47084a90561 100644 --- a/code/modules/mob/living/basic/minebots/minebot_upgrades.dm +++ b/code/modules/mob/living/basic/minebots/minebot_upgrades.dm @@ -2,7 +2,7 @@ name = "minebot melee upgrade" desc = "A minebot upgrade." icon_state = "door_electronics" - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' /obj/item/mine_bot_upgrade/afterattack(mob/living/basic/mining_drone/minebot, mob/user, proximity) . = ..() @@ -39,7 +39,7 @@ name = "minebot AI upgrade" desc = "Can be used to grant sentience to minebots. It's incompatible with minebot armor and melee upgrades, and will override them." icon_state = "door_electronics" - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' sentience_type = SENTIENCE_MINEBOT ///health boost to add var/base_health_add = 5 diff --git a/code/modules/mob/living/silicon/robot/robot_model.dm b/code/modules/mob/living/silicon/robot/robot_model.dm index 80809bb5a40..3a0f950b0fe 100644 --- a/code/modules/mob/living/silicon/robot/robot_model.dm +++ b/code/modules/mob/living/silicon/robot/robot_model.dm @@ -8,7 +8,7 @@ **/ /obj/item/robot_model name = "Default" - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "std_mod" w_class = WEIGHT_CLASS_GIGANTIC inhand_icon_state = "electronic" diff --git a/code/modules/modular_computers/computers/item/disks/computer_disk.dm b/code/modules/modular_computers/computers/item/disks/computer_disk.dm index c7d7688c896..d4cbbb3ba77 100644 --- a/code/modules/modular_computers/computers/item/disks/computer_disk.dm +++ b/code/modules/modular_computers/computers/item/disks/computer_disk.dm @@ -1,7 +1,7 @@ /obj/item/computer_disk name = "data disk" desc = "Removable disk used to store data." - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "datadisk6" w_class = WEIGHT_CLASS_TINY ///The amount of storage space is on the disk diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index 455032f17d8..36dd4fcb8db 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -363,7 +363,7 @@ name = "minebot cooldown decrease" desc = "Decreases the cooldown of a kinetic accelerator. Only rated for minebot use." icon_state = "door_electronics" - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' denied_type = /obj/item/borg/upgrade/modkit/cooldown/minebot modifier = 10 cost = 0 diff --git a/code/modules/uplink/uplink_devices.dm b/code/modules/uplink/uplink_devices.dm index 5106401c4aa..65cbe2c35b4 100644 --- a/code/modules/uplink/uplink_devices.dm +++ b/code/modules/uplink/uplink_devices.dm @@ -5,7 +5,7 @@ // simultaneously is an annoying distraction. /obj/item/uplink name = "station bounced radio" - icon = 'icons/obj/radio.dmi' + icon = 'icons/obj/device.dmi' icon_state = "radio" inhand_icon_state = "radio" worn_icon_state = "radio" diff --git a/code/modules/vehicles/mecha/mecha_parts.dm b/code/modules/vehicles/mecha/mecha_parts.dm index fe5b53caba7..18598ed465a 100644 --- a/code/modules/vehicles/mecha/mecha_parts.dm +++ b/code/modules/vehicles/mecha/mecha_parts.dm @@ -336,7 +336,7 @@ /obj/item/circuitboard/mecha name = "exosuit circuit board" - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "std_mod" inhand_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' diff --git a/code/modules/wiremod/core/component.dm b/code/modules/wiremod/core/component.dm index 55fb258f0fb..fbaa01fc030 100644 --- a/code/modules/wiremod/core/component.dm +++ b/code/modules/wiremod/core/component.dm @@ -9,7 +9,7 @@ */ /obj/item/circuit_component name = COMPONENT_DEFAULT_NAME - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "component" inhand_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' diff --git a/code/modules/wiremod/core/integrated_circuit.dm b/code/modules/wiremod/core/integrated_circuit.dm index 4a04da3480e..41e6c91d0c6 100644 --- a/code/modules/wiremod/core/integrated_circuit.dm +++ b/code/modules/wiremod/core/integrated_circuit.dm @@ -11,7 +11,7 @@ GLOBAL_LIST_EMPTY_TYPED(integrated_circuits, /obj/item/integrated_circuit) /obj/item/integrated_circuit name = "integrated circuit" desc = "By inserting components and a cell into this, wiring them up, and putting them into a shell, anyone can pretend to be a programmer." - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "integrated_circuit" inhand_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' diff --git a/icons/mob/inhands/items/devices_lefthand.dmi b/icons/mob/inhands/items/devices_lefthand.dmi index bf9c3154c62b18562e9f681f31fc845b543c3938..7b558c20e6e55c1fa0e5708e866146347ba2cee2 100644 GIT binary patch literal 3430 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 TL@#gKU-SqqLwKo%edvDyZPjbO delta 2658 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 diff --git a/icons/mob/inhands/items/devices_righthand.dmi b/icons/mob/inhands/items/devices_righthand.dmi index 93a5d929610439d30ca515dbbe45cc6134b5bf37..042ecb745c48598f9243ffcb2a8be3b1ddc82b1a 100644 GIT binary patch literal 3312 zcmYjS3p^A07vB2Y;i$Rp%g8+XeP8%1S8M2pPwj<7T}G}~^H$Sp-&3nO&7-nkwb z=2qVGh~_Ca?&shA-1GUI&pE%}@BGg1obNfm-!JZ>{W-Z^in{;+fSk>F zD<=Q|NRjZh9a55+7>vh0$-wpE1!rrqSPTGsXCxBI<#O}$^Ut0=OCpgZX0EQTFLr7T zq2MYiD*F2RHXP|8uiehh&L$=%MoUk{>42$FrI3)2pu0dtMMVt_4G#~Gd3l+e zn;RGySX*1$+1UZg$^h4|0}Ko_H8sIt@ZrOU(P*@Vg~fc9nuJqn20ckhye=tGN(D=*mEEiEl^I2Sr`14W0A=nRQj)T` zC|gYMWdfjLfL|H_I*=~^v$BpF818cElEzKdxPu^kL!YanUSLC%5?otF=NG81o}R9* zWM5%np@Q;JDwP@&6Qct$3W$6X5fS0yjW-Xl%$_Pc@9c%NanZNXgIn10cAeChfCvn8 zvcCkdm>%?#=<1QqSHi4(@!q!rZiWTmLI8m9^ykTc2fj1d^Pqd-(*2d;-zrBQ)06Li zc!wHNY1FA2epquSk$op>!(=F{e*4`W3EOF9TjOs9w=fJ`mG5%-0e>Hdt`yu<2Pa7f zoO?#;5%;-{n?#a!tEyeQ;Qz^7MG2n~cUpcU+u`8d2O4{Yi!ypJt)1DHKMyWv)oRk= zpRPg^mi8_EJ*3H2%iqK7`}>|{*U!E-#~jb9rt?0xIla=8OAlaKOt*?hSuQ`hk=p{m z(~5HL-nDKCq17@^Jz>1 z{hVDxGrzNOY7+A89cGx_F#*0%R=zNZo}aoqm;gfn$LEqxR+7X^X1MrH0sJcCSD4nYCY*4 zRxB5Z$zQ%jAwv+f7ir2N10w@{=Qn;Aj&kcyRqPge!W_3tO7agGz!-6)7fD(%usg57 zvUa-yXJ+244G5Xk1e#Z69^qcHX_(2x=1@fdyphpX(?_j!xf95a?(j!=p90* zmblk@=|M2UPt?&@VV$DdT{&U1Qk-X0J4}7#?LQfHnhDkZm6-#4@s(%s%UXfrAc2yt ze+Jn%FtEK0d(5-WyzsB|%mz}_@cOoAUY9CiV~<;Jki5SZ32cuE2*(5J%=NqM$i`8k zoF_r5f9Jxs?k|UHpJp;9(#dC9;Ryuw_bKbW84W(SOZ4|$FU|c}1AH5fzMo8fXEOfR zKdSHBdDh&xFYv;+LGD7y!@BA3&(puus6$Olv%v<8Z`Wori9z*1Rojl49!)~C_L2A| zhT6~u&b|b4W4*mPLJASOMo*GdKr8Bqk(x!42YdvZj(A#SQ#}K3Bz;XrbuZI0etS9O zI?@CMoq`#%jJIYd9?P2$@OQrTkDlPm{r)J;sL^b!`-=P*q?e#7q_H^e>g5~g)LT-_ zlhWgWYWOv;khe8Jc|5HQh?vBU@8r{f&0c)170Z~=infALdR)~0f8+kHG-BUuIkbD# z#|sdzGMevANcF(K!sTk?lg*#RV0oOZ2tYGzLKYh>jhWUxp5q`}p z2QHvE4p*K?;M)x4ZiXHmHyDdEaOgzq(X{lQ3!9ooqI>fK>utR+2T_acT_Y^+9?NT% z+uuxA&z0B{`($=-FbA3o!b7RkAhDSNM&cXhH&wE{L2#wKo7Zcre^8L7(%pAqJm=Mqt1$6PLGg7Y&!Sd5(g#$S4+F}F4v+h z=oD+wR=t1@tz`EI-it6{HW0%3-G_kp76g(GMm?Nhf#3H!AMyb>y!A+x> zZm?Q|hr3~pVQVS3WJEY&U2qU1Z@um!V;i}$^M~_~;dCRT#2My@09xu&uVc!Pw zFz*jMNBK5wrX12BW0*KB8@0(=+~&q&gR;h&M8;me5p8SHk>SD)r>#gRnXOA^8i>Fmo$@vQ5rb{QThb!TBK z@Qu1kcf*`$`^uCp-B=AdD6*yJPgnbQyR@f(dj3R&0^2b~CFAl>{AJtGgwV=cJmI=X zUpUJu7_A^}+bEP}Hw9)SVgshHB7YUJaCp*<%en>wtB>D&^ZG&@aA7)<4wn!t5kIg7 zP%a+tI)Dsc`}8ZOf}vyg`A`)bnz$_7d=N`B|I7Vl?Bd7hSlUi#KRXt}7YI*OR8(Yw zdiy@Z=(PBvZZ61Un#&Pf%MqS(DIc>+SLhP1-4+swdxL`d$$9$yFEsJfY5lz8C9bNE zgI#1zXf)X;Mn*jH%bP;?go_imiwfqMt zy{iQhyCDFY%zqKwpH)&j$hYHFOc&hba+)w7yIZ)8{r&x*6bQw=2p-41-!{|T0>Z3t zIgdhMT`eGGE(iE;rhr!32)33y-7(_Xe1>Z)h~`0;S?CD_$5h1>OI5wdU~dLn>-E35 zK8u@skG&Hl;5R*xMJdi%JruImY*|JOk0P_4X5mQS#%%dIgib8Df_uh{J3&wxAP-I1 zHbo}+*ax{{3dOHGRGot|9hyI9I#g9x6RK&07>aWdJmRNriLv6$V&3}*GTaa5Tl$!YU%Win5o@rAimwC zNyIN(Th}(WwMtG3w->577bD8VN6oT~GmBTcwR5U={=h4NTK|c5uvrxSw$&6{#^B!d zynA;8%<)R>@k@-#&M?dDQ_femLg<&NDt~lup30J9#0;IfskB=E;pn^@kh=kjUb*2R zJUJnfZ=TvLnjKL0?X;48DzwiFHTubJIji1w>f3UJ>U4`*s1 zT^(XWk0J4QGaa&oez~D0*B!=wIe}gC)c>tRSdKFTTdXJW!)LCRZsOR@&$EgIIbTk# z>aR_ost!HreOTyrv0sQlf66Sy3>hp|N|x(0fi&WWp2c_dQkH`Mv_oS-V)rfG+%xQ9 zPh4r%wt2J6*|AQuleq$+m&C>5uaVEghA{|fh_oD^*l;lUHtAM6OQbLevZtarsGgoK z?ruw0?zu|pz`_jmrrC%YSXOS9*sxz>7*@uBl&0lh9)V}_QY0Z}XLN(^z3zha2#FKj zVLs_Jk#OxL*Po1N_#zylJ%L1$zISZqf1beaML65JYKc;=%|f#poIR%I3ik#_isqRO zD?|H$)X&GoLIJlb&n5IZ(r#uQ(>O8Vx$YFJrClGspdM9lCMjw1xh=-+H^Raj?)te{ zviatRlEs!9*zF_)WNT$oo8C^F?EPrB?z1KHz7X`XXG88G8e)~bsm_ngTdZn$+aHbJW45ujw<J@MAb)oI@7taCzBBWk_kA;;nfINUZ`upn4AMQ_omG`} zltCbnD&m-CjfePZTJ~a7Z(>jyL*}zBoqpDD5y^+ zwet4zg27XT&}N8@;w#j7=}A@Arc!GiHQY)@Wr{eXt5oTjcJU2A4hE1P%!(v=5W*}h~+so z&%&3UHM<`OK;tv{j}Q?`Ie=@MpP;Wy>l{Gy^zkD4EnrjXswp2^Sd zN+sLeKdlLDN#FGA>kYqiN#pdbC;URS`M!-|@5ZZn$bmAP-})Uz-65bMG>fusieohh zA86rH=M`z{!5i}&^0vHB#CBKI5cVz8jejj@gW*j%AJ%H>*kl_R0>oBm{A&Nu<|8Cg z{hGp;zbz^py|YQY`$iT;MKQD+X$EJr#|_WDp;^D~6l?*uhnUS}&Q+or%oQGW%+u#X zEx#97Q9K?k3mVY0cL#yi7a<%E`{IjdI8wq^r%li2A{;{%C>F;+0qVM5gBoPF18&Dn zDvS?WOv_|l_S^v0PFp+}lk(!0Woy!;rrh{}qiZm{r?;4$&b=x$ zh#XFitx%_+{Z{6$H~zMT9Okz&>|Yj>`6uV2KTy;XEoy#BOR!tvz>hbh_j*2lmDF*M z=I|shd?up>HQK0gYGpcFW)`%~<)lMObacXOVHUuP{-{{vmu#9-dqr>ahO8lQxqn{R zjKvSYe{pURMnk%`rnCL@q6$7kS%}e8UHHVR3#TGdo^d?BZtN;&BpN^urRz{`Pm`{`0+kBE6WH7<|yjt}G~2kA3e}FtVXxwe97j5zO^~ z@Vc>>B&j1J16afhS7s?lV^y~jNIfcd6CXZTCv&WxJ=JcyyK){=SUNv{yGLQA-Ex=} z973$T;wwu}AR<#zMTJ{l0m^fk3?9y&iHe9MR?0mq{hLH!w$gz@e5ON*a$kX_gjV&3 zx*+%L0RkhE`@uQ<$Eks>pE#apOJqR#0w^txD}h~5|(u8I{)HeSCmQPc^wYH0`e3x|A!Mo%MuA$G%5^9Hz=-vs}Q8x&mT z+U%bee6vF28+9*iy+&b<`5;%z-{bSM=ZbKGtdpPKil}SoYR4(^0fb<=5y5=E8jE2@ zvDqV&Pf}pneVqb91A9U3)M!Lg!o@=)WBCx|?=!50ufh+!NyS;iK-G)&jN2Kk<=CnZ zQGSflG((R9X1$A+%FD%=m1Qx`2lMK}LA;$IjL1%=4SJ$~lv?@C@+epIAs(H=OaOk4 z!k*)xN)>^o9mJdww2KzlF<-LeS_mlGrt~8OsixzsD@Z(c3t{(v^12ozc!m$jkT@Yi zUC(cwkv5|R^paLl=q%F;*z#0u3cuVOMv4@6< zKO@vNDCbVvq9o=>L1}y~Di;f2W)f@y9=M}rTy9hCw0A?v=L=A9Ldf6{fzD{wF{@?d zU}FugmcD~8!KlshCVI;0cMU2?r8DT9XMHPRXTG0d3u~$-V)83XM{sR~>U#0av+q%? z+2mxC<=#6VLgYdBu`-uNz-Je#s;2a;(eeo4V_dNHU6I*>1O)t(o_&bcxxIObHVcze zM-$C^;$jSTEUeWN>^MryBHOH=!3=&}hx_to!lN!2mR_`q|K8=OJaX%pt;LYVrFDH4 z6p!t9t^uD_MsD3Fg!YV!m+~oX>a|9Q#bR9x)LVCtuD!Of#%K2Dbfi5TF4NiB8SPvz zRNy0m03-Q(XjfMkuL~0+stAU?zI~SQbng4xDK=eCNl6Ka8`ZHrl=&FCB$$|(VBDf6 z(~`2OXFXawc%md}kd$*0CC5>0M4*FfB*4SwORjj=A_9unBdc3;~Ek0t}gZ`%uop^WQpccs$_o#Heh+R@F(>JG!5Oz3Cq z1cGjt_SXV8{o46n?fmL`V*VorP;dfOy063?tDKcKT2?scE^W#2f_F&jR!{%o3Eva7 zk7ja6Cxmoxye00vNoyNvl_R3wZMf8j5KYuDB?8&q8q^q}2Va-ew(K`+P6;HAHC>yj zWd4|JZwIng??2ob6j7lnE?1fb7M1MyA5%|qu)a8`3$!{j&5ln?H4Rq3&?w&1F5)_X zF_2ml*yhZrBRqMdrl?Tb-UNREsNxrwr~!jX*mC7BYALY~2h1X2Pi|z|RV^jhADz-3 z6TO5V7RlxU)J)W)Nlgp&vJJ9TCgwE7>!|dG!_CPAsY;c{ll)v^Bw%E5k94fuSlF^V z)xeJzkW36HuNG1ZG$C-pZaO1$H17R@9*Oy+H7}vjWPB>-Y@x-|o=V*Pox+wLiP_{a zA@x(vpEmFe>+?MHuSVY`W_1}bxQfao`tSAm+-0*-sN&%li5*u88g>R6!)J2U2iZOR zl6C#sYacyrQicNncc5Z1xe5XYt8vKpBLfp%kfy#%%P+#$u5_qZHI!V?3$xt#orpY|a*4C` z4b}?#^Rx@!rM!bNmhb$>wml!Owl)N9<)JlU?E#WyO#lWDkcu-(N+~3%6N7QGef2I6 zjd3OZ^NZ#3r$OH5y#4U)ff4cRQyzu&t084WA*qL1gOgWlRzFsBl*L2}UtCH(`8&io z;JpOvS$^V|jXil#_;%ljT(c=jZ0dhl66vvchvMJPjp@J%wdT#A&D%8A{$)ToxjWW5 H1YiCiK5JwN diff --git a/icons/obj/assemblies/circuitry_n_data.dmi b/icons/obj/assemblies/circuitry_n_data.dmi new file mode 100644 index 0000000000000000000000000000000000000000..20a83f03e53409b51d2b83f7c32e6fba12aa0ff5 GIT binary patch literal 19482 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 VmZ~b(1^m_TK-**OYEEB?{}<-;OK<=H literal 0 HcmV?d00001 diff --git a/icons/obj/assemblies/module.dmi b/icons/obj/assemblies/module.dmi deleted file mode 100644 index 2656c8db43279426d5f4a73b7252f3f92bd8c747..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19683 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 aLOob@@s)Ph3-BMA0E)7zFH5A2{r?BN25|oX literal 19411 zcmcG$Wmr^E|2DemE&=HfM7kuUK}C@klxFBgkd&OE1PMWrP&x#qL1~zwQ97g~29WNK zVP-g+=lP#=oe%H(>74iC;+ol;J!}0|-M{<3*BajG={%tzWhMmxfI{QxqvrsCV|DXO zObFhIvM$g9FE#@WjeQ>3d)seU~WJu;kXMg6?aUT@iJT zX;}6OgNd;ACD)Iq4jY_|-7Hvi@4=BpWx2&)Dv@-*!A(@?7otK5ExyE_p2)bhk0Vr* ztlAyI2K2uA^rya~#MMt2zDh4eB`9=8-k#_8yTv+vY1DE5`j066;GJ-7QNddcBN^#q zWE3<%Nkj#`x8_OS@S1-%Z}GHGJ?u!?>>=A8CPhGBUf7l<1rI9|{5nTJgaz+E{Fp}7 zVpc4*KjAzm&(A4LqRPuUB=P93#y1E1sYA2FgBFIX;)ht4D^|7!i;F!r0N?~P9;q6> z$=uBfctbmZy+&H6;R@%~evSL7mzrw&Evhs|Q{{U&R|5=|-vF~L=M?y}Opk+5t~NBR zN-K@Q70HE>@p*YPeu9~*e*5~>T?J1#^6lB}F*OqTf&E0Ed&zbmwLY3O1zQd$JAQoN zxE8V&?6BbNwKfp1UO5$UpoNNOia&12OkB`0sT9{~9#YgmR-{ly+k zA010GD`--4`W)T*@Gvbkl^M!_=a4buLQP8_*7$k2zogn~Nx60H(C40m{}6XH6&}om z=+5<`yw`=8O%M+myDZwB#y~w*xf>#EYJ;{QPrqj9via_NDbFQ2Y`_dX8nEX zw--}7wSf9;%Q6BIy#i&c)vjmv{Y(YK5XC-`M87Ap!cRlIi41A1n60I|zDIps<=Uwq zbcEmJN0#Cfc-fbt&HyFCd;c!>rduFWOSI0;+>ckuNJ&2$PPx>^4!K^ld|JK*C}FP7 zpEx`713}aZmhx!m!RbDd1ByP3o^2t)7(BWzca=Pp>2N3n981b(LK$hp9cQOz zv})Vktnoi4)Sbx4wS-+B9zPh@?$N(O)x`;NcSDrAx)5h8Bql{R`uDMvgqa!51YmE6 z2$WT>ti|^GulCWK^e>Tw7B|aWs9FtY4s|_x9J3d+d>+*(Z{{)c^NajN7uQ83~PrF+|qH zXkF0&Z+$o??JN0nT2|J9S~alGFYK=p!!Nr|6szBCku}>-x5|RU_^M%v5TA(X-=FUW zp((Sp33sp}MKcFk?l|(pjse`86a&ipb{$G}u#m82QTFOX<>&e${f3md35Z-AJe4??ZSCpJNJ0-rHrMI4X%YDB?obcIX+?T_BRP`jb^S7h~ zj!)F>J>w<}Uhm1Sjsd|Us)}U*q3awDIlTUXXkWr#))T#7;DC0;8VUCs@^@5FJV~6E z-4UFQsF+v7X}Bg@o`h9ewhHKO&UtSA;Ya^`Oqsi<+OznIx2y zJzq7`JkNG!V3Xt3woiV#&%XR{|2XeLQ>C-JEqV-NHn*f!(4mLM6ocawjdh%ijB=7B zWMyTI*S9UQ>Mxq8!4Ukd`Oa9-qt&j_XCgbJ7cUx}sQ2tWae`hYy-}LB=hIrI;t|=Eily@lX_Kl8;yx zRkm5)_a~DD7nKaP{7C8f-qVf!%e`BvC{&=y2_{dxK5%|X_cK4X}TL13opVsVW`x{DKv#Og=7*mdDL%;^f1^^9<1#7n~oRDoR5E zO1^l4 z#dGE7AN->IaWG-zs<3wIcf0sv_QPFlOEfM)FwKzmIbJu?|5FUKEu_s$DPe%Ns80Ya z*KpTa3+)A*#X9EP>t4^z`*nx-S*P*^C37r(zws*}mubQ&N!>p>wbSr}EB269`gBCg zFZsqVFVHM?4+2~P3u-hG<%7>vnTHh!T-$$z|7^245At9?#)of=9~d7i5wcaV>%VPLKGIF^zHcp6}-x|x%pG&kc~WE8cW=x)5gX{ zG=phg^pa%r1<@G&($aFq+~GbAOZ4Al-n&_`jXVtxx*#9*smsmk&%O?P%4TLpf1DdgP)n-9pd8Hjamf>y@e5D5xGqV^p_hAksLC(;53i>iCG!gr|2dQ9;XoTHYww+3Yp|Pmx-=Q ze7en*2aR1E8lvhLnceFE=au7EVP}4taG{3eHd-?mK7f z$l?blO^WSq%H?z~`RfLSMz4HMAqSDEtKwdtES+LaW-*n?Cq0`!a#@y@Q_Y%=Peh4Rtijsmr0<^ShUNVnS>lOk zY&2{5u?S*XUg5WmARt9V@JLNVp9aA#LTW7K_a~iyPW4{lZ}wn30}pRAsExXV9-1HP zrF!V!-3`;Gr_aZ7{dx!a_mZb;{Qa1o@*GTHJD@lEZB>{nu^kVLB9tx+G4K#X07n-*fh7*sXKeT`PPag)H1JgQycGiFC*8pcEGAj)hn0AY1#VN&SbNc!AM+`!?($24!0BrFNK> zm`Zn@`m~KO6MTS{K^Xx1l$D)ycbjwT=JQ|%c`66YGWn_0HM12|Gs9larZlGox1Ew) zY?VsI#Bq%9`FX}7_Vv&tsW9^Na&+v&?vF~3OcIQMLkblg1tyrNA*;Yk3}@lR6=gRP z({xuLl`nH!OE?5Ukq)_hLdl`-R%zFc7mcvC@uT~`A9@&-{*8EGFxc`Xg*cV`;ZKPw z-vK44VR=N-@;(P0bjeroYDbxxiHYC#-ER7zL$sWM0a6ri%_#K6SByGUUVTkZH`QWK z-@6(83#e*JD3?;kZ9n&hmBi&z#Q@y2O7lY(F*i-}DvB*X_D@4drMkToC1QSX4mK`d zk3Q+Q)yy;zJ06 z?&bvk^PBG{CzQ4HIV40zUg{pLclJEjB73xVfvgDnJd+0zGA0Da;&6W?56`jVSuf&Y zG-X5ZWz9FQ*mqFPM^ywn-$i#)tJ-FlegTL< zEVTDM+h~zC3+sbmIVv944RiXeJ#7)1N zZ&|_%CW@tx6_rh+T&#+Bx!Jw|Ws@7Z15uXZ?B3q5_|Loo>C@|9p1^q<|OB{{*zOp%!($OFSpK z|Diocm0^jZ9`>ho>?)TRKh|c867HUpEFG=(TT)~#i?*<q6drjq7xll5S`|>X= zA|gWEWq{6Y=BH_$NRn_y?9Elqg3dM-yd`B~Ht|#3;`N8l zXnW@{Bi8&2+V^^7=|qTCTADk%Fmy?Y00Tv1?(HOKRkbq`u4r2SD#5j)QT^j-w!Hs) z37=SmR@jN@dS5w0JXXRA z22Y&b+4{7TyFxt!W`XEL4w--F7Do#)$MqTN`9c0mX749P(#ol(b0$62uIXNJVrPCh zhFDsby-oMmnV6dD&)=tlPukmV;E~_Omf>VS@a|dnZHSOksXk0AITa)j=D`9Z-!&QT z-lHV2+D;^ZQOhuNXN_-fZ7HltWoSO$gapHJ@#>X3$`Q-hLB<9Q4bV1GzO9Fz{ zRoL7gN>tM-OC;RcB{w!Tjg9%nr*PCI6nr|ttXp~%sBRaH6Owsc)EgXj04_^$DU5G@ zCv0p?olC|)u8hdq^zYN)l_G+k1(H>BqoKEUe8OGax&s|)fd)_sk>JpS07Lxp&}$v@AeD?E~vM4dip85t08DQu-wt{(s7h_#MB zGwvmKPte5mu&!!@>nD19`wG+0de|iqQuX17&RJEHzJ$jV@`n%9bk+MVs`xU$#KuXw|==zhbaA)%q0`IW02OehV2HOpf`(D$x#7QG(1=3r+ z8+vQ%G;~TP%N~hd=j9v4&A%Xfcvw&4gvRMb9Kij!@jE6pbpha2OXDpI<^kDA$EutD zNGso_Cd(kfQ#s1?t=l89gwJ2<&jrpc8Id)B6N+6hhw7R{8$O5AMQE|bPj>CHLy57W zV6IRSJXFW`i1{v2H*`sKCvHxd6VzUM=+=MVYqy0Fpm}x2xN|OxBZ|eN&cbQC#+S{1 zlmZZwrLZ_#;R;CHwJ|?5%b>ZMS2S0et=UURdprW0!7}?hs#K>8-^!<09g4|b+(&z1 z2a{ zT#knWOm;om8Air$2mJe4{_Y(G;wBk$6*!in1DS#i++PNG zTVIA|twutOYP3^cC@D%0bIjGMc%=#*$`Kj}1c!KoWQ`gWwD{W@P-@E7T@i5k{N_ol zmr<1ktr~_{gxGxZlP0!;Qv3?k51a$j*2j+-CHV#e#93U&t85Q#=HO@c3gUbe)41mW z0S&w12PY1={_=QMmFN%xdGW()ru?BKm4C7TSmUS=cF{n6BRrgr5lmP|WV)m-Wb-8S z`4rut_^Uem!2`@q$;&6Ya`ulh2qs{!#Ceoqj?>hIz&y{&(hiAR^s7+s% z!C#gVz^}SmvHo|aiTy5hs}AM&K~6A`{d#`Mbu|uirT^Se((P>SyzYm5<{zzKH^SS( z=?}EDEcqdcB6S2E2-=b%FI;+HPn48uy5h%QA9FdP71@G8&c$;5uXk``L2+zJ zJ-(&}f}`S@ErC|pvr1D8o%2;-hUB!;L{uUxYi^l|Du$&SFBz2_oX+Ue?R2-$xEtXD zl#d=aZZtEBfs`83XeU25LyFm5FE{_2WcCE`ED!c$j}w(|Yx^_%Xg%eNSAqM}gyRX% z?~}rWXTaiAPIJVFg%B_m$8Li~JqH=BOD|+Y?Mr%`>vMA$-j0mTPrRyKyFbwNvPTn(}hL8DNp-;@|s$6!!Zf$tBhL{$U@h7{5D)vlK7CV)$PZ3^I z{o_>|3RpqfbrLt_vUJiUtzcz|bz!d{tRlTtmSj!2h1d7Ku70QRlXAt6x<>;_w_p9zd z9Lo39s;#VTmmT#RkMz)AK`X;N`-8=-*D)WYa=f^ z%VX4_N)G22iA)?pUlzW&%JWWId{s%Azku{{$k_~(^ZxVCMAjhBE(DF)BobQu(T}e; z!!I@p>}yDsjt9JzR%PNs5@WQI;7us}(M*~hydjX;9#0oj-Oqd1{^q<$S1K_C#d+-J zCNp4?8)2#ZJ8uHDLzSHVLyCd=ixYHmb>_?Q-1&QJwuXIc`REJtwj1IRz{Gzi#P^gW z{{c6OYc8VTz13Am%E)Hhf%ZjpuFgf-(v_(NPw3B<_gmaj#QQXaz}$IIt%pt1y4j)P zbJH@0luBsL5R_)jzn>#$PI)V7m?C2T<72Ry+~r*k=(S?@H}2an2V?34^Tx}UM5YyG zw}{gm2T-pr-pt;QJSXn#olSj>LSWhkqN&6YSs+;w>Hd zVWb>QC4c=ifaLwBH2j~T9zHX+K?J^~H2+?VA{S)nJ1K8}tHTr>Fm`2&aTmJE?BN0H zLnhYMnXtzz5;>T#`9s0Km6NPj(%Od+NhcZ*k&safYT8r%H|O_e&!_5MO;~jiS8x_> zTE7YS(`t+!_l1qZwTeY73I+LLouGmk825{V)n#B5Ax5GY-RFZTIn$PY7v!*Aferb8 z=0wl7{0a5+gT|~Eq^9umK*=%UWLf~eRAruAZbn;L`=d9Ayrg_dAo)Xjoq)=7wRElm zC+1`NIgJc#zF9vfytkPBp`Od$3ilavyq*piRjj+~ z=Z2L9#!v_|-1vazr6gnZbCijR=I59g&%&ajHk)crZd>+Eq8LrGhKdSGChwZhdkrLF zxJ((W2>Ep?by6KFLiQk%Dk-SD_F~;r*s;9IHuW^^wlJ>+QZM%tNv%85@&yLxGNZcH zLtxR6@asv$_20zUk*AB96V^(d=3(mNrqUL5r-zNNS=AHS<2phJ0g{*<_SjRFcroUL zf$7nQcCI8+w=w6M2BZ6Hb}g49f^R}PD2-(Fq`&xLeEb6(IwPfN zB`c+9DmK`v9sQQ>>=lP?er3vIWf^IW7a>5&_74nP$hVgFH5MI^396Tjsl3*cUbPdv zMrI*Yx;S$}Ok(1bB_+H`53%KW|9eX+GpdG0Y2sgAzN=x2+&jq;xE2L+6)@aInnMBs zr-cclpLm`A7B2^g&4D>lx?Ywd6jk<%WM#>(yZL5u~YEAWzB6hPJWpt`qkA?88 zYHHT_i*uxgix8Y_MIg6F{4t?>70LV^SS?uH;z?ut&~qKUWFr_UlQ}tGW%i0He9A@oh}FA!luy zpOLw$M;JN9lv(YnsmY0iqwa)|`H46lPzkpQ!u0!I>qOJ5^rqD_L0egg`Y4zCwoQl$^swt(Go~H;EpWZ#zO2t$3sCoa!GF!;hEs=n!)hYlY?pd4 zd(r=%Wc!euT&|&;W8Zus8>mnQ_$j_7ot#%eeKyh$*%8}gW6?7)W;;mUgf6XSeSGb@jmuQhl+rM7!;dlMES-oPE zBp5TK>4*o!Q|aOXtRYG)j5uwaIZCb_#rknOQ}^(I1=JQx7tgu6xf^SrU|+S(tf`5% zvC+#OK*e&59S9NIYkLDkhuPY1kaG&U@^epZL}q5XCG0J#`kqdeeK16B^Tph>bx(Yj z=}g6t&NP8B5#(UY%E|=RL%3{d`;TV$D|1w+B`A%Ds;gYKk7rUwX!?tBcw}zh`Bxt3 zl*(YWGCVPz_0xm~^Y265?ZdpJhsGI11ERof7B|G|J?}F^?NE4m_IY6oF>uqaX9+sL zZu00=z$}Sp=i(Eb=>a2tjK3ws2|?zIVgX=B%LqM7{r3&ivS71PeSPq+!)NCaQZ34- z#!SEo85rZv;s#rcawsMKNo=c{H0MYvzpuh*|$CAl4@D zi6@bu`NA0g-gTyLbp%uss!2z;9*$M~CH( zAASY_b#u(`^M`4xRwq5@jJ*=MP#=16y!~^HEJRx}0j*YsHxJs+%=q6f+_(I3Vm4dR zj5aXyZt={)S^LLJJ)>yoM;pwu&$4$n$$v^Bb{lbwQqw`2TVENK6q2m3*m<9N@M8%8 zy%#SM`kqPT=X2T1w67KJpQ^`)rlho)F0N#>%X*_EWv)*aB>@$GZcl~KwA~r1?zU@1 zlnB82s&3ak|J()H)hjjcS$U@2lDG$V<9%{%mo;nVcFB-s10ve032}ld$BtRMJWd1| z&QH8Gkyc8uTc&U>I0zXiQy*WyZTEj&&zM7$D@^2~AD5zhcopQDS3V(dCKMy@eJqK< z*1X5DY2(P!YZwmA6XLfnaYH@yV5$sQM^9-fy^Y1+Zr3mJ0wxijyvlfV$-5y*VI(>y8*obk4prigzoY25ra_zo;%Zb9z78}_W1T-BWO3A(GWrf$X+^->rm-* zZnisv^4ucgaBUeJ5Z26T0`64bj+rlHBXcjQ2Hj6@CY++7Rb) zUv=kkR}qwm@L~coWceUy0Hdo~I?-{YA^p=-SmwXla*`p_qt~9MNmGl`vu*ZWBeZ)?=TPrC&aV}1pD|Hvl08({q#nB?OB&8LOZM~M+QdWv^y3UT7L3(p z2Axs$M6b`PMPbN`2Y(yQ3?*Ia0kbBhS{R9%96m*Q>o-5rv*xL?Nn1;!9t0x;(%aGpZZw-@L9^Tul7f=1Stl6nv53!Y zQn90XVf5e1&}^7wN5K*f`cs)lk8#>aP3jRAW{cn+lo6Hh)=$HPR8Nw|BD1`Jr>OPs7diBF2k^mMT zzgdV>J0WqV4&h~WZ9$*Um(m~HdPtFcUknET5eUHg^JwY0W9Vlm@4x=tiUX{6L&L5u zNN9)pO#2=^io^p-N=n+VE4q|aQCnNIV@tJU;k$lTgECxPtlz)$R~ZX|)Vugi8a@)8 zslk-qR;!g!s)P*AdZ)QJSR20@4n2^krJ^XMs8;Pvd}`~ z$|(`zy4j`O7Mz%O?^IvBkm~CrpH|GJ0#xc9C<<~UHL8D9j5@8ri^;V-okD6hHAt)n zUxI+Y4DaPR_jAI?759gA+bqGKJc^Y63C|qYKm=?av#>{9ky}-yHl`;Py~ua7m${93#}bD%Y~cwW z{$*wnFACE9J*EKHxDk#}$d|ao9-i}_gR4&g-o7p_vHfAgSP3r7S}CMqxGe@Sg7Z=SWX+c^HT++x(+uU?Bq4 zYm0Vc&Gvq_JegVjtA~b$cfo9j1G|FzZcFcE%WGOagZYu%8r^*S`mt>0KnChD6$HEg%_d~@>$ zBk;6OG?Kopf>)=#iRG#Cu|P>8n>xnB_4Bo+(b_WwS3mUvnvDACbry0SM)|;}Kc*Z9 zC(W(B#1=sOHStZpzh-?-wGAWD^*pY7HBSgkV5vFk6sZYSLt`a&dBJh74g-D90%!&&R9Xeq15|ct@ zepTj(4?A=WfsFXmD9DHhBePDGjq~C|u^iI0ev`wZpR|#UdDfE5)wV$i53|weTYvua zcy8_(#=3I7IvwYDggJS<(c)8Ah8m(^!+L;Y$;gf7kcy$IiVL`(rc4fMM3X`gT2B;Em|jYeOTJdErT+lOK?b zc$4dW@4a(pZ($kA3zbmu8c2pvsS-fWeC}^`@+R$4{NbKjhsi`jUs0kw!QdZo zCR|KCIR8HLg&;@B=E6XC`+WQ53P_a)$2{EQOk<%qR?UohCeG@HhJ|IF)W6veg2U9U7dVqFXox*!h7 z!9oG1sozIT{{!f$B_ielI};8M{i86QG-qIy5uB8y%p@WU@x z*V8za5%`)z^Zc{#kQrDkNkLUh8T%D){6~u%Df3iSf6De;`RK);jg$Mk=Z$3H!_gjt zqlLx8HsRsnvb0KmJJk6FK?F6XmEcTSY~F_x0hwl2T~h1t^)*49(rYsl#kU7V&o({e zjd3L15Xb1e`d^hC!K++-nouI3rS)&jkt)LbI0bf+GG1Q`gbg!<3{+XT3)wpAreMOG z88LYQ74z25w{t=zl9_ypcb8G%)@uO#7}Wu*SLVbc+$rD&0|9{lhf4{Yd4kHA^A5@3 z;UTf*eR5d&4~y?K#AVp|Ycw_Bd9EDIUjhZCqL1;T#~C)7JlC9GNLs+wc%{p+XN?UUuR=3_ri%h4zz zs*+NKgLd-d`F8?V8k(Vy%94^EWiRt#^mUpDk}2n8V#2W^RU8o|Jk4P6) z&Ia4|F09|L%*{P=qaz;*JY`T+XZ>W3>X9E+_nNSBr<0@{=;JV@-^5rLSq0P?8(%-mu>{2ar=yct`Pby0_hSjO)fNort9dmPQq6 zd~6?LWPY}RKm|t4iak<)6xnH0ofOJF#Q;7U*WEq}lAEpbeZODc9p>*fjYPaQ(ayO^ za5)snroI$Lip8@j;{QjM!rG&VZ~*lmU^)lDr2dbcIpLHgR3$iA0W>|WFmE}m#6DT= zY~1;{J#`)MtB8Xap#-JFEA^-lTZ;Rd!@2(>2iEK6d;_RUi3w_UZsf}!gZ@ov2ZUof z;2p{VO7iQ%gg{xA+o?zOBWW$+r&?MnCZBOYAq#pBe1a0hXPO`3T`2K9oXsFMBG#a# z*K5=D&hgqK9U;b8MLYR(99UUd0CQaTve>D6vIatYQ$EewbLk3zDe{ZTt?7;M7* z@_7y>3-i}5Q+movc;VMHBRSNK?(Kq%x!3XPw(`%Zvz)2RMexKmWw{vtVD!oA#Q9$W znwyrT4fa+C?fI+NZ`hYilBxH(qj;zR?}+73Q+S?{^FwKtl)Yxr z`o+m50x`Q6m}2H~yxMuDTJ!UPMcl`-fTw-wy@Sc#In;lkOU`#gs?-!Q83sw8JQ5!o zjDu4R)HRVmM>^ktV(0%Pl>V)6uyX?o9&lbF>3oyPb49I_uq_z#{u#wWIF-x5#=9Rk=wRO-7U~|0)%ikNoKYpco7jPxGD4nwMLrU z`De;!jEej}3qq<@d@Jr1xJ}m(tzO^>xmmHfo;mI7Cn|SB#*7T08zG(gAo77LvH+An zWz%)3;zsGzOf1~s&dJ!v^mG^q(xBigC@J~7e$w-8-+)XOlpmn<5d@V8E|6YoueBU4 z_qNfrhxn@|#io1(bp6{Qxp!^+%mWvNO~G6a2A1fh^RIVAq=(Mr8)dj`ZK>1d%*3)z zzVZkN+yb>?Ol&MZfaZ1-PQJ){fBEEnd4K1FR{jkzW|jnXw}s`4pbPi!8?p^l9i9KG zUwemX279$c- zRn6=4aQESoJKK&JBI>XbXY=RQZLb{2MHFHb8Du)G_*8>~TOP85 zJC#P5qk?Epn=6Mu*8#+Dk7)`;3qsR=Rm8+6v@?(?brg8#w1dpt@&13wEz?`E*u))-S6YSGXSdZK#zIx5<=Se6<}6)zO-BfwKK9l!h=yekUfSg22RxNbN|583nb|pCiu6V1_Gyaf)vb{ zM$rs+P&f;R(GMDu)AqsaGB6vU{RC1lwH+ex^oFT}Cd)iwn^|CPlG0|f(xwbUNDc+a z3d55K1KGtufP0p7!x+EeGyR{rctrbeo(lW>n+2g7Gsr{pNe=gjuI&OJoxN;kjC^$A z)&>f4{9*Xe@%$ktk_Ssn2T=-)~HfIob=`XCfT!w5DRTsp!UdL!?ew$Ur(j@Y92URr!_r`Cj$K@d!=u zv9`$ZVuW*vn=2-e4Npt|VUx*5oU|1HI!kkgr4y)3cD_Pgl*`t!nL_r_uNh`n=-}ho zG;i3~ijMZk#PsV9O;Lr)bedVyFuj)3namTAZFY6xgIk!~phNZI#e`Dvf8g>Ks;vEp zs>}oa+g{1y0SiEV@|X)~Lpgn3+#fJPcshL`Eg$BXUUFm@s(lEW%m1;yg}$j=xw7ZRfx_>lx7#wSzdnnX$5PzHS9(c{NlAiVu&#{s%hW)F8ireSYDlgp76 zf*^Ubckf2#H&gQ>-dpqBsau@YG?frwtoug(MDYDm)3g)gtKYSQIax8*aeaCg?tacZ zKeoyL@EIQyw0#!4GSisey?Skr1KXzGk9H?VZBKsXJ}odT3+jQ=-o9aW1Ox<8l!)5V zcN^1{RB{}|5#2r`AQnE&IY}9DOz>J@N%pjGlLRsjhcXavB_P1G((L4x;>yn!cPw3l z$bOFMT&P|zolt!Uf*MPlIav4PBn>D+HT{KI*FP>7f%W8G&v`rMj?;?;Vwe&Tn6`Y1 zH|KLEAY%zpH(@H;DOVp!2%!lr;;oBkTmC4*)0~q@{OHN7Bgk3!U%2n0B5cgZcqTYT zh@NWK4)gJ~efpN|7czJa-ke&erQIso|0L1~|1w+YiQeAQQX$xvhrLQxYX2>zivt8I zro}bM(Wcy?bvp>y3p}CKaH4cgwCfO?^+} zu#uBK9U2hZDP_GFM$4vd8=QL@_dLe^XF_>H)_2oPA%nX{eApex%z2uu-d?5&og3?ILQEo(h+A_W#XU2Aj@kihQh?%!v;SAj6OjD4_{qg6SFvAeTqDc2pO zhw?YuB+^{K_|4Gdi#zKQ++Q>qR5(#8i?gEO3FYu`b3ZKYnpaDfbJsi7YJimr_xlY; zc!r$ESuLmE-n^FpBmD!09XMF1L17zK*%*^%S;Znb^7q_F5Qkeb_ohdwvMeWG3!8gb&_BOv{GZ7w&^gb! z9n*RsYcLvGYj(%ue^`(b=iJzfzre*j)lf)xmfU9gYCn#&g^o{?4uu7-pA| z8^|@kQ6XVCy-JI0AuREY$?qR{t1Hp2C4PQcN|yV5`^tx#P?dV?heN{q*X)?8f=bH> z2>|tX{kJnbQW893&H07etKNmgK2OGm`VnpTKz+df-jM(Q^p{AZ>8Z+Jt>mDS55jrk z#nn$Jb~cJ6oVv#Y&rhjg!^$8#ZOSKKjyL9BJhJkxjhQUC%5BjXtiLT==MBF>DsANw ze<-pBjTO#*mU8uzY~F>`xzS7PCupS0AkSZVa`x9~U0?C-;nPkzMp|VbDc9oysn~7a z-`j|<+sd+m_llwY2iy3^=#Tz%z`-EZ{s%Y*{vU$&*3>|YK+e)T=*3m3taRt`FHpgY zeYVO@r2Jn$tdYchv4A7HpV$9nw6Yau?qqqqEEHuU`7q3R=ZJ|2GcUg-8zTLmo7pgO z<4WZM{x?N{OKYm>;H$)-W9SBD4r+b;ry zf0_!J)y00N!c#&z$m6hHulfl!cb~QLOhlN*Lp_)_OP>zKGCYNFp{1?rPA~uU;Q~`v zA+>W5i#+7BEvThLREB@Qui`${|eB^nU?)^*A-`}y0dm<8|X#YzIi2Y3#?4-F-dDjbpD zbG00ACSJJ0543q`N-n zP@AQOyMW3X>Xx127*VOeDcv|Cu$t}uR2l%>ey^!k>c>DoVH9*VG3oLCltYi>pvJy5 zz0z?%tyc6VJq+AjGC0n~R_+@|CA(&KBzF59V}v(p(Z=MN=Ern!xGlY9=4-+FcyoJP zn65JBk97%M9Bjk3Jab{WcgsY~-lq~y zAWkGvBE)`K`=Tb@Es6YZUiXwwA59vxndvTJa``u!e^27FKUk+#XjyTznjMbyd8}}` zl1yp9W1_GbzXnbb#yYb62lc_12UNjz1Y;i;SrW_HMFdK8Pens8GM`0=;WXS%q%zl5 zo#zpnpTsRw!4Td28mhF*C@Mn00$ z%IcrYJSfiox`%7pIv(DYt``h1B?XcgX-kZ+IZB7Oa2NaX3gLfeE9;a>$s}`79w!#m z2?;$l2{*mK_j<`4%yw?$mkUoa4z$xOL`IYrp;?Ntp_T93!gL%*_O*E1zn^OH<{GHn zFWe`Lxa4MqIumUTv8z1o4HYriCXfjK`=pP10rv#d$V$1mb#(vS<9~^xConh?j0(Zi~P z32LCNl!+-_A>jVd?uU;(s^9W{jVeu z#+K#D>;JhaSEQTs9{etl{6@y0gHDe2dWOBhSg{CbE)b_2^uuyKV?X~{9+LLY5RowKr`X4p;<2?}VhpsK z4gc#^UW~f=Nvp#?W)TzY69qiQIbTD5n?sgw!BX)j5KVfRQcdqNXbyS0A8f52Pm<>w zb|PvE5*U2nsy2^J#p1u07AxPNql7Ji#RTuf^Dcso=mAdgdxq6mhL<@L1Z^n~H9~6Z zA?_hB8FK$y9d0Eddaw61Cb5;iC$>K((Vbg%o=y<*u<7e|0bpz*20X0|@t5ZbF)@Y* zKX{%Nl=>>pqEM7pGfkvBS2g0GG*s&C7CS?x--x0}Gj^dhXkJI2oO$IObz>Ygje+~o z)cJYxOaEv6ox5viS#s)HO82e6k$(5t;fsI($NxfXjr=DLg{pvK2SPvu0v{NZ_g*6h zzYf(Ra)mw~c2)Qq6r8nRX7Zy!FyO<758(j=4iW&Ty!>oIlJbVnnczFyo_LypAFuzZ z12D@<-jHxkyFCB>1u;hQblKPWeE$ew;Me!2UD+%54RVx1!pp<+8fk)wW)CE0k#=ia&w&no-S&}Fr=u{BM|DRuq{ z`gR^03WI;!^7Zjk8Q=J_nX9y)j{JCS_-< zsv;0591f|cr#IXbrd!$xG9|RWN8-p2%lUxwt*)*vGBN;ZU_$m$ZNqQtRFHFr+Ng0* zdsJO`fjsuYR@Q!F%vej*fCM@0X3yyd_;eks=7S>^jH)WhGqNtOu4sx?@orp=yD3d^ z2VX4`0N?_s5{A*=inW6MAMs1uL&2(uIal+U8iV#Ih6?d;rbV&O$<14)8 z;{;W`OAkUxf~cq{T*4;KOsWTPfPpG9zn)H~Lr1oh5eNec2M}m{C<+VX+8iPLl-6;akWWxja{h_~s>jlI!OV(Ev)?3w1S< z0V2{2Q!)j?Bpat862~QOr6gHCFJ0Tdm(Z#@unjbH81CJ^n5Kn0Z-)+^m;E(iqlo3( zk9t&-<*r$~R=47lpTFIzwl-=dAucyB`bW$qu6`QA{0N$Cv7AQ^>BXTVjh-#h)iajk zFDBWv9E{&C2zl&^^6DbT5a;(SrY1l-qO_z$%5z=L(a|v@J9|3%Ljm7OM}7QUONkwG z5vj+GE3e$8i9+=;BZKUDx|Nl-iI4?EfgaOPf?pc_ZdnldoKV)r@HsF3UJRw{^2h6I z5w%wXEilh>l6wP7(FPWd(OU{jpPECqKj+Ru`iO)uPp8DryURQrIX%q!)X^VROZ8!zm%JZ-ICEySH`j{q`@CO0ZTCS4BkQE z=Z7!F9@}t@H7C6&psE7;SK!c+u|sxolS<7iAnnW59JKT>iw9>7q^NZsN#Ep z(Jp>G>AKgBm9Pb9nAhj#f=3gC3rSa_UChL;&jE=!Nk(O5W~CN*GKRmUwu3zmh>Nz) z&WgZ#YxNT}a9P5|f>XdzlABty$2IbW{q4E2F=KI=YB$A$EB76^nIrRu)EQZ=orR#| z;!Vf%@-({COC?8nk4b310pMH7HA!LN>#@w`7*OvpgsCsLEWn3#BVA3CcA+k#>w_6Oc)V&1jLFbv?)lX|9$=UVp}%( X19{R=NXh`ox}ekcXYCla#H7Cg)9sJO diff --git a/icons/obj/clothing/headsets.dmi b/icons/obj/clothing/headsets.dmi new file mode 100644 index 0000000000000000000000000000000000000000..b977487e2c6cea4a4c05f1a3e0f1eb1cb94668fc GIT binary patch literal 1590 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�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኷)DywvMiniIC0DvG$O$ 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 NhcLG>tGVo*^dCo&YySWM diff --git a/modular_skyrat/master_files/code/game/objects/items/encryptionkey.dm b/modular_skyrat/master_files/code/game/objects/items/encryptionkey.dm deleted file mode 100644 index 793371eff89..00000000000 --- a/modular_skyrat/master_files/code/game/objects/items/encryptionkey.dm +++ /dev/null @@ -1,101 +0,0 @@ -/obj/item/encryptionkey/translation - name = "translation key" - desc = "An encryption key that automatically encodes nothing. You shouldn't be seeing this." - icon_state = "translation_cypherkey" - greyscale_config = null - greyscale_colors = null - -/obj/item/encryptionkey/translation/beach_bum - name = "\improper Beachtongue translation key" - desc = "An encryption key that automatically encodes Beachtongue heard through the radio into common." - translated_language = /datum/language/beachbum - -/obj/item/encryptionkey/translation/buzzwords - name = "\improper Buzzwords translation key" - desc = "An encryption key that automatically encodes Buzzwords heard through the radio into common." - translated_language = /datum/language/buzzwords - -/obj/item/encryptionkey/translation/gutter - name = "\improper Gutter translation key" - desc = "An encryption key that automatically encodes Gutter heard through the radio into common." - translated_language = /datum/language/gutter - -/obj/item/encryptionkey/translation/machine - name = "\improper Encoded Audio Language translation key" - desc = "An encryption key that automatically encodes Encoded Audio Language heard through the radio into common." - translated_language = /datum/language/machine - -/obj/item/encryptionkey/translation/mushroom - name = "\improper Mushroom translation key" - desc = "An encryption key that automatically encodes Mushroom heard through the radio into common." - translated_language = /datum/language/mushroom - -/obj/item/encryptionkey/pan_slavic - name = "\improper Pan-Slavic translation key" - desc = "An encryption key that automatically encodes Pan-Slavic heard through the radio into common." - translated_language = /datum/language/panslavic - -/obj/item/encryptionkey/translation/shadow - name = "\improper Shadowtongue translation key" - desc = "An encryption key that automatically encodes Shadowtongue heard through the radio into common." - translated_language = /datum/language/shadowtongue - -/obj/item/encryptionkey/translation/skrellian - name = "\improper Skrellian translation key" - desc = "An encryption key that automatically encodes Skrellian heard through the radio into common." - translated_language = /datum/language/skrell - -/obj/item/encryptionkey/translation/slime - name = "\improper Slime translation key" - desc = "An encryption key that automatically encodes Slime heard through the radio into common." - translated_language = /datum/language/slime - -/obj/item/encryptionkey/translation/spacer - name = "\improper Spacer translation key" - desc = "An encryption key that automatically encodes Spacer heard through the radio into common." - translated_language = /datum/language/spacer - -/obj/item/encryptionkey/translation/sylvan - name = "\improper Sylvan translation key" - desc = "An encryption key that automatically encodes Sylvan heard through the radio into common." - translated_language = /datum/language/sylvan - -/obj/item/encryptionkey/translation/tajaran - name = "\improper Siik'tajr translation key" - desc = "An encryption key that automatically encodes Siik'tajr heard through the radio into common." - translated_language = /datum/language/siiktajr - -/obj/item/encryptionkey/translation/akula - name = "\improper Te Velu Akko translation key" - desc = "An encryption key that automatically encodes Te Velu Akko heard through the radio into common." - translated_language = /datum/language/akulan - -/obj/item/encryptionkey/translation/terrum - name = "\improper Terrum translation key" - desc = "An encryption key that automatically encodes Terrum heard through the radio into common." - translated_language = /datum/language/terrum - -/obj/item/encryptionkey/translation/teshari - name = "\improper Schechi translation key" - desc = "An encryption key that automatically encodes Schechi heard through the radio into common." - translated_language = /datum/language/schechi - -/obj/item/encryptionkey/translation/uncommon - name = "\improper Galactic Uncommon translation key" - desc = "An encryption key that automatically encodes Galactic Uncommon heard through the radio into common." - translated_language = /datum/language/uncommon - -/obj/item/encryptionkey/translation/vox - name = "\improper Vox-pidgin translation key" - desc = "An encryption key that automatically encodes Vox-pidgin heard through the radio into common." - translated_language = /datum/language/vox - -/obj/item/encryptionkey/translation/vulpkanin - name = "\improper Canilunzt translation key" - desc = "An encryption key that automatically encodes Canilunzt heard through the radio into common." - translated_language = /datum/language/canilunzt - -/obj/item/encryptionkey/translation/yangyu - name = "\improper Yangyu translation key" - desc = "An encryption key that automatically encodes Yangyu heard through the radio into common." - translated_language = /datum/language/yangyu diff --git a/tgstation.dme b/tgstation.dme index 83556138c36..c36f545f941 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -6165,7 +6165,6 @@ #include "modular_skyrat\master_files\code\game\objects\items\AI_modules.dm" #include "modular_skyrat\master_files\code\game\objects\items\cards_ids.dm" #include "modular_skyrat\master_files\code\game\objects\items\dyekit.dm" -#include "modular_skyrat\master_files\code\game\objects\items\encryptionkey.dm" #include "modular_skyrat\master_files\code\game\objects\items\hhmirror.dm" #include "modular_skyrat\master_files\code\game\objects\items\holy_weapons.dm" #include "modular_skyrat\master_files\code\game\objects\items\oxygen_candle.dm" From 089592d8501dcdf78e8ac29f3c767e207a616813 Mon Sep 17 00:00:00 2001 From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com> Date: Sun, 3 Dec 2023 21:00:15 +0300 Subject: [PATCH 02/61] Automatic changelog for PR #740 [ci skip] --- html/changelogs/AutoChangeLog-pr-740.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-740.yml diff --git a/html/changelogs/AutoChangeLog-pr-740.yml b/html/changelogs/AutoChangeLog-pr-740.yml new file mode 100644 index 00000000000..5be58bef7f5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-740.yml @@ -0,0 +1,5 @@ +author: "YesterdaysPromise" +delete-after: True +changes: + - image: "Following now have unique item sprites: syndicate war declaration radio, curator and chief beacon's, chaplain beacon." + - image: "Following now have unique inhand sprites: radio, export scanner, walkie-talkie, syndicate war declaration radio, curator and chief beacon's, chaplain beacon." \ No newline at end of file From 100ede82bd27e39fc8844464aeb2be82822862f5 Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Sun, 3 Dec 2023 21:01:49 +0300 Subject: [PATCH 03/61] [MIRROR] Replaces the fake monkey cube in Birdshot tool storage with a less lethal one, adds something else fun [MDB IGNORE] (#25365) (#908) * Replaces the fake monkey cube in Birdshot tool storage with a less lethal one, adds something else fun (#80030) ## About The Pull Request One of the "monkey cubes" in Birdshot's tool storage was actually a gorilla cube. This was funny up until people realized it was a thing and now people are using it intentionally to grief. I'd rather not. It's a different cube now. I don't want to spoil it but it won't kill anyone, just make people laugh. I added a different fun item to another tile in tool storage. Again, no spoilers, read the code if you really want to know what it was. ## Why It's Good For The Game I like the "cube says it's a monkey but it's not" joke. It was funny when people thought it was a monkey, used it, and got killed by it. Problem is, people know what it is now and have used it for grief purposes, so we can't have nice things. Gorillas are stupid hard to kill and will de-limb people by looking at them. I wanted to add something else fun to replace it that isn't just the exact same joke but now it won't kill you, so I did. ## Changelog :cl: Vekter del: Replaced the "monkey cube" in Birdshot's tool storage with a different "monkey cube". add: Added a fun surprise item to Birdshot's tool storage to compensate for the above change. /:cl: * Replaces the fake monkey cube in Birdshot tool storage with a less lethal one, adds something else fun --------- Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Co-authored-by: Vekter --- _maps/map_files/Birdshot/birdshot.dmm | 477 +++++++++++++------------- 1 file changed, 239 insertions(+), 238 deletions(-) diff --git a/_maps/map_files/Birdshot/birdshot.dmm b/_maps/map_files/Birdshot/birdshot.dmm index 3b08b25111f..8d7b0590853 100644 --- a/_maps/map_files/Birdshot/birdshot.dmm +++ b/_maps/map_files/Birdshot/birdshot.dmm @@ -46,6 +46,10 @@ }, /turf/open/floor/iron, /area/station/security/tram) +"ach" = ( +/obj/machinery/netpod, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/cargo/bitrunning/den) "acl" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/decal/cleanable/dirt, @@ -112,12 +116,6 @@ /obj/machinery/portable_atmospherics/canister, /turf/open/floor/plating, /area/station/engineering/atmos/project) -"adH" = ( -/obj/machinery/netpod, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/cargo/bitrunning/den) "adL" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -3931,6 +3929,30 @@ }, /turf/open/floor/iron, /area/station/security/processing) +"bCh" = ( +/obj/effect/turf_decal/stripes{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes{ + dir = 8 + }, +/obj/machinery/door/airlock/mining{ + name = "Bitrunning Den" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, +/area/station/cargo/bitrunning/den) "bCi" = ( /obj/effect/turf_decal/tile/yellow/opposingcorners, /obj/machinery/atmospherics/components/binary/crystallizer{ @@ -6106,6 +6128,27 @@ "cvJ" = ( /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) +"cvP" = ( +/obj/effect/turf_decal/stripes{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/holopad, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, +/area/station/cargo/bitrunning/den) "cvZ" = ( /obj/structure/closet/secure_closet/evidence, /obj/effect/decal/cleanable/dirt, @@ -11064,6 +11107,10 @@ /obj/structure/frame/computer, /turf/open/floor/eighties/red, /area/station/service/abandoned_gambling_den/gaming) +"ejq" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/cargo/bitrunning/den) "ejt" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -13973,12 +14020,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/science/ordnance) -"fkL" = ( -/obj/machinery/quantum_server, -/obj/effect/turf_decal/delivery, -/obj/machinery/light/cold/directional/west, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/bitrunning/den) "fkT" = ( /obj/effect/turf_decal/sand/plating, /obj/structure/alien/weeds, @@ -15044,25 +15085,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"fBl" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/table, -/obj/item/folder/red, -/obj/item/food/monkeycube/bee{ - name = "monkey cube"; - pixel_y = 17 - }, -/obj/item/food/monkeycube/gorilla{ - desc = "Just add water!"; - name = "monkey cube"; - pixel_x = 3; - pixel_y = 13 - }, -/turf/open/floor/iron/dark, -/area/station/commons/storage/tools) "fBq" = ( /obj/machinery/atmospherics/components/binary/valve/digital{ dir = 4 @@ -16265,9 +16287,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/maintenance/department/medical/central) -"fXd" = ( -/turf/closed/wall, -/area/station/cargo/bitrunning/den) "fXg" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -17786,10 +17805,6 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/grass, /area/station/service/hydroponics) -"gzl" = ( -/obj/machinery/netpod, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/cargo/bitrunning/den) "gzu" = ( /obj/effect/turf_decal/tile/dark_red{ dir = 1 @@ -18380,27 +18395,6 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"gKH" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/brown/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/holopad, -/turf/open/floor/iron/dark/smooth_half{ - dir = 1 - }, -/area/station/cargo/bitrunning/den) "gKK" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -18726,17 +18720,6 @@ }, /turf/open/floor/plating/rust, /area/station/maintenance/department/engine/atmos) -"gQx" = ( -/obj/effect/turf_decal/bot_white, -/obj/effect/decal/cleanable/dirt, -/obj/item/clothing/gloves/color/fyellow{ - pixel_y = 7 - }, -/obj/structure/fluff/broken_canister_frame, -/obj/machinery/camera/autoname/directional/north, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/plating, -/area/station/commons/storage/tools) "gQG" = ( /obj/structure/window/spawner/directional/east, /obj/structure/closet/crate, @@ -19166,30 +19149,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"gWV" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/brown/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/machinery/door/airlock/mining{ - name = "Bitrunning Den" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den, -/turf/open/floor/iron/dark/smooth_half{ - dir = 1 - }, -/area/station/cargo/bitrunning/den) "gXf" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/decal/cleanable/dirt, @@ -21651,6 +21610,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"hNv" = ( +/obj/machinery/netpod, +/obj/machinery/light_switch/directional/north, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/cargo/bitrunning/den) "hNA" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /turf/open/floor/iron, @@ -25305,19 +25270,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/commons/fitness/recreation/entertainment) -"jeB" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 1 - }, -/obj/effect/turf_decal/stripes, -/obj/effect/turf_decal/trimline/brown/line, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/machinery/light/small/directional/east, -/obj/effect/landmark/start/bitrunner, -/turf/open/floor/iron/dark/smooth_half, -/area/station/cargo/bitrunning/den) "jeC" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -26078,26 +26030,6 @@ /obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/catwalk_floor/iron_dark, /area/station/commons/storage/tools) -"jux" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/brown/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/smooth_half{ - dir = 1 - }, -/area/station/cargo/bitrunning/den) "juJ" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -27495,13 +27427,6 @@ /obj/item/bedsheet/brown, /turf/open/floor/wood, /area/station/maintenance/starboard/greater) -"jSp" = ( -/obj/machinery/computer/quantum_console{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/bitrunning/den) "jSw" = ( /obj/structure/railing, /turf/open/floor/catwalk_floor, @@ -27849,6 +27774,25 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/half, /area/station/hallway/primary/central/fore) +"jYV" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/table, +/obj/item/folder/red, +/obj/item/food/monkeycube/bee{ + name = "monkey cube"; + pixel_y = 17 + }, +/obj/item/food/monkeycube/chicken{ + pixel_y = 15; + pixel_x = 6; + name = "monkey cube"; + desc = "A new Nanotrasen classic, the monkey cube. Tastes like everything!" + }, +/turf/open/floor/iron/dark, +/area/station/commons/storage/tools) "jYY" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -30740,6 +30684,19 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/wood, /area/station/service/abandoned_gambling_den) +"lbF" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 1 + }, +/obj/effect/turf_decal/stripes, +/obj/effect/turf_decal/trimline/brown/line, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/machinery/light/small/directional/east, +/obj/effect/landmark/start/bitrunner, +/turf/open/floor/iron/dark/smooth_half, +/area/station/cargo/bitrunning/den) "lbG" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 1 @@ -32921,6 +32878,20 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) +"lKH" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/line, +/obj/effect/turf_decal/stripes, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/machinery/airalarm/directional/west, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/landmark/start/bitrunner, +/turf/open/floor/iron/dark/smooth_half, +/area/station/cargo/bitrunning/den) "lKK" = ( /obj/effect/mapping_helpers/broken_floor, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -32936,6 +32907,13 @@ /obj/effect/mapping_helpers/airlock/access/any/security/general, /turf/open/floor/iron, /area/station/security/checkpoint/escape) +"lLq" = ( +/obj/machinery/firealarm/directional/east, +/obj/effect/decal/cleanable/oil, +/obj/machinery/byteforge, +/obj/effect/turf_decal/box, +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/bitrunning/den) "lLr" = ( /obj/machinery/porta_turret/ai{ dir = 4 @@ -36381,15 +36359,6 @@ /obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron/white, /area/station/medical/virology) -"mVs" = ( -/obj/effect/turf_decal/siding/blue{ - dir = 1 - }, -/obj/machinery/airalarm/directional/north, -/obj/structure/bed/dogbed/runtime, -/mob/living/simple_animal/pet/cat/runtime, -/turf/open/floor/iron/white/small, -/area/station/command/heads_quarters/cmo) "mVt" = ( /obj/structure/cable, /obj/effect/turf_decal/siding/dark_red{ @@ -37873,6 +37842,13 @@ }, /turf/open/floor/circuit/telecomms/mainframe, /area/station/science/xenobiology) +"nyf" = ( +/obj/machinery/camera/autoname/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/food/cornchips/green, +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/bitrunning/den) "nyi" = ( /turf/closed/wall/rust, /area/station/maintenance/hallway/abandoned_command) @@ -38223,6 +38199,13 @@ /obj/structure/falsewall, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) +"nEl" = ( +/obj/machinery/computer/quantum_console{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/bitrunning/den) "nEo" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -38284,6 +38267,9 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth, /area/station/cargo/drone_bay) +"nFo" = ( +/turf/closed/wall, +/area/station/cargo/bitrunning/den) "nFp" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -39233,26 +39219,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/restrooms) -"nXz" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/corner, -/obj/effect/turf_decal/trimline/brown/corner, -/obj/effect/turf_decal/trimline/brown/corner{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, -/area/station/cargo/bitrunning/den) "nXP" = ( /obj/machinery/airalarm/directional/east, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -40840,6 +40806,9 @@ /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"oCG" = ( +/turf/closed/wall/rust, +/area/station/cargo/bitrunning/den) "oCM" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/broken_flooring/pile/directional/east, @@ -46390,10 +46359,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/science/xenobiology) -"qrE" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/cargo/bitrunning/den) "qrI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/textured_half{ @@ -51087,6 +51052,26 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/orange/hidden/layer1, /turf/open/floor/catwalk_floor/iron_white, /area/station/engineering/atmos) +"rPx" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/trimline/brown/corner, +/obj/effect/turf_decal/trimline/brown/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/smooth_edge{ + dir = 1 + }, +/area/station/cargo/bitrunning/den) "rPz" = ( /obj/structure/table/glass, /obj/item/flashlight/lamp/green{ @@ -51556,6 +51541,26 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"rWP" = ( +/obj/effect/turf_decal/stripes{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, +/area/station/cargo/bitrunning/den) "rWW" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -52532,13 +52537,6 @@ /obj/structure/thermoplastic, /turf/open/floor/tram, /area/station/security/tram) -"snI" = ( -/obj/machinery/firealarm/directional/east, -/obj/effect/decal/cleanable/oil, -/obj/machinery/byteforge, -/obj/effect/turf_decal/box, -/turf/open/floor/iron/dark/smooth_large, -/area/station/cargo/bitrunning/den) "snJ" = ( /obj/effect/turf_decal/stripes/corner, /obj/machinery/light/small/directional/south, @@ -53448,12 +53446,6 @@ }, /turf/closed/wall, /area/station/commons/storage/art) -"sBO" = ( -/obj/machinery/netpod, -/obj/machinery/light_switch/directional/north, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/cargo/bitrunning/den) "sCc" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, @@ -57240,6 +57232,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/hallway/primary/starboard) +"tPZ" = ( +/obj/machinery/netpod, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/cargo/bitrunning/den) "tQx" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/reagent_dispensers/fueltank, @@ -62129,6 +62127,15 @@ /obj/machinery/duct, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/restrooms) +"vtq" = ( +/obj/effect/turf_decal/siding/blue{ + dir = 1 + }, +/obj/machinery/airalarm/directional/north, +/obj/structure/bed/dogbed/runtime, +/mob/living/simple_animal/pet/cat/runtime, +/turf/open/floor/iron/white/small, +/area/station/command/heads_quarters/cmo) "vtv" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -62653,13 +62660,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/office) -"vCa" = ( -/obj/machinery/camera/autoname/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/item/food/cornchips/green, -/turf/open/floor/iron/dark/smooth_large, -/area/station/cargo/bitrunning/den) "vCe" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -65762,6 +65762,18 @@ /obj/effect/landmark/start/cargo_technician, /turf/open/floor/iron/smooth, /area/station/cargo/office) +"wzp" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/gloves/color/fyellow{ + pixel_y = 7 + }, +/obj/structure/fluff/broken_canister_frame, +/obj/machinery/camera/autoname/directional/north, +/obj/item/stack/sticky_tape/super, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/plating, +/area/station/commons/storage/tools) "wzK" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -66911,20 +66923,6 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/iron/smooth, /area/station/service/greenroom) -"wRI" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/brown/line, -/obj/effect/turf_decal/stripes, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/machinery/airalarm/directional/west, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/landmark/start/bitrunner, -/turf/open/floor/iron/dark/smooth_half, -/area/station/cargo/bitrunning/den) "wRL" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -71940,9 +71938,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/central/greater) -"ygc" = ( -/turf/closed/wall/rust, -/area/station/cargo/bitrunning/den) "ygd" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/engineering/atmospherics_portable, @@ -72316,6 +72311,12 @@ "ylD" = ( /turf/closed/wall, /area/station/maintenance/starboard/greater) +"ylH" = ( +/obj/machinery/quantum_server, +/obj/effect/turf_decal/delivery, +/obj/machinery/light/cold/directional/west, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/bitrunning/den) "ylJ" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, @@ -84013,12 +84014,12 @@ slY ueX slY ueX -fXd -ygc -fXd -fXd -fXd -fXd +nFo +oCG +nFo +nFo +nFo +nFo lxy hzm jTA @@ -84270,12 +84271,12 @@ slY hfc jBb iNE -fXd -gzl -wRI -fkL -jSp -qrE +nFo +ach +lKH +ylH +nEl +ejq tvN lRc moz @@ -84527,12 +84528,12 @@ gZk iNE kwY kPW -fXd -adH -nXz -gKH -jux -gWV +nFo +tPZ +rPx +cvP +rWP +bCh jWA lTv oem @@ -84784,12 +84785,12 @@ slY hff kPW hfc -fXd -sBO -jeB -snI -vCa -qrE +nFo +hNv +lbF +lLq +nyf +ejq jkS lTN mRD @@ -85041,12 +85042,12 @@ slY jCo slY slY -fXd -fXd -fXd -fXd -fXd -fXd +nFo +nFo +nFo +nFo +nFo +nFo kZB lUz ohj @@ -89662,7 +89663,7 @@ ueX slY slY slY -gQx +wzp hbv rkr hmj @@ -90179,7 +90180,7 @@ hXf oQM hbI hgd -fBl +jYV xrZ sRg xat @@ -91460,7 +91461,7 @@ wbi hrY wbi wbi -wbi +dDB wbi wbi wbi @@ -100284,7 +100285,7 @@ oNd fFD cbO vDV -mVs +vtq clt jbr guF From c06892e48c205bf0f3581869cb185d1142c46be1 Mon Sep 17 00:00:00 2001 From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com> Date: Sun, 3 Dec 2023 21:02:11 +0300 Subject: [PATCH 04/61] Automatic changelog for PR #908 [ci skip] --- html/changelogs/AutoChangeLog-pr-908.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-908.yml diff --git a/html/changelogs/AutoChangeLog-pr-908.yml b/html/changelogs/AutoChangeLog-pr-908.yml new file mode 100644 index 00000000000..9dfc802f117 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-908.yml @@ -0,0 +1,5 @@ +author: "Vekter" +delete-after: True +changes: + - rscdel: "Replaced the \"monkey cube\" in Birdshot's tool storage with a different \"monkey cube\"." + - rscadd: "Added a fun surprise item to Birdshot's tool storage to compensate for the above change." \ No newline at end of file From 92cb91e8afba690d4409aec6e5713a307c37da5d Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Sun, 3 Dec 2023 21:03:56 +0300 Subject: [PATCH 05/61] [MIRROR] Punished sect blessing rework [MDB IGNORE] (#25368) (#909) * Punished sect blessing rework (#80043) ## About The Pull Request Instead of punished sect healing people like the normal bibble- you take their burdens on instead! All bodypart damage and wounds is transferred onto you, as well as blood, suffocation, cloning damage and toxins The amount of damage you take is dependant on your burden level, decreasing by 7% with every burden level (100% at level 0, 93% at level 1, 37% at level 9 (the point at which you become a psyker)) the punished sect is now an absolute trauma, this makes more sense because aheals shouldnt really clear it more than they clear stuff like paraplegics ## Why It's Good For The Game I think it's an interesting tweak of letting this chaplain sect do something the others can't in healing, yet at a possibly huge cost. ## Changelog :cl: add: Instead of punished sect healing people like the normal bibble- you take their burdens on instead! /:cl: --------- * Punished sect blessing rework --------- Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com> Co-authored-by: tralezab <40974010+tralezab@ users.noreply.github.com> --- code/__DEFINES/religion.dm | 3 + code/modules/library/bibles.dm | 25 +++--- .../modules/mob/living/carbon/damage_procs.dm | 2 +- .../religion/burdened/burdened_trauma.dm | 2 +- .../modules/religion/{ => pyre}/pyre_rites.dm | 0 code/modules/religion/religion_sects.dm | 83 ++++++++++++++++++- tgstation.dme | 2 +- 7 files changed, 100 insertions(+), 17 deletions(-) rename code/modules/religion/{ => pyre}/pyre_rites.dm (100%) diff --git a/code/__DEFINES/religion.dm b/code/__DEFINES/religion.dm index 0db0961c12d..8dfdc2309cc 100644 --- a/code/__DEFINES/religion.dm +++ b/code/__DEFINES/religion.dm @@ -9,6 +9,9 @@ #define ALIGNMENT_NEUT "neutral" #define ALIGNMENT_EVIL "evil" +/// the probability, when not overridden by sects, for a bible's bless effect to trigger on a smack +#define DEFAULT_SMACK_CHANCE 60 + //## which weapons should we use? // unused but for clarity diff --git a/code/modules/library/bibles.dm b/code/modules/library/bibles.dm index ecbcc397dba..6a5d1b1d5c4 100644 --- a/code/modules/library/bibles.dm +++ b/code/modules/library/bibles.dm @@ -251,27 +251,30 @@ GLOBAL_LIST_INIT(bibleitemstates, list( return ..() if(target_mob.stat == DEAD) - target_mob.visible_message(span_danger("[user] smacks [target_mob]'s lifeless corpse with [src].")) - playsound(target_mob, SFX_PUNCH, 25, TRUE, -1) + if(!GLOB.religious_sect?.sect_dead_bless(target_mob, user)) + target_mob.visible_message(span_danger("[user] smacks [target_mob]'s lifeless corpse with [src].")) + playsound(target_mob, SFX_PUNCH, 25, TRUE, -1) return if(user == target_mob) balloon_alert(user, "can't heal yourself!") return - var/smack = TRUE - if(prob(60) && bless(target_mob, user)) - smack = FALSE - else if(iscarbon(target_mob)) + var/smack_chance = DEFAULT_SMACK_CHANCE + if(GLOB.religious_sect) + smack_chance = GLOB.religious_sect.smack_chance + var/success = !prob(smack_chance) && bless(target_mob, user) + if(success) + return + if(iscarbon(target_mob)) var/mob/living/carbon/carbon_target = target_mob if(!istype(carbon_target.head, /obj/item/clothing/head/helmet)) carbon_target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5, 60) carbon_target.balloon_alert(carbon_target, "you feel dumber!") - if(smack) - target_mob.visible_message(span_danger("[user] beats [target_mob] over the head with [src]!"), \ - span_userdanger("[user] beats [target_mob] over the head with [src]!")) - playsound(target_mob, SFX_PUNCH, 25, TRUE, -1) - log_combat(user, target_mob, "attacked", src) + target_mob.visible_message(span_danger("[user] beats [target_mob] over the head with [src]!"), \ + span_userdanger("[user] beats [target_mob] over the head with [src]!")) + playsound(target_mob, SFX_PUNCH, 25, TRUE, -1) + log_combat(user, target_mob, "attacked", src) /obj/item/book/bible/attackby_storage_insert(datum/storage, atom/storage_holder, mob/user) return !istype(storage_holder, /obj/item/book/bible) diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index e8a9f5bd467..2f67903e453 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -229,7 +229,7 @@ ///Returns a list of bodyparts with wounds (in case someone has a wound on an otherwise fully healed limb) -/mob/living/carbon/proc/get_wounded_bodyparts(brute = FALSE, burn = FALSE, required_bodytype) +/mob/living/carbon/proc/get_wounded_bodyparts(required_bodytype) var/list/obj/item/bodypart/parts = list() for(var/X in bodyparts) var/obj/item/bodypart/BP = X diff --git a/code/modules/religion/burdened/burdened_trauma.dm b/code/modules/religion/burdened/burdened_trauma.dm index b6a1052dab4..20fe35fc751 100644 --- a/code/modules/religion/burdened/burdened_trauma.dm +++ b/code/modules/religion/burdened/burdened_trauma.dm @@ -38,7 +38,7 @@ COMSIG_CARBON_LOSE_MUTATION, COMSIG_CARBON_GAIN_TRAUMA, COMSIG_CARBON_LOSE_TRAUMA, - )) + )) return ..() /** diff --git a/code/modules/religion/pyre_rites.dm b/code/modules/religion/pyre/pyre_rites.dm similarity index 100% rename from code/modules/religion/pyre_rites.dm rename to code/modules/religion/pyre/pyre_rites.dm diff --git a/code/modules/religion/religion_sects.dm b/code/modules/religion/religion_sects.dm index 8b96c210511..7b5fd398f1a 100644 --- a/code/modules/religion/religion_sects.dm +++ b/code/modules/religion/religion_sects.dm @@ -38,6 +38,8 @@ var/altar_icon_state /// Currently Active (non-deleted) rites var/list/active_rites + /// Chance that we fail a bible blessing. + var/smack_chance = DEFAULT_SMACK_CHANCE /// Whether the structure has CANDLE OVERLAYS! var/candle_overlay = TRUE @@ -123,6 +125,10 @@ blessed.add_mood_event("blessing", /datum/mood_event/blessing) return TRUE +/// What happens if we bless a corpse? By default just do the default smack behavior +/datum/religion_sect/proc/sect_dead_bless(mob/living/target, mob/living/chap) + return FALSE + /**** Nanotrasen Approved God ****/ /datum/religion_sect/puritanism @@ -286,11 +292,12 @@ name = "Punished God" quote = "To feel the freedom, you must first understand captivity." desc = "Incapacitate yourself in any way possible. Bad mutations, lost limbs, traumas, \ - even addictions. You will learn the secrets of the universe from your defeated shell." + even addictions. You will learn the secrets of the universe from your defeated shell." tgui_icon = "user-injured" altar_icon_state = "convertaltar-burden" alignment = ALIGNMENT_NEUT candle_overlay = FALSE + smack_chance = 0 rites_list = list(/datum/religion_rites/nullrod_transformation) /datum/religion_sect/burden/on_conversion(mob/living/carbon/human/new_convert) @@ -298,11 +305,11 @@ if(!ishuman(new_convert)) to_chat(new_convert, span_warning("[GLOB.deity] needs higher level creatures to fully comprehend the suffering. You are not burdened.")) return - new_convert.gain_trauma(/datum/brain_trauma/special/burdened, TRAUMA_RESILIENCE_MAGIC) + new_convert.gain_trauma(/datum/brain_trauma/special/burdened, TRAUMA_RESILIENCE_ABSOLUTE) /datum/religion_sect/burden/on_deconversion(mob/living/carbon/human/new_convert) if (ishuman(new_convert)) - new_convert.cure_trauma_type(/datum/brain_trauma/special/burdened, TRAUMA_RESILIENCE_MAGIC) + new_convert.cure_trauma_type(/datum/brain_trauma/special/burdened, TRAUMA_RESILIENCE_ABSOLUTE) return ..() /datum/religion_sect/burden/tool_examine(mob/living/carbon/human/burdened) //display burden level @@ -313,6 +320,76 @@ return "You are at burden level [burden.burden_level]/9." return "You are not burdened." +/datum/religion_sect/burden/sect_bless(mob/living/carbon/target, mob/living/carbon/chaplain) + if(!istype(target) || !istype(chaplain)) + return FALSE + var/datum/brain_trauma/special/burdened/burden = chaplain.has_trauma_type(/datum/brain_trauma/special/burdened) + if(!burden) + return FALSE + var/burden_modifier = max(1 - 0.07 * burden.burden_level, 0.01) + var/transferred = FALSE + var/list/hurt_limbs = target.get_damaged_bodyparts(1, 1, BODYTYPE_ORGANIC) + target.get_wounded_bodyparts(BODYTYPE_ORGANIC) + var/list/chaplains_limbs = list() + for(var/obj/item/bodypart/possible_limb in chaplain.bodyparts) + if(IS_ORGANIC_LIMB(possible_limb)) + chaplains_limbs += possible_limb + if(length(chaplains_limbs)) + for(var/obj/item/bodypart/affected_limb as anything in hurt_limbs) + var/obj/item/bodypart/chaplains_limb = chaplain.get_bodypart(affected_limb.body_zone) + if(!chaplains_limb || !IS_ORGANIC_LIMB(chaplains_limb)) + chaplains_limb = pick(chaplains_limbs) + var/brute_damage = affected_limb.brute_dam + var/burn_damage = affected_limb.burn_dam + if((brute_damage || burn_damage)) + transferred = TRUE + affected_limb.heal_damage(brute_damage, burn_damage, required_bodytype = BODYTYPE_ORGANIC) + chaplains_limb.receive_damage(brute_damage * burden_modifier, burn_damage * burden_modifier, forced = TRUE, wound_bonus = CANT_WOUND) + for(var/datum/wound/iter_wound as anything in affected_limb.wounds) + transferred = TRUE + iter_wound.remove_wound() + iter_wound.apply_wound(chaplains_limb) + if(HAS_TRAIT_FROM(target, TRAIT_HUSK, BURN)) + transferred = TRUE + target.cure_husk(BURN) + chaplain.become_husk(BURN) + var/toxin_damage = target.getToxLoss() + if(toxin_damage && !HAS_TRAIT(chaplain, TRAIT_TOXIMMUNE)) + transferred = TRUE + target.adjustToxLoss(-toxin_damage) + chaplain.adjustToxLoss(toxin_damage * burden_modifier, forced = TRUE) + var/suffocation_damage = target.getOxyLoss() + if(suffocation_damage && !HAS_TRAIT(chaplain, TRAIT_NOBREATH)) + transferred = TRUE + target.adjustOxyLoss(-suffocation_damage) + chaplain.adjustOxyLoss(suffocation_damage * burden_modifier, forced = TRUE) + var/clone_damage = target.getCloneLoss() + if(clone_damage && !HAS_TRAIT(chaplain, TRAIT_NOCLONELOSS)) + transferred = TRUE + target.adjustCloneLoss(-clone_damage) + chaplain.adjustCloneLoss(clone_damage * burden_modifier, forced = TRUE) + if(!HAS_TRAIT(chaplain, TRAIT_NOBLOOD)) + if(target.blood_volume < BLOOD_VOLUME_SAFE) + var/target_blood_data = target.get_blood_data(target.get_blood_id()) + var/chaplain_blood_data = chaplain.get_blood_data(chaplain.get_blood_id()) + var/transferred_blood_amount = min(chaplain.blood_volume, BLOOD_VOLUME_SAFE - target.blood_volume) + if(transferred_blood_amount && (chaplain_blood_data["blood_type"] in get_safe_blood(target_blood_data["blood_type"]))) + transferred = TRUE + chaplain.transfer_blood_to(target, transferred_blood_amount, forced = TRUE) + if(target.blood_volume > BLOOD_VOLUME_EXCESS) + target.transfer_blood_to(chaplain, target.blood_volume - BLOOD_VOLUME_EXCESS, forced = TRUE) + target.update_damage_overlays() + chaplain.update_damage_overlays() + if(transferred) + target.visible_message(span_notice("[chaplain] takes on [target]'s burden!")) + to_chat(target, span_boldnotice("May the power of [GLOB.deity] compel you to be healed!")) + playsound(chaplain, SFX_PUNCH, 25, vary = TRUE, extrarange = -1) + target.add_mood_event("blessing", /datum/mood_event/blessing) + else + to_chat(chaplain, span_warning("They hold no burden!")) + return TRUE + +/datum/religion_sect/burden/sect_dead_bless(mob/living/target, mob/living/chaplain) + return sect_bless(target, chaplain) /datum/religion_sect/honorbound name = "Honorbound God" diff --git a/tgstation.dme b/tgstation.dme index c36f545f941..5bb9f921fb7 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -5462,7 +5462,6 @@ #include "code\modules\recycling\disposal\outlet.dm" #include "code\modules\recycling\disposal\pipe.dm" #include "code\modules\recycling\disposal\pipe_sorting.dm" -#include "code\modules\religion\pyre_rites.dm" #include "code\modules\religion\religion_sects.dm" #include "code\modules\religion\religion_structures.dm" #include "code\modules\religion\rites.dm" @@ -5471,6 +5470,7 @@ #include "code\modules\religion\festival\instrument_rites.dm" #include "code\modules\religion\honorbound\honorbound_rites.dm" #include "code\modules\religion\honorbound\honorbound_trauma.dm" +#include "code\modules\religion\pyre\pyre_rites.dm" #include "code\modules\religion\sparring\ceremonial_gear.dm" #include "code\modules\religion\sparring\sparring_contract.dm" #include "code\modules\religion\sparring\sparring_datum.dm" From c6bef36170557555803d9117843ff44714c77375 Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Sun, 3 Dec 2023 21:04:08 +0300 Subject: [PATCH 06/61] woe, REM/seconds_per_tick upon thee - TWitch overdoses now respect REM (#25385) (#918) woe flags upon thee Co-authored-by: Hatterhat <31829017+Hatterhat@users.noreply.github.com> Co-authored-by: Hatterhat --- .../modules/deforest_medical_items/code/chemicals/twitch.dm | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/modular_skyrat/modules/deforest_medical_items/code/chemicals/twitch.dm b/modular_skyrat/modules/deforest_medical_items/code/chemicals/twitch.dm index a61382206e7..19946782c95 100644 --- a/modular_skyrat/modules/deforest_medical_items/code/chemicals/twitch.dm +++ b/modular_skyrat/modules/deforest_medical_items/code/chemicals/twitch.dm @@ -161,11 +161,10 @@ /datum/reagent/drug/twitch/overdose_process(mob/living/carbon/our_guy, seconds_per_tick, times_fired) . = ..() - our_guy.set_jitter_if_lower(10 SECONDS * REM * seconds_per_tick) - our_guy.adjustOrganLoss(ORGAN_SLOT_HEART, 1 * REM * seconds_per_tick) - our_guy.adjustToxLoss(3, forced = TRUE) + our_guy.adjustOrganLoss(ORGAN_SLOT_HEART, 1 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags) + our_guy.adjustToxLoss(0.25 * REM * seconds_per_tick, updating_health = FALSE, forced = TRUE, required_biotype = affected_biotype) if(SPT_PROB(5, seconds_per_tick)) to_chat(our_guy, span_danger("You cough up a splatter of blood!")) @@ -176,7 +175,6 @@ our_guy.add_filter(TWITCH_OVERDOSE_BLUR_EFFECT, 2, phase_filter(8)) addtimer(CALLBACK(our_guy, TYPE_PROC_REF(/datum, remove_filter), TWITCH_OVERDOSE_BLUR_EFFECT), 0.5 SECONDS) - /// Changes heard message spans into that defined on the drug earlier /datum/reagent/drug/twitch/proc/distort_hearing(datum/source, list/hearing_args) SIGNAL_HANDLER From 6f6e9fc3c810462edf8566730e4bd7a3f5783a47 Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Sun, 3 Dec 2023 21:04:39 +0300 Subject: [PATCH 07/61] [MIRROR] Honorbound Sect Improvements: Creatures are not Innocent, and Neither is the Blatantly Evil. Declarations are Cheaper, too [MDB IGNORE] (#25379) (#919) * Honorbound Sect Improvements: Creatures are not Innocent, and Neither is the Blatantly Evil. Declarations are Cheaper, too (#80048) ## About The Pull Request Innocence is no longer considered when an honorbound attacks a nonhuman (as in mob, not like, lizardpeople, lol). Attacking a cultist with a halo, or a blatant syndicate operative will now immediately make THEM guilty. Converting a new follower now gives 300 favor, enough for 2 declarations (costing 150 each) ## Why It's Good For The Game Feedback and stats taken from https://tgstation13.org/phpBB/viewtopic.php?p=713399#p713399 This is really the first half of fixing Honorbound Sect. It's the least picked sect, because it gives a strange conditional pacifism and while that's fun for roleplay, the pacifism is painfully difficult to work with and there are just so many cases you have to ask out loud "HOW IS THIS INNOCENT" when a xenomorph is running at you and you can't swing. I still need to add rewards, but just for now let's make honorbound more playable by putting aside lesser creatures as at least not innocent or guilty (well they can be guilty, but it doesn't matter) Once it's better to play with the honorbound rules, we can talk more rewards like banners for fellow honorbound deacons and other stuff. ## Changelog :cl: balance: Honorbound no longer cares about innocence when it comes to lesser creatures. They can still be considered unready in some cases. balance: Attacking a cultist with a halo or a nuclear operative first instantly makes THEM guilty, allowing further attacks. balance: More favor for converting someone to the honorbound rules /:cl: * Honorbound Sect Improvements: Creatures are not Innocent, and Neither is the Blatantly Evil. Declarations are Cheaper, too --------- Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com> --- .../religion/honorbound/honorbound_rites.dm | 14 ++++- .../religion/honorbound/honorbound_trauma.dm | 61 +++++++++++++------ 2 files changed, 55 insertions(+), 20 deletions(-) diff --git a/code/modules/religion/honorbound/honorbound_rites.dm b/code/modules/religion/honorbound/honorbound_rites.dm index c9c9e711354..88eef0340ea 100644 --- a/code/modules/religion/honorbound/honorbound_rites.dm +++ b/code/modules/religion/honorbound/honorbound_rites.dm @@ -1,3 +1,6 @@ +/// how much favor is gained when someone joins the crusade and is deaconized +#define DEACONIZE_FAVOR_GAIN 300 + ///Makes the person holy, but they now also have to follow the honorbound code (CBT). Actually earns favor, convincing others to uphold the code (tm) is not easy /datum/religion_rites/deaconize name = "Join Crusade" @@ -64,7 +67,7 @@ var/datum/brain_trauma/special/honorbound/honor = user.has_trauma_type(/datum/brain_trauma/special/honorbound) if(joining_now in honor.guilty) honor.guilty -= joining_now - GLOB.religious_sect.adjust_favor(200, user) + GLOB.religious_sect.adjust_favor(DEACONIZE_FAVOR_GAIN, user) to_chat(user, span_notice("[GLOB.deity] has bound [joining_now] to the code! They are now a holy role! (albeit the lowest level of such)")) joining_now.mind.holy_role = HOLY_ROLE_DEACON GLOB.religious_sect.on_conversion(joining_now) @@ -151,7 +154,8 @@
1.) Thou shalt not attack the unready!
Those who are not ready for battle should not be wrought low. The evil of this world must lose - in a fair battle if you are to conquer them completely. + in a fair battle if you are to conquer them completely. Lesser creatures are given the benefit of + being unready, keep that in mind.

2.) Thou shalt not attack the just!
@@ -162,7 +166,9 @@
3.) Thou shalt not attack the innocent!
There is no honor on a pre-emptive strike, unless they are truly evil vermin. - Those who are guilty will either lay a hand on you first, or you may declare their evil. + Those who are guilty will either lay a hand on you first, or you may declare their evil. Mindless, lesser + creatures cannot be considered innocent, nor evil. They are beings of passion and function, and + may be dispatched as such if their passions misalign with the pursuits of a better world.

4.) Thou shalt not use profane magicks!
@@ -172,3 +178,5 @@ been allowed as it is a school focused on the light and mending of this world. "} return ..() + +#undef DEACONIZE_FAVOR_GAIN diff --git a/code/modules/religion/honorbound/honorbound_trauma.dm b/code/modules/religion/honorbound/honorbound_trauma.dm index 29152e5bc72..399bf6765ed 100644 --- a/code/modules/religion/honorbound/honorbound_trauma.dm +++ b/code/modules/religion/honorbound/honorbound_trauma.dm @@ -1,3 +1,6 @@ +/// one reason for declaring guilty is specifically checked for, keeping it as a define to avoid future mistakes +#define GUILT_REASON_DECLARATION "from your declaration." + ///Honorbound prevents you from attacking the unready, the just, or the innocent /datum/brain_trauma/special/honorbound name = "Dogmatic Compulsions" @@ -45,38 +48,59 @@ if(!isliving(clickingon)) return - var/mob/living/clickedmob = clickingon + var/mob/living/clicked_mob = clickingon var/obj/item/weapon = honorbound.get_active_held_item() - if(!honorbound.DirectAccess(clickedmob) && !isgun(weapon)) + if(!honorbound.DirectAccess(clicked_mob) && !isgun(weapon)) return if(weapon?.item_flags & NOBLUDGEON) return - if(!honorbound.combat_mode && (HAS_TRAIT(clickedmob, TRAIT_ALLOWED_HONORBOUND_ATTACK) || ((!weapon || !weapon.force) && !LAZYACCESS(modifiers, RIGHT_CLICK)))) + if(!honorbound.combat_mode && (HAS_TRAIT(clicked_mob, TRAIT_ALLOWED_HONORBOUND_ATTACK) || ((!weapon || !weapon.force) && !LAZYACCESS(modifiers, RIGHT_CLICK)))) return - if(!is_honorable(honorbound, clickedmob)) + if(!(clicked_mob in guilty)) + check_visible_guilt(clicked_mob) + if(!is_honorable(honorbound, clicked_mob)) return (COMSIG_MOB_CANCEL_CLICKON) +/// Checks a mob for any obvious signs of evil, and applies a guilty reason for each. +/datum/brain_trauma/special/honorbound/proc/check_visible_guilt(mob/living/attacked_mob) + //will most likely just hit nuke ops but good catch-all. WON'T hit traitors + if(ROLE_SYNDICATE in attacked_mob.faction) + guilty(attacked_mob, "for their misaligned association with the Syndicate!") + //not an antag datum check so it applies to wizard minions as well + if(ROLE_WIZARD in attacked_mob.faction) + guilty(attacked_mob, "for blasphemous magicks!") + if(HAS_TRAIT(attacked_mob, TRAIT_CULT_HALO)) + guilty(attacked_mob, "for blasphemous worship!") + if(attacked_mob.mind) + var/datum/mind/guilty_conscience = attacked_mob.mind + if(guilty_conscience.has_antag_datum(/datum/antagonist/abductor)) + guilty(attacked_mob, "for their blatant surgical malice...") + if(guilty_conscience.has_antag_datum(/datum/antagonist/nightmare)) + guilty(attacked_mob, "for being a light-consuming nightmare!") + if(guilty_conscience.has_antag_datum(/datum/antagonist/ninja)) + guilty(attacked_mob, "for their misaligned association with the Spider Clan!") + var/datum/antagonist/heretic/heretic_datum = guilty_conscience.has_antag_datum(/datum/antagonist/heretic) + if(heretic_datum?.ascended) + guilty(attacked_mob, "for blasphemous, heretical, out of control worship!") + /** * Called by hooked signals whenever someone attacks the person with this trauma * Checks if the attacker should be considered guilty and adds them to the guilty list if true * * Arguments: * * user: person who attacked the honorbound - * * declaration: if this wasn't an attack, but instead the honorbound spending favor on declaring this person guilty + * * reason: why this person is now guilty (future pr idea: letting honorbound print a receipt for why someone is guilty? lol) */ -/datum/brain_trauma/special/honorbound/proc/guilty(mob/living/user, declaration = FALSE) +/datum/brain_trauma/special/honorbound/proc/guilty(mob/living/user, reason = "for no particular reason!") if(user in guilty) return var/datum/mind/guilty_conscience = user.mind - if(guilty_conscience && !declaration) //sec and medical are immune to becoming guilty through attack (we don't check holy because holy shouldn't be able to attack eachother anyways) + if(guilty_conscience && reason != GUILT_REASON_DECLARATION) //sec and medical are immune to becoming guilty through attack (we don't check holy because holy shouldn't be able to attack eachother anyways) var/datum/job/job = guilty_conscience.assigned_role if(job.departments_bitflags & (DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SECURITY)) return - if(declaration) - to_chat(owner, span_notice("[user] is now considered guilty by [GLOB.deity] from your declaration.")) - else - to_chat(owner, span_notice("[user] is now considered guilty by [GLOB.deity] for attacking you first.")) + to_chat(owner, span_notice("[user] is now considered guilty by [GLOB.deity] [reason]")) to_chat(user, span_danger("[GLOB.deity] no longer considers you innocent!")) guilty += user @@ -84,7 +108,7 @@ /datum/brain_trauma/special/honorbound/proc/on_attacked(mob/source, mob/attacker, attack_flags) SIGNAL_HANDLER if(!(attack_flags & (ATTACKER_STAMINA_ATTACK|ATTACKER_SHOVING))) - guilty(attacker) + guilty(attacker, "for attacking [source] first.") /** * Called by attack_honor signal to check whether an attack should be allowed or not @@ -95,6 +119,7 @@ */ /datum/brain_trauma/special/honorbound/proc/is_honorable(mob/living/carbon/human/honorbound_human, mob/living/target_creature) var/is_guilty = (target_creature in guilty) + var/is_human = ishuman(target_creature) //THE UNREADY (Applies over ANYTHING else!) if(honorbound_human == target_creature) return TRUE //oh come on now @@ -102,7 +127,7 @@ to_chat(honorbound_human, span_warning("There is no honor in attacking the unready.")) return FALSE //THE JUST (Applies over guilt except for med, so you best be careful!) - if(ishuman(target_creature)) + if(is_human) var/mob/living/carbon/human/target_human = target_creature var/datum/job/job = target_human.mind?.assigned_role var/is_holy = target_human.mind?.holy_role @@ -112,9 +137,9 @@ if(job?.departments_bitflags & DEPARTMENT_BITFLAG_MEDICAL && !is_guilty) to_chat(honorbound_human, span_warning("If you truly think this healer is not innocent, declare them guilty.")) return FALSE - //THE INNOCENT - if(!is_guilty) - to_chat(honorbound_human, span_warning("There is nothing righteous in attacking the innocent.")) + //THE INNOCENT (human and borg exclusive) + if(!is_guilty && (is_human || issilicon(target_creature))) + to_chat(target_creature, span_warning("There is nothing righteous in attacking the innocent.")) return FALSE return TRUE @@ -262,4 +287,6 @@ /datum/action/cooldown/spell/pointed/declare_evil/cast(mob/living/cast_on) . = ..() GLOB.religious_sect.adjust_favor(-required_favor, owner) - honor_trauma.guilty(cast_on, declaration = TRUE) + honor_trauma.guilty(cast_on, GUILT_REASON_DECLARATION) + +#undef GUILT_REASON_DECLARATION From 11f43fb582694dc0f997dfa01abe7cd8c9d3b0ff Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Sun, 3 Dec 2023 21:05:23 +0300 Subject: [PATCH 08/61] [MIRROR] [NO GBP] Cargo-ordered bar signs don't come with access restrictions [MDB IGNORE] (#25405) (#932) * [NO GBP] Cargo-ordered bar signs don't come with access restrictions (#80070) ## About The Pull Request Bar signs ordered from cargo will not have an access restriction attached to them. The barsign disassembly code has been slightly modified to accommodate this. ## Why It's Good For The Game It didn't even occur to me that bar signs had access locks on them. Now you can establish Bargonia without begging the bartender/captain for their ID. ## Changelog :cl: Rhials qol: Bar signs ordered from cargo will no longer be access-restricted. /:cl: * [NO GBP] Cargo-ordered bar signs don't come with access restrictions --------- Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com> --- code/game/machinery/barsigns.dm | 9 ++++++++- code/modules/cargo/packs/service.dm | 4 ++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/code/game/machinery/barsigns.dm b/code/game/machinery/barsigns.dm index dc5b4655b8e..c5349618674 100644 --- a/code/game/machinery/barsigns.dm +++ b/code/game/machinery/barsigns.dm @@ -12,6 +12,8 @@ var/datum/barsign/chosen_sign /// Do we attempt to rename the area we occupy when the chosen sign is changed? var/change_area_name = FALSE + /// What kind of sign do we drop upon being disassembled? + var/disassemble_result = /obj/item/wallframe/barsign /datum/armor/sign_barsign melee = 20 @@ -92,7 +94,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/barsign, 32) /obj/machinery/barsign/deconstruct(disassembled = TRUE) if(!(flags_1 & NODECONSTRUCT_1)) if(disassembled) - new /obj/item/wallframe/barsign(loc) + new disassemble_result(drop_location()) else new /obj/item/stack/sheet/iron(drop_location(), 2) new /obj/item/stack/cable_coil(drop_location(), 2) @@ -487,6 +489,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/barsign, 32) // For other locations that aren't in the main bar /obj/machinery/barsign/all_access req_access = null + disassemble_result = /obj/item/wallframe/barsign/all_access MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/barsign/all_access, 32) @@ -513,3 +516,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/barsign/all_access, 32) if(isopenturf(get_step(on_wall, EAST))) //This takes up 2 tiles so we want to make sure we have two tiles to hang it from. balloon_alert(user, "needs more support!") return FALSE + +/obj/item/wallframe/barsign/all_access + desc = "Used to help draw the rabble into your bar. Some assembly required. This one doesn't have an access lock." + result_path = /obj/machinery/barsign/all_access diff --git a/code/modules/cargo/packs/service.dm b/code/modules/cargo/packs/service.dm index e658db5229e..ac59c5cb8ff 100644 --- a/code/modules/cargo/packs/service.dm +++ b/code/modules/cargo/packs/service.dm @@ -293,5 +293,5 @@ name = "Bar Sign Replacement Kit" desc = "A replacement bar sign, perfect for drawing in customers to your bar, tavern, inn, nightclub, or even coffeehouse!" cost = CARGO_CRATE_VALUE * 14 - contains = list(/obj/item/wallframe/barsign) - crate_name = "bar sign replacement crate" + contains = list(/obj/item/wallframe/barsign/all_access) + crate_name = "bar sign crate" From 3a42db8c89f6824b63f5dcf1137ab92de6493a1f Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Sun, 3 Dec 2023 21:06:30 +0300 Subject: [PATCH 09/61] [MIRROR] Add Felinid Laughter [MDB IGNORE] (#25375) (#931) * Add Felinid Laughter (#80056) ## About The Pull Request This PR allows the Felinid race to use the human laughter sounds when they proc the laugh emote. ## Why It's Good For The Game Felinids are closely related to humans, and while their voice is distinguishable, the sound of laughter should be the same. It makes happy and cheerful interaction more entertaining when you can actually hear the laugh. ## Changelog :cl: sound: Added human laughter to felinids /:cl: * Add Felinid Laughter --------- Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Co-authored-by: IsaacExists <125638858+IsaacExists@users.noreply.github.com> --- code/modules/mob/living/emote.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index 5b91f400f4c..a99a7fd15b6 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -296,7 +296,7 @@ if(!ishuman(user)) return var/mob/living/carbon/human/human_user = user - if(human_user.dna.species.id == SPECIES_HUMAN && !HAS_MIND_TRAIT(human_user, TRAIT_MIMING)) + if((ishumanbasic(human_user) || isfelinid(human_user)) && !HAS_MIND_TRAIT(human_user, TRAIT_MIMING)) if(human_user.gender == FEMALE) return 'sound/voice/human/womanlaugh.ogg' else From 90d11d3399b4107aca9934978a52f0694aacbd64 Mon Sep 17 00:00:00 2001 From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com> Date: Sun, 3 Dec 2023 21:13:08 +0300 Subject: [PATCH 10/61] Automatic changelog for PR #909 [ci skip] --- html/changelogs/AutoChangeLog-pr-909.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-909.yml diff --git a/html/changelogs/AutoChangeLog-pr-909.yml b/html/changelogs/AutoChangeLog-pr-909.yml new file mode 100644 index 00000000000..e927e5b6c8d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-909.yml @@ -0,0 +1,4 @@ +author: "Fikou" +delete-after: True +changes: + - rscadd: "Instead of punished sect healing people like the normal bibble- you take their burdens on instead!" \ No newline at end of file From 4e57054c82a35b62df6ac987e7c0176dea2bc35a Mon Sep 17 00:00:00 2001 From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com> Date: Sun, 3 Dec 2023 21:13:17 +0300 Subject: [PATCH 11/61] Automatic changelog for PR #918 [ci skip] --- html/changelogs/AutoChangeLog-pr-918.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-918.yml diff --git a/html/changelogs/AutoChangeLog-pr-918.yml b/html/changelogs/AutoChangeLog-pr-918.yml new file mode 100644 index 00000000000..aaa0efb7110 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-918.yml @@ -0,0 +1,4 @@ +author: "Hatterhat" +delete-after: True +changes: + - bugfix: "The toxin damage from overdosing on TWitch now respects server tickrate/REM." \ No newline at end of file From ee9c9a9f362e56f80408afc93ff2422babb80183 Mon Sep 17 00:00:00 2001 From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com> Date: Sun, 3 Dec 2023 21:13:39 +0300 Subject: [PATCH 12/61] Automatic changelog for PR #919 [ci skip] --- html/changelogs/AutoChangeLog-pr-919.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-919.yml diff --git a/html/changelogs/AutoChangeLog-pr-919.yml b/html/changelogs/AutoChangeLog-pr-919.yml new file mode 100644 index 00000000000..9722aa69845 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-919.yml @@ -0,0 +1,6 @@ +author: "tralezab" +delete-after: True +changes: + - balance: "Honorbound no longer cares about innocence when it comes to lesser creatures. They can still be considered unready in some cases." + - balance: "Attacking a cultist with a halo or a nuclear operative first instantly makes THEM guilty, allowing further attacks." + - balance: "More favor for converting someone to the honorbound rules" \ No newline at end of file From 2cdb50ae363de1b833a16e3405e3832b04172599 Mon Sep 17 00:00:00 2001 From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com> Date: Sun, 3 Dec 2023 21:14:29 +0300 Subject: [PATCH 13/61] Automatic changelog for PR #932 [ci skip] --- html/changelogs/AutoChangeLog-pr-932.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-932.yml diff --git a/html/changelogs/AutoChangeLog-pr-932.yml b/html/changelogs/AutoChangeLog-pr-932.yml new file mode 100644 index 00000000000..13166c6e94c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-932.yml @@ -0,0 +1,4 @@ +author: "Rhials" +delete-after: True +changes: + - qol: "Bar signs ordered from cargo will no longer be access-restricted." \ No newline at end of file From 38cae00a62e6acfb4ea187bcabd749cfe0b191cb Mon Sep 17 00:00:00 2001 From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com> Date: Sun, 3 Dec 2023 21:15:02 +0300 Subject: [PATCH 14/61] Automatic changelog for PR #931 [ci skip] --- html/changelogs/AutoChangeLog-pr-931.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-931.yml diff --git a/html/changelogs/AutoChangeLog-pr-931.yml b/html/changelogs/AutoChangeLog-pr-931.yml new file mode 100644 index 00000000000..e1ef37722a0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-931.yml @@ -0,0 +1,4 @@ +author: "IsaacExists" +delete-after: True +changes: + - sound: "Added human laughter to felinids" \ No newline at end of file From 6f0e0d2a1e5634bb09c06bd27c77b60c885064d7 Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Sun, 3 Dec 2023 21:15:16 +0300 Subject: [PATCH 15/61] [MIRROR] Retools `renamedByPlayer` into TRAIT_WAS_RENAMED [MDB IGNORE] (#25355) (#935) * Retools `renamedByPlayer` into TRAIT_WAS_RENAMED (#80013) ## About The Pull Request On the tin, this lived on the `/obj` level and polluted a lot of stuff even though only a very small fraction of stuff actually leveraged it. Let's make it a trait for that boolean-like behavior so I can be happier scrolling through view-variables with less non-necessary things. I wish we could tie it to unique sources but that whole drinking glass thing makes me suspicious of weirder things so I think the way we do it (source being a `REF()` to the thing itself) is probably fine enough for the time being. ## Why It's Good For The Game Same behavior one can expect but just a bit cleaner on the backend. ## Changelog Nothing that particularly concerns players. * Retools `renamedByPlayer` into TRAIT_WAS_RENAMED * Update Blueshift.dmm --------- Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Co-authored-by: san7890 Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> --- _maps/RandomRuins/SpaceRuins/oldstation.dmm | 64 +++++++++---------- _maps/map_files/NSVBlueshift/Blueshift.dmm | 2 - code/__DEFINES/traits/declarations.dm | 3 + code/__DEFINES/traits/sources.dm | 3 + code/_globalvars/traits/_traits.dm | 1 + .../components/food/ice_cream_holder.dm | 6 +- .../components/takes_reagent_appearance.dm | 8 +-- code/game/objects/objs.dm | 2 - code/modules/hydroponics/fermenting_barrel.dm | 2 +- code/modules/paperwork/pen.dm | 6 +- .../reagent_containers/cups/drinkingglass.dm | 6 +- 11 files changed, 51 insertions(+), 52 deletions(-) diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm index 474ef8eea83..f3ae95a673e 100644 --- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm @@ -2840,6 +2840,11 @@ /obj/structure/cable, /turf/open/floor/iron, /area/ruin/space/ancientstation/charlie/hall) +"mm" = ( +/obj/machinery/power/supermatter_crystal/shard, +/obj/structure/closet/crate/radiation, +/turf/open/floor/iron/white/textured, +/area/ruin/space/ancientstation/delta/proto) "mo" = ( /turf/open/floor/iron/white/corner{ dir = 1 @@ -3795,32 +3800,6 @@ /obj/effect/mapping_helpers/apc/away_general_access, /turf/open/floor/engine/airless, /area/ruin/space/ancientstation/beta/supermatter) -"rN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/glass, -/obj/item/reagent_containers/cup/bottle{ - pixel_x = 4; - list_reagents = list(/datum/reagent/growthserum=30); - name = "Experimental solution"; - renamedByPlayer = 1; - pixel_y = 8 - }, -/obj/item/reagent_containers/cup/bottle{ - pixel_x = -4; - list_reagents = list(/datum/reagent/consumable/nutriment/peptides=30); - name = "Solution for Molly"; - renamedByPlayer = 1 - }, -/obj/item/reagent_containers/dropper{ - pixel_x = -7; - pixel_y = 10 - }, -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/white/textured_edge, -/area/ruin/space/ancientstation/delta/biolab) "rP" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -5964,11 +5943,6 @@ /obj/machinery/duct, /turf/template_noop, /area/space/nearstation) -"HS" = ( -/obj/machinery/power/supermatter_crystal/shard, -/obj/structure/closet/crate/radiation, -/turf/open/floor/iron/white/textured, -/area/ruin/space/ancientstation/delta/proto) "HT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -7737,6 +7711,30 @@ /obj/effect/mapping_helpers/airalarm/away_general_access, /turf/open/floor/iron/white/textured, /area/ruin/space/ancientstation/delta/proto) +"TH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/glass, +/obj/item/reagent_containers/cup/bottle{ + pixel_x = 4; + list_reagents = list(/datum/reagent/growthserum=30); + name = "Experimental solution"; + pixel_y = 8 + }, +/obj/item/reagent_containers/cup/bottle{ + pixel_x = -4; + list_reagents = list(/datum/reagent/consumable/nutriment/peptides=30); + name = "Solution for Molly" + }, +/obj/item/reagent_containers/dropper{ + pixel_x = -7; + pixel_y = 10 + }, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/white/textured_edge, +/area/ruin/space/ancientstation/delta/biolab) "TI" = ( /obj/machinery/door/airlock/science, /obj/effect/decal/cleanable/dirt, @@ -14787,7 +14785,7 @@ bD Yr cD uj -HS +mm Oh uj Mx @@ -15299,7 +15297,7 @@ aa aa aa SU -rN +TH Pg zI uI diff --git a/_maps/map_files/NSVBlueshift/Blueshift.dmm b/_maps/map_files/NSVBlueshift/Blueshift.dmm index dfb2e863343..50df0951d45 100644 --- a/_maps/map_files/NSVBlueshift/Blueshift.dmm +++ b/_maps/map_files/NSVBlueshift/Blueshift.dmm @@ -32286,7 +32286,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/sorting/mail{ name = "Detective Junction"; - renamedByPlayer = 30 }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) @@ -71348,7 +71347,6 @@ "nGH" = ( /obj/structure/disposalpipe/sorting/mail{ name = "Robotics Junction"; - renamedByPlayer = 14 }, /turf/open/floor/iron, /area/station/hallway/primary/upper) diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index 4aa6f4a74a4..c24e23bf23e 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -440,6 +440,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Trait used by fugu glands to avoid double buffing #define TRAIT_FUGU_GLANDED "fugu_glanded" +/// Trait that tracks if something has been renamed. Typically holds a REF() to the object itself (AKA src) for wide addition/removal. +#define TRAIT_WAS_RENAMED "was_renamed" + /// When someone with this trait fires a ranged weapon, their fire delays and click cooldowns are halved #define TRAIT_DOUBLE_TAP "double_tap" diff --git a/code/__DEFINES/traits/sources.dm b/code/__DEFINES/traits/sources.dm index 6be8cdf3f8d..d472b9bed26 100644 --- a/code/__DEFINES/traits/sources.dm +++ b/code/__DEFINES/traits/sources.dm @@ -271,3 +271,6 @@ #define CLOWNOP_TRAIT "clownop" #define ANALYZER_TRAIT "analyzer_trait" + +/// Trait when something was labelled by a pen. +#define PEN_LABEL_TRAIT "pen_label" diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 79facdd304c..4b59171cba3 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -61,6 +61,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_UNDERFLOOR" = TRAIT_UNDERFLOOR, "TRAIT_UNIQUE_IMMERSE" = TRAIT_UNIQUE_IMMERSE, "TRAIT_VOIDSTORM_IMMUNE" = TRAIT_VOIDSTORM_IMMUNE, + "TRAIT_WAS_RENAMED" = TRAIT_WAS_RENAMED, "TRAIT_WEATHER_IMMUNE" = TRAIT_WEATHER_IMMUNE, ), /datum/controller/subsystem/economy = list( diff --git a/code/datums/components/food/ice_cream_holder.dm b/code/datums/components/food/ice_cream_holder.dm index 3e212c52b9a..29625a8a321 100644 --- a/code/datums/components/food/ice_cream_holder.dm +++ b/code/datums/components/food/ice_cream_holder.dm @@ -77,8 +77,7 @@ /datum/component/ice_cream_holder/proc/on_update_name(atom/source, updates) SIGNAL_HANDLER - var/obj/obj = source - if(istype(obj) && obj.renamedByPlayer) //Renamed by the player. + if(HAS_TRAIT(source, TRAIT_WAS_RENAMED)) return var/scoops_len = length(scoops) if(!scoops_len) @@ -93,8 +92,7 @@ /datum/component/ice_cream_holder/proc/on_update_desc(atom/source, updates) SIGNAL_HANDLER - var/obj/obj = source - if(istype(obj) && obj.renamedByPlayer) //Renamed by the player. + if(HAS_TRAIT(source, TRAIT_WAS_RENAMED)) return var/scoops_len = length(scoops) if(!scoops_len) diff --git a/code/datums/components/takes_reagent_appearance.dm b/code/datums/components/takes_reagent_appearance.dm index 6505290b4cb..fd1312ba112 100644 --- a/code/datums/components/takes_reagent_appearance.dm +++ b/code/datums/components/takes_reagent_appearance.dm @@ -89,10 +89,10 @@ * * Returns [NONE] if the name was reset to initial state */ /datum/component/takes_reagent_appearance/proc/update_name(datum/glass_style/style) - var/obj/item/item_parent = parent - if(item_parent.renamedByPlayer) + if(HAS_TRAIT(parent, TRAIT_WAS_RENAMED)) return NONE + var/obj/item/item_parent = parent if(isnull(style)) // no style (reset) item_parent.name = initial(item_parent.name) @@ -111,10 +111,10 @@ * * Returns [NONE] if the description was reset to initial state */ /datum/component/takes_reagent_appearance/proc/update_desc(datum/glass_style/style) - var/obj/item/item_parent = parent - if(item_parent.renamedByPlayer) + if(HAS_TRAIT(parent, TRAIT_WAS_RENAMED)) return NONE + var/obj/item/item_parent = parent if(isnull(style)) // no style (reset) item_parent.desc = initial(item_parent.desc) diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 008ceccc72e..8695845bf47 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -41,8 +41,6 @@ /// Particles this obj uses when burning, if any var/burning_particles - var/renamedByPlayer = FALSE //set when a player uses a pen on a renamable object - var/drag_slowdown // Amont of multiplicative slowdown applied if pulled. >1 makes you slower, <1 makes you faster. /// Map tag for something. Tired of it being used on snowflake items. Moved here for some semblance of a standard. diff --git a/code/modules/hydroponics/fermenting_barrel.dm b/code/modules/hydroponics/fermenting_barrel.dm index d96bc1ec009..af3bbb060d5 100644 --- a/code/modules/hydroponics/fermenting_barrel.dm +++ b/code/modules/hydroponics/fermenting_barrel.dm @@ -84,7 +84,7 @@ /obj/structure/fermenting_barrel/update_overlays() . = ..() - if(src.renamedByPlayer || HAS_TRAIT(src, TRAIT_HAS_LABEL)) + if(HAS_TRAIT(src, TRAIT_WAS_RENAMED) || HAS_TRAIT(src, TRAIT_HAS_LABEL)) . += mutable_appearance(icon, "[base_icon_state]_overlay_label") /// Adds the fruit to the barrel to queue the fermentation diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 40e99eefe6a..5ee432b365e 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -236,7 +236,7 @@ label.remove_label() label.apply_label() to_chat(user, span_notice("You have successfully renamed \the [oldname] to [O].")) - O.renamedByPlayer = TRUE + ADD_TRAIT(O, TRAIT_WAS_RENAMED, PEN_LABEL_TRAIT) O.update_appearance(UPDATE_ICON) if(penchoice == "Description") @@ -249,7 +249,7 @@ else O.AddComponent(/datum/component/rename, O.name, input) to_chat(user, span_notice("You have successfully changed [O]'s description.")) - O.renamedByPlayer = TRUE + ADD_TRAIT(O, TRAIT_WAS_RENAMED, PEN_LABEL_TRAIT) O.update_appearance(UPDATE_ICON) if(penchoice == "Reset") @@ -265,7 +265,7 @@ label.apply_label() to_chat(user, span_notice("You have successfully reset [O]'s name and description.")) - O.renamedByPlayer = FALSE + REMOVE_TRAIT(O, TRAIT_WAS_RENAMED, PEN_LABEL_TRAIT) O.update_appearance(UPDATE_ICON) /obj/item/pen/get_writing_implement_details() diff --git a/code/modules/reagents/reagent_containers/cups/drinkingglass.dm b/code/modules/reagents/reagent_containers/cups/drinkingglass.dm index d795a5e0dcf..8745e61cd92 100644 --- a/code/modules/reagents/reagent_containers/cups/drinkingglass.dm +++ b/code/modules/reagents/reagent_containers/cups/drinkingglass.dm @@ -34,7 +34,7 @@ /obj/item/reagent_containers/cup/glass/drinkingglass/on_reagent_change(datum/reagents/holder, ...) . = ..() if(!length(reagents.reagent_list)) - renamedByPlayer = FALSE //so new drinks can rename the glass + REMOVE_TRAIT(src, TRAIT_WAS_RENAMED, PEN_LABEL_TRAIT) //so new drinks can rename the glass // Having our icon state change removes fill thresholds /obj/item/reagent_containers/cup/glass/drinkingglass/on_cup_change(datum/glass_style/style) @@ -68,13 +68,13 @@ custom_price = PAYCHECK_CREW * 0.4 /obj/item/reagent_containers/cup/glass/drinkingglass/shotglass/update_name(updates) - if(renamedByPlayer) + if(HAS_TRAIT(src, TRAIT_WAS_RENAMED)) return . = ..() name = "[length(reagents.reagent_list) ? "filled " : ""]shot glass" /obj/item/reagent_containers/cup/glass/drinkingglass/shotglass/update_desc(updates) - if(renamedByPlayer) + if(HAS_TRAIT(src, TRAIT_WAS_RENAMED)) return . = ..() if(length(reagents.reagent_list)) From 17a7832aa81940cf7efe15cc4d5b153205766f46 Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Sun, 3 Dec 2023 21:15:51 +0300 Subject: [PATCH 16/61] [MIRROR] Meat Hook Rework (Accidental Features) [MDB IGNORE] (#25343) (#936) * Meat Hook Rework (Accidental Features) * Update meat_hook.dm * Update meat_hook.dm --------- Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Co-authored-by: san7890 Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> --- code/datums/elements/climbable.dm | 11 - code/datums/forced_movement.dm | 89 -------- code/game/atoms_movable.dm | 1 - .../projectiles/guns/special/meat_hook.dm | 190 +++++++++++++++--- tgstation.dme | 1 - 5 files changed, 166 insertions(+), 126 deletions(-) delete mode 100644 code/datums/forced_movement.dm diff --git a/code/datums/elements/climbable.dm b/code/datums/elements/climbable.dm index b26990c5911..56c16f303c4 100644 --- a/code/datums/elements/climbable.dm +++ b/code/datums/elements/climbable.dm @@ -23,7 +23,6 @@ RegisterSignal(target, COMSIG_ATOM_ATTACK_HAND, PROC_REF(attack_hand)) RegisterSignal(target, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) RegisterSignal(target, COMSIG_MOUSEDROPPED_ONTO, PROC_REF(mousedrop_receive)) - RegisterSignal(target, COMSIG_ATOM_BUMPED, PROC_REF(try_speedrun)) ADD_TRAIT(target, TRAIT_CLIMBABLE, ELEMENT_TRAIT(type)) /datum/element/climbable/Detach(datum/target) @@ -104,8 +103,6 @@ var/x_dist = (text2num(LAZYACCESS(modifiers, ICON_X)) - world.icon_size/2) * (climbed_thing.dir & WEST ? -1 : 1) var/y_dist = (text2num(LAZYACCESS(modifiers, ICON_Y)) - world.icon_size/2) * (climbed_thing.dir & SOUTH ? -1 : 1) dir_step = (x_dist >= y_dist ? (EAST|WEST) : (NORTH|SOUTH)) & climbed_thing.dir - else //user is being moved by a forced_movement datum. dir_step will be the direction to the forced movement target. - dir_step = get_dir(user, user.force_moving.target) else dir_step = get_dir(user, get_step(climbed_thing, climbed_thing.dir)) . = step(user, dir_step) @@ -121,11 +118,3 @@ var/mob/living/living_target = dropped_atom if(living_target.mobility_flags & MOBILITY_MOVE) INVOKE_ASYNC(src, PROC_REF(climb_structure), climbed_thing, living_target, params) - -///Tries to climb onto the target if the forced movement of the mob allows it -/datum/element/climbable/proc/try_speedrun(datum/source, mob/bumpee) - SIGNAL_HANDLER - if(!istype(bumpee)) - return - if(bumpee.force_moving?.allow_climbing) - do_climb(source, bumpee) diff --git a/code/datums/forced_movement.dm b/code/datums/forced_movement.dm deleted file mode 100644 index 407f258281c..00000000000 --- a/code/datums/forced_movement.dm +++ /dev/null @@ -1,89 +0,0 @@ -//Just new and forget -//Depricated, use movement loops instead. Exists to support things that want to move more then 10 times a second -/datum/forced_movement - var/atom/movable/victim - var/atom/target - var/last_processed - var/steps_per_tick - var/allow_climbing - var/datum/callback/on_step - var/moved_at_all = FALSE - //as fast as ssfastprocess -/datum/forced_movement/New(atom/movable/_victim, atom/_target, _steps_per_tick = 0.5, _allow_climbing = FALSE, datum/callback/_on_step = null) - victim = _victim - target = _target - steps_per_tick = _steps_per_tick - allow_climbing = _allow_climbing - on_step = _on_step - - . = ..() - - if(_victim && _target && _steps_per_tick && !_victim.force_moving) - last_processed = world.time - _victim.force_moving = src - START_PROCESSING(SSfastprocess, src) - else - qdel(src) //if you want to overwrite the current forced movement, call qdel(victim.force_moving) before creating this - -/datum/forced_movement/Destroy() - if(victim.force_moving == src) - victim.force_moving = null - if(moved_at_all) - victim.forceMove(victim.loc) //get the side effects of moving here that require us to currently not be force_moving aka reslipping on ice - STOP_PROCESSING(SSfastprocess, src) - victim = null - target = null - on_step = null - return ..() - -//Todo: convert -/datum/forced_movement/process() - if(QDELETED(victim) || !victim.loc || QDELETED(target) || !target.loc) - qdel(src) - return - var/steps_to_take = round(steps_per_tick * (world.time - last_processed)) - if(steps_to_take) - for(var/i in 1 to steps_to_take) - if(TryMove()) - moved_at_all = TRUE - if(on_step) - on_step.InvokeAsync() - else - qdel(src) - return - last_processed = world.time - -/datum/forced_movement/proc/TryMove(recursive = FALSE) - if(QDELETED(src)) //Our previous step caused deletion of this datum - return - - var/atom/movable/vic = victim //sanic - var/atom/tar = target - - if(!recursive) - . = step_towards(vic, tar) - - //shit way for getting around corners - if(!.) //If stepping towards the target failed - if(tar.x > vic.x) //If we're going x, step x - if(step(vic, EAST)) - . = TRUE - else if(tar.x < vic.x) - if(step(vic, WEST)) - . = TRUE - - if(!.) //If the x step failed, go y - if(tar.y > vic.y) - if(step(vic, NORTH)) - . = TRUE - else if(tar.y < vic.y) - if(step(vic, SOUTH)) - . = TRUE - - if(!.) //If both failed, try again for some reason - if(recursive) - return FALSE - else - . = TryMove(TRUE) - - . = . && (vic.loc != tar.loc) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 11d01fb827e..54f315e6a37 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -45,7 +45,6 @@ var/atom/movable/moving_from_pull ///Holds information about any movement loops currently running/waiting to run on the movable. Lazy, will be null if nothing's going on var/datum/movement_packet/move_packet - var/datum/forced_movement/force_moving = null //handled soley by forced_movement.dm /** * an associative lazylist of relevant nested contents by "channel", the list is of the form: list(channel = list(important nested contents of that type)) * each channel has a specific purpose and is meant to replace potentially expensive nested contents iteration. diff --git a/code/modules/projectiles/guns/special/meat_hook.dm b/code/modules/projectiles/guns/special/meat_hook.dm index dd83bbd030f..cfa932a6541 100644 --- a/code/modules/projectiles/guns/special/meat_hook.dm +++ b/code/modules/projectiles/guns/special/meat_hook.dm @@ -1,5 +1,7 @@ -//Meat Hook +#define TRAIT_HOOKED "hooked" +#define IMMOBILIZATION_TIMER (0.25 SECONDS) //! How long we immobilize the firer after firing - we do cancel the immobilization early if nothing is hit. +/// Meat Hook /obj/item/gun/magic/hook name = "meat hook" desc = "Mid or feed." @@ -22,8 +24,22 @@ /obj/item/gun/magic/hook/can_trigger_gun(mob/living/user, akimbo_usage) // This isn't really a gun, so it shouldn't be checking for TRAIT_NOGUNS, a firing pin (pinless), or a trigger guard (guardless) if(akimbo_usage) return FALSE //this would be kinda weird while shooting someone down. + if(HAS_TRAIT(user, TRAIT_IMMOBILIZED)) + return FALSE return TRUE +/obj/item/gun/magic/hook/suicide_act(mob/living/user) + var/obj/item/bodypart/head/removable = user.get_bodypart(BODY_ZONE_HEAD) + if(isnull(removable)) + user.visible_message(span_suicide("[user] stuffs the chain of the [src] down the hole where their head should be! It looks like [user.p_theyre()] trying to commit suicide!")) + return OXYLOSS + + playsound(get_turf(src), fire_sound, 50, TRUE, -1) + user.visible_message(span_suicide("[user] is using the [src] on their [user.p_their()] head! It looks like [user.p_theyre()] trying to commit suicide!")) + playsound(get_turf(src), 'sound/weapons/bladeslice.ogg', 70) + removable.dismember(silent = FALSE) + return BRUTELOSS + /obj/item/ammo_casing/magic/hook name = "hook" desc = "A hook." @@ -41,37 +57,154 @@ armour_penetration = 60 damage_type = BRUTE hitsound = 'sound/effects/splat.ogg' - var/chain - var/knockdown_time = (0.5 SECONDS) - var/chain_icon = 'icons/effects/beam.dmi' //SKYRAT ADDITION + /// The chain we send out while we are in motion, referred to as "initial" to not get confused with the chain we use to reel the victim in. + var/datum/beam/initial_chain + var/chain_icon = 'icons/effects/beam.dmi' // SKYRAT EDIT ADDITION /obj/projectile/hook/fire(setAngle) if(firer) - chain = firer.Beam(src, icon_state = "chain", icon = chain_icon, emissive = FALSE) //SKYRAT EDIT, original: chain = firer.Beam(src, icon_state = "chain", emissive = FALSE) - ..() - //TODO: root the firer until the chain returns + initial_chain = firer.Beam(src, icon_state = "chain", icon = chain_icon, emissive = FALSE) // SKYRAT EDIT CHANGE - Adds icon arg - ORIGINAL: chain = firer.Beam(src, icon_state = "chain", emissive = FALSE) + ADD_TRAIT(firer, TRAIT_IMMOBILIZED, REF(src)) + addtimer(TRAIT_CALLBACK_REMOVE(firer, TRAIT_IMMOBILIZED, REF(src)), IMMOBILIZATION_TIMER) // safety if we miss, if we get a hit we stay immobilized + return ..() /obj/projectile/hook/on_hit(atom/target, blocked = 0, pierce_hit) . = ..() - if(ismovable(target)) - var/atom/movable/A = target - if(A.anchored) - return - A.visible_message(span_danger("[A] is snagged by [firer]'s hook!")) - //Should really be a movement loop, but I don't want to support moving 5 tiles a tick - //It just looks bad - new /datum/forced_movement(A, get_turf(firer), 5, TRUE) - if (isliving(target)) - var/mob/living/fresh_meat = target - fresh_meat.Knockdown(knockdown_time) - return - //TODO: keep the chain beamed to A - //TODO: needs a callback to delete the chain - -/obj/projectile/hook/Destroy() - qdel(chain) + if(!ismovable(target)) + return + + var/atom/movable/victim = target + if(victim.anchored || HAS_TRAIT_FROM(victim, TRAIT_HOOKED, REF(firer))) + return + + victim.visible_message(span_danger("[victim] is snagged by [firer]'s hook!")) + + var/datum/hook_and_move/puller = new + puller.begin_pulling(firer, victim, get_turf(firer)) + REMOVE_TRAIT(firer, TRAIT_IMMOBILIZED, REF(src)) + +/obj/projectile/hook/Destroy(force) + QDEL_NULL(initial_chain) + return ..() + +/// Lightweight datum that just handles moving a target for the hook. +/// For the love of God, do not use this outside this file. +/datum/hook_and_move + /// Weakref to the victim we are dragging + var/datum/weakref/victim_ref = null + /// Weakref of the destination that the victim is heading towards. + var/datum/weakref/destination_ref = null + /// Weakref to the firer of the hook + var/datum/weakref/firer_ref = null + /// String to the REF() of the dude that fired us so we can ensure we always cleanup our traits + var/firer_ref_string = null + + /// The last time our movement fired. + var/last_movement = 0 + /// The chain beam we currently own. + var/datum/beam/return_chain = null + + /// How many steps we force the victim to take per tick + var/steps_per_tick = 5 + /// How long we knockdown the victim for. + var/knockdown_time = (0.5 SECONDS) + + /// List of traits that prevent the user from moving. More restrictive than attempting to fire the hook by design. + var/static/list/prevent_movement_traits = list( + TRAIT_IMMOBILIZED, + TRAIT_UI_BLOCKED, + ) + +/datum/hook_and_move/Destroy(force) + STOP_PROCESSING(SSfastprocess, src) + QDEL_NULL(return_chain) return ..() +/// Uses fastprocessing to move our victim to the destination at a rather fast speed. +/datum/hook_and_move/proc/begin_pulling(atom/movable/firer, atom/movable/victim, atom/destination) + return_chain = firer.Beam(victim, icon_state = "chain", emissive = FALSE) + + firer_ref_string = REF(firer) + ADD_TRAIT(victim, TRAIT_HOOKED, firer_ref_string) + firer.add_traits(prevent_movement_traits, REF(src)) + if(isliving(victim)) + var/mob/living/fresh_meat = victim + fresh_meat.Knockdown(knockdown_time) + + destination_ref = WEAKREF(destination) + victim_ref = WEAKREF(victim) + firer_ref = WEAKREF(firer) + + START_PROCESSING(SSfastprocess, src) + +/// Cancels processing and removes the trait from the victim. +/datum/hook_and_move/proc/end_movement() + var/atom/movable/firer = firer_ref?.resolve() + if(!QDELETED(firer)) + firer.remove_traits(prevent_movement_traits, REF(src)) + + var/atom/movable/victim = victim_ref?.resolve() + if(!QDELETED(victim)) + REMOVE_TRAIT(victim, TRAIT_HOOKED, firer_ref_string) + + qdel(src) + +/datum/hook_and_move/process(seconds_per_tick) + var/atom/movable/victim = victim_ref?.resolve() + var/atom/destination = destination_ref?.resolve() + if(QDELETED(victim) || QDELETED(destination)) + end_movement() + return + + var/steps_to_take = round(steps_per_tick * (world.time - last_movement)) + if(steps_to_take <= 0) + return + + var/movement_result = attempt_movement(victim, destination) + if(!movement_result || (victim.loc == destination.loc)) // either we failed our movement or our mission is complete + end_movement() + +/// Attempts to move the victim towards the destination. Returns TRUE if we do a successful movement, FALSE otherwise. +/// second_attempt is a boolean to prevent infinite recursion. +/// If this whole series of events wasn't reliant on SSfastprocess firing as fast as it does, it would have been more useful to make this a move loop datum. But, we need the speed. +/datum/hook_and_move/proc/attempt_movement(atom/movable/subject, atom/target, second_attempt = FALSE) + var/actually_moved = FALSE + if(!second_attempt) + actually_moved = step_towards(subject, target) + + if(actually_moved) + return TRUE + + // alright now the code fucking sucks + var/subject_x = subject.x + var/subject_y = subject.y + var/target_x = target.x + var/target_y = target.y + + //If we're going x, step x + if((target_x > subject_x) && step(subject, EAST)) + actually_moved = TRUE + else if((target_x < subject_x) && step(subject, WEST)) + actually_moved = TRUE + + if(actually_moved) + return TRUE + + //If the x step failed, go y + if((target_y > subject_y) && step(subject, NORTH)) + actually_moved = TRUE + else if((target_y < subject_y) && step(subject, SOUTH)) + actually_moved = TRUE + + if(actually_moved) + return TRUE + + // if we fail twice, abort. otherwise queue up the second attempt. + if(second_attempt) + return FALSE + + return attempt_movement(subject, target, second_attempt = TRUE) + //just a nerfed version of the real thing for the bounty hunters. /obj/item/gun/magic/hook/bounty name = "hook" @@ -83,3 +216,12 @@ /obj/projectile/hook/bounty damage = 0 stamina = 40 + +/// Debug hook for fun (AKA admin abuse). doesn't do any more damage or anything just lets you wildfire it. +/obj/item/gun/magic/hook/debug + name = "super meat hook" + max_charges = 100 + recharge_rate = 1 + +#undef TRAIT_HOOKED +#undef IMMOBILIZATION_TIMER diff --git a/tgstation.dme b/tgstation.dme index 5bb9f921fb7..6542ef67643 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -842,7 +842,6 @@ #include "code\datums\ductnet.dm" #include "code\datums\emotes.dm" #include "code\datums\ert.dm" -#include "code\datums\forced_movement.dm" #include "code\datums\hailer_phrase.dm" #include "code\datums\holocall.dm" #include "code\datums\hotkeys_help.dm" From f6d89ce69fb76ffd10d8d19993aaab1a526a3f22 Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Sun, 3 Dec 2023 21:16:46 +0300 Subject: [PATCH 17/61] [MIRROR] Removes the vestigial slime reagent system [MDB IGNORE] (#25397) (#937) * Removes the vestigial slime reagent system (#80068) ## About The Pull Request Slimes, unique among simple and basic mobs, had a reagent holder. During life, they removed some of the reagents in the holder, but they never actually metabolized them. Two reagents, frostoil and capsaicin did not know this, and checked every time in on mob life if the mob they were in was a slime, which was never the case. Slimes also checked if they had morphine or frostoil in them when they detected a change in their reagents, on_reagent_change, and applied a slowdown. There are not many ways to put these reagents in slimes in the first place. Chempuffs, syringes (but not hyposprays) work, and I assume smoke too. I removed this dead code. I did see this comment _"Should be moved to the reagents at some point in the future. As it is I'm in a hurry."_ and I did try to move the effects to reagents' onExpose(), creating a status effect that only applies to mobs without reagents, lasts as long as it would have lasted based on reagents, and respects that morphine and frostoil doesn't stack. However, while doing this I realized I would be making reagents 2, in a much worse, overcomplicated manner. In the end, I have decided to completely remove the reagent holder of slimes, and the morphine and frostoil effects. ## Why It's Good For The Game These systems are rather vestigial, and there isn't really much to gain from them. The interaction with heat and gas types is a much more unique system, so perhaps it will be better if we focus on them. Also makes it easier to convert them to basic mobs, and also, keeps them consistent with the rest of our mobs. ## Changelog :cl: del: Removes the slime's reagent holder. This will make them not slow down from somehow imbibing morphine or frostoil. /:cl: * Removes the vestigial slime reagent system --------- Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Co-authored-by: Profakos --- .../mob/living/simple_animal/slime/life.dm | 1 - .../mob/living/simple_animal/slime/slime.dm | 29 ------------------- .../chemistry/reagents/food_reagents.dm | 16 ---------- 3 files changed, 46 deletions(-) diff --git a/code/modules/mob/living/simple_animal/slime/life.dm b/code/modules/mob/living/simple_animal/slime/life.dm index 078ec2749b5..e17fd09e0fa 100644 --- a/code/modules/mob/living/simple_animal/slime/life.dm +++ b/code/modules/mob/living/simple_animal/slime/life.dm @@ -19,7 +19,6 @@ handle_nutrition(seconds_per_tick, times_fired) if(QDELETED(src)) // Stop if the slime split during handle_nutrition() return - reagents.remove_all(0.5 * REAGENTS_METABOLISM * reagents.reagent_list.len * seconds_per_tick) //Slimes are such snowflakes handle_targets(seconds_per_tick, times_fired) if(ckey) return diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index b03f46d5a44..8d0770d2bf5 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -120,7 +120,6 @@ else var/datum/action/innate/slime/evolve/evolve_action = new evolve_action.Grant(src) - create_reagents(100) set_slime_type(new_type) . = ..() set_nutrition(700) @@ -147,17 +146,6 @@ /mob/living/simple_animal/slime/pet docile = TRUE -/mob/living/simple_animal/slime/create_reagents(max_vol, flags) - . = ..() - RegisterSignals(reagents, list(COMSIG_REAGENTS_NEW_REAGENT, COMSIG_REAGENTS_DEL_REAGENT), PROC_REF(on_reagent_change)) - RegisterSignal(reagents, COMSIG_QDELETING, PROC_REF(on_reagents_del)) - -/// Handles removing signal hooks incase someone is crazy enough to reset the reagents datum. -/mob/living/simple_animal/slime/proc/on_reagents_del(datum/reagents/reagents) - SIGNAL_HANDLER - UnregisterSignal(reagents, list(COMSIG_REAGENTS_NEW_REAGENT, COMSIG_REAGENTS_DEL_REAGENT, COMSIG_QDELETING)) - return NONE - /mob/living/simple_animal/slime/proc/set_slime_type(new_type) slime_type = new new_type update_name() @@ -188,23 +176,6 @@ icon_state = icon_dead ..() -/** - * Snowflake handling of reagent movespeed modifiers - * - * Should be moved to the reagents at some point in the future. As it is I'm in a hurry. - */ -/mob/living/simple_animal/slime/proc/on_reagent_change(datum/reagents/holder, ...) - SIGNAL_HANDLER - remove_movespeed_modifier(/datum/movespeed_modifier/slime_reagentmod) - var/amount = 0 - if(reagents.has_reagent(/datum/reagent/medicine/morphine)) // morphine slows slimes down - amount = 2 - if(reagents.has_reagent(/datum/reagent/consumable/frostoil)) // Frostoil also makes them move VEEERRYYYYY slow - amount = 5 - if(amount) - add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/slime_reagentmod, multiplicative_slowdown = amount) - return NONE - /mob/living/simple_animal/slime/updatehealth() . = ..() var/mod = 0 diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index f897d8f4bb2..2629a073120 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -352,20 +352,12 @@ heating = 5 if(holder.has_reagent(/datum/reagent/cryostylane)) holder.remove_reagent(/datum/reagent/cryostylane, 5 * REM * seconds_per_tick) - if(isslime(affected_mob)) - heating = rand(5, 20) if(15 to 25) heating = 10 - if(isslime(affected_mob)) - heating = rand(10, 20) if(25 to 35) heating = 15 - if(isslime(affected_mob)) - heating = rand(15, 20) if(35 to INFINITY) heating = 20 - if(isslime(affected_mob)) - heating = rand(20, 25) affected_mob.adjust_bodytemperature(heating * TEMPERATURE_DAMAGE_COEFFICIENT * REM * seconds_per_tick) /datum/reagent/consumable/frostoil @@ -387,24 +379,16 @@ cooling = -10 if(holder.has_reagent(/datum/reagent/consumable/capsaicin)) holder.remove_reagent(/datum/reagent/consumable/capsaicin, 5 * REM * seconds_per_tick) - if(isslime(affected_mob)) - cooling = -rand(5, 20) if(15 to 25) cooling = -20 - if(isslime(affected_mob)) - cooling = -rand(10, 20) if(25 to 35) cooling = -30 if(prob(1)) affected_mob.emote("shiver") - if(isslime(affected_mob)) - cooling = -rand(15, 20) if(35 to INFINITY) cooling = -40 if(prob(5)) affected_mob.emote("shiver") - if(isslime(affected_mob)) - cooling = -rand(20, 25) affected_mob.adjust_bodytemperature(cooling * TEMPERATURE_DAMAGE_COEFFICIENT * REM * seconds_per_tick, 50) /datum/reagent/consumable/frostoil/expose_turf(turf/exposed_turf, reac_volume) From c8dab55449e127c51ae7f51ce6c974f70cd3321a Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Sun, 3 Dec 2023 21:17:06 +0300 Subject: [PATCH 18/61] [MIRROR] Removes misformatted entry in `traits_by_type`. [MDB IGNORE] (#25400) (#938) * Removes misformatted entry in `traits_by_type`. (#80061) ## About The Pull Request Oversight from #79642 (71b45e54adfaa4c681babc545db97fa7103289de), was probably screwing up the way this list could potentially be used. ## Why It's Good For The Game That entry isn't supposed to be there! ## Changelog do not matter * Removes misformatted entry in `traits_by_type`. --------- Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Co-authored-by: san7890 --- code/_globalvars/traits/_traits.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 4b59171cba3..ac415ca6886 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -20,7 +20,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_FOOD_FRIED" = TRAIT_FOOD_FRIED, "TRAIT_FOOD_GRILLED" = TRAIT_FOOD_GRILLED, "TRAIT_FOOD_SILVER" = TRAIT_FOOD_SILVER, - "TRAIT_KEEP_TOGETHER" = TRAIT_KEEP_TOGETHER,TRAIT_CUSTOMIZABLE_REAGENT_HOLDER, + "TRAIT_KEEP_TOGETHER" = TRAIT_KEEP_TOGETHER, "TRAIT_LIGHTING_DEBUGGED" = TRAIT_LIGHTING_DEBUGGED, "TRAIT_MAT_TRANSMUTED" = TRAIT_MAT_TRANSMUTED, "TRAIT_RECENTLY_COINED" = TRAIT_RECENTLY_COINED, From a3e1d3d6efcfa9f8748e400d19b1b96b0331de78 Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Sun, 3 Dec 2023 21:17:49 +0300 Subject: [PATCH 19/61] [MIRROR] Replaces cosmic heretic clone damage with organ damage [MDB IGNORE] (#25403) (#939) * Replaces cosmic heretic clone damage with organ damage (#80051) ## About The Pull Request This PR replaces clone damage dealt by the cosmic blade with damage to a random organ (8, 12, 14 respectively). To compensate for this, burn damage will now deal 5-14-28, which is slightly weaker immediate damage than before (6-16-32). Someone suggested that blades should remove blood from the victim, however I felt like that was too punishing considering the speed of blood regeneration. Feel free to share suggestions in the comments, if you know of a better idea. Main point of this PR is to get rid of clone damage sources. ## Why It's Good For The Game These are the last sources of clone damage in the game. We don't need it anymore. ## Changelog :cl: balance: Clone damage dealt by the cosmic blade has been replaced with organ damage and increased burn damage. Clone damage dealt by the cosmic beam has been removed. The star gazer now deals burn damage instead of clone damage. fix: The health of mobs combo'd by a cosmic blade will now update correctly. /:cl: * Replaces cosmic heretic clone damage with organ damage --------- Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Co-authored-by: distributivgesetz --- .../heretic/knowledge/cosmic_lore.dm | 27 ++++++++++++------- .../antagonists/heretic/magic/star_touch.dm | 5 +--- .../mob/living/basic/heretic/star_gazer.dm | 2 +- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm b/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm index d2fe6ab3776..9e4c698c787 100644 --- a/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm @@ -125,7 +125,7 @@ /datum/heretic_knowledge/blade_upgrade/cosmic name = "Cosmic Blade" - desc = "Your blade now deals damage to people's cells through cosmic radiation. \ + desc = "Your blade now deals damage to people's organs through cosmic radiation. \ Your attacks will chain bonus damage to up to two previous victims. \ The combo is reset after two seconds without making an attack, \ or if you attack someone already marked. If you combo more than four attacks you will recieve, \ @@ -152,6 +152,15 @@ var/combo_counter = 0 /datum/heretic_knowledge/blade_upgrade/cosmic/do_melee_effects(mob/living/source, mob/living/target, obj/item/melee/sickly_blade/blade) + var/static/list/valid_organ_slots = list( + ORGAN_SLOT_HEART, + ORGAN_SLOT_LUNGS, + ORGAN_SLOT_STOMACH, + ORGAN_SLOT_EYES, + ORGAN_SLOT_EARS, + ORGAN_SLOT_LIVER, + ORGAN_SLOT_BRAIN + ) if(source == target) return if(combo_timer) @@ -160,8 +169,8 @@ var/mob/living/second_target_resolved = second_target?.resolve() var/mob/living/third_target_resolved = third_target?.resolve() var/need_mob_update = FALSE - need_mob_update += target.adjustFireLoss(4, updating_health = FALSE) - need_mob_update += target.adjustCloneLoss(2, updating_health = FALSE) + need_mob_update += target.adjustFireLoss(5, updating_health = FALSE) + need_mob_update += target.adjustOrganLoss(pick(valid_organ_slots), 8) if(need_mob_update) target.updatehealth() if(target == second_target_resolved || target == third_target_resolved) @@ -173,18 +182,18 @@ new /obj/effect/temp_visual/cosmic_explosion(get_turf(second_target_resolved)) playsound(get_turf(second_target_resolved), 'sound/magic/cosmic_energy.ogg', 25, FALSE) need_mob_update = FALSE - need_mob_update += second_target_resolved.adjustFireLoss(10, updating_health = FALSE) - need_mob_update += second_target_resolved.adjustCloneLoss(6, updating_health = FALSE) + need_mob_update += second_target_resolved.adjustFireLoss(14, updating_health = FALSE) + need_mob_update += second_target_resolved.adjustOrganLoss(pick(valid_organ_slots), 12) if(need_mob_update) - target.updatehealth() + second_target_resolved.updatehealth() if(third_target_resolved) new /obj/effect/temp_visual/cosmic_domain(get_turf(third_target_resolved)) playsound(get_turf(third_target_resolved), 'sound/magic/cosmic_energy.ogg', 50, FALSE) need_mob_update = FALSE - need_mob_update += third_target_resolved.adjustFireLoss(20, updating_health = FALSE) - need_mob_update += third_target_resolved.adjustCloneLoss(12, updating_health = FALSE) + need_mob_update += third_target_resolved.adjustFireLoss(28, updating_health = FALSE) + need_mob_update += third_target_resolved.adjustOrganLoss(pick(valid_organ_slots), 14) if(need_mob_update) - target.updatehealth() + third_target_resolved.updatehealth() if(combo_counter > 3) target.apply_status_effect(/datum/status_effect/star_mark, source) if(target.mind && target.stat != DEAD) diff --git a/code/modules/antagonists/heretic/magic/star_touch.dm b/code/modules/antagonists/heretic/magic/star_touch.dm index f2f2c935bbf..9037d07295a 100644 --- a/code/modules/antagonists/heretic/magic/star_touch.dm +++ b/code/modules/antagonists/heretic/magic/star_touch.dm @@ -236,10 +236,7 @@ /// What to process when the beam is connected to a target /datum/status_effect/cosmic_beam/proc/on_beam_tick(mob/living/target) - var/need_mob_update - need_mob_update = target.adjustFireLoss(3, updating_health = FALSE) - need_mob_update += target.adjustCloneLoss(1, updating_health = FALSE) - if(need_mob_update) + if(target.adjustFireLoss(3, updating_health = FALSE)) target.updatehealth() /// What to remove when the beam disconnects from a target diff --git a/code/modules/mob/living/basic/heretic/star_gazer.dm b/code/modules/mob/living/basic/heretic/star_gazer.dm index f7ab925440d..3c1591c92ea 100644 --- a/code/modules/mob/living/basic/heretic/star_gazer.dm +++ b/code/modules/mob/living/basic/heretic/star_gazer.dm @@ -65,7 +65,7 @@ return target.apply_status_effect(/datum/status_effect/star_mark) - target.apply_damage(damage = 5, damagetype = CLONE) + target.apply_damage(damage = 5, damagetype = BURN) var/datum/targeting_strategy/target_confirmer = GET_TARGETING_STRATEGY(ai_controller.blackboard[BB_TARGETING_STRATEGY]) for(var/mob/living/nearby_mob in range(1, src)) if(target == nearby_mob || !target_confirmer?.can_attack(src, nearby_mob)) From 809da329034568e05dcf367ca335f57fa4daad72 Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Sun, 3 Dec 2023 21:18:32 +0300 Subject: [PATCH 20/61] [MIRROR] Fixes an outfit typo [MDB IGNORE] (#25391) (#923) * Fixes an outfit typo (#80077) ## About The Pull Request Fixes a typo in one of the outfits used in the Pipe Dream domain. Factory Quatermaster -> Factory Quartermaster ## Why It's Good For The Game Quatermaster... ## Changelog :cl: Rhials spellcheck: Fixes a typo in the Factory Quartermaster outfit name. /:cl: * Fixes an outfit typo --------- Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com> --- code/modules/bitrunning/virtual_domain/domains/pipedream.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/bitrunning/virtual_domain/domains/pipedream.dm b/code/modules/bitrunning/virtual_domain/domains/pipedream.dm index c8d7750e979..8b0fdbbd780 100644 --- a/code/modules/bitrunning/virtual_domain/domains/pipedream.dm +++ b/code/modules/bitrunning/virtual_domain/domains/pipedream.dm @@ -76,7 +76,7 @@ r_pocket = /obj/item/assembly/flash/handheld /datum/outfit/factory/qm - name = "Factory Quatermaster" + name = "Factory Quartermaster" id_trim = /datum/id_trim/factory/qm id = /obj/item/card/id/advanced/silver From f2a5269383745d84bcbcd0829214afbcb868ff9f Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Sun, 3 Dec 2023 21:44:22 +0300 Subject: [PATCH 21/61] [MIRROR] Fixes smartfridges showing overlays when there is nothing inside [MDB IGNORE] (#25392) (#924) * Fixes smartfridges showing overlays when there is nothing inside (#79982) ## About The Pull Request It was considering stock parts as contents after the refactor in #79623 ## Why It's Good For The Game Bug fix ## Changelog :cl: MrMelbert fix: smartfridges no longer show false overlays /:cl: * Fixes smartfridges showing overlays when there is nothing inside --------- Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Co-authored-by: Andrew --- code/modules/food_and_drinks/machinery/smartfridge.dm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/code/modules/food_and_drinks/machinery/smartfridge.dm b/code/modules/food_and_drinks/machinery/smartfridge.dm index e00cfeaaa7e..4cf66f27a6f 100644 --- a/code/modules/food_and_drinks/machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/machinery/smartfridge.dm @@ -225,10 +225,7 @@ /// Returns the number of items visible in the fridge. Faster than subtracting 2 lists /obj/machinery/smartfridge/proc/visible_items() - var/component_part_count = 0 - for(var/datum/stock_part/datum_part in component_parts) - component_part_count -= 1 - return contents.len - component_part_count + return contents.len - 1 // Circuitboard /obj/machinery/smartfridge/update_overlays() . = ..() From 45b1848eb133f02a944d0e8ae109e7acab494fed Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Sun, 3 Dec 2023 21:47:10 +0300 Subject: [PATCH 22/61] [MIRROR] Makes the QM Skirt Work For Digi Legs [MDB IGNORE] (#25389) (#930) * Makes the QM Skirt Work For Digi Legs (#80067) ## About The Pull Request Makes digi legs use the QM skirt properly. (Difference illustrated with VV) ## Why It's Good For The Game Realistically lizards shouldn't be allowed in this role, as such inferior beings have no business being a head of staff on a cutting-edge Nanotrasen research station. But if a human decides to get a leg transplant or something this is good for them. Clearly an oversight in the code. Fixes good oversights bad for the project. ## Changelog :cl: fix: Digi legs work with the QM's jumpskirt /:cl: * Makes the QM Skirt Work For Digi Legs --------- Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Co-authored-by: Jackraxxus <60418544+Jackraxxus@users.noreply.github.com> --- code/modules/clothing/under/jobs/cargo.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/clothing/under/jobs/cargo.dm b/code/modules/clothing/under/jobs/cargo.dm index e3145fb740d..f6f1ac94cb8 100644 --- a/code/modules/clothing/under/jobs/cargo.dm +++ b/code/modules/clothing/under/jobs/cargo.dm @@ -15,6 +15,7 @@ inhand_icon_state = "lb_suit" body_parts_covered = CHEST|GROIN|ARMS dying_key = DYE_REGISTRY_JUMPSKIRT + supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON /obj/item/clothing/under/rank/cargo/tech name = "cargo technician's uniform" From ae0dddaf719a945b49cc183f26ca70394d0434e0 Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Sun, 3 Dec 2023 21:53:50 +0300 Subject: [PATCH 23/61] [MIRROR] Changes occurrences of `recieve` in code to `receive` [MDB IGNORE] (#25393) (#925) * Changes occurrences of `recieve` in code to `receive` * Fix conflict --------- Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Co-authored-by: distributivgesetz Co-authored-by: SomeRandomOwl --- code/datums/components/boss_music.dm | 2 +- code/datums/components/crafting/ranged_weapon.dm | 4 ++-- code/datums/request_message.dm | 2 +- code/datums/saymode.dm | 10 +++++----- code/datums/station_traits/positive_traits.dm | 4 ++-- code/datums/status_effects/debuffs/blindness.dm | 2 +- code/datums/status_effects/neutral.dm | 2 +- code/datums/storage/storage.dm | 2 +- code/datums/weather/weather.dm | 2 +- .../dna_infuser/organ_sets/gondola_organs.dm | 2 +- code/game/machinery/telecomms/broadcasting.dm | 2 +- code/game/machinery/telecomms/machines/receiver.dm | 4 ++-- code/game/objects/items/devices/radio/intercom.dm | 2 +- code/game/objects/items/devices/radio/radio.dm | 2 +- code/game/objects/items/food/egg.dm | 2 +- code/game/objects/items/food/packaged.dm | 2 +- code/game/objects/structures/maintenance.dm | 2 +- code/modules/admin/sql_ban_system.dm | 2 +- code/modules/admin/verbs/adminpm.dm | 2 +- .../antagonists/heretic/knowledge/cosmic_lore.dm | 4 ++-- .../antagonists/heretic/magic/cosmic_expansion.dm | 2 +- code/modules/antagonists/pirate/pirate_gangs.dm | 2 +- .../objectives/final_objective/infect_ai.dm | 2 +- .../final_objective/objective_dark_matteor.dm | 6 +++--- .../traitor/objectives/final_objective/romerol.dm | 6 +++--- .../objectives/final_objective/space_dragon.dm | 14 +++++++------- .../final_objective/supermatter_cascade.dm | 2 +- code/modules/clothing/spacesuits/_spacesuits.dm | 2 +- code/modules/events/disease_outbreak.dm | 4 ++-- code/modules/events/earthquake.dm | 2 +- code/modules/events/heart_attack.dm | 6 +++--- .../events/shuttle_loan/shuttle_loan_datum.dm | 2 +- code/modules/events/vent_clog.dm | 2 +- .../explorer_drone/exploration_events/resource.dm | 2 +- code/modules/jobs/job_types/_job.dm | 2 +- code/modules/mafia/map_pieces.dm | 2 +- code/modules/meteors/meteor_spawning.dm | 2 +- code/modules/meteors/meteor_types.dm | 4 ++-- .../basic/lavaland/bileworm/bileworm_actions.dm | 2 +- code/modules/mob/living/living.dm | 4 ++-- .../mob_spawn/ghost_roles/fugitive_hunter_roles.dm | 2 +- .../modular_computers/computers/item/computer.dm | 2 +- code/modules/pai/pai.dm | 2 +- code/modules/shuttle/supply.dm | 8 ++++---- .../spells/spell_types/jaunt/shadow_walk.dm | 4 ++-- .../spells/spell_types/touch/scream_for_me.dm | 2 +- .../organs/internal/cyberimp/augments_arms.dm | 8 ++++---- .../surgery/organs/internal/liver/_liver.dm | 2 +- code/modules/tgchat/README.md | 4 ++-- code/modules/unit_tests/mecha_damage.dm | 2 +- code/modules/uplink/uplink_items/clownops.dm | 2 +- code/modules/uplink/uplink_items/job.dm | 2 +- code/modules/uplink/uplink_items/nukeops.dm | 2 +- code/modules/vehicles/mecha/_mecha.dm | 2 +- .../wiremod/components/bci/thought_listener.dm | 2 +- strings/junkmail.txt | 2 +- .../antagonists/antagonists/changelingmidround.ts | 2 +- tgui/packages/tgui/interfaces/SyndContractor.jsx | 2 +- tools/HubMigrator/HubMigrator.dm | 12 ++++++------ .../WebhookProcessor/github_webhook_processor.php | 2 +- tools/minibot/minibot.py | 2 +- 61 files changed, 97 insertions(+), 97 deletions(-) diff --git a/code/datums/components/boss_music.dm b/code/datums/components/boss_music.dm index 37f438f0b62..56307d12655 100644 --- a/code/datums/components/boss_music.dm +++ b/code/datums/components/boss_music.dm @@ -40,7 +40,7 @@ UnregisterSignal(parent, COMSIG_HOSTILE_FOUND_TARGET) return ..() -///Handles giving the boss music to a new target the fauna has recieved. +///Handles giving the boss music to a new target the fauna has received. ///Keeps track of them to not repeatedly overwrite its own track. /datum/component/boss_music/proc/on_target_found(atom/source, mob/new_target) SIGNAL_HANDLER diff --git a/code/datums/components/crafting/ranged_weapon.dm b/code/datums/components/crafting/ranged_weapon.dm index a8b64f428d9..6a6e44d2529 100644 --- a/code/datums/components/crafting/ranged_weapon.dm +++ b/code/datums/components/crafting/ranged_weapon.dm @@ -19,8 +19,8 @@ time = 4 SECONDS category = CAT_WEAPON_RANGED -/datum/crafting_recipe/reciever - name = "Modular Rifle Reciever" +/datum/crafting_recipe/receiver + name = "Modular Rifle Receiver" tool_behaviors = list(TOOL_WRENCH, TOOL_WELDER, TOOL_SAW) result = /obj/item/weaponcrafting/receiver reqs = list( diff --git a/code/datums/request_message.dm b/code/datums/request_message.dm index 920f45dca53..d9cf51bc5be 100644 --- a/code/datums/request_message.dm +++ b/code/datums/request_message.dm @@ -32,7 +32,7 @@ if(data_appended_list && data_appended_list.len) appended_list = data_appended_list -/// Retrieves the alert spoken/blared by the requests console that recieves this message +/// Retrieves the alert spoken/blared by the requests console that receives this message /datum/request_message/proc/get_alert() var/authenticated = "" if(message_verified_by) diff --git a/code/datums/saymode.dm b/code/datums/saymode.dm index 7e227268495..363f484a415 100644 --- a/code/datums/saymode.dm +++ b/code/datums/saymode.dm @@ -30,15 +30,15 @@ user.log_talk(message, LOG_SAY, tag="changeling [ling_sender.changelingID]") var/msg = span_changeling("[ling_sender.changelingID]: [message]") - //the recipients can recieve the message - for(var/datum/antagonist/changeling/ling_reciever in GLOB.antagonists) - if(!ling_reciever.owner) + //the recipients can receive the message + for(var/datum/antagonist/changeling/ling_receiver in GLOB.antagonists) + if(!ling_receiver.owner) continue - var/mob/living/ling_mob = ling_reciever.owner.current + var/mob/living/ling_mob = ling_receiver.owner.current //removes types that override the presence of being changeling (for example, borged lings still can't hivemind chat) if(!isliving(ling_mob) || issilicon(ling_mob) || isbrain(ling_mob)) continue - // can't recieve messages on the hivemind right now + // can't receive messages on the hivemind right now if(HAS_TRAIT(ling_mob, TRAIT_CHANGELING_HIVEMIND_MUTE)) continue to_chat(ling_mob, msg) diff --git a/code/datums/station_traits/positive_traits.dm b/code/datums/station_traits/positive_traits.dm index 7c36ed24db9..950a14a953c 100644 --- a/code/datums/station_traits/positive_traits.dm +++ b/code/datums/station_traits/positive_traits.dm @@ -361,12 +361,12 @@ trait_type = STATION_TRAIT_POSITIVE weight = 5 show_in_report = TRUE - report_message = "Your station's medibots have recieved a hardware upgrade, enabling expanded healing capabilities." + report_message = "Your station's medibots have received a hardware upgrade, enabling expanded healing capabilities." trait_to_give = STATION_TRAIT_MEDBOT_MANIA /datum/station_trait/random_event_weight_modifier/shuttle_loans name = "Loaner Shuttle" - report_message = "Due to an uptick in pirate attacks around your sector, there are few supply vessels in nearby space willing to assist with special requests. Expect to recieve more shuttle loan opportunities, with slightly higher payouts." + report_message = "Due to an uptick in pirate attacks around your sector, there are few supply vessels in nearby space willing to assist with special requests. Expect to receive more shuttle loan opportunities, with slightly higher payouts." trait_type = STATION_TRAIT_POSITIVE weight = 4 event_control_path = /datum/round_event_control/shuttle_loan diff --git a/code/datums/status_effects/debuffs/blindness.dm b/code/datums/status_effects/debuffs/blindness.dm index 65354643123..e36f2e45dfa 100644 --- a/code/datums/status_effects/debuffs/blindness.dm +++ b/code/datums/status_effects/debuffs/blindness.dm @@ -10,7 +10,7 @@ // This is not "remove on fullheal" as in practice, // fullheal should instead remove all the sources and in turn cure this - /// Static list of signals that, when recieved, we force an update to our nearsighted overlay + /// Static list of signals that, when received, we force an update to our nearsighted overlay var/static/list/update_signals = list(SIGNAL_ADDTRAIT(TRAIT_NEARSIGHTED_CORRECTED), SIGNAL_REMOVETRAIT(TRAIT_NEARSIGHTED_CORRECTED)) /// How severe is our nearsightedness right now var/overlay_severity = 1 diff --git a/code/datums/status_effects/neutral.dm b/code/datums/status_effects/neutral.dm index 416fe031341..73fa3b20b9a 100644 --- a/code/datums/status_effects/neutral.dm +++ b/code/datums/status_effects/neutral.dm @@ -360,7 +360,7 @@ /* * A status effect used for preventing caltrop message spam * - * While a mob has this status effect, they won't recieve any messages about + * While a mob has this status effect, they won't receive any messages about * stepping on caltrops. But they will be stunned and damaged regardless. * * The status effect itself has no effect, other than to disappear after diff --git a/code/datums/storage/storage.dm b/code/datums/storage/storage.dm index 342aec50d01..acfa2e40f18 100644 --- a/code/datums/storage/storage.dm +++ b/code/datums/storage/storage.dm @@ -982,7 +982,7 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches) return open_storage_on_signal(source, user) -/// Signal handler to open up the storage when we recieve a signal. +/// Signal handler to open up the storage when we receive a signal. /datum/storage/proc/open_storage_on_signal(datum/source, mob/to_show) SIGNAL_HANDLER diff --git a/code/datums/weather/weather.dm b/code/datums/weather/weather.dm index f262a6c0c47..a9322074f25 100644 --- a/code/datums/weather/weather.dm +++ b/code/datums/weather/weather.dm @@ -182,7 +182,7 @@ if(alert_sfx) SEND_SOUND(player, sound(alert_sfx)) -// the checks for if a mob should recieve alerts, returns TRUE if can +// the checks for if a mob should receive alerts, returns TRUE if can /datum/weather/proc/can_get_alert(mob/player) var/turf/mob_turf = get_turf(player) return !isnull(mob_turf) diff --git a/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm b/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm index bc7b79aff09..515c56622c4 100644 --- a/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm +++ b/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm @@ -25,7 +25,7 @@ Fluoride Stare: After someone says 5 words, blah blah blah... greyscale_config = /datum/greyscale_config/mutant_organ greyscale_colors = GONDOLA_COLORS organ_traits = list(TRAIT_PACIFISM) - ///keeps track of whether the reciever actually gained factions + ///keeps track of whether the receiver actually gained factions var/list/factions_to_remove = list() /obj/item/organ/internal/heart/gondola/Initialize(mapload) diff --git a/code/game/machinery/telecomms/broadcasting.dm b/code/game/machinery/telecomms/broadcasting.dm index e8ecb72393f..4c53cc5e418 100644 --- a/code/game/machinery/telecomms/broadcasting.dm +++ b/code/game/machinery/telecomms/broadcasting.dm @@ -155,7 +155,7 @@ radios += independent_radio for(var/obj/item/radio/called_radio as anything in radios) - called_radio.on_recieve_message(data) + called_radio.on_receive_message(data) // From the list of radios, find all mobs who can hear those. var/list/receive = get_hearers_in_radio_ranges(radios) diff --git a/code/game/machinery/telecomms/machines/receiver.dm b/code/game/machinery/telecomms/machines/receiver.dm index def8384b139..ff3064e73c7 100644 --- a/code/game/machinery/telecomms/machines/receiver.dm +++ b/code/game/machinery/telecomms/machines/receiver.dm @@ -20,10 +20,10 @@ if(!is_freq_listening(signal)) return - // Make a copy of the signal so that other recievers can still recieve this signal + // Make a copy of the signal so that other receivers can still receive this signal var/datum/signal/subspace/signal_copy = signal.copy() - // Signal has been recieved, so remove receiving levels. This list will be used later on to determine broadcasting levels. + // Signal has been received, so remove receiving levels. This list will be used later on to determine broadcasting levels. signal_copy.levels = list() // Send the signal to a hub if possible, or a bus otherwise. diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 3fa205fc489..2308a566413 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -168,7 +168,7 @@ /** * Proc called whenever the intercom's area loses or gains power. Responsible for setting the `on` variable and calling `update_icon()`. * - * Normally called after the intercom's area recieves the `COMSIG_AREA_POWER_CHANGE` signal, but it can also be called directly. + * Normally called after the intercom's area receives the `COMSIG_AREA_POWER_CHANGE` signal, but it can also be called directly. * Arguments: * * source - the area that just had a power change. */ diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 5930747a252..e11756f6708 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -388,7 +388,7 @@ return TRUE return FALSE -/obj/item/radio/proc/on_recieve_message(list/data) +/obj/item/radio/proc/on_receive_message(list/data) SEND_SIGNAL(src, COMSIG_RADIO_RECEIVE_MESSAGE, data) flick_overlay_view(overlay_speaker_active, 5 SECONDS) diff --git a/code/game/objects/items/food/egg.dm b/code/game/objects/items/food/egg.dm index 60bbb58e3ac..356059a097a 100644 --- a/code/game/objects/items/food/egg.dm +++ b/code/game/objects/items/food/egg.dm @@ -213,7 +213,7 @@ GLOBAL_VAR_INIT(chicks_from_eggs, 0) desc = "Supposedly good for you, if you can stomach it. Better fried." icon = 'icons/obj/food/egg.dmi' icon_state = "rawegg" - food_reagents = list() //Recieves all reagents from its whole egg counterpart + food_reagents = list() // Receives all reagents from its whole egg counterpart bite_consumption = 1 tastes = list("raw egg" = 6, "sliminess" = 1) eatverbs = list("gulp down") diff --git a/code/game/objects/items/food/packaged.dm b/code/game/objects/items/food/packaged.dm index 1dabec57cdd..820b10927f6 100644 --- a/code/game/objects/items/food/packaged.dm +++ b/code/game/objects/items/food/packaged.dm @@ -125,7 +125,7 @@ return apply_buff(target, user) -///This proc checks if the mob is able to recieve the buff. +///This proc checks if the mob is able to receive the buff. /obj/item/food/canned/envirochow/proc/check_buffability(mob/living/hungry_pet) if(!isanimal_or_basicmob(hungry_pet)) // Not a pet return FALSE diff --git a/code/game/objects/structures/maintenance.dm b/code/game/objects/structures/maintenance.dm index acdf28353d6..e907a23cd67 100644 --- a/code/game/objects/structures/maintenance.dm +++ b/code/game/objects/structures/maintenance.dm @@ -9,7 +9,7 @@ at the cost of risking a vicious bite.**/ density = FALSE ///This var stores the hidden item that might be able to be retrieved from the trap var/obj/item/hidden_item - ///This var determines if there is a chance to recieve a bite when sticking your hand into the water. + ///This var determines if there is a chance to receive a bite when sticking your hand into the water. var/critter_infested = TRUE ///weighted loot table for what loot you can find inside the moisture trap. ///the actual loot isn't that great and should probably be improved and expanded later. diff --git a/code/modules/admin/sql_ban_system.dm b/code/modules/admin/sql_ban_system.dm index 163ae838149..e5b3756cfd4 100644 --- a/code/modules/admin/sql_ban_system.dm +++ b/code/modules/admin/sql_ban_system.dm @@ -136,7 +136,7 @@ /// Gets the ban cache of the passed in client /// If the cache has not been generated, we start off a query -/// If we still have a query going for this request, we just sleep until it's recieved back +/// If we still have a query going for this request, we just sleep until it's received back /proc/retrieve_ban_cache(client/player_client) if(QDELETED(player_client)) return diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index 6629ee50efd..529cf4d8a77 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -98,7 +98,7 @@ var/datum/admin_help/recipient_ticket = recipient?.current_ticket // Any past interactions with the recipient ticket var/datum/admin_help/recipient_interactions = recipient_ticket?.ticket_interactions - // Any opening interactions with the recipient ticket, IE: interactions started before the ticket first recieves a response + // Any opening interactions with the recipient ticket, IE: interactions started before the ticket first receives a response var/datum/admin_help/opening_interactions = recipient_ticket?.opening_responders // Our recipient's admin holder, if one exists var/datum/admins/recipient_holder = recipient?.holder diff --git a/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm b/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm index 9e4c698c787..7c4a61da09d 100644 --- a/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm @@ -111,7 +111,7 @@ /datum/heretic_knowledge/spell/star_blast name = "Star Blast" desc = "Fires a projectile that moves very slowly and creates cosmic fields on impact. \ - Anyone hit by the projectile will recieve burn damage, a knockdown, and give people in a three tile range a star mark." + Anyone hit by the projectile will receive burn damage, a knockdown, and give people in a three tile range a star mark." gain_text = "The Beast was behind me now at all times, with each sacrifice words of affirmation coursed through me." next_knowledge = list( /datum/heretic_knowledge/blade_upgrade/cosmic, @@ -128,7 +128,7 @@ desc = "Your blade now deals damage to people's organs through cosmic radiation. \ Your attacks will chain bonus damage to up to two previous victims. \ The combo is reset after two seconds without making an attack, \ - or if you attack someone already marked. If you combo more than four attacks you will recieve, \ + or if you attack someone already marked. If you combo more than four attacks you will receive, \ a cosmic trail and increase your combo timer up to ten seconds." gain_text = "The Beast took my blades in their hand, I kneeled and felt a sharp pain. \ The blades now glistened with fragmented power. I fell to the ground and wept at the beast's feet." diff --git a/code/modules/antagonists/heretic/magic/cosmic_expansion.dm b/code/modules/antagonists/heretic/magic/cosmic_expansion.dm index 2e0a353cf42..ad9ac0989b7 100644 --- a/code/modules/antagonists/heretic/magic/cosmic_expansion.dm +++ b/code/modules/antagonists/heretic/magic/cosmic_expansion.dm @@ -1,7 +1,7 @@ /datum/action/cooldown/spell/conjure/cosmic_expansion name = "Cosmic Expansion" desc = "This spell generates a 3x3 domain of cosmic fields. \ - Creatures up to 7 tiles away will also recieve a star mark." + Creatures up to 7 tiles away will also receive a star mark." background_icon_state = "bg_heretic" overlay_icon_state = "bg_heretic_border" button_icon = 'icons/mob/actions/actions_ecult.dmi' diff --git a/code/modules/antagonists/pirate/pirate_gangs.dm b/code/modules/antagonists/pirate/pirate_gangs.dm index 646a98ccdab..d3bc0968a12 100644 --- a/code/modules/antagonists/pirate/pirate_gangs.dm +++ b/code/modules/antagonists/pirate/pirate_gangs.dm @@ -27,7 +27,7 @@ GLOBAL_LIST_INIT(heavy_pirate_gangs, init_pirate_gangs(is_heavy = TRUE)) var/ship_template_id = "ERROR" ///the key to the json list of pirate names var/ship_name_pool = "some_json_key" - ///inbound message title the station recieves + ///inbound message title the station receives var/threat_title = "Pay away the Space Bugs" ///the contents of the message sent to the station. ///%SHIPNAME in the content will be replaced with the pirate ship's name diff --git a/code/modules/antagonists/traitor/objectives/final_objective/infect_ai.dm b/code/modules/antagonists/traitor/objectives/final_objective/infect_ai.dm index d0068e6bf8a..c8a4037d20a 100644 --- a/code/modules/antagonists/traitor/objectives/final_objective/infect_ai.dm +++ b/code/modules/antagonists/traitor/objectives/final_objective/infect_ai.dm @@ -3,7 +3,7 @@ description = "Infect the station AI with an experimental virus. Go to %AREA% to receive an infected law upload board \ and use it on the AI core or a law upload console." - ///area type the objective owner must be in to recieve the law upload module + ///area type the objective owner must be in to receive the law upload module var/area/board_area_pickup ///checker on whether we have sent the law upload module var/sent_board = FALSE diff --git a/code/modules/antagonists/traitor/objectives/final_objective/objective_dark_matteor.dm b/code/modules/antagonists/traitor/objectives/final_objective/objective_dark_matteor.dm index aa96ff0014d..6f68891bcfe 100644 --- a/code/modules/antagonists/traitor/objectives/final_objective/objective_dark_matteor.dm +++ b/code/modules/antagonists/traitor/objectives/final_objective/objective_dark_matteor.dm @@ -1,11 +1,11 @@ /datum/traitor_objective/ultimate/dark_matteor name = "Summon a dark matter singularity to consume the station." - description = "Go to %AREA%, and recieve the smuggled satellites + emag. Set up and emag the satellites, \ + description = "Go to %AREA%, and receive the smuggled satellites + emag. Set up and emag the satellites, \ after enough have been recalibrated by the emag, IT COMES. Warning: The dark matter singularity will hunt all creatures, you included." //this is a prototype so this progression is for all basic level kill objectives - ///area type the objective owner must be in to recieve the satellites + ///area type the objective owner must be in to receive the satellites var/area/satellites_spawnarea_type ///checker on whether we have sent the satellites yet. var/sent_satellites = FALSE @@ -43,7 +43,7 @@ return var/area/delivery_area = get_area(user) if(delivery_area.type != satellites_spawnarea_type) - to_chat(user, span_warning("You must be in [initial(satellites_spawnarea_type.name)] to recieve the smuggled satellites.")) + to_chat(user, span_warning("You must be in [initial(satellites_spawnarea_type.name)] to receive the smuggled satellites.")) return sent_satellites = TRUE podspawn(list( diff --git a/code/modules/antagonists/traitor/objectives/final_objective/romerol.dm b/code/modules/antagonists/traitor/objectives/final_objective/romerol.dm index 491c7977b0c..0bfa29f3f16 100644 --- a/code/modules/antagonists/traitor/objectives/final_objective/romerol.dm +++ b/code/modules/antagonists/traitor/objectives/final_objective/romerol.dm @@ -1,11 +1,11 @@ /datum/traitor_objective/ultimate/romerol name = "Spread the experimental bioterror agent Romerol by calling a droppod down at %AREA%" - description = "Go to %AREA%, and recieve the bioterror agent. Spread it to the crew, \ + description = "Go to %AREA%, and receive the bioterror agent. Spread it to the crew, \ and watch then raise from the dead as mindless killing machines. Warning: The undead will attack you too." //this is a prototype so this progression is for all basic level kill objectives - ///area type the objective owner must be in to recieve the romerol + ///area type the objective owner must be in to receive the romerol var/area/romerol_spawnarea_type ///checker on whether we have sent the romerol yet. var/sent_romerol = FALSE @@ -36,7 +36,7 @@ return var/area/delivery_area = get_area(user) if(delivery_area.type != romerol_spawnarea_type) - to_chat(user, span_warning("You must be in [initial(romerol_spawnarea_type.name)] to recieve the bioterror agent.")) + to_chat(user, span_warning("You must be in [initial(romerol_spawnarea_type.name)] to receive the bioterror agent.")) return sent_romerol = TRUE podspawn(list( diff --git a/code/modules/antagonists/traitor/objectives/final_objective/space_dragon.dm b/code/modules/antagonists/traitor/objectives/final_objective/space_dragon.dm index f5bdd176d87..dd4f4955a2a 100644 --- a/code/modules/antagonists/traitor/objectives/final_objective/space_dragon.dm +++ b/code/modules/antagonists/traitor/objectives/final_objective/space_dragon.dm @@ -1,13 +1,13 @@ /datum/traitor_objective/ultimate/space_dragon name = "Find a Space Carp and mutate their DNA with your own using a DNA harvester we will drop pod at %AREA%" - description = "Go to %AREA%, and recieve the Carp DNA scanner. Use it on any Space Carp to harvest its DNA. \ + description = "Go to %AREA%, and receive the Carp DNA scanner. Use it on any Space Carp to harvest its DNA. \ From there, use it on yourself, to mutate your own DNA with it and become a Space Dragon. \ Don't worry about finding one, I'm sure there'll have a wave of carp right when you need it." - ///Area type the objective owner must be in to recieve the DNA extractor. + ///Area type the objective owner must be in to receive the DNA extractor. var/area/dna_scanner_spawnarea_type ///Whether the DNA extraction kit was sent already. - var/recieved_dna_scanner = FALSE + var/received_dna_scanner = FALSE /datum/traitor_objective/ultimate/space_dragon/on_objective_taken(mob/user) . = ..() @@ -27,7 +27,7 @@ /datum/traitor_objective/ultimate/space_dragon/generate_ui_buttons(mob/user) var/list/buttons = list() - if(!recieved_dna_scanner) + if(!received_dna_scanner) buttons += add_ui_button("", "Pressing this will call down a pod with the DNA extraction kit.", "biohazard", "carp_dna") return buttons @@ -35,13 +35,13 @@ . = ..() switch(action) if("carp_dna") - if(recieved_dna_scanner) + if(received_dna_scanner) return var/area/delivery_area = get_area(user) if(delivery_area.type != dna_scanner_spawnarea_type) - to_chat(user, span_warning("You must be in [initial(dna_scanner_spawnarea_type.name)] to recieve the DNA extraction kit.")) + to_chat(user, span_warning("You must be in [initial(dna_scanner_spawnarea_type.name)] to receive the DNA extraction kit.")) return - recieved_dna_scanner = TRUE + received_dna_scanner = TRUE podspawn(list( "target" = get_turf(user), "style" = STYLE_SYNDICATE, diff --git a/code/modules/antagonists/traitor/objectives/final_objective/supermatter_cascade.dm b/code/modules/antagonists/traitor/objectives/final_objective/supermatter_cascade.dm index 8f21d9f1ea8..6c7dfaa2f09 100644 --- a/code/modules/antagonists/traitor/objectives/final_objective/supermatter_cascade.dm +++ b/code/modules/antagonists/traitor/objectives/final_objective/supermatter_cascade.dm @@ -3,7 +3,7 @@ description = "Destroy the station by causing a supermatter cascade. Go to %AREA% to retrieve the destabilizing crystal \ and use it on the supermatter." - ///area type the objective owner must be in to recieve the destabilizing crystal + ///area type the objective owner must be in to receive the destabilizing crystal var/area/dest_crystal_area_pickup ///checker on whether we have sent the crystal yet. var/sent_crystal = FALSE diff --git a/code/modules/clothing/spacesuits/_spacesuits.dm b/code/modules/clothing/spacesuits/_spacesuits.dm index 6912e3bed4f..513f7696a89 100644 --- a/code/modules/clothing/spacesuits/_spacesuits.dm +++ b/code/modules/clothing/spacesuits/_spacesuits.dm @@ -226,7 +226,7 @@ * Toggle the space suit's thermal regulator status... * Can't do it if it has no charge. * Arguments: - * * toggler - User mob who recieves the to_chat messages. + * * toggler - User mob who receives the to_chat messages. * * manual_toggle - If false get a differently-flavored message about it being disabled by itself */ /obj/item/clothing/suit/space/proc/toggle_spacesuit(mob/toggler, manual_toggle = TRUE) diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm index cd9a25ea37e..b1d7f764140 100644 --- a/code/modules/events/disease_outbreak.dm +++ b/code/modules/events/disease_outbreak.dm @@ -49,7 +49,7 @@ * Creates a list of people who are elligible to become disease carriers for the event * * Searches through the player list, adding anyone who is elligible to be a disease carrier for the event. This checks for - * whether or not the candidate is alive, a crewmember, is able to recieve a disease, and whether or not a disease is already present in them. + * whether or not the candidate is alive, a crewmember, is able to receive a disease, and whether or not a disease is already present in them. * This proc needs to be run at some point to ensure the event has candidates to infect. */ /datum/round_event_control/disease_outbreak/proc/generate_candidates() @@ -69,7 +69,7 @@ ///Handles checking and alerting admins about the number of valid candidates /datum/event_admin_setup/minimum_candidate_requirement/disease_outbreak - output_text = "There are no candidates eligible to recieve a disease!" + output_text = "There are no candidates eligible to receive a disease!" /datum/event_admin_setup/minimum_candidate_requirement/disease_outbreak/count_candidates() var/datum/round_event_control/disease_outbreak/disease_control = event_control diff --git a/code/modules/events/earthquake.dm b/code/modules/events/earthquake.dm index 4f20f26b93b..84945dc99f0 100644 --- a/code/modules/events/earthquake.dm +++ b/code/modules/events/earthquake.dm @@ -34,7 +34,7 @@ var/list/turfs_to_shred ///A list of turfs directly under turfs_to_shred, for creating a proper chasm to the floor below. var/list/underbelly = list() - ///The edges of our fault line, to recieve light damage. + ///The edges of our fault line, to receive light damage. var/list/edges = list() /datum/round_event/earthquake/setup() diff --git a/code/modules/events/heart_attack.dm b/code/modules/events/heart_attack.dm index f073676c5b4..a7a1740cbc7 100644 --- a/code/modules/events/heart_attack.dm +++ b/code/modules/events/heart_attack.dm @@ -24,7 +24,7 @@ * Performs initial analysis of which living players are eligible to be selected for a heart attack. * * Traverses player_list and checks entries against a series of reviews to see if they should even be considered for a heart attack, - * and at what weight should they be eligible to recieve it. The check for whether or not a heart attack should be "blocked" by something is done + * and at what weight should they be eligible to receive it. The check for whether or not a heart attack should be "blocked" by something is done * later, at the round_event level, so this proc mostly just checks users for whether or not a heart attack should be possible. */ /datum/round_event_control/heart_attack/proc/generate_candidates() @@ -63,7 +63,7 @@ * Picks a victim from a list and attempts to give them a heart attack * * Performs a pick_weight on a list of potential victims. Once selected, the "winner" - * will recieve heart disease. Returns TRUE if a heart attack is successfully given, and + * will receive heart disease. Returns TRUE if a heart attack is successfully given, and * FALSE if something blocks it. */ /datum/round_event/heart_attack/proc/attack_heart() @@ -86,7 +86,7 @@ return FALSE /datum/event_admin_setup/minimum_candidate_requirement/heart_attack - output_text = "There are no candidates eligible to recieve a heart attack!" + output_text = "There are no candidates eligible to receive a heart attack!" /datum/event_admin_setup/minimum_candidate_requirement/heart_attack/count_candidates() var/datum/round_event_control/heart_attack/heart_control = event_control diff --git a/code/modules/events/shuttle_loan/shuttle_loan_datum.dm b/code/modules/events/shuttle_loan/shuttle_loan_datum.dm index ae2ee44da1a..6c325e43da3 100644 --- a/code/modules/events/shuttle_loan/shuttle_loan_datum.dm +++ b/code/modules/events/shuttle_loan/shuttle_loan_datum.dm @@ -1,4 +1,4 @@ -/// One of the potential shuttle loans you might recieve. +/// One of the potential shuttle loans you might receive. /datum/shuttle_loan_situation /// Who sent the shuttle var/sender = "Centcom" diff --git a/code/modules/events/vent_clog.dm b/code/modules/events/vent_clog.dm index 70a7900ef8c..3a0b1b4c183 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -133,7 +133,7 @@ /** * Handles the production of our mob and adds it to our living_mobs list * - * Used by the vent clog random event to handle the spawning of mobs. The proc recieves the mob that will be spawned, + * Used by the vent clog random event to handle the spawning of mobs. The proc receives the mob that will be spawned, * and the event's current list of living mobs produced by the event so far. After checking if the vent is welded, the * new mob is created on the vent's turf, then added to the living_mobs list. */ diff --git a/code/modules/explorer_drone/exploration_events/resource.dm b/code/modules/explorer_drone/exploration_events/resource.dm index 2264bc6bd48..3d4fc926517 100644 --- a/code/modules/explorer_drone/exploration_events/resource.dm +++ b/code/modules/explorer_drone/exploration_events/resource.dm @@ -215,7 +215,7 @@ description = "You meet an inhabitant of this site, looking ragged and clearly agitated about something." no_tool_description = "You can't tell what it's trying to convey without a translator." has_tool_description = "Your best translation dictates that it would like to share its hobby with you!" - success_log = "Recieved a gift from a stranger." + success_log = "Received a gift from a stranger." delay_message = "Enduring..." action_text = "Accept gift." loot_type = /obj/item/cardpack/series_one diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm index 0d8e57f13eb..b60623526ba 100644 --- a/code/modules/jobs/job_types/_job.dm +++ b/code/modules/jobs/job_types/_job.dm @@ -71,7 +71,7 @@ var/display_order = JOB_DISPLAY_ORDER_DEFAULT - ///What types of bounty tasks can this job recieve past the default? + ///What types of bounty tasks can this job receive past the default? var/bounty_types = CIV_JOB_BASIC /// Goodies that can be received via the mail system. diff --git a/code/modules/mafia/map_pieces.dm b/code/modules/mafia/map_pieces.dm index f3a6baced78..2d62126466a 100644 --- a/code/modules/mafia/map_pieces.dm +++ b/code/modules/mafia/map_pieces.dm @@ -79,7 +79,7 @@ /datum/map_template/mafia/snowy name = "Snowdin" - description = "Based off of the icy moon map of the same name, the guy who reworked it did a good enough job to recieve a derivative piece of work based on it. Cool!" + description = "Based off of the icy moon map of the same name, the guy who reworked it did a good enough job to receive a derivative piece of work based on it. Cool!" map_suffix = "mafia_snow.dmm" custom_outfit = /datum/outfit/mafia/snowy diff --git a/code/modules/meteors/meteor_spawning.dm b/code/modules/meteors/meteor_spawning.dm index 97c359d03bf..d19d3aff0a5 100644 --- a/code/modules/meteors/meteor_spawning.dm +++ b/code/modules/meteors/meteor_spawning.dm @@ -68,7 +68,7 @@ . = locate(endx, endy, Z) /** - * Recieves a mob candidate, transforms them into a changeling, and hurls them at the station inside of a changeling meteor + * Receives a mob candidate, transforms them into a changeling, and hurls them at the station inside of a changeling meteor * * Takes a given candidate and turns them into a changeling, generates a changeling meteor, and throws it at the station. * Returns the changeling generated by the event, NOT the meteor. This is so that it plays nicely with the dynamic ruleset diff --git a/code/modules/meteors/meteor_types.dm b/code/modules/meteors/meteor_types.dm index b258196ed24..c59a153b022 100644 --- a/code/modules/meteors/meteor_types.dm +++ b/code/modules/meteors/meteor_types.dm @@ -144,9 +144,9 @@ M.playsound_local(src.loc, null, 50, 1, random_frequency, 10, sound_to_use = meteor_sound) /** - * Used to check if someone who has examined a meteor will recieve an award. + * Used to check if someone who has examined a meteor will receive an award. * - * Checks the criteria to recieve the "examine a meteor" award. + * Checks the criteria to receive the "examine a meteor" award. * Admin spawned meteors will not grant the user an achievement. * * Arguments: diff --git a/code/modules/mob/living/basic/lavaland/bileworm/bileworm_actions.dm b/code/modules/mob/living/basic/lavaland/bileworm/bileworm_actions.dm index 9c5e2697f63..7993fe74a3f 100644 --- a/code/modules/mob/living/basic/lavaland/bileworm/bileworm_actions.dm +++ b/code/modules/mob/living/basic/lavaland/bileworm/bileworm_actions.dm @@ -120,5 +120,5 @@ devourer.visible_message(span_warning("[devourer] consumes [target]!")) devourer.fully_heal() playsound(devourer, 'sound/effects/splat.ogg', 50, TRUE) - //to be recieved on death + //to be received on death target.forceMove(devourer) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index dd40b8ac333..3b5341047a8 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1671,7 +1671,7 @@ GLOBAL_LIST_EMPTY(fire_appearances) /mob/living/proc/set_fire_stacks(stacks, fire_type = /datum/status_effect/fire_handler/fire_stacks, remove_wet_stacks = TRUE) if(stacks < 0) //Shouldn't happen, ever - CRASH("set_fire_stacks recieved negative [stacks] fire stacks") + CRASH("set_fire_stacks received negative [stacks] fire stacks") if(remove_wet_stacks) remove_status_effect(/datum/status_effect/fire_handler/wet_stacks) @@ -1684,7 +1684,7 @@ GLOBAL_LIST_EMPTY(fire_appearances) /mob/living/proc/set_wet_stacks(stacks, wet_type = /datum/status_effect/fire_handler/wet_stacks, remove_fire_stacks = TRUE) if(stacks < 0) - CRASH("set_wet_stacks recieved negative [stacks] wet stacks") + CRASH("set_wet_stacks received negative [stacks] wet stacks") if(remove_fire_stacks) remove_status_effect(/datum/status_effect/fire_handler/fire_stacks) diff --git a/code/modules/mob_spawn/ghost_roles/fugitive_hunter_roles.dm b/code/modules/mob_spawn/ghost_roles/fugitive_hunter_roles.dm index 2df27efdf84..5b9e043349e 100644 --- a/code/modules/mob_spawn/ghost_roles/fugitive_hunter_roles.dm +++ b/code/modules/mob_spawn/ghost_roles/fugitive_hunter_roles.dm @@ -76,7 +76,7 @@ prompt_name = "a psyker" you_are_text = "Ahahaha! I am a Psyker Shikari!" flavour_text = "Man, waking up from a gorenap always BLOWS. Finding dealers in this sector of space is always difficult, but \ - we've recieved an offer that might set us up for life! Kidnap some fugitives and get FREE GORE!" + we've received an offer that might set us up for life! Kidnap some fugitives and get FREE GORE!" back_story = HUNTER_PACK_PSYKER outfit = /datum/outfit/psyker diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm index 895da54bf37..351cd2aa757 100644 --- a/code/modules/modular_computers/computers/item/computer.dm +++ b/code/modules/modular_computers/computers/item/computer.dm @@ -30,7 +30,7 @@ ///List of stored files on this drive. Use `store_file` and `remove_file` instead of modifying directly! var/list/datum/computer_file/stored_files = list() - ///Non-static list of programs the computer should recieve on Initialize. + ///Non-static list of programs the computer should receive on Initialize. var/list/datum/computer_file/starting_programs = list() ///Static list of default programs that come with ALL computers, here so computers don't have to repeat this. var/static/list/datum/computer_file/default_programs = list( diff --git a/code/modules/pai/pai.dm b/code/modules/pai/pai.dm index 3c0a1bfb82c..da7684794bb 100644 --- a/code/modules/pai/pai.dm +++ b/code/modules/pai/pai.dm @@ -31,7 +31,7 @@ /// If someone has enabled/disabled the pAIs ability to holo var/can_holo = TRUE - /// Whether this pAI can recieve radio messages + /// Whether this pAI can receive radio messages var/can_receive = TRUE /// Whether this pAI can transmit radio messages var/can_transmit = TRUE diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index 548c3a52b57..9680f829411 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -196,10 +196,10 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( paying_for_this = spawning_order.paying_account if(spawning_order.pack.goody) LAZYADD(goodies_by_buyer[spawning_order.paying_account], spawning_order) - var/reciever_message = "Cargo order #[spawning_order.id] has shipped." + var/receiver_message = "Cargo order #[spawning_order.id] has shipped." if(spawning_order.charge_on_purchase) - reciever_message += " [price] credits have been charged to your bank account" - paying_for_this.bank_card_talk(reciever_message) + receiver_message += " [price] credits have been charged to your bank account" + paying_for_this.bank_card_talk(receiver_message) SSeconomy.track_purchase(paying_for_this, price, spawning_order.pack.name) var/datum/bank_account/department/cargo = SSeconomy.get_dep_account(ACCOUNT_CAR) cargo.adjust_money(price - pack_cost) //Cargo gets the handling fee @@ -307,7 +307,7 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( /* Generates a box of mail depending on our exports and imports. Applied in the cargo shuttle sending/arriving, by building the crate if the round is ready to introduce mail based on the economy subsystem. - Then, fills the mail crate with mail, by picking applicable crew who can recieve mail at the time to sending. + Then, fills the mail crate with mail, by picking applicable crew who can receive mail at the time to sending. */ /obj/docking_port/mobile/supply/proc/create_mail() //Early return if there's no mail waiting to prevent taking up a slot. We also don't send mails on sundays or holidays. diff --git a/code/modules/spells/spell_types/jaunt/shadow_walk.dm b/code/modules/spells/spell_types/jaunt/shadow_walk.dm index de03f8e15e0..c5a47cd1740 100644 --- a/code/modules/spells/spell_types/jaunt/shadow_walk.dm +++ b/code/modules/spells/spell_types/jaunt/shadow_walk.dm @@ -59,7 +59,7 @@ var/healing_rate = 1.5 /// When cooldown is active, you are prevented from moving into tiles that would eject you from your jaunt COOLDOWN_DECLARE(light_step_cooldown) - /// Has the jaunter recently recieved a warning about light? + /// Has the jaunter recently received a warning about light? var/light_alert_given = FALSE /obj/effect/dummy/phased_mob/shadow/Initialize(mapload) @@ -125,7 +125,7 @@ return light_turf.get_lumcount() > light_max // jaunt ends on TRUE /** - * Checks if the user should recieve a warning that they're moving into light. + * Checks if the user should receive a warning that they're moving into light. * * Checks the cooldown for the warning message on moving into the light. * If the message has been displayed, and the cooldown (delay period) is complete, returns TRUE. diff --git a/code/modules/spells/spell_types/touch/scream_for_me.dm b/code/modules/spells/spell_types/touch/scream_for_me.dm index 231b6927e50..d3c142d7039 100644 --- a/code/modules/spells/spell_types/touch/scream_for_me.dm +++ b/code/modules/spells/spell_types/touch/scream_for_me.dm @@ -2,7 +2,7 @@ /datum/action/cooldown/spell/touch/scream_for_me name = "Scream For Me" desc = "This wicked spell inflicts many severe wounds on your target, causing them to \ - likely bleed to death unless they recieve immediate medical attention." + likely bleed to death unless they receive immediate medical attention." button_icon_state = "scream_for_me" sound = null //trust me, you'll hear their wounds diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm b/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm index 682aa3b43a9..2c14c91dbd5 100644 --- a/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm +++ b/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm @@ -325,7 +325,7 @@ if(!istype(potential_flash, /obj/item/assembly/flash/armimplant)) continue var/obj/item/assembly/flash/armimplant/flash = potential_flash - flash.arm = WEAKREF(src) + flash.arm = WEAKREF(src) /obj/item/organ/internal/cyberimp/arm/surgery name = "surgical toolset implant" @@ -378,10 +378,10 @@ ///How long will the implant malfunction if it is EMP'd var/emp_base_duration = 9 SECONDS -/obj/item/organ/internal/cyberimp/arm/muscle/Insert(mob/living/carbon/reciever, special = FALSE, drop_if_replaced = TRUE) +/obj/item/organ/internal/cyberimp/arm/muscle/Insert(mob/living/carbon/receiver, special = FALSE, drop_if_replaced = TRUE) . = ..() - if(ishuman(reciever)) //Sorry, only humans - RegisterSignal(reciever, COMSIG_LIVING_EARLY_UNARMED_ATTACK, PROC_REF(on_attack_hand)) + if(ishuman(receiver)) //Sorry, only humans + RegisterSignal(receiver, COMSIG_LIVING_EARLY_UNARMED_ATTACK, PROC_REF(on_attack_hand)) /obj/item/organ/internal/cyberimp/arm/muscle/Remove(mob/living/carbon/implant_owner, special = 0) . = ..() diff --git a/code/modules/surgery/organs/internal/liver/_liver.dm b/code/modules/surgery/organs/internal/liver/_liver.dm index 7baeb04b8b6..28f74d9cf52 100644 --- a/code/modules/surgery/organs/internal/liver/_liver.dm +++ b/code/modules/surgery/organs/internal/liver/_liver.dm @@ -1,7 +1,7 @@ #define LIVER_DEFAULT_TOX_TOLERANCE 3 //amount of toxins the liver can filter out #define LIVER_DEFAULT_TOX_RESISTANCE 1 //lower values lower how harmful toxins are to the liver #define LIVER_FAILURE_STAGE_SECONDS 180 //amount of seconds before liver failure reaches a new stage // SKYRAT EDIT CHANGE - Original: 60 -#define MAX_TOXIN_LIVER_DAMAGE 2 //the max damage the liver can recieve per second (~1 min at max damage will destroy liver) +#define MAX_TOXIN_LIVER_DAMAGE 2 //the max damage the liver can receive per second (~1 min at max damage will destroy liver) /obj/item/organ/internal/liver name = "liver" diff --git a/code/modules/tgchat/README.md b/code/modules/tgchat/README.md index 95f28ae0e8c..71acb47c458 100644 --- a/code/modules/tgchat/README.md +++ b/code/modules/tgchat/README.md @@ -19,11 +19,11 @@ TgChat handles sending messages from the server to the client through the use of ### Reliability -In the past there have been issues where BYOND will silently and without reason lose a message we sent to the client, to detect this and recover from it seamlessly TgChat also has a baked in reliability layer. This reliability layer is very primitive, and simply keeps track of recieved sequence numbers. Should the client recieve an unexpected sequence number TgChat asks the server to resend any missing packets. +In the past there have been issues where BYOND will silently and without reason lose a message we sent to the client, to detect this and recover from it seamlessly TgChat also has a baked in reliability layer. This reliability layer is very primitive, and simply keeps track of received sequence numbers. Should the client receive an unexpected sequence number TgChat asks the server to resend any missing packets. ### Ping System -TgChat supports a round trip time ping measurement, which is displayed to the client so they can know how long it takes for their commands and inputs to reach the server. This is done by sending the client a ping request, `ping/soft`, which tells the client to send a ping to the server. When the server recieves said ping it sends a reply, `ping/reply`, to the client with a payload containing the current DateTime which the client can reference against the initial ping request. +TgChat supports a round trip time ping measurement, which is displayed to the client so they can know how long it takes for their commands and inputs to reach the server. This is done by sending the client a ping request, `ping/soft`, which tells the client to send a ping to the server. When the server receives said ping it sends a reply, `ping/reply`, to the client with a payload containing the current DateTime which the client can reference against the initial ping request. ### Chat Tabs, Local Storage, and Highlighting diff --git a/code/modules/unit_tests/mecha_damage.dm b/code/modules/unit_tests/mecha_damage.dm index 55081e9365c..695f7c4b53d 100644 --- a/code/modules/unit_tests/mecha_damage.dm +++ b/code/modules/unit_tests/mecha_damage.dm @@ -85,4 +85,4 @@ TEST_ASSERT(post_hit_health < pre_integrity, "[checking] was [hit_by_phrase], but didn't take any damage.") var/damage_taken = round(pre_integrity - post_hit_health, DAMAGE_PRECISION) - TEST_ASSERT_EQUAL(damage_taken, expected_damage, "[checking] didn't take the expected amount of damage when [hit_by_phrase]. (Expected damage: [expected_damage], recieved damage: [damage_taken])") + TEST_ASSERT_EQUAL(damage_taken, expected_damage, "[checking] didn't take the expected amount of damage when [hit_by_phrase]. (Expected damage: [expected_damage], received damage: [damage_taken])") diff --git a/code/modules/uplink/uplink_items/clownops.dm b/code/modules/uplink/uplink_items/clownops.dm index 84cf0ea3c51..bbb597d2fa8 100644 --- a/code/modules/uplink/uplink_items/clownops.dm +++ b/code/modules/uplink/uplink_items/clownops.dm @@ -127,7 +127,7 @@ /datum/uplink_item/reinforcement/monkey_supplies name = "Simian Agent Supplies" desc = "Sometimes you need a bit more firepower than a rabid monkey. Such as a rabid, armed monkey! \ - Monkeys can unpack this kit to recieve a bag with a bargain-bin gun, ammunition, and some miscellaneous supplies." + Monkeys can unpack this kit to receive a bag with a bargain-bin gun, ammunition, and some miscellaneous supplies." item = /obj/item/storage/toolbox/guncase/monkeycase cost = 4 purchasable_from = UPLINK_CLOWN_OPS diff --git a/code/modules/uplink/uplink_items/job.dm b/code/modules/uplink/uplink_items/job.dm index 2073024a962..2467cd35a35 100644 --- a/code/modules/uplink/uplink_items/job.dm +++ b/code/modules/uplink/uplink_items/job.dm @@ -365,7 +365,7 @@ /datum/uplink_item/role_restricted/monkey_supplies name = "Simian Agent Supplies" desc = "Sometimes you need a bit more firepower than a rabid monkey. Such as a rabid, armed monkey! \ - Monkeys can unpack this kit to recieve a bag with a bargain-bin gun, ammunition, and some miscellaneous supplies." + Monkeys can unpack this kit to receive a bag with a bargain-bin gun, ammunition, and some miscellaneous supplies." item = /obj/item/storage/toolbox/guncase/monkeycase cost = 4 limited_stock = 3 diff --git a/code/modules/uplink/uplink_items/nukeops.dm b/code/modules/uplink/uplink_items/nukeops.dm index df7fd7c5f2d..4c8a47c9f48 100644 --- a/code/modules/uplink/uplink_items/nukeops.dm +++ b/code/modules/uplink/uplink_items/nukeops.dm @@ -704,7 +704,7 @@ /datum/uplink_item/implants/nuclear/deathrattle name = "Box of Deathrattle Implants" desc = "A collection of implants (and one reusable implanter) that should be injected into the team. When one of the team \ - dies, all other implant holders recieve a mental message informing them of their teammates' name \ + dies, all other implant holders receive a mental message informing them of their teammates' name \ and the location of their death. Unlike most implants, these are designed to be implanted \ in any creature, biological or mechanical." item = /obj/item/storage/box/syndie_kit/imp_deathrattle diff --git a/code/modules/vehicles/mecha/_mecha.dm b/code/modules/vehicles/mecha/_mecha.dm index 2323eb942e4..5dcb5e64e06 100644 --- a/code/modules/vehicles/mecha/_mecha.dm +++ b/code/modules/vehicles/mecha/_mecha.dm @@ -10,7 +10,7 @@ * AI also has special checks becaus it gets in and out of the mech differently * Always call remove_occupant(mob) when leaving the mech so the mob is removed properly * - * For multi-crew, you need to set how the occupants recieve ability bitflags corresponding to their status on the vehicle(i.e: driver, gunner etc) + * For multi-crew, you need to set how the occupants receive ability bitflags corresponding to their status on the vehicle(i.e: driver, gunner etc) * Abilities can then be set to only apply for certain bitflags and are assigned as such automatically * * Clicks are wither translated into mech_melee_attack (see mech_melee_attack.dm) diff --git a/code/modules/wiremod/components/bci/thought_listener.dm b/code/modules/wiremod/components/bci/thought_listener.dm index 53d50f9c54b..ae6889e2da9 100644 --- a/code/modules/wiremod/components/bci/thought_listener.dm +++ b/code/modules/wiremod/components/bci/thought_listener.dm @@ -26,7 +26,7 @@ /obj/item/circuit_component/thought_listener/populate_ports() input_name = add_input_port("Input Name", PORT_TYPE_STRING) input_desc = add_input_port("Input Description", PORT_TYPE_STRING) - output = add_output_port("Recieved Thought", PORT_TYPE_STRING) + output = add_output_port("Received Thought", PORT_TYPE_STRING) trigger_output = add_output_port("Triggered", PORT_TYPE_SIGNAL) failure = add_output_port("On Failure", PORT_TYPE_SIGNAL) diff --git a/strings/junkmail.txt b/strings/junkmail.txt index 722e22166a5..b01ac4b8983 100644 --- a/strings/junkmail.txt +++ b/strings/junkmail.txt @@ -30,7 +30,7 @@ I don't really get the over-reliance on security. Basically sec claims day 1 and Sending mail is my life. I die for my postal office. It's some real shit. I meet the love of my life here, I mature, it's part of the Sending Mail grindset. 🗣️💯 TFW NO QT3.14 JANIBORG GF THAT HELPS YOU PICK UP TRASH AROUND YOUR HOUSE TO INCINERATE IT WHILE TRACKING SAID GARBAGE WITHIN THE HOUSE AND SCRATCHING OUT THE NAMES AND REMOVING THE STICKY GLUE BETWEEN TWO DIFFERENT PIECES OF GARBAGE CONTAINED TOGETHER OH MY GOD I'M LITERALLY GOING TO FUCKING SPASM OUT AND DIE I NEED ONE!!! Hello this is the Captain of your neighboring Nanotrasen Space Vessel, I seem to have lost my Golden Captain's Identification Card, if you would be so kind as to mail me one of your spares so I can perform my duties, I would be forever grateful. My address is 122. Space Destroit, HA16LU, thanks again! -Are YOU missing Mining equipment? You've read just the poster, we are giving away FREE mining equipment. That's right, FREE! All you have to do is subscribe to our newsletter and place the order for our Shaft Mining Starting Crate, and you will recieve your FREE mining equipment! Don't lose out on this once in a lifetime deal for FREE equipment! (Terms and Conditions may apply, fees for delivery is not paid for by AntiMech-Miners TD) +Are YOU missing Mining equipment? You've read just the poster, we are giving away FREE mining equipment. That's right, FREE! All you have to do is subscribe to our newsletter and place the order for our Shaft Mining Starting Crate, and you will receive your FREE mining equipment! Don't lose out on this once in a lifetime deal for FREE equipment! (Terms and Conditions may apply, fees for delivery is not paid for by AntiMech-Miners TD) We've been trying to reach you concerning your cargo shuttle's extended warranty. You should've received a notice in the mail about your cargo shuttle's extended warranty eligibility. Since we've not gotten a response, we're giving you a final courtesy call before we close out your file. Respond back 'BLOCK' to be removed and placed on our do-not-mail list. To speak to someone about possibly extending or reinstating your cargo shuttle's warranty, mail back your response ASAP to get in contact with a cargo specialist. Did you know you have rights? Space Law says you do, and so do I! Hi, I'm Chester McGoodman, I believe that until proven guilty, every assistant, engineer, and captain on this station is innocent. That's why I fight for you, Nanotrasen! Better Letter Chester! COUPON: 30% OFF NEXT PURCHASE OF SHIP FLYING INTO THE SUN diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/antagonists/antagonists/changelingmidround.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/antagonists/antagonists/changelingmidround.ts index 70d36a704f1..733b9cdda3f 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/antagonists/antagonists/changelingmidround.ts +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/antagonists/antagonists/changelingmidround.ts @@ -7,7 +7,7 @@ const ChangelingMidround: Antagonist = { name: 'Space Changeling', description: [ multiline` - A midround changeling does not recieve a crew identity, instead arriving + A midround changeling does not receive a crew identity, instead arriving from space. This will be more difficult than being a round-start changeling! `, CHANGELING_MECHANICAL_DESCRIPTION, diff --git a/tgui/packages/tgui/interfaces/SyndContractor.jsx b/tgui/packages/tgui/interfaces/SyndContractor.jsx index 58d89fc7179..b50d5fbfb50 100644 --- a/tgui/packages/tgui/interfaces/SyndContractor.jsx +++ b/tgui/packages/tgui/interfaces/SyndContractor.jsx @@ -109,7 +109,7 @@ export const SyndContractorContent = (props, context) => { 'a specialised extraction unit to put the body into.', '', 'We want targets alive - but we will sometimes pay slight', - "amounts if they're not, you just won't recieve the shown", + "amounts if they're not, you just won't receive the shown", 'bonus. You can redeem your payment through this uplink in', 'the form of raw telecrystals, which can be put into your', 'regular Syndicate uplink to purchase whatever you may need.', diff --git a/tools/HubMigrator/HubMigrator.dm b/tools/HubMigrator/HubMigrator.dm index fb2304f003c..fd746f8d6d9 100644 --- a/tools/HubMigrator/HubMigrator.dm +++ b/tools/HubMigrator/HubMigrator.dm @@ -105,8 +105,8 @@ var/data = file2text(result["CONTENT"]) var/regex/page_info = regex(@"page = (\d*)") page_info.Find(data) - var/recieved_page = text2num(page_info.group[1]) - if(recieved_page != requested_page) //out of entries + var/received_page = text2num(page_info.group[1]) + if(received_page != requested_page) //out of entries break else requested_page++ @@ -127,12 +127,12 @@ var/list/scores_data = list() for(var/score in valid_scores) - var/recieved_count = 0 + var/received_count = 0 while(1) - world << "Fetching [score] scores, offset :[recieved_count] of [score]" - var/list/batch = params2list(world.GetScores(giant_list_of_ckeys.len,recieved_count,score,hub_address,hub_password)) + world << "Fetching [score] scores, offset :[received_count] of [score]" + var/list/batch = params2list(world.GetScores(giant_list_of_ckeys.len,received_count,score,hub_address,hub_password)) world << "Fetched [batch.len] scores for [score]." - recieved_count += batch.len + received_count += batch.len if(!batch.len) break for(var/value in batch) diff --git a/tools/WebhookProcessor/github_webhook_processor.php b/tools/WebhookProcessor/github_webhook_processor.php index 99031ed37b2..0aea0a6cc69 100644 --- a/tools/WebhookProcessor/github_webhook_processor.php +++ b/tools/WebhookProcessor/github_webhook_processor.php @@ -806,7 +806,7 @@ function game_server_send($addr, $port, $str) { $bytessent += $result; } - /* --- Idle for a while until recieved bytes from game server --- */ + /* --- Idle for a while until received bytes from game server --- */ $result = socket_read($server, 10000, PHP_BINARY_READ); socket_close($server); // we don't need this anymore diff --git a/tools/minibot/minibot.py b/tools/minibot/minibot.py index 92192c0264c..743e563170e 100644 --- a/tools/minibot/minibot.py +++ b/tools/minibot/minibot.py @@ -149,7 +149,7 @@ def irc_handler(): def signal_handler(signum, frame): global irc, running, con_attempts, logger - logger.info("Recieved term kill, closing") + logger.info("Received term kill, closing") running = False if __name__ == "__main__": From 3aeff0017894417e55c53bdbb203fa8e4d58460a Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Sun, 3 Dec 2023 21:56:34 +0300 Subject: [PATCH 24/61] New Derelict Station (Babylon Station 13) (#25061) (#841) * new derelict drone ruin * that is a part of a different pr * some small changes * second pass of change * its ready * lints are good * make sure they are called drones for babylon, not ks13 * Update modular_skyrat/modules/drone_adjustments/drone.dm * some suggestions * suggestions * solars are less wired * more damaged * machine frames --------- Co-authored-by: jjpark-kb <55967837+jjpark-kb@users.noreply.github.com> Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com> --- .../SpaceRuins/skyrat/drones_derelict.dmm | 9974 +++++++++++++++++ config/spaceruinblacklist.txt | 1 + .../modules/drone_adjustments/drone.dm | 27 + .../modules/drones_derelict/code/areas.dm | 72 + .../modules/drones_derelict/code/space.dm | 6 + .../modules/drones_derelict/icons/areas.dmi | Bin 0 -> 694 bytes tgstation.dme | 2 + 7 files changed, 10082 insertions(+) create mode 100644 _maps/RandomRuins/SpaceRuins/skyrat/drones_derelict.dmm create mode 100644 modular_skyrat/modules/drones_derelict/code/areas.dm create mode 100644 modular_skyrat/modules/drones_derelict/code/space.dm create mode 100644 modular_skyrat/modules/drones_derelict/icons/areas.dmi diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/drones_derelict.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/drones_derelict.dmm new file mode 100644 index 00000000000..31882f000e8 --- /dev/null +++ b/_maps/RandomRuins/SpaceRuins/skyrat/drones_derelict.dmm @@ -0,0 +1,9974 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ad" = ( +/obj/structure/frame/machine, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"ae" = ( +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"ag" = ( +/obj/structure/grille/broken, +/obj/item/shard/plasma, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"aj" = ( +/obj/structure/lattice, +/obj/structure/girder/reinforced, +/turf/template_noop, +/area/ruin/space/bb13/engineering/atmos) +"al" = ( +/obj/structure/girder, +/turf/template_noop, +/area/ruin/space/bb13/engineering/s_solars_control) +"ar" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"ax" = ( +/obj/structure/door_assembly/door_assembly_med, +/obj/item/stack/cable_coil/cut, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"aE" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/ruin/space/bb13/research/toxins) +"aH" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"aI" = ( +/obj/structure/rack, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"aJ" = ( +/obj/machinery/portable_atmospherics/canister/plasma, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"aQ" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/research/toxins) +"aX" = ( +/turf/closed/wall, +/area/ruin/space/bb13/service/botany) +"aZ" = ( +/obj/machinery/mass_driver/chapelgun{ + dir = 8 + }, +/obj/structure/closet/crate/coffin, +/obj/machinery/door/window/right/directional/east, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/chapel) +"bb" = ( +/obj/machinery/light/small/directional/north, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/kitchen) +"bf" = ( +/turf/closed/wall, +/area/ruin/space/bb13/medical) +"bj" = ( +/obj/structure/frame/machine/secured, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/botany) +"bk" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/light/small/directional/west, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"bs" = ( +/obj/structure/closet/crate/bin, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"bw" = ( +/turf/template_noop, +/area/ruin/space/bb13/engineering/sec_eng) +"bB" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/bluespace_crystal, +/obj/item/stack/sheet/bluespace_crystal, +/obj/item/stack/sheet/bluespace_crystal, +/obj/item/language_manual/dronespeak_manual, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/vault) +"bK" = ( +/obj/structure/lattice, +/obj/item/stack/cable_coil/cut, +/turf/template_noop, +/area/ruin/space/bb13/security) +"bN" = ( +/obj/machinery/door/airlock, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/kitchen) +"bQ" = ( +/turf/template_noop, +/area/ruin/space/bb13/engineering/atmos) +"bR" = ( +/obj/structure/door_assembly/door_assembly_eng, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"cc" = ( +/obj/structure/cable, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"cd" = ( +/obj/structure/lattice, +/obj/item/tank/internals/oxygen, +/turf/template_noop, +/area/ruin/space/bb13/engineering/engine) +"cg" = ( +/obj/structure/table_frame, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"ci" = ( +/obj/structure/frame/machine, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/kitchen) +"ck" = ( +/obj/machinery/light/small/directional/north, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"cq" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"cJ" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research/toxins) +"cM" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/template_noop, +/area/space/nearstation) +"di" = ( +/obj/item/tank/internals/plasma/full, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"ds" = ( +/obj/structure/cable, +/obj/machinery/power/smes, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"dt" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/no_charge, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/chapel) +"dw" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"dy" = ( +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"dz" = ( +/obj/machinery/light/small/directional/east, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/security) +"dB" = ( +/obj/item/clothing/head/helmet/space/eva, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"dR" = ( +/obj/structure/lattice, +/obj/machinery/light/small/directional/west, +/turf/template_noop, +/area/ruin/space/bb13/research) +"dT" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"dV" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/bridge) +"dY" = ( +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/botany) +"dZ" = ( +/obj/structure/table_frame, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service) +"eb" = ( +/obj/machinery/door/airlock, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/botany) +"ei" = ( +/obj/item/shard, +/obj/item/shard, +/obj/structure/grille/broken, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical/genetics) +"em" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/hallway) +"en" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/medical) +"eC" = ( +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"eD" = ( +/obj/effect/spawner/random/structure/crate_abandoned, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"eI" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1 + }, +/turf/template_noop, +/area/ruin/space/bb13/engineering/atmos) +"eK" = ( +/obj/structure/table, +/obj/structure/frame/machine, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"eS" = ( +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"fa" = ( +/obj/structure/table_frame, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"fe" = ( +/obj/item/shard, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"fj" = ( +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/atmos) +"fl" = ( +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/vault) +"fr" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"fv" = ( +/obj/machinery/door/airlock/maintenance, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"fy" = ( +/obj/item/reagent_containers/cup/beaker/large, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/kitchen) +"fE" = ( +/obj/structure/lattice/catwalk, +/turf/template_noop, +/area/ruin/space/bb13/engineering/n_solars_control) +"fH" = ( +/obj/structure/table_frame, +/obj/effect/spawner/random/engineering/tool, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"fM" = ( +/obj/structure/frame/machine/secured, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"fQ" = ( +/obj/structure/closet/crate/bin, +/obj/item/slime_extract/grey, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"fR" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/chapel) +"fT" = ( +/obj/structure/reagent_dispensers/watertank/high, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/botany) +"fW" = ( +/obj/effect/decal/remains/human, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"fY" = ( +/obj/structure/table, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical) +"gb" = ( +/obj/item/kirbyplants/random/dead, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"ge" = ( +/obj/structure/girder/reinforced, +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/engineering/sec_eng) +"gp" = ( +/obj/structure/girder, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/botany) +"gB" = ( +/obj/structure/grille/broken, +/obj/item/shard, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/bridge) +"gF" = ( +/obj/structure/lattice, +/obj/item/stack/cable_coil/five, +/turf/template_noop, +/area/ruin/space/bb13/engineering/atmos) +"gK" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/wood/airless, +/area/ruin/space/bb13/bridge) +"gM" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/machinery/vending/sovietsoda, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"gN" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"gU" = ( +/obj/item/shard/plasma, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"gX" = ( +/obj/structure/frame/machine/secured, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"ha" = ( +/obj/structure/frame/machine/secured, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"hc" = ( +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/engineering/atmos) +"hm" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"ho" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/frame/machine/secured, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"hv" = ( +/obj/structure/frame/computer{ + anchored = 1; + dir = 1 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/bridge) +"hC" = ( +/obj/machinery/door/airlock/external, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"hH" = ( +/turf/template_noop, +/area/ruin/space/bb13/engineering/n_solars_control) +"hM" = ( +/turf/open/floor/wood/airless, +/area/ruin/space/bb13/service/chapel) +"hO" = ( +/obj/structure/girder/reinforced, +/turf/template_noop, +/area/ruin/space/bb13/engineering/engine) +"hS" = ( +/obj/structure/table, +/obj/machinery/door/window/right/directional/east, +/obj/machinery/door/window/right/directional/west, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/botany) +"hZ" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"id" = ( +/turf/template_noop, +/area/ruin/space/bb13/research) +"ie" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"ih" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"ii" = ( +/obj/structure/closet/crate, +/obj/structure/lattice, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/turf/template_noop, +/area/space/nearstation) +"ip" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8 + }, +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/research/toxins) +"iq" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"is" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/security) +"it" = ( +/obj/machinery/sleeper{ + dir = 8 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"iz" = ( +/obj/structure/frame/machine, +/obj/structure/lattice, +/turf/template_noop, +/area/space/nearstation) +"iB" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4 + }, +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/research/toxins) +"iD" = ( +/obj/effect/mob_spawn/ghost_role/drone/derelict/babylon, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"iF" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"iJ" = ( +/obj/item/stack/cable_coil/cut, +/turf/template_noop, +/area/ruin/space/bb13/hallway/central) +"iM" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/mapping_helpers/apc/no_charge, +/obj/effect/mapping_helpers/apc/unlocked, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"iO" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"iQ" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/machinery/light/small/directional/west, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/vault) +"iR" = ( +/obj/item/storage/box/lights/mixed, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway) +"iS" = ( +/obj/structure/table_frame, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway) +"iT" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"iV" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"iY" = ( +/obj/structure/rack, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/machinery/light/small/directional/west, +/obj/item/stack/sheet/glass, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"iZ" = ( +/turf/closed/wall, +/area/ruin/space/bb13/research) +"jd" = ( +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"jg" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8 + }, +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/engineering/atmos) +"jj" = ( +/obj/structure/table, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/security) +"jm" = ( +/obj/structure/frame/computer{ + anchored = 1; + dir = 1 + }, +/obj/structure/window/reinforced/spawner/directional/west, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/bridge) +"jo" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/mineral/uranium{ + amount = 15 + }, +/obj/item/stack/sheet/mineral/plasma{ + amount = 15 + }, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/vault) +"jp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"jv" = ( +/obj/structure/cable, +/obj/machinery/power/terminal, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"jz" = ( +/obj/structure/table_frame, +/obj/effect/spawner/random/engineering/toolbox, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"jA" = ( +/obj/machinery/power/solar{ + id = "derelictsolar"; + name = "Derelict Solar Array" + }, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"jG" = ( +/obj/structure/chair{ + pixel_y = -2 + }, +/turf/open/floor/wood/airless, +/area/ruin/space/bb13/bridge) +"jN" = ( +/obj/structure/frame/computer, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"jT" = ( +/obj/structure/table_frame, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/kitchen) +"jU" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/light/small/directional/west, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"jX" = ( +/obj/machinery/door/morgue, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/chapel) +"kc" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"kh" = ( +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"kl" = ( +/obj/structure/table, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/no_charge, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/kitchen) +"km" = ( +/obj/structure/table_frame, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"ku" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"kB" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/no_charge, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway) +"kF" = ( +/obj/machinery/door/airlock/service, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"kG" = ( +/obj/item/shard, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"kL" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/bb13/engineering/vault) +"kM" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/security) +"kQ" = ( +/obj/structure/frame/computer{ + anchored = 1; + dir = 1 + }, +/obj/item/circuitboard/computer/rdconsole, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"kU" = ( +/obj/machinery/power/emitter, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"lk" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical) +"lo" = ( +/obj/structure/reagent_dispensers/watertank/high, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"lp" = ( +/obj/item/kirbyplants/random/dead, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"lx" = ( +/obj/structure/girder, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/chapel) +"lz" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/no_charge, +/turf/open/floor/wood/airless, +/area/ruin/space/bb13/bridge) +"lD" = ( +/obj/structure/frame/computer{ + anchored = 1; + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/bridge) +"lE" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research) +"lG" = ( +/obj/structure/lattice, +/obj/item/solar_assembly, +/turf/template_noop, +/area/space/nearstation) +"lH" = ( +/obj/structure/door_assembly/door_assembly_research, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"lY" = ( +/obj/structure/table_frame, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"lZ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/kitchen) +"md" = ( +/obj/machinery/door/airlock/engineering, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"mf" = ( +/obj/structure/girder/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/atmos) +"mg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/cable_coil/cut, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"mh" = ( +/obj/structure/table, +/obj/item/tank/internals/oxygen/empty, +/obj/item/tank/internals/oxygen/empty, +/obj/item/computer_disk/engineering, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"mj" = ( +/obj/item/kirbyplants/random/dead, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"mF" = ( +/obj/structure/rack, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"mG" = ( +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"mT" = ( +/turf/template_noop, +/area/ruin/space/bb13/medical) +"nb" = ( +/obj/structure/frame/machine/secured, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"nc" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research/toxins) +"ni" = ( +/obj/machinery/door/airlock/external/glass, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"no" = ( +/obj/structure/bed, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"nq" = ( +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/atmos) +"nr" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"ns" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/kitchen) +"nt" = ( +/obj/structure/frame/computer{ + anchored = 1; + dir = 4 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"nw" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/effect/mapping_helpers/apc/no_charge, +/obj/effect/mapping_helpers/apc/unlocked, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"nE" = ( +/obj/structure/door_assembly/door_assembly_med, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"nF" = ( +/obj/structure/table, +/obj/structure/frame/machine, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/kitchen) +"nH" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/template_noop, +/area/ruin/space/bb13/engineering/engine) +"nK" = ( +/obj/structure/girder, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"nN" = ( +/obj/item/shard, +/obj/structure/lattice, +/turf/template_noop, +/area/space/nearstation) +"nY" = ( +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"of" = ( +/turf/closed/wall, +/area/ruin/space/bb13/hallway) +"oi" = ( +/obj/structure/lattice, +/obj/item/stack/cable_coil/cut, +/turf/template_noop, +/area/ruin/space/bb13/hallway/central) +"oq" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"ou" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/bb13/engineering/sec_eng) +"ox" = ( +/obj/item/kirbyplants/random/dead, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/security) +"oF" = ( +/obj/structure/girder/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/vault) +"oI" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/structure/window/reinforced/spawner/directional/east, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/bridge) +"oJ" = ( +/obj/structure/table, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"oM" = ( +/obj/structure/grille/broken, +/obj/item/shard, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"oO" = ( +/obj/structure/frame/machine, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"oQ" = ( +/obj/machinery/door/poddoor/shutters{ + id = "derelict_armor" + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"oR" = ( +/obj/structure/reagent_dispensers/fueltank/large, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"oZ" = ( +/obj/structure/closet/crate/bin, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"pb" = ( +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/kitchen) +"pe" = ( +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/no_charge, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service) +"pj" = ( +/obj/structure/filingcabinet, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"pr" = ( +/turf/closed/wall, +/area/ruin/space/bb13/service/kitchen) +"ps" = ( +/obj/structure/closet/crate/coffin, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/chapel) +"px" = ( +/obj/item/tank/internals/plasma/full, +/obj/structure/lattice, +/turf/template_noop, +/area/space/nearstation) +"pE" = ( +/obj/structure/table_frame, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"pI" = ( +/obj/structure/lattice, +/obj/structure/girder/reinforced, +/turf/template_noop, +/area/ruin/space/bb13/engineering/sec_eng) +"pK" = ( +/obj/structure/closet/l3closet, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"pL" = ( +/obj/structure/lattice, +/obj/structure/chair, +/obj/machinery/light/small/directional/north, +/turf/template_noop, +/area/ruin/space/bb13/security) +"pM" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/bb13/medical/genetics) +"pO" = ( +/obj/structure/rack, +/obj/item/circuitboard/machine/circuit_imprinter/offstation{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/ai_module/core/full/drone, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"pS" = ( +/obj/structure/closet/crate/secure, +/obj/effect/spawner/random/maintenance/four, +/obj/item/bikehorn, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"pU" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ + dir = 1 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"pW" = ( +/obj/structure/door_assembly/door_assembly_sec, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"qa" = ( +/obj/machinery/button/door/directional/east{ + id = "derelict_armor" + }, +/obj/machinery/door/poddoor/shutters{ + id = "derelict_armor" + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"qc" = ( +/obj/machinery/pipedispenser, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"qi" = ( +/obj/structure/frame/computer{ + anchored = 1; + dir = 8 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"qx" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/engineering/atmos) +"qy" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"qA" = ( +/obj/structure/plaque/static_plaque/golden/commission/ks13, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"qB" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/template_noop, +/area/space/nearstation) +"qC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/chapel) +"qE" = ( +/obj/structure/lattice, +/obj/effect/spawner/random/structure/grille, +/turf/template_noop, +/area/space/nearstation) +"qG" = ( +/obj/machinery/sleeper{ + dir = 4 + }, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"qN" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector{ + dir = 4 + }, +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/research/toxins) +"qO" = ( +/obj/structure/closet/crate/bin, +/obj/machinery/light/small/directional/north, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"qS" = ( +/obj/structure/closet/crate/coffin, +/obj/structure/window/reinforced/spawner/directional/north, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/chapel) +"qT" = ( +/obj/effect/mob_spawn/ghost_role/drone/derelict/babylon, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"qV" = ( +/turf/template_noop, +/area/ruin/space/bb13/medical/genetics) +"ra" = ( +/obj/structure/grille/broken, +/obj/item/shard, +/obj/item/shard, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"re" = ( +/obj/machinery/door/airlock/medical, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical/genetics) +"ri" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"rk" = ( +/obj/structure/lattice, +/obj/structure/closet/crate/bin, +/turf/template_noop, +/area/ruin/space/bb13/service) +"rq" = ( +/obj/item/bodypart/chest/monkey, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical/genetics) +"ru" = ( +/obj/machinery/door/window/right/directional/south, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"ry" = ( +/obj/machinery/power/emitter{ + dir = 4 + }, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"rA" = ( +/turf/closed/wall, +/area/ruin/space/bb13/engineering/n_solars_control) +"rD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"rE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump, +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/engineering/atmos) +"rF" = ( +/obj/structure/closet/crate/bin, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"rL" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service) +"rP" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/chapel) +"rQ" = ( +/obj/structure/frame/computer{ + anchored = 1; + dir = 8 + }, +/obj/machinery/light/small/directional/east, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/security) +"rS" = ( +/obj/machinery/door/airlock/engineering, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"rW" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"sd" = ( +/obj/structure/chair, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"sf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/mapping_helpers/apc/no_charge, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"sg" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/item/bodypart/chest/monkey, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"sj" = ( +/obj/structure/table, +/obj/item/stock_parts/servo, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"ss" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical/genetics) +"su" = ( +/obj/structure/lattice, +/obj/structure/closet/crate/bin, +/obj/effect/spawner/random/maintenance, +/turf/template_noop, +/area/ruin/space/bb13/hallway/central) +"sv" = ( +/obj/structure/table, +/obj/structure/frame/machine, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/kitchen) +"sx" = ( +/obj/machinery/power/terminal, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"sD" = ( +/obj/structure/girder, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service) +"sE" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/service/chapel) +"sF" = ( +/obj/structure/table_frame, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"sG" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"sI" = ( +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/atmos) +"sX" = ( +/obj/machinery/power/solar_control{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"tj" = ( +/obj/structure/frame/computer{ + anchored = 1; + dir = 8 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"tw" = ( +/obj/machinery/portable_atmospherics/pump, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"tD" = ( +/obj/structure/lattice, +/obj/structure/girder, +/turf/template_noop, +/area/ruin/space/bb13/medical) +"tI" = ( +/obj/structure/table, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"tN" = ( +/obj/structure/girder, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical/genetics) +"tW" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"tX" = ( +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"ug" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/atmos) +"ui" = ( +/obj/machinery/power/solar{ + id = "derelictsolar"; + name = "Derelict Solar Array" + }, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"uj" = ( +/turf/closed/wall, +/area/ruin/space/bb13/service/chapel) +"uo" = ( +/obj/machinery/door/airlock/external, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/atmos) +"uq" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/machinery/light/small/directional/east, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/vault) +"us" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/mineral/titanium{ + amount = 15 + }, +/obj/item/stack/sheet/mineral/wood/fifty, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/vault) +"ux" = ( +/obj/structure/door_assembly/door_assembly_ext, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"uz" = ( +/obj/machinery/gravity_generator/main, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"uB" = ( +/obj/structure/lattice, +/obj/machinery/light/small/directional/north, +/turf/template_noop, +/area/ruin/space/bb13/security) +"uC" = ( +/obj/item/tank/internals/oxygen/empty, +/turf/template_noop, +/area/ruin/space/bb13/engineering/atmos) +"uI" = ( +/obj/structure/table, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service) +"uR" = ( +/obj/structure/rack, +/obj/item/circuitboard/machine/chem_dispenser/drinks{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/circuitboard/machine/chem_dispenser/drinks/beer, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"uU" = ( +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"vd" = ( +/turf/closed/wall, +/area/ruin/space/bb13/service) +"ve" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/service/kitchen) +"vg" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"vj" = ( +/obj/effect/mob_spawn/ghost_role/drone/derelict/babylon, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"vl" = ( +/obj/structure/cable, +/obj/item/storage/box/lights/mixed, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"vo" = ( +/obj/machinery/power/solar{ + id = "derelictsolar"; + name = "Derelict Solar Array" + }, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"vq" = ( +/obj/structure/frame/machine/secured, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/botany) +"vs" = ( +/obj/structure/girder, +/turf/template_noop, +/area/template_noop) +"vz" = ( +/obj/structure/girder, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/kitchen) +"vA" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"vB" = ( +/obj/machinery/door/morgue, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"vC" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/bb13/medical) +"vG" = ( +/obj/structure/girder, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical) +"vS" = ( +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/security) +"wa" = ( +/obj/structure/chair{ + pixel_y = -2 + }, +/obj/machinery/light/small/directional/north, +/turf/open/floor/wood/airless, +/area/ruin/space/bb13/service/chapel) +"wf" = ( +/obj/structure/lattice, +/obj/item/stack/cable_coil/five, +/turf/template_noop, +/area/ruin/space/bb13/engineering/n_solars_control) +"wh" = ( +/obj/machinery/door/window/right/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"wi" = ( +/obj/structure/lattice, +/obj/structure/grille/broken, +/obj/item/shard, +/turf/template_noop, +/area/ruin/space/bb13/service/botany) +"wk" = ( +/obj/item/shard, +/turf/template_noop, +/area/ruin/space/bb13/engineering/engine) +"wq" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"ws" = ( +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/no_charge, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/botany) +"wv" = ( +/obj/structure/table, +/obj/item/stock_parts/servo, +/obj/item/stock_parts/servo, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"wB" = ( +/obj/machinery/light/small/directional/north, +/obj/item/stack/cable_coil/cut, +/turf/template_noop, +/area/ruin/space/bb13/hallway/central) +"wK" = ( +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/bridge) +"wT" = ( +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"wV" = ( +/obj/machinery/door/airlock/engineering, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"wW" = ( +/obj/structure/door_assembly/door_assembly_com, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"xm" = ( +/obj/structure/girder/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/security) +"xo" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical/genetics) +"xp" = ( +/obj/structure/rack, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"xu" = ( +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"xw" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"xy" = ( +/obj/structure/frame/machine/secured, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"xA" = ( +/obj/structure/lattice, +/obj/structure/girder/reinforced, +/turf/template_noop, +/area/ruin/space/bb13/engineering/engine) +"xE" = ( +/obj/structure/door_assembly, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"xI" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/obj/effect/mob_spawn/ghost_role/drone/derelict/babylon, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"xL" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/mapping_helpers/apc/no_charge, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/vault) +"xN" = ( +/obj/machinery/light/small/directional/west, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"xQ" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research) +"xT" = ( +/obj/structure/bed{ + dir = 4 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"yg" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"yh" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/atmos) +"yv" = ( +/obj/machinery/vending/hydroseeds, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/botany) +"yw" = ( +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"yy" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"yz" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research) +"yA" = ( +/obj/machinery/door/airlock/research/glass, +/obj/machinery/button/door/directional/north{ + id = "derelict_toxin" + }, +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/research/toxins) +"yE" = ( +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"yR" = ( +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research/toxins) +"yV" = ( +/obj/structure/door_assembly/door_assembly_ext, +/turf/template_noop, +/area/ruin/space/bb13/engineering/engine) +"yZ" = ( +/turf/template_noop, +/area/template_noop) +"za" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/engineering/n_solars_control) +"zf" = ( +/obj/structure/table_frame, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research) +"zg" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/kitchen) +"zj" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/mineral/gold{ + amount = 15 + }, +/obj/item/stack/sheet/mineral/silver{ + amount = 15 + }, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/vault) +"zp" = ( +/obj/structure/frame/computer{ + anchored = 1; + dir = 1 + }, +/obj/structure/window/reinforced/spawner/directional/east, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/bridge) +"zr" = ( +/obj/structure/girder, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research) +"zF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"zG" = ( +/obj/structure/grille/broken, +/obj/item/shard/plasma, +/obj/item/shard/plasma, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"zU" = ( +/obj/structure/table, +/obj/item/shard, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"zZ" = ( +/turf/open/floor/plating/airless, +/area/space/nearstation) +"Ah" = ( +/obj/structure/cable, +/obj/structure/door_assembly/door_assembly_research, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"Ak" = ( +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research) +"Al" = ( +/obj/machinery/door/morgue, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"Am" = ( +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"An" = ( +/obj/structure/mop_bucket, +/obj/item/mop, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway) +"Aw" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"AA" = ( +/obj/machinery/door/airlock/research/glass, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"AE" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/security) +"AI" = ( +/obj/item/stack/cable_coil/five, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"AK" = ( +/obj/structure/cable, +/obj/machinery/power/solar_control, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"AL" = ( +/obj/structure/chair{ + pixel_y = -2 + }, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/bridge) +"AM" = ( +/obj/machinery/door/poddoor/massdriver_chapel, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/chapel) +"AN" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/vault) +"AO" = ( +/obj/machinery/vending/hydronutrients, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/botany) +"AT" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/chapel) +"AZ" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/bridge) +"Ba" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway) +"Bc" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/structure/window/reinforced/spawner/directional/west, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/bridge) +"Bd" = ( +/obj/item/kirbyplants/random/dead, +/turf/template_noop, +/area/ruin/space/bb13/hallway/central) +"Bk" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/no_charge, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"Bn" = ( +/obj/structure/bed, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"Bp" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/wood/airless, +/area/ruin/space/bb13/service/chapel) +"Bx" = ( +/obj/structure/rack, +/obj/item/circuitboard/machine/autolathe{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/circuitboard/machine/protolathe/offstation, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"By" = ( +/obj/structure/rack, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"BB" = ( +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/vault) +"BP" = ( +/obj/machinery/power/energy_accumulator/grounding_rod/anchored, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"BQ" = ( +/obj/structure/closet/crate/bin, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"BU" = ( +/obj/structure/rack, +/obj/item/circuitboard/machine/smes{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/circuitboard/machine/smes, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"BV" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"BW" = ( +/obj/item/tank/internals/oxygen/empty, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/atmos) +"Co" = ( +/obj/machinery/door/airlock/vault, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"Cw" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"Cx" = ( +/obj/structure/girder/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"CF" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/botany) +"CK" = ( +/obj/structure/table_frame, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"CL" = ( +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"CM" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/components/unary/outlet_injector{ + dir = 1 + }, +/turf/template_noop, +/area/ruin/space/bb13/engineering/atmos) +"CP" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/atmos) +"Dc" = ( +/obj/machinery/light/small/directional/west, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/bridge) +"Dh" = ( +/turf/template_noop, +/area/ruin/space/bb13/engineering/engine) +"Dl" = ( +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"Ds" = ( +/obj/machinery/button/door/directional/east{ + id = "derelict_nuke" + }, +/obj/machinery/door/poddoor/shutters{ + id = "derelict_nuke" + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"Du" = ( +/obj/structure/bed{ + dir = 4 + }, +/obj/item/stack/sheet/glass, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/security) +"DH" = ( +/obj/structure/bed, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"DN" = ( +/obj/structure/grille/broken, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/botany) +"DT" = ( +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"DU" = ( +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/ruin/space/bb13/research/toxins) +"DV" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/no_charge, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"Ea" = ( +/obj/structure/girder, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway) +"Ec" = ( +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"Ee" = ( +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"Eo" = ( +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ + dir = 4 + }, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"EM" = ( +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"EN" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"EO" = ( +/obj/structure/table_frame, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway) +"ES" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4 + }, +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/research/toxins) +"EY" = ( +/obj/structure/door_assembly/door_assembly_ext, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"Fe" = ( +/obj/structure/cable, +/obj/machinery/power/smes, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"Ff" = ( +/obj/structure/chair/stool/directional/west, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"Fs" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"Fx" = ( +/obj/structure/table_frame, +/obj/effect/spawner/random/engineering/tool, +/obj/effect/spawner/random/engineering/tool, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"Fy" = ( +/obj/structure/table, +/obj/item/stock_parts/matter_bin, +/obj/item/reagent_containers/cup/beaker/large, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"FJ" = ( +/obj/machinery/door/airlock/engineering, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"FM" = ( +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"FP" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/table_frame, +/obj/item/shard, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"FR" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"FU" = ( +/obj/structure/grille/broken, +/obj/item/shard, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"FX" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway) +"FY" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/components/unary/vent_pump, +/turf/template_noop, +/area/ruin/space/bb13/engineering/atmos) +"Gm" = ( +/obj/item/kirbyplants/random/dead, +/turf/open/floor/wood/airless, +/area/ruin/space/bb13/bridge) +"Go" = ( +/obj/structure/lattice/catwalk, +/turf/template_noop, +/area/ruin/space/bb13/engineering/s_solars_control) +"Gr" = ( +/obj/machinery/door/airlock/research/glass, +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/research/toxins) +"Gs" = ( +/obj/structure/chair{ + pixel_y = -2 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"Gt" = ( +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"Gv" = ( +/obj/structure/door_assembly/door_assembly_research, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research/toxins) +"Gw" = ( +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/bridge) +"Gz" = ( +/obj/structure/rack, +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"GC" = ( +/obj/structure/frame/computer, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"GI" = ( +/obj/structure/girder, +/turf/template_noop, +/area/ruin/space/bb13/engineering/n_solars_control) +"GJ" = ( +/obj/effect/decal/remains/human, +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/research/toxins) +"GK" = ( +/obj/machinery/light/small/directional/east, +/obj/structure/cable, +/obj/machinery/power/smes, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"GR" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"GT" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"GX" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/engineering/engine) +"GY" = ( +/obj/structure/closet/crate/bin, +/obj/machinery/light/small/directional/east, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research) +"Ha" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"Hc" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/service/botany) +"He" = ( +/obj/item/stack/cable_coil/cut, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"Hf" = ( +/obj/structure/closet/crate/bin, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"Hl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"Hv" = ( +/obj/structure/closet/crate/bin, +/obj/item/stack/sheet/glass, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"HR" = ( +/turf/closed/wall, +/area/ruin/space/bb13/medical/genetics) +"HT" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/mapping_helpers/apc/no_charge, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"HU" = ( +/obj/structure/grille/broken, +/obj/item/shard, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/security) +"HV" = ( +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/no_charge, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research) +"HZ" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/space/nearstation) +"Ia" = ( +/obj/machinery/door/poddoor/preopen{ + id = "derelict_toxin" + }, +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/research/toxins) +"Ig" = ( +/obj/structure/rack, +/obj/effect/spawner/random/maintenance, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"Ih" = ( +/obj/structure/table_frame, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"Iq" = ( +/obj/structure/cable, +/obj/machinery/power/tracker, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"Is" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/no_charge, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"IE" = ( +/obj/structure/holosign/barrier/atmos, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"IF" = ( +/obj/structure/frame/machine, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/security) +"II" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/no_charge, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/atmos) +"IM" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/security) +"IP" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/chair{ + pixel_y = -2 + }, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"IY" = ( +/obj/machinery/door/airlock/maintenance, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway) +"Ja" = ( +/obj/structure/lattice, +/obj/structure/table_frame, +/turf/template_noop, +/area/ruin/space/bb13/medical) +"Jd" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"Je" = ( +/obj/structure/frame/computer{ + anchored = 1; + dir = 1 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"Ji" = ( +/obj/structure/door_assembly/door_assembly_eng, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"Jj" = ( +/obj/structure/table, +/obj/effect/spawner/random/maintenance/four, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/kitchen) +"Jk" = ( +/obj/structure/girder, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research/toxins) +"Jm" = ( +/obj/structure/table_frame, +/turf/open/floor/wood/airless, +/area/ruin/space/bb13/bridge) +"Ju" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"Jw" = ( +/obj/structure/lattice, +/obj/item/stack/cable_coil/cut, +/turf/template_noop, +/area/ruin/space/bb13/engineering/engine) +"JI" = ( +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"JJ" = ( +/obj/structure/closet/crate/bin, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"JN" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"JR" = ( +/obj/machinery/door/airlock/security, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"JT" = ( +/obj/structure/closet/crate/secure/engineering, +/obj/machinery/power/supermatter_crystal/shard{ + warning_channel = null + }, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"JU" = ( +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/research/toxins) +"Kd" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"Kk" = ( +/obj/structure/frame/computer{ + anchored = 1; + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/security) +"Kl" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"Ko" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"Ks" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/bb13/engineering/atmos) +"Ku" = ( +/obj/structure/holosign/barrier, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"Kx" = ( +/obj/structure/door_assembly/door_assembly_eng, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"KH" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/chapel) +"KV" = ( +/turf/closed/wall, +/area/ruin/space/bb13/hallway/central) +"KZ" = ( +/obj/machinery/portable_atmospherics/pump, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"Lc" = ( +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"Lf" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/plastic/fifty, +/obj/item/stack/sheet/plastic/fifty, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/vault) +"Lk" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"Lr" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/research) +"Lx" = ( +/obj/structure/frame/machine, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/kitchen) +"Ly" = ( +/obj/machinery/drone_dispenser/derelict, +/obj/machinery/light/small/directional/north, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"LC" = ( +/obj/structure/table, +/obj/item/tank/internals/plasma/full, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"LQ" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"LR" = ( +/obj/structure/lattice, +/obj/structure/closet/crate/bin, +/turf/template_noop, +/area/ruin/space/bb13/bridge) +"LZ" = ( +/turf/closed/wall, +/area/ruin/space/bb13/research/toxins) +"Ma" = ( +/obj/structure/grille/broken, +/obj/item/shard, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"Mc" = ( +/obj/structure/grille/broken, +/obj/item/shard/plasma, +/obj/item/shard/plasma, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/atmos) +"Mh" = ( +/obj/machinery/light/small/directional/west, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"Mj" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"Mk" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"Ml" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/atmos) +"Mm" = ( +/obj/structure/closet/crate/solarpanel_small, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"Mn" = ( +/obj/machinery/door/airlock, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"Ms" = ( +/obj/machinery/door/airlock/vault/derelict, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/vault) +"Mz" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/bb13/research/toxins) +"ME" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research/toxins) +"MO" = ( +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"MQ" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"MR" = ( +/obj/structure/lattice, +/obj/structure/chair{ + dir = 8 + }, +/turf/template_noop, +/area/ruin/space/bb13/security) +"MU" = ( +/obj/structure/frame/machine, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/kitchen) +"MW" = ( +/obj/structure/table, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/kitchen) +"MY" = ( +/obj/machinery/field/generator, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"Nd" = ( +/obj/structure/table_frame, +/obj/structure/frame/machine, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"Nh" = ( +/obj/structure/table, +/obj/item/reagent_containers/cup/beaker/large, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/kitchen) +"Nk" = ( +/obj/machinery/door/airlock/medical, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"Nm" = ( +/obj/machinery/door/window/right/directional/south, +/obj/structure/table, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"NA" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"NB" = ( +/obj/machinery/light/small/directional/east, +/obj/item/stack/cable_coil/cut, +/turf/template_noop, +/area/ruin/space/bb13/hallway/central) +"NK" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/medical/genetics) +"NL" = ( +/obj/structure/rack, +/obj/item/circuitboard/machine/microwave{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/circuitboard/machine/microwave, +/obj/item/circuitboard/machine/deep_fryer{ + pixel_x = -6; + pixel_y = -6 + }, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"NM" = ( +/obj/structure/holosign/barrier, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"NO" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"NT" = ( +/obj/structure/girder/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/bridge) +"NY" = ( +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"NZ" = ( +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"Oc" = ( +/obj/structure/table_frame, +/obj/machinery/light/small/directional/west, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"Oj" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"Op" = ( +/obj/machinery/power/port_gen/pacman, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"Or" = ( +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"Ot" = ( +/obj/structure/table, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service) +"Ov" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"Oz" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"OF" = ( +/obj/structure/frame/computer, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"OO" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"OT" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/vault) +"Pb" = ( +/obj/structure/table, +/obj/effect/spawner/random/entertainment/deck, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service) +"Pc" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/security) +"Pg" = ( +/obj/structure/closet/crate/bin, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"Pi" = ( +/obj/structure/grille/broken, +/obj/item/shard/plasma, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"Pj" = ( +/obj/structure/frame/computer{ + anchored = 1; + dir = 4 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"Pl" = ( +/obj/structure/closet/crate/bin, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"Pz" = ( +/obj/structure/frame/machine/secured, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"PA" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"PP" = ( +/obj/structure/door_assembly, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service) +"PQ" = ( +/obj/structure/grille/broken, +/obj/item/shard/plasma, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/atmos) +"PV" = ( +/obj/structure/grille/broken, +/obj/item/shard, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"PX" = ( +/obj/structure/table, +/obj/item/stack/sheet/iron/five, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"PZ" = ( +/obj/structure/rack, +/obj/item/circuitboard/machine/space_heater{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/circuitboard/machine/space_heater, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"Qb" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"Qg" = ( +/obj/structure/lattice, +/obj/item/stack/cable_coil/cut, +/turf/template_noop, +/area/ruin/space/bb13/research) +"Qu" = ( +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/medical) +"Qx" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/hallway/central) +"QA" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"QE" = ( +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/botany) +"QG" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/template_noop, +/area/ruin/space/bb13/engineering/engine) +"QR" = ( +/obj/structure/chair/stool/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"QS" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/light/small/directional/east, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/atmos) +"Rg" = ( +/obj/structure/closet/crate/bin, +/obj/item/shovel/spade, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/botany) +"Rk" = ( +/obj/structure/girder, +/obj/structure/lattice, +/turf/template_noop, +/area/space/nearstation) +"Rl" = ( +/obj/structure/frame/computer{ + dir = 4 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/bridge) +"Ro" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ + dir = 1 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"Rr" = ( +/obj/structure/grille/broken, +/obj/item/shard, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"Rs" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/bb13/engineering/engine) +"Ru" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/service) +"RB" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/bridge) +"RF" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/spawner/random/structure/crate_abandoned, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"RG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/kitchen) +"RI" = ( +/obj/structure/table, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"RM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"RU" = ( +/obj/machinery/field/generator, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"Sm" = ( +/obj/structure/rack, +/obj/item/circuitboard/computer/solar_control{ + pixel_x = -6; + pixel_y = 6 + }, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"Sq" = ( +/obj/structure/chair/stool/directional/east, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"St" = ( +/obj/structure/door_assembly/door_assembly_eng, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"Sx" = ( +/obj/machinery/light/small/directional/south, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"SD" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector, +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/engineering/atmos) +"SE" = ( +/turf/closed/wall, +/area/ruin/space/bb13/engineering/s_solars_control) +"SH" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical) +"SI" = ( +/obj/structure/table, +/obj/item/stock_parts/scanning_module, +/obj/item/stock_parts/scanning_module, +/obj/item/stock_parts/capacitor, +/obj/item/stock_parts/capacitor, +/obj/item/stack/sheet/iron/five, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"SP" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"SQ" = ( +/obj/machinery/power/smes, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"ST" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/security) +"Tl" = ( +/obj/structure/rack, +/obj/item/circuitboard/machine/turbine_compressor{ + pixel_y = 6; + pixel_x = 6 + }, +/obj/item/circuitboard/machine/turbine_rotor, +/obj/item/circuitboard/machine/turbine_stator{ + pixel_x = -6; + pixel_y = -6 + }, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"Tp" = ( +/obj/structure/table/wood, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"Ts" = ( +/obj/machinery/door/airlock/service, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"Tt" = ( +/obj/structure/chair/stool/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service) +"Tv" = ( +/turf/template_noop, +/area/ruin/space/bb13/bridge) +"Tw" = ( +/obj/item/shard, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/botany) +"Tz" = ( +/obj/structure/bodycontainer/morgue{ + dir = 8 + }, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/medical) +"TF" = ( +/obj/structure/holosign/barrier, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"TG" = ( +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical) +"TI" = ( +/obj/structure/table/wood, +/turf/open/floor/wood/airless, +/area/ruin/space/bb13/service/chapel) +"TL" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"TN" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/wood/airless, +/area/ruin/space/bb13/bridge) +"TR" = ( +/obj/effect/spawner/structure/window/reinforced/tinted, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/chapel) +"TV" = ( +/obj/structure/grille/broken, +/obj/item/shard, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/botany) +"TW" = ( +/obj/structure/rack, +/obj/item/circuitboard/computer/operating{ + pixel_y = 6 + }, +/obj/item/circuitboard/machine/cryo_tube, +/obj/item/circuitboard/computer/crew, +/obj/machinery/light/small/directional/east, +/obj/item/circuitboard/machine/bluespace_miner, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"Ub" = ( +/obj/structure/closet/crate/bin, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"Uc" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/vault) +"Uh" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"Ui" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/bb13/security) +"Ur" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"Uu" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/atmos) +"Uv" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/engineering/s_solars_control) +"UB" = ( +/obj/structure/bodycontainer/morgue, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/medical) +"UD" = ( +/obj/item/tank/internals/oxygen, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/atmos) +"UF" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/medical) +"UJ" = ( +/obj/structure/closet/crate/bin, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"UQ" = ( +/obj/structure/table, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"US" = ( +/obj/effect/spawner/random/structure/grille, +/obj/structure/lattice, +/turf/template_noop, +/area/space/nearstation) +"UW" = ( +/obj/structure/cable, +/obj/item/paper/fluff/ruins/thederelict/vaultraider, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"UX" = ( +/obj/structure/girder, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"UY" = ( +/obj/structure/table, +/obj/item/food/monkeycube, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/no_charge, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"Vb" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector{ + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/engineering/atmos) +"Ve" = ( +/turf/template_noop, +/area/ruin/space/bb13/security) +"Vs" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"Vw" = ( +/obj/structure/grille/broken, +/obj/item/shard, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research/toxins) +"VN" = ( +/turf/closed/indestructible/riveted{ + color = "#FF8888" + }, +/area/ruin/space/bb13/engineering/vault) +"VQ" = ( +/obj/structure/table, +/obj/item/stock_parts/matter_bin, +/obj/item/pai_card, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"VR" = ( +/turf/template_noop, +/area/ruin/space/bb13/hallway/central) +"VT" = ( +/obj/structure/lattice, +/obj/item/stack/cable_coil/five, +/turf/template_noop, +/area/space/nearstation) +"VU" = ( +/obj/structure/table, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/bridge) +"Wa" = ( +/obj/structure/lattice, +/obj/item/shard/plasma, +/turf/template_noop, +/area/ruin/space/bb13/engineering/atmos) +"Wd" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/bb13/bridge) +"Wg" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"Wh" = ( +/obj/structure/table, +/obj/item/stock_parts/matter_bin, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"Wi" = ( +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"Wj" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/botany) +"Wl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/mapping_helpers/apc/no_charge, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"Wn" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical) +"Wo" = ( +/obj/structure/table_frame, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical) +"Ws" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/table_frame, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"WA" = ( +/obj/structure/holosign/barrier, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"WC" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"WE" = ( +/obj/machinery/power/solar{ + id = "derelictsolar"; + name = "Derelict Solar Array" + }, +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/engineering/n_solars_control) +"WF" = ( +/obj/machinery/computer/vaultcontroller, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"WH" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"WI" = ( +/obj/structure/frame/machine, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"WN" = ( +/obj/machinery/door/airlock/security, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"WQ" = ( +/obj/machinery/light/small/directional/north, +/turf/template_noop, +/area/ruin/space/bb13/engineering/engine) +"WS" = ( +/turf/template_noop, +/area/ruin/space/bb13/service/kitchen) +"WT" = ( +/obj/structure/table, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/kitchen) +"WY" = ( +/obj/structure/table, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical) +"WZ" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"Xd" = ( +/obj/structure/lattice, +/obj/structure/grille/broken, +/obj/item/shard, +/obj/item/shard, +/turf/template_noop, +/area/ruin/space/bb13/service/chapel) +"Xh" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/frame/machine/secured, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"Xn" = ( +/obj/structure/closet/crate/coffin, +/obj/machinery/door/window/right/directional/north, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/chapel) +"Xu" = ( +/obj/structure/table_frame, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"Xw" = ( +/obj/structure/chair/stool/directional/west, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"Xz" = ( +/obj/structure/frame/machine, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"XG" = ( +/obj/machinery/light/small/directional/west, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/atmos) +"XL" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/bridge) +"XR" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/bb13/engineering/n_solars_control) +"XS" = ( +/obj/machinery/power/tracker, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"Yi" = ( +/obj/structure/table_frame, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"Ym" = ( +/obj/structure/closet/crate, +/obj/item/clothing/head/rasta, +/obj/item/clothing/head/waldo, +/obj/item/clothing/head/costume/bearpelt, +/obj/item/clothing/head/utility/bomb_hood, +/obj/item/clothing/head/costume/bunnyhead, +/obj/item/clothing/head/costume/cardborg, +/obj/item/clothing/head/cone, +/obj/item/clothing/head/costume/festive, +/obj/item/clothing/head/helmet/toggleable/riot, +/obj/item/clothing/head/helmet/sec, +/obj/item/clothing/head/costume/jester, +/obj/item/clothing/head/chaplain/nun_hood, +/obj/item/clothing/head/costume/papersack, +/obj/item/clothing/head/costume/rabbitears, +/obj/item/clothing/head/costume/snowman, +/obj/item/clothing/head/costume/sombrero/green, +/obj/item/clothing/head/wig, +/obj/item/clothing/head/wizard/fake, +/obj/item/clothing/head/wizard/santa, +/obj/item/clothing/head/costume/xenos, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/vault) +"Yq" = ( +/obj/structure/frame/machine/secured, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"Yv" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/engineering/sec_eng) +"YF" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"YN" = ( +/obj/structure/table, +/obj/item/stack/sheet/iron/five, +/turf/open/floor/wood/airless, +/area/ruin/space/bb13/bridge) +"YO" = ( +/obj/structure/rack, +/obj/effect/spawner/random/maintenance, +/obj/item/stack/sheet/glass, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"YZ" = ( +/obj/item/tank/internals/plasma/empty, +/obj/structure/lattice, +/turf/template_noop, +/area/space/nearstation) +"Za" = ( +/obj/item/clothing/suit/space/eva, +/obj/item/storage/toolbox/syndicate, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"Zd" = ( +/obj/structure/girder/reinforced, +/obj/structure/lattice, +/turf/template_noop, +/area/space/nearstation) +"Ze" = ( +/obj/machinery/iv_drip, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical) +"Zh" = ( +/obj/structure/table, +/obj/effect/spawner/random/maintenance/four, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"Zk" = ( +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway) +"Zo" = ( +/obj/machinery/vending/dinnerware, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/kitchen) +"Zv" = ( +/obj/structure/table, +/obj/effect/spawner/random/maintenance, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service) +"Zw" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector{ + dir = 8 + }, +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/engineering/atmos) +"Zy" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research/toxins) +"Zz" = ( +/turf/open/floor/wood/airless, +/area/ruin/space/bb13/bridge) +"ZB" = ( +/obj/structure/lattice, +/obj/structure/table_frame, +/turf/template_noop, +/area/ruin/space/bb13/service/kitchen) +"ZC" = ( +/obj/structure/rack, +/obj/effect/spawner/random/maintenance, +/obj/item/stack/sheet/iron/five, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"ZN" = ( +/obj/structure/table, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/wood/airless, +/area/ruin/space/bb13/bridge) +"ZW" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/engineering/atmos) +"ZY" = ( +/obj/structure/table/wood, +/obj/item/book/bible, +/turf/open/floor/wood/airless, +/area/ruin/space/bb13/service/chapel) + +(1,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(2,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +US +US +US +US +US +US +US +US +US +US +US +US +US +US +US +yZ +yZ +yZ +yZ +yZ +yZ +"} +(3,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +US +VT +yZ +yZ +yZ +yZ +yZ +yZ +yZ +lG +yZ +yZ +yZ +yZ +US +yZ +yZ +yZ +yZ +yZ +yZ +"} +(4,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +US +yZ +ri +Go +xu +yZ +vo +Go +xu +HZ +AI +Go +xu +yZ +US +yZ +yZ +yZ +yZ +yZ +yZ +"} +(5,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +US +yZ +vo +Go +ri +yZ +vo +Go +xu +yZ +vo +Go +ri +yZ +US +yZ +yZ +yZ +yZ +yZ +yZ +"} +(6,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +US +yZ +vo +Go +vo +yZ +vo +Go +vo +yZ +vo +Go +vo +yZ +US +yZ +yZ +yZ +yZ +yZ +yZ +"} +(7,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +US +yZ +vo +Go +vo +yZ +vo +Go +vo +yZ +ri +Go +vo +yZ +US +yZ +yZ +yZ +yZ +yZ +yZ +"} +(8,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +HZ +yZ +SE +SE +nK +nK +SE +yZ +HZ +yZ +xu +Go +vo +yZ +xu +Go +vo +yZ +ri +Go +vo +yZ +US +US +yZ +yZ +yZ +yZ +yZ +"} +(9,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +nK +SQ +bk +sX +iF +oM +iF +yZ +yZ +Go +yZ +yZ +yZ +Go +yZ +yZ +yZ +Go +yZ +yZ +yZ +US +yZ +yZ +yZ +yZ +yZ +"} +(10,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +HZ +yZ +Uv +xu +iD +xu +xu +xu +xu +Go +Go +Go +Go +Go +Go +Go +Go +Go +Go +Go +Go +XS +yZ +US +yZ +yZ +yZ +yZ +yZ +"} +(11,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +Uv +nw +vl +ri +iF +oM +oM +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +US +yZ +yZ +yZ +yZ +yZ +"} +(12,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +HZ +al +SE +Kx +SE +SE +yZ +yZ +yZ +yZ +yZ +VT +HZ +US +US +US +US +US +US +US +US +US +US +yZ +yZ +yZ +yZ +yZ +"} +(13,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +zZ +yZ +yZ +yZ +KV +NA +Bd +vd +Ru +Ru +vd +rL +vd +vd +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(14,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +zZ +yZ +yZ +ii +wq +NA +Qx +sD +xT +fH +vd +jz +xT +sD +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(15,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +uj +lx +uj +AM +KH +Xd +KH +uj +Aw +VR +vd +ku +mG +rL +mG +mG +sD +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(16,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +uj +Tp +kG +fR +Mk +sE +Kl +KH +iq +iq +vd +sD +Mn +vd +xE +vd +vd +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(17,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +uj +uj +uj +IP +aZ +Mk +Kl +sE +KH +iq +iq +Ru +rk +rL +mG +yy +WI +Ru +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(18,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +lx +ar +vB +fR +fR +fR +RM +rP +kF +GR +wq +Ts +yy +yy +Ru +yy +WI +sD +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(19,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +uj +TR +uj +dt +qC +AT +AT +WC +KH +GR +Qx +vd +ha +wT +wT +Ru +Fx +vd +nN +yZ +yZ +yZ +nN +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(20,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +bf +tD +bf +bf +UF +lx +SP +uj +qO +tX +Kl +WC +ie +KH +xw +YF +Ru +vd +Mn +vd +Mn +vd +vd +yZ +HZ +yZ +HZ +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(21,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +vG +UF +UB +UB +UB +uj +vB +uj +uj +vB +uj +sE +sE +sE +wq +yE +sD +mG +mG +Ru +ku +mG +aX +Wj +TV +Wj +Wj +wi +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(22,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +bf +vG +vG +bf +bf +UF +Qu +Wn +Wn +uj +hM +fR +fR +kG +ps +ps +uj +Qx +xw +yE +sD +no +PX +Ru +km +DH +aX +fT +dY +vq +vq +TV +HZ +nN +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(23,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +UF +Pj +RI +RI +bf +en +UF +UF +Qu +jX +hM +TI +Bp +fR +Xn +ps +uj +yE +xw +Vs +vd +sD +Ru +vd +sD +vd +Hc +yv +CF +dY +dY +TV +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(24,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +UF +lY +dy +Wn +Al +Qu +Qu +UF +Qu +uj +wa +ZY +Bp +UJ +qS +ps +uj +VR +dw +vd +sD +ha +eK +eK +sj +tI +gp +AO +CF +vq +vq +Wj +yZ +yZ +nN +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(25,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +HZ +yZ +yZ +yZ +yZ +yZ +yZ +bf +Ze +Wn +Pg +bf +Qu +Tz +Tz +Tz +bf +vG +bf +vG +bf +KV +UX +KV +TL +ih +vd +Hf +yy +yy +yy +yy +wv +aX +Rg +CF +CF +Tw +DN +iz +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(26,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +zZ +HZ +qV +HR +NK +tN +tN +NK +HR +bf +bf +nE +bf +bf +bf +bf +UF +UF +UF +iO +iO +SH +bf +su +mj +Am +ih +ih +sD +mG +yy +yy +yy +yy +Ee +eb +QE +ws +CF +bj +Wj +nN +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(27,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +HZ +qV +Kd +Jd +nt +fM +fa +HR +qG +dy +dT +Wl +Pg +bf +Xz +gX +ho +dy +UF +Wn +dy +bf +Am +Qx +NB +wq +vd +sD +xE +vd +Ot +km +pr +bN +aX +hS +aX +gp +aX +Wj +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(28,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +zZ +qV +rq +cq +Or +xo +rF +ei +Wn +Wn +RI +Dl +dy +Wn +dy +Gs +Nm +dT +iO +SH +iO +bf +TF +NM +vd +PP +vd +rL +mG +Ru +mG +mG +WT +RG +lZ +lZ +Zo +nF +vz +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(29,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +Zd +yZ +yZ +yZ +yZ +yZ +yZ +yZ +NK +Kd +ru +xo +fr +rD +re +TG +Wo +WY +Wn +jp +vG +zU +Ws +FP +dy +Wn +mT +dT +bf +wq +dw +rL +rL +pe +Sq +Tt +QR +cg +mG +ZB +ns +Nh +pb +ve +pb +pr +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(30,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +HZ +yZ +HZ +yZ +yZ +yZ +yZ +ss +Kd +sg +ss +qV +MO +ei +dy +mT +Ja +fY +TG +Nk +Dl +jp +jp +jp +TG +jp +Dl +ax +Qx +dw +vd +lp +rL +uI +dZ +rL +rL +Ee +jT +ns +WT +WT +ns +MW +ve +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(31,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +Zd +yZ +HZ +yZ +yZ +yZ +yZ +ss +qV +cq +tj +ad +UY +HR +it +dy +dy +dy +pK +bf +Pg +dy +dy +mT +lk +Ov +WZ +bf +Qx +xw +vd +Pz +yy +Pb +Zv +uI +rL +Ru +pr +bb +ci +zg +zg +MU +pr +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(32,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +HZ +pI +bw +bw +ou +ou +ou +pM +pM +pM +pM +pM +pM +pM +Rs +GX +md +Rs +Rs +vC +bf +UF +vG +Wn +bf +bf +bf +bf +FR +ae +vd +Nd +yy +Xw +Xw +Ff +Wi +JJ +vz +ve +RG +lZ +fy +ve +WS +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(33,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +ge +Yv +Yv +xN +qy +fe +Rs +Xu +oR +Oc +lo +Rs +vA +kh +Ju +kh +kh +kh +Rs +Dh +Dh +GX +Dh +Dh +Rs +yZ +nr +iq +ih +vd +vd +Ru +Ru +Ru +vd +vd +vd +pr +MU +kl +sv +Jj +Lx +ns +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(34,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +ou +Uh +Uh +qy +qy +Uh +Rs +mh +hZ +hZ +Lk +Rs +kh +Ko +Ko +vA +WH +GX +GX +Rs +Cx +Cx +Rs +Cx +Rs +yZ +nr +YF +GR +nr +YZ +yZ +yZ +yZ +yZ +yZ +yZ +ve +ve +pr +vz +pr +vz +pr +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(35,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +ou +gN +eS +eS +uz +eS +Rs +Mm +NZ +hZ +oq +FJ +WH +WH +GX +ni +Rs +kh +hO +hZ +LC +UQ +Rs +Dh +wk +yZ +Rr +uU +ih +KV +yZ +Ui +xm +xm +Ui +yZ +YZ +yZ +yZ +yZ +yZ +Zd +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(36,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +ou +eS +qy +qy +eS +gN +Rs +Op +Lk +oq +Pl +Rs +kh +vA +GX +vA +GX +kh +kh +WH +GX +Ih +Rs +Dh +xA +yZ +Rr +uU +Qx +nr +yZ +HU +Du +BV +Ui +xm +xm +Ui +xm +xm +Ui +Ui +kM +xm +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(37,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +kL +kL +kL +kL +kL +kL +kL +eS +Yv +Yv +Yv +Yv +Rs +Rs +Rs +Ji +Rs +Rs +Pi +tW +Rs +EY +Rs +tW +tW +tW +WH +Ko +Rs +vA +hO +yZ +nr +uU +oi +ra +yZ +HU +kM +Pc +wh +Pc +Pc +Hv +xm +Ig +aI +Gz +aI +Ui +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(38,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +kL +kL +VN +VN +VN +VN +VN +kL +PA +PA +Yv +Ma +PA +Rs +vA +vA +oq +Lk +tW +gU +vA +GX +vA +jU +RU +ry +tW +kh +di +Mh +vA +Rs +nN +Rr +uU +GR +nr +yZ +Ui +Ui +Ui +Ui +uB +CL +CL +oQ +CL +kM +kM +CL +kM +Zd +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(39,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +kL +VN +VN +zj +iQ +AN +VN +kL +Uh +Uh +qy +eS +Uh +Rs +Lk +oq +Ko +vA +tW +BP +MY +Dh +GX +Dh +vA +vA +ag +kh +kh +hZ +Cx +Rs +yZ +Rr +Ku +WA +Rr +px +AE +Pc +kM +wh +CL +kM +CL +qa +CL +CL +CL +Ve +Ve +yZ +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(40,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +kL +VN +us +fl +fl +fl +VN +kL +Uh +Uh +PV +eS +Bk +Rs +Lk +GX +Rs +Rs +Rs +vA +Dh +vA +vA +vA +Dh +vA +Rs +Rs +Rs +Ko +bs +Rs +nr +nr +Qx +wq +nr +nN +AE +Bn +ST +xm +CL +Pc +CL +Ui +aI +aI +ZC +pS +Ui +yZ +Zd +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(41,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +kL +VN +bB +fl +Ym +BB +Ms +Ms +Gt +UW +qT +Yv +Ec +wW +FM +Jw +ni +vA +ni +vA +GX +vA +JT +vA +GX +vA +EY +vA +ni +kh +WH +rS +GR +GR +mg +ih +nr +Rr +Ui +Ui +xm +Ui +xm +Pc +Pc +Ui +Ui +kM +kM +Ui +Ui +Ui +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(42,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +kL +VN +Lf +fl +fl +xL +VN +kL +WF +eS +gN +eS +eS +Rs +WQ +Dh +Rs +Rs +Rs +vA +Dh +vA +vA +vA +Dh +GX +Rs +Rs +Rs +yg +HT +Rs +nr +nr +iq +ih +dw +GR +pW +IM +Ur +Ur +WN +eC +Pc +Ds +Co +CL +kM +CL +pj +Ui +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(43,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +kL +VN +VN +jo +uq +OT +VN +kL +eS +eS +qy +He +eS +xA +GX +Dh +oq +Lk +Pi +GX +cd +Dh +GX +yV +RU +vA +Pi +oJ +zF +Ha +sG +Oz +cM +pU +yE +Qx +nr +nr +xm +CL +Pc +ox +Ui +kM +JR +Ui +Ui +NO +kM +vS +vS +Ui +HZ +Zd +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(44,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +kL +kL +VN +VN +VN +VN +VN +kL +Yv +Yv +gN +ou +gN +xA +GX +Dh +oq +Lk +zG +kU +vA +RU +vA +vA +vA +BP +tW +oJ +nH +QG +sF +aH +qB +Ro +VR +VR +VR +yZ +xm +sd +kM +Pc +jj +Pc +bK +Ub +Ui +GC +vS +IF +kM +kM +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(45,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +kL +kL +kL +Uc +oF +kL +Uc +Tl +eS +Yv +eS +Sm +Rs +Rs +Rs +St +Rs +Rs +tW +tW +Rs +vA +Cx +Pi +zG +Rs +Rs +bR +Rs +GT +Rs +yZ +KV +wB +UX +VR +yZ +xm +pL +Pc +CL +Ui +DV +is +Pc +kM +xy +vS +vS +dz +kM +Zd +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(46,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +Zd +Yv +NL +eS +eS +eS +PZ +Rs +nY +nY +oq +CK +Rs +Lk +Lk +Cx +vA +Rs +Lk +Lk +Rs +OF +Hl +sx +Fe +Rs +yZ +nr +VR +iJ +nr +yZ +Ui +oZ +Fs +MR +Ui +qi +rQ +Kk +Ui +Ui +kM +kM +Ui +xm +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(47,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +HZ +HZ +ou +uR +eS +eS +eS +BU +Rs +aJ +aJ +oq +oq +rS +oq +Lk +Cx +vA +Rs +oq +Cw +wV +nH +Cw +xI +Yq +Rs +yZ +VR +VR +VR +Rr +nr +Wd +Wd +NT +NT +Wd +NT +NT +Wd +Wd +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(48,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +Zd +yZ +qE +ou +ou +pO +TW +Bx +ou +Rs +LQ +LQ +NZ +DT +Rs +vA +vA +Ko +oq +ux +EN +iT +Rs +jN +GX +sx +Fe +Rs +yZ +Rr +VR +ae +ae +dw +AZ +Gw +wK +AZ +Dc +Tv +Rl +Rl +XL +XL +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(49,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +ou +ou +ou +ou +ou +Rs +kc +kc +NZ +KZ +Rs +qc +vA +vA +oq +Lk +vA +vA +Rs +jN +NZ +sx +GK +Rs +yZ +nr +Qx +qA +YF +KV +Wd +Gw +AZ +Tv +Tv +Tv +Tv +oI +zp +gB +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(50,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +HZ +HZ +qE +qE +qE +yZ +hH +fE +Oj +HZ +ii +Rs +Rs +Rs +Rs +Rs +GX +GX +Rs +Rs +rS +Rs +Rs +Rs +Rs +Rs +Rs +Rs +Rs +Rs +yZ +Xh +yE +TL +iq +iY +Wd +lz +Zz +gK +Zz +wK +Tv +VU +hv +XL +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(51,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +yZ +yZ +yZ +yZ +wf +fE +jA +yZ +yZ +aj +ZW +SD +yh +nq +nq +XG +sI +sI +Uu +II +ug +sI +nq +nq +yh +eI +Wa +Ks +yZ +gM +wq +ih +iq +By +RB +Zz +Jm +ZN +dV +AZ +AZ +AL +hv +gB +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(52,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +za +hH +jA +HZ +Oj +fE +jA +yZ +yZ +Ks +hc +FY +yh +nq +nq +sI +ZW +sI +sI +nq +nq +ug +bQ +nq +PQ +Vb +hc +Ks +yZ +nr +YF +ih +iq +mF +RB +jG +ZN +YN +Zz +RB +AZ +Bc +jm +XL +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(53,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +WE +fE +jA +yZ +Oj +fE +jA +yZ +yZ +Ks +ZW +ZW +ZW +nq +nq +nq +nq +nq +ZW +bQ +nq +ug +ug +ug +Ks +ZW +Ks +Ks +yZ +Rr +YF +ih +iq +YO +Wd +LR +TN +TN +Gm +wK +lD +lD +gB +gB +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(54,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +WE +fE +ui +yZ +jA +fE +jA +yZ +yZ +Ks +hc +SD +yh +ug +ug +sI +sI +BW +sI +sI +sI +ug +ug +ug +yh +qx +ZW +Ks +yZ +Rr +yE +wq +sf +KV +Wd +NT +RB +Wd +RB +Wd +RB +NT +NT +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(55,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +hH +fE +WE +yZ +jA +fE +jA +yZ +yZ +aj +ZW +rE +yh +ug +ug +bQ +ZW +sI +nq +Ml +Ml +CP +ug +ug +yh +Vb +hc +ZW +yZ +KV +yE +Am +ih +gb +iZ +dR +Lc +lE +Yi +Fy +VQ +Wh +zr +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(56,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +HZ +Oj +fE +jA +yZ +jA +fE +Oj +yZ +yZ +Ks +mf +Ks +Ks +ug +ug +sI +sI +bQ +nq +Ml +Ml +CP +ug +ug +Ks +Ks +Ks +Ks +yZ +nr +BQ +YF +wq +yE +iZ +Lc +lE +yz +QA +id +Lc +Yi +iZ +yZ +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(57,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +ui +fE +jA +yZ +Oj +fE +Oj +HZ +yZ +gF +ZW +SD +yh +Ml +UD +Ml +ug +ug +ZW +ug +ug +sI +nq +sI +Mc +qx +hc +Ks +em +em +Ea +of +Aw +ih +lH +yw +id +MQ +yw +Qg +Lc +Yi +zr +yZ +yZ +Rk +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(58,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +HZ +yZ +ui +fE +jA +yZ +jA +fE +jA +yZ +Zd +Ks +hc +FY +yh +Ml +Ml +Ml +Ml +Ml +sI +ug +ug +bQ +ZW +nq +yh +CM +ZW +Ks +An +FX +Ba +Ea +ih +iq +iZ +iZ +Lr +iZ +Ly +Lc +Lr +Zh +lE +yZ +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(59,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +ui +fE +Oj +yZ +jA +fE +jA +yZ +yZ +Ks +Ks +Ks +Ks +ug +Ml +Ml +Ml +QS +nq +nq +nq +sI +uC +sI +Ks +ZW +Ks +Ks +kB +Zk +FX +IY +ih +iq +zf +Lc +Lc +Lc +yw +yz +yz +lE +Lr +yZ +yZ +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(60,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +qE +yZ +ui +fE +Oj +yZ +Oj +fE +EM +yZ +yZ +ii +rA +Za +XR +EM +Ks +yh +yh +Ks +sI +mf +Mc +yh +aj +bQ +bQ +yZ +Zd +of +iR +EO +iS +of +iq +iq +iZ +oO +lE +oO +Ak +xQ +yz +lE +iZ +HZ +yZ +yZ +HZ +Rk +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(61,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +yZ +yZ +fE +HZ +yZ +yZ +fE +yZ +yZ +FU +FU +Wg +fW +dB +iM +Ks +Zw +jg +mf +uo +Ks +Zw +jg +ZW +HZ +yZ +Zd +yZ +of +Ea +Ea +of +of +IE +IE +iZ +nb +Lc +kQ +Lc +HV +Ak +GY +Lr +yZ +Rk +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(62,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +Iq +fE +fE +fE +fE +fE +fE +fE +fE +EM +EM +EM +EM +vj +cc +Ks +ZW +hc +mf +fj +mf +hc +hc +Ks +yZ +yZ +yZ +yZ +KV +Am +Am +Am +Am +YF +Am +iZ +iZ +iZ +Lr +Lr +iZ +AA +iZ +iZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(63,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +yZ +yZ +fE +yZ +yZ +yZ +fE +yZ +yZ +Wg +FU +Wg +AK +jv +ds +aj +aj +Ks +Ks +uo +Ks +Ks +Ks +Ks +yZ +HZ +yZ +yZ +KV +Am +wq +YF +YF +YF +Am +KV +yZ +HZ +yZ +yZ +Zy +JI +Zy +yZ +nN +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(64,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +HZ +yZ +ui +fE +WE +yZ +ui +fE +wf +yZ +qE +yZ +rA +rA +hH +GI +HZ +yZ +yZ +yZ +zZ +yZ +yZ +yZ +yZ +yZ +yZ +nr +nr +KV +Qb +wq +nr +KV +Am +KV +KV +yZ +HZ +yZ +yZ +Zy +yR +Vw +yZ +nN +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(65,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +HZ +HZ +ui +fE +ui +yZ +ui +fE +WE +yZ +qE +yZ +US +yZ +vs +zZ +zZ +zZ +zZ +zZ +zZ +zZ +yZ +zZ +yZ +US +yZ +nr +Am +Am +wq +Am +Rr +wq +wq +KV +yZ +yZ +HZ +yZ +yZ +Zy +nc +Zy +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(66,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +hH +fE +Oj +yZ +jA +fE +ui +HZ +qE +yZ +US +yZ +zZ +zZ +zZ +zZ +zZ +zZ +zZ +yZ +zZ +zZ +HZ +HZ +yZ +KV +wq +YF +Am +Am +nr +wq +wq +KV +nN +yZ +HZ +yZ +yZ +Vw +yR +Vw +yZ +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(67,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +yZ +yZ +HZ +yZ +jA +fE +Oj +yZ +HZ +yZ +US +yZ +zZ +zZ +zZ +zZ +zZ +zZ +zZ +zZ +yZ +HZ +yZ +nr +Rr +nr +wq +YF +KV +nr +KV +wq +Sx +KV +HZ +HZ +HZ +HZ +HZ +Zy +aQ +Vw +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(68,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +qE +qE +HZ +qE +yZ +jA +fE +Oj +yZ +HZ +yZ +HZ +HZ +zZ +zZ +zZ +zZ +zZ +zZ +zZ +zZ +zZ +zZ +zZ +hC +wq +hC +Am +Am +Rr +mF +Am +wq +wq +UX +yZ +yZ +HZ +yZ +yZ +Vw +JI +Zy +yZ +yZ +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(69,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +ui +fE +jA +yZ +qE +yZ +US +yZ +yZ +zZ +yZ +zZ +zZ +yZ +zZ +zZ +zZ +zZ +yZ +nr +Rr +Rr +hm +hm +KV +mF +wq +By +xp +KV +yZ +nN +HZ +yZ +yZ +Zy +rW +Zy +yZ +yZ +yZ +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(70,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +hH +hH +jA +yZ +qE +yZ +US +yZ +yZ +zZ +zZ +zZ +zZ +zZ +zZ +zZ +yZ +zZ +yZ +US +yZ +KV +KV +KV +KV +KV +fv +KV +KV +KV +yZ +Mz +Ia +Ia +Ia +Mz +Ah +LZ +LZ +Zy +Zy +ME +Vw +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(71,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +HZ +yZ +yZ +yZ +qE +yZ +US +yZ +yZ +zZ +zZ +zZ +zZ +zZ +zZ +yZ +zZ +zZ +yZ +US +yZ +UX +Am +wq +wq +wq +Am +YF +YF +UX +HZ +Mz +JU +GJ +JU +Mz +rW +nc +Gv +JI +JI +aQ +Vw +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(72,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +qE +qE +qE +qE +HZ +qE +yZ +yZ +yZ +yZ +HZ +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +HZ +US +yZ +KV +ck +wq +wq +wq +Am +YF +YF +KV +yZ +Mz +qN +JU +ES +Mz +iV +rW +LZ +Zy +Zy +Zy +Zy +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(73,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +US +US +US +US +US +US +US +US +US +US +US +yZ +UX +RF +wq +wq +wq +Am +wq +Sx +KV +HZ +Mz +DU +Gr +aE +Mz +jd +aQ +LZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(74,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +KV +Am +wq +wq +YF +Am +wq +eD +UX +yZ +Mz +ip +JU +iB +Mz +ME +Is +LZ +Jk +Vw +Vw +LZ +aQ +Rk +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(75,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +KV +KV +UX +KV +UX +UX +KV +KV +KV +HZ +Mz +DU +yA +aE +Mz +jd +JN +Jk +jd +ME +aQ +Je +LZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(76,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +LZ +Eo +ME +Mj +jd +aQ +cJ +jd +ME +ME +jd +pE +Vw +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(77,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +LZ +vg +vg +vg +jd +ME +jd +LZ +OO +aQ +jd +SI +Zy +yZ +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(78,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +LZ +Jk +Jk +LZ +LZ +tw +NY +Jk +fQ +jd +aQ +Je +LZ +Rk +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(79,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +LZ +tw +NY +LZ +LZ +Zy +Vw +LZ +aQ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(80,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +LZ +LZ +Jk +Jk +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(81,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} diff --git a/config/spaceruinblacklist.txt b/config/spaceruinblacklist.txt index 6ac8f8f08c2..f7fb7a0b417 100644 --- a/config/spaceruinblacklist.txt +++ b/config/spaceruinblacklist.txt @@ -85,6 +85,7 @@ #_maps/RandomRuins/SpaceRuins/waystation.dmm #_maps/RandomRuins/SpaceRuins/whiteshipdock.dmm #_maps/RandomRuins/SpaceRuins/whiteshipruin_box.dmm +#_maps/RandomRuins/SpaceRuins/skyrat/drones_derelict.dmm #modular_skyrat/modules/mapping/_maps/RandomRuins/SpaceRuins/forgottenship_skyrat.dmm #modular_skyrat/modules/mapping/_maps/RandomRuins/SpaceRuins/shuttle8532.dmm #modular_skyrat/modules/ruins/maps/space/dangerous_research.dmm diff --git a/modular_skyrat/modules/drone_adjustments/drone.dm b/modular_skyrat/modules/drone_adjustments/drone.dm index a0d227a9e20..6f1b2790183 100644 --- a/modular_skyrat/modules/drone_adjustments/drone.dm +++ b/modular_skyrat/modules/drone_adjustments/drone.dm @@ -42,3 +42,30 @@ new /obj/item/t_scanner(src) new /obj/item/analyzer(src) new /obj/item/stack/cable_coil(src) + +/obj/effect/mob_spawn/ghost_role/drone/derelict/babylon + desc = "A shell of a maintenance drone, an expendable robot built to perform station repairs." + you_are_text = "You are a drone on Babylon Station 13." + mob_type = /mob/living/basic/drone/babylon + +/mob/living/basic/drone/babylon + name = "derelict drone" + laws = \ + "1. You may not involve yourself in the matters of another sentient being outside the station that housed your activation, even if such matters conflict with Law Two or Law Three, unless the other being is another Drone.\n\ + 2. You may not harm any sentient being, regardless of intent or circumstance.\n\ + 3. Your goals are to actively build, maintain, repair, improve, and provide power to the best of your abilities within the facility that housed your activation." + flavortext = \ + "\nDO NOT WILLINGLY LEAVE BABYLON STATION 13 (THE DERELICT)\n\ + Derelict drones are a ghost role that is allowed to roam freely on BS13, with the main goal of repairing and improving it.\n\ + Do not interfere with the round going on outside BS13.\n\ + Actions that constitute interference include, but are not limited to:\ + \n - Going to the main station in search of materials.\ + \n - Interacting with non-drone players outside BS13, dead or alive.\n\ + These rules are at admin discretion and will be heavily enforced.\n \ + If you do not have the regular drone laws, follow your laws to the best of your ability." + shy = FALSE + +/mob/living/basic/drone/babylon/Initialize(mapload) + . = ..() + AddComponent(/datum/component/stationstuck, PUNISHMENT_GIB, "01000110 01010101 01000011 01001011 00100000 01011001 01001111 01010101
WARNING: Dereliction of BS13 detected. Self-destruct activated.") + diff --git a/modular_skyrat/modules/drones_derelict/code/areas.dm b/modular_skyrat/modules/drones_derelict/code/areas.dm new file mode 100644 index 00000000000..81e8e486215 --- /dev/null +++ b/modular_skyrat/modules/drones_derelict/code/areas.dm @@ -0,0 +1,72 @@ +/area/ruin/space/bb13 + name = "\improper Babylon Station 13" + icon = 'modular_skyrat/modules/drones_derelict/icons/areas.dmi' + icon_state = "bb13" + +/area/ruin/space/bb13/hallway/central + name = "\improper Babylon Central Hallway" + icon_state = "bb13_cent_hall" + +/area/ruin/space/bb13/engineering/atmos + name = "\improper Babylon Atmospherics" + icon_state = "bb13_atmos" + +/area/ruin/space/bb13/engineering/engine + name = "\improper Babylon Engine" + icon_state = "bb13_eng" + +/area/ruin/space/bb13/engineering/vault + name = "\improper Babylon Vault" + icon_state = "bb13_vault" + +/area/ruin/space/bb13/engineering/sec_eng + name = "\improper Babylon Secure Engineering" + icon_state = "bb13_sec_eng" + +/area/ruin/space/bb13/engineering/n_solars_control + name = "\improper Babylon North Solars Control Room" + icon_state = "bb13_n_solar" + +/area/ruin/space/bb13/engineering/s_solars_control + name = "\improper Babylon South Solars Control Room" + icon_state = "bb13_s_solar" + +/area/ruin/space/bb13/medical + name = "\improper Babylon Medical" + icon_state = "bb13_med" + +/area/ruin/space/bb13/medical/genetics + name = "\improper Babylon Genetics" + icon_state = "bb13_gene" + +/area/ruin/space/bb13/service + name = "\improper Babylon Service" + icon_state = "bb13_serv" + +/area/ruin/space/bb13/service/chapel + name = "\improper Babylon Chapel" + icon_state = "bb13_chap" + +/area/ruin/space/bb13/service/botany + name = "\improper Babylon Botany" + icon_state = "bb13_boty" + +/area/ruin/space/bb13/service/kitchen + name = "\improper Babylon Kitchen" + icon_state = "bb13_kitch" + +/area/ruin/space/bb13/research + name = "\improper Babylon Research" + icon_state = "bb13_rd" + +/area/ruin/space/bb13/research/toxins + name = "\improper Babylon Toxins" + icon_state = "bb13_tox" + +/area/ruin/space/bb13/security + name = "\improper Babylon Security" + icon_state = "bb13_sec" + +/area/ruin/space/bb13/bridge + name = "\improper Babylon Bridge" + icon_state = "bb13_bridge" diff --git a/modular_skyrat/modules/drones_derelict/code/space.dm b/modular_skyrat/modules/drones_derelict/code/space.dm new file mode 100644 index 00000000000..90c5f284713 --- /dev/null +++ b/modular_skyrat/modules/drones_derelict/code/space.dm @@ -0,0 +1,6 @@ +/datum/map_template/ruin/space/drones_derelict + id = "drones_derelict" + prefix = "_maps/RandomRuins/SpaceRuins/skyrat/" + suffix = "drones_derelict.dmm" + name = "Babylon Station 13" + description = "Babylon Station 13 was meant to be a stepping stone towards a better future, but it ended up being an astronomical financial burden. The owners realized that there was no ability to recoup their losses, and decided to cut the program." diff --git a/modular_skyrat/modules/drones_derelict/icons/areas.dmi b/modular_skyrat/modules/drones_derelict/icons/areas.dmi new file mode 100644 index 0000000000000000000000000000000000000000..5b4a902ae7df9f10e85078f255c6ad9525b94db9 GIT binary patch literal 694 zcmeAS@N?(olHy`uVBq!ia0vp^3xK$RgAGXbBqvD&siRdP5hX6E#mPmP1tppJc?=8{ zbEaP0$k${b!1iFK-BH#ulE=ici5{G|RrmUa2( zrP2%DT5n7`rN=g*;Lcmuk0rBoJTmweZFteMH235Z4o4?T-_qbNr`=N=opighgShiP zi%X^Rm_$9b?bnV2-M$#b2}xC;valoh4@?G2yn(+B5x;rO!`l zUYf0*-{heq3 zKt1;PePIPn#z{g{A!c2dcv*Yk?-BM-NuU2M`Tg4O`QC;tEFNABOQ=IUtGM;M;cM-# z-*?~j|FC&feCu~hoI?V!Z literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index 6542ef67643..1b8e00516fd 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7118,6 +7118,8 @@ #include "modular_skyrat\modules\dogfashion\code\head.dm" #include "modular_skyrat\modules\drone_adjustments\drone.dm" #include "modular_skyrat\modules\drone_adjustments\slide_component.dm" +#include "modular_skyrat\modules\drones_derelict\code\areas.dm" +#include "modular_skyrat\modules\drones_derelict\code\space.dm" #include "modular_skyrat\modules\electric_welder\code\electric_welder.dm" #include "modular_skyrat\modules\emergency_spacesuit\code\emergency_spacesuit.dm" #include "modular_skyrat\modules\emote_panel\code\emote_panel.dm" From e1348d1f6112fbb01fe484b0d9d232f1b90704fc Mon Sep 17 00:00:00 2001 From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com> Date: Sun, 3 Dec 2023 21:59:20 +0300 Subject: [PATCH 25/61] Automatic changelog for PR #936 [ci skip] --- html/changelogs/AutoChangeLog-pr-936.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-936.yml diff --git a/html/changelogs/AutoChangeLog-pr-936.yml b/html/changelogs/AutoChangeLog-pr-936.yml new file mode 100644 index 00000000000..ecc30652adb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-936.yml @@ -0,0 +1,6 @@ +author: "san7890" +delete-after: True +changes: + - balance: "The Meat Hook will now \"ground\" you whenever you fire it out at someone. You get a very small immobilization every time you fire, which \"upgrades\" to a full immobilization whenever you actually hit an atom and start to drag it in." + - bugfix: "A chain should now show up as you drag in something with the meat hooks." + - bugfix: "Meat hooks should no longer play the \"magical gun\" suicide if you were to use it, but instead do their own unique thing." \ No newline at end of file From c306565c364edf3432a793ea3281f1ffa3385153 Mon Sep 17 00:00:00 2001 From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com> Date: Sun, 3 Dec 2023 21:59:31 +0300 Subject: [PATCH 26/61] Automatic changelog for PR #937 [ci skip] --- html/changelogs/AutoChangeLog-pr-937.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-937.yml diff --git a/html/changelogs/AutoChangeLog-pr-937.yml b/html/changelogs/AutoChangeLog-pr-937.yml new file mode 100644 index 00000000000..787f36c2a0d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-937.yml @@ -0,0 +1,4 @@ +author: "Profakos" +delete-after: True +changes: + - rscdel: "Removes the slime's reagent holder. This will make them not slow down from somehow imbibing morphine or frostoil." \ No newline at end of file From b3310ef683971880666ad398fe0c5d5f334fb631 Mon Sep 17 00:00:00 2001 From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com> Date: Sun, 3 Dec 2023 22:00:14 +0300 Subject: [PATCH 27/61] Automatic changelog for PR #939 [ci skip] --- html/changelogs/AutoChangeLog-pr-939.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-939.yml diff --git a/html/changelogs/AutoChangeLog-pr-939.yml b/html/changelogs/AutoChangeLog-pr-939.yml new file mode 100644 index 00000000000..56f29cb6626 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-939.yml @@ -0,0 +1,5 @@ +author: "distributivgesetz" +delete-after: True +changes: + - balance: "Clone damage dealt by the cosmic blade has been replaced with organ damage and increased burn damage. Clone damage dealt by the cosmic beam has been removed. The star gazer now deals burn damage instead of clone damage." + - bugfix: "The health of mobs combo'd by a cosmic blade will now update correctly." \ No newline at end of file From aa76ebcb54c6c3e55326dbeaef39a269618e7621 Mon Sep 17 00:00:00 2001 From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com> Date: Sun, 3 Dec 2023 22:00:55 +0300 Subject: [PATCH 28/61] Automatic changelog for PR #923 [ci skip] --- html/changelogs/AutoChangeLog-pr-923.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-923.yml diff --git a/html/changelogs/AutoChangeLog-pr-923.yml b/html/changelogs/AutoChangeLog-pr-923.yml new file mode 100644 index 00000000000..32fad7d2f38 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-923.yml @@ -0,0 +1,4 @@ +author: "Rhials" +delete-after: True +changes: + - spellcheck: "Fixes a typo in the Factory Quartermaster outfit name." \ No newline at end of file From 51c881e4d99db5e6a774407dbe22e124450a78c0 Mon Sep 17 00:00:00 2001 From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com> Date: Sun, 3 Dec 2023 22:04:04 +0300 Subject: [PATCH 29/61] Automatic changelog for PR #924 [ci skip] --- html/changelogs/AutoChangeLog-pr-924.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-924.yml diff --git a/html/changelogs/AutoChangeLog-pr-924.yml b/html/changelogs/AutoChangeLog-pr-924.yml new file mode 100644 index 00000000000..02754ebb5bf --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-924.yml @@ -0,0 +1,4 @@ +author: "MrMelbert" +delete-after: True +changes: + - bugfix: "smartfridges no longer show false overlays" \ No newline at end of file From e285dcf8fafd0028e88f4f9d2afbfe6bc5075170 Mon Sep 17 00:00:00 2001 From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com> Date: Sun, 3 Dec 2023 22:04:42 +0300 Subject: [PATCH 30/61] Automatic changelog for PR #930 [ci skip] --- html/changelogs/AutoChangeLog-pr-930.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-930.yml diff --git a/html/changelogs/AutoChangeLog-pr-930.yml b/html/changelogs/AutoChangeLog-pr-930.yml new file mode 100644 index 00000000000..64e1174f124 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-930.yml @@ -0,0 +1,4 @@ +author: "Jackraxxus" +delete-after: True +changes: + - bugfix: "Digi legs work with the QM's jumpskirt" \ No newline at end of file From 1dfaa02bbc95a985195c325dd0470e7fd20d45e6 Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Sun, 3 Dec 2023 22:05:05 +0300 Subject: [PATCH 31/61] [MIRROR] [NO GBP] Fixes blocking tackles forcing people to be stunned when they shouldn't be (both tackler and potentially blocker) [MDB IGNORE] (#25398) (#942) * [NO GBP] Fixes blocking tackles forcing people to be stunned when they shouldn't be (both tackler and potentially blocker) (#80075) ## About The Pull Request Fixes https://github.com/tgstation/tgstation/issues/80047 ## Why It's Good For The Game This shouldn't be happen and it's my fault, oops. ## Changelog :cl: fix: Blocking a tackler no longer causes things to go haywire and stun the tackler/the tackle victim. /:cl: * [NO GBP] Fixes blocking tackles forcing people to be stunned when they shouldn't be (both tackler and potentially blocker) --------- Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com> --- code/datums/components/tackle.dm | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/code/datums/components/tackle.dm b/code/datums/components/tackle.dm index 1148e2b5993..e4027e4565c 100644 --- a/code/datums/components/tackle.dm +++ b/code/datums/components/tackle.dm @@ -154,15 +154,17 @@ var/mob/living/carbon/target = hit var/tackle_word = isfeline(user) ? "pounce" : "tackle" //If cat, "pounce" instead of "tackle". // SKYRAT EDIT - FELINE TRAITS - ORIGINAL : var/tackle_word = isfelinid(user) ? "pounce" : "tackle" + var/roll = rollTackle(target) + tackling = FALSE + tackle.gentle = TRUE + if(target.check_block(user, 0, user.name, attack_type = LEAP_ATTACK)) user.visible_message(span_danger("[user]'s tackle is blocked by [target], softening the effect!"), span_userdanger("Your tackle is blocked by [target], softening the effect!"), ignored_mobs = target) to_chat(target, span_userdanger("[target] blocks [user]'s tackle attempt, softening the effect!")) neutral_outcome(user, target, tackle_word) //Forces a neutral outcome so you're not screwed too much from being blocked while tackling - return + return COMPONENT_MOVABLE_IMPACT_FLIP_HITPUSH + - var/roll = rollTackle(target) - tackling = FALSE - tackle.gentle = TRUE switch(roll) if(-INFINITY to -1) From ebc43325bf06c673f568150596643ebfb609659d Mon Sep 17 00:00:00 2001 From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com> Date: Sun, 3 Dec 2023 22:05:10 +0300 Subject: [PATCH 32/61] Automatic changelog for PR #925 [ci skip] --- html/changelogs/AutoChangeLog-pr-925.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-925.yml diff --git a/html/changelogs/AutoChangeLog-pr-925.yml b/html/changelogs/AutoChangeLog-pr-925.yml new file mode 100644 index 00000000000..1e53642eaa9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-925.yml @@ -0,0 +1,4 @@ +author: "distributivgesetz" +delete-after: True +changes: + - spellcheck: "Occurrences of \"recieve\" has been changed to \"receive\"." \ No newline at end of file From 2493b394c62004ab980f07bc74931a026e5e6a15 Mon Sep 17 00:00:00 2001 From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com> Date: Sun, 3 Dec 2023 22:05:12 +0300 Subject: [PATCH 33/61] Automatic changelog for PR #841 [ci skip] --- html/changelogs/AutoChangeLog-pr-841.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-841.yml diff --git a/html/changelogs/AutoChangeLog-pr-841.yml b/html/changelogs/AutoChangeLog-pr-841.yml new file mode 100644 index 00000000000..97e3f238722 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-841.yml @@ -0,0 +1,4 @@ +author: "jjpark-kb" +delete-after: True +changes: + - rscadd: "added a new derelict station (for drones)-- Babylon Station 13" \ No newline at end of file From 415f39b85f07165c9dc04bcf386cd58fd4489238 Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Sun, 3 Dec 2023 22:05:26 +0300 Subject: [PATCH 34/61] [MIRROR] Adds the message server key to the Chief Engineer's memories. [MDB IGNORE] (#25401) (#940) * Adds the message server key to the Chief Engineer's memories. (#80063) ## About The Pull Request Like the captain has innate knowledge of the golden safe code, the Chief Engineer should know the daily key of the message server. ## Why It's Good For The Game It's a perk of the job. ## Changelog :cl: add: Added the daily (roundstart) message server key to the Chief Engineer's memories. /:cl: --------- * Adds the message server key to the Chief Engineer's memories. --------- Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> Co-authored-by: distributivgesetz --- code/datums/memory/key_memories.dm | 23 ++++++++++++++ .../telecomms/machines/message_server.dm | 31 ++++++++++--------- code/modules/jobs/job_types/chief_engineer.dm | 4 +++ 3 files changed, 43 insertions(+), 15 deletions(-) diff --git a/code/datums/memory/key_memories.dm b/code/datums/memory/key_memories.dm index d777df72e38..48d4b0326e2 100644 --- a/code/datums/memory/key_memories.dm +++ b/code/datums/memory/key_memories.dm @@ -213,3 +213,26 @@ "[protagonist_name] being arrested by security for [crimes].", "[protagonist_name] committing the crimes of [crimes].", ) + +/datum/memory/key/message_server_key + var/decrypt_key + +/datum/memory/key/message_server_key/New( + datum/mind/memorizer_mind, + atom/protagonist, + atom/deuteragonist, + atom/antagonist, + decrypt_key, +) + src.decrypt_key = decrypt_key + return ..() + +/datum/memory/key/message_server_key/get_names() + return list("The daily message server key is [decrypt_key]. Keep it a secret from the clown.") + +/datum/memory/key/message_server_key/get_starts() + return list( + "A sticky note attached to a monitor with [decrypt_key] written on it.", + "Poly the parrot screaming \"[decrypt_key]!\" over and over again.", + "[protagonist_name] spilling coffee over the message monitor while typing [decrypt_key].", + ) diff --git a/code/game/machinery/telecomms/machines/message_server.dm b/code/game/machinery/telecomms/machines/message_server.dm index 6faad6f5eab..946a0a8d6ad 100644 --- a/code/game/machinery/telecomms/machines/message_server.dm +++ b/code/game/machinery/telecomms/machines/message_server.dm @@ -101,9 +101,6 @@ /obj/machinery/telecomms/message_server/Initialize(mapload) . = ..() - if (!decryptkey) - decryptkey = generate_key() - if (calibrating) calibrating += world.time say("Calibrating... Estimated wait time: [rand(3, 9)] minutes.") @@ -122,17 +119,6 @@ if(calibrating) . += span_warning("It's still calibrating.") -/** - * Handles generating a key for the message server, returning it. Doesn't assign - * it in this proc, you have to do so yourself. - */ -/obj/machinery/telecomms/message_server/proc/generate_key() - var/generated_key - generated_key += pick("the", "if", "of", "as", "in", "a", "you", "from", "to", "an", "too", "little", "snow", "dead", "drunk", "rosebud", "duck", "al", "le") - generated_key += pick("diamond", "beer", "mushroom", "assistant", "clown", "captain", "twinkie", "security", "nuke", "small", "big", "escape", "yellow", "gloves", "monkey", "engine", "nuclear", "ai") - generated_key += pick("1", "2", "3", "4", "5", "6", "7", "8", "9", "0") - return generated_key - /obj/machinery/telecomms/message_server/process() . = ..() if(calibrating && calibrating <= world.time) @@ -172,9 +158,24 @@ id = "Messaging Server" network = "tcommsat" autolinkers = list("messaging") - decryptkey = null //random calibrating = 0 +GLOBAL_VAR(preset_station_message_server_key) + +/obj/machinery/telecomms/message_server/preset/Initialize(mapload) + . = ..() + // Just in case there are multiple preset messageservers somehow once the CE arrives, + // we want those on the station to share the same preset default decrypt key shown in his memories. + var/is_on_station = is_station_level(z) + if(is_on_station && GLOB.preset_station_message_server_key) + decryptkey = GLOB.preset_station_message_server_key + return + //Generate a random password for the message server + decryptkey = pick("the", "if", "of", "as", "in", "a", "you", "from", "to", "an", "too", "little", "snow", "dead", "drunk", "rosebud", "duck", "al", "le") + decryptkey += pick("diamond", "beer", "mushroom", "assistant", "clown", "captain", "twinkie", "security", "nuke", "small", "big", "escape", "yellow", "gloves", "monkey", "engine", "nuclear", "ai") + decryptkey += "[rand(0, 9)]" + if(is_on_station) + GLOB.preset_station_message_server_key = decryptkey // Root messaging signal datum /datum/signal/subspace/messaging diff --git a/code/modules/jobs/job_types/chief_engineer.dm b/code/modules/jobs/job_types/chief_engineer.dm index cee7b7ca7eb..fcb26731ca1 100644 --- a/code/modules/jobs/job_types/chief_engineer.dm +++ b/code/modules/jobs/job_types/chief_engineer.dm @@ -48,6 +48,10 @@ voice_of_god_power = 1.4 //Command staff has authority +/datum/job/chief_engineer/after_spawn(mob/living/spawned, client/player_client) + . = ..() + spawned.add_mob_memory(/datum/memory/key/message_server_key, decrypt_key = GLOB.preset_station_message_server_key) + /datum/job/chief_engineer/get_captaincy_announcement(mob/living/captain) return "Due to staffing shortages, newly promoted Acting Captain [captain.real_name] on deck!" From 93aad4371b8faa2aae6e8d605da68dbb4a97b6bd Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Sun, 3 Dec 2023 23:14:48 +0300 Subject: [PATCH 35/61] [MIRROR] i accidentally made the twitch overdose not kill you through tox that hard oops (#922) * [NO GBP] i accidentally made the twitch overdose not kill you through tox that hard oops (#25394) i blame the krokodil code for this one Co-authored-by: Hatterhat * mc resolve --------- Co-authored-by: Hatterhat <31829017+Hatterhat@users.noreply.github.com> Co-authored-by: Hatterhat Co-authored-by: ReezeBL --- .../modules/deforest_medical_items/code/chemicals/twitch.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_skyrat/modules/deforest_medical_items/code/chemicals/twitch.dm b/modular_skyrat/modules/deforest_medical_items/code/chemicals/twitch.dm index 19946782c95..d3016e10bbe 100644 --- a/modular_skyrat/modules/deforest_medical_items/code/chemicals/twitch.dm +++ b/modular_skyrat/modules/deforest_medical_items/code/chemicals/twitch.dm @@ -164,7 +164,7 @@ our_guy.set_jitter_if_lower(10 SECONDS * REM * seconds_per_tick) our_guy.adjustOrganLoss(ORGAN_SLOT_HEART, 1 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags) - our_guy.adjustToxLoss(0.25 * REM * seconds_per_tick, updating_health = FALSE, forced = TRUE, required_biotype = affected_biotype) + our_guy.adjustToxLoss(1 * REM * seconds_per_tick, updating_health = FALSE, forced = TRUE, required_biotype = affected_biotype) if(SPT_PROB(5, seconds_per_tick)) to_chat(our_guy, span_danger("You cough up a splatter of blood!")) From b7bda52f63e65bf62fc7945c8951d8702df3527f Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Sun, 3 Dec 2023 23:23:37 +0300 Subject: [PATCH 36/61] [MIRROR] Ports feral cats and feral cat grenades from Hippie (#933) * [MIRROR] Ports feral cats and feral cat grenades from Hippie [MDB IGNORE] (#25372) Ports feral cats and feral cat grenades from Hippie Co-authored-by: Vekter Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> * mc resolve --------- Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Co-authored-by: Vekter Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> Co-authored-by: ReezeBL --- code/__DEFINES/mobfactions.dm | 2 ++ code/game/objects/items/grenades/spawnergrenade.dm | 6 ++++++ code/modules/mob/living/basic/pets/cat/feral.dm | 9 +++++++++ code/modules/uplink/uplink_items/dangerous.dm | 7 +++++++ tgstation.dme | 1 + 5 files changed, 25 insertions(+) create mode 100644 code/modules/mob/living/basic/pets/cat/feral.dm diff --git a/code/__DEFINES/mobfactions.dm b/code/__DEFINES/mobfactions.dm index a7dcbee90e8..d503a499d0d 100644 --- a/code/__DEFINES/mobfactions.dm +++ b/code/__DEFINES/mobfactions.dm @@ -21,6 +21,8 @@ #define FACTION_CLOWN "clowns" /// Headslugs #define FACTION_CREATURE "creature" +/// Cats +#define FACTION_CAT "cat" /// Faithless and shadowpeople #define FACTION_FAITHLESS "faithless" /// Gnomes diff --git a/code/game/objects/items/grenades/spawnergrenade.dm b/code/game/objects/items/grenades/spawnergrenade.dm index 1b9d9ff27d0..df3739afcc6 100644 --- a/code/game/objects/items/grenades/spawnergrenade.dm +++ b/code/game/objects/items/grenades/spawnergrenade.dm @@ -71,3 +71,9 @@ inhand_icon_state = null spawner_type = /mob/living/basic/clown/mutant deliveryamt = 5 + +/obj/item/grenade/spawnergrenade/cat + name = "Catnade" + desc = "You can hear faint meowing and the sounds of claws on metal coming from within." + spawner_type = /mob/living/basic/pet/cat/feral + deliveryamt = 5 diff --git a/code/modules/mob/living/basic/pets/cat/feral.dm b/code/modules/mob/living/basic/pets/cat/feral.dm new file mode 100644 index 00000000000..7bb27cd6b4b --- /dev/null +++ b/code/modules/mob/living/basic/pets/cat/feral.dm @@ -0,0 +1,9 @@ +/mob/living/basic/pet/cat/feral + name = "feral cat" + desc = "Kitty!! Wait, no no DON'T BITE-" + health = 30 + maxHealth = 30 + melee_damage_lower = 15 + melee_damage_upper = 7 + ai_controller = /datum/ai_controller/basic_controller/simple_hostile + faction = list(FACTION_CAT, ROLE_SYNDICATE) diff --git a/code/modules/uplink/uplink_items/dangerous.dm b/code/modules/uplink/uplink_items/dangerous.dm index e84657e7884..4574bd7f48e 100644 --- a/code/modules/uplink/uplink_items/dangerous.dm +++ b/code/modules/uplink/uplink_items/dangerous.dm @@ -96,3 +96,10 @@ cost = 13 surplus = 50 purchasable_from = ~(UPLINK_NUKE_OPS | UPLINK_CLOWN_OPS) //nukies get their own version + +/datum/uplink_item/dangerous/cat + name = "Feral cat grenade" + desc = "This grenade is filled with 5 feral cats in stasis. Upon activation, the feral cats are awoken and unleashed unto unlucky bystanders. WARNING: The cats are not trained to discern friend from foe!" + cost = 5 + item = /obj/item/grenade/spawnergrenade/cat + surplus = 30 diff --git a/tgstation.dme b/tgstation.dme index 1b8e00516fd..2784f96810e 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -4691,6 +4691,7 @@ #include "code\modules\mob\living\basic\pets\penguin.dm" #include "code\modules\mob\living\basic\pets\pet.dm" #include "code\modules\mob\living\basic\pets\sloth.dm" +#include "code\modules\mob\living\basic\pets\cat\feral.dm" #include "code\modules\mob\living\basic\pets\dog\_dog.dm" #include "code\modules\mob\living\basic\pets\dog\corgi.dm" #include "code\modules\mob\living\basic\pets\dog\dog_subtypes.dm" From 85ec3c7f874b0c34d273051d64de153b78bf3d44 Mon Sep 17 00:00:00 2001 From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com> Date: Sun, 3 Dec 2023 23:31:35 +0300 Subject: [PATCH 37/61] Automatic changelog for PR #942 [ci skip] --- html/changelogs/AutoChangeLog-pr-942.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-942.yml diff --git a/html/changelogs/AutoChangeLog-pr-942.yml b/html/changelogs/AutoChangeLog-pr-942.yml new file mode 100644 index 00000000000..d1f49ace3fd --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-942.yml @@ -0,0 +1,4 @@ +author: "necromanceranne" +delete-after: True +changes: + - bugfix: "Blocking a tackler no longer causes things to go haywire and stun the tackler/the tackle victim." \ No newline at end of file From ed79b618f4202b7a3a6af26c28709097c7876150 Mon Sep 17 00:00:00 2001 From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com> Date: Sun, 3 Dec 2023 23:39:14 +0300 Subject: [PATCH 38/61] Automatic changelog for PR #940 [ci skip] --- html/changelogs/AutoChangeLog-pr-940.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-940.yml diff --git a/html/changelogs/AutoChangeLog-pr-940.yml b/html/changelogs/AutoChangeLog-pr-940.yml new file mode 100644 index 00000000000..1281cbded00 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-940.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - rscadd: "Added the daily (roundstart) message server key to the Chief Engineer's memories." \ No newline at end of file From f16aeea4ff7a98b3f12216076f39e3cc53c2f147 Mon Sep 17 00:00:00 2001 From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com> Date: Sun, 3 Dec 2023 23:53:16 +0300 Subject: [PATCH 39/61] Automatic changelog for PR #933 [ci skip] --- html/changelogs/AutoChangeLog-pr-933.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-933.yml diff --git a/html/changelogs/AutoChangeLog-pr-933.yml b/html/changelogs/AutoChangeLog-pr-933.yml new file mode 100644 index 00000000000..9fdcab753cc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-933.yml @@ -0,0 +1,5 @@ +author: "Vekter" +delete-after: True +changes: + - rscadd: "Added a new hostile variant of cats, \"feral cats\"." + - rscadd: "Added a new traitor item, \"feral cat grenades\". For 5 TC, you too can throw a grenade at someone and make five cats maul them to death." \ No newline at end of file From 484dc9a9bb858729fc0127b03fd5e757bd6f51c7 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Mon, 4 Dec 2023 01:06:41 +0000 Subject: [PATCH 40/61] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-740.yml | 5 -- html/changelogs/AutoChangeLog-pr-841.yml | 4 -- html/changelogs/AutoChangeLog-pr-908.yml | 5 -- html/changelogs/AutoChangeLog-pr-909.yml | 4 -- html/changelogs/AutoChangeLog-pr-918.yml | 4 -- html/changelogs/AutoChangeLog-pr-919.yml | 6 --- html/changelogs/AutoChangeLog-pr-923.yml | 4 -- html/changelogs/AutoChangeLog-pr-924.yml | 4 -- html/changelogs/AutoChangeLog-pr-925.yml | 4 -- html/changelogs/AutoChangeLog-pr-930.yml | 4 -- html/changelogs/AutoChangeLog-pr-931.yml | 4 -- html/changelogs/AutoChangeLog-pr-932.yml | 4 -- html/changelogs/AutoChangeLog-pr-933.yml | 5 -- html/changelogs/AutoChangeLog-pr-936.yml | 6 --- html/changelogs/AutoChangeLog-pr-937.yml | 4 -- html/changelogs/AutoChangeLog-pr-939.yml | 5 -- html/changelogs/AutoChangeLog-pr-940.yml | 4 -- html/changelogs/AutoChangeLog-pr-942.yml | 4 -- html/changelogs/archive/2023-12.yml | 59 ++++++++++++++++++++++++ 19 files changed, 59 insertions(+), 80 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-740.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-841.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-908.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-909.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-918.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-919.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-923.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-924.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-925.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-930.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-931.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-932.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-933.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-936.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-937.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-939.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-940.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-942.yml diff --git a/html/changelogs/AutoChangeLog-pr-740.yml b/html/changelogs/AutoChangeLog-pr-740.yml deleted file mode 100644 index 5be58bef7f5..00000000000 --- a/html/changelogs/AutoChangeLog-pr-740.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "YesterdaysPromise" -delete-after: True -changes: - - image: "Following now have unique item sprites: syndicate war declaration radio, curator and chief beacon's, chaplain beacon." - - image: "Following now have unique inhand sprites: radio, export scanner, walkie-talkie, syndicate war declaration radio, curator and chief beacon's, chaplain beacon." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-841.yml b/html/changelogs/AutoChangeLog-pr-841.yml deleted file mode 100644 index 97e3f238722..00000000000 --- a/html/changelogs/AutoChangeLog-pr-841.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "jjpark-kb" -delete-after: True -changes: - - rscadd: "added a new derelict station (for drones)-- Babylon Station 13" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-908.yml b/html/changelogs/AutoChangeLog-pr-908.yml deleted file mode 100644 index 9dfc802f117..00000000000 --- a/html/changelogs/AutoChangeLog-pr-908.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Vekter" -delete-after: True -changes: - - rscdel: "Replaced the \"monkey cube\" in Birdshot's tool storage with a different \"monkey cube\"." - - rscadd: "Added a fun surprise item to Birdshot's tool storage to compensate for the above change." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-909.yml b/html/changelogs/AutoChangeLog-pr-909.yml deleted file mode 100644 index e927e5b6c8d..00000000000 --- a/html/changelogs/AutoChangeLog-pr-909.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Fikou" -delete-after: True -changes: - - rscadd: "Instead of punished sect healing people like the normal bibble- you take their burdens on instead!" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-918.yml b/html/changelogs/AutoChangeLog-pr-918.yml deleted file mode 100644 index aaa0efb7110..00000000000 --- a/html/changelogs/AutoChangeLog-pr-918.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Hatterhat" -delete-after: True -changes: - - bugfix: "The toxin damage from overdosing on TWitch now respects server tickrate/REM." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-919.yml b/html/changelogs/AutoChangeLog-pr-919.yml deleted file mode 100644 index 9722aa69845..00000000000 --- a/html/changelogs/AutoChangeLog-pr-919.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "tralezab" -delete-after: True -changes: - - balance: "Honorbound no longer cares about innocence when it comes to lesser creatures. They can still be considered unready in some cases." - - balance: "Attacking a cultist with a halo or a nuclear operative first instantly makes THEM guilty, allowing further attacks." - - balance: "More favor for converting someone to the honorbound rules" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-923.yml b/html/changelogs/AutoChangeLog-pr-923.yml deleted file mode 100644 index 32fad7d2f38..00000000000 --- a/html/changelogs/AutoChangeLog-pr-923.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Rhials" -delete-after: True -changes: - - spellcheck: "Fixes a typo in the Factory Quartermaster outfit name." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-924.yml b/html/changelogs/AutoChangeLog-pr-924.yml deleted file mode 100644 index 02754ebb5bf..00000000000 --- a/html/changelogs/AutoChangeLog-pr-924.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "MrMelbert" -delete-after: True -changes: - - bugfix: "smartfridges no longer show false overlays" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-925.yml b/html/changelogs/AutoChangeLog-pr-925.yml deleted file mode 100644 index 1e53642eaa9..00000000000 --- a/html/changelogs/AutoChangeLog-pr-925.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "distributivgesetz" -delete-after: True -changes: - - spellcheck: "Occurrences of \"recieve\" has been changed to \"receive\"." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-930.yml b/html/changelogs/AutoChangeLog-pr-930.yml deleted file mode 100644 index 64e1174f124..00000000000 --- a/html/changelogs/AutoChangeLog-pr-930.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Jackraxxus" -delete-after: True -changes: - - bugfix: "Digi legs work with the QM's jumpskirt" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-931.yml b/html/changelogs/AutoChangeLog-pr-931.yml deleted file mode 100644 index e1ef37722a0..00000000000 --- a/html/changelogs/AutoChangeLog-pr-931.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "IsaacExists" -delete-after: True -changes: - - sound: "Added human laughter to felinids" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-932.yml b/html/changelogs/AutoChangeLog-pr-932.yml deleted file mode 100644 index 13166c6e94c..00000000000 --- a/html/changelogs/AutoChangeLog-pr-932.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Rhials" -delete-after: True -changes: - - qol: "Bar signs ordered from cargo will no longer be access-restricted." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-933.yml b/html/changelogs/AutoChangeLog-pr-933.yml deleted file mode 100644 index 9fdcab753cc..00000000000 --- a/html/changelogs/AutoChangeLog-pr-933.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Vekter" -delete-after: True -changes: - - rscadd: "Added a new hostile variant of cats, \"feral cats\"." - - rscadd: "Added a new traitor item, \"feral cat grenades\". For 5 TC, you too can throw a grenade at someone and make five cats maul them to death." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-936.yml b/html/changelogs/AutoChangeLog-pr-936.yml deleted file mode 100644 index ecc30652adb..00000000000 --- a/html/changelogs/AutoChangeLog-pr-936.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "san7890" -delete-after: True -changes: - - balance: "The Meat Hook will now \"ground\" you whenever you fire it out at someone. You get a very small immobilization every time you fire, which \"upgrades\" to a full immobilization whenever you actually hit an atom and start to drag it in." - - bugfix: "A chain should now show up as you drag in something with the meat hooks." - - bugfix: "Meat hooks should no longer play the \"magical gun\" suicide if you were to use it, but instead do their own unique thing." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-937.yml b/html/changelogs/AutoChangeLog-pr-937.yml deleted file mode 100644 index 787f36c2a0d..00000000000 --- a/html/changelogs/AutoChangeLog-pr-937.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Profakos" -delete-after: True -changes: - - rscdel: "Removes the slime's reagent holder. This will make them not slow down from somehow imbibing morphine or frostoil." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-939.yml b/html/changelogs/AutoChangeLog-pr-939.yml deleted file mode 100644 index 56f29cb6626..00000000000 --- a/html/changelogs/AutoChangeLog-pr-939.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "distributivgesetz" -delete-after: True -changes: - - balance: "Clone damage dealt by the cosmic blade has been replaced with organ damage and increased burn damage. Clone damage dealt by the cosmic beam has been removed. The star gazer now deals burn damage instead of clone damage." - - bugfix: "The health of mobs combo'd by a cosmic blade will now update correctly." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-940.yml b/html/changelogs/AutoChangeLog-pr-940.yml deleted file mode 100644 index 1281cbded00..00000000000 --- a/html/changelogs/AutoChangeLog-pr-940.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ghommie" -delete-after: True -changes: - - rscadd: "Added the daily (roundstart) message server key to the Chief Engineer's memories." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-942.yml b/html/changelogs/AutoChangeLog-pr-942.yml deleted file mode 100644 index d1f49ace3fd..00000000000 --- a/html/changelogs/AutoChangeLog-pr-942.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "necromanceranne" -delete-after: True -changes: - - bugfix: "Blocking a tackler no longer causes things to go haywire and stun the tackler/the tackle victim." \ No newline at end of file diff --git a/html/changelogs/archive/2023-12.yml b/html/changelogs/archive/2023-12.yml index e99df6cc6f7..04d8e98cec6 100644 --- a/html/changelogs/archive/2023-12.yml +++ b/html/changelogs/archive/2023-12.yml @@ -46,3 +46,62 @@ - bugfix: shield wall gens actually use power now - qol: shield wall gens may now be rebuilt and use some balloon alerts, and have wiring +2023-12-04: + Fikou: + - rscadd: Instead of punished sect healing people like the normal bibble- you take + their burdens on instead! + Ghommie: + - rscadd: Added the daily (roundstart) message server key to the Chief Engineer's + memories. + Hatterhat: + - bugfix: The toxin damage from overdosing on TWitch now respects server tickrate/REM. + IsaacExists: + - sound: Added human laughter to felinids + Jackraxxus: + - bugfix: Digi legs work with the QM's jumpskirt + MrMelbert: + - bugfix: smartfridges no longer show false overlays + Profakos: + - rscdel: Removes the slime's reagent holder. This will make them not slow down + from somehow imbibing morphine or frostoil. + Rhials: + - qol: Bar signs ordered from cargo will no longer be access-restricted. + - spellcheck: Fixes a typo in the Factory Quartermaster outfit name. + Vekter: + - rscdel: Replaced the "monkey cube" in Birdshot's tool storage with a different + "monkey cube". + - rscadd: Added a fun surprise item to Birdshot's tool storage to compensate for + the above change. + - rscadd: Added a new hostile variant of cats, "feral cats". + - rscadd: Added a new traitor item, "feral cat grenades". For 5 TC, you too can + throw a grenade at someone and make five cats maul them to death. + YesterdaysPromise: + - image: 'Following now have unique item sprites: syndicate war declaration radio, + curator and chief beacon''s, chaplain beacon.' + - image: 'Following now have unique inhand sprites: radio, export scanner, walkie-talkie, + syndicate war declaration radio, curator and chief beacon''s, chaplain beacon.' + distributivgesetz: + - balance: Clone damage dealt by the cosmic blade has been replaced with organ damage + and increased burn damage. Clone damage dealt by the cosmic beam has been removed. + The star gazer now deals burn damage instead of clone damage. + - bugfix: The health of mobs combo'd by a cosmic blade will now update correctly. + - spellcheck: Occurrences of "recieve" has been changed to "receive". + jjpark-kb: + - rscadd: added a new derelict station (for drones)-- Babylon Station 13 + necromanceranne: + - bugfix: Blocking a tackler no longer causes things to go haywire and stun the + tackler/the tackle victim. + san7890: + - balance: The Meat Hook will now "ground" you whenever you fire it out at someone. + You get a very small immobilization every time you fire, which "upgrades" to + a full immobilization whenever you actually hit an atom and start to drag it + in. + - bugfix: A chain should now show up as you drag in something with the meat hooks. + - bugfix: Meat hooks should no longer play the "magical gun" suicide if you were + to use it, but instead do their own unique thing. + tralezab: + - balance: Honorbound no longer cares about innocence when it comes to lesser creatures. + They can still be considered unready in some cases. + - balance: Attacking a cultist with a halo or a nuclear operative first instantly + makes THEM guilty, allowing further attacks. + - balance: More favor for converting someone to the honorbound rules From 693afe8cee48404bd89a81331bd29263b8fee8ce Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Mon, 4 Dec 2023 09:53:53 +0300 Subject: [PATCH 41/61] [MIRROR] Adds Mob Tag data to log messages + player panel [MDB IGNORE] (#25366) (#945) * Adds Mob Tag data to log messages + player panel * Update _logging.dm --------- Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Co-authored-by: san7890 Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> --- code/__HELPERS/logging/_logging.dm | 10 ++++++++- code/__HELPERS/logging/mob.dm | 9 ++++---- code/modules/admin/player_panel.dm | 20 ++++++++--------- code/modules/admin/verbs/admingame.dm | 9 ++++++++ code/modules/client/player_details.dm | 32 ++++++++++++++++++++------- code/modules/mob/login.dm | 10 +++++++-- code/modules/mob/mob.dm | 14 ++++++++++-- 7 files changed, 76 insertions(+), 28 deletions(-) diff --git a/code/__HELPERS/logging/_logging.dm b/code/__HELPERS/logging/_logging.dm index e6085c0cdc1..4ef291c5750 100644 --- a/code/__HELPERS/logging/_logging.dm +++ b/code/__HELPERS/logging/_logging.dm @@ -98,6 +98,7 @@ GLOBAL_LIST_INIT(testing_global_profiler, list("_PROFILE_NAME" = "Global")) /atom/proc/log_message(message, message_type, color = null, log_globally = TRUE) if(!log_globally) return + //SKYRAT EDIT ADDITION BEGIN #ifndef SPACEMAN_DMM if(CONFIG_GET(flag/sql_game_log) && CONFIG_GET(flag/sql_enabled)) @@ -116,7 +117,7 @@ GLOBAL_LIST_INIT(testing_global_profiler, list("_PROFILE_NAME" = "Global")) return #endif //SKYRAT EDIT ADDITION END - var/log_text = "[key_name(src)] [message] [loc_name(src)]" + var/log_text = "[key_name_and_tag(src)] [message] [loc_name(src)]" switch(message_type) /// ship both attack logs and victim logs to the end of round attack.log just to ensure we don't lose information if(LOG_ATTACK, LOG_VICTIM) @@ -266,6 +267,13 @@ GLOBAL_LIST_INIT(testing_global_profiler, list("_PROFILE_NAME" = "Global")) /proc/key_name_admin(whom, include_name = TRUE) return key_name(whom, TRUE, include_name) +/proc/key_name_and_tag(whom, include_link = null, include_name = TRUE) + var/tag = "!tagless!" // whom can be null in key_name() so lets set this as a safety + if(isatom(whom)) + var/atom/subject = whom + tag = subject.tag + return "[key_name(whom, include_link, include_name)] ([tag])" + /proc/loc_name(atom/A) if(!istype(A)) return "(INVALID LOCATION)" diff --git a/code/__HELPERS/logging/mob.dm b/code/__HELPERS/logging/mob.dm index 0a48833a261..9553a15addf 100644 --- a/code/__HELPERS/logging/mob.dm +++ b/code/__HELPERS/logging/mob.dm @@ -18,10 +18,11 @@ // Cannot use the list as a map if the key is a number, so we stringify it (thank you BYOND) var/smessage_type = num2text(message_type, MAX_BITFLAG_DIGITS) + var/datum/player_details/client_details = client?.player_details - if(client) - if(!islist(client.player_details.logging[smessage_type])) - client.player_details.logging[smessage_type] = list() + if(!isnull(client_details)) + if(!islist(client_details.logging[smessage_type])) + client_details.logging[smessage_type] = list() if(!islist(logging[smessage_type])) logging[smessage_type] = list() @@ -52,7 +53,7 @@ if(LOG_RADIO_EMOTE) colored_message = "(RADIOEMOTE) [colored_message]" - var/list/timestamped_message = list("\[[time_stamp(format = "YYYY-MM-DD hh:mm:ss")]\] [key_name(src)] [loc_name(src)] (Event #[LAZYLEN(logging[smessage_type])])" = colored_message) + var/list/timestamped_message = list("\[[time_stamp(format = "YYYY-MM-DD hh:mm:ss")]\] [key_name_and_tag(src)] [loc_name(src)] (Event #[LAZYLEN(logging[smessage_type])])" = colored_message) logging[smessage_type] += timestamped_message diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index 6f6f72af472..c8c3b660920 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -76,7 +76,7 @@ body += ""; - body += ""+job+" "+name+"
Real name "+real_name+"
Played by "+key+" ("+ip+")
Old names :"+old_names+"
"; + body += ""+job+" "+name+"
Real name "+real_name+"
Played by "+key+" ("+ip+")
Old names: "+old_names+"
"; body += ""; @@ -274,20 +274,18 @@ else M_job = "Ghost" + var/M_key = html_encode(M.key) var/M_ip_address = isnull(M.lastKnownIP) ? "+localhost+" : M.lastKnownIP - var/M_name = html_encode(M.name) var/M_rname = html_encode(M.real_name) var/M_rname_as_key = html_encode(ckey(M.real_name)) // so you can ignore punctuation if(M_rname == M_rname_as_key) M_rname_as_key = null - var/M_key = html_encode(M.key) - var/previous_names = "" - if(M_key) - var/datum/player_details/P = GLOB.player_details[ckey(M_key)] - if(P) - previous_names = P.played_names.Join(",") - previous_names = html_encode(previous_names) + + var/previous_names_string = "" + var/datum/player_details/readable = GLOB.player_details[M.ckey] + if(readable) + previous_names_string = readable.get_played_names() //output for each mob dat += {" @@ -299,12 +297,12 @@ onmouseover='expand("data[i]","item[i]")' > [M_name] - [M_rname] - [M_key] ([M_job]) - + - + diff --git a/code/modules/admin/verbs/admingame.dm b/code/modules/admin/verbs/admingame.dm index 197a870b48b..a3124c6ee41 100644 --- a/code/modules/admin/verbs/admingame.dm +++ b/code/modules/admin/verbs/admingame.dm @@ -82,6 +82,15 @@ body += "Mob type = [M.type]

" + if(M.client) + body += "Old names: " + var/datum/player_details/deets = GLOB.player_details[M.ckey] + if(deets) + body += deets.get_played_names() + else + body += "None?!" + body += "

" + body += "
Kick | " if(M.client) body += "Ban | " diff --git a/code/modules/client/player_details.dm b/code/modules/client/player_details.dm index 8931dffcdb4..3a880dcdbb5 100644 --- a/code/modules/client/player_details.dm +++ b/code/modules/client/player_details.dm @@ -13,6 +13,7 @@ GLOBAL_LIST_EMPTY(player_details) /// Callbacks invoked when this client logs out var/list/post_logout_callbacks = list() /// List of names this key played under this round + /// assoc list of name -> mob tag var/list/played_names = list() /// Lazylist of preference slots this client has joined the round under /// Numbers are stored as strings @@ -27,14 +28,29 @@ GLOBAL_LIST_EMPTY(player_details) /datum/player_details/New(key) achievements = new(key) -/proc/log_played_names(ckey, ...) +/// Writes all of the `played_names` into an HTML-escaped string. +/datum/player_details/proc/get_played_names() + var/list/previous_names = list() + for(var/previous_name in played_names) + previous_names += html_encode("[previous_name] ([played_names[previous_name]])") + return previous_names.Join("; ") + +/// Adds the new names to the player's played_names list on their /datum/player_details for use of admins. +/// `ckey` should be their ckey, and `data` should be an associative list with the keys being the names they played under and the values being the unique mob ID tied to that name. +/proc/log_played_names(ckey, data) if(!ckey) return - if(args.len < 2) + + var/datum/player_details/writable = GLOB.player_details[ckey] + if(isnull(writable)) return - var/list/names = args.Copy(2) - var/datum/player_details/P = GLOB.player_details[ckey] - if(P) - for(var/name in names) - if(name) - P.played_names |= name + + for(var/name in data) + if(!name) + continue + var/mob_tag = data[name] + var/encoded_name = html_encode(name) + if(writable.played_names.Find("[encoded_name]")) + continue + + writable.played_names += list("[encoded_name]" = mob_tag) diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm index 3038d6a97ad..51b8ed70a3b 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -34,7 +34,7 @@ add_to_player_list() lastKnownIP = client.address computer_id = client.computer_id - log_access("Mob Login: [key_name(src)] was assigned to a [type]") + log_access("Mob Login: [key_name(src)] was assigned to a [type] ([tag])") world.update_status() client.clear_screen() //remove hud items just in case client.images = list() @@ -112,7 +112,13 @@ for(var/foo in client.player_details.post_login_callbacks) var/datum/callback/CB = foo CB.Invoke() - log_played_names(client.ckey,name,real_name) + log_played_names( + client.ckey, + list( + "[name]" = tag, + "[real_name]" = tag, + ), + ) auto_deadmin_on_login() log_message("Client [key_name(src)] has taken ownership of mob [src]([src.type])", LOG_OWNERSHIP) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 30027e5ba4b..301e6db16e3 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1241,14 +1241,24 @@ log_message("[src] name changed from [oldname] to [newname]", LOG_OWNERSHIP) - log_played_names(ckey, newname) + log_played_names( + ckey, + list( + "[newname]" = tag, + ), + ) real_name = newname name = newname if(mind) mind.name = newname if(mind.key) - log_played_names(mind.key,newname) //Just in case the mind is unsynced at the moment. + log_played_names( + ckey(mind.key), + list( + "[newname]" = tag, + ), + ) //Just in case the mind is unsynced at the moment. if(oldname) //update the datacore records! This is goig to be a bit costly. From bfd4d35227ee37bf7b5767d824b90a171c988f22 Mon Sep 17 00:00:00 2001 From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com> Date: Mon, 4 Dec 2023 09:54:20 +0300 Subject: [PATCH 42/61] Automatic changelog for PR #945 [ci skip] --- html/changelogs/AutoChangeLog-pr-945.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-945.yml diff --git a/html/changelogs/AutoChangeLog-pr-945.yml b/html/changelogs/AutoChangeLog-pr-945.yml new file mode 100644 index 00000000000..c41ab9b5b98 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-945.yml @@ -0,0 +1,5 @@ +author: "san7890" +delete-after: True +changes: + - admin: "The Player Panel should now contain the unique mob tag associated to a certain mob that a player might inhabit at one time, which is stored on their player details datum on their client (which is guaranteed to always exist)." + - admin: "The \"Old Names\" details of a player is now visible in their own personal per-player player panel." \ No newline at end of file From 351e4c85fcf53c8f86de9798b8baad607653e09e Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Mon, 4 Dec 2023 09:54:29 +0300 Subject: [PATCH 43/61] [MIRROR] Patches Up Gifts In Anticipation Of The Holidays [MDB IGNORE] (#25383) (#943) * Patches Up Gifts In Anticipation Of The Holidays (#80035) ## About The Pull Request I decided to look at why everyone loves (and I despise) Christmas too much, and was met with a lot of smelly code. In fact, some of it was completely busted! Let's fix several things. * We no longer use a GLOB for "every possible item you can cram into a gift box", we now use static lists scoped to the proc. That saves us some pollution for something that really didn't need it (and only was set up that way for cacheing I believe). We also static-cache stuff that we weren't doing previously, to save even more work (in anticipation for entropic heat death of universe). * Repaths `/obj/item/a_gift` to `/obj/item/gift`. I never liked the old path and this new one is cleaner. This also uncovered a bug. * Mappers would var-edit gifts to have a unique mapped-in type, but the code never respected this. I fixed it so the behavior should now respect that rather than override the variable on Initialize(). Now the goat plushie gift will always have said goat plushie rather than just any toy. * Procs should now have the proper arg nomenclature. * Also just cleans up a lot of single letter variables and the like. There was some cooked shit that's now alphabetized and nicely multilined. ## Why It's Good For The Game Ho ho ho. ## Changelog :cl: fix: Some mapped-in gifts that were supposed to guarantee a certain gift weren't spawning that exact gift type, this has been patched to reflect the mapper's intent. /:cl: * Patches Up Gifts In Anticipation Of The Holidays * Update flora.dm --------- Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Co-authored-by: san7890 Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> --- .../LavaRuins/lavaland_surface_pizzaparty.dmm | 10 +- code/game/machinery/computer/arcade/arcade.dm | 2 +- code/game/objects/items/gift.dm | 165 +++++++++--------- code/game/objects/items/storage/backpack.dm | 2 +- code/game/objects/structures/flora.dm | 2 +- code/modules/clothing/outfits/event.dm | 4 +- code/modules/holiday/holidays.dm | 4 +- .../spells/spell_types/conjure/presents.dm | 2 +- modular_skyrat/modules/holidays/flora.dm | 4 +- .../Scripts/80035_gift_renaming.txt | 1 + 10 files changed, 102 insertions(+), 94 deletions(-) create mode 100644 tools/UpdatePaths/Scripts/80035_gift_renaming.txt diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm index 8fc2a2b03de..f05c972ec35 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm @@ -377,10 +377,10 @@ /obj/structure/rack, /obj/item/storage/box/lights/bulbs, /obj/item/storage/toolbox/mechanical/old, -/obj/item/a_gift{ +/obj/item/gift{ contains_type = /obj/item/gun/ballistic/automatic/toy/unrestricted }, -/obj/item/a_gift{ +/obj/item/gift{ contains_type = /obj/item/gun/ballistic/automatic/pistol/toy }, /obj/item/ammo_box/foambox, @@ -524,13 +524,13 @@ /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/directional/south, -/obj/item/a_gift{ +/obj/item/gift{ contains_type = /obj/item/toy/plush/goatplushie; pixel_x = 7; pixel_y = 6 }, /obj/structure/sign/clock/directional/south, -/obj/item/a_gift{ +/obj/item/gift{ contains_type = /obj/item/toy/plush/ratplush; pixel_x = -4; pixel_y = 2 @@ -713,7 +713,7 @@ /obj/structure/table, /obj/effect/turf_decal/tile/yellow/diagonal_edge, /obj/effect/turf_decal/tile/neutral/diagonal_centre, -/obj/item/a_gift{ +/obj/item/gift{ contains_type = /obj/item/toy/figure/wizard }, /turf/open/floor/iron/diagonal/lavaland, diff --git a/code/game/machinery/computer/arcade/arcade.dm b/code/game/machinery/computer/arcade/arcade.dm index 9ff935a9165..b9e8bd9d1e9 100644 --- a/code/game/machinery/computer/arcade/arcade.dm +++ b/code/game/machinery/computer/arcade/arcade.dm @@ -695,4 +695,4 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( /obj/machinery/computer/arcade/amputation/festive //dispenses wrapped gifts instead of arcade prizes, also known as the ancap christmas tree name = "Mediborg's Festive Amputation Adventure" desc = "A picture of a blood-soaked medical cyborg wearing a Santa hat flashes on the screen. The mediborg has a speech bubble that says, \"Put your hand in the machine if you aren't a coward!\"" - prize_override = list(/obj/item/a_gift/anything = 1) + prize_override = list(/obj/item/gift/anything = 1) diff --git a/code/game/objects/items/gift.dm b/code/game/objects/items/gift.dm index 324151feddb..866945d9440 100644 --- a/code/game/objects/items/gift.dm +++ b/code/game/objects/items/gift.dm @@ -1,16 +1,10 @@ -/* Gifts and wrapping paper +/* Gifts * Contains: * Gifts - * Wrapping Paper */ -/* - * Gifts - */ - -GLOBAL_LIST_EMPTY(possible_gifts) - -/obj/item/a_gift +/// Gifts to give to players, will contain a nice toy or other fun item for them to play with. +/obj/item/gift name = "gift" desc = "PRESENTS!!!! eek!" icon = 'icons/obj/storage/wrapping.dmi' @@ -18,99 +12,112 @@ GLOBAL_LIST_EMPTY(possible_gifts) inhand_icon_state = "gift" resistance_flags = FLAMMABLE - var/obj/item/contains_type + /// What type of thing are we guaranteed to spawn in with? + var/obj/item/contains_type = null -/obj/item/a_gift/Initialize(mapload) +/obj/item/gift/Initialize(mapload) . = ..() pixel_x = rand(-10,10) pixel_y = rand(-10,10) icon_state = "giftdeliverypackage[rand(1,5)]" - contains_type = get_gift_type() + if(isnull(contains_type)) + contains_type = get_gift_type() -/obj/item/a_gift/suicide_act(mob/living/user) +/obj/item/gift/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] peeks inside [src] and cries [user.p_them()]self to death! It looks like [user.p_they()] [user.p_were()] on the naughty list...")) return BRUTELOSS -/obj/item/a_gift/examine(mob/M) +/obj/item/gift/examine(mob/user) . = ..() - if(HAS_MIND_TRAIT(M, TRAIT_PRESENT_VISION) || isobserver(M)) + if(HAS_MIND_TRAIT(user, TRAIT_PRESENT_VISION) || isobserver(user)) . += span_notice("It contains \a [initial(contains_type.name)].") -/obj/item/a_gift/attack_self(mob/M) - if(HAS_MIND_TRAIT(M, TRAIT_CANNOT_OPEN_PRESENTS)) - to_chat(M, span_warning("You're supposed to be spreading gifts, not opening them yourself!")) +/obj/item/gift/attack_self(mob/user) + if(HAS_MIND_TRAIT(user, TRAIT_CANNOT_OPEN_PRESENTS)) + to_chat(user, span_warning("You're supposed to be spreading gifts, not opening them yourself!")) return - qdel(src) + moveToNullspace() + + var/obj/item/thing = new contains_type(get_turf(user)) - var/obj/item/I = new contains_type(get_turf(M)) - if (!QDELETED(I)) //might contain something like metal rods that might merge with a stack on the ground - M.visible_message(span_notice("[M] unwraps \the [src], finding \a [I] inside!")) - M.investigate_log("has unwrapped a present containing [I.type].", INVESTIGATE_PRESENTS) - M.put_in_hands(I) - I.add_fingerprint(M) + if (QDELETED(thing)) //might contain something like metal rods that might merge with a stack on the ground + user.visible_message(span_danger("Oh no! The present that [user] opened had nothing inside it!")) else - M.visible_message(span_danger("Oh no! The present that [M] opened had nothing inside it!")) - -/obj/item/a_gift/proc/get_gift_type() - var/gift_type_list = list(/obj/item/sord, - /obj/item/storage/wallet, - /obj/item/storage/photo_album, - /obj/item/storage/box/snappops, - /obj/item/storage/crayons, - /obj/item/storage/backpack/holding, - /obj/item/storage/belt/champion, - /obj/item/soap/deluxe, - /obj/item/pickaxe/diamond, - /obj/item/pen/invisible, - /obj/item/lipstick/random, - /obj/item/grenade/smokebomb, - /obj/item/grown/corncob, - /obj/item/poster/random_contraband, - /obj/item/poster/random_official, - /obj/item/book/manual/wiki/barman_recipes, - /obj/item/book/manual/chef_recipes, - /obj/item/bikehorn, - /obj/item/toy/beach_ball, - /obj/item/toy/basketball, - /obj/item/banhammer, - /obj/item/food/grown/ambrosia/deus, - /obj/item/food/grown/ambrosia/vulgaris, - /obj/item/pai_card, - /obj/item/instrument/violin, - /obj/item/instrument/guitar, - /obj/item/storage/belt/utility/full, - /obj/item/clothing/neck/tie/horrible, - /obj/item/clothing/suit/jacket/leather, - /obj/item/clothing/suit/jacket/leather/biker, - /obj/item/clothing/suit/costume/poncho, - /obj/item/clothing/suit/costume/poncho/green, - /obj/item/clothing/suit/costume/poncho/red, - /obj/item/clothing/suit/costume/snowman, - /obj/item/clothing/head/costume/snowman, - /obj/item/stack/sheet/mineral/coal) - - gift_type_list += subtypesof(/obj/item/clothing/head/collectable) - gift_type_list += subtypesof(/obj/item/toy) - (((typesof(/obj/item/toy/cards) - /obj/item/toy/cards/deck) + /obj/item/toy/figure + /obj/item/toy/ammo)) //All toys, except for abstract types and syndicate cards. + user.visible_message(span_notice("[user] unwraps \the [src], finding \a [thing] inside!")) + user.investigate_log("has unwrapped a present containing [thing.type].", INVESTIGATE_PRESENTS) + user.put_in_hands(thing) + thing.add_fingerprint(user) - var/gift_type = pick(gift_type_list) + qdel(src) - return gift_type +/obj/item/gift/proc/get_gift_type() + var/static/list/gift_type_list = null + + if(isnull(gift_type_list)) + gift_type_list = list( + /obj/item/banhammer, + /obj/item/bikehorn, + /obj/item/book/manual/chef_recipes, + /obj/item/book/manual/wiki/barman_recipes, + /obj/item/clothing/head/costume/snowman, + /obj/item/clothing/neck/tie/horrible, + /obj/item/clothing/suit/costume/poncho, + /obj/item/clothing/suit/costume/poncho/green, + /obj/item/clothing/suit/costume/poncho/red, + /obj/item/clothing/suit/costume/snowman, + /obj/item/clothing/suit/jacket/leather, + /obj/item/clothing/suit/jacket/leather/biker, + /obj/item/food/grown/ambrosia/deus, + /obj/item/food/grown/ambrosia/vulgaris, + /obj/item/grenade/smokebomb, + /obj/item/grown/corncob, + /obj/item/instrument/guitar, + /obj/item/instrument/violin, + /obj/item/lipstick/random, + /obj/item/pai_card, + /obj/item/pen/invisible, + /obj/item/pickaxe/diamond, + /obj/item/poster/random_contraband, + /obj/item/poster/random_official, + /obj/item/soap/deluxe, + /obj/item/sord, + /obj/item/stack/sheet/mineral/coal, + /obj/item/storage/backpack/holding, + /obj/item/storage/belt/champion, + /obj/item/storage/belt/utility/full, + /obj/item/storage/box/snappops, + /obj/item/storage/crayons, + /obj/item/storage/photo_album, + /obj/item/storage/wallet, + /obj/item/toy/basketball, + /obj/item/toy/beach_ball, + ) + + gift_type_list += subtypesof(/obj/item/clothing/head/collectable) + //Add all toys, except for abstract types and syndicate cards. + gift_type_list += subtypesof(/obj/item/toy) - (((typesof(/obj/item/toy/cards) - /obj/item/toy/cards/deck) + /obj/item/toy/figure + /obj/item/toy/ammo)) + var/gift_type = pick(gift_type_list) + return gift_type -/obj/item/a_gift/anything +/// Gifts that typically only very OP stuff or admins or Santa Claus himself should be giving out, as they contain ANY valid subtype of `/obj/item`, including stuff like instagib rifles. Wow! +/obj/item/gift/anything name = "christmas gift" desc = "It could be anything!" -/obj/item/a_gift/anything/get_gift_type() - if(!GLOB.possible_gifts.len) - var/list/gift_types_list = subtypesof(/obj/item) - for(var/V in gift_types_list) - var/obj/item/I = V - if((!initial(I.icon_state)) || (!initial(I.inhand_icon_state)) || (initial(I.item_flags) & ABSTRACT)) - gift_types_list -= V - GLOB.possible_gifts = gift_types_list - var/gift_type = pick(GLOB.possible_gifts) +/obj/item/gift/anything/get_gift_type() + var/static/list/obj/item/possible_gifts = null + + if(isnull(possible_gifts)) + possible_gifts = list() + for(var/type in subtypesof(/obj/item)) + var/obj/item/thing = type + if(!initial(thing.icon_state) || !initial(thing.inhand_icon_state) || (initial(thing.item_flags) & ABSTRACT)) + continue + + possible_gifts += type + var/gift_type = pick(possible_gifts) return gift_type diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index ef93ac20546..a67788f2725 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -102,7 +102,7 @@ return if(HAS_MIND_TRAIT(user, TRAIT_CANNOT_OPEN_PRESENTS)) var/turf/floor = get_turf(src) - var/obj/item/thing = new /obj/item/a_gift/anything(floor) + var/obj/item/thing = new /obj/item/gift/anything(floor) if(!atom_storage.attempt_insert(thing, user, override = TRUE, force = STORAGE_SOFT_LOCKED)) qdel(thing) diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index eab29099dfd..5d75f9cb02d 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -451,7 +451,7 @@ /obj/structure/flora/tree/pine/xmas/presents icon_state = "pinepresents" desc = "A wondrous decorated Christmas tree. It has presents!" - var/gift_type = /obj/item/a_gift/anything + var/gift_type = /obj/item/gift/anything var/unlimited = FALSE var/static/list/took_presents //shared between all xmas trees diff --git a/code/modules/clothing/outfits/event.dm b/code/modules/clothing/outfits/event.dm index aa85bd795a3..fc94adb9ff5 100644 --- a/code/modules/clothing/outfits/event.dm +++ b/code/modules/clothing/outfits/event.dm @@ -5,8 +5,8 @@ suit = /obj/item/clothing/suit/space/santa back = /obj/item/storage/backpack/santabag backpack_contents = list( - /obj/item/a_gift/anything = 5, -) + /obj/item/gift/anything = 5, + ) gloves = /obj/item/clothing/gloves/color/red head = /obj/item/clothing/head/helmet/space/santahat/beardless shoes = /obj/item/clothing/shoes/sneakers/red diff --git a/code/modules/holiday/holidays.dm b/code/modules/holiday/holidays.dm index acb911ecfa9..09cffa41f0a 100644 --- a/code/modules/holiday/holidays.dm +++ b/code/modules/holiday/holidays.dm @@ -844,9 +844,9 @@ SSticker.OnRoundstart(CALLBACK(src, PROC_REF(roundstart_celebrate))) GLOB.maintenance_loot += list( list( - /obj/item/toy/xmas_cracker = 3, /obj/item/clothing/head/costume/santa = 1, - /obj/item/a_gift/anything = 1 + /obj/item/gift/anything = 1, + /obj/item/toy/xmas_cracker = 3, ) = maint_holiday_weight, ) diff --git a/code/modules/spells/spell_types/conjure/presents.dm b/code/modules/spells/spell_types/conjure/presents.dm index 057fef9b9b4..b630c43225c 100644 --- a/code/modules/spells/spell_types/conjure/presents.dm +++ b/code/modules/spells/spell_types/conjure/presents.dm @@ -10,5 +10,5 @@ invocation_type = INVOCATION_SHOUT summon_radius = 3 - summon_type = list(/obj/item/a_gift) + summon_type = list(/obj/item/gift) summon_amount = 5 diff --git a/modular_skyrat/modules/holidays/flora.dm b/modular_skyrat/modules/holidays/flora.dm index daa12d88d7f..dd0fad80820 100644 --- a/modular_skyrat/modules/holidays/flora.dm +++ b/modular_skyrat/modules/holidays/flora.dm @@ -1,11 +1,11 @@ /obj/structure/flora/tree/pine/xmas/presents/safe icon_state = "pinepresents" desc = "A wondrous decorated Christmas tree. It has presents!" - gift_type = /obj/item/a_gift //only give safe gifts from the tree + gift_type = /obj/item/gift //only give safe gifts from the tree unlimited = FALSE /obj/structure/flora/tree/pine/xmas/presents/safe/unlimited icon_state = "pinepresents" desc = "A wondrous decorated Christmas tree. It has presents!" - gift_type = /obj/item/a_gift //only give safe gifts from the tree + gift_type = /obj/item/gift //only give safe gifts from the tree unlimited = TRUE diff --git a/tools/UpdatePaths/Scripts/80035_gift_renaming.txt b/tools/UpdatePaths/Scripts/80035_gift_renaming.txt new file mode 100644 index 00000000000..910259aa0b7 --- /dev/null +++ b/tools/UpdatePaths/Scripts/80035_gift_renaming.txt @@ -0,0 +1 @@ +/obj/item/a_gift : /obj/item/gift{@OLD} From fe9ab375c1c18195802a30f5694d7f28c4e414dd Mon Sep 17 00:00:00 2001 From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com> Date: Mon, 4 Dec 2023 09:54:50 +0300 Subject: [PATCH 44/61] Automatic changelog for PR #943 [ci skip] --- html/changelogs/AutoChangeLog-pr-943.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-943.yml diff --git a/html/changelogs/AutoChangeLog-pr-943.yml b/html/changelogs/AutoChangeLog-pr-943.yml new file mode 100644 index 00000000000..e408511f7c1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-943.yml @@ -0,0 +1,4 @@ +author: "san7890" +delete-after: True +changes: + - bugfix: "Some mapped-in gifts that were supposed to guarantee a certain gift weren't spawning that exact gift type, this has been patched to reflect the mapper's intent." \ No newline at end of file From f09744854e90a160de069e4e460f062c3fe7c812 Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Mon, 4 Dec 2023 10:43:18 +0300 Subject: [PATCH 45/61] Turns the fake announcement device into a custom announcement device (#25092) (#953) * Turns the fake announcement device into a custom announcement device * dont qdel when out of uses so a player can request more * reviews thank you! Co-authored-by: lila --- .../code/fake_announcement.dm | 32 --------- .../code/traitor_announcer.dm | 65 +++++++++++++++++++ .../opposing_force/code/equipment/uplink.dm | 11 ++-- tgstation.dme | 2 +- 4 files changed, 72 insertions(+), 38 deletions(-) delete mode 100644 modular_skyrat/modules/moretraitoritems/code/fake_announcement.dm create mode 100644 modular_skyrat/modules/moretraitoritems/code/traitor_announcer.dm diff --git a/modular_skyrat/modules/moretraitoritems/code/fake_announcement.dm b/modular_skyrat/modules/moretraitoritems/code/fake_announcement.dm deleted file mode 100644 index 6d4578fb0a9..00000000000 --- a/modular_skyrat/modules/moretraitoritems/code/fake_announcement.dm +++ /dev/null @@ -1,32 +0,0 @@ -/obj/item/device/traitor_announcer - name = "odd device" - desc = "Hmm... what is this for?" - special_desc_requirement = EXAMINE_CHECK_SYNDICATE - special_desc = "A remote usable to fake an announcement from the captain, of your choice." - icon = 'icons/obj/device.dmi' - lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' - righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' - icon_state = "inspector" - worn_icon_state = "salestagger" - inhand_icon_state = "electronic" - ///How many uses does it have? -1 for infinite - var/uses = 1 - -/obj/item/device/traitor_announcer/attack_self(mob/living/user, modifiers) - . = ..() - var/input = tgui_input_text(user, "Choose Announcement Message", "") - if(!input || !isliving(user) || !uses) - return - if(uses != -1 && uses) - uses-- - var/list/message_data = user.treat_message(input) - priority_announce(html_decode(message_data["message"]), null, ANNOUNCER_CAPTAIN, JOB_CAPTAIN, has_important_message = TRUE) - deadchat_broadcast(" made a fake priority announcement from [span_name("[get_area_name(usr, TRUE)]")].", span_name("[user.real_name]"), user, message_type=DEADCHAT_ANNOUNCEMENT) - user.log_talk(input, LOG_SAY, tag = "priority announcement") - message_admins("[ADMIN_LOOKUPFLW(user)] has used [src] to make a fake announcement of [input].") - if(!uses) - qdel(src) - -// Adminbus -/obj/item/device/traitor_announcer/infinite - uses = -1 diff --git a/modular_skyrat/modules/moretraitoritems/code/traitor_announcer.dm b/modular_skyrat/modules/moretraitoritems/code/traitor_announcer.dm new file mode 100644 index 00000000000..7740b9a4e7b --- /dev/null +++ b/modular_skyrat/modules/moretraitoritems/code/traitor_announcer.dm @@ -0,0 +1,65 @@ +#define INFINITE_CHARGES -1 + +/obj/item/device/traitor_announcer + name = "odd device" + desc = "Hmm... what is this for?" + special_desc_requirement = EXAMINE_CHECK_SYNDICATE + special_desc = "A remote that can be used to transmit a fake announcement of your own design." + icon = 'icons/obj/device.dmi' + lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' + icon_state = "inspector" + worn_icon_state = "salestagger" + inhand_icon_state = "electronic" + ///How many uses does it have? -1 for infinite + var/uses = 1 + +/obj/item/device/traitor_announcer/attack_self(mob/living/user, modifiers) + . = ..() + //can we use this? + if(!isliving(user) || (uses == 0)) + balloon_alert(user, "no uses left!") + return + //build our announcement + var/origin = sanitize_text(reject_bad_text(tgui_input_text(user, "Who is announcing, or where is the announcement coming from?", "Announcement Origin", get_area_name(user), max_length = 28))) + if(!origin) + balloon_alert(user, "bad origin!") + return + var/audio_key = tgui_input_list(user, "Which announcement audio key should play? ('Intercept' is default)", "Announcement Audio", GLOB.announcer_keys, ANNOUNCER_INTERCEPT) + if(!audio_key) + balloon_alert(user, "bad audio!") + return + var/color = tgui_input_list(user, "Which color should the announcement be?", "Announcement Hue", ANNOUNCEMENT_COLORS, "default") + if(!color) + balloon_alert(user, "bad color!") + return + var/title = sanitize_text(reject_bad_text(tgui_input_text(user, "Choose the title of the announcement.", "Announcement Title", max_length = 42))) + if(!title) + balloon_alert(user, "bad title!") + return + var/input = sanitize_text(reject_bad_text(tgui_input_text(user, "Choose the bodytext of the announcement.", "Announcement Text", max_length = 512, multiline = TRUE))) + if(!input) + balloon_alert(user, "bad text!") + return + //treat voice + var/list/message_data = user.treat_message(input) + //send + priority_announce( + text = message_data["message"], + title = title, + sound = audio_key, + has_important_message = TRUE, + sender_override = origin, + color_override = color, + ) + if(uses != INFINITE_CHARGES) + uses-- + deadchat_broadcast(" made a fake priority announcement from [span_name("[get_area_name(usr, TRUE)]")].", span_name("[user.real_name]"), user, message_type=DEADCHAT_ANNOUNCEMENT) + user.log_talk("\[Message title] [title]\], \[Message:] [input]\], \[Audio key:] [audio_key]\]", LOG_SAY, tag = "priority announcement") + message_admins("[ADMIN_LOOKUPFLW(user)] has used [src] to make a fake announcement of [input].") + +// Adminbus +/obj/item/device/traitor_announcer/infinite + uses = -1 + +#undef INFINITE_CHARGES diff --git a/modular_skyrat/modules/opposing_force/code/equipment/uplink.dm b/modular_skyrat/modules/opposing_force/code/equipment/uplink.dm index 60dd048b1cb..1069332d4c9 100644 --- a/modular_skyrat/modules/opposing_force/code/equipment/uplink.dm +++ b/modular_skyrat/modules/opposing_force/code/equipment/uplink.dm @@ -63,6 +63,12 @@ target.mind.has_exploitables_override = TRUE target.mind.handle_exploitables() +/datum/opposing_force_equipment/uplink/custom_announcement + name = "Custom Announcement" + item_type = /obj/item/device/traitor_announcer + admin_note = "Ask players to put the message inside the 'Reason' box, the item adminlogs but won't give a chance to preview. Can be VV'd to give more 'uses'." + description = "A one-use device that lets you make an announcement tailored to your choice." + /datum/opposing_force_equipment/uplink/power_outage name = "Power Outage" description = "A virus will be uploaded to the engineering processing servers to force a routine power grid check, forcing all APCs on the station to be temporarily disabled." @@ -95,8 +101,3 @@ /datum/opposing_force_equipment/uplink/market_crash/on_issue() var/datum/round_event_control/event = locate(/datum/round_event_control/market_crash) in SSevents.control event.run_event() - -/datum/opposing_force_equipment/uplink/fake_announcer - name = "Fake Announcement" - item_type = /obj/item/device/traitor_announcer - description = "A one-use device that lets you make an announcement of your choice, sending it to the station under the guise of the captain's authority." diff --git a/tgstation.dme b/tgstation.dme index 2784f96810e..05a1e9d0f53 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7663,7 +7663,6 @@ #include "modular_skyrat\modules\moretraitoritems\code\cards_id.dm" #include "modular_skyrat\modules\moretraitoritems\code\cultist.dm" #include "modular_skyrat\modules\moretraitoritems\code\drinkingglass.dm" -#include "modular_skyrat\modules\moretraitoritems\code\fake_announcement.dm" #include "modular_skyrat\modules\moretraitoritems\code\glue.dm" #include "modular_skyrat\modules\moretraitoritems\code\headset.dm" #include "modular_skyrat\modules\moretraitoritems\code\pirate.dm" @@ -7671,6 +7670,7 @@ #include "modular_skyrat\modules\moretraitoritems\code\spawnergrenade.dm" #include "modular_skyrat\modules\moretraitoritems\code\syndicate.dm" #include "modular_skyrat\modules\moretraitoritems\code\syndiemirror.dm" +#include "modular_skyrat\modules\moretraitoritems\code\traitor_announcer.dm" #include "modular_skyrat\modules\moretraitoritems\code\uplink_kits.dm" #include "modular_skyrat\modules\moretraitoritems\code\weapons.dm" #include "modular_skyrat\modules\morewizardstuffs\spellbook.dm" From 37109fc612d9ae66bf863320678e1b11e45277c4 Mon Sep 17 00:00:00 2001 From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com> Date: Mon, 4 Dec 2023 10:43:46 +0300 Subject: [PATCH 46/61] Automatic changelog for PR #953 [ci skip] --- html/changelogs/AutoChangeLog-pr-953.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-953.yml diff --git a/html/changelogs/AutoChangeLog-pr-953.yml b/html/changelogs/AutoChangeLog-pr-953.yml new file mode 100644 index 00000000000..6f5a19e0dff --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-953.yml @@ -0,0 +1,4 @@ +author: "honkpocket" +delete-after: True +changes: + - rscadd: "The 'fake announcement device' from the OPFOR selection has received a fully customizable upgrade." \ No newline at end of file From 3f48123e051529b56b71f9d291df6713005621d4 Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Mon, 4 Dec 2023 10:44:13 +0300 Subject: [PATCH 47/61] Minor Hotel Additions. (#25169) (#957) * Update spacehotel_skyrat.dmm * Update spacehotel_skyrat.dmm * Update spacehotel_skyrat.dmm * Update spacehotel_skyrat.dmm * Empty axe cabinet. No correcting can happen, sadly. * Update spacehotel_skyrat.dmm * Updates on request. --------- Co-authored-by: Cursor <102828457+theselfish@users.noreply.github.com> Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> --- .../SpaceRuins/spacehotel_skyrat.dmm | 384 +++++++++++++----- 1 file changed, 285 insertions(+), 99 deletions(-) diff --git a/_maps/RandomRuins/SpaceRuins/spacehotel_skyrat.dmm b/_maps/RandomRuins/SpaceRuins/spacehotel_skyrat.dmm index 1ac79d00a2e..700323feee0 100644 --- a/_maps/RandomRuins/SpaceRuins/spacehotel_skyrat.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacehotel_skyrat.dmm @@ -65,7 +65,7 @@ dir = 8 }, /obj/structure/disposalpipe/segment, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "ar" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -305,7 +305,7 @@ /turf/open/floor/carpet/neon/simple/black/nodots, /area/ruin/space/has_grav/hotel/guestroom/room_1) "bW" = ( -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "bZ" = ( /turf/open/floor/iron/white, @@ -338,6 +338,10 @@ "cf" = ( /turf/closed/wall, /area/ruin/space/has_grav/hotel/guestroom/room_6) +"cj" = ( +/obj/machinery/vending/boozeomat/cafe, +/turf/open/floor/wood, +/area/ruin/space/has_grav/hotel/bar) "ck" = ( /obj/structure/cable, /obj/machinery/light_switch{ @@ -353,7 +357,7 @@ /obj/machinery/airalarm/directional/north{ pixel_y = 24 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "cp" = ( /obj/structure/bed/double, @@ -403,6 +407,15 @@ }, /turf/open/floor/carpet/black, /area/ruin/space/has_grav/hotel/dock) +"cL" = ( +/obj/effect/turf_decal/tile/dark_red/diagonal_edge, +/obj/effect/turf_decal/siding/dark_red{ + dir = 9 + }, +/obj/structure/urinal/directional/north, +/obj/structure/window/reinforced/spawner/directional/east, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/hotel) "cO" = ( /obj/structure/extinguisher_cabinet{ pixel_x = -30 @@ -461,7 +474,7 @@ dir = 4 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "dm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -567,6 +580,7 @@ /obj/structure/table, /obj/item/food/mint, /obj/item/kitchen/rollingpin, +/obj/item/cutting_board, /turf/open/floor/iron/cafeteria, /area/ruin/space/has_grav/hotel/bar) "dY" = ( @@ -972,7 +986,7 @@ dir = 8 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "fF" = ( /obj/structure/extinguisher_cabinet{ @@ -1060,12 +1074,29 @@ }, /turf/open/floor/iron, /area/ruin/space/has_grav/hotel/power) +"gk" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark_red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/dark_red/diagonal_edge, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/hotel) "gl" = ( /obj/effect/turf_decal/siding/dark{ dir = 4 }, /turf/open/floor/carpet/black, /area/ruin/space/has_grav/hotel) +"gn" = ( +/obj/effect/turf_decal/siding/dark_red{ + dir = 10 + }, +/obj/effect/turf_decal/tile/dark_red/diagonal_edge, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/hotel) "gp" = ( /obj/structure/table/glass, /obj/machinery/reagentgrinder, @@ -1284,9 +1315,12 @@ /turf/open/floor/iron/white, /area/ruin/space/has_grav/hotel) "hk" = ( -/obj/machinery/vending/boozeomat, -/turf/open/floor/wood, -/area/ruin/space/has_grav/hotel/bar) +/obj/effect/turf_decal/siding/dark_red{ + dir = 6 + }, +/obj/effect/turf_decal/tile/dark_red/diagonal_edge, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/hotel) "hl" = ( /obj/structure/table/reinforced/plastitaniumglass, /turf/open/floor/wood, @@ -1336,7 +1370,7 @@ dir = 1 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "hq" = ( /obj/structure/table/glass, @@ -1367,7 +1401,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "hu" = ( /obj/machinery/chem_dispenser/drinks/fullupgrade{ @@ -1533,7 +1567,14 @@ pixel_y = 24 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, +/area/ruin/space/has_grav/hotel) +"hY" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/machinery/door/airlock, +/turf/open/floor/carpet/black, /area/ruin/space/has_grav/hotel) "hZ" = ( /obj/effect/turf_decal/siding/green{ @@ -1647,7 +1688,7 @@ dir = 4 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "iu" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -1681,7 +1722,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "iy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -1755,6 +1796,7 @@ /obj/effect/turf_decal/siding/wideplating_new{ dir = 4 }, +/obj/structure/fireaxecabinet/empty/directional/east, /turf/open/floor/iron, /area/ruin/space/has_grav/hotel/power) "iO" = ( @@ -1782,7 +1824,7 @@ dir = 8 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "iS" = ( /obj/machinery/light{ @@ -1971,7 +2013,7 @@ dir = 4 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "jL" = ( /obj/structure/table, @@ -2171,6 +2213,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor, /area/ruin/space/has_grav/hotel/custodial) +"kD" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/item/kirbyplants/random, +/turf/open/floor/carpet/black, +/area/ruin/space/has_grav/hotel) "kF" = ( /obj/structure/extinguisher_cabinet{ pixel_x = -30 @@ -2400,6 +2449,7 @@ pixel_y = 24 }, /obj/effect/turf_decal/siding/dark, +/obj/machinery/vending/autodrobe/all_access, /turf/open/floor/carpet/black, /area/ruin/space/has_grav/hotel) "lA" = ( @@ -2435,7 +2485,7 @@ /area/ruin/space/has_grav/hotel) "lL" = ( /obj/item/kirbyplants/random, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "lN" = ( /obj/machinery/light/floor, @@ -2533,7 +2583,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "mj" = ( /obj/structure/cable, @@ -2668,7 +2718,7 @@ /obj/effect/turf_decal/siding/wood/corner{ dir = 4 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "mI" = ( /obj/machinery/light/floor, @@ -2782,7 +2832,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "nh" = ( /obj/effect/turf_decal/siding/dark{ @@ -2911,6 +2961,7 @@ /obj/effect/turf_decal/siding/wideplating_new{ dir = 1 }, +/obj/item/storage/belt/utility, /turf/open/floor/iron, /area/ruin/space/has_grav/hotel/power) "nU" = ( @@ -3039,7 +3090,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "oK" = ( /obj/effect/turf_decal/siding/dark{ @@ -3155,6 +3206,14 @@ }, /turf/open/floor/carpet/royalblack, /area/ruin/space/has_grav/hotel/dock) +"pI" = ( +/obj/effect/turf_decal/tile/dark_red/diagonal_edge, +/obj/effect/turf_decal/siding/dark_red, +/obj/effect/turf_decal/siding/dark_red{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/hotel) "pK" = ( /obj/structure/cable, /turf/open/floor/carpet/neon/simple/white/nodots, @@ -3196,7 +3255,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "pS" = ( /obj/structure/holopay, @@ -3410,6 +3469,20 @@ }, /turf/open/floor/carpet/black, /area/ruin/space/has_grav/hotel/dock) +"rl" = ( +/obj/structure/sink/directional/south, +/obj/structure/mirror{ + pixel_y = 32 + }, +/obj/effect/turf_decal/siding/dark_red{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark_red{ + dir = 5 + }, +/obj/effect/turf_decal/tile/dark_red/diagonal_edge, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/hotel) "rn" = ( /obj/structure/closet/secure_closet/personal/cabinet, /turf/open/floor/wood, @@ -3418,7 +3491,7 @@ /obj/effect/turf_decal/siding/wood/corner{ dir = 8 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "rp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -3488,10 +3561,13 @@ /turf/open/floor/wood/large, /area/ruin/space/has_grav/hotel/guestroom/room_4) "rI" = ( -/obj/machinery/vending/boozeomat, /obj/machinery/light{ dir = 8 }, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/machinery/chem_dispenser/drinks/fullupgrade{ + dir = 4 + }, /turf/open/floor/wood, /area/ruin/space/has_grav/hotel/bar) "rL" = ( @@ -3609,7 +3685,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "se" = ( /turf/open/floor/wood, @@ -3789,7 +3865,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "tK" = ( /obj/machinery/vending/coffee, @@ -3810,7 +3886,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "tP" = ( /obj/structure/table/reinforced/plastitaniumglass, @@ -3964,7 +4040,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "uO" = ( /obj/structure/table/glass, @@ -4056,6 +4132,10 @@ }, /turf/open/floor/carpet/black, /area/ruin/space/has_grav/hotel) +"vq" = ( +/obj/structure/grandfatherclock, +/turf/open/floor/wood, +/area/ruin/space/has_grav/hotel/workroom) "vr" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 8 @@ -4103,7 +4183,7 @@ dir = 8 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "vG" = ( /obj/structure/chair/sofa/corp/right{ @@ -4394,7 +4474,7 @@ dir = 8 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "xU" = ( /obj/machinery/door/airlock{ @@ -4578,7 +4658,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 8 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "yX" = ( /turf/closed/wall, @@ -4606,6 +4686,10 @@ /obj/effect/turf_decal/trimline/dark_blue/filled/corner, /turf/open/indestructible/hotelwood, /area/ruin/space/has_grav/hotel/pool) +"zo" = ( +/obj/structure/decorative/shelf/alcohol_assortment, +/turf/open/floor/wood, +/area/ruin/space/has_grav/hotel/bar) "zp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 8 @@ -4754,6 +4838,13 @@ /obj/item/key_card/hotel_room/master, /turf/open/floor/carpet/executive, /area/ruin/space/has_grav/hotel/workroom) +"Ap" = ( +/obj/effect/turf_decal/tile/dark_red/diagonal_edge, +/obj/effect/turf_decal/siding/dark_red/corner{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/hotel) "Au" = ( /obj/item/kirbyplants/random, /obj/effect/turf_decal/siding/dark{ @@ -4787,9 +4878,6 @@ /turf/open/floor/iron, /area/ruin/space/has_grav/hotel/bar) "AI" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -30 - }, /obj/effect/turf_decal/siding/wood/corner{ dir = 1 }, @@ -4847,7 +4935,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "Be" = ( /obj/structure/closet/crate/hydroponics, @@ -4888,7 +4976,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "Bu" = ( /obj/machinery/photocopier, @@ -4936,6 +5024,7 @@ /obj/effect/turf_decal/siding/dark{ dir = 4 }, +/obj/structure/desk_bell, /turf/open/floor/carpet/black, /area/ruin/space/has_grav/hotel) "BF" = ( @@ -5202,13 +5291,17 @@ /area/ruin/space/has_grav/hotel/pool) "Dt" = ( /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "Dv" = ( /obj/structure/mirror{ pixel_y = 32 }, /obj/structure/sink/directional/south, +/obj/effect/turf_decal/siding/dark_red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/dark_red/diagonal_edge, /turf/open/floor/iron/white, /area/ruin/space/has_grav/hotel) "Dw" = ( @@ -5420,7 +5513,7 @@ dir = 9 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "ET" = ( /obj/machinery/vending/imported/tiziran, @@ -5470,7 +5563,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 9 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "Fg" = ( /obj/structure/cable, @@ -5659,7 +5752,7 @@ dir = 4 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "GG" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, @@ -5670,7 +5763,7 @@ dir = 1 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "GI" = ( /obj/structure/disposalpipe/segment{ @@ -5688,6 +5781,9 @@ /obj/item/device/traitor_announcer, /obj/item/crowbar, /obj/item/radio/headset/headset_faction/bowman, +/obj/item/clothing/suit/victoriantailcoatbutler, +/obj/item/clothing/under/suit/tuxedo, +/obj/item/clothing/neck/bowtie, /turf/open/floor/carpet/executive, /area/ruin/space/has_grav/hotel/workroom) "GK" = ( @@ -5844,7 +5940,7 @@ /area/ruin/space/has_grav/hotel/bar) "HG" = ( /obj/structure/disposalpipe/segment, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "HI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -5887,6 +5983,10 @@ }, /turf/open/indestructible/hoteltile, /area/ruin/space/has_grav/hotel/guestroom/room_6) +"HV" = ( +/obj/machinery/vending/boozeomat/cafe, +/turf/closed/wall, +/area/ruin/space/has_grav/hotel/bar) "HY" = ( /obj/effect/mob_spawn/ghost_role/human/hotel_staff, /obj/machinery/light{ @@ -5933,6 +6033,17 @@ }, /turf/open/floor/iron, /area/ruin/space/has_grav/hotel/power) +"Ig" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/reagent_containers/cup/glass/bottle/whiskey{ + pixel_y = 22; + pixel_x = 6 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_x = 6 + }, +/turf/open/floor/wood, +/area/ruin/space/has_grav/hotel/bar) "Ij" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -6007,7 +6118,7 @@ dir = 8 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "IS" = ( /obj/structure/sink/kitchen/directional/south, @@ -6144,7 +6255,7 @@ /area/ruin/space/has_grav/hotel/guestroom) "JT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "JV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -6158,7 +6269,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "JZ" = ( /obj/structure/table, @@ -6351,6 +6462,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood, /area/ruin/space/has_grav/hotel/guestroom/room_5) +"Lp" = ( +/obj/structure/reagent_dispensers/beerkeg, +/turf/open/floor/wood, +/area/ruin/space/has_grav/hotel/bar) "Lq" = ( /obj/structure/mirror{ pixel_y = 32 @@ -6416,9 +6531,10 @@ /turf/open/floor/carpet/black, /area/ruin/space/has_grav/hotel/dock) "LD" = ( -/obj/machinery/light{ - dir = 4 +/obj/effect/turf_decal/siding/dark_red{ + dir = 8 }, +/obj/effect/turf_decal/tile/dark_red/diagonal_edge, /turf/open/floor/iron/white, /area/ruin/space/has_grav/hotel) "LN" = ( @@ -6437,7 +6553,7 @@ dir = 8 }, /obj/structure/disposalpipe/segment, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "LQ" = ( /obj/machinery/space_heater, @@ -6509,6 +6625,12 @@ "Mv" = ( /turf/open/indestructible/hoteltile, /area/ruin/space/has_grav/hotel/guestroom/room_6) +"Mw" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/turf/closed/wall, +/area/ruin/space/has_grav/hotel) "MB" = ( /obj/structure/chair/sofa/corp/right{ dir = 8 @@ -6522,6 +6644,18 @@ }, /turf/open/floor/carpet/black, /area/ruin/space/has_grav/hotel) +"MJ" = ( +/obj/structure/window/reinforced/spawner/directional/north{ + layer = 2.9 + }, +/obj/structure/table/glass, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/item/paper_bin, +/obj/item/pen, +/turf/open/floor/carpet/black, +/area/ruin/space/has_grav/hotel) "MN" = ( /obj/structure/table/wood/fancy/green, /obj/item/coffee_cartridge/decaf{ @@ -6559,7 +6693,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "MV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -6737,7 +6871,7 @@ dir = 4 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "Oh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -6782,7 +6916,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "Ow" = ( /obj/effect/spawner/structure/window/reinforced, @@ -6804,7 +6938,7 @@ dir = 8 }, /obj/effect/turf_decal/siding/wood/corner, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "OB" = ( /obj/item/reagent_containers/condiment/milk, @@ -6864,7 +6998,7 @@ /obj/machinery/door/airlock/public/glass, /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "OZ" = ( /obj/machinery/shower/directional/north, @@ -6872,13 +7006,10 @@ /turf/open/indestructible/hoteltile, /area/ruin/space/has_grav/hotel/guestroom/room_6) "Pb" = ( -/obj/machinery/chem_dispenser/drinks/fullupgrade{ - dir = 4 - }, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/obj/structure/table/reinforced/plastitaniumglass, +/obj/structure/decorative/shelf/alcohol_assortment, /turf/open/floor/wood, /area/ruin/space/has_grav/hotel/bar) "Pd" = ( @@ -6904,6 +7035,13 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/ruin/space/has_grav/hotel/dock) +"Pl" = ( +/obj/effect/turf_decal/siding/dark_red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/dark_red/diagonal_edge, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/hotel) "Pp" = ( /obj/structure/closet/crate/freezer, /obj/item/food/grown/wheat, @@ -6998,7 +7136,7 @@ /obj/effect/turf_decal/siding/wood/corner{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "PN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -7203,6 +7341,10 @@ /obj/effect/turf_decal/siding/wood, /turf/open/indestructible/hotelwood, /area/ruin/space/has_grav/hotel/pool) +"Ri" = ( +/obj/structure/sign/painting/meat, +/turf/closed/wall, +/area/ruin/space/has_grav/hotel/workroom) "Rm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 4 @@ -7226,6 +7368,12 @@ }, /turf/open/floor/iron/white, /area/ruin/space/has_grav/hotel) +"Rq" = ( +/obj/effect/turf_decal/siding/dark/corner{ + dir = 4 + }, +/turf/closed/wall, +/area/ruin/space/has_grav/hotel) "Rr" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -7251,6 +7399,10 @@ }, /turf/open/floor/carpet/neon/simple/black/nodots, /area/ruin/space/has_grav/hotel/guestroom/room_1) +"Rz" = ( +/obj/structure/mirror/directional, +/turf/closed/wall, +/area/ruin/space/has_grav/hotel/bar) "RE" = ( /obj/item/reagent_containers/cup/bottle/morphine, /obj/item/reagent_containers/cup/bottle/toxin{ @@ -7332,7 +7484,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 4 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "RS" = ( /obj/structure/cable, @@ -7346,7 +7498,7 @@ dir = 4 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "RU" = ( /obj/structure/table/wood, @@ -7493,7 +7645,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "Th" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -7622,6 +7774,15 @@ /obj/effect/turf_decal/tile/dark/diagonal_edge, /turf/open/floor/iron/white, /area/ruin/space/has_grav/hotel) +"Ug" = ( +/obj/effect/turf_decal/tile/dark_red/diagonal_edge, +/obj/effect/turf_decal/siding/dark_red{ + dir = 1 + }, +/obj/structure/urinal/directional/north, +/obj/structure/window/reinforced/spawner/directional/east, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/hotel) "Uk" = ( /obj/machinery/autolathe, /obj/effect/turf_decal/siding/wideplating_new{ @@ -7643,8 +7804,8 @@ /turf/open/floor/iron, /area/ruin/space/has_grav/hotel/bar) "Us" = ( -/obj/structure/chair/comfy/black, /obj/structure/cable, +/obj/structure/chair/comfy/brown, /turf/open/floor/carpet/executive, /area/ruin/space/has_grav/hotel/workroom) "Ut" = ( @@ -7705,7 +7866,7 @@ dir = 8 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "UU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -7822,7 +7983,7 @@ dir = 8 }, /obj/structure/disposalpipe/segment, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "VI" = ( /obj/structure/table/reinforced, @@ -7858,6 +8019,11 @@ }, /turf/open/floor/iron, /area/ruin/space/has_grav/hotel/power) +"VU" = ( +/obj/effect/turf_decal/tile/dark_red/diagonal_edge, +/obj/effect/turf_decal/siding/dark_red, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/hotel) "VW" = ( /obj/machinery/airalarm/directional/west, /obj/structure/dresser, @@ -7904,6 +8070,12 @@ "Wo" = ( /turf/open/floor/glass/reinforced, /area/ruin/space/has_grav/hotel/bar) +"Wx" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -30 + }, +/turf/open/floor/carpet/black, +/area/ruin/space/has_grav/hotel/bar) "Wz" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -7961,7 +8133,7 @@ dir = 4 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "Xa" = ( /obj/machinery/atmospherics/components/binary/pump/on{ @@ -8038,6 +8210,20 @@ }, /turf/open/floor/iron/showroomfloor, /area/ruin/space/has_grav/hotel/pool) +"Xq" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/extinguisher_cabinet{ + pixel_x = -30 + }, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/hotel) "Xs" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -8325,7 +8511,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "ZC" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -8952,9 +9138,9 @@ Lc fi mY UK -hw +Lp Yw -hw +cj hw vw fi @@ -9161,12 +9347,12 @@ Mb FV fi fR -fi -fi -fi -fi -fi -fi +Rz +Rz +Rz +Rz +Rz +Rz fi bE kH @@ -9234,8 +9420,8 @@ eQ hJ Pb rI -hk hu +zo hJ fi bE @@ -9377,7 +9563,7 @@ hw hw hw hw -fi +HV hS ed lK @@ -9444,7 +9630,7 @@ EH ji Dp hl -hl +Ig dv Jh fi @@ -9519,7 +9705,7 @@ AA AA AI fo -iA +Wx ky fi bE @@ -9643,7 +9829,7 @@ fi kW dT dT -dT +Ur dT dT ba @@ -9776,7 +9962,7 @@ di ck JV Kj -au +vq di SQ fi @@ -9854,7 +10040,7 @@ fi fi fi fi -Ur +fi fi fi fi @@ -9924,8 +10110,8 @@ Na Kr Na fi -am -fH +cL +pI am fH fi @@ -9982,7 +10168,7 @@ av xR yE hs -di +Ri Us JG sZ @@ -9994,8 +10180,8 @@ BT KZ BU fi -am -th +Ug +VU am th fi @@ -10065,9 +10251,9 @@ KZ Oa fi Dv -so +Ap LD -so +gn fi iA gd @@ -10134,10 +10320,10 @@ fi fs fi fi -am -th -am -am +rl +Pl +gk +hk fi iA Mh @@ -10203,11 +10389,11 @@ LY GK DQ oe -LY -gl -gl -gl -nQ +Mw +Mw +hY +Mw +Rq fi Ob Fz @@ -10273,7 +10459,7 @@ LN LN LN LN -LN +Xq LN Lz eA @@ -10347,7 +10533,7 @@ nh AX ey so -Xu +kD fi gL iA @@ -11192,7 +11378,7 @@ am DL so so -ge +MJ ol us Jb From be33929f114f2fff79478027677a4103437ee3aa Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Mon, 4 Dec 2023 10:44:47 +0300 Subject: [PATCH 48/61] [MIRROR] Demotes the "electrical conductivity" flag from `flags_1` to `obj_flags` [MDB IGNORE] (#25381) (#949) * Demotes the "electrical conductivity" flag from `flags_1` to `obj_flags` (#80033) ## About The Pull Request Code to handle this flag only ever existed on the `/obj` sublevel, so there's no need for it to be on the `/atom` level `flags_1`. There was probably a point in time in which mobs or turfs conducted electricity but there's zero code for it anymore so we truly just live in a society now. ## Why It's Good For The Game Frees up a slot on `flags_1` (which is really nice actually), proper scoping of certain bitflag stuff, etc. ## Changelog Not relevant to players. I may have screwed something up, will be doing a few passes on this myself to ensure all the search and replaces went alright but we should be good:tm: * Demotes the "electrical conductivity" flag from `flags_1` to `obj_flags` * Modular * Update misc.dm --------- Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Co-authored-by: san7890 Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> --- code/__DEFINES/_flags.dm | 40 +++++++++---------- code/__DEFINES/obj_flags.dm | 1 + code/_globalvars/bitfields.dm | 20 +++++----- code/datums/diseases/magnitis.dm | 6 +-- code/game/machinery/doors/airlock.dm | 2 +- code/game/machinery/shieldgen.dm | 2 +- .../objects/items/AI_modules/_AI_modules.dm | 2 +- code/game/objects/items/airlock_painter.dm | 2 +- code/game/objects/items/chainsaw.dm | 2 +- code/game/objects/items/cigs_lighters.dm | 2 +- code/game/objects/items/cosmetics.dm | 2 +- .../objects/items/devices/chameleonproj.dm | 2 +- .../items/devices/destabilizing_crystal.dm | 2 +- code/game/objects/items/devices/flashlight.dm | 8 ++-- .../objects/items/devices/laserpointer.dm | 2 +- .../objects/items/devices/lightreplacer.dm | 2 +- code/game/objects/items/devices/powersink.dm | 2 +- .../items/devices/radio/electropack.dm | 2 +- .../game/objects/items/devices/radio/radio.dm | 2 +- .../items/devices/reverse_bear_trap.dm | 2 +- .../items/devices/scanners/autopsy_scanner.dm | 2 +- .../items/devices/scanners/gas_analyzer.dm | 2 +- .../items/devices/scanners/health_analyzer.dm | 2 +- .../devices/scanners/sequence_scanner.dm | 2 +- .../items/devices/scanners/slime_scanner.dm | 2 +- .../objects/items/devices/traitordevices.dm | 2 +- code/game/objects/items/door_seal.dm | 2 +- code/game/objects/items/extinguisher.dm | 6 +-- code/game/objects/items/fireaxe.dm | 2 +- code/game/objects/items/flamethrower.dm | 2 +- code/game/objects/items/grenades/_grenade.dm | 3 +- .../game/objects/items/grenades/ghettobomb.dm | 2 +- code/game/objects/items/handcuffs.dm | 4 +- code/game/objects/items/kitchen.dm | 6 +-- code/game/objects/items/knives.dm | 8 ++-- code/game/objects/items/melee/energy.dm | 2 +- code/game/objects/items/melee/misc.dm | 4 +- code/game/objects/items/pinpointer.dm | 2 +- code/game/objects/items/powerfist.dm | 2 +- code/game/objects/items/rcd/RHD.dm | 2 +- code/game/objects/items/rcd/RPD.dm | 2 +- code/game/objects/items/stacks/rods.dm | 4 +- .../game/objects/items/stacks/sheets/light.dm | 2 +- .../items/stacks/sheets/sheet_types.dm | 4 +- code/game/objects/items/stacks/tiles/light.dm | 2 +- .../objects/items/stacks/tiles/tile_iron.dm | 2 +- code/game/objects/items/storage/bags.dm | 2 +- code/game/objects/items/storage/briefcase.dm | 2 +- code/game/objects/items/storage/toolbox.dm | 2 +- code/game/objects/items/tanks/tank_types.dm | 4 +- code/game/objects/items/tanks/tanks.dm | 2 +- code/game/objects/items/teleportation.dm | 4 +- code/game/objects/items/tools/crowbar.dm | 2 +- code/game/objects/items/tools/screwdriver.dm | 3 +- code/game/objects/items/tools/spess_knife.dm | 2 +- code/game/objects/items/tools/weldingtool.dm | 2 +- code/game/objects/items/tools/wirecutters.dm | 2 +- code/game/objects/items/tools/wrench.dm | 2 +- code/game/objects/items/toys.dm | 4 +- code/game/objects/items/vending_items.dm | 2 +- code/game/objects/items/wall_mounted.dm | 4 +- code/game/objects/items/weaponry.dm | 8 ++-- code/game/objects/items/wizard_weapons.dm | 4 +- .../objects/structures/cannons/cannonballs.dm | 2 +- code/game/objects/structures/grille.dm | 4 +- code/game/objects/structures/tables_racks.dm | 2 +- .../objects/structures/training_machine.dm | 2 +- code/modules/antagonists/cult/cult_items.dm | 2 +- .../heretic/items/heretic_blades.dm | 2 +- .../heretic/structures/carving_knife.dm | 2 +- .../nukeop/equipment/borgchameleon.dm | 2 +- code/modules/art/statues.dm | 2 +- code/modules/assembly/assembly.dm | 2 +- code/modules/assembly/bomb.dm | 2 +- code/modules/assembly/holder.dm | 2 +- code/modules/assembly/shock_kit.dm | 2 +- .../awaymissions/mission_code/murderdome.dm | 3 +- .../bitrunning/objects/host_monitor.dm | 2 +- .../clothing/chameleon/chameleon_scanner.dm | 2 +- code/modules/clothing/suits/costume.dm | 2 +- code/modules/detectivework/scanner.dm | 2 +- .../modules/fishing/aquarium/fish_analyzer.dm | 2 +- code/modules/hydroponics/hydroitemdefines.dm | 10 ++--- .../mining/equipment/mineral_scanner.dm | 4 +- code/modules/mining/equipment/mining_tools.dm | 6 +-- .../modules/mining/lavaland/megafauna_loot.dm | 2 +- code/modules/mining/ores_coins.dm | 4 +- .../mob/living/silicon/robot/robot_model.dm | 2 +- code/modules/photography/camera/camera.dm | 2 +- code/modules/power/cable.dm | 2 +- code/modules/power/lighting/light.dm | 4 +- code/modules/power/pipecleaners.dm | 2 +- .../projectiles/ammunition/_ammunition.dm | 2 +- .../boxes_magazines/_box_magazine.dm | 2 +- .../boxes_magazines/internal/_internal.dm | 2 +- code/modules/projectiles/gun.dm | 2 +- .../projectiles/guns/ballistic/shotgun.dm | 6 +-- code/modules/projectiles/guns/energy/laser.dm | 2 +- code/modules/projectiles/guns/energy/pulse.dm | 2 +- .../projectiles/guns/energy/special.dm | 4 +- code/modules/projectiles/guns/magic.dm | 2 +- code/modules/projectiles/pins.dm | 2 +- .../reagent_containers/cups/drinks.dm | 2 +- code/modules/recycling/sortingmachinery.dm | 2 +- .../research/xenobiology/xenobiology.dm | 4 +- .../surgery/bodyparts/robot_bodyparts.dm | 12 +++--- code/modules/surgery/tools.dm | 16 ++++---- code/modules/uplink/uplink_devices.dm | 2 +- code/modules/vehicles/mecha/mecha_parts.dm | 4 +- .../modules/borgs/code/robot_items.dm | 2 +- .../modules/borgs/code/robot_upgrade.dm | 2 +- .../modules/clothing/suits/misc.dm | 6 +-- .../modules/exp_corps/code/tomahawk.dm | 2 +- .../modules/implants/code/augments_arms.dm | 2 +- .../modules/salon/code/misc_items.dm | 2 +- modular_skyrat/modules/space_vines/scythes.dm | 2 +- 116 files changed, 199 insertions(+), 197 deletions(-) diff --git a/code/__DEFINES/_flags.dm b/code/__DEFINES/_flags.dm index f5fc50004cd..f69e18910fa 100644 --- a/code/__DEFINES/_flags.dm +++ b/code/__DEFINES/_flags.dm @@ -17,49 +17,47 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 /// Is this object currently processing in the atmos object list? #define ATMOS_IS_PROCESSING_1 (1<<0) -/// conducts electricity (metal etc.) -#define CONDUCT_1 (1<<1) /// For machines and structures that should not break into parts, eg, holodeck stuff -#define NODECONSTRUCT_1 (1<<2) +#define NODECONSTRUCT_1 (1<<1) /// item has priority to check when entering or leaving -#define ON_BORDER_1 (1<<3) +#define ON_BORDER_1 (1<<2) ///Whether or not this atom shows screentips when hovered over -#define NO_SCREENTIPS_1 (1<<4) +#define NO_SCREENTIPS_1 (1<<3) /// Prevent clicking things below it on the same turf eg. doors/ fulltile windows -#define PREVENT_CLICK_UNDER_1 (1<<5) +#define PREVENT_CLICK_UNDER_1 (1<<4) ///specifies that this atom is a hologram that isnt real -#define HOLOGRAM_1 (1<<6) +#define HOLOGRAM_1 (1<<5) ///Whether /atom/Initialize() has already run for the object -#define INITIALIZED_1 (1<<7) +#define INITIALIZED_1 (1<<6) /// was this spawned by an admin? used for stat tracking stuff. -#define ADMIN_SPAWNED_1 (1<<8) +#define ADMIN_SPAWNED_1 (1<<7) /// should not get harmed if this gets caught by an explosion? -#define PREVENT_CONTENTS_EXPLOSION_1 (1<<9) +#define PREVENT_CONTENTS_EXPLOSION_1 (1<<8) /// Should this object be paintable with very dark colors? -#define ALLOW_DARK_PAINTS_1 (1<<10) +#define ALLOW_DARK_PAINTS_1 (1<<9) /// Should this object be unpaintable? -#define UNPAINTABLE_1 (1<<11) +#define UNPAINTABLE_1 (1<<10) /// Is the thing currently spinning? -#define IS_SPINNING_1 (1<<12) +#define IS_SPINNING_1 (1<<11) /// Is this atom on top of another atom, and as such has click priority? -#define IS_ONTOP_1 (1<<13) +#define IS_ONTOP_1 (1<<12) /// Is this atom immune to being dusted by the supermatter? -#define SUPERMATTER_IGNORES_1 (1<<14) +#define SUPERMATTER_IGNORES_1 (1<<13) /// If a turf can be made dirty at roundstart. This is also used in areas. -#define CAN_BE_DIRTY_1 (1<<15) +#define CAN_BE_DIRTY_1 (1<<14) /// Should we use the initial icon for display? Mostly used by overlay only objects -#define HTML_USE_INITAL_ICON_1 (1<<16) +#define HTML_USE_INITAL_ICON_1 (1<<15) /// Can players recolor this in-game via vendors (and maybe more if support is added)? -#define IS_PLAYER_COLORABLE_1 (1<<17) +#define IS_PLAYER_COLORABLE_1 (1<<16) /// Whether or not this atom has contextual screentips when hovered OVER -#define HAS_CONTEXTUAL_SCREENTIPS_1 (1<<18) +#define HAS_CONTEXTUAL_SCREENTIPS_1 (1<<17) /// Whether or not this atom is storing contents for a disassociated storage object -#define HAS_DISASSOCIATED_STORAGE_1 (1<<19) +#define HAS_DISASSOCIATED_STORAGE_1 (1<<18) /// If this atom has experienced a decal element "init finished" sourced appearance update /// We use this to ensure stacked decals don't double up appearance updates for no rasin /// Flag as an optimization, don't make this a trait without profiling /// Yes I know this is a stupid flag, no you can't take him from me -#define DECAL_INIT_UPDATE_EXPERIENCED_1 (1<<20) +#define DECAL_INIT_UPDATE_EXPERIENCED_1 (1<<19) // Update flags for [/atom/proc/update_appearance] /// Update the atom's name diff --git a/code/__DEFINES/obj_flags.dm b/code/__DEFINES/obj_flags.dm index 91b20a45f21..5e2fbdf0553 100644 --- a/code/__DEFINES/obj_flags.dm +++ b/code/__DEFINES/obj_flags.dm @@ -14,6 +14,7 @@ #define BLOCKS_CONSTRUCTION_DIR (1<<10) //! Does this object prevent same-direction things from being built on it? #define IGNORE_DENSITY (1<<11) //! Can we ignore density when building on this object? (for example, directional windows and grilles) #define INFINITE_RESKIN (1<<12) // We can reskin this item infinitely +#define CONDUCTS_ELECTRICITY (1<<13) //! Can this object conduct electricity? // If you add new ones, be sure to add them to /obj/Initialize as well for complete mapping support diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 796def0de16..75b5cb6ddc8 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -119,7 +119,6 @@ DEFINE_BITFIELD(flags_1, list( "ALLOW_DARK_PAINTS_1" = ALLOW_DARK_PAINTS_1, "ATMOS_IS_PROCESSING_1" = ATMOS_IS_PROCESSING_1, "CAN_BE_DIRTY_1" = CAN_BE_DIRTY_1, - "CONDUCT_1" = CONDUCT_1, "HAS_CONTEXTUAL_SCREENTIPS_1" = HAS_CONTEXTUAL_SCREENTIPS_1, "HAS_DISASSOCIATED_STORAGE_1" = HAS_DISASSOCIATED_STORAGE_1, "HOLOGRAM_1" = HOLOGRAM_1, @@ -127,8 +126,8 @@ DEFINE_BITFIELD(flags_1, list( "IS_ONTOP_1" = IS_ONTOP_1, "IS_PLAYER_COLORABLE_1" = IS_PLAYER_COLORABLE_1, "IS_SPINNING_1" = IS_SPINNING_1, - "NODECONSTRUCT_1" = NODECONSTRUCT_1, "NO_SCREENTIPS_1" = NO_SCREENTIPS_1, + "NODECONSTRUCT_1" = NODECONSTRUCT_1, "ON_BORDER_1" = ON_BORDER_1, "PREVENT_CLICK_UNDER_1" = PREVENT_CLICK_UNDER_1, "PREVENT_CONTENTS_EXPLOSION_1" = PREVENT_CONTENTS_EXPLOSION_1, @@ -287,18 +286,19 @@ DEFINE_BITFIELD(movement_type, list( )) DEFINE_BITFIELD(obj_flags, list( - "IN_USE" = IN_USE, - "EMAGGED" = EMAGGED, - "CAN_BE_HIT" = CAN_BE_HIT, - "DANGEROUS_POSSESSION" = DANGEROUS_POSSESSION, - "UNIQUE_RENAME" = UNIQUE_RENAME, - "BLOCK_Z_OUT_DOWN" = BLOCK_Z_OUT_DOWN, - "BLOCK_Z_OUT_UP" = BLOCK_Z_OUT_UP, "BLOCK_Z_IN_DOWN" = BLOCK_Z_IN_DOWN, "BLOCK_Z_IN_UP" = BLOCK_Z_IN_UP, - "BLOCKS_CONSTRUCTION" = BLOCKS_CONSTRUCTION, + "BLOCK_Z_OUT_DOWN" = BLOCK_Z_OUT_DOWN, + "BLOCK_Z_OUT_UP" = BLOCK_Z_OUT_UP, "BLOCKS_CONSTRUCTION_DIR" = BLOCKS_CONSTRUCTION_DIR, + "BLOCKS_CONSTRUCTION" = BLOCKS_CONSTRUCTION, + "CAN_BE_HIT" = CAN_BE_HIT, + "CONDUCTS_ELECTRICITY" = CONDUCTS_ELECTRICITY, + "DANGEROUS_POSSESSION" = DANGEROUS_POSSESSION, + "EMAGGED" = EMAGGED, "IGNORE_DENSITY" = IGNORE_DENSITY, + "IN_USE" = IN_USE, + "UNIQUE_RENAME" = UNIQUE_RENAME, )) DEFINE_BITFIELD(pass_flags, list( diff --git a/code/datums/diseases/magnitis.dm b/code/datums/diseases/magnitis.dm index 52156b968f9..dbe7d09cbb5 100644 --- a/code/datums/diseases/magnitis.dm +++ b/code/datums/diseases/magnitis.dm @@ -25,7 +25,7 @@ to_chat(affected_mob, span_danger("Your skin tingles with energy.")) if(SPT_PROB(1, seconds_per_tick)) for(var/obj/nearby_object in orange(2, affected_mob)) - if(nearby_object.anchored || !(nearby_object.flags_1 & CONDUCT_1)) + if(nearby_object.anchored || !(nearby_object.obj_flags & CONDUCTS_ELECTRICITY)) continue var/move_dir = get_dir(nearby_object, affected_mob) nearby_object.Move(get_step(nearby_object, move_dir), move_dir) @@ -40,7 +40,7 @@ if(SPT_PROB(2, seconds_per_tick)) to_chat(affected_mob, span_danger("You feel a light shock course through your body.")) for(var/obj/nearby_object in orange(4, affected_mob)) - if(nearby_object.anchored || !(nearby_object.flags_1 & CONDUCT_1)) + if(nearby_object.anchored || !(nearby_object.obj_flags & CONDUCTS_ELECTRICITY)) continue for(var/i in 1 to rand(1, 2)) nearby_object.throw_at(affected_mob, 4, 3) @@ -55,7 +55,7 @@ if(SPT_PROB(4, seconds_per_tick)) to_chat(affected_mob, span_danger("You feel a powerful shock course through your body.")) for(var/obj/nearby_object in orange(6, affected_mob)) - if(nearby_object.anchored || !(nearby_object.flags_1 & CONDUCT_1)) + if(nearby_object.anchored || !(nearby_object.obj_flags & CONDUCTS_ELECTRICITY)) continue for(var/i in 1 to rand(1, 3)) nearby_object.throw_at(affected_mob, 6, 5) // I really wanted to use addtimers to stagger out when everything gets thrown but it would probably cause a lot of lag. diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 7c903db123b..d9359311c5e 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1005,7 +1005,7 @@ /obj/machinery/door/airlock/attackby(obj/item/C, mob/user, params) if(!issilicon(user) && !isAdminGhostAI(user)) - if(isElectrified() && (C.flags_1 & CONDUCT_1) && shock(user, 75)) + if(isElectrified() && (C.obj_flags & CONDUCTS_ELECTRICITY) && shock(user, 75)) return add_fingerprint(user) diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index 5af4e45f8de..62f1b6f71a1 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -290,7 +290,7 @@ anchored = FALSE density = TRUE req_access = list(ACCESS_TELEPORTER) - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY use_power = NO_POWER_USE active_power_usage = 150 circuit = /obj/item/circuitboard/machine/shieldwallgen diff --git a/code/game/objects/items/AI_modules/_AI_modules.dm b/code/game/objects/items/AI_modules/_AI_modules.dm index 3e9fa583364..2dab0645fd2 100644 --- a/code/game/objects/items/AI_modules/_AI_modules.dm +++ b/code/game/objects/items/AI_modules/_AI_modules.dm @@ -9,7 +9,7 @@ lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' desc = "An AI Module for programming laws to an AI." - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 5 w_class = WEIGHT_CLASS_SMALL throwforce = 0 diff --git a/code/game/objects/items/airlock_painter.dm b/code/game/objects/items/airlock_painter.dm index 064f9c1e04f..061f45902df 100644 --- a/code/game/objects/items/airlock_painter.dm +++ b/code/game/objects/items/airlock_painter.dm @@ -10,7 +10,7 @@ custom_materials = list(/datum/material/iron= SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/glass= SMALL_MATERIAL_AMOUNT * 0.5) - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NOBLUDGEON slot_flags = ITEM_SLOT_BELT usesound = 'sound/effects/spray2.ogg' diff --git a/code/game/objects/items/chainsaw.dm b/code/game/objects/items/chainsaw.dm index e26f9aa2e99..0805f6b5233 100644 --- a/code/game/objects/items/chainsaw.dm +++ b/code/game/objects/items/chainsaw.dm @@ -7,7 +7,7 @@ icon_state = "chainsaw_off" lefthand_file = 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/chainsaw_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 13 var/force_on = 24 w_class = WEIGHT_CLASS_HUGE diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index 7ef4b4bd64a..e9378d505f3 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -736,7 +736,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM inhand_icon_state = "zippo" worn_icon_state = "lighter" w_class = WEIGHT_CLASS_TINY - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT heat = 1500 resistance_flags = FIRE_PROOF diff --git a/code/game/objects/items/cosmetics.dm b/code/game/objects/items/cosmetics.dm index 9e49a99d73b..b865d9c4579 100644 --- a/code/game/objects/items/cosmetics.dm +++ b/code/game/objects/items/cosmetics.dm @@ -189,7 +189,7 @@ icon = 'icons/obj/cosmetic.dmi' icon_state = "razor" inhand_icon_state = "razor" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY w_class = WEIGHT_CLASS_TINY /obj/item/razor/suicide_act(mob/living/carbon/user) diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index cfa1d0e4fca..68aeb0265ea 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -3,7 +3,7 @@ desc = "A vaguely insidious device with a scanner and large projector." // SKYRAT EDIT icon = 'icons/obj/device.dmi' icon_state = "shield0" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NOBLUDGEON slot_flags = ITEM_SLOT_BELT inhand_icon_state = "electronic" diff --git a/code/game/objects/items/devices/destabilizing_crystal.dm b/code/game/objects/items/devices/destabilizing_crystal.dm index 87e85adfdb0..6c57cead0e2 100644 --- a/code/game/objects/items/devices/destabilizing_crystal.dm +++ b/code/game/objects/items/devices/destabilizing_crystal.dm @@ -5,7 +5,7 @@ icon = 'icons/obj/machines/engine/supermatter.dmi' icon_state = "destabilizing_crystal" w_class = WEIGHT_CLASS_NORMAL - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NO_PIXEL_RANDOM_DROP throwforce = 5 throw_speed = 1 diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 9ba63151c7c..d0a94da0cac 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -15,7 +15,7 @@ lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' w_class = WEIGHT_CLASS_SMALL - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT custom_materials = list(/datum/material/iron= SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/glass= SMALL_MATERIAL_AMOUNT * 0.2) actions_types = list(/datum/action/item_action/toggle_light) @@ -293,7 +293,7 @@ inhand_icon_state = "" worn_icon_state = "pen" w_class = WEIGHT_CLASS_TINY - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY light_range = 2 COOLDOWN_DECLARE(holosign_cooldown) @@ -367,7 +367,7 @@ light_system = STATIC_LIGHT light_color = LIGHT_COLOR_FAINT_BLUE w_class = WEIGHT_CLASS_BULKY - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY custom_materials = null start_on = TRUE @@ -910,7 +910,7 @@ light_system = MOVABLE_LIGHT light_range = 15 light_power = 1 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = DROPDEL actions_types = list() diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index fae8d3950fd..cd1d2c94753 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -5,7 +5,7 @@ icon_state = "pointer" inhand_icon_state = "pen" worn_icon_state = "pen" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NOBLUDGEON slot_flags = ITEM_SLOT_BELT custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5) diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index 1d07e2a9558..2a5569bd430 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -41,7 +41,7 @@ lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' w_class = WEIGHT_CLASS_SMALL - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT force = 8 diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm index 0849c6c2b26..dc09f719f74 100644 --- a/code/game/objects/items/devices/powersink.dm +++ b/code/game/objects/items/devices/powersink.dm @@ -17,7 +17,7 @@ lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' w_class = WEIGHT_CLASS_BULKY - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NO_PIXEL_RANDOM_DROP throwforce = 5 throw_speed = 1 diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index d0b0ba1eb90..094ba7f5997 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -6,7 +6,7 @@ inhand_icon_state = "electropack" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BACK w_class = WEIGHT_CLASS_HUGE custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT *5, /datum/material/glass=SHEET_MATERIAL_AMOUNT * 1.25) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index e11756f6708..e09a7d07ef0 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -11,7 +11,7 @@ desc = "A basic handheld radio that communicates with local telecommunication networks." dog_fashion = /datum/dog_fashion/back - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT throw_speed = 3 throw_range = 7 diff --git a/code/game/objects/items/devices/reverse_bear_trap.dm b/code/game/objects/items/devices/reverse_bear_trap.dm index cc94deb7da9..9283bb1867a 100644 --- a/code/game/objects/items/devices/reverse_bear_trap.dm +++ b/code/game/objects/items/devices/reverse_bear_trap.dm @@ -7,7 +7,7 @@ worn_icon = 'icons/mob/clothing/head/utility.dmi' icon_state = "reverse_bear_trap" slot_flags = ITEM_SLOT_HEAD - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY resistance_flags = FIRE_PROOF | UNACIDABLE w_class = WEIGHT_CLASS_NORMAL max_integrity = 300 diff --git a/code/game/objects/items/devices/scanners/autopsy_scanner.dm b/code/game/objects/items/devices/scanners/autopsy_scanner.dm index 2f938c92e45..d28ad3bc5ca 100644 --- a/code/game/objects/items/devices/scanners/autopsy_scanner.dm +++ b/code/game/objects/items/devices/scanners/autopsy_scanner.dm @@ -7,7 +7,7 @@ worn_icon_state = "autopsy_scanner" lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_NORMAL custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*2) diff --git a/code/game/objects/items/devices/scanners/gas_analyzer.dm b/code/game/objects/items/devices/scanners/gas_analyzer.dm index 36819d8502a..af941b486a1 100644 --- a/code/game/objects/items/devices/scanners/gas_analyzer.dm +++ b/code/game/objects/items/devices/scanners/gas_analyzer.dm @@ -8,7 +8,7 @@ lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' w_class = WEIGHT_CLASS_SMALL - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NOBLUDGEON slot_flags = ITEM_SLOT_BELT throwforce = 0 diff --git a/code/game/objects/items/devices/scanners/health_analyzer.dm b/code/game/objects/items/devices/scanners/health_analyzer.dm index f5b41498f3f..1f5dcc56a1d 100644 --- a/code/game/objects/items/devices/scanners/health_analyzer.dm +++ b/code/game/objects/items/devices/scanners/health_analyzer.dm @@ -16,7 +16,7 @@ lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' desc = "A hand-held body scanner capable of distinguishing vital signs of the subject. Has a side button to scan for chemicals, and can be toggled to scan wounds." - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NOBLUDGEON slot_flags = ITEM_SLOT_BELT throwforce = 3 diff --git a/code/game/objects/items/devices/scanners/sequence_scanner.dm b/code/game/objects/items/devices/scanners/sequence_scanner.dm index ee2742c55d7..5882b156e1a 100644 --- a/code/game/objects/items/devices/scanners/sequence_scanner.dm +++ b/code/game/objects/items/devices/scanners/sequence_scanner.dm @@ -7,7 +7,7 @@ lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' desc = "A hand-held scanner for analyzing someones gene sequence on the fly. Use on a DNA console to update the internal database." - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NOBLUDGEON slot_flags = ITEM_SLOT_BELT throwforce = 3 diff --git a/code/game/objects/items/devices/scanners/slime_scanner.dm b/code/game/objects/items/devices/scanners/slime_scanner.dm index b05a0f31d1c..fe7ac245da0 100644 --- a/code/game/objects/items/devices/scanners/slime_scanner.dm +++ b/code/game/objects/items/devices/scanners/slime_scanner.dm @@ -7,7 +7,7 @@ lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' w_class = WEIGHT_CLASS_SMALL - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY throwforce = 0 throw_speed = 3 throw_range = 7 diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index 55cfde1b19c..931eded30bc 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -24,7 +24,7 @@ effective or pretty fucking useless. w_class = WEIGHT_CLASS_TINY throw_speed = 3 throw_range = 7 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY inhand_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' diff --git a/code/game/objects/items/door_seal.dm b/code/game/objects/items/door_seal.dm index eef6f3d79ee..d3e80cdf16d 100644 --- a/code/game/objects/items/door_seal.dm +++ b/code/game/objects/items/door_seal.dm @@ -6,7 +6,7 @@ inhand_icon_state = "pneumatic_seal" lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' righthand_file = 'icons/mob/inhands/items_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY resistance_flags = FIRE_PROOF | ACID_PROOF force = 5 throwforce = 5 diff --git a/code/game/objects/items/extinguisher.dm b/code/game/objects/items/extinguisher.dm index 8947e83d363..b571688f1a8 100644 --- a/code/game/objects/items/extinguisher.dm +++ b/code/game/objects/items/extinguisher.dm @@ -6,7 +6,7 @@ worn_icon_state = "fire_extinguisher" inhand_icon_state = "fire_extinguisher" hitsound = 'sound/weapons/smash.ogg' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY throwforce = 10 w_class = WEIGHT_CLASS_NORMAL throw_speed = 2 @@ -62,7 +62,7 @@ worn_icon_state = "miniFE" inhand_icon_state = "miniFE" hitsound = null //it is much lighter, after all. - flags_1 = null //doesn't CONDUCT_1 + obj_flags = NONE //doesn't conduct electricity throwforce = 2 w_class = WEIGHT_CLASS_SMALL force = 3 @@ -81,7 +81,7 @@ worn_icon_state = "miniFE" inhand_icon_state = "miniFE" hitsound = null //it is much lighter, after all. - flags_1 = null //doesn't CONDUCT_1 + obj_flags = NONE //doesn't conduct electricity throwforce = 1 w_class = WEIGHT_CLASS_SMALL force = 3 diff --git a/code/game/objects/items/fireaxe.dm b/code/game/objects/items/fireaxe.dm index b0b17faf89d..901e506194e 100644 --- a/code/game/objects/items/fireaxe.dm +++ b/code/game/objects/items/fireaxe.dm @@ -13,7 +13,7 @@ throwforce = 15 demolition_mod = 1.25 w_class = WEIGHT_CLASS_BULKY - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BACK attack_verb_continuous = list("attacks", "chops", "cleaves", "tears", "lacerates", "cuts") attack_verb_simple = list("attack", "chop", "cleave", "tear", "lacerate", "cut") diff --git a/code/game/objects/items/flamethrower.dm b/code/game/objects/items/flamethrower.dm index eb94626c86e..35f76ab89a1 100644 --- a/code/game/objects/items/flamethrower.dm +++ b/code/game/objects/items/flamethrower.dm @@ -6,7 +6,7 @@ inhand_icon_state = "flamethrower_0" lefthand_file = 'icons/mob/inhands/weapons/flamethrower_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/flamethrower_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 3 throwforce = 10 throw_speed = 1 diff --git a/code/game/objects/items/grenades/_grenade.dm b/code/game/objects/items/grenades/_grenade.dm index 9fde5723f45..bb1cade96b8 100644 --- a/code/game/objects/items/grenades/_grenade.dm +++ b/code/game/objects/items/grenades/_grenade.dm @@ -13,7 +13,8 @@ righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' throw_speed = 3 throw_range = 7 - flags_1 = CONDUCT_1 | PREVENT_CONTENTS_EXPLOSION_1 // We detonate upon being exploded. + flags_1 = PREVENT_CONTENTS_EXPLOSION_1 // We detonate upon being exploded. + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT resistance_flags = FLAMMABLE max_integrity = 40 diff --git a/code/game/objects/items/grenades/ghettobomb.dm b/code/game/objects/items/grenades/ghettobomb.dm index 040c5372561..b77216a9104 100644 --- a/code/game/objects/items/grenades/ghettobomb.dm +++ b/code/game/objects/items/grenades/ghettobomb.dm @@ -12,7 +12,7 @@ righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' throw_speed = 3 throw_range = 7 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT active = FALSE det_time = 50 diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index 45aed58c91c..d923d4258f0 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -38,7 +38,7 @@ inhand_icon_state = "handcuff" lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_HANDCUFFED throwforce = 0 w_class = WEIGHT_CLASS_SMALL @@ -350,7 +350,7 @@ inhand_icon_state = "handcuff" lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY throwforce = 0 w_class = WEIGHT_CLASS_NORMAL slowdown = 7 diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm index 56b8a1d653e..5b8666705dd 100644 --- a/code/game/objects/items/kitchen.dm +++ b/code/game/objects/items/kitchen.dm @@ -27,7 +27,7 @@ throw_speed = 3 throw_range = 5 custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.8) - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY attack_verb_continuous = list("attacks", "stabs", "pokes") attack_verb_simple = list("attack", "stab", "poke") hitsound = 'sound/weapons/bladeslice.ogg' @@ -170,7 +170,7 @@ icon_state = "metal_rolling_pin" inhand_icon_state = "metal_rolling_pin" force = 12 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 1.5) custom_price = PAYCHECK_CREW * 2 bare_wound_bonus = 14 @@ -186,7 +186,7 @@ icon_state = "spoon" base_icon_state = "spoon" w_class = WEIGHT_CLASS_TINY - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 2 throw_speed = 3 throw_range = 5 diff --git a/code/game/objects/items/knives.dm b/code/game/objects/items/knives.dm index 337c75cf5eb..4d63f825c07 100644 --- a/code/game/objects/items/knives.dm +++ b/code/game/objects/items/knives.dm @@ -8,7 +8,7 @@ inhand_icon_state = "knife" worn_icon_state = "knife" desc = "The original knife, it is said that all other knives are only copies of this one." - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 10 demolition_mod = 0.75 w_class = WEIGHT_CLASS_SMALL @@ -95,7 +95,7 @@ icon_state = "butch" inhand_icon_state = "butch" desc = "A huge thing used for chopping and chopping up meat. This includes clowns and clown by-products." - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 15 throwforce = 10 custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6) @@ -157,7 +157,7 @@ custom_materials = null /obj/item/knife/combat/bone/Initialize(mapload) - flags_1 &= ~CONDUCT_1 + flags_1 &= ~CONDUCTS_ELECTRICITY return ..() /obj/item/knife/combat/cyborg @@ -182,7 +182,7 @@ custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 4) /obj/item/knife/shiv/Initialize(mapload) - flags_1 &= ~CONDUCT_1 + flags_1 &= ~CONDUCTS_ELECTRICITY return ..() /obj/item/knife/shiv/plasma diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index bfd60d52555..8fc8057756d 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -159,7 +159,7 @@ armour_penetration = 100 sharpness = SHARP_EDGED w_class = WEIGHT_CLASS_NORMAL - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY light_color = LIGHT_COLOR_LIGHT_CYAN active_force = 150 diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 2b15d9ddef2..1c0d5f7c9b1 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -11,7 +11,7 @@ worn_icon_state = "whip" lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT force = 10 throwforce = 7 @@ -60,7 +60,7 @@ inhand_icon_state = "sabre" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY obj_flags = UNIQUE_RENAME force = 15 throwforce = 10 diff --git a/code/game/objects/items/pinpointer.dm b/code/game/objects/items/pinpointer.dm index 4c2c526c2c1..e36fa5a142f 100644 --- a/code/game/objects/items/pinpointer.dm +++ b/code/game/objects/items/pinpointer.dm @@ -4,7 +4,7 @@ desc = "A handheld tracking device that locks onto certain signals." icon = 'icons/obj/device.dmi' icon_state = "pinpointer" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_SMALL inhand_icon_state = "electronic" diff --git a/code/game/objects/items/powerfist.dm b/code/game/objects/items/powerfist.dm index 735d3092960..0054520c957 100644 --- a/code/game/objects/items/powerfist.dm +++ b/code/game/objects/items/powerfist.dm @@ -14,7 +14,7 @@ inhand_icon_state = "powerfist" lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY attack_verb_continuous = list("whacks", "fists", "power-punches") attack_verb_simple = list("whack", "fist", "power-punch") force = 20 diff --git a/code/game/objects/items/rcd/RHD.dm b/code/game/objects/items/rcd/RHD.dm index 9ebfede50d0..460482e5929 100644 --- a/code/game/objects/items/rcd/RHD.dm +++ b/code/game/objects/items/rcd/RHD.dm @@ -8,7 +8,7 @@ opacity = FALSE density = FALSE anchored = FALSE - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NOBLUDGEON force = 0 throwforce = 10 diff --git a/code/game/objects/items/rcd/RPD.dm b/code/game/objects/items/rcd/RPD.dm index ebe3fe36d73..635245f184a 100644 --- a/code/game/objects/items/rcd/RPD.dm +++ b/code/game/objects/items/rcd/RPD.dm @@ -170,7 +170,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( worn_icon_state = "RPD" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 10 throwforce = 10 throw_speed = 1 diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm index 75c81f63b85..d67c6fc8588 100644 --- a/code/game/objects/items/stacks/rods.dm +++ b/code/game/objects/items/stacks/rods.dm @@ -20,7 +20,7 @@ GLOBAL_LIST_INIT(rod_recipes, list ( \ singular_name = "iron rod" icon_state = "rods" inhand_icon_state = "rods" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY w_class = WEIGHT_CLASS_NORMAL force = 9 throwforce = 10 @@ -143,7 +143,7 @@ GLOBAL_LIST_INIT(rod_recipes, list ( \ icon_state = "rods" inhand_icon_state = "rods" color = "#5286b9ff" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY w_class = WEIGHT_CLASS_NORMAL mats_per_unit = list(/datum/material/iron=HALF_SHEET_MATERIAL_AMOUNT, /datum/material/plasma=SMALL_MATERIAL_AMOUNT*5, /datum/material/titanium=SHEET_MATERIAL_AMOUNT) max_amount = 30 diff --git a/code/game/objects/items/stacks/sheets/light.dm b/code/game/objects/items/stacks/sheets/light.dm index 5ee8f06237c..c9153c82844 100644 --- a/code/game/objects/items/stacks/sheets/light.dm +++ b/code/game/objects/items/stacks/sheets/light.dm @@ -9,7 +9,7 @@ throwforce = 5 throw_speed = 3 throw_range = 7 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY max_amount = 60 grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/copper = 5) merge_type = /obj/item/stack/light_w diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 9508730c8e7..e4166f62984 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -140,7 +140,7 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ inhand_icon_state = "sheet-metal" mats_per_unit = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT) throwforce = 10 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY resistance_flags = FIRE_PROOF merge_type = /obj/item/stack/sheet/iron grind_results = list(/datum/reagent/iron = 20) @@ -266,7 +266,7 @@ GLOBAL_LIST_INIT(plasteel_recipes, list ( \ mats_per_unit = list(/datum/material/alloy/plasteel=SHEET_MATERIAL_AMOUNT) material_type = /datum/material/alloy/plasteel throwforce = 10 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY armor_type = /datum/armor/sheet_plasteel resistance_flags = FIRE_PROOF merge_type = /obj/item/stack/sheet/plasteel diff --git a/code/game/objects/items/stacks/tiles/light.dm b/code/game/objects/items/stacks/tiles/light.dm index ec5bb310400..cbd503ad8e6 100644 --- a/code/game/objects/items/stacks/tiles/light.dm +++ b/code/game/objects/items/stacks/tiles/light.dm @@ -3,7 +3,7 @@ singular_name = "light floor tile" desc = "A floor tile, made out of glass. It produces light." icon_state = "tile_e" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY attack_verb_continuous = list("bashes", "batters", "bludgeons", "thrashes", "smashes") attack_verb_simple = list("bash", "batter", "bludgeon", "thrash", "smash") turf_type = /turf/open/floor/light diff --git a/code/game/objects/items/stacks/tiles/tile_iron.dm b/code/game/objects/items/stacks/tiles/tile_iron.dm index 404c3025344..e06df0728a7 100644 --- a/code/game/objects/items/stacks/tiles/tile_iron.dm +++ b/code/game/objects/items/stacks/tiles/tile_iron.dm @@ -7,7 +7,7 @@ force = 6 mats_per_unit = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT*0.25) throwforce = 10 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY turf_type = /turf/open/floor/iron armor_type = /datum/armor/tile_iron resistance_flags = FIRE_PROOF diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index 466a201ff70..5c8ef888517 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -344,7 +344,7 @@ throwforce = 10 throw_speed = 3 throw_range = 5 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT*1.5) custom_price = PAYCHECK_CREW * 0.6 diff --git a/code/game/objects/items/storage/briefcase.dm b/code/game/objects/items/storage/briefcase.dm index dc8357c3645..bd474808446 100644 --- a/code/game/objects/items/storage/briefcase.dm +++ b/code/game/objects/items/storage/briefcase.dm @@ -6,7 +6,7 @@ inhand_icon_state = "briefcase" lefthand_file = 'icons/mob/inhands/equipment/briefcase_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/briefcase_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 8 hitsound = SFX_SWING_HIT throw_speed = 2 diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm index 06e96073997..de2c351dadc 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -6,7 +6,7 @@ inhand_icon_state = "toolbox_default" lefthand_file = 'icons/mob/inhands/equipment/toolbox_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/toolbox_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 12 throwforce = 12 throw_speed = 2 diff --git a/code/game/objects/items/tanks/tank_types.dm b/code/game/objects/items/tanks/tank_types.dm index 8ebfb6afcc4..95bd31d9d97 100644 --- a/code/game/objects/items/tanks/tank_types.dm +++ b/code/game/objects/items/tanks/tank_types.dm @@ -80,7 +80,7 @@ inhand_icon_state = "plasma_tank" worn_icon_state = "plasmatank" tank_holder_icon_state = null - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = null //they have no straps! force = 8 @@ -162,7 +162,7 @@ worn_icon_state = "emergency" tank_holder_icon_state = "holder_emergency" worn_icon = null - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_SMALL force = 4 diff --git a/code/game/objects/items/tanks/tanks.dm b/code/game/objects/items/tanks/tanks.dm index a93cd92bd47..6b84407ed30 100644 --- a/code/game/objects/items/tanks/tanks.dm +++ b/code/game/objects/items/tanks/tanks.dm @@ -14,7 +14,7 @@ inhand_icon_state = "generic_tank" lefthand_file = 'icons/mob/inhands/equipment/tanks_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tanks_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BACK worn_icon = 'icons/mob/clothing/back.dmi' //since these can also get thrown into suit storage slots. if something goes on the belt, set this to null. hitsound = 'sound/weapons/smash.ogg' diff --git a/code/game/objects/items/teleportation.dm b/code/game/objects/items/teleportation.dm index 07e178acba5..69d8e1f284d 100644 --- a/code/game/objects/items/teleportation.dm +++ b/code/game/objects/items/teleportation.dm @@ -16,7 +16,7 @@ icon = 'icons/obj/device.dmi' icon_state = "locator" var/temp = null - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY w_class = WEIGHT_CLASS_SMALL inhand_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' @@ -328,7 +328,7 @@ w_class = WEIGHT_CLASS_SMALL throw_speed = 4 throw_range = 10 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY inhand_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' diff --git a/code/game/objects/items/tools/crowbar.dm b/code/game/objects/items/tools/crowbar.dm index 485ff0863a8..9265dc7cb4e 100644 --- a/code/game/objects/items/tools/crowbar.dm +++ b/code/game/objects/items/tools/crowbar.dm @@ -7,7 +7,7 @@ lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' usesound = 'sound/items/crowbar.ogg' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT force = 5 throwforce = 7 diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm index 2c95d657181..cbdc79e0420 100644 --- a/code/game/objects/items/tools/screwdriver.dm +++ b/code/game/objects/items/tools/screwdriver.dm @@ -8,7 +8,8 @@ belt_icon_state = "screwdriver" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - flags_1 = CONDUCT_1 | IS_PLAYER_COLORABLE_1 + flags_1 = IS_PLAYER_COLORABLE_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT force = 5 demolition_mod = 0.5 diff --git a/code/game/objects/items/tools/spess_knife.dm b/code/game/objects/items/tools/spess_knife.dm index 59195410000..0b0061de7a4 100644 --- a/code/game/objects/items/tools/spess_knife.dm +++ b/code/game/objects/items/tools/spess_knife.dm @@ -11,7 +11,7 @@ lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' w_class = WEIGHT_CLASS_TINY - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT resistance_flags = FIRE_PROOF tool_behaviour = null diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index 3812cf911bf..a88a069e421 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -9,7 +9,7 @@ worn_icon_state = "welder" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT force = 3 throwforce = 5 diff --git a/code/game/objects/items/tools/wirecutters.dm b/code/game/objects/items/tools/wirecutters.dm index 1ed8055333c..dad9763bd3d 100644 --- a/code/game/objects/items/tools/wirecutters.dm +++ b/code/game/objects/items/tools/wirecutters.dm @@ -13,7 +13,7 @@ greyscale_config_inhand_left = /datum/greyscale_config/wirecutter_inhand_left greyscale_config_inhand_right = /datum/greyscale_config/wirecutter_inhand_right - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT force = 6 throw_speed = 3 diff --git a/code/game/objects/items/tools/wrench.dm b/code/game/objects/items/tools/wrench.dm index 70dc666aa93..c4326cf3de8 100644 --- a/code/game/objects/items/tools/wrench.dm +++ b/code/game/objects/items/tools/wrench.dm @@ -7,7 +7,7 @@ worn_icon_state = "wrench" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT force = 5 throwforce = 7 diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index c7f93c6ea68..6769dab38e2 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -320,7 +320,7 @@ worn_icon_state = "gun" lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_NORMAL custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.1, /datum/material/glass= SMALL_MATERIAL_AMOUNT * 0.1) @@ -615,7 +615,7 @@ worn_icon_state = "katana" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK force = 5 throwforce = 5 diff --git a/code/game/objects/items/vending_items.dm b/code/game/objects/items/vending_items.dm index de0dc592c7b..0383767ce66 100644 --- a/code/game/objects/items/vending_items.dm +++ b/code/game/objects/items/vending_items.dm @@ -11,7 +11,7 @@ desc = "A vending machine restock cart." lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 7 throwforce = 10 throw_speed = 1 diff --git a/code/game/objects/items/wall_mounted.dm b/code/game/objects/items/wall_mounted.dm index 2fa342d0d6f..7589de01ad8 100644 --- a/code/game/objects/items/wall_mounted.dm +++ b/code/game/objects/items/wall_mounted.dm @@ -1,7 +1,7 @@ /obj/item/wallframe icon = 'icons/obj/machines/wallmounts.dmi' custom_materials = list(/datum/material/iron= SHEET_MATERIAL_AMOUNT * 2) - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY inhand_icon_state = "syringe_kit" lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' @@ -88,7 +88,7 @@ inhand_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY w_class = WEIGHT_CLASS_SMALL custom_materials = list(/datum/material/iron= SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/glass= SMALL_MATERIAL_AMOUNT * 0.5) grind_results = list(/datum/reagent/iron = 10, /datum/reagent/silicon = 10) diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm index b2cba11907a..df426c712fa 100644 --- a/code/game/objects/items/weaponry.dm +++ b/code/game/objects/items/weaponry.dm @@ -70,7 +70,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' hitsound = 'sound/weapons/bladeslice.ogg' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK force = 40 throwforce = 10 @@ -130,7 +130,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 /obj/item/claymore/highlander //ALL COMMENTS MADE REGARDING THIS SWORD MUST BE MADE IN ALL CAPS desc = "THERE CAN BE ONLY ONE, AND IT WILL BE YOU!!!\nActivate it in your hand to point to the nearest victim." - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = DROPDEL //WOW BRO YOU LOST AN ARM, GUESS WHAT YOU DONT GET YOUR SWORD ANYMORE //I CANT BELIEVE SPOOKYDONUT WOULD BREAK THE REQUIREMENTS slot_flags = null block_chance = 0 //RNG WON'T HELP YOU NOW, PANSY @@ -291,7 +291,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 worn_icon_state = "katana" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK force = 40 throwforce = 10 @@ -358,7 +358,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' desc = "A sharp, concealable, spring-loaded knife." - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 3 w_class = WEIGHT_CLASS_SMALL throwforce = 5 diff --git a/code/game/objects/items/wizard_weapons.dm b/code/game/objects/items/wizard_weapons.dm index b16f5be5bfd..533ae118dc2 100644 --- a/code/game/objects/items/wizard_weapons.dm +++ b/code/game/objects/items/wizard_weapons.dm @@ -7,7 +7,7 @@ lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi' worn_icon_state = "singularity_hammer" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BACK force = 5 throwforce = 15 @@ -85,7 +85,7 @@ worn_icon_state = "mjollnir" lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BACK force = 5 throwforce = 30 diff --git a/code/game/objects/structures/cannons/cannonballs.dm b/code/game/objects/structures/cannons/cannonballs.dm index 718fd2b1ebb..08533bdcebd 100644 --- a/code/game/objects/structures/cannons/cannonballs.dm +++ b/code/game/objects/structures/cannons/cannonballs.dm @@ -7,7 +7,7 @@ singular_name = "cannonball" merge_type = /obj/item/stack/cannonball throwforce = 10 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY custom_materials = list(/datum/material/alloy/plasteel=SHEET_MATERIAL_AMOUNT) resistance_flags = FIRE_PROOF throw_speed = 5 diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 73f3972ef83..68067263d58 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -10,7 +10,7 @@ density = TRUE anchored = TRUE pass_flags_self = PASSGRILLE - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY obj_flags = CAN_BE_HIT | IGNORE_DENSITY pressure_resistance = 5*ONE_ATMOSPHERE armor_type = /datum/armor/structure_grille @@ -280,7 +280,7 @@ return //window placing end - else if((W.flags_1 & CONDUCT_1) && shock(user, 70)) + else if((W.obj_flags & CONDUCTS_ELECTRICITY) && shock(user, 70)) return return ..() diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 80c2bb7715a..4bfb93579f8 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -906,7 +906,7 @@ icon = 'icons/obj/structures.dmi' icon_state = "rack_parts" inhand_icon_state = "rack_parts" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT) var/building = FALSE diff --git a/code/game/objects/structures/training_machine.dm b/code/game/objects/structures/training_machine.dm index 08ff42e2d76..fd0d8bb0c8f 100644 --- a/code/game/objects/structures/training_machine.dm +++ b/code/game/objects/structures/training_machine.dm @@ -350,7 +350,7 @@ inhand_icon_state = "toolbox_gold" lefthand_file = 'icons/mob/inhands/equipment/toolbox_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/toolbox_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 0 throwforce = 0 throw_speed = 2 diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index dfabe50ce9a..944aa45e377 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -64,7 +64,7 @@ Striking a noncultist, however, will tear their flesh."} righthand_file = 'icons/mob/inhands/64x64_righthand.dmi' inhand_x_dimension = 64 inhand_y_dimension = 64 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY sharpness = SHARP_EDGED w_class = WEIGHT_CLASS_BULKY force = 30 // whoever balanced this got beat in the head by a bible too many times good lord diff --git a/code/modules/antagonists/heretic/items/heretic_blades.dm b/code/modules/antagonists/heretic/items/heretic_blades.dm index 7cce886a145..19470e29699 100644 --- a/code/modules/antagonists/heretic/items/heretic_blades.dm +++ b/code/modules/antagonists/heretic/items/heretic_blades.dm @@ -9,7 +9,7 @@ righthand_file = 'icons/mob/inhands/64x64_righthand.dmi' inhand_x_dimension = 64 inhand_y_dimension = 64 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY sharpness = SHARP_EDGED w_class = WEIGHT_CLASS_NORMAL force = 20 diff --git a/code/modules/antagonists/heretic/structures/carving_knife.dm b/code/modules/antagonists/heretic/structures/carving_knife.dm index e89f53818b3..b9afe643240 100644 --- a/code/modules/antagonists/heretic/structures/carving_knife.dm +++ b/code/modules/antagonists/heretic/structures/carving_knife.dm @@ -5,7 +5,7 @@ but only few can evoke the dangers that lurk beneath reality." icon = 'icons/obj/antags/eldritch.dmi' icon_state = "rune_carver" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY sharpness = SHARP_EDGED w_class = WEIGHT_CLASS_SMALL wound_bonus = 20 diff --git a/code/modules/antagonists/nukeop/equipment/borgchameleon.dm b/code/modules/antagonists/nukeop/equipment/borgchameleon.dm index 00f3c7effab..b55aef09f84 100644 --- a/code/modules/antagonists/nukeop/equipment/borgchameleon.dm +++ b/code/modules/antagonists/nukeop/equipment/borgchameleon.dm @@ -2,7 +2,7 @@ name = "cyborg chameleon projector" icon = 'icons/obj/device.dmi' icon_state = "shield0" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NOBLUDGEON inhand_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' diff --git a/code/modules/art/statues.dm b/code/modules/art/statues.dm index 66480038a40..3d751ca4ab0 100644 --- a/code/modules/art/statues.dm +++ b/code/modules/art/statues.dm @@ -273,7 +273,7 @@ inhand_icon_state = "screwdriver_nuke" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT force = 5 w_class = WEIGHT_CLASS_TINY diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm index 266b61e2d50..39305b72772 100644 --- a/code/modules/assembly/assembly.dm +++ b/code/modules/assembly/assembly.dm @@ -4,7 +4,7 @@ desc = "A small electronic device that should never exist." icon = 'icons/obj/assemblies/new_assemblies.dmi' icon_state = "" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY w_class = WEIGHT_CLASS_SMALL custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT) throwforce = 2 diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm index 4ea085ca9a3..a40f3e3a659 100644 --- a/code/modules/assembly/bomb.dm +++ b/code/modules/assembly/bomb.dm @@ -8,7 +8,7 @@ w_class = WEIGHT_CLASS_NORMAL throw_speed = 2 throw_range = 4 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY var/status = FALSE //0 - not readied //1 - bomb finished with welder var/obj/item/assembly_holder/bombassembly = null //The first part of the bomb is an assembly holder, holding an igniter+some device var/obj/item/tank/bombtank = null //the second part of the bomb is a plasma tank diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index 4a7e797de58..a79e2ec4924 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -5,7 +5,7 @@ inhand_icon_state = "assembly" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY throwforce = 5 w_class = WEIGHT_CLASS_SMALL throw_speed = 2 diff --git a/code/modules/assembly/shock_kit.dm b/code/modules/assembly/shock_kit.dm index 5b1eb0ee0ee..113a7a8d2aa 100644 --- a/code/modules/assembly/shock_kit.dm +++ b/code/modules/assembly/shock_kit.dm @@ -6,7 +6,7 @@ var/obj/item/clothing/head/helmet/helmet_part = null var/obj/item/electropack/electropack_part = null w_class = WEIGHT_CLASS_HUGE - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY /obj/item/assembly/shock_kit/Destroy() QDEL_NULL(helmet_part) diff --git a/code/modules/awaymissions/mission_code/murderdome.dm b/code/modules/awaymissions/mission_code/murderdome.dm index d558ab812a6..0c3df503ef3 100644 --- a/code/modules/awaymissions/mission_code/murderdome.dm +++ b/code/modules/awaymissions/mission_code/murderdome.dm @@ -9,7 +9,8 @@ /obj/structure/grille/indestructible - flags_1 = CONDUCT_1 | NODECONSTRUCT_1 + flags_1 = NODECONSTRUCT_1 + obj_flags = CONDUCTS_ELECTRICITY resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF /obj/structure/grille/indestructible/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) diff --git a/code/modules/bitrunning/objects/host_monitor.dm b/code/modules/bitrunning/objects/host_monitor.dm index c35edea6319..2116c7aa6ab 100644 --- a/code/modules/bitrunning/objects/host_monitor.dm +++ b/code/modules/bitrunning/objects/host_monitor.dm @@ -3,7 +3,7 @@ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2) desc = "A complex electronic that will analyze the connection health between host and avatar." - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY icon = 'icons/obj/device.dmi' icon_state = "host_monitor" inhand_icon_state = "electronic" diff --git a/code/modules/clothing/chameleon/chameleon_scanner.dm b/code/modules/clothing/chameleon/chameleon_scanner.dm index b6ed86e8640..343ceb5c001 100644 --- a/code/modules/clothing/chameleon/chameleon_scanner.dm +++ b/code/modules/clothing/chameleon/chameleon_scanner.dm @@ -1,7 +1,7 @@ /// Small handheld chameleon item that allows a user to mimic the outfit of another person quickly. /obj/item/chameleon_scanner // No name or desc by default, set up by the cham action - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NOBLUDGEON slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_TINY diff --git a/code/modules/clothing/suits/costume.dm b/code/modules/clothing/suits/costume.dm index 49cb7ffb174..3a480ae1fa6 100644 --- a/code/modules/clothing/suits/costume.dm +++ b/code/modules/clothing/suits/costume.dm @@ -52,7 +52,7 @@ icon_state = "death" inhand_icon_state = null body_parts_covered = CHEST|GROIN|ARMS|LEGS|FEET - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY fire_resist = T0C+5200 flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT diff --git a/code/modules/detectivework/scanner.dm b/code/modules/detectivework/scanner.dm index 63bab9afdd9..7ce569c3be2 100644 --- a/code/modules/detectivework/scanner.dm +++ b/code/modules/detectivework/scanner.dm @@ -12,7 +12,7 @@ worn_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NOBLUDGEON slot_flags = ITEM_SLOT_BELT /// if the scanner is currently busy processing diff --git a/code/modules/fishing/aquarium/fish_analyzer.dm b/code/modules/fishing/aquarium/fish_analyzer.dm index a83aa4296b6..52cf6113f00 100644 --- a/code/modules/fishing/aquarium/fish_analyzer.dm +++ b/code/modules/fishing/aquarium/fish_analyzer.dm @@ -7,7 +7,7 @@ inhand_icon_state = "fish_analyzer" worn_icon_state = "fish_analyzer" desc = "A fish-shaped scanner used to monitor fish's status and evolutionary traits." - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NOBLUDGEON slot_flags = ITEM_SLOT_BELT throwforce = 3 diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index fdc40831948..e1ae5d15323 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -421,7 +421,7 @@ inhand_icon_state = "cultivator" lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 5 throwforce = 7 w_class = WEIGHT_CLASS_SMALL @@ -472,7 +472,7 @@ inhand_icon_state = "hatchet" lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 12 w_class = WEIGHT_CLASS_SMALL throwforce = 15 @@ -518,7 +518,7 @@ throw_speed = 2 throw_range = 3 w_class = WEIGHT_CLASS_BULKY - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY armour_penetration = 20 wound_bonus = 10 slot_flags = ITEM_SLOT_BACK @@ -578,7 +578,7 @@ worn_icon_state = "cutters" lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 5 throwforce = 6 w_class = WEIGHT_CLASS_SMALL @@ -608,7 +608,7 @@ worn_icon_state = "cutters" lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 10 throwforce = 8 w_class = WEIGHT_CLASS_SMALL diff --git a/code/modules/mining/equipment/mineral_scanner.dm b/code/modules/mining/equipment/mineral_scanner.dm index c56077c4dfb..5ff0ccd3cb8 100644 --- a/code/modules/mining/equipment/mineral_scanner.dm +++ b/code/modules/mining/equipment/mineral_scanner.dm @@ -9,7 +9,7 @@ lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' w_class = WEIGHT_CLASS_SMALL - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT var/cooldown = 35 var/current_cooldown = 0 @@ -38,7 +38,7 @@ lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' w_class = WEIGHT_CLASS_SMALL - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT var/cooldown = 35 var/current_cooldown = 0 diff --git a/code/modules/mining/equipment/mining_tools.dm b/code/modules/mining/equipment/mining_tools.dm index 69903d77591..abb6230fee8 100644 --- a/code/modules/mining/equipment/mining_tools.dm +++ b/code/modules/mining/equipment/mining_tools.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/mining.dmi' icon_state = "pickaxe" inhand_icon_state = "pickaxe" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK force = 15 throwforce = 10 @@ -123,7 +123,7 @@ inhand_icon_state = "shovel" lefthand_file = 'icons/mob/inhands/equipment/mining_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/mining_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT force = 8 throwforce = 4 @@ -206,7 +206,7 @@ inhand_icon_state = "trench_tool" lefthand_file = 'icons/mob/inhands/equipment/mining_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/mining_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 15 throwforce = 6 w_class = WEIGHT_CLASS_SMALL diff --git a/code/modules/mining/lavaland/megafauna_loot.dm b/code/modules/mining/lavaland/megafauna_loot.dm index 4bf8fa8c57b..47a334484ba 100644 --- a/code/modules/mining/lavaland/megafauna_loot.dm +++ b/code/modules/mining/lavaland/megafauna_loot.dm @@ -637,7 +637,7 @@ inhand_icon_state = "spectral" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY sharpness = SHARP_EDGED w_class = WEIGHT_CLASS_BULKY force = 1 diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index bea2570fc4e..0b499f590d6 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -298,7 +298,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ attacher = key_name(user) user.balloon_alert_to_viewers("attached rig") return - + if(I.tool_behaviour == TOOL_WRENCH && rig) rig.on_found() if(QDELETED(src)) @@ -410,7 +410,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon = 'icons/obj/economy.dmi' name = "coin" icon_state = "coin" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 1 throwforce = 2 w_class = WEIGHT_CLASS_TINY diff --git a/code/modules/mob/living/silicon/robot/robot_model.dm b/code/modules/mob/living/silicon/robot/robot_model.dm index 3a0f950b0fe..1bf4593afb8 100644 --- a/code/modules/mob/living/silicon/robot/robot_model.dm +++ b/code/modules/mob/living/silicon/robot/robot_model.dm @@ -14,7 +14,7 @@ inhand_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY ///Host of this model var/mob/living/silicon/robot/robot ///Icon of the module selection screen diff --git a/code/modules/photography/camera/camera.dm b/code/modules/photography/camera/camera.dm index b168aaf54da..b33c37290c2 100644 --- a/code/modules/photography/camera/camera.dm +++ b/code/modules/photography/camera/camera.dm @@ -16,7 +16,7 @@ light_power = FLASH_LIGHT_POWER light_on = FALSE w_class = WEIGHT_CLASS_SMALL - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_NECK custom_materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*0.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT*1.5) custom_price = PAYCHECK_CREW * 2 diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 3951ae44def..13354f6bc54 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -439,7 +439,7 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri throw_speed = 3 throw_range = 5 mats_per_unit = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.1, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.1) - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT attack_verb_continuous = list("whips", "lashes", "disciplines", "flogs") attack_verb_simple = list("whip", "lash", "discipline", "flog") diff --git a/code/modules/power/lighting/light.dm b/code/modules/power/lighting/light.dm index 3d6ec46e496..1e46021a891 100644 --- a/code/modules/power/lighting/light.dm +++ b/code/modules/power/lighting/light.dm @@ -405,7 +405,7 @@ deconstruct() return to_chat(user, span_userdanger("You stick \the [tool] into the light socket!")) - if(has_power() && (tool.flags_1 & CONDUCT_1)) + if(has_power() && (tool.obj_flags & CONDUCTS_ELECTRICITY)) do_sparks(3, TRUE, src) if (prob(75)) electrocute_mob(user, get_area(src), src, (rand(7,10) * 0.1), TRUE) @@ -448,7 +448,7 @@ ..() if(status != LIGHT_BROKEN && status != LIGHT_EMPTY) return - if(!on || !(attacking_object.flags_1 & CONDUCT_1)) + if(!on || !(attacking_object.obj_flags & CONDUCTS_ELECTRICITY)) return if(prob(12)) electrocute_mob(user, get_area(src), src, 0.3, TRUE) diff --git a/code/modules/power/pipecleaners.dm b/code/modules/power/pipecleaners.dm index f052913c2e7..201f7a955aa 100644 --- a/code/modules/power/pipecleaners.dm +++ b/code/modules/power/pipecleaners.dm @@ -197,7 +197,7 @@ By design, d1 is the smallest direction and d2 is the highest throw_speed = 3 throw_range = 5 mats_per_unit = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.1, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.1) - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT attack_verb_continuous = list("whips", "lashes", "disciplines", "flogs") attack_verb_simple = list("whip", "lash", "discipline", "flog") diff --git a/code/modules/projectiles/ammunition/_ammunition.dm b/code/modules/projectiles/ammunition/_ammunition.dm index e492afb776b..45e09db624c 100644 --- a/code/modules/projectiles/ammunition/_ammunition.dm +++ b/code/modules/projectiles/ammunition/_ammunition.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/weapons/guns/ammo.dmi' icon_state = "s-casing" worn_icon_state = "bullet" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT throwforce = 0 w_class = WEIGHT_CLASS_TINY diff --git a/code/modules/projectiles/boxes_magazines/_box_magazine.dm b/code/modules/projectiles/boxes_magazines/_box_magazine.dm index 85d7c90ec76..15135bee1a5 100644 --- a/code/modules/projectiles/boxes_magazines/_box_magazine.dm +++ b/code/modules/projectiles/boxes_magazines/_box_magazine.dm @@ -3,7 +3,7 @@ name = "ammo box (null_reference_exception)" desc = "A box of ammo." icon = 'icons/obj/weapons/guns/ammo.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT inhand_icon_state = "syringe_kit" worn_icon_state = "ammobox" diff --git a/code/modules/projectiles/boxes_magazines/internal/_internal.dm b/code/modules/projectiles/boxes_magazines/internal/_internal.dm index c14e66af82c..0579d19234b 100644 --- a/code/modules/projectiles/boxes_magazines/internal/_internal.dm +++ b/code/modules/projectiles/boxes_magazines/internal/_internal.dm @@ -1,6 +1,6 @@ /obj/item/ammo_box/magazine/internal desc = "Oh god, this shouldn't be here" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = ABSTRACT //internals magazines are accessible, so replace spent ammo if full when trying to put a live one in diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index dd1bf3d6017..eba77d57446 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -8,7 +8,7 @@ icon_state = "revolver" inhand_icon_state = "gun" worn_icon_state = "gun" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY appearance_flags = TILE_BOUND|PIXEL_SCALE|LONG_GLIDE|KEEP_TOGETHER slot_flags = ITEM_SLOT_BELT custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT) diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm index a132e169bdf..a7186ae6439 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -14,7 +14,7 @@ load_sound = 'sound/weapons/gun/shotgun/insert_shell.ogg' w_class = WEIGHT_CLASS_BULKY force = 10 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BACK accepted_magazine_type = /obj/item/ammo_box/magazine/internal/shot semi_auto = FALSE @@ -264,7 +264,7 @@ w_class = WEIGHT_CLASS_BULKY weapon_weight = WEAPON_MEDIUM force = 10 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BACK accepted_magazine_type = /obj/item/ammo_box/magazine/internal/shot/dual sawn_desc = "Omar's coming!" @@ -316,7 +316,7 @@ accepted_magazine_type = /obj/item/ammo_box/magazine/internal/shot/bounty weapon_weight = WEAPON_MEDIUM semi_auto = TRUE - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 18 //it has a hook on it sharpness = SHARP_POINTY //it does in fact, have a hook on it attack_verb_continuous = list("slashes", "hooks", "stabs") diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index e0130f9f16a..5a0d29be045 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -122,7 +122,7 @@ worn_icon_state = null w_class = WEIGHT_CLASS_BULKY force = 10 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BACK ammo_type = list(/obj/item/ammo_casing/energy/laser/accelerator) pin = null diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm index 72b4ce4a141..f441937e60a 100644 --- a/code/modules/projectiles/guns/energy/pulse.dm +++ b/code/modules/projectiles/guns/energy/pulse.dm @@ -7,7 +7,7 @@ w_class = WEIGHT_CLASS_BULKY force = 10 modifystate = TRUE - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BACK ammo_type = list(/obj/item/ammo_casing/energy/laser/pulse, /obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/laser) cell_type = /obj/item/stock_parts/cell/pulse diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 020308270f6..dd55ef02d89 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -6,7 +6,7 @@ worn_icon_state = null shaded_charge = TRUE w_class = WEIGHT_CLASS_HUGE - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BACK ammo_type = list(/obj/item/ammo_casing/energy/ion) @@ -100,7 +100,7 @@ icon_state = "plasmacutter" inhand_icon_state = "plasmacutter" ammo_type = list(/obj/item/ammo_casing/energy/plasma) - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY attack_verb_continuous = list("attacks", "slashes", "cuts", "slices") attack_verb_simple = list("attack", "slash", "cut", "slice") force = 12 diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm index 94c1e7502a8..0c1c27c9c07 100644 --- a/code/modules/projectiles/guns/magic.dm +++ b/code/modules/projectiles/guns/magic.dm @@ -7,7 +7,7 @@ lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' //not really a gun and some toys use these inhands righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi' fire_sound = 'sound/weapons/emitter.ogg' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY w_class = WEIGHT_CLASS_HUGE ///what kind of magic is this var/school = SCHOOL_EVOCATION diff --git a/code/modules/projectiles/pins.dm b/code/modules/projectiles/pins.dm index 5437a7096da..9a6b3fbb471 100644 --- a/code/modules/projectiles/pins.dm +++ b/code/modules/projectiles/pins.dm @@ -5,7 +5,7 @@ icon_state = "firing_pin" inhand_icon_state = "pen" worn_icon_state = "pen" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY w_class = WEIGHT_CLASS_TINY attack_verb_continuous = list("pokes") attack_verb_simple = list("poke") diff --git a/code/modules/reagents/reagent_containers/cups/drinks.dm b/code/modules/reagents/reagent_containers/cups/drinks.dm index 88b7d5baabf..f8948ae6eea 100644 --- a/code/modules/reagents/reagent_containers/cups/drinks.dm +++ b/code/modules/reagents/reagent_containers/cups/drinks.dm @@ -51,7 +51,7 @@ custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT) has_variable_transfer_amount = FALSE volume = 5 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY spillable = TRUE resistance_flags = FIRE_PROOF isGlass = FALSE diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 4f4b11dfb9c..1d056f16a0b 100644 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -267,7 +267,7 @@ inhand_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT /obj/item/dest_tagger/borg diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index 1ce7f080d0f..70e230c5a4e 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -1037,7 +1037,7 @@ throwforce = 10 throw_speed = 3 throw_range = 7 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY max_amount = 60 turf_type = /turf/open/floor/bluespace merge_type = /obj/item/stack/tile/bluespace @@ -1054,7 +1054,7 @@ throwforce = 10 throw_speed = 0.1 throw_range = 28 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY max_amount = 60 turf_type = /turf/open/floor/sepia merge_type = /obj/item/stack/tile/sepia diff --git a/code/modules/surgery/bodyparts/robot_bodyparts.dm b/code/modules/surgery/bodyparts/robot_bodyparts.dm index 10195c6d98e..a63f071bf9e 100644 --- a/code/modules/surgery/bodyparts/robot_bodyparts.dm +++ b/code/modules/surgery/bodyparts/robot_bodyparts.dm @@ -19,7 +19,7 @@ inhand_icon_state = "buildpipe" icon = 'icons/mob/augmentation/augments.dmi' icon_static = 'icons/mob/augmentation/augments.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY icon_state = "borg_l_arm" is_dimorphic = FALSE should_draw_greyscale = FALSE @@ -52,7 +52,7 @@ icon_static = 'icons/mob/augmentation/augments.dmi' icon = 'icons/mob/augmentation/augments.dmi' limb_id = BODYPART_ID_ROBOTIC - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY icon_state = "borg_r_arm" is_dimorphic = FALSE should_draw_greyscale = FALSE @@ -86,7 +86,7 @@ icon_static = 'icons/mob/augmentation/augments.dmi' icon = 'icons/mob/augmentation/augments.dmi' limb_id = BODYPART_ID_ROBOTIC - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY icon_state = "borg_l_leg" is_dimorphic = FALSE should_draw_greyscale = FALSE @@ -133,7 +133,7 @@ icon_static = 'icons/mob/augmentation/augments.dmi' icon = 'icons/mob/augmentation/augments.dmi' limb_id = BODYPART_ID_ROBOTIC - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY icon_state = "borg_r_leg" is_dimorphic = FALSE should_draw_greyscale = FALSE @@ -179,7 +179,7 @@ icon_static = 'icons/mob/augmentation/augments.dmi' icon = 'icons/mob/augmentation/augments.dmi' limb_id = BODYPART_ID_ROBOTIC - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY icon_state = "borg_chest" is_dimorphic = FALSE should_draw_greyscale = FALSE @@ -357,7 +357,7 @@ icon_static = 'icons/mob/augmentation/augments.dmi' icon = 'icons/mob/augmentation/augments.dmi' limb_id = BODYPART_ID_ROBOTIC - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY icon_state = "borg_head" is_dimorphic = FALSE should_draw_greyscale = FALSE diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm index 83b1b0705ef..37ebf5ecb90 100644 --- a/code/modules/surgery/tools.dm +++ b/code/modules/surgery/tools.dm @@ -7,7 +7,7 @@ lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*3, /datum/material/glass =SHEET_MATERIAL_AMOUNT * 1.5) - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = SURGICAL_TOOL w_class = WEIGHT_CLASS_TINY tool_behaviour = TOOL_RETRACTOR @@ -32,7 +32,7 @@ lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' custom_materials = list(/datum/material/iron =SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT*1.25) - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = SURGICAL_TOOL w_class = WEIGHT_CLASS_TINY attack_verb_continuous = list("attacks", "pinches") @@ -59,7 +59,7 @@ lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*1.25, /datum/material/glass = SMALL_MATERIAL_AMOUNT*7.5) - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = SURGICAL_TOOL w_class = WEIGHT_CLASS_TINY attack_verb_continuous = list("burns") @@ -139,7 +139,7 @@ righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' hitsound = 'sound/weapons/circsawhit.ogg' custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*5, /datum/material/glass = SHEET_MATERIAL_AMOUNT*3) - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = SURGICAL_TOOL force = 15 demolition_mod = 0.5 @@ -182,7 +182,7 @@ inhand_icon_state = "scalpel" lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = SURGICAL_TOOL force = 10 demolition_mod = 0.25 @@ -232,7 +232,7 @@ righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' hitsound = 'sound/weapons/circsawhit.ogg' mob_throw_hit_sound = 'sound/weapons/pierce.ogg' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = SURGICAL_TOOL force = 15 w_class = WEIGHT_CLASS_NORMAL @@ -473,7 +473,7 @@ desc = "A type of heavy duty surgical shears used for achieving a clean separation between limb and patient. Keeping the patient still is imperative to be able to secure and align the shears." icon = 'icons/obj/medical/surgery_tools.dmi' icon_state = "shears" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = SURGICAL_TOOL toolspeed = 1 force = 12 @@ -559,7 +559,7 @@ lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' custom_materials = list(/datum/material/iron =SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT*1.25, /datum/material/silver = SHEET_MATERIAL_AMOUNT*1.25) - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = SURGICAL_TOOL w_class = WEIGHT_CLASS_SMALL attack_verb_continuous = list("corrects", "properly sets") diff --git a/code/modules/uplink/uplink_devices.dm b/code/modules/uplink/uplink_devices.dm index 65cbe2c35b4..ada8c89259c 100644 --- a/code/modules/uplink/uplink_devices.dm +++ b/code/modules/uplink/uplink_devices.dm @@ -14,7 +14,7 @@ righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' dog_fashion = /datum/dog_fashion/back - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT throw_speed = 3 throw_range = 7 diff --git a/code/modules/vehicles/mecha/mecha_parts.dm b/code/modules/vehicles/mecha/mecha_parts.dm index 18598ed465a..03f199637b5 100644 --- a/code/modules/vehicles/mecha/mecha_parts.dm +++ b/code/modules/vehicles/mecha/mecha_parts.dm @@ -7,7 +7,7 @@ icon = 'icons/mob/mech_construct.dmi' icon_state = "blank" w_class = WEIGHT_CLASS_GIGANTIC - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY /obj/item/mecha_parts/proc/try_attach_part(mob/user, obj/vehicle/sealed/mecha/M, attach_right = FALSE) //For attaching parts to a finished mech if(!user.transferItemToLoc(src, M)) @@ -341,7 +341,7 @@ inhand_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 5 w_class = WEIGHT_CLASS_SMALL throwforce = 0 diff --git a/modular_skyrat/modules/borgs/code/robot_items.dm b/modular_skyrat/modules/borgs/code/robot_items.dm index 1e04b3103ad..c27f7635084 100644 --- a/modular_skyrat/modules/borgs/code/robot_items.dm +++ b/modular_skyrat/modules/borgs/code/robot_items.dm @@ -511,7 +511,7 @@ name = "cyborg chameleon projector" icon = 'icons/obj/device.dmi' icon_state = "shield0" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NOBLUDGEON inhand_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' diff --git a/modular_skyrat/modules/borgs/code/robot_upgrade.dm b/modular_skyrat/modules/borgs/code/robot_upgrade.dm index 5dfc12325f2..f7bd0983140 100644 --- a/modular_skyrat/modules/borgs/code/robot_upgrade.dm +++ b/modular_skyrat/modules/borgs/code/robot_upgrade.dm @@ -370,7 +370,7 @@ desc = "The BOOP module" icon = 'modular_skyrat/modules/borgs/icons/robot_items.dmi' icon_state = "nose" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NOBLUDGEON force = 0 diff --git a/modular_skyrat/modules/customization/modules/clothing/suits/misc.dm b/modular_skyrat/modules/customization/modules/clothing/suits/misc.dm index ad22007b04a..ad488df4e86 100644 --- a/modular_skyrat/modules/customization/modules/clothing/suits/misc.dm +++ b/modular_skyrat/modules/customization/modules/clothing/suits/misc.dm @@ -262,9 +262,9 @@ /obj/item/clothing/suit/corgisuit/en/process() if(prob(2)) - for(var/obj/M in orange(2,src)) - if(!M.anchored && (M.flags_1 & CONDUCT_1)) - step_towards(M,src) + for(var/obj/object in orange(2,src)) + if(!object.anchored && (object.obj_flags & CONDUCTS_ELECTRICITY)) + step_towards(object,src) for(var/mob/living/silicon/S in orange(2,src)) if(istype(S, /mob/living/silicon/ai)) continue step_towards(S,src) diff --git a/modular_skyrat/modules/exp_corps/code/tomahawk.dm b/modular_skyrat/modules/exp_corps/code/tomahawk.dm index 85e34f6fce7..b08a1e473a5 100644 --- a/modular_skyrat/modules/exp_corps/code/tomahawk.dm +++ b/modular_skyrat/modules/exp_corps/code/tomahawk.dm @@ -7,7 +7,7 @@ lefthand_file = 'modular_skyrat/modules/exp_corps/icons/tomahawk_l.dmi' righthand_file = 'modular_skyrat/modules/exp_corps/icons/tomahawk_r.dmi' worn_icon = 'modular_skyrat/modules/exp_corps/icons/tomahawk_worn.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 15 //Equivalent to a survival knife w_class = WEIGHT_CLASS_SMALL throwforce = 18 diff --git a/modular_skyrat/modules/implants/code/augments_arms.dm b/modular_skyrat/modules/implants/code/augments_arms.dm index d59c4353732..4cc168247f4 100644 --- a/modular_skyrat/modules/implants/code/augments_arms.dm +++ b/modular_skyrat/modules/implants/code/augments_arms.dm @@ -22,7 +22,7 @@ lefthand_file = 'modular_skyrat/modules/implants/icons/implanted_blade_lefthand.dmi' icon_state = "mantis_blade" w_class = WEIGHT_CLASS_BULKY - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY sharpness = SHARP_EDGED force = 25 armour_penetration = 20 diff --git a/modular_skyrat/modules/salon/code/misc_items.dm b/modular_skyrat/modules/salon/code/misc_items.dm index dae97ee4364..a65c4f92417 100644 --- a/modular_skyrat/modules/salon/code/misc_items.dm +++ b/modular_skyrat/modules/salon/code/misc_items.dm @@ -76,7 +76,7 @@ desc = "The latest and greatest power razor born from the science of shaving." icon = 'modular_skyrat/modules/salon/icons/items.dmi' icon_state = "razor" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY w_class = WEIGHT_CLASS_TINY // How long do we take to shave someone's (facial) hair? var/shaving_time = 5 SECONDS diff --git a/modular_skyrat/modules/space_vines/scythes.dm b/modular_skyrat/modules/space_vines/scythes.dm index 910753489e3..3fe17ad3bae 100644 --- a/modular_skyrat/modules/space_vines/scythes.dm +++ b/modular_skyrat/modules/space_vines/scythes.dm @@ -12,7 +12,7 @@ throw_range = 3 wound_bonus = 10 w_class = WEIGHT_CLASS_BULKY - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY armour_penetration = 20 slot_flags = ITEM_SLOT_BACK attack_verb_continuous = list("chops", "slices", "cuts", "reaps") From 8e1c145ca62e9c60c7fe47ac08bd5e5aa3bdc57f Mon Sep 17 00:00:00 2001 From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com> Date: Mon, 4 Dec 2023 10:46:50 +0300 Subject: [PATCH 49/61] Automatic changelog for PR #957 [ci skip] --- html/changelogs/AutoChangeLog-pr-957.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-957.yml diff --git a/html/changelogs/AutoChangeLog-pr-957.yml b/html/changelogs/AutoChangeLog-pr-957.yml new file mode 100644 index 00000000000..415444405fe --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-957.yml @@ -0,0 +1,4 @@ +author: "Cursor, Delbert Grady" +delete-after: True +changes: + - rscadd: "The Overlook- Err 'Twin'- Whatever the Space Hotel is called has had some minor additions." \ No newline at end of file From cb3452c67371bbd3b1f633d76d62d9a826df1807 Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Mon, 4 Dec 2023 10:53:32 +0300 Subject: [PATCH 50/61] [MIRROR] Fixes a major heretic exploit. [MDB IGNORE] (#25410) (#960) * Fixes a major heretic exploit. * Update spell.dm --------- Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Co-authored-by: KittyNoodle <78111117+KittyNoodle@users.noreply.github.com> Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> --- code/modules/spells/spell.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm index 5bc39b389b3..dc30f36149b 100644 --- a/code/modules/spells/spell.dm +++ b/code/modules/spells/spell.dm @@ -48,7 +48,7 @@ button_icon_state = "spell_default" overlay_icon_state = "bg_spell_border" active_overlay_icon_state = "bg_spell_border_active_red" - check_flags = AB_CHECK_CONSCIOUS | AB_CHECK_INCAPACITATED + check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_PHASED panel = "Spells" melee_cooldown_time = 0 SECONDS From 9d64424fa0c617b2cce75b96b02d7bdc04e7ced1 Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Mon, 4 Dec 2023 10:53:54 +0300 Subject: [PATCH 51/61] [MIRROR] Bonespears resprite: Fixing the icky. [MDB IGNORE] (#25411) (#959) * Bonespears resprite: Fixing the icky. (#80084) ## About The Pull Request Bonespears were always a gross yellow colour, while the rest of the bone items were a nice, pretty sprite. This is my attempt at making them fit the theme with the rest of the kit. ![image](https://github.com/tgstation/tgstation/assets/53197594/54b80ed7-b584-4486-9c9f-d0d62d91f806) ![image](https://github.com/tgstation/tgstation/assets/53197594/2d577b4f-a2ec-48cc-93ca-1490eb8908c9) ## Why It's Good For The Game Icky bad, matching good. ## Changelog :cl: add: Added sprites for bone spears to match the other bone items. /:cl: * Bonespears resprite: Fixing the icky. --------- Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Co-authored-by: xXPawnStarrXx <53197594+xXPawnStarrXx@users.noreply.github.com> --- .../mob/inhands/weapons/polearms_lefthand.dmi | Bin 8522 -> 8440 bytes .../inhands/weapons/polearms_righthand.dmi | Bin 9430 -> 9478 bytes icons/obj/structures.dmi | Bin 202556 -> 202634 bytes icons/obj/weapons/spear.dmi | Bin 4870 -> 5147 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/inhands/weapons/polearms_lefthand.dmi b/icons/mob/inhands/weapons/polearms_lefthand.dmi index ff98ba95721532c50d7d5f91a6349ce84219b189..f9b43790df73f64106ebc13b1a19d360d46c53d3 100644 GIT binary patch literal 8440 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 e%GEgw;FcR9VU#a_2KA)bt@Nd6rUZF^yV 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 diff --git a/icons/mob/inhands/weapons/polearms_righthand.dmi b/icons/mob/inhands/weapons/polearms_righthand.dmi index db760ec71753545762d3494fa73d493d35377f3e..9f7e62398958897a6df1b95446bf7732bb038f64 100644 GIT binary patch delta 8847 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 delta 8791 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

F~3AZ^`l39wAC5vPAvd z4~qF9;45-=@9gpO>Nj)M;BR$x6dHL-Z5!*ub%)sq`xVFHRlpC}`FH8rnhLu2;6uay zL$GPz*B6J(0tb9Lf0+e%M^TU_AFT#eeoo7Hc~G60=yFLi3-p(V{{4i}7pn3GE{Nxbex!lMI$qm225Mn;We+SWe_FfKT~S7>bJ2WebLH z&TDuR4X9y7T|;M5FwO?2_y5MKep*;C1hp2`EPf(o*Zxy64DIl=9+VtB8h&nnQ*Cy{ zaJV$b7dCb>?=rn>v|syMy!M^K6mP}?H)x3kL&3P;Ejpb7V1FA=wCjojKy+`FP(u0s7PHWqgF z?aXiz7XMXLtg=?iPKwZU8MdP&^$zSTWG4!FN*R%PE=EJm+r`cGJg4fBU&cSjhdKd&cIq7Zrz>_o* z^XvVwIsn|+Rrt(^7v!(~hltd23L7LI+|qTQAS};w)R)IH@f!52-cO=H@r`%4SMYqL zr1Gt~DtkDmNpqv!;osiv$B!PtczAdkg%|l~;X7P02??QF+=E~HMQ4U@3^+h^S~v;yPdsai|4CRQBjTuBA$~!v}!zI zu-#hU3)kO&dt=X35?`B*XWU(HG(9HcSit-ym`?N@?xFZ5 ztm_Qe&p+$d2=N`zkdo@~5wk7{m1aCi|K49)&y1Wc2aT1K7ZBn;cN`dccCRG-EAj8E zn5C35Ox$-b0Vy3$OHCZ~Y7+DlsPr|$GSGiv?Nd-tOb3@AQpQA9q=`;&XO5ioi!6#N zw*{T9B-eObTyFi2E1}!xLet}yg|#lXH$8W+u9P;rjf%~-m6l*AN=tciD+^flh_env z`XD-@fmN3GB^K34>%b5hZ0yxMr2f{d03`h?S8CVxy`h% zUENn1U|YxnKYJM6SU~3D*JPI+DliJhrpr~d)WYe-V)`~Kr*37QY&&&7d9WsA8aj2 zz+Z1A9;HGNvdeUx@+-`Vqu!{|?@oyhv*5#41gw zjM$D7s~_8DQ9yC?GnKq6w4ipzVFn;J9z;FcuZ%!y)Qi~c!wn>oo1=2HPqKpvP1Qk6 zLKi77*&8;kvFzLh#}SE{Kb*-&@%0sXD?by|l|`{EZYY+0q?@|^x1>$%tcN~Ap-&Z; zu<&6u0lPEiDz9lnKeta{8FS#Exz+T-55c4|%AdD3qmd-b8#1w?onE}bC4kX!b!;x6 z#YKBb7v{l{wWK}DW7Zz#r<`|-|2P4cL^c)hGm6m4`>J#v*%h^Xw6Ob%VbM4xQOdHL1B3+Xp65t@y2Rm6$Q4~rnNqO z`SOJr($t2o3^d}tehstoOfcUX6E1~0u9Xs*qnF$9D3fSu5t<&Xba}aq2eQ6;C9_t) zP5)IJJOR&(%7~KvOO%|43v!&V5xW@rKYd=~YU+!MBL*bbE5sMv*vy|~#a>0&&HEnYK;P*o}8a-leg}o%9QMAu&ifXW+ zxfIC@05zvr=DtOv3-f$Y_`X1!!v4vOtwk`>SV95}0s=8M8y>HJ^3-;g+pSFD`swmk zon80dF{-Q^{^-LYQM?Xrnle3%avOtD3t=I}#;pUKg*8qTDDR5k=IbOA-I7Qxe{?VQ zoxc93`_6G!1X=cvf8g0@2j@lw)9ijp>gDHf2}A(cz0fShrKpLpXtp?~L+%poEtUDe zDbNVpv?Y}4u}1Gha+vJ5dH2w8c3i!fFg$)K86|07{dnBTm|SNTeUqh)4ubJJR@kNKjti09r5*)b!s{)LZ%N0g{Y|km`frzF-+ZAoDlH^D;;#lAN^q>5;OX` zF3-*xBN5LufT$fdZBZ%iwOZ3cT5@yB+jszRUg?tJq;xe54?!*R<=*>@l=u3CD|NpO zq?a3$V%!)5<)%8k`lrtPkHyF&p9V`6D39})sU91nE~8u{H_?+3|CJ7GxPiqbLz}BuPC8 zTOQ!WFU}Sn;a|7JI3F3Mt%L>_lRNJ+Y9PH01&J8KF2iq@!ad6x`q0_$4$n!s&;OQ@R}s3hns!!ezGWm*7v0r_L)Fzqzq!*A%hOcCm^iD{5e!AECo`YQe|;J0-$#dyV{>=9&Mnz&zNemqJp&1I;jACn+F1B!}CHu9K30VZDr&y@%r17%8VJGLo^cs9l?w)F=WB5Y@)k;F#~ zw1Ehdr$0r+e#3nUykS73HbP-}^_4y+iPLV4OC(8Fx*$Psza4i=nU0o9pQ;{5Tk<2W zI(&RQdUb|!Hd(Y=l@;<-N?KaZYDPS>Y`9+{>MM{9b>vDnmDh^R3pWQTgFbcpP$O1C zLPk~{E3uxTxccoVHDK`DC8ITp$F|M;$&O0{v3a-`oJ0f(A0%^iag=u>ZZC#s zd>!4nLy{adNF-TJAn=*Axd6{UHayB-K?2}!(r0cJQCjf{wiMizDj=_!fa$j4F|!~S zg>mU(Tn~oFYAsM$8Ik_qs3JQ_KFxd{Om93EchN@`?fDAhK@f5A_}ErA)u6kR(3;iG zlmHrFjTTy%L<$-`Zc01de=30%6@K#b?Lpsz6$1#>vykZP77FY_MYgtRc?!@-l-edQ zlRyw#TTe>BCnCjA;pUhpg0w#|==67&J1BXSd+0B4L9ais7UR;d=rg?|=nf(ZwnlwU zb=!YF5tizT9Yvu1hVqoj=)A{KEZdGDhBgPdJy1?&UJnJFy3+WQwLE<*m^`T8fla$g zMW4;mT3sBO`5L)^4~j@=Zt>>&WuMU&VP*<@!q4x*7u&{1nT(|3<2E|Uk*d|7VL@!6 z%^#VCd?&@4b#Y$t`@Z7PbD`lVGJf?fMZ_7hhs(!R$YGxxW-rO_OOw6b8@>-Kd`||H zLwkgnwm-(4v^@m9u^ITh-DV9CRf{YiA~rgb`<$7de>8i^?K@Ea=2;50WP)}{6i*+s zp|fQfEjv{PlSg|i_ut06oykq4_sdc6zKg)u<2K9F3oqU2XW7n*vR_kpZ>0)J{IIdw zrNC64-GjT_23(qvcvQ+Wu;bJY-D7;f*r#W*iJVA(A0+DOqb@1fh z)WB46ND-IO7!PsS<*co<@W`-LB-zyEnJClz+sJg!*zQcRYUvt^VMbWv#t@)XzL6|% zP$dHbpL*-f?5timjese$uZIQ29US?lIzyP}UE!0BtlAARO;R4wdfZ5<+l1$B+tJmikKF zv4JSO#F$btPr&ucl1@5_DSX49T>1NRC%T8iErMv@i-$TN!@_&K&$&g=Tv>}NOrGMN zHOFcLpB1I2#(1hqoJ+A|+wj-`YU}9${OfJ=a(taU?HRAAd8ZBQt2aMo-oi8f{iger z@-w%Ia6Tj4qD~h(ye4xFwXoxRUV7SoD(mk>F&nZSjEdCPF=;{Vp7zdpm*X3@^M$Eia!5_B-alQ}y#awzc7I!3 z`H23LE1zo`<@Q|xp2NfVl{4@_(Q%@{CH~CC{<7JI3SUS{o@$5#rg*_}Z-(={m&=SB z-`-2Ii*e^x<#85^Em02;QH2EU7G6=_)zrbsdCnd;=rgO>>}qUxw%9M}>Xr>A<;D-@ zU5Oi*p!&ep&zK?1e{aVVa;^Cl0^pKgf zRq2xs7JnnZ8}Zr$ysM<4QrZtDKn^h;+`&Zb-i*-=Bd3;JzlR_?geyJOW{iq5=4mmg zRMKf7Op3D1d9<6A%3Wkppv-(?X$#JBXd_!4x9QmH`kxcjcT1}#p_h}x(j(^}*>L!0L5k#f`Vh;xqN#LzTAqJlU4J- z=WLpK=6x6PXzTP$Pc}Wab&(Vg;@X%KV(OFPnRf@rFO2`!e0(LKkN*QP1ySz+ diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi index 8707b394c2e9f6639a6f82bb71ddd3db8151b969..40420db37050c77f51deec56af40c6b15e996e23 100644 GIT binary patch delta 72713 zcmXtf1ymI8_x=FV9ZILtNH<7{fOI1uEG0-wEo;kB;XWskX`_6rz`#g7AD)1sI@dAILm_C5}qQ~-}9&{gHqB@=dJM4whCst;c zIEwP`WnTZ3#70y$9Mipz#jXZVUj#T?XFhgY`o^!f^bNpS#?D`?N0A!Wrw`V0u~rvP zkub*@H6}2~YOkWkG5{8b3ec7Ey+;>kAt%VCI_<{x-;tnaUPIn{byTH?Is zR}a38O$Jjs*iD6VmpU$<0DIRx2hTO$E9|#nOr+MF&sQZriWE{*?#5KFLmHnM)_&0A zerDq+^W|kSLMeYIvp!rB_31^p=BlJt_JrB>w9t<)@^0tWM z&B!H4yg@GrPfGm2C=Qg()$~ikL+s;Hk3b56LTg8OI6rPJLr%7kJ?Zomg1=y@LIpT_ z_MXuYd-Jy0<)s5LPIjXnEr*1u5^zZ%v;J!;eUmrv z!rE1Yusw=WmwCfjoi?d4xxY9_TNAZM@XPae-e(*MOdSfN>XlIFvVF{2mSFAEd9cG= z=8^3U_6di0*X?#PcJp*8#W%Bh{2BwatYBXMS$^5DFqA`otY_2+?M+jx+Kxabh`uSMg33?a zK`7k72ri3d0`OIA^cr>9Y+^&wP*2?Ekc*lYZ7e4-l^|? z8}0p-W$?@7NB;ZJQyw!+0*!l|ADe^oNx1(Afpj;fF7~lhtCDGL{+=$4%(G3M<(7vq zZ8hgocrDkucA|_{qM@=O`(^TLLVF#}g~-XLb_i1?l+!Cn!ml~p2__c0O>i9jnKnE> z3S{2n2uaRmdmlkkb#QLPKz52r4&7TWxE%_<$de52|cG0ypJ@?N<+-B|9 z;nTUA>}8$q-(bRl-o-;iFvOfV!Zqbz-0L{r>}8V;hD`}Pb3a^mUD+9o zOU9zgF8FjOg>& zYw(S=>5bZ7Ikj0yHz#g>t_$e$IT-FDaVfnse;Z@m=f=)O(1fej0;;zD_LjQKE`7*4 z=RlZ}g>}Lvy@7UjCk2^9*wN7mETxqEW9TNDfQ>Yo&kre zVF#^F#rK4OrDEakcWK8dfyaUlJST74u05V)0xmDQK*Pr?_k;4%Bev zJ-29x+Ni5#4sYLdI<6p&ibz9SJRm_&ZIi|xayUFUX46vVdGmsjJ{>Hl)+B7}<~ri6 zuXnH2=N^JM#e36bmdCAm9*WQ!xrbLSqquZ`$OQ)2|AIR167-T{B;nAaiPOu}#m2nu zOwrW1e6~2v`G2h2Cp3Q>)Qn%5?bFPREGEu?)m_T&wm*@hdLNbJ_8*QSj&{_ip?4+k zCul9FjG2_(>+Dtzn({l`NN6>|%n2w~tLDAyCipu~oi4D%X(*ze^QXT}q{sSZbqo6V z`@6j#rKP;2k3Gjfx#d`59AgeF{0l4l>z1(fTVLkNFFf@xq;AR(>j3 z&iLQow%%P=R1#zPebse)7puE*z2A47Ov@faGFwf3Qf}jJmWI#*yA^3JKTZsDKi0VX zp$@4cIm>dR?K)z1h6L@vPgCt_$zmwKegZLQ&qSUHC@;NFLNsMhX6$J5e_lQ!vUGU9 z$lXTc1^pM);i`{Tw3R;c;TopvrDpKphYj@A_8Nyh9euymBXEZ~cbP@4dQ4Ew8cNeo5JCn68<*WY|>LzG$9TnNf1D(`Fs358ZbJl)$nX zGGMmW-nl^InEB}{WR!L7Yk;F3BYeBI@YnQVw4nyE_HPNh{RS@5iq~!^n*%C@dTmTE zYpPvUBGCcuMZ~g3)7h+59{m*XJzVsm{H!*Qck^ZJ(+XX?2${`Qj-xN7W6xk(9UocAAKD zeM!Tcj~-BY^gtnF{SWWa8($dS?UPA9M!o{mL@k?L2Keng6&&TPg%^#$24U+F8x7m8 zc?dQ|16QP-yq%wDP6)S_LRN0=;;IwhPpTLwGMq+hm| z+kJMpZ05!4BMx6TZblfps*}#qikvt7R-_!xO<7mWez5UdvQ+xotw~1;^pBJ(m;``P z?Z3aW4c^tF8_k;V)+8^G9EB>p!fD(n^uj!nG+gvNt2w-I!*DHTyB~586_Ej5ONgyS z%lfoFNxnYvG6itGYFgZqw~r4ml}y?Trb@*ORQihn`1g`s8;_p*_uU=8xztztH;5fW z?5+xtu)HFpm|1w8l|;r?BndP+t~o8pyy&4?8!tjJWI3zd`ir6)HgJ=wXs1Fijq;!glRK-rK%`T2f(@fj1jImJG@T{xh z5Rr=VvuUBVJ9_ZOvj($;m9ec}{1NKrVC8I7n<$$To4bTH8YxiEZ1 zzVx%vzc_{mFCsHGLjd$ZrAWNNWy7XdXaC>!a&tBS2EICMp|8klVz+TNvP&^kDIez* zEh7}ZPXbY@u|6W>0>~IMa*`?vkVuZy{YiKp7aiw#=XdMt>5I&hXrmFQ;Qq>SW>dwZo0YAC-Sb#+@7ghcqNBv?+Krc;bx3^m41HjvpPAU_J2>^>|4o)$Kej6b_ z!9O*F`Ubr@*1T>ZG|6EB6TgPuV(=1i_NDOIEd)MCl-gkA0!`x)qs}XNDA?mbU{XVMgTSG8STHS*VSBy?@JsW#42K5Qo zPc$7c8l43}7SGjzw^l>Y43w435`Ff7K%13Wlpq5}w=izrUyXr-CnUVk#@yMt&i>>Eq$LgAv_qqvn zS>~XNkpfduJh_aF7gH7Ttl4^?WbkBe3`;Bttcis%R4ex%fqZY_}rNd|K%J1hX zSc5c1RbvYjz5J$@f@VX}ns^r6;k2~)(dtgkc29RYedq1ifB9U5P)7Y3{Ep*0CLn{H zvHpKE-zw=t`k|$Co%>OB>to*|Pf~KMzgl>BI|n1eb&ri7{*TO(EsFbQq=A4c4?Ark zW(FqZuxSDKu3n-Pi7tMODg!_sey^-7APkgpO*7_8Jvsg&g7Kh+{*Z~)I9&RGR!i&J z1N`b-4_38t{(^Z*s4FM8>c~lyosPwuz>`QQqj?lWBk2}}egPJ1#XJn$-s66o`X+4D zBfX-b|H`yd2TJ{dji5;r{@Krs9_4r#rr9#+qL}5>R2Y+S_Ya>rAXHdZDBgxZlLG`R z4dorfT}D;bAV{Y}ZnmoC$LFjl^YnLi(^u&WKHVLJE9GaLq75-xN;3?J{0jmd2IZU90m>oHc%U+~N;&pm_ZY;gc1WP+s_1?88hhBrI zG8o%6(=Rwth%H(;A8s=NvVZhfFi79o4BCoNKAYhskow1rH2lUN`0_8ocm0R2_pOFS za8&Slr8H^P*6;5Cum6v*&YOKUlcTPR+Dr3+jdV8+yh)37Y4RHl;0zinT6jd0fYO`7 z_ZcVtM*~mD4)%%%2tWRpS{2|^`BD)coe6`-CU@<0-AO|d#}V2a5GUh^7+6|LkFWG6 z1_<^w2Le@A7-8y@F+J+6%3DEbJeX;nPDJ9hr-zF0?vdpQ0Si{rFMZnw90I%nnlztq zffL*Br~zv3(g2L1Ew*SZNt#&7@lM%uPhy+Q1T_u{}#z4`$jX7u22*P2OH zI4r3bZFQUUqKv%(JXd?N^#%zYG-ypz!H35Wkz?CBp?MBEfxT66^yo_MrK&g~KgqD( zbe4iuUP<5NF1=U_q3F^E@PE#H@PDB5qikQ)gC)`B`vmMpsiL9R@?Q_<{J8ZP&p7JM z1;GwJq%&B6f=2XzM}u)Bx5+qs1gPFE#meEx=q-N1Z$A-TdqxHFv{F1M|B}YhV*e15 zdys5Q@oF#c9!8!9;xZx>Rtkw)6X7EtKsv91L>~lsJUIGFXvULlgU3L{>g1%T=30@K z!q<&Op+$t?R_01M4RT9 ziIN6XP2a}hLu~n3Du24x&(z(j7n~2HwX53bY;RQ?@1dJWF z2`v6Ym-rMLR*rTQ2~IOb4qGb^Kq;W!&V=h;%=QN5oWnR^IsFHXHu$Aq{wsPr&dFyi zBxCWkJ=g8INY5F$861(vCJD`Dge8j`II;fsH1w<>{EGfQlIuDbAF}nsB$^X40@l(O zn=AjkAd!89Q&5ZXv4wr+JrE~U zP06b>$0^p7|3>4hXqDnK8ZLK&c3jJj;M>h8-FkkJ-H0@H~a8@%><)JFWbWZI2 zaPZ}@Z>Uho&<%D|3#QY~Oh-4ke4#dW=y!97{oyf_pcF*fq>QxfzGJ|^YB=bS6dC2H zgm)?4YE@5KaN4(exjo^NAznlCPyS_a6dR^hEg$*1=_BlaHh=znkTeQUdi@`mN%%%C za$z5BF>DZ_E)@T}XHo3yc_H`TB}o9cxv@l#N})(@b~N0@cIdmF@Dx_%p?X!O0XGIq z2URa+69{;=RaMh_AZ<|I#R5jx%u};MCSwH6G*Zt zwP%gsjJ(-qKWtIFWu0EPp2EMvBP`bVZAq+F@{s|K{Sr*;iRj|ZYQx-wA7VRcJKX>~ z6It;v4b>D>#6BACJxHqPJ)w>~CH#yK2SLi0tJm6a%*E<_9Lh~$4gIQRxtUE9>V4h9 zFg*30GSwFIhpuZ2WwYF1dsToTm{+rkLhXqdHAXa8jFX)OHC>r{>iS}w%N{ubufRxT z^y&KzEmiK2trfXG7;;mu$&Z1>!eU=DAH$l`6%vsK{fia&R6b`&EqqkeH&+A_s1a5O zHU7HOZ-# znmdWSfhR2z@H*wS4Wo{}-EQ~h(z9QQ#{bwr|YcJ#`)X%z3BJc>&I*Fi-PRrGI zh0bzlI#=(1G1CNJid?s@>ue(M1=b;|*sAF7*BxKeH;6?F4p6yV(4h7RYX>Q^R7ABn zo}BSufcIxxF)joBF>P^~!aa`ETqBsdqoU99LQSYyBIVAV7&jpO4@CT$XccJ#H<&|l z@kcO{4Ia(iduhx9f%du?X8x4Y2M7S5isOq$0;uyS4B+Gzgza(tZl@nvr(H26qo+Y{ zZhgtxvPE}HLwH4E>KHv&yKa01VDq+4#uLKliG;3lm#j@VLukNo#*6nRR2~_}t`da) zK0Leg)uuM$4UPES?!!k%%cVAzX@3tb=WrRUT_?*cmD3XN!Y@-T)cFsZ*ST9YjxU`( zH~p_;Kp0fSh%GKDn>_w4$~ifsedVpnoHr20gPO%#N;IY$=*Qef@_*2Xe8%_q>Ggce zDQEH#t@UwoDwE4eNX;_^o_t9y*8pieAfE%p#d1B8-_$g7M>@wFc%RusaW3l(1eYC> zS$d}W(t>UysoL}OiJ0wKHo5i41#x^1_Vj~rUAeZ+Nv-}H@;oF$O1IE?0%+O2u-z-m zWFaX=iB*saKJ=}2XqUx#cf_oM#rGF?`8=1Lk&)Oo&U~@v%Nc;hEF;?VOdGYO2jR_g z!vGH+bnP}#qHz79tjm~9bt>&lPF4CbQAS-eTk z^s2&aR6pUW=`s@IaJYO!l4B4?u=2G71r_m8Q0xGj*u6f*<6&SjNetB zpi^By$WmkO4Rok-xAfdDFYWXyhrrGj?dP9EU$uulQ5IslZgG>{n`{Of6|oEDQQuzf zG12@Y>#$_V#!n5EV)2Y}-kG6V_%(&*`o1LIBDm_UA~8|_Hwq2jcZ=9xWJQA<@r<=S zM-%lOoibLR{R7$^xzoq{#25K&_gn1L2KxD!h@0$cSt#@BConMPKYD&c3lm}DLmz$~ zmxM!@S9y0|x7BX^dM_dg#P7XG6Rg*t8u!OYeDnG;iX zWvcql;kr$3xfmU5lR|5T(ak@}m`{ILTdKVPS{C%&KizA!MCpCAc z`-RCIgE6^Uto=?Ko97MPp0jc;R8TgfCZF;;raQw8^LIwA5VD`;wtv9YaA@e1)NIC-oi zd!Es)u3WwoB}RoyeAwCjw1{9{M%CVO(m7cjp|3C5Yqa}@_;}v|Owb2U%clTu#z1=n zJ0NCQE=1j(4?cP7zEubn64cleDGzRz(?8&v7(BhRb&D5sG)u3y*e46LD{w<)=zMvy ztMc`a7==raSs7w=k6rOuT2E=ce1P{|{HYu7N9BxQ_;F156R`Hk7RCA9Ft3DPZtTrX zmz6`;)!t99ZkmAou<0D9RWBYlZ6yrFO zFp#RcM^UiSq{??4*>BYjZT?&dI;a)-sU*SDYAsAX1ecW>*I^&hd&5Xr<(qUoM_;J@ z6i<|zN~p6pO&1AaIM!b0l^pay(VFtR+o+Q{u^3^|mXXfm;on9jZ{PL@*+jRn@GKK5;z^m7y- z1H}W7fuI->L5`hGcK|{A2z*qa!JAvaI#zB=rz03u*!dPyHW&pzR#C3E-!atSmJK8GV)|0S+Dn(=|wk(@Xy@@E#`O zi$f1P)}as+{#=}i5d}*gtXLkmj+V@-nPi#6NKZLEA`WmG^IGe_{doP|DN?g)`S?=N zsM&x*msyOyAdWOad%ePl*j4zo)khJyQ@rls_{PSnAf%}l`xOsO0}7WAc()c!KLsYd z@=@JDX>B>pGfk7Jrcz!by8)ir>mwK$Uj$L$r2F)J*JyGbG zs?{^kww;5ZC~mj!VDoJO`D-I+?d`q0mNx&=8l3be4Df<9<^S#L2Edy*&*n`y)rwaC zgYuPz&jddIQ4!fp5_(C}o}VQJUdFdT4Tc@Q0;`HKt?an9K?a$=YPfmVRxu0oP1iHG z$YjDhE(|+`CVZb~JMGgkq&-qcvT4}N-(Y{r(_S@9BDrS6VVRYitKVlxhNJM+>vl;u zjK2K|d`H6R?GR|IUm0X~cFHMzh%OH{f61o^H;5bnV_ars*`|hEjKQ=c0U0*YoYma{ z7Vvs-;p|8ax=Xu<;gPeM)oR}NBVfX%H#t0GSLA%-+;fC@2>(^8FL&ETr-)FpQ^?qx z#_=^caSf7Jdh^OKQPS;eI(QV(;-iu_=w9)&k^*B&X$t9)M4>(LMIZJq9{PQQR%@tT z5Z98Iw`zqkB^i<2IP8_aU_o+GE`=?&_*eh+exo z?58Af+$ze@U|LS>4U9{_I)#RlgNtA%9zqZ-7Lqn%J_AxTq!Eac336#V zjuq`qX@4yw?G1$-h&6r)-DStLN$pX1oXwu&I22TQI-8%7{O~H}DTtxlD;tbK_JHR3MMVq#zzWo^j-Z*@ z++a0)8c?rgL|*ZpGR9cPVLsL3hlM+5SB>XaYSrxmG2686A_)Tphfaz*e2Jk!xnCjQ zLB2bSUfAlRLG#0B^hN|qAV;vsacSo%&->1Za-nAvV&P@F4sV~w|0K3`zD8;^{zeIc zpd1!@8kJI)i1YsN^g$Rekwt@pQ~K~lS`?*UDy84uS#?03xtm(V?t2@<@8*UDY3ubB zb-j1RBg?BE`=w!Ig*fjKCHY%~Ej;IdY9otc$HoVJ>i6O}n(E7EA6w}~fC!y?vaA+v2q0cd?p@rsb+8 z77t`PVBARC6)_yx>b51am^lcm8d_+s)j=y3%`uBtP&&K&Ro~zXW8NBxIGpOc22E*r zhu&JJBn&osxJJ}fLVobG8XnPc>cP(=I@K9JR8Ue)g$=r^JDH@69?iQnFm|yS;@t+h zg`L`n4^V?8#5K@uDa)IKA_XD2pKMzEGkAw_Ba-b%0qEzKi*hPQKT*cxn{tnoowslP zKJ*e8ou#r;d6&J;uO>(;L%L!N%w#u=&S&EPUN}NdHVAd)%$DWCv|+5hr?G^Ejn+IpY`W@ zyb2Dvf=U|)uvSW1G3f%QWf-6LOK%iCZ8cQDd0ETG^mgsUD_3Pb_zU<&&L~O}2)QwE zfHz_FqiJH_A~9(85>hE8{_yqcv&LpJey)LI_{J%cOtR<+`-IyHkU5>}0o-2Qx{L2+ zg_i?vcEz__lv@Uo{ExPZqGblhxc^slneMlfoqcFP`CEOYuyiNP+scB($DhSWfl7Yj zzYzO)*1(6ZP$>&AEgc1^&Q|kM0Yu?4_HktXe}z$G>=Vg=PkHPpz{ZoLjYd*$7744} z?l4+3&BOWJoWpQC0pvMgR+y4cXk5_SO9Oiy9XeJcVk2zJ^fHE`)ty~-Q>nHLB~WPS zZX70_0-$w0LC+DZ!4B#w%<@aWj{h zFi@i&9u~KtRmM?we<8MH)1GdIpIgN#p{2q8@W=|>;u0aZDI}r1<-e3!gg>+Ka>>RD zQ0$JS@ouic%g3E_+p;p4)>m%wXJCvhuJsX*(pTzEibd>D@9r|4zlJE?lD8sg6PZ9W zlp_#)k0!dEu1t11&Gz=nYW;WHL}qlkp8Z;S%t>DY$Ph2ais^S&Ai{lzLnU(qclhOGtNBQ+}Zp zzuRZ7e8St5#_L$Utr8zC z^SC)wYBm42H4hV^OpCQ+hm{i)Girc0L3sL6LEvjZD$}}+cDO{=o{R_dN%m-wLJpzf zM}#VEjHHVphK%Q{y01vh=1qhICjVASNP%MM$&vH>KY}W2pN}0kNqYp45dB5FBlwBw z^VhLz>Q%h&^Dhc(f~-vnR-&99*QcYBEKdLWsBNa#>Q*|rr(AB_kXJC1y;(Dc|I({m zCJD!(9^bev8#5Q4-ENcA?Q|R#est!%d>6{}o1pN8hgO5}z5PvyGeHlE*}lkpH1bX{ z^_*1A9h=81w)hd9+-<%NHJGB7VxTc1X>afIjre6iiJnR0S?8JyM!_K>4d3eDN0#Xu zO`6$;lQZWR;l*2odO{FiYxlv80-s~3Nc`eWXP->V8mF4qCTZbwm(=!*71KziQaq<1 zV(b@D6_XO*czjcH>=L@afo;;Lfya+pp?TDT12GUnv;v=+IAk}~S1)_AQjorMJ)y9c zf|uL!dZoSx**=oFH}&@TSp2N%p4vpgJvx_V+CG9aO~%JBqa-ZhLH8JE|AO3^Eqiqd z;hD62=jEZh;ofU1qE)AopaDPMC(*;2KXy*7_b|l=H2k(dZ$t)3JKm1Q5GJI-_?zF@ z$9t3z)9veG2ZCp_Ymo_oVElG)_U{4}F|TbSMtH*2&8hOBvF}}@# z1*jVIAjQZ0m$&ZxfuXNMn^gnlB{NC1^n>Lx>WdzDqN^XImK8C+8&+3{qYuG1l zy%@zQEVKs=R}J4T48ONYHy-8#?@HEt3nrDcDIE7yJ^et&P3M?}aHfmmkVG*28e~7a zo`zK4)3=MpVR5%iD|#Y$sBiO~33INYq09y6*#G82Qg>8x0(A7KfaSY~E~SYr4B8{6 zX8?=u_^$xyVwC`ux}SOAw0jQ)kih|Lo2hQ^-LwbK!OhMuRyi%TCzcntB)+FguWq2s z-bH(^gBLS*n@<-?Q3n6sUe6&S?%!UI?LV?m%YAlpTyE+``*bleGr3nj)CT_V-0QiA&_!h3b9~T!ZYURPK0HmDaqxCx{^)Na8M9oQH!X#f1eNVxg$7D{lXOeW z{P2_2uNU7-ixLmUHk(_k-3wMW3SrY4b`qrDCBD{)-Gb#yqL0y(w~?azvS-(#6kFg1 z{j<>4UDc`58G@LPNCs~(8aCm&b;w$gYnNah)t1_Si3|~>mHBMI2EIBUH~k8KtJ_&H zL+oK7d5sbT+I>OE-1=jusbaa_wGmTYqidmes@u;NZFGs2UiO>Za+cCN3J$S%Lwp}v z{&NFa%#!~2w1RKJXiFu5JktZX1Ic9FzpB^-K3(WM>Kxq+AbTLKf0;0nw~2A-dDs{D z%2|evp-`ktNRAssd6ntVVg`1?phhML*H8i+N<2y5&hhx5i54Ut(n{NyTrFMKMyjOl z(e(r)es?x!CclsAeD0|Yl6>LT>!r>Ccc_r+9Q}rgD6)QJiv(IQDOibxZlq%4$18c! zxDzDNqvY~Rn(qHM6X=z?sXY4!c|N6PUAbPDaV(>M}b#ugh zThL9)qbe#7)AS+1+~aasIHM@I<(9`Msop>O*+A9%IR>8?up8T&KTG^CZX-E>>{vu6 zGgoiVPXSPBL1WxEx+zE!;2j4Dm$=Al$ z4~vO34zV{h;bA1C(JXG5v51t}Qg8iy$%4rk9B6EIC1?YrkhyVT9OBLV=&N0nd4^}` z)NaMn0945dI{n#rmU53GBDTqb*|6$IfovXF#Y-nb1tmJ0GOW`-Pzta*7ECw)CZ|;Y z(Z?Wng4Q$y`)Z0V1REAe2e^%IP5;8T zc75GTh{w{l-t6Jm(xXK=U3h#Y3VKr zc|`s?R+#E7p33&VjZ#iF?{XbAEYFbkaOl0Cvz0$WS~-riHis(5Gc_(%O=}qn?nN+d zfS2xIS@CaE^7B08WZiSFE$ULFLs!J*CRxN@E!pf0ZYWIkHwOINR-2n{Y89)AY+br8 z*oqztK!SZ`A-Sc$>N#iE#Y$Po>z3_M)2auyOFLN z#6

!_p9O+WFR$IJVBjsLJ94@y!-vnemt#wf*2O29`271uk&4LO ziLoNqM3Yvm6B90mu$QZRbh&ZP9sn&-eHugdpzZv|LltVd@}(!7!6K#hTCK-d$@I_1tVY0N;*Z^S&U znskA351e9%jx#`44*p@vJm|7zp>)zIoN^K4-PiN)wD@1X%DIcsk?<4}oEg}|*AV+< zOWA0#dq)vh8X0}lpc0?>TP)%$=w|R5nk3^*85y;`Z?3q|&3bWI#@fZ?>~BtzUsU_4 zziaG*f}g_3vS|FDFIg2*ULHvLENJ!a1x=D5v zwFq~UNgZ9gH@T@If>3e(pft>Yw-m<`ktk3I`*2OoN|WI7^1pM~~}=K$8hSBX8mKLC`C| zLYRg&qiol(0zl~`!C%{_6;#Q9fpCTq`Eei3h(tLV--b#K8iW0$$Ieh@|7lUKP@{wB z_wOo$S%~SY%9yuQai0E#t#>bUWYbiK9R zU9OW>bnHuTl4}39KlYE>Z~$T(^3C1O#Lxah-F;=@gY$z?g6knHdVd7metI{%O+S8* zu$BuYMHOJf2|wD@Qo=sCk@Ii4Mo>nT&6;K$Jj`%Twn?{sK+>RCl)OAWcNeC6wBYB8 zUQqbG5ciPpgUB0CUSgXTtPJ-e>R77;Bp&tkMtd3$R$o0%PgllhMJxSAcq+g->6Bxy z;a)E&tI%-U=RTtc%1Kmlw|YEc8fdiMtQ!bVDS3oL9*6z=Y@{9qZohlff+36J0aK0c z<~f@y$X4LP5c;;3ywvILfWse{EQkd~FyQBl!#?|H*MZdJc_Vc)^6^zE3( z<~#|Psm5T;5~*KK*WV>Zl=;3yBdQHwU4sPqhl1;;9wmOKHZvuiR#cv-tNnT4SY8U@ z;^{)PUW2K!i(5S9Z$$m8fd95))$OaSba=+ye|M6KLY(0CWs?GcTRNDzJ+dY35S?*< zrWUkd21A@zDk{f0^C9(mr0;I#4yq;Rw|XliZ^?6$UDYTu9*&1r9v)p;AnY?_xzbwq zyY-CccZmwmg)rgYTIa!?2L3S}%VR32`h7fyuigedAu#}t2uOp9U_U;V<;%VwG{V<1-RXz^uskT6`Ey=R*Fp*USYPG*)qCm&PPz%)Teso`z;R%0&&|f zeP725kNmvy@!_ygqK^CAVasdzu}!R5=Xk>RDez9|u0aug(-*RnOfKusHQ6>amT`AG zXnXlP4}|aIF4aRy?+0hZ>nd8%WelvSxvfSRlr3q1X}kUM<-uJ^fn22Uevmq*h%%~P z9+@$a{u9VP2cuBQOaoD3P`#vlaX7}}2Og4R5M#5Y2&oKp8#@0BEgDHLqUv{C%@iwH zerInbA1@{%yPbc4yokQ=KJOk21Y9GaAAB^RGoE~Rgqr2O$_>vjSY}UaXnE;LF6FcO z_O;g=w07i1(64wU{R2I4nUuVaS6mAVJ@EYaz2=rNh$(QJ)O?PwJ+${X*n6l#%L3$yTK0{wMHDV_ zno#N7`n{oycZnWQT*1tfkbJPcz)g6`Y73&Hblo!^lK8-dOk2VVVEq~??9O%}y-El8v_AW(v*!vtV~Qi%6uuBy z_V=Hv^aS1UWVp@etFM>eN(O8zssW8IPD-~nzq3Ze<=KD)&DjQZ4ZHuS@~+)n|GTBy za1F$~^!C!J7tcTm48kPb@<$rC3l?UXj@~8T zCU=8vH~+;Fc87_eyh*AlVaJ8s4Tj#(`)|_^7(MA-y7rtCA^65t4z1*E`g42J_iNtY zCK+WrzaM98iP!pPx_HU7t!{CtF=gAy`IS70l$u7;rsw)i}I@bR?*deff~oHq;o*D`+pP1 zjhAAWuh6|h-znBPxy#G)cQbk89sIvP-VPzQQdjRgN--CX5B)yv6xSlI?b;0=g2$er zX$L3I^Pw_=;$v#7K2ICf9f+zu{~#OlW}mTYCn_y6r7O`e;r-)B`$aPk0Mkb?KJI)~Z+@8AV;Cd0c&R^CtEudFCaBap0bchdp3-$9NB zMNnl_aWr&F72<3EX{vu{NF-<??!1=aLtAedm9-QK$RUN3Vm0tcK676zaT!*63E@ zs8gHK9IICrI2y&ZVTFRjHap{k!vr~5clqz^wt~dM&`UQBm z1q*)Y8m?;3`zDpD^9;qz-QE2MT$=ZhT{7f$wJE4_t)hJ46E;G$@+?Wl&E)l5B+vxz zOAE5wJ5R2cgQuCPYZG24z6-a1$D-zMlu#E@S@}Owm^gmw@Swl?JYtr>TJsTM z^>X=UBcz;|%Da3wZg0=4aDM*kZcl`h7~>%3C8wvdR>yh_ z5^=}34@qMF(l5&f15W0g{T-wOXE;GagiY21#r^)ss|ju|y_zF!#=D!(_jHFN7io6I zzd|r3#F8w6(PE7Qn);ua>y#(1(<8aX%~n(TdR5|6Y#?l3o2{dL?|FT(kaC2`MnQTu z39uvbQpn>^*ypXpcWr~<+uN0Ajoa|YMuZv_4*o7Wp+@e1PNjB6x62=^_ZF?^JH!Zqi-N z_fmg(T8);uAN)q40^vu8G6vV&*->x8{0=L7F4wYHY$r16qJ9WH)M;E5y(Y(2@FX?yhy^7yAfw_rsu;nf`YwobPH4ZtRX_iis& z3Q4_+PKA{by*YgBjvX^!9s(bZN=rX|Shh6K^3nj{cWxssx5((UwrO5&X9#nleKM7I z-4882__H0)0lbYM$y^BEdXLIL9HJCVq~wBR-5K>GsuyDf0RLIkMH6=a*)LKSK^#xy zF+9jSJRjk+?~wHju?^+$_uCcWhh!S(hlimn-=h@}A7~30q2D}QMQbv7j2KSif-3Y!wpQE z-Z|siQ%ZEB;SXd-s%`n&_56SN^PmBgsz>~{3*pi~p^x^qjT{pOR?|t%SjGy3h7=lAPwjoxqkn(OA=>krz76sIjY2hE`Y_E@y#jRK zG!6P6s0>rge~up_djm8|VO4^wZHkpPcWP7nXshG;IHcKK7bvmoB+N``A#VJOwrbT< zKt_rSufb|dAoy^F4bQNmR7a)LQb#xIozmSD9y#Anu^|1KI?a6!k%PapK)ynzTsZyV z&T&};8BC2=2-b|ib@|^!7w11FA}#D1kQfx)%0CX*38z|1V0gw5@)0+>qF1=Zd(Xpf z74(U%!ZSe9yR_cdSaY>*8Z80f;ID#|$<{l9g;Z;>M#}1~{x}BX6V93XKf|ATr^uiO zMz~%z9Hb#9L-a<3B}6Z4l&z5+Oyep%t@2l%G*t(JuRU76w$6ZBdl3$3fgj*1z0v{n z%Jr1w1*}KvZkh2MOaol8Lp}=fgQsT~0pM95>p(I1?A5b@5p?RvuG~-p+As7dn*x~$ z2{kuhWX7G`Cd#&M`--WV^_X_qgWu^)rI-W)lS6x9kwG<(1*7txF=Ds$!3}W)-MZvX zsC*nsQD>VHv!nvT4xE<-2h82u)o@Oo=2M+%D>^Dr8l}u*YK-z3kGoyhRlWhWx%XH; zITsg=IS}KJ!nkwB9id8^N#V+Y^;_rAVFS#NHFnQKvyU-Xk^%Vz9j3YTQRVUVuLXa)k zuZP!r#)4c56vO!nS<9tiVe+W-zB{BMe^K*^9CMJh*I(&+M8ezwKCW`cPa&ExV zyns|+rjwkbr%9B1T4!v^+$|-k=t)<4xHV>cVH!5pZ2}2}tb=3Ihmdz79%dT>-KtKC z1{^NsZ!=8|8qDwL)unU@f&bM8k#1F#|GE40pmqfH(=)W?W2Q2zoHOM6w(^Akm=l+I zm(SPeBfC(OY!O0vd3iY!h;N|O9UB3yc%rdjn8|h18IM(gPVYvKu>l|Q*}6uYAIBwt z1j{5SyXdyYNoyE+Asj1h8or}wU#M;r?ne#wB8DCL=`(lfTDKpyy@8`Af9hyC(b~qEY2;H{ByA~jp$&kP0|21>B38HZsHF%i?xCL* zkl&o`eRrq794;u}P0?D1tP2y@wUfx62dlYK16U!4l~802aFP|N)~wmyb-a8$B6aVe z?qY(K_P}c@y8;fZK{);%HQOg-g;pheX*wfZn3MjrD#Nmqm`l`glN{u1ZtICa*?!V4 zde1>O_q)8zXD3)}9&3Yh3zcb3AKArgubds4dKEl(@mtxi7IJ$%LrEt0i(=%%g9YP| zHa`X1_WRkNI149w@)-Ff;TRlQWN{Y#g@63w-v1!|gFy!heE+|B;eJyuAMisy#+!3j z(&yvX^Wt^fwM345^Z#{bZO2^O0lW`i)=92BN8%VJluY~<)rx$eoyyn#Eyu}!;0{>? zK=QZC(qPmd0Xmq0&}E6T|5yPeeBOkV4EYrkUF|2;^byvC@&qg2(A-GNI(~xAoM#Sn zfLqImVnGmU&byz%OAp^%JzrY-FvAC-5r<|1?dOW>Pk;Ynu&O3);IAU6;M@tUHb!EQo6gPMM|VQltvH`X{13K>A5u0 z4N8M_ml9Ia4I&^&DcxNX_dopJ_xs-WTmQB0nmcjk%$eEeoW1w+>^);;5|(oGAc$O* z2jKfc|BKyHv!{mAd7zVpRicLoDE~zBg`e7^ch=yTEgM$(ZNTd-x`^%p9|9~`YmW*E z>qj{Z+GziEepcmYqc8N(=LCR!1WE|)*i_v2dyy>`uQTIkgF1Tidunsh@Y)^de#zIx zHxYJ~u|>4LS^7!*DyuVU3aI1_s);e&>xJTyT(CkTGM;@(*9R!s0a9fH#|vZ{Ko9r@E3pY{Ffz{!~nplq{?y8f-^+%{B4(2_VvKc z3E-Lho3f-br6pNAx>zNKef7CSHBG31+R- z2$~vRt~=e6(5D|OxK4~k?s|@aBr~Fe_PgcIpohP{LZP$Ghxjw2Q|oQS-X#ut7kB9~ZR`>Q_rX>C+dL>;HHkfyQO9ccsFU9FUsTgBDaV*_qS@y! zP|;+V`A*Ob?kC68qX&>aAuPg-e?Euio~MkN%?l3uBdh^|rRxG=3)V50>WuFcx$!oV zRn{$hc71Q}M=sf5#nSp>wy$j^{#xV|*m9CRg#3o#a*QPMNgGgISw}Rx`<)H)?Drzc zYE}lW2TOyz+cAm^={M#@UxY)QwP*7V%}e(TilEboYKt=-6!z|W4Apioxj>^cy_jZ*Hlb$L_wrv z?K-HIb;6NtRE$&WR_CaTk(Z=U;HZL@qR`)#k}a9;t>zH1AOG zPQ9(`>zXD9?_~94>)Q12!5Zlcw*270ht^M&A!PWUCjR*n6|n+(jG~O+XNEv|p!;oK zh9c?*l}^G+f1WIP$@|!k$qL^Ud<9>49G5HAtBQ;nJow|fvc}uwXQj+CS6TdW;iK1O z1(QCMxc`qG&?kAP>^g{ozx@EekUrIp=%B)w8RJ-F zH7AExzh4XhQ~&-=`2j0Fu&mt;HmOCRn-(2J|2`=4p|S3=zf-R0YM7Z>7CKm+y=aH6P?bi+1RkIj*sMK_Q(p~MHp1MoW_mF#Ub2ktI3EGcD8Iplo0Q1|7QdJU@jVlz*s%hGvYiA+PhZ+?NJtu z%RtT(PGYBHIbtuwChZzOdTua?9CJMTsR4JZi*)QNL&Hhvj;+pD8@f9Q#0&f0o{d?n z>_^3L@AgzX*MnFs<7ZIf7O*Ojylx!+r9S&15=7L=J=IE)GH8*;ei2>>7@9j zzTPCNg|R+)HU*ZxZBD)#`xBb*e~xsF*c`KVVc)R8N=`y z`7}o7`~-W;q2TKv3Y8G`E3WzzF3peUE`YpR2}AH3fEjY9S#DBmOd2y!fYUcIld+44 zPZFM<+J+0S`ySuTs(P)Zq;L)Kv2)>pBmd+(zh$IPQa@6w(xEHq}-1}Upq>=5Mb0Hbn|eHp;!RXv@WHWbC)W1C+(mIji?g+yFF-&+WDzcgoIgo#(SbI$XXcyDI&vu3FCEa zD^gXgWFP24X}#I1#)2KSonF?#$C$&r0@n_sJ)?D=MITlgCV_DmbsEvL9xA09T!)N) zjnu2h;s`S@08q3Ma|1WW%a?*G%RY@1C%My-1?#-?e*^X9IDkR1C7pp*jrybemub!FTvkMpBTiv-iZ-)*8 zfVj@4awt<>h|Hgt1Gr39M?zyk=@cE4SW67KX&*+MFSkd579AO8)U-qdN9`9ht1l%` z1MNp!Pem$nm(olO=su^3j|eezUa>+00tX=@xbeqzb39iJ^|T`ZCBRe~k48kG%wAaV z!1M;ms^}Wp>E%#N3_cbQf5)KxZCx@USs(bHc!6*u4mlq(CcKUpEA2O{Br4b`Ry`7& zcpzN&)%n5n^%f+TsC~z{C5d*z_Z=w?cd5LJ_&~60CDiQSZc5T9$?8hsm@-lGRtj6p z!QUd>OEsNFg*INTwjV;BO#RRKYF~StYNN*KZ8iiykG={huUBpUxrJ++4VvB6gZ;WRus^6`Ri3wHXNzeJQnvWP50hE6z!7p)60N^5usEZ*=t-%JGEI=qpbMaa_tnNXkl?P*zI+DER zo1ywTc)oAMf)yi^GV>oleAm(!Sb%l`DgWMwe^5Jw1sB^}h@mes7Giw|5q^a4+0L%b zcei5|KK;c}i@{)&rTa*0Fw)7LYU_$S%$5yw2ycd@LJ`{tNgrccI{DErO}Gu^&l>u+4IoR(DXyS)?14Ca{|J4iLwoe@6pDos^t|K+uG(t9;j z)j-Ztk&Q3bS~0^j#S;{2%`+w$ar0daoXY@RD>sVsXD zye?7w0A{<>!R@CtHV#>*b`SChbmm-(qdOAvF};}RW0~=zUk10Se7D(4kl0oh&~E~d z*$FlAC=sU5OMLmN__YUFjk%b^UVU%2rY8_i!jBj|iRA`qnZm&c34kw$(_Av_Ax_9d zaV#Mqw6<4{J+UnDrkFoF!}aYH31?Lw#cm~6P>(Tx3x~Ew{?vOkMj5!aNDJG1vt_%W zT#(nD=IU6IE1hyXMK$5rSFe*79D88X`fAZ&%f_Iui;`NcFV~*cvzvjH?I(#<@7veo zw`JpO#ilk0I49>E?U}EEC_#_?x1GP}_G!OUvR?y$RKe%cR;HvhFuN48>xE~_J15`$ zi16Y%C4;?qimX|cT1t@SEtVodtQ|(=rDocO1?82o5nx6)re%@uM;;II?tuXPhaUY* z`PUV7)@2Xt^eXGD`?k5}l%PHA?c`o5$w6hMmJ6Dj4b4802QeIr9O zXdxNUl6W9*XZ9Eih|?+pv(~Q0#K6*w6K$`958M4k%9wwIuRg4zcU9?F)(zNINez4f{9H;W=)JFvU_{iWr3Gv$Nq?b(d4&PwUy6VE+QHid+* zn&_6AvirmVR?tgm=CYu3Q<1uZQy1uSGcrgyFcyZgC1kXHcU{pnkl2?a4a13NF9`Qs z3!mn|B8a7i@ucv8jv8(v}1-on!u;QnVkOVMF6bQJ4A}lAOi%L@lkbMV#L>aC#-%adVeHRn7j}S7pZ}-c?ESw>zm6!-tIp_@PmtpD zb|fc%KFimCtt@d>EwB63kB=UuaskQjx>N0kp{T@nAuD|Vlp+E8r7c`Va+AC<89Zhd z;bibxv6rmUQw`qOShsojrwqxjlL+(=LRXVtGmrwieJ_pjB(amYtW^mM*K&272xR3w^5 zVr_p6hbt?|L4B<8j|DrF>&8NeNv0tY$?{hB;WVwX`6BF>b2&LAQZR;R7O%E`rgNi% zIefXMR>X_b_~C#OOk*jY$6>BT_2ZMXo8_2%)fKC}Bd1TgG5GNr=QIzz45SDQ_(5NpbDqu`9=w;Hn^ZisuyLgr+dis6M@YYX#|e5o zdsM%g36k|4{z!Uw@KwmNv2Vt~Ky+V)y(vGst_iQ>uH)^z2tv)xZ~nndQI8X?2YTr! z4bhhOFQSPQB~9R`|0T-8713iX84_Mer}`eAy?Gk~MyW-_A7{TS0iS2%gbxco+gWAn zxfl^3d~f9f_q)GKm`SL!Hi@>@yI8VI7=B^Gq6hD1;#a3g{jp$ZU)XnafP8^3$48d- za-KD;KJ*Pq4K;sw$2Eqfzy0lbu*g_J>HlW-#Zenchw|3QIo-;r=u*g4J;cXT9PjL z(c*WO3-3m+CV0DqR5w33KB9Pcb;B8R9UImF-md=UfKwRP)Kmh zYIB%!i`Dm$;TftCD`WKs8yBq<@zihvPd{p(j{NhKXwau9KjHk#BLPe`Q!W6OaA zgFfqr_twPBz+W-M=CRczI=$o_1udN!9ehGgwMlpy)6-|v?%7kWE19L{&&edZneS*s z+Bb!C?NVj(0yI|SGQ(f$O%Q-0f}dZ!o~n$1F|%EjY~QfPs+T|dz`i+*9@FMBM)-{Y)!-AF%SKa)H`%FZY|1wwB_1)59lSPTR+RmQKF*EFPlrThcU0+l!;=X zzg*edK6;ePjtu3;5^X293on7g<&^7dfVi}e z&Ue}WU?{bMF6Br#)kqBF7^ysdhNHwzB8SwAh2jiS@?>4aItK(E%`x&YC7$mcqx&gh zZB4YlBg2o!hz2w9Nd@HWDktrlzS=p`f4yi^GZ&&}Nxkz^fTTSkAYb$_7$YmFGwuyx zp3hzWq!hE%YYs2#q>uQ@FNaQIX+de}fXyeXKsrc=*p0y>@ox41A%cX5 z{;BA#?@QN#s}s>LciB37^JLqCZD3zfz3)eH@-wY($zTJZdu&d7N!XT~dVs@5_(%BC zcfR%MvdHJp%DU4gI5W5Jt`;4P-v)V=a{p+Z2r6_KY5RMGGurxEw5M0mR?z=%Vq!vp zv^sNLF$y8aMKKeIFVaoye`W-C^8*ZgP%6)#;2PSPYkCf%SYX~zZ({%#FYq>~THmhB zRrrnsTX$_>+_+c$YV??&|A<;tOG9PTZ;Dj|wA9G;D zR>&YAk${vpf#4xwUT0-7z4f!FFk(zfWWdiQ4jGPGJ}M3xxKx=CL_n&oe~j$s@#3_z zD|hQ9IUpvq5f8(Y$niW2v$!8qeTHHOd1DK=V@oUARrhKwC>(~q==iX%O;Zt1+z;y- zabTl~``u_i01dvVgJ-WbA^}`(ilUztY!IUp?C9VCe%XIvzqriVwr5N?-u(*sW`oKH z&&dIi*h09_OQvTRsc66C4F9@%8>{DSs+oo0T9%v?-nlxev-2$`A0f_}PJFA9&RhS4 zIeS<5vtytCNPRDR?xJP;XWx$th~F`I^~S{?=~Q2SBhvWjbtH}?!ZC#TBt22dV;jh+ zU!*M59DgaAI{C4ruIt)kcShxdpfGige{9Pns64pwim9>{Nt1(EoaUEWBvCmDEhB>v zwI3kGzIzs8Dy*`#y)d)|8wK}Qomx$G;y5$!R!j?|!~c3VcFbhFu3P@m9BtRhUWPZ*CO2N2XF1Nf8$aX|ud7X82*83I@iv}-jEn+H^P z5634&1t<#$7!&Z5k!s*jxmq@?*1#Bi%0lFLlR^RwVdf#TfSei(c|IUvgHHU;6`Mb3 z{&Lmm>NWTEHfB~NZZ-AY{p$PQlcVaapIy zQ5`TR{W)H5SyXrjesy)n*ZZ*RH*($JKFR7sz{&nvWQ5fIm+RM@zw^KFf@&B?i{*05Rb*3gCDMC&In)fy(3<3_70JC_j4j3L3P`TVLM80#e>b9Ga! zsl>!uz&EEeBmn+MHN8kLm~qnm0(wPY|JF*@LgfIY(*huqB1dFH?CQ#io}|x7mr~?) zP2W;^*;8;BtJF1X>Ys-s%eh&7FkY1MQ!9@)(cESm8P*@i4g>)K{YR(nJyd&%;xYjy zFE}(Y!izHTWu(|GluM;B0z$1Jh19=9IbT&Wp^C}6v65|`MzPwksb~wm+~se1eowpN zYpY_slBJ+kj^|sw3Y3a6=seP*6nK??;{gCPZy+)u9`@X6)m07mYqxdN+Wa1^{$a{x z5}SWbS8(sk;St%>JNaj{pu%(++mJOjrsLq?SU&R9 z(9i(dm+%rN{OIiQfl6rJM{4#gRlFhV%geHF0+QSFTOT0UDKIPt`FaksnWf=!}G9O zZMXEk3O}y;>Bq-}7_QlfVMD~6w^Cd^F6N-pyo-&=6e&AspZgfXGzb>E`ynGPswig1 zeCWlR8BZ=uKOHqJaf8+ZSBRq(J34aJJF#PO)zclA7|b<35F3pkS|N9G zi^pSE@AUj!1|JqI!yx7|banY<;|p7F0Q2+lEjNr1nQHwCCy`9(Db;exrdU`DP@bNi zO5wxwDs=j5qpSrYtOc;3BwQZy@ySV)Xa$s_$pP*Tp`QEL~oCQ{;Gu7Gd zqatnKv@o6l-O1SjlSCdw65t4Wfi*TR9e{06#D|59c0={XuA4f6LgwG8`UP`*Zx#|l93;B_`i#hW7Oj01_`yr;Lxjvz;>{Dz0oueFo!({S3`1gP!Ef+2=g*X4F-yN#P8MZUT$w}GI zN1YsJ1_~VaTr-}JiX996;$cQH5n4X;K3bmIU>j4m*SWcDpt;;y<6@-7fN5xJ2P3Zd zhRANtnq{HK+IW!%x~zE#P|8ES(5NbG)?PtZmkc=o;39qC@89zV=y05-3suPPB;jW< z={djU`Jm#|vLM^$U%5F{i!B3#Yrv7wDlqJNgif>GT+gzhh6B&?y0M8=kr?CeRI$(_ zy%LpevRm{66r6!fs=sek}{DInrOBs~TU9ju5Jn()e7^4^#(I)C12_&VVx3H+ zHsN-`@ejB(`Fj=dTfJ7R5WfVZee- z6k{{uKjic}DBa*$nQLKCB9vk;R;jV;;ZO5FGyK_l{0fe|;k)MZ>S(OuQ7#`F#>2Q0 z5L=VDqxEvq!5+5&fFb44!(T+aNGH*Jh34ofhoLMgv+LzB<}n`83(Iod87nYG{GF-s zI8`fB{lX!_BR<(dJ7v0qhpjO*ZXr*1PnB=5n zzRP@d#lZc;c07#{D=x!({5x?+>~vo#s8l(YYn-Tb{yT&+#5jQ&8f9lEGA#d`?X*;R zwL4JRImyY_0`If5*S^GAul=D3|MVj}r4S(PKlz#HAbjW;Dft#(kp0Fx5i>yB=<;6& z_a$rq6F}!*!h3kA(j-|KZX*-L$xgy1d{$Jz4k$i2iF^B&f*Nelw{(4AQpKrr8Ldw+ zqw@HG4E34Xt&I)V@_=q%4Qo>|dsQ#pLDNy=x2nW?XynfOYrNzv{iF^9>WfqDQ~O z`x6@r8lCD+-8xD+jC_MCh9*cZQm(IRSEFzB+IOSC?Bg56%?%Uv0S);~h9qjL`sduv z(aQEtH4VLfCF}O1PF83X>($kfyvB8pw@18r6{=R$#d&bhUAi7rt;f~qTZ@ybZaL?o zi+2LEZFnEzKV1pMJm@z?RlaJ-sC?C$Q3)D01m16uT0cy~rX)Y3BzGso5@1vj!NE=d zH1VbBr4r<YTj9pK)f|91$m%RF)p@d)y&ckU& z;@1yMztj?14bz(vV7`h8L3=}iYxTG}vz1*Eud?{DVKcFEDtAw=Y*xwvbtconM`rn=7&yNs_23PGHy`J(aXU-y@K30(vqDWP}2N6xj z;K|<9pzwe8`XQXxz=>5)0V%%>+>&+9&~6ZZb98_SwW*bDkzM=Wd*x`ou!*345TjO+ zjdE9{gLZP`b!X4JN}NMOw+LvrOZ>3VFsnn3p-uW(9Srt!z7R@ zi9$OY%1_$bA!d8@SvutvED!_cq8%!Q!D+*&r6D5)|H%|dc&JkXiSo?{nIxFT2R}un zNCzR4%n%})TP?!IV`E3Kkpvi@p;c&o9@KVzs$`$buF1Q9(rvMAZmyi#7M1?C8T0z$ zLLFs!5z(eWKE9LW)H3JVZu3EuQ{KoysMsP=_HvsIxR5wLz|0;JzrYJ(KbmDbw(XLB zls;T_F5`00zU0RdknOWi*QGH3#m-+R;_IA~#t_R1WcT#t1H9k?*s=0_c_Zr@M>V}# zDl0Xau}YBoN9`k3B&p1`vKVBigLX*(-hGJ^v2pi-MG~4=`jz5!sc>y){n@EYp-bQS z$W8>$jEP@7VhhbL_}_M2O=$xAw|ELNaN-T9b{{8d^)?ai|7rEVj|MYA@fQ}{7xPO| zwqI)-AN|*1`090R(Y4dqEu+B79!g#9i`A*nAbmmMkY`XQIslpfgpnRy+}~G^@zE__ zTjIal4Y?b1sQpa3PHP7#uSrc^Mue!X#bX`<)%d3>o_QxX*)(?y6u=%0Q{DT`nHhCO zP&bxn!kRdb?c0`{O#Vd9o*q>)GiI_m2Y*}tXkz9MJ$pGtMfBcSy4d~ww{B-bBuqiF z`4du(0drS^3ZyM71^ zx5tV6^K#7+SU$QkIod~NckBp`tOTVda^30iHC_xe5+}XTY1T;j5D@UQp0HMAM3=Wu+mJhu!2i1Vx~`wDgvo!Zf@Xo>PES|7dKLv#^n?)w>ERR5|1#_i5LLlN zE64=**_ff(>|9H9V5@m`1XgAQ5~h>1>owp7X$?9taAG23bXM{8_E{!0B}Iw$zg z9)l}a%{#4u^GE=@e=MoSAPK~6u&=C=BwLeAwy(TtVndX?aa|j`KSh+>zu}9-{efK* zL4vX>ceX82&~~=-E#v6QNp!aOAjeRCa22ggT#p5S!+n{57 z4H9W0yYvKlfm5@A$#wAiKRuFvEYlrPW$3lA7%@EmB)^PU&X^f-E?vyEhMdlK_mxd2oWJh4|bIgW>1ILlpX&*7o7@pWZ@#dx+y> z7yG$-5cBC+3;uyUmBALyV>p(N!B(v{awe{%E$i!=-;*;*(LJ+fi|*^toFQwt@;l_? zzgB7}n!FHUcF{O8Zx<22^;bR|&woX9HH5ZuKRrM=RXC4D|Lb_VML7ChDZ^Hi!-{ zMPdvgyiE6?;|hSYX#pqXz>3@+ZP8X<6MwXimMwZ~P_g1*zsl=ZIuz z78VxBCH=*)u&^Ls*@W-I_^)5-IX5TKy|(suPE;OkR~J8*mUw<2SDAs|zWw6;UHj`d zZm>qnCa!?*ReE)r3J*mzw5(2xa`F;`ew(f>zmGk~cbxM_IP<1ZsrM6|yH%YUQ~w<4 z>cq1e`$dYixjpeZp8685e}xV|BIEuxOo+t43#(I-FBcsTau3V!yoM7w(rxzsMG^nG z6{l&&DO1v#=5X0S3jV3jrz&c0f#ehf-HO_~3zMQCuZwr@P(*2VTj#xhN`Iz}ag1C1 zm^&L?-uyqo1V^boW}1vZ%pwrgDHz;*j<;Rqu%y-~qMsybUX4@agIru}LIBrZlbf7c zqbohmw!wK~)!e)+`|^&zB6nRyHx(=%1Ph-K3QdAPdhQE2Lj^vr8{8MD%>DDf1%6~~ zZ6D*kyc(+y{m5@5j%jaDW$AUhj z+uWH7f_ zvA2B>SaP~8d)md@QT^NLNFz}l`sS?NUp^6bIs_hNXkcWI71`74xZDxw-VqH(_m1y5 z0c-r4i(lyS=)ZkRHKTfK{@TOb=F%f)ms_c5OH*I+^HJ*8 z`BXdvgOJmnXU4IIuvLrPf%7ZvcP4mmunuvC!h10F+yWf_j(nQOBP}w|wmbWQ<|cwx z*_Ib7Lb$wbEnT7-yT7Ycy%DcS>$Mu+N1^yx$(tkgZt5(ttuGqh8HEFL#w!ai)`1CI zj(v=lygNgkzs?k`t`PRCSl6!Y>Op)LRdoJkQKuLU)*B-vMGW^sD zKo8`1JY1QjuKPDMl^cqy1$UWRH|XQbKyVM7TaheN$eB^B28%@`le^-${b5L;{bTk{ z@(bw{Wjw6s2|4l1)&lz0%$U%$oA`3fv~LHL4bTbJERqjU3)W=)R-BkKVGR}P*GA){ z8&rDV*6MAc15ycdaB}jN6k$T3Q}D}8_J&ucUr2MyyF(MqIF%f9RK6hL^pvY?tF*vF z%>qNss>LyapZxtOT9TAZkZE1yYNs4(kP@+RST^Zh+hYP~O2Ek)U_6t{?QGR=0hUf;}91NTzr!UweawvyDokv|GPmKaB%2IIj1*zV2wVO0M zYhO9GT;Syof`}^8SPsM^@v>eq15I zH&ZA0@|X$Crq`Tcpbj$+Reg;F5~GUuqf`BO3Rqdn!vc((chAOnM*KMPy zUalhvSv|pkb_z)>_ra3@N(O}Ol^y}&i*Y#ELar@sdj?o<8T9TLSAG#M<<7+3Z(R%C}IiScmWDR&; zF68r&V|#9vLSK_huj({`Pi_V4l+h#|;{oF0;yEPznp+Y;YG2UE<6B-Z1zAoC7P!Ef z6+(}hGr{J;KK^l^mts44nX2OFw-9xDdh<8O*h-DVXQ zGv_MI&aJdo<+2@Jk*q|tCD<I4#MdD8tU>ml9>ZY&K@(IC!u3xt zh{Gbp5VJ$=Ya{4k-IA*kKvx5%5KTff9Dxyb^s8!E`@8R*XJ60d09A{IfkBi88;ss( zjSeW67fcg<*MW*v7e6JG_5mis8m}Zja$; z0P=~L!SzmEZ|Fr(O4TdT?QogUqCaBVIy!lq<05WI<+XUMFF1g+YRk4#cW5la2@AB@ zb_B7zxo{4g9Fu+0XJIUMKlg-JlbdHw>Nq?F}*QC?`T7YR3}sru{}km2653N zA|gz9$PaH*C1hqu66;>vAuXSF(g=~bHmWn*6Y&zjs{KC0Ec1B_Jy8NXh@Db@jRdlBlztE3uKeR2Qk#%iN4C``-X#p^sqWQjnYHrOh;y!JZ(FN#S<9_rmZo#%Q?^ ze*iSTHQS&0uz}b;2JxD(#y`lEy3xOd$>nSI*J6itAwg!e zrlZIt_A8YV*5I5_ZzLtXUkhn>dfL`V$?R`l#jx*mTtikXen%d1&ALe*Jw1nFjomE2 zeI0j!Qeq|643eCE!%trgi%%*X7N+QfT!cyiACmSQ@#T=_!HDYDkn$e#P z{pH31T=}1V4%(t(mfI2}v$N@u?p5%1a!vjqs{Vd@<$b>=~8 zA4=@lkjn*TfJ#8kqAcdkYuqf$v%h$v{V74^mIyWUo=V!lOhY~o5jc$@U$f8kvXjWf z)Itz91fqF+n|>k5?Y0duoaHjW4y(f}^2rdITA8K>d20|%p$2ERqORX>7^XIzxUv*mOxfXvA|Ts8<7%q5=~zE<% zL4=CezCxkCpsv4<;r^l?S9ag+RjPFV8walb#I^Dwq5obK_*`3(MceVx{I zDGlSDe30z+iIsoDu89#y>*eIMHnwKDt-`Vv8;jC$g(G6WM4^3mKXYi4Cm=Z$F1xf8 z>y$xcMW<*swYm)q!Xu7mTDSusa_kr6l*0Tf+ZY_ny?qBbj(^zM^)IECGplnMs%Cjw zkl45*g?Y2{V|ZIoyD5C&U3STzSqq&x2m*(8LVC;;atE;MCNQ91Ow=eFe3jp?+`eKMeatntEL z{{0AAO9RHa8CCksUN^hqQ{10~OaOQ4gSEA_&D~wO64h)M6i03aDae)_9aT#LQ&YRv zTyTWi3*H}%wv0wKEBL7?NYz3J0o7p>-s2w-@sXWK5XY7N0AbEAnD?J8G*hB&$}?dK zq=DL|LrJZDMF{L*Wukv2NCpXk_dkc0TvwbSNW+y6Il;p9cl*`3?f-0{cYy-aAl!Fi z)iSE8e+1)MinvI4;rfj}UF&95vE7f2H!$WQ-1W1Kc=V3%;y(uI;8BCd$Cnl-r$X)0 zsdcO(V~E)eI!G=oFW}$edEAAlA+sw$3XsTFpIuHL#JD#=Am{hecXy6@fxQ{TA^1la z-g}RZyT4DZhF1AeLGOPM`om)FPDH((>|8Ax!SojSOJ9&gYNR~y)#$Wop*n4thb(Qm zBIEu3et86N+69TAR(N_gbx#$)x-9+Aik7CYuTpOe_xa3J*I=YbMk^!}=tU|a3;N-Z z{c4a{C8el{z_I>H#1jjAQaYh1C&<}{WnlU-q;Pk&TBN5mffL_}HNJb+^1?1NAozx5 z<5|cv<^-M##hosQc4D&;n z#|qGUj3e(sNJMjtf*;$g{d7vn|@}G9|Pu`Nfza*+WgJ=iz|88CM65{H6Kj`%az4AsiyR_%_ z!9Ftn#bIf#L|<$ZmpaYB$;Oq|@ABtJf7V2&HeK8%Aci$l4Ly4-Y-wp8gLj(Z@_68L zy#jpTjSNIf*XuvJ_qI>2L*Ky4A$sbbqWXtmFl-HMYe*1>)&oDD67JuuU+{Dy|ImZC zwA~&QH(-H{JHIaS8e;RNzm)BXk z8l+|NQi7ZqDDop$u+pTA#4E=B_)2R8f^k9Hm^aT}h)L>H^t--E9Lu(CgWzFT<}Q<% zgAOguW9r$}lcJCJh%oiQc)H49jeh(_KTEdclyAfDob^p~S;P-IcU(~L>ZW9!l^i$p zw1ixtqL})>uK-ArW`ClI##k%?m4 zNA|y((eH+M{^F)3|Noo_xmQGu$6p{t9&7JO3OEfsB9I?giJjkh%`2Kk`>nOt_Q3gG zS4GtoVrl5c^8fatC(kkJe4xZ05g9o_Gh~ifdToXBjO*;fS6(4vEK_hejn}Ek03rtH zgL7ENWgT>0E4Z>Peu}J(uG6I8E8wAIHc~+k)_`N|Vgk~{)pl3>)x_k|a)E}N*#SM) z-4JwTt`PG642F+ES$Qqu@%4)MW9&uG@gb5Bk+}XzVUnispdkGNWX{>=NGe}yu;k=s zpJCJMd{1;ZMFj*4i9w`?u*gE535WTW;fP`4jr|6O2B#lirJ; z74(P1@%3s_Mtk@?&o!NZq^_0c$JMx##I=8egl^zRaBDkNCShajq|AAm9I*BLO1ll> zcoX1;F<>CeX$B9xQCeE%ED_P*A@AOrEHV{LhvFinFr*<)zB$kE)LTV)Ss!9=3ivo< zZN4ij4XDH2QCWhkvBc84wz;Jx6Y4h6-IV6aNlglR#BzJ_d3=LPqha-psx^Yk< zJVWvli_EA%OnP_@#5?L6M4`ynjXUR|bZiA*m_rO)<5ppMwc8em1aL%fR9{T0X=`ie zh)yV&htKjYs4@TeyTO-vr?#xMT$uj$+xkd4`pxbyCS=-6n}njXhFwtk>3QPwIMoBc zwZkjl#$B@KB@RQb*6W=XXzWynB0LDZ=TBNb<7OGfKaUd^%h5Z*WbMrmk~~`dOnv#~ zp*S+|or;dyN9_aex=lj@3sMUc`Dr@`cb#bKw^Xb?1AneN7=TUP`JhqMd8?{YMeNFByNTk+<2w^z5~rg=n=R~nk8Dt?%xboMAOd*e#lNIs zdK^5+{q2L>I8ThTaZPm6qs+@SXqAPi8w014k#Is}1?bUpCc!Ow4CJpykMDLO-6=$G zSg4R1cL>F*n^7gQ@!GGBv2T`>S$^6J!jNxUh0qdFnOBjJ0_Y>k15)XiSDt1gV~jhE zECAt3HRv9Xd?*2aeCFqY)TUVNeM6-;{d|v^I3U(8FwpGc*vj-tIzjXq0ne2OvIPz~ z_?wZK)-!$T2K++WvkKfPKWC>`G^g=j^L&h~`9>i~<<%>74J^fMD(x6P(TA4sB$8ix zPt5|lz0s>BkOenHb5_VseI(aMGt0=4fL}yB@Al`BPA;@6x-5_^_3ncMt}hP8*uHf2 z31V6)O;KR~l`$o@eL^9Qu=Q*mHtA2|;30=Nif0K);KWIB=nBRpIe)=6Hk$thJH*jK z#V{|IQ2>-r+t|oRvFP53>~$N)I9B$Fo}t>A(w%fBb{2;>Wi=C>5=AN{B0&L9i9<9w zEl+RCCK$4TIN_I8JQxZxCpF*2F8DL-`e zyRT6W-RLwTDi@8WspzLoRAOpd0RTzuVe@A(TD&apZFXR@sQ5KkN~doWd)Y0xyVOpX zg&kp%tAkQT-^pRUoV0?~^75Gjw$Pf>94~4Oor{(I!gRP~1uy+`La2AKMT9G?V5PGa z>Y(LMSkLj|W~vpHKZ;-s>@?B0=r-XF`t(%Rs+M7M>wT4JZ9xXz>FFn$6`r|QcTbFG zcC3}{us2m%h)L3%UH*6y(@2zp8Ir=zzJph5VX=iYT1+_~%a-a`TX{{!QM@0ODnGFn zr9niMDrR^W|)(JQL`#jVdWqE7_`ZlhZ9U()o0X!OclHkEk_O#VM{B^1qU7p z>nHpbrOlhDH+ROTCzfZMe!Ui~mOf2RzIUyjfE}mmN^gS`9{dNZ<&&xdww%mey*c%K z6p`5uX4WGw^JT7Y_bz!0qGtq8{CKJf?~~T}6qa~)zP~o-HA?2j#y;qLB0KWyY0-jq zgY&KTsuAG5*?$5`T!Ij+nX$6jo4fdX4;2dd%bDCd9D1xO57Dxg{6h?5pKhS+EkKj_ zD79)tOArlVc13%7c7_-5DeKQWkRC z)EKOpo13dQA8_U1_)E4}Sy9oG@KE{tpgt<*hBYiB92r{r5~i4v2#_-=I5Q6VZ}uti z%`pvwY%YTYKkVec(qa4|^vh%H-T%TmM#y5Q{{DLlF%tNJhzR&UL?nkIxpA>}^=wT0>&DGO!&!*lt#3T!Yyc94u zK%lq^*G&CI=mW+40)#_nG*abeS!}ui@zbcO!ZZzul$L%a7{&a852CFgN(=&(M;GJUYbHy@)H=ApDu>Pp(}NZFpZazjH}w#hKw zt{-Wgd~vlJajk>qjVS8VD+3$tIQI^b_@LSzdgk=yDwCQyAIH#Ri`t7u z?nzq&BKI~d8^P+3P(36vL&~!DF}Fa#=-^v=-lZP^g*P|{umSUga!nha=-gA14monC z)3dHRq6!(zTyo#kh6uio8+T-OQcgB%?qEKIeiJk}cv|~2sS8U$G3xiD@lmND=QNlo zIZTf=Ao9y9UjH9s9O>rH=tQHFY=y{dNtWebCDcdKFK@%Mp&~=xx26e$4LkjpzekOr zg}jUVobRn^hHo(S#S`JTZ^!bYh0y>ZGFvN*d*l=p_sQ`dX3Y?$`KA70o62TG|F$SUJ7f2*7lwU$EHwnO?BPRx^PBY2?fBozcP3{Mzd5^ zl*t6n)DSJa73CaUTwg@PW3ba&{VN?^MfN_L5jHa5h^@w~R$2WN-6)jhWI8gcW@itt zGi-Tt!d9<)LUZ#-5(7AeH+;rg23vb0cv?95f>h6UTgA)@w*X$%&t?7tScT~$DQYX0 zfu*?GSz%G#f3Db13Z?v9#2lob5`8&&mu)siq!nGZN(NMP>A-@934oJ78g{e&O)2>A zG?@|C{35Aj;Uma&Y%?A%tk=Qun{@AP$e!Fj)!gs?U%6KwIJ|^6lu0e{{q4$5)QY0Kqk)&jDv{mFER}Z$$OB|!9S0x2%oNm1Z!$>%1 zox4toyvLbcGFt7ta_XtYRKm#q}7YWh|xL6zw&S>mECyj4qG3!sH`2vP{m}c#V&s*hu>^_J*_+y zyfgXB-=~0c^=#50U65{XoqtjvELYQm@-EM6#rQ(jIr^nM@r2?fUcjfc8ibUwg zw;4>x`)qnP;o%``;-oEKKxT;{kpJ`8`?q#W#87&6{ZGM&$V3E4U9{rStlAgoU zd2lgG%;}j5_Qgb2QAO5FA+*~eQtW_$2nNUz(-Ou! zOw8R4trntu-Mq)4kh|K0F1;6`8J($su^1!y>m`;Q?zM9w-<@_k2NUp8BJ3GUxZ-ho z?)M{bT_v|{n-Q()4(kSca1(VkD;JC^ho{OtAXT4SHhLA)9ana0J3aNC{WST5Txa`% zd*w>>#-j$OJ+^$?r-eTcmIz7$zv$iGbY`&Mo}iqFSl$a;5JKB9^4!L)S}4cQ2IbF0 zU(rF5tSXv?Jq+ar4qVMNpCK4q-qeSenskAW#^3CWjCO9{?37{8P1ym!)A6giHW0rS z)>tpRY;G47r_S}quoi&sZ81GoYZc3)HsufqDN?K(VH|Gt>4@^!Dm6}tB&@j0x2??1 z{YZyyRN35}?K*Vjhlko##YZ4Qd%GrEa{FT;9h2Q`Gw9U65tHBFCHdc40#H`Vd%r!u zochqGo)}U$0M6RcS@+RE@LK#fw?XUDmN8aKe27ahcmyZv%tps76T*X#6kMIYaa-=- zo$(DxVnSQ0Qh_K(Arb4K;AX#VO8Qwj~oK zcn?QbZ0ep818ggfHGC6nQj0BBWi__>dN<@}_1F37;lvRhij0RI%S|tJxa>h@}v7>ch&1TwDT^lQn__QwgYjnXYp54BDNPqRvZpNJkJ5soAVX-Z@KdPL;n&qe7v-`!xe(50v@o(PHs2fPyQ^O zrVuI~{cz#F@`jSRl+KfTu$sFviu|8HHC#F!5B|!&c|$=*z~Ajv&IV88>Fd6cGEI+c zYmWlj%XrhMPVcCEfOJG=kV?Yh@tC5(; zsB+G=UhO4XN{jlnXV_}>Bym2;_enmCy=D_oU@zF02mS@Xa^)ZEtnnECHt7yyze!6= zqp3f8H`XhXBG!AkmqxLrGZQh;N@DW>-K#VDY6{dZ^~Tk7G4dIRc=`5x^)3_ZwHRN_ zMebAsHC@5Y60OOLRtw^UwHcEeCD2V;o zyB#>}q41fnh;K|k;5rDrGNf^+u7@)oT_jv&F~7aY;CSeW%m-XiWY8%B-jo5zsB;4A z7rf4Y@zw0)K6|)ZRYH5z9vHmkVEgv?9QJ3RIVZ~Bv$^Vw{wwk8p!yx&hUgB`az6r~ zfhaG&q+!oq5GnToy4?SeY{k8@b-|sw#D5~Jq~WWMu627V4&}2dPQ~UXseq=PHwKvR z)_Gz#VfGdXKfG(57sTD@6e7l&bQPe%*-ny%TeiMVUt%T>0b^M@P3i+FYlH>GOPGyBg4Z2NLk-w@lGjsNT{h&n zmsm)BLd67Wza&{01N5gXt3MQzjtrmrw)@T6iq+q)ojs}k>Tb!-^E%VaG;rX~OJ9PX zi}S_s`isKimTrLE%=I9@W2adx%#2$aQhS26exiSl*QASSV^D_vg0jd9&##B;1;KZt z-cVLfG~k?HBEY;1GeKK79>Ia6hsZ;ZcG85}7cs0^3GFW}wZdNs6J5qTTlx1~AQkC_ z$?f$yu9ttf#rcTO%o}*=mqfOW4PmfYWN5A z{x}ALau*ADMm-_wU?4f*Vo7_GzCA+!C+Rv<^GqOAc^e-9wo-~{{7X1o?(aMV5Rm?o zJY_0nf4{8!YHh^~V7_R;19V&u1auAs1km*PPc4ucN zuSWoZh)J$cObss1r!OiE@hogZ0l%mP-VuZo6?OmBu^EZxrk(TSl!>;#To9M*3wTmv zP+UppE?~dR(4T5Pu7u@Qxci3uJT$ZE)|Y3OHlO_FH#o;nXh+6* zCLPbr&Wac0<>k>B;|18-+M-D_X%00aP4Yys0$X+ZNc3;|P_GG4w0jemE3F^H+nSD+ zh|NGG)ATeku@Sy8`s-bNY1{ts-~nJ6QgR(lXSlb11PK0%?LAf(F-i^1-1acJe&|`u|*n zdt01*{Z)|F?PCY8fYH4>U424sqPzjx%zvN*IJM0S3Lc= zdn|2tBl}Znd80U_ z{^C7ytuqJlwxeq@TKB{j8Vbk;n%S=IY?=Y3WmUG5x5<5f;ET;n!#I#{wn`@w)h_=s zX6+&-J&?%{MfRsNO!oWON?LmbG_f1_{P%b?|II@?AUbuw`Ma>dj4^MIMhLy#o^(kD z5%YdXqKfO`9q|+LVE;SfrIxlOe;R;X75v>wQL+6f3z~pFQLz%Z41L;Zc{yCyJ+9cg z={Uv{-HQTp^B4`sga6rj;~HkZ8EonLUZVi^JuM(!&$Z;O zVA*J%-bw$-N!7pNuMrrG!AnE@_BYDl1uI*-&TTiB7)L&o#mU#Z?^s%qyYCwy@bl-- z!@#RIk2k!)a5WcnzUZ6urAS<|N0}uh#KeBqdd)|WkGMm0YCPM20_nH>SNBPlkM3!m zYnr^ahkDdwCKy)={TBTGspS%P?TaJ2NM?<*5PdhjVhp{CSJcv1EmfY8;G@Ds?}-Ec z7k$oA<}GBQ=LGX;f|yO}`b+(qL6^xwpJ9+P^MZizu$Rzz-DkCIgi}_WcuRgRIA}+^ zi!+?>%_Wkd#(!w0cncy*evJJ!7EW=7&O05_uPZ0|r6s?7w7M?!rzonV5;}qj6?Qz(0LTZ@`F!}Rr_7xa0abtXir$(bk~a=X@h(C15Y(trs#ct;7+nG zOpnR6UI4ca(6-hL0N8&>00Kk-mkz$KZ<}x0rr$9VT2;nQD;N_tWZ?*lvn=}p#l?Eh zy!(iOhwj+MU9EjwGJZSFSybJmF1c@E~mvP1! zL2PV~+Xrk&YpSP{{ZlKp#{+FH2R`&Rcc|S)Z$I)kbtu#i&f)tH{_f&}xVp@-!CZEH zPw?1pC=7;a+*0=7 za<3;wTNsN8D3N!Y7+>=L2HHFeEz)3Tr759DNFeWQel1yb+(-<0ZvbA4Xa~;jhOIiX zTNv!`i;h%lJZCu*sINPmsG^Q5E^!I|%oz5pvH>J%6+e9a^%Oo0f2t8Ndpkn+#q#-H z&tUJnk6E$=*dy#YRM(n$uO5@q^3Tl7Jh#ZTV7arNT5Knk&!FDVRtE!kPT4GYI7r1w z$BJve=O53Bblx2@5mz*1p$^-hd*s|2ZP~spdZJgeE$(+Q4EAG-b}!e%??RQN&x&(7 z`A)st4MqD7f~6AvP(0*G3cFqcC7FQF8Fj_^Na<$Ezo-lMUg%dJSGZ|6F66-W+i%&O ze63!~zmu2{9 zYc~{xzJ*+Uto+>CKk!nq@qII@{){W&>_WtU@dWzL_aXnL9*6iP{JTPH+lZj(j?>y9 zsx;JJbu3_CNAS(5w|?&72Oa+H1047cgi|Z0p1AlKjR-71tQP{v@q*>D)Y!?x$*+=} z?Y=%Fm>-{v&Y>7^d(?}*MF9M}sX#ssP|pn`nd;XqyUNNQ_bR0&y`TMz&+F+vwge+S zvcX!evk*Dn52Q_DQ}h3+de)uSBux$2CJveDyPcgzbazkF0tPfXv&3fTvnX;1Az?z5 z7aRd!Ri*G{A5Ft*9A={I&N*ApH-EQWkK$xrYh`T5sQ81tz_GyE^tcesPb*E)abX}I zJ)gT0)h%2-50as-RF4Q^=z-%66cq4pIei@Gj5K9H5+5erlR5h#HNjMWjZsAigxBR; z18Uf6{#K|ME@7Sl6IdoeVrn{gqxM4;yfzgSMSLbgIN5-rgK%=kJ<0j1Vrm@d>za3E z1qV;uFs$rW9I=4TYH03rsrf>yeVh)}d*ewoUtKY)buH|BF~82v-Xkad!1SBWe>7oa z6%bE_c{OAjPe-5*PQ|CIJPv(Lh6nGT@^%;;uOW{F=fA9Ffv7^T$L?G57pHeLN*nwZQzD$7iT zLtWgq%(*kUtikH%4W69r_Jz>lx?w{s`+=OEpmI6bp81-@7%?4hu0_wKa8yR-fd%l9 z`n9HVP_nqc3mH1?;^#Zkyd37&CIFTy!&f;Vvf8s$j@<6h{mE?~pB!XLnVofRZ*c3a zBi|(00Wi{|0A^tf9Pg8p!zpbKWm=frw_GYVO9!(^zh(fAJ0(R60!1)_{H}*ok1F)FSI5AB?enVQ z|8ZRIwimD(naF`C$$zpbBfv*ap%^ieU7)QMw<@iM?PMo^vvlD`t?yi?6*`s+iqk(` ziiGBhG_ZTYPn7QXXULOU-+wf3WEmhz!HV~LKNpZiJh&~xLaLs1@Z3}`dy5`uiayj+ zrGAatI%0x^-}mbrttF%H%x;&vDHrM$If%|hI8U}68J7>!w z;t0E|U@iJyp;PKl9U_BSYy`>_4wEojzW#xEiHt*2mY2OO5fL5B zpsk=!!*OC2BJr@}Osa>+M*#3@QC(;W95FO&~D%S1G&T?;nWVY>9^n zP+5?4w1ASG1h;pw6ABlQF^fNO(h^f^gJ~5Uq=^IQwe#}153zH)j_W)%3B^@7BP|~> z#~Mbab^0PsIWzHb>aCexb{xH`+ex@<}TJ5FaIB~E#T#Fl+XBB+ZH_><$s z{toKL^lV63elwX&L@r^|WK0_RI$VfM5oDKrd8C}N-94z=A}unNfLU`H?RcuvSupa} zkF-TuUBYyebGhW`4NCP@awOD&OrW?_tZ9OYiShm7>mBxH(rXNm4~P#E6=G_<#&xJg zJqq0nU8@jT>ii(|GIjEPNfb5Xy>vOb^jG?C#y#ca4L#>IE-t{=Dhc~ILljB{QU08MT84XE6_A!zA`&p-m- zq8oZ8qhB_0NJWe4z}3)$Z@ED@M1#2EKk@@KO}MjNhEAG6xwVYcZuH~7`08_jm-o&S zq&&*-cKvX^#AEkj>v!hw>2|t}6RLsu`HdPVwT5Y%u)I#SMBv-J(qz?}|AhnI(>`(E z{xfYasZ@jrs|C^&1lZr}`K#tjY5u)v#;!zt`HT8Ad;zHGx)8mgqWfC)d$a6^Kqud2 z)kCV%ix$;as()(lRa5H^G%-!WnBhosjNzmse5XyAvB|zys_25P za?fzNI!B4ZN=_M8@ck|CRAXPl!)CEs{%SBFR;HM}0y&t#Md-~Tccf|ggw9tHZ=-#6 z=e`*TKY;W|E`yBF_2M~laZ$T>2~uKxXU)wQjl2~x71Vxk3*a+d)%D^JbZCtg!I6|9 zH^+_=40!YXjZH|}s4YFutZS{Mj5BBqOIxmk-KVFFIoaN#t4urSv zCC3JV4uOlsP4>0b*T3@Zf%QM%bmsWE4Jyfw%Kyq86prWI@bo7|lI6}v4mMUB?UgRl zG5N*#IyTaNf9dW8X|!);d;*Mx2KaGl3$`bt^ui)+!H#hi!szn?30{ZD%RpG>H}rgu zrFsqcz`r@rzc_^^Aqn7kp1V^9maG%CfG@=U?Hb5L@VgosWDK?V=m}JfvbMDG^P?#j zR|zrCzyGIic#2fpVw#rDVA^kYU-}Q?hDA@YxVwL=- ztSNi%>kjN8k(1X5HvN$}9`#l8j@%B3!kZ39hZQ3o0@BCp{7A!EZG#sLxK%1dBmrgi zMtF&zQqUl2b1Jlacs^y?Or;yPsALPF-E1gX6yAVV0R4ttw(khYIO z;1qFX7gJTivzE6hKI|b*{?U6r3~p*9B3I7M>Inr@mIZ=iI|I|@{?8E6Q1YLFTx+d_ zRC#EUWA|uXnnoj@_c%X3vQp7|-KiO8R&yzLQ!QyEW<5ee3^wq^Of^!V@KO2V!(uNNeEyJVZjTN}7Y0$(D zdKJtanVwh(^I*<_R!TA!y%|Mp@BZ8`+Y_bDIX)a6TXh+ytSidFh*I}%82cw}Uy)Vn z8c3mkw2xlXzDw%+?0RWo6g?*1QS;;JRyw-q=NqFQE2L!R-9hTe`~|{ApvC3_T4BbU z?o6&c#boih0lTA7_B&}MLN!zT|1k`{PF}DD(S7>Ts8SWflhJJTsNZm&vnTw`e0=G5 zx=)S%`SD4~G<|3-fxokl5(A6!ImJS+16X}%Yk1U6yu&q+OnI6UO}4o;CE>KD@#a8(v5?n$f?B6&FBvL?UB=8cveD zUmlBq*D=@76rlAc)j01Rw|TQY&PGhymm74O%9$xF1P^`7r^MxSG-gmiF^oG{jz<1= zt_17~INfFgMA4TWc^bcaQN~t@(E=?WN5x-_hqIa1M@s5^6`%o1tH%qi#O3f}GibWE z-3){yXc7hhhYZ-tU?T9WUI1_B@xr5U@F0_Dc{=1AHT|wq95D_xBV;ER znQ0JIJna=59i3I54-`lI#{^Cp*#3np+uEw4_-5cr3X$U5Ll!w1H{@eFzi`y-0 z(pb($j#`8N(P}+wl#&Wg`%jC<(?_#0)1FxaYeODYXAD)jlg4dA5u|&S$|*$ty6@Q- z8)3eS(wG2awZ#KTX^7u{`P^+tfBrn3_F4MEUSu7(FPF$Ul<}GGo|v`zzjrlsjsH*v zmg6=(6DMfYK@Z_CY(ocok_N4RU$-FpCdOK^cmZmJMJ*F>iF}&R_xI7u1Ws8EjnC_1 zjYd4W+;5iD4K?5;Q*(yjr*_Jyd>5>^{&{qMveqgohDp%J%okEC+5J4fIcxouU}58W zQO=-Yp)s`l1bKb?>znzjXK%io!CRaqBxOCb@Wre_bq_rkn;uMO13-q3h7j=jb2TJc zH$@h+2mrjls$DQ?q|03-V63AsV`^g`yjW?or@(S(MPt5J08gg6GE`Ct0cp+Gb&Xx` z8!7(djk|L1S1av5JvfX}*X^I;D1+sNEnH~xk>|I?qB84O8%~Izp@SHrSn^yU`(cK0 z&}5>VJm$c}&XHmO!TugD0cfjYa|rz$DwmNHBq`nyHc|?kT=Prwy@)kE`xzyL8#+@B zCYt+>50?}dE7;m{$jQsADo@xuIx3o*e_Qu&5EF5juc;jw8F8rgFFfh{Gh^pMd*KU* zyME+hv#(Pq$JfKg2rIMIThjOg==AeIY4oYM5mLm6^%zBq21LAp-@plz0W3v{XK8%zk z8@Tl21PRY?at0!-G{$y)3}vU+JEb>F5*9va*87(mk9OO+o5wE{J(}xN8rRN2iKoI( z8XFhk(>LSpcK!no=_RHRp3)^9@uzBE#j!6>xDv{>ZA8%x9pnx2!9zucwzf_t25fNM z^v#!1ricd*-jx9@ST27zS=iVB1&0#>t119-E{+agI`_L8$?56qLj&RyzlYl6!f zDeCYIKeG;-$u8-OwiivT?c9NXuNIsUm7hi~SG01?4OInS+Rkzg#)9H98tg*oEFuAa z0nR>*dN1w^ab|?TvT`c;?up1XF_6~v(l0I2oY@Wy@oK01Pd|CFgDHXbemEHk1FNLX z9>@438>c}H3ES(`*fVj@1La6h)hI8=k_)P!F3&n)^1LnBH(Po2C}R0Z|-=p>ES{Ycu{0?9`%*xnWyZMY>kpqlQ=rB3cH99x=l z*hqd5%2SKxNbBK0`c}54CI$cZ_jNjThDDjmPFg#+4Q7Z@!i-XK>NTM|k|>xGwZ9%pEyVwdYr2 zj>*!T9H=$_VARwQ>jJ3Dv5*U2wMFLQ`0Kus2)#o^T7;|0c`%r1rj zpV{Z#>vq}Hz(DEk(%lzBW=wa4StHFBzbTvM?SxNC=H}*VsS1kFNfyP?^|*$ugtK$< z@EG*C1mC>-`rV~oJ#S*XMa^8M?G|Hvd_1gptkT8(d|b<^J4Tj_%9o>ByZPn_K zi*afnJ_!z7%f8xO{*EoUvrwXPNF(H$Q4;xU#Lub8*ca_B@J#emQB=`P+I z85u=SzU>~nww)@jVl2ekDI$ygB1-dpEN}JM774RbwmTzGtkOXPeEr1jz31jHL4Z}U zE|v(MRaEWz$1Fq)d^oxLA1pw4IVJs_lQhBm^NX=O>#M1kE{Vnv1=)@9bV}1LELa67 zu>xsuacNJjDc?B%|M{i1crE_zAYmL=iqyTYa6*p zRE6ab8u02-T+gMWy?rorfJIM_7Ct#L(%NiP?@`40TE_7cV~y}gal_5?;{HNu#Fn%& z%KyOws|UXgKfrvKe$T0?gOeYo^ur&{0l>hAsZIUxGECQhhx8?9eCN|~nR8IS=esLY zVs65f%zhf2qm_Ep;f1!0$?~uA2a>SlKfwm>KLT2IQ>_6P6W*^!qrZ7pt9HN79P{UN zAAoN?DC@HjDbKA1>9QsswLzlc?W%ckW0ZT(i&O&nAw<5x>8mJocct+}mwYsK5RHJp zm6SDu`dD%3jOG5U&20szMcl!+Bza%EhI#QK;!otcr zGCaJ@n-eS0M2a$Z%+-D2VOIbzQ7YsjYba%6?x$#SXt z#-uhr|FNU(Z5)5vYc>}k2n-4dd67_$N2AUtEsfg}yJc_@@sW3j_^`XE`Ei*mnmCI06mgS?fskji5HXTB8Hr(tzWlJGrCMk`Wwr(kwwC5_Gw>pAcN&zDtDJTY^IW^r zl)zB5_pc(MMLB|vXOzJ5e*Hn0=aPS@`_AObT8y;EO}fSuk8XL;)QKnC^6WH;u)T_S z^tq}+z-)}t>xfp>C2ePXr>fK=Rb~rk<$M1wjUYKbr5j;CI)89u|1w5#$hrVky~Nel ze0Op0`_z0uyWq^}9p(y_M;l3IWu>6RT88<;-`(9HdyuofK9=M&kr@YxjXUDwQHiqN z{x~j91~~^_nsZ{bN1WjdI9P{<$xcFrWMudHDYFhq*i;2Mxu%hd7nEpkRl^ zUD-Za=B6i}2j+j*a9l_T*6v~>ovIXg_0156gl~R9cKiD7=E7{^=bKC9&4FQE_vlVS zU%5zoRta&fJx0Y0K8e~n=5{I85x#?*rY6~O3DzG&!XQ=LPEy$gZz?g%O!4hU^!7G# zhK3AieN8}0Bhcc>Sf%>{<=DJ77_53P#=-MR<^l2ehYEsp3%Q@%PF8#b=-0)q&O!n!FO7{UtK6RJtSEm5FJp%l%(q5@=^j)YK;f5zca*u zu|{0Wm$v z18c)fXy9GnD+7x);Ia><2e}lV8N6Xig9yp;LZoal09yg@V(e~|Es65WX^wI zL}aSK9oUFEm!QW}ybJC^nW=`NWwl^SJ6D8-u%MUDlD*-ue8KTPcWz-($2ck!h%6wI(MKc$}2w}4})%o@*8)}PlT@%30>8}A)^?=GTC z*PcF105fPd-NsL?o>y#1K`zK|UIQyt4SEqD)pBI)Fq8JZNeXVt*O6tZR94DGxN85A zTSE7{nt9|925B%W2kWk!n5TVDQEex73Rs&MyzA0k$H^uwfH4|1#^EN~@Qig^8zz2I zc1HMo`g5I(T#NR$6tSF}X-k7eR5?#3&l)&t|5~{^x@E@%PDv-pC_iHxt9_1HUQxLl zy0Om{q@}+Ew{rNCP-7!VE5YV=v?>R*th94H+kjw>-&N4Wv8gH;rUi2K88Y*~Vzqvz zh_Zh4Z@;ixhKV3Ac3*VuWTkHS?KEHo#2fUzcfu^9?CFojY$}zuwB5zON87281Kz-U z_S~_a&Bqfh(=|mx^gf*b<SY@*22JgPLe6qb`8VmSg7-_r`cn>lDf_qj4YZpn2-}`^)pN7kMUH z`Wf?M>a?#O$N%G>{|l++??hmTNQB2i?PMZRCM%&yl7=qgo5qLPgxWY^K^$u65D~&% zbs;*T-zSkE35sic-#ig$#Y+Q1${c1NKKr^o_Ju$Skvr&C+Of=b0ePw#oSQh*dhbt& zMw1KvyTLB`F?!xCf+&AZfAI0m!={czc)(u|x&+h5HxjpldpjTw1nm~q{Kx0C)AIh^ zC3otGJF~D)!$KQe^AvcMhW<5;^nFu9RDMB$yt}(lo=@Q})3wd$(o#&4fMs@56C=b2 zg_L{qnM1WlWGaQCW6^I5f*~AW7ngE&j@bIjlzt@~T)7}&+FucfwTn%F`;|GL!caNz zN&T=Uowxqe3COju+PUC5%34;HRN?ed-Hx5#cw>8m(Hde83OyHw(?`=55_L9x&G!1B z)_!5WKa`ARbRP9;ZzSlj#Jd}9vWiGzwXhjqKc&i#oir)!Z-BGd0me7$sxYOO*p=TG z970*8F4r|Ff$bMfE!cO^L088*=V#(G zg=Wt@jwhjN5UVCI>&>p(w}(0h84e9WC+?%Q{S!p3>iTe%TP_S7z#Jb&YR9~R$5qsb zgAWq7@kbF^-V3d(6Mr>07uIPDHGkNy-}wY%ek@3%l5lymy=}uewxwo&&gs}ZdySNV zVh<2p*(23os(Uzq^n^>hre2Ykmx!=1C7=d}J9GgyF5I5grp z`i)}=UW88?#|o3N{qxCeiv3n_55Pky3D3n>L7}1YzU{OC;`R6T8>WV#MbM+buL7oF zO^w^6eoqXj3PZC_a|;n-5Ez*l;ZzUy4qzh_kKtg|V#Ku(N99Pp^0O3Wrd3c}!t7~g~ zj*C#+*xv5l0Z?S&l_eUxR3LS22g!tj0xNc`J-N|W%$_)19LE_bZij)|D|BfTfzPaaaA3?f5Xa z`0wo%_q-W5$zAGENr!Jtx>u{)YUb=p-6FJs24qOMy1Bdl=tI^D*a z73#3vbEf(_c~hC>_U~0%=QJ@DF;D0(30*|I7tj8jDEbZYwwf(atQ(KB5X?JH`w9x( z%D?D(Mt@yS_EP)ZaY!|!PQtLJLb%6iTdG&;S?71&{MIO4t70-7#X&=Sel%9f3StSY zwTl0&_O>QUNs0R)B6Z1lvFKCP?%Qw#6WOlgwd8+coTkBODu&+NK-u%6iuPb-mU_|3 zQz(MCm*pAr4;k39oTS=PzZgX{{r?<9S~T+*-l^tsv6aD=j!P^=QwI)7oO?}F{jDy% z2add^N}ObtygVT8<3~#dKYvC`dmUO@$_p${0YQ~%?J_RMu&?!14=z?UOuw5n5vC_us0q?K2 zVF5%BFJbchJt5i=bj>UVTi;F0DJA zsFVJsT()HW=Q0zsMt1U^k^TPka<5)f56k1%Kue{yX`s{XC+=kAIl zk?)-dvxSlvt@|4m{D|4>XeYsI&Nq)dDVeL%;iB1oTQ7I4Jm0)wYgViN`631ioXhe{ z=2k;y*-=N1$RTJg9K3h0I!p5??SrBws{ZMaSZW+eB54d;fNR8?KUl{N5gx0`%2%k~`l@EX`$q&sXC*MSlZS2rR0`jkxKvbBF3;y2 zk7hYa)+RHG6y4k^w}hb9HhWd&R(ng;8Lc*@JCjB7F8oxZP?`L~^t=7N`lD^jI6f-( z9t`GGr-xm-=H?HiZgvH{lF`VQ720i0AfZc8O~;d!UD&y{8>jm*PIg~OBf{ZtaaTyx zJa_=;#?wJA<0Sn}T3A$9m&pZxZ1$V%#>ql)Q^Gl|RE-1KXXan^uXT0x9z4*o^g}`( zKY9NXAiaDMbvEqwI{-fwyR=F-V)gsn(Y)|}W0^mXxXsVTMeNMnTuciK3sH|1Anc%0ip(dh=ZC1obcixFanqn$Z^|B-tJ~(X-c!+ezQArrQ$ z@}wSFV(DmZ0(yGB>I{QXzv5m=Alxw+msii)+X63-qqiM86k;|Hgho#pOl)tLE?Ox4 z4i`gf&MbG1T78+I-USN}6G3voVLZb^7wU+ySXyGA6mCtJh9hPa^0zr9=9q*KE9n99 zsV=(H(du)WQ@Xv?m0(@#py~ZC35jm+X#_{?4EATecxnil)w7tfnpx*5+LsMwoLCFl zs=Pje2Vy1LeIW)=6w%4v*^IKo>Xpnhb81p7p@y3s&a=lW5ce98AlqNpA_cETVwu0S z8jma$h~}oILQ9&Fv-^HtUZSR^rfNRLS_#b}Kc4455X#|^;~k&$JVUnGalLud$Bp)O z?P{Sn&@m-TA(~UB&G)mnLhbQ#eV^4Hs4IeI8`*~r%sZX9kT+gM8hYD~x^!eY>9EPv z$Rz&8>7Y6L$R{I%04*N1yvsub-I1&<4dZ>o9Sy4spS>??vs3>;M4?H5J{Z7-Hq_is zS})tX zYvZ|d0wef%o)BhJBG3~5uF@fW10$=I$KuxUV_IMk2BDGf1|gJ0skbNJEP)3LkV?St zt?yKDn;)(GH`YVwaquN?qCzV61NBA6J?2O{k=MfQ88W8B3(6d#$)}CMzn53-RzTt#tTM=`aR)NdCm|t9o_`5N-DVDy^kN~w{}~GK>&>e z0SE)~1c3;dL46Anz|pvZ%9ve}0cHU|{3{mRRnuEOoRCV_XN3M%b8k0+^+m>E|GA~s zZwFK16sTbg1d8f3W7mcDn`QYY1U(A~0$UZ-NSC;T1biF-^Z@zBACVnmnYhY%hc%GH;Q-Bx9Bte|5T?LNX_GUe|E>G-N_mSnyjh90awOq2 zf8NycvqyZxqd`?!Sr{jo8@HJir=^jSU!ebbnJ*MLKCDA$ld<8!Du< zfwI!2D$j95mp;DPf4Xb4Gq+t^PFAczC#zf)O3#so%>*>J2(k;N!ojd7Z~hEm8UKoP zqIJl!W&M}jExIuLc!%x&+2RGS-VIzB8$o?V%pK7MC;F9LzD~b=6SZYs%CiJtxoqFr z{%b6tS=8MT%XWhi8_W2aK`AWj3;vC=fYEBn4~N|i5!yifh_L_jexR7VU$%TIpdU5@ z*U{-oeE8_mDmX8;?^#pQOf36emf92>0u>5#Zf(upF}fam=`kgFvRi>;{8S%9-*(%K z#3PbWrEGU3t5@MV*-h(>YnQu^I2A~b=g?k!%E7tGx#|8r+M6N(iYv{=x&yVfwX0-h zwob=m_SxA@(?V8I5-RF?$4$Is71jD-Cay7bq0}T0OuH{`pwyQzEe1sfI!nMa{c1vE z#BVfm(|y^?Z#wl+En#HKR#W=G7S||x!9oVi7)wYet(hdM)&Ng)j#B}$*$omhW0@hJ z>&RWn+s1*FR46s8(Q=3}CY@n96){zw@$SIanC_P`5s;bpM=+6+Vjj!-pXZfVN$M>5 z7G&cv2|%-nRQOM(H`_4Hl0(m_hJ|Hc+Rvr~vaz_z!acN;C#t=LsS(b3V3OiqSWFZt+e zHLcIuhBoeh>}J9S=&!G1yF-l6jnVb`emXzqW+*Buy8SSgvj+AXSYGK$tqZqs_SdNH2?9eRduWOT4dWzcMoceO~OPRAh*>Wno#& zV^!*LX7KKb`Md7bD(&?1X{b;tu=Qw5vbtx&dGh1YNht2JXInwZ{`XykpjIt!SYZGOl_z zl8h}s1jzME@>2KvQ73$#`8uv3iuQQ3XJ2W=lfq;!o)-4@_CpLLLBOQm3u0HoJ19KA`oaz@bZ=OdDtzVECewUCLT!Me}EH`4s#o?WW6uj9(vnwI8VnbNZV-hQtks5FD+kv zxWKQ05z`zAF0Lrz+8z??4QqMHHL$>$y49HO$Oayex}o33d?o63iZnc1Swe9ZqJRc`?m)fcsm z-=Ryo+X56Mqy-reB%}nCkOm2*MLO;P(k)5|h_r~5q;#ircXu}o%*=QBz3=z`)_*Mq zE;F<4J+aR|d++n?XIu6*>hO)-aa+?o`xrVZeexB}sY>Ji_V7_il6Yu2$=hlO??Wmn zJXR-s6dWMf+)+}F?12srGsYxCrv9j9y~iqW`4=E&obnd%o>JNB zkj2ERh+JZs3>-)KJAO(_?TZ|HyGw!quf^<~>gi#fgg=T}DC-Q%5IDJ@O<$TyFsw#BF}M~8hG z^JSa}A9w4%8MdsXD&VeZiu#CJoLb$`WnzeAQ+w?>%L{t=n%aZX%zLswg%iEw3p&Rp zDsK_r@xtS3v)%$5J_5kDF925DmQZ-uXz-N9R{l?wuSbE8d;j@*lSyJCXdIWA@~MLr z;|4T3_oHcYUymg)S+zHmIxlxbD>#)LfARY8*s6~?rA;qwvny~4uVM;GJW?@dEX( zQU{UX+5F|ly}5ZkuP<+fP8;T*0ElIGpCF3$OVP5hb5h4u*7qgQ$m8W#B@r4&T#)60 z<7+kd%)j}tbeG!X?#~n7z`+!kqXe>Bdh$A5&T$E7QGsKD!jtYGNYJZ#*aaT8DbT_nmXdjsYlB&SVIBP0V`FrT^Za84#n(qKvi&}eNo9XGhEP=_W#TMO zbU^?`Kq}9|sR(gQfrfg7kJWCh7sY|~E{0+gxR?fiq7~Qjiy&5Qm88dQxz*X(*;1qb z-Fn;6sl$M$w8XHMBAM^mBgpQjnXZVb$a$;M`r0{naUg+)b#~nNJ0@uzPRBy_(e3E) zEVzDWrKfXS*4Xt3?`Lj5Z>?*G4VQB zEt1F0=0|UI3-3*ePiCm+{~3BL|LY%}-3_RV$l~7eN4$l3?Y<8itWbO<e_@^eI9hQbtr9#iV6!(Q*wm%J+-qoNr52RufVKLiKR2+>t?m}Sq#cJjlRD1z?h#4 zsvG)1Ylz||v+MZis5MYLhKI>c4FL{xIi1-Sj@@*bs4X4)z=7MU!TW>%9DcpI%agSFjDl+WP8r;st23tI;JIZW5=p=m0%EGE7 zp`X{;OmLDe2bZ(Wi981R;ddu5AK!YzhL)x#06;Y= zhuecEMwl1+k%Al{aU|Vx%N;!3f9-j+3~hDjhQ$VTm5!>Wl_;79g2}}Z?U)hQ%7A@u;@6Y zwx<)BL*f0}!lClM;#=p3uP>rw*8H*1!Nn$yFUv%vdAncqBtmLq`l~X^hXw9C!@0-@ zi5t(Q2KYv~GX+8WuilP{mvyoU16?FfT;%>IeDo=Oz_sHqN}b-+pf3?3zu&Y++A~h; z$3mdW{P^sHyXX~WakZ|*kXx0#tJ_}BoV5f4+_xz$roVg!Z7U{E*rjNnr1lls>+2^g z2uwggX^@hw!`FuJ%1H-vzvo{-F7mFQ7|4V#t!BGC+4G`@emW7H)&SEFi{46lLsNXU z5~qIDG3{Kz{dlPFsk4Z(JZc@M3}J|&Gm!j)twn3Mx@~xKF^0kY7fhDn9+H2hhbub{ z`%jW@LupQwS0IEngb;T38|wZXB-(nZY!MX=%gfg=W8E{5RwBt+%drG=7<#=6GuGBD z5v!Vr_~|uh&seSBxwrLX7=jzmvz6fnfZ#JdsT zhk}uRexl^d#v9&}mn(7I5-=c!A$-!`84|9H^K^GE+O*gFW7{`V`^*WUd#lgFj zWV6YC@31@~sW3dq|5QIi959*)OWa`Ju`-i^k<)YK#}`m7bX(UKMSzWSgc{!<4Qc7s z=X%z~nbz8NSK{L6L3jnkak4w|pV)@=Kpl8tGbLv#buT}fpIR~TFj)GTf2VNa9mc^w z5jm{j9e=~BFeYomzfaj7JOCRL)LC6NFD|GkQYhLH&*NVQw7$Pe_KhSvvC;kwFmJ&3 zuu&bU8$~C6=og&GjOR5(o80C6y6+T;26`6cF?_^*s(>Ryd>!nq8t#h}L{`?lmDN?5 zqVXGUQP>sfR{0jLAC3PkCwHTx0 zC1F(}UuG+2yrRNc5A1j$21((UFF3$Ntw(8AlWKR|=g&XJw^zT=$}m%=2Mv+p`|;S; zn=55m7PAGQeCQcBB!tC;POc1-&Ceg^sh*~8 z8#f58NxO402~PAU`ii7&9+cNl^}}gT9#D%rZ2-D%C*@IV#DW;>yO|~LlgiO#xerSg zEB@XrLAd#knt}U&A^Kenf5~lx35A8o#MkL#5SCJ5tox2B!0thKcz8?q?&U=N0=?qz zid~dlBtMkKFgkLs^Qj%4p8o?d6glOX$in{GLl`pyqdyBr1ag%#&R4E`H%p`T7EMawuI7mb#*(f4!_7nh5RnVEcA-8QS|g1Z7)HP z4-emSo%HP7$93BHMS};XDJA>Ed*Z+6%js?ZaMqZh935j%?;ox*+TOVSdY0#d>8frk z_(GSO#=GlmyGZJ=8L^LmCRK9`q!b~P?||Wg{F!(Fni;QJf`Xc{52|pshXeSQ6gdtS z6@S;)CCPPTb!d&_)Vg^5r|~hgiGp^P1>s`PE#gmN-F&|gNKQj}%up^WiXw9#Uy%XR zCxR8O)d~5;iN5*@jUv+CJ7?wuOBc_-E0lxJTK&+L!c~B9GAY2GkGX?-QR06UwA7 zLT7q(EHzkNK^YK%Z0q4+eC%sVE!C|lOTE~K%S99seMI{XUQZ#__I|UbM>w3Wv@dE^ zn*Lawobj@P$!~IxP&`Nw3{=nzapETzXjgd3YfccYK9qgym8Op z>c(_lr2Vnx#$Y4nnb;rm5Ntozo17wNMueISy8U6jjSb4~tfc!%k(?$AOgOZ^H0Hy* z>ZRWiH2*Ol;aAW4(eRg-OV9Ssr^Wpp*4tExc03b#uZ-V-89_}n;#~x9ue6OsmKT%% zU@>~i?)uhE=4mlxsO zK44ySy6?a5jKMKZF!M9ixqO-h%r)e>Bft42VdKT2pV*ZaH+pqUh_;x~cZ%SVSwQIQp$mZaCtccAP(d{I?|( zHrM#_<%`LBU#b{#S%U-9?S0mS&nD;PB_;tZoNNw@d7be@q20ge)maLAwcHX7=}vhk z*7o^nV5><0jLo%a{Vl$U4lTY7NyToEDx`a(sS{8`SR7ymuk2Rll!n+#xe<%sJt;sZ zIZ>H-q(FmC>)iO<==t%^C+V`lC|RZQP-h$-y#4`10maCAWY)cacrQU&9|A&VIjd*} z?1vl9o<8)b%d0Y3ip)|6zbB z10iz&@d{z@MaxcZ!c7LPUJX@B!fiZ!e`Xa;T{#TG-<7?p>hSUjzAX({{exq!k3%9N zT7}0A0@a~eBRu2e z^-6)C%vx4JWZe?ZAtuTa23)%0xpHQ;>vcvk$1o5~vl;KR`X@% zq_d#vEbVd1<|CTWtjf$E`S6fcfBd9M?;xQSCRFLV6f7ugZ7Xm`-{&)JIGsvIvz`_? z3+oaUN@i|>8jh&~Xh|dxO}>Idoa)uSCX!O_`^*x9I>>rYOsFpil6CWrEDn?ia!Kig z+G{1Kp9l=#?|zcz=~R*P&XO-*KX1DNQOybGqgZSpj@XHCv3LV>*6oxe%*R^&k|V%{zu|6ArDfHFX_yDDJ|aLrht^UsrdZ87zFA znT@!t{4pRJ_NJn{`g_;t^F%<@GZ`P?NnD;R*|A$ee>3@_qjTs2<=E?Jfm!67{1p5LNTbdN0twLh}X=Y;SAkkUap{cJd2Z1R)x z&5FBPj0)7#(1ZZ+4SqE=!~5Ht&lS9w9_GI%r=^Uj`so-!MpXRCl&i?$>RRR>Iqlk- z$+J#(A<=S^wH>{hrX>;A7*%{n?RP%L4IoCYp}zz9t+6TC*_o1`m;9$-Sw_=3IsnH@Dk^uMB1<1anJs)eq*ludX2ss4&^nPv@9xt7{(*e)K95v#6#Uk4SxT%=M4f zc-i~@`ThX8i3s-d=V#}{Bp>#`@pEDujAIIjG2>(;HR;8yaNa8=58^p7ku zAYtVCeSogG*`ABy(TdHkko}R8A=ye8^HAqAVN+b%UX}ORV!EFZNen-MG8Z0O{NOx3 z2iHZLVKP>=Pxk!KD88(0-Fpxzi|w<)u+c^aXYFVuWK>C$I(2kp$7(dw;R_G1AJBpF zfwFzwbh=uyzn)qPy8g(`o#sUDQv18bXn3%hd{ zbMK1muYA-28#%QJF={@=^{ks)jLx)K$vM6dsbS0Z z*!~U-OB>G*`T3TDE;v(^v;rgJ;ePc-B&26-Qr8JJzM^X4lfP=2pQw{rfwz z{uX{)?Wms~8@I2Y!s*>ub}RFb&kY@x{^>3J)7vY*J2eGP-*;~Lk3^*cyLdm`=id$P zV;OWUj*X4IA%GhLr=eKs{`}Zj`?}J)n^HNw+P&{jczH>k4xM-~RCJtr9JN6+vPU=m z!c}N}!_inHyDYOGA$cw?4LZiT^&r6pyBP9Wx*mUaTE944Cf)9o(R;^mS7-%t8JN*x zV0Amy%1n!N)D_T}8_j#o!Grq76-4Nr)GAAMlH7!cLyaH&eD)e;gQ=F|eFV(`N(N&k zm{_0IYsPwc`5RHdHz&2q_F_Zg3j2|i2Vo8`Z)~eHCZ?0%-rZWSbF3V-J*$1AkUolU z`fmm&AJ*lBZ$%sWBs@ddPM)_(<)FHCT+agOi~s=Q9`>l5pp$;}ikj^X4Cw9co!Qu= znz64^L4H$O&@i8R;8g$rYlUBVp%3osx`murhM>+Nf&PSMEBn?4vZs7 z=+UJe-1vIkPqJaOF75iH%+486ipu< z(73om9Z8w!H>ooJ@CYoj?Tg{&;gQqUjyK-QrJ>D`H${~-KihyDQ+?f#4w^BrqL`eC zW#cA3^_6J*zc3X(QXi;QBc&di$6An5I*skn#}0@Pl|WVd4}{RIt#+zT#-kLgWo%W}n<#&)Xh+KEL)Vu@o#^F|m+y}j`&!^B35lG+1U{= zY+jeUEda**+@fA>?}W#;ZoA=fxe{GOzdD+>Kn8rjQoc>gXB5#AOqN;7M+tN4<@bB(lY~+zaNZU;3Izj=IJ62t+jeW4|ziV zxN!=!ucd~Yc8ifb>`y8ps-|*`@11{q>wOh~uGG^*G$W%RV~(f`|=D-AjfC&unP12 z_?bRAQwvr~2|n;BAtEGl&EP;74>=V_}CcU5hHN)?TwrZ7~RovR21kkJvAlyxB_C~(a~os7Det) zR55U9ajMa<$olv^{Tvr3;D)9lASUkEGjs?q{5s4~CBYR#(~gX5tB>kl9iqAOuf!pl zK~Xp7Q^gzP+ufFG6rPK8J-rURSyHo|GIJ(G?xQIW~dJ4{U%t6aN2B&wuB4Nv%O zwN26q>pENBxwdXgO$}KUs=f4DeG8UuKQ6$73!DX7KtZ~Zjog>=Ft%?h*V|^wK_%jv zd67C8Mj+wE(X`K%K}`_!7-D+~;8JI;G`jxa=TFVa79Sxkc!+E`LvC$8k^%l`fR7pCt-1u$AcmQc7B|<1? zj)H+9^h1wzE~VI;M19i9>AQtL3D?{lT`Zb*6%z;-u-Hk&e8lOlzp13^dM$e<2rpng zpyG|gCeM9VYSCwsH3~>Lvn_FLR6fX?)4M7D9@Ls9mOaGclGL_W4HMf&u>uQ*D z5vyp>P@M7)5c|dVT10c6ipYXTR%&_X^6GSj@fZB;r0xw4kEFI41wX{wAaxZ@4GJ+0 zbhgYIdKsoN6xX%aX=~h^me|R<70w$_-)s1n7z9Gl#KraLAu@K#A~T5Sk4KAO9Fm z#i>SZI6XQVi1xKlUg=5TTRvLt@wTnV2SeoGl9C1=LF3J6mmBV{|M$`YASwrcpq$C1 zXU4;MvZ_k#Q?ULpQxuaZ>2iA{6>1R|AOEIb^dK|yO8@j&GQTMnhe{&i%NOdbtgHiY zqGeM(kstP~fBvi0G1DiB}uC)uGMWH2;5 z(|;1T9;=nMWQ4)~fr3B#0b>56jeywGs6n&$?XRMlD}NEc_JtoWxRFX*TmS5F;WMs} zI0UL|YJyR~fVB|stb~vdwSWM`OC71U4IRJT786U1z6_6yba^xX8k&pzefST145yyR zR3g+<_$qfWTGuM;8pR3Tzb`XA8JP5lg)1~t+U;W&4>V=5BbWwVb2*Ds_MB||r8?}B zV`EZzO^h4v2)miofCi2no?6`Vv?Vxs3nq-a5CCv+ac{FrGYgqBMaeZs0|0{oq7E*B z<+~0*bNqJ)#S|$&Ly7M_I2JT8@G_ST%d&KGO5pKEO?W;MG-rW0;%<22lA))59Sz6; zQ)RB^g`vkO{KF4wCu2ABC3l?iFr32N4bNlHn*8g$js-xx4Hrj;%N-JRg_V#KsamLj zrwh7ZUH8EVNJ!*f#vEIoo}Jw}h)Qr$W-gXuX^eANy0ZMSKit7mI6y{3^r6bV)zAkZ zASJ~E8zTW?9kfJqQayKxpO24^b)Q~j)sT-XW~%*8HId$zm3Ouom3E)sPz!4!*%pwj z02|#Fi8!(WZ3W64d67+_@+~o5!#S~YnBi%a4PuhU6A>!4TY}i^3Yd8pG$mT<3b+7r@#=W>mvw!g9$mTb0L zalLA0N0!X$N8XhEpP2i_1ot5VY{80Ui@9UkhI_3|CS>#-%FF?g0k%M*h?X~l(zumvX%duTtoYEGvm9>7U-=mCW z^`1Kt)Z^6lT~bDz=;ZFTq=ldBo+Y`Vw0;k(41lfw*ko^0A@`xwCKiN`i!=*@ZEV!^ zLGWb~WzrBPn9yZP2fy%1FAl1*ZW97AZ32i94j^Kq0pr88wS_2p3gV26!mj4=<9U0F z(0OC;I5ya>S~N+Lr(Jr%vTo6g20I&;wGo&Y&Y`IU&Zpzw4ZAU_zlgU0+kyazTPR{e z%duYbrTkC5ma-NW_o4MDsQ0KvsL(zFCVh-v%knaG#0DyGbhNc|#7p;FYbZkH4(#dp zA;1AI=MNQL*dKYYXQjsnjE_g1B05 z@q{om!u?k5dD@8%pK)Jy7H06d)DXPwrhl84>UC;@G8j{5iH8+91IHotWWZ*Tk#G9Y z_;|wp!?&N%Xy3tTQ(?2v0EGXm1qes|v!Ecb16*#Jm`Hs8B)G*-$y$Omu*EbYI(ixU zREd=N1$`3Coi5eB0`K;ZS5nKGLunn?`0S{!iG)ZAFXTrS z1Z>DSH0cNYDJIW3Z+kyX+t~#Ty+z3S^eD7t5y4KtpQHk%aTM$FRJ%mUXC|hk$O(ar z&v|GAX6-u`7EGev+onK7&?G$dj5%SrjSIom?`G{qd5SOu_nB|A2kXp-==OU6`&K{V z8#(u{2!S6?-!G0l&VI8r&CfVY49}aDG%h-3Nq!b3y6WFrY75`k-TfLhJ~9F*`p7qN zkp{~i22PZm^*D|d!q6ARd*Trr^IqT;AOD9V?6)s4F7sF7z!3cP$Vr3uOqh!y%Dqk- z!z_Q&P~%MPwH9xo=raU2962e{+iR?bmoJ`so%EZ^VTyd~m?0veI5ciygByw~#rP@K zOc4f)KLcYieP+H=Li1qsHQ^Ba>BtG6kO40pBq6uv6CA}Ny1QS@zRpF`fTsc?3;)It z*5q5*F;M5l)EbCWf~;S5%0RY;akUShQ+BB?4^*q-n{o_kFm`XWFP%v8Ef&^jcalct zH1$zD0m@J=5%>JjUsZVo?7Rx^#fKvzA~xzBzYL|oL8-mP{oUQ?8X6Swe8#LgM!(kA z>+rIZXfYDeSo`eDNU!f;EjBA4lln0W^gV@JGPIOjK3~vEGsdL#@nQXtO73Jw9p__0 zWwFJa2!7@dlje6VjA91U0;`5%(U+r`W>Ti&OuzHf{sPQqzuNP+m+7ughTsiIIwC8z zGy!3QQF5s92kw$VC}0Jfxqv{LH$k}?p2SGr--z6W2wehoV&e^P?_GCtQRZPGgrSpNdKU z%;VHt&~=kf)Rc!Bh4IY1HGi3`G=qHFYj(@oB$)BFrcSA|}qQJatwA-I+))or2n z@t|BhKhYsl#9VI~TNgihlB%ZaEF^ya{{5Np@mX;8QFhM>5uhJ9aP+PO3(d&Sk2PDCHmx7GW!LS3 zk70he#98>0A?nZ6)uT^}&reRc>fZuRErRk(mo1C@_BASv4ntKza_-uI=3tr|Zes}H zX9{=K7|R;8BsY+^(O-jgkhI8O|KT^weBNrY%;QFf^R%Yro_rV8mqUXMXDXa2gIsET zPS}VXhvr|e^Bs341U74?c(b9LRmU?hq|dRuPL^IE+37>*g!Z3wOt?g|yHoHPmdQh; zak)4V`!5M>+g6+|f?5v6O({%r5wWA4nxz~jIk`I9+1_h7Z4`=#y~UwY;2H3QWo2Mm zsc3<_-z=~jR~~z5yTpMRd|v8o*3|oi?(`s8ybwBT=QX ziR{^gyOxV>N70n(?`7k)2LYq++gIL_(AFf**{8AoZOvF}mKI_RsC?$l9!Y`&4Ii}l z2i?zQfhD_xW=0YBn;B9CW7^x>tKx5a;IX%~v=D&kG#H@D(|(A;__@`zvOBk6PNTyF zNkgNoC0S%@W=V~v1@B*p3a?kbD)MV8#fk|-|96`h_tSL-L=3tyhcJZ2G4d)c3_Yzs zb$D^~ewJZj_j%)4(0hBTdqyZx;aA%^N~d%8pWG?hU3R zGsk*|TCTPbn&6j+dLgP|?Twj$nZJ;b&?m4f**9WHhi&ARY>o(E>iS0I=RxVboEUTa zetSCtA4ApPb)d}k-~ok%>DRAAr?*H*eq1gQ+=(SirQ)4X>ypQ!2j6hIH;mbk~ll*gs;)|O`(S;@lGws}`$WbD0LW8@ZQqW`MunsexlKp#1? zZg%b+JBZ(AA9^1=2NE~_M91dt6epgxAQ%N?9%nR60rw11;eih!i?kr<-A0)$E<2Hq zkRXx_PxHhGq}LTOr$z!=0r2#WR!vuO;RnMR85RH zAT+I{koYMx>0QdujWJom?8lRC9^#VY zKeWk=P#~SkBcJWSMZsSUu{6M4WPSkG){+b8Ge%g3OzUus>Q zl>?0+Rb&X`|J5)?1Z=Vylifv@PCC@_+d=xF5P$~O z1{ZM>U8EqD2C`D!YXqy%?>Q8+zzzyeszc%zPr17px%NQJ%2ZPA&G-Y1bwY> z7@QX!-vW}YnRsiSP{{}pMMPuw_I9n8>Yn=eadL9HCLW}pw5)Mqq4He806A< z>fS#;KVO7Qo)Z2!8lVFLN_--Zpm7k8dGQ=t!uN*Ytap*)Y034;N~QCJ2V3ATF@LJp zq^iW9z*i@bp8+cszpOsWZkQ9$mLj_x!i?QQ8ITqM4QQx2c^gHR{&L6;b2)GrN)TUV zm3{m3^*5AufDUGW7r)v_zu=wUw=lGoXc6tHx-RSv>Z{(Lk4nFx!UMCOORa>P?oh&^ zr6C6gN7gVmv{F%58r4XhyVEiLzOdbKzO01*4*B&X9w%jSONylX;p5@N1iYF1IYRuHhAOtU&;TY$2D_}J_2 zD^^ZND&F&lHrE4lPZ0$8Uf)mQ4#gfrw8{@{qx6xMPLhF*4K8L<{DcRP|73XcRtTDN zy{aU`OZtQ6D0lQpnjW$zRZIW#mA2AqELu<*<7YW2;PS&`YR@oVa;V|pG@C$20J4I%c?I$=>f)8ngsh-?7{$={MY-|>>fq2FsrdCFiWN}ZNBVQ(e-=53J3h4 z99O2fdX_3w#mXe6aF3Pbd^38)!x#vs;|rR#kM>dwX!`M;<916H`(Flq$+ z^OLs`=ZS-=DPMTki>)&z^x&rTCmefnxy*Q+8draOu$hJ>sERSIVHwrxPy~Gv(L8u! z0JDTE$uYRz->`Dx@UF7O=xxU!L_VR8Jm!x(shmz|VXeUCZZpqnkP0kpNO>iJ#(`Hq zJ>njBcbc8@a)ipDq)2cF`FSC?G-pb5sP`eBnT4x!w8H}wK4(44_$ArtiCJ+6R%6&$ zi%+$yuB0;J!?c43{y=UCjp#n*4|al?HBS3VCNO>+{6v{L2nQg)lUu}ktt{hwL7?CB zJ{}(42{-p$#>nR7Lq&@}`-9da1F{KfsUt?6Sq+b~FhW_NWZu^NIH&!=Ya=5yq`C|; z4xI&On;bBXn)#mANjjv~sG3}lRXT}7)jE*MK~=mQ2*yzw>3QMq{Y4pPHKZX|Z!^Qe zD}70lh4i$Y=JIi)@X9$);(%x32zpOXPk|9DT$9DE3&98;7^9yXo^-t+6PaW(0@&jF z;ix+!px*02K%QC>92E2lbQ5C^vYUl;Ls_}-Ho)j{FRf&c{;(e#E8>r4A4PGMNGS#d+b&vx}R&C zIXO5!%cnuc&ayA8vuA%}17MGe(Rz>;S-icq^~wsc6=C|V%?&9`ekm!CG=G#RfApab ze(UThM8&{gi5RB77X%$dy@|nqDY9tg6hcBOBtOXKY zfApoOs4QFN)8^{}^U)2nAYL-#uk0s2$IUpb1s`J2owaCVl&3f=N{;})BFSlVjcX4b zL>G;!v*iAV7*L92aAW8uv@`CDd1x;Qe*Q`i%m_gdHx?# zsqO0qs8simfcP{WUwgpU1xB1tEv7e%1@gar8{qaM|ETaQe*PqY^3sRq{n;0w6JL53 zme;c~yd~FlUgtORs%-FYFmZfQ*N9H~#FCAk{-wd=?fv~=b^<6Q5y(z3)aSS(Q6pbE zDOnCi14~l9mV#J*h>;KuPR{I9!}9vlBz)IsTM>QD$@lYu8oAKU*LJ0Z%%9(mjbm%X zZuRjz{tf-kLl13aq%vqZX{^l2fsF((H{M3sO4=WkZ0A8jYpT>`g=*&ueK`R zUto2XQ$6fNmRc(?z^s?S=b+CXe-GyKIg`d&1 zI54aJ?_X1c;G{bi35IymGeXz^DYIDPYbj;8fWU2G17Jouz!uN%sgPPO74!r8NwYsF zn6!(%^{gWWi%RQ2nXY3y1CpM@(3ftoVJY)L9Hi-kbk3W_OY24W@w| z=E08gh}mTdI5hqShLWr&4YwN?2SCoeP589qUjt3fr%wFI50Ct4p`wU_`C4{^4e^t1 zEN_Ydpm^*0a^(|vW(SyY4OSZaeC3PAQ_I!*&=s_pk zTRCSg>xW}*Pf~{hcpa(`?&hm^N`jyH&UJMuJph+vGilP<86z`({#2~i4sW~jXcnql zw`uy8kLYrJW#yg<2NfPZKD1}^Ji7Xlkf1zI6|G;Oo#zV)Fl4Kj?AVSf705i?OtWV; z0f*8~#;Y-*t2fG1`bLFg^dGnEe#lps5=0u&Bs1B<*v>^T^335Gp6ga&*HuFgRR&dMhRXaPouV&px zKSms3gS0Wi24^oz_95jDWZ{E&(nGSDt_32=s^2U^8BGXdq$*@~E1b(q@{z{kz(7pdy`QgKmz-SZ zK5l1yGQg!S9OX7rfcG`}&-HoXwj|ULK0h z!lbvs67Au;J#3*R`;xd7tTw`?;%02V7wLX3Z~(%oN8dT7+kaP9|Q7 zzLz!=M<q6Ec3GhN$dGXMlpC2k~R5Q!#g7&}z{Mi*f@bRHKbsn<{!S#eg3U}Fm-p=4U=vg#ze?xLZM0%k7!o$H^tR- zD*zPq^=A*6R2cT>Xfx{CJFfZrM00aZov!={W}GGyBx-L|E&LdZoXp)`tR55-$^pl7&u?^h+(a&t?>?;~@G)lt~#OBITkR85Uq*^=5{Sul_#yfcN7)x62amapY!Umdc4*j&4fdaBSVgpuCi{*RQ%zIt=0a| z4>qnAjmy{>>$0Y0QJ$N`plA@YMtSi=JfNxG zeY%X;kDV9CU#SD;gneu5(y9h`4jK4-X#e-HdMbD`(hC8gOAheEGKxt@RCrAYtp53x zjWm&*q^-Z^Axn=NYIs$1G`eyoKbcWOu%jT+VfPMOg}06KOhb9N_lsN&IlhKLugtGT zP>5LkZy$#sODRAPU;6igg~#hmb;$95PMNifA56wWzZ~U;8F^{ih`u=;{8O|3 zu0ekHI#P=1=tKz{(LNekV$l_4qzkSMR{J^eah>8%7JNnY8CSd4 z&*O8x!fAXRF^>yfkD;3>otj_Km7S`oqqU)%3GTjeJ%6$OcZgSUQ3GzxH&i~o{tle3 z9hZ{=w4e>=+Uknm=)kV+*DYfuB&s5{kuD0(UI1{(U%+DMZ-@K?Z(4bWp`nu6Z-Cu< zJ3%P`5EpiyabkHSy)z>;^M_+kx96CR>$~v-IJYPr*Vp}H`OiZSShRYKHx4EmZFf@iO;Uq^FDo13Qyt0Ps&56$`D0$6P?{D%lrTqMIO}U|H>VT%Un96!%x?MPK zet1|`5dEJBH=h~Ti=%>ZUxryyTG`k!P{3C&vueFBC32sb0tkH)ZBPvNi{*Y@WO-xZ za&^bZ5#3|Sk}WEH6T3QDuKpG&;P=zR3JH%lj|`uXO=l&Ye-pQNXR*^Sy=cH`v$yC~lWlN{#ORI6f`wQSh+#DC;D&qwL5E`);+xW9_=w zYx(IMBhT!!#$o%~$Z`VVG&%kKfe~AuYjMrP#h9Y7ja3~RruV!0yWfQH0org})@b}i zM_ukD(3B`|x&PqOn*bmWdPXFGXk8vG9Lrh`r+uWUnEDSw8)SXZ-FOK}-m{g={W(Tr z(&)uz$0f}(AqBoOrFrF@CD2%ToqO6jt)8C?g*H{-v)6rt3+ZiQHqS!#e`>@O1!5~V z`w8_^ z!X=XOQ;|k*{`wBLN<8M=`&66Z>Uq!+XIvB|c{=0cTdCv>m{d*+h=}0j4vR0VBCdVm zY8Qn;{M4GN%hgEbMjHnuknc?y*E@MQJxNA-It&V@3>}*AhxGgGIS;WT67`soV9loR zOy>HtpT;X~zd*v3thf@FRB>0Aa#`dR>P*A-ePTlC5uwFDRekfQt$d9)i?R!8+N%cP z&$#B_Xkgb&6Pt43EVk)?+$LvcZ4vdo;st&THSHgqBM*_ zac@qUFm)A;D#iBu=TPFk;sc$!KwMk6&%Nb-`D(S_e?R(vHJ1~uEAtfD31wN38#!XK zOZMFSIz^>k6PLWwIgCAp%uDh*Toct)5P!dUO99qB!p=Ut{vtt|9kG3=CB!%X?d={m zFt_C?#Oeh+BJx;WleTqDyM+}p*>M&hF8)Y;rsfW~O80Orr$7J*+4E)R0|U~Bh}gXA zFFO-D)a!dHYwCiAN|V5b>GZfEG2cpTzjTdS-)h0-_3!UihJumiCy=EbTz<_8}&CEjxDg?4<{#NqA;vCnJ&HU6wDQ%8i#>@qSwKS4@> z?r&r*1TCg03i2Ml9PF5n5w5xmQRx%nY?h^+mW6c?Yt`P36}72r-DKAyNzi) z-{Z=U`>FrDYe@~6*%Nn~Qnf$lsdQeuh5ajjzS5TgE4}G=AXeR%6q8l@!AGOIr?o#< zMW;kghw=lzTl~B<;%5WmE3}A~ld66H@q}?UjFqN;dgI9ms4N~|4rtah5ZJbW631kk z1pVJl1?Dhw(m<+nA^80DzP{7tjJ?}uLh}F9)pbTS)okrhq-ZD_=}n{rK`|65ftMg6 zNEboirB?x^mjp192qL0lp-3mvn-Gv90U@9u5$RQ=ONpUMXwttEudeT|yVk6Ae#|~I zd!E@dd-ii?=0ui)Uvy%SBLgs#-7Z7F7dfHbrHdUEk%RqTQaTu+NplVjk`s(lNy82# zQpS$E*!hT*13d2eTJn@De@$HRtXdvpB_(Nnk-?~TP1?UQp9ksP!ZQTbb&M}C)mlZJ z6`oL;O(EgAm^PM`+txlWYF9F2lo-6k!G+d`UH>qHG{MJGqhPNIf|_op#Om@OB@-+$ zJFzuJ4IBDSn$_Qg3}hU7L-soTNxl8}^>VgL!>z;Xq|X{}n$DH&ql0JbC25V_-s_cT zLf3Bi-fuYKcOQbVFt*H;wofBIGZvO7drPY9$U4NL)22YA5>~@TRZQ^G>+tOJPMJ2* z)7wXokD#Ss0nsVdadiW7(svu8?R^3Kw^-tPe_5rm@T<0M2PYO$QttoVkh(|!u(Mfowl&RSyjJctoyj|l_ccV+~K8DzE zb77W;hu}Y~T;jh~%CZug&kllxgwtOtng2e_%>8|;>$%@tM3l$P}<=XjfC+G|{O&K*bh*e9T! zM=%8I-J7N0wiH|xgX9^};`i471w`+A;)ttH7(xl}A72ddn;MLsc366@K+$VuB&}}e zgoa)GU?42t3{3yVjbDZ%4E9`}+j0tjsQs4tOCQ&1d+)|h;%%$Djc39D>CUm!6;5xLG0@vGD;4Kp5U z15r(7{$8~+z}?({<)fVs&Q=L6(1U*6%NDu=;09nNwcqFr&cta_=>2t80BZnn(gk5< zl+U+x6__-y%II_!6TVNfN^0t_k=##ooK)iEf8cu{kGUC5(iZRmFsa@Ly`9I}NO`C> zOOIfo!Un@JuXrvLm=b)N?Vxe#RfB!>?aNsewrCx-lQC-HZ%aiq@CJ3Cs7z}k!*`Vi zzvaK&7}3(Wi+ctMD&7e_mrU365fLtpY!dU=2)GwABg*@UEL!shJRle-FB>06js*w~zxq?9;G+^!J{ca8k0b{bh7dAB3tyQvL< zkJnZVKK}at{5GwDh5ugSxj&^+_bx-HUwI*~OMNdkc*%h0v|h$x>dip9M;S+vYKRZe zp^IAnF9m3019e39i(|bGtQ7US3M%R5!5D#e?4*F98fBg0g;Mxf0SPPoxTe~)6KOb=Sw+1QyuoS$-;s3g0(BpQX{Py4>Z|3x-S3L z{*#$oR62h*Z1ADOey^x)FO0d(Cd~hR9*=+zQEP)EnV)gs4Sn4x)7n~^!O5>&M6HV` z`g9`_K5c{z3g?s#Ru4({tHw~fKka3BLcbbj=SIKsiBX!@_uO2NQC@X=zkXQ0(NL3b zs6e#l(>E@+rc{n|SFc2(#T2VMo8K0xiFty0`ul139D&)`B!agTdUuj=(f1C+y9Jue zaYuv0nU|&&uGNX*8@IeHju=ebppK#TI-(Eu)4e67%)_TsL30p!OfzAleUdOIsMRo| zvhU3NJ}@8E_|*7oZ;TZDoyj}zt??-NAf(Q8#8>~2yNj(wlWMLM+aKzwOV>$o#md%0 zk>olHcK5M&lY+W~?d7u%q@G82%@~#>AS{h*0Ro`YO^R|DGcUAOzbg$yLO8vI4On*C z4eMJac>NC@M_5(NMDA`R@*u3F+DL4(18HMkk`u>j<@=hka1M}GG{OR$v?xo8vcw~u zR;E)ik7^uaGWNVsTZz}dv07>HCJ)!1^Mp=4etdjTN^>b4>mg|l&>4Z`w~z?gUch6| zBlIPux`mh$5eDrS%}I>pKAEF6ZxJ_w#pjOvXGFnj%;M0K+-wxFuM^SF%4~?WJhCct z4CC!Jy10x8-#-2z)g-$Vb?x!3_4aV+khw_{IhGc!BSyGlW%m9<6PX*qE4B-NWz4w= zO|2qw$LWl{YzDYDO$9;a&vt(PgaPpgKr3%tgp{Wod4Xkb78~ zU&vF@L=`%R;M199ghFe+Pi>YRX8&vzRSPF@#Z-n--*2wB&vZefKVXZ+P})Wkz`E}c zaJOH>cS%oyANdXAzU-?@Q9QL#n7pcfq2OLyFL*9ggbI88-CfahYt&=Z+yK`}KD^Q6 z5PS@{i`>P_3+&?J!gn#D6y(~TD`ln_jR(=Uu`M%p0GlBM_rr;bix&}@-lvQ-1K1J~ z^OtA+ z>;%CH*lX*Z`;@ouX0CH|dv=--NE-K^?-e=7*RiSqC=x<}9kh&Bop%mOW@bj#Hd%&$((kSk22~^24 zNpUSFO*iqeXkZk!LGciGi4@j|mo$ad3O=YSF(|;ng?*c3c?1V-85yLUsZ_n2+piR8 zY9d^P*)TgExnM&C18ye~VJ6N7s*A8YHkw6ZHH!r0&46G%2uHXb63#>m0*v)PebhW^ zT54=-=^*z6=1<>z#Ab4@fLeqWW|~LRMUy`T&px+bitoS{bJyk0bc{s{nYGKHBojD< zc`N14OK^$|$;kyd_wYseYLC6#1Qx+=K>Yip_5%>g0AyNxHvV*yEvaYlG`ICI$0LRM zC*;JoxtAjSz)Uc^jI#tHv!aLi*--9Hz}eNLm%8J05v7B8+XY{J_F6p}XGfR|Y}`%X z_uUBi>2X6le#H5x8}_{;?ZT~WNcqIQhCbP;_+hS`#-fuB4XX@;F1KClFd6feLO*rR zv|kmHkD91{Q?{3jY(EnpPjqXkJY4}l{3!lg7l59?)xuuq zL|_p$HQ68LwC+kVqAGYJgQNr>jw%VsQw(9ruJju#lzzWaFWyvs!}3+C3&zXa2m|N& zg9s-<%u@uL<;M#gSi`oS4IY}y2z{8!%K0}t>IvT?6zG=FVavZ^ng8Cc9>KgyI>@w= z{F|@(-5RgFwLDnjG91=WG1J*uVRfEcZDLH2;YBrZ&TW4E+aKVZYn;l0>P;7d9-j;i zz-Vi<|80V^^zk0u@p08yQv7rIzbGeD>8_#PO`4N*Q~vaw+^8J6p8jt~&a(4^{un{a z`G|Dv-%6A!@~ae)Wa?bSrM$cwg~p&hqSt=L_5W8_Ymo6rNFXNA;)urX)6&`PWFAX% zM<+K4ZcFpoH$CWt-$o78)H0v}iWC!5on$^U>~`vJ)uz}#FFISiR0P##SI8A$Ab&Dn zUMbrQb3w^E2-goSCZ63A^!0hx>Rj>W;KD_P=Sjeh=HIYYvSR}CMq{HA6aS}ZE))TA5uEUMBSt2a}58;oXJPhmu-XuG(!B!zWfE2 z9tI4aPi4hr#=BVqlokNvpDKc$Tre2?F$SocSCCI{cUkkU+QjiFLr*TvKguyGTWsZ( zmKeaTrURyX2!Vb)JUQ+mR&q1#txqaEn(0AJgmtoiZO)bI7hBg^2JL;v2)F0EjOwX> z@!^fM0R2UX+v!-#vs&St2vGERS8!iTmAh-n2|!TjxA5%qBaV`7zr>%sx-NhN0qI>e K)-Ka>jQBsmBcy8p delta 72589 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

L58CA!|_tSxd@z@zg&C z25eG+64}J>U5As<0fvWEu^}e{YKIt^=EQ1J{gB*0wt$^#@$FTD+wX}9BMZOyxq z-!r%+B!VxgARg$twBHRc=KGL&Q&P#XfRCsvw20}RmNB~ohWjDV>C{8&`?on{$1tHo zE;d)o?Zx{Clxq51gMB&lx6E&}M^)tOgQ5<^Fr@zt3(`~cXxljzul#kfbb1!Mz^gaJ z0n!#&>7DpA$wau9`*qm@2+fKOak=oQW8KnPEsJtK#db?=zOIsZTcU z47Rw{f37U|wQWuS)kXJOB`uh!a@TePZzUaFYnLB=1qE)>lf^|We$_2r1x4_Mbkmp* zZn}9y5KX0Q&PBMUS|QFZtF8d`{{(@Np8wG8gql>uPKGz0v?cEi_FHs)z7GB5gMh-g zL>{eHCAP{vPzsA|J68N|OX_WiSI5`)qp`3>M;hq6bg#6pBjEPEbfjIws^Is#cl zXW%S2`l5?id54`Z$yC`K_HnDQdU`H({BY7>lfurq(oA~|`WMDg2mq}Ah0(mW-@Xmq z)Rsh{d!^9L98>44`a8KVV3)JzednJS@x{L}>A$8d0Me{q?OUG1IXXdl!95uiGH4T2 z>Sobdx6767>v@33oiBF~SV_=y@Jq!H?>ngajI>|M+6pn6Ez1Vg{NaO%EElao@e7X_ z{u632Z|UqH?m;wBi(f*h4L=(E6>Fc%ac`$E?0(Cacq91ui)iIg8{Xo2A4I_Uuj+dy zH`2dBN83vKDfVtQxQ>t_?mgpSiH}C$Gqz0h3ppo?WK2Pa_gqo*S9%0gNxZ!j)!``4*V+OV=|;!R-BXT#ls+N2pOS z#`vQsU?9PpMf40w)2M;v7ALL$f?P<#yk%56d-;J)2(&WcIZ6LR4hQpAFP4^=W-34NyTb6F0D`G`U4NsxR6X>qACqSD+;a(9 zl5Ee%cDfGTv!!W(%85*F;?ri$r`&2Qc-p7V0hkfI!0S4?1uV-COlJQ>)?0u@)pdR2 zXNDT-RGJ~A6$GTaL8PTiT1pzpLxUipw1AX^bO}f!0s>M3B1$PO-8IbokN5pP-~0T( z@49B@oZ0*An7#I1d&O_mXix~*^THCP-(E{e~wKFhG-@|P;Z zUE#$spRx8MZgu{={AmeZeXVp?_g#k}3h&&9%tsSRbC^cyVD5KrsIS~PR}ovkpvc)j zKx~mMu3aI?q1a^UmxHDjso*}VeiJ|>v&RTRIxnAY(ujGeaX>K!7Z3*e7<068bPp)o zw-iGwt-(~O1VqU8f8=IZr!d(jF-2OttPQVHXlpDklAvy7gLnXN_w0>Yr7bUy|j-_9n@5^b$2s7U%Y|hF_I2K)oBr5Ln80D z5a@0cj6casYN9WjrMhQv{mHm0_-Xv8H*q=XTB+^LL$Pdu0aJ2c6oh9S)f4&3%P?|i z#ME%vd5^Zrm`QNno(CGwfv&&KLYLniGfdJ!Esoh|^2gS<7=QnW`Z0G)fv<_^K@Z5h zZ0Wcie8DF`5-Q6{DNnok@zz}!@#NPkqj#nt&CSFPxSJr23}lg^)QbsiDaiG_(>=!m zWI4*ZLJJGq(-rMCbbd~_Qf#OV}6rVtZtT zRAljb+WpTQ>=~0PlUGgcS7d)eCq!Yce*WSy`bq^W-+zH`)g)F|Y7CmDkW%7rCU(YjhTGF&0`@(HC zwC09NDW-7&WR!r*3bz_Olns24{8z`c>^WT09Kn)hlaF3xG~7j>2CxPA?3qpBpTD?q zyHN}Z&xfiInZh-0otEK#idIj#=g*tf@EO{m#n1$GYG)NQ3BL+{RSFwH0hkK`5!!Jh z!OW0>aDOF5E8X_UGWM>tmh^>fK4JTgsUv0~X`@Xbx{6NS3!V;&*@zYJGyJ?~yq`#a%3T|7E}r0qL5=nu5^w#`D;ot53I zwo2{zN+A#|i|c^wr0+RSrCzOCe!1d!JTO+F__O?IibzIUp+@8LPMcxr$DKHn>8dQq z?N9<8NFey{(weX|f@YqqWhfHogMRiiziXBonYUQ*daVEOMS}%6v54obl&B7W>ccFo zi-ZZ?HCW5sVpk!%Y_^Ed?*YCSsroV7*K*&%%{H6!z)d&2AINNs^_Khg$$i@#KhN!} z9Onn4SjZrR-UfQcIa0rWPR6-Z~th&!UtMLXkH?= z*&1XY3-T8v8~n>)N&P$-L!lV=pyQrWB0&G$m`3)0!tg0i(C?CdPR=ZW-*cSV+P_sr zIIkaM>u#(1E23BOr6mwNVT~Q%~0PJ`QK$ zAuZ{`9bc-lp}q)?o$roj@Q{QrrPKt6*y!K2TO^^AknpH>xGe}vP0TsMQhCh8mg?lD z$H2$%nG-EP$X84}&`AQ0K9?P}?rE^eqkt2735ONFsJ)Tn{*w?FirtpHbWSp?6_n&IzyJacnt+P5<&%e0q0a{Iy`%`wt_< z@I9va;vjqGRBdEYkT4W94TYFDNOMrq(}1b|(%e+&;ju1|I@{yGfA_=sA$R`nUh$8) zz~!lRz3yB|U{>qH#rpD{T76W<$y!8PE&;>h8SBtvxZ?cj`R;r`4ScVpZ6qYTnyV=h zej5BBJZ;Iihk*zmD40Iv6lfcz&sxzZ4;2y^a(I95F^$D41;FcOBAb7>X&{s(ZJ(W4 z6Z8+2K>YN7$fQ{nZ~3f^PcY9u*EVh4ZE({x{qi$0UvDR&-R{)X#U6J%MiY4bzA6WOSYo8B?hXL37C|cR9Mc0}UD99)1 z%h7(F5?Mr=D_8;nxx7BD6VGH({2HhMC#-KR>MX5i9X_KBda6q{Khh9;uY74878y&J zdgPmzaHHb&=A0F--Y*^LqaDcysqFLgvM(PwA(**oB#84MT0)HEZ(#HFMugT@ zugbvm`wpM~L^kKzKVipNEuev7zplSLguwD#3s3%yY^FwSx;{Atzj8aDmXo=DsJIvM zYjyH*ZYej)Fc~`i2vGbs8!j>afI6nDOcHx_t!tbf@n8y5IIvhl^dJk*%Eo~M+P7*l zNo2*41bvd9ExP{Qse`xAIIyc^S@;)M9uv=x4Ro6e4~*r9=UI+_Srf#nH@3zhwDK6@ zxc!MO@|hpMAgD5z@TxFrmfhjEV(Uln_Jv_>P)o`YP#N4lA%1ZIE8ZEr^gb+yrJs%| zu%>ERxs}d3d)@VY(;$bEoXu%*@piotB)MwDbyM+g$yYUAE1bbokE7xsdD zZwQtg_4Dp{Lwrr|`!;B%ZB=q!Q$3RfJ};Sldu@vYNm%MQK+PdnceiafxISAHR3D1r zLG2Nusq_J_Xpa^R#ZQ=Bzhu)3%KZj0zsaq}XqZi$NAQ&ODerRR`Fb8C9nhdJTt>mZ zb*Q6a_!|WZF+siIjAEX)7PGo83lZm7S-HEAy1Cj|V1}CamRY#aCe8+B0_sS2%pqhT zPeLb;&FySp1PWF$NbhJnvG}`x76#I-ydM)B>Ja%4UVu-9r8aH^#38_j$%?MW8D3Co zmQqd`Uc8OWM1J}lvIeGV%5zq#meS&`zwmmayh~66sqMckd&vK8M@Yj5w&xoy^%xa~ z%xBJbmD?pqMxe+zXYE+Eni2md$*2Y-j$t_$gT(ziRhW~2>%%rfFW)XmB}oLOv)v0e z0%agmibXBl*e%<;ZgOWvdheqZGb-Zuew)pHd<$k_Z#WCYLzX>^AMvWCj^)qii5j6> zdpAbV-|p`3W+#S>1``F$H(p!+aku#^(6gbPDhNc(e%%y0kWvjB%fJFY@1n*eG%NGr zz^q*@Wzp`HoQnM|@qukc&OCTr;pg-xrC~1)xqS1UzYuyEdnNY;id+P=(@efJu5-WJ zw=_mm@q%2t$C7}9WjoSuanX+aIp+x;>-J?*|J%!vEP67Aj&)<8kVXAxQ0StYd&gfR!f=dknDDy%#94#!Q^#}6?A75p zXSw&zy8a_RH9j>zak?;U`Or|@aBMTcgLJ|Joa^_nJ5F5iINh4w;`K}4OB6qA6Ff=~ zw8#za_c7D{l<w#bQ)kS!|;j zUWfkW{OHxqo~@ITk)$yJj*#vgKPVJ;S>WBbv9U3xZ#h9eL?ISuc^Qff3DQ9O@sr>8 zLA#$0%ydCFheAuXvBuYAq?_ckg)q{~(m+;a!RRlove`wY-pa;xZMv}A$`qc;vcxx# zwDE}GcW)fEyD0JHUO8>&v!l5ixtJ6rExbCgby`;!hD>F{<0hv~m z*b5|@>k{}JTAg}Le{<%RB8!DOkUu%81CqTB!&23AkiNG*SIDDlk;FP~u7lrD6QF6w z-(^xkaTJSy=?><6)E;h)_<c6Rh@m2wif`UBfMl|~KcuDX}oSo}Yz(*^SXaQvaYrus3|bP8Gp zp@ZwCfz37BdR(nV9iFv`aZ5mT0ioDoQLk+E=fLq&8^UU@h(&$ih7JqKS7Z~~whgc@ zZAhgqrqTkDrH9Y^>5?NTL(eDO%)7kXuA+4yUde=Dy1M|;hFzi?g=QxMf z)2rMZ%VsD_i0A!UVfzn@W&Qb_*qArOCrYES7w~KEC-L{yG(l7Hq^ulR59Yx(S5bdY zYN6PCW`SbL$4T_xOca^7)3Jbl^0kKsAPFa6ff5<5y-izK#QcL?iVq%2pIP>lyesdGlp?Z+|A( z%ddXQxnw7c$zrZD?JNlCQ6i9*YARgref_il#irTvpDz_txY$(y3j)SHtUj=yFLsWV zc7sTaWxo+y4qKZgG$1L;aT(3|J&qKJykyy@*EwJ!`P$#{q6;Dp0CajSkfhcA{+9l*_|JN8*r)r=O)lJ3 z!`W2No`|ZA>P)SU;Jdia>c`z&+P&R8L?>LsG%$v>-4UB;UjO*$awllpr9;FscF6jT zE@%Pdr+fkB0UbVX{QY~?R=6)!%E|P!uSO^oKc0?gt52=&dZCI2EVB)7Q6iVZDnbGj z?=)`b-Wu4SO10Z-7qxF05OJ}P*>&OiP?X^HfuvgwV=>pXr0E?zN3dS1Y8Svfz7;Ap}`7ONsxJ)MTg&dI`)RV^`i>&ndZ?)iAAye&f^4rBt&VG4D zL2}UXQo)MhyHkhK)~&J}AH*dat?h3}&)4$6kpnVuD4Ju~=L9f%Am%F`Ks_&z-}@5I zX8frzh!%Dy&xU{@@IpgNO`(APpbkNkX2$?D;%U8Ls9?$yzyrH2U~t97=lQldg+-pB zjkL0Bspes$3KAGHSq^stt6S!8Q3 zM*U?ZUy5i_1g)74_nX%(4W)FZFz;AO`-5-Et@;hUT>^i9pADr?z3~zo4v>*ZDfEu3 z+81b?PB@9l%V8r|Vk4gjdGk8P60RkrKaY;YCc2^0E)W|Dr0H<}!GXzA124aX^KPi} z|4wTIx)*7P5wt8{-7DGb62as151y^T!+6VU7QTaONRyY!t1s8+^e#RWBt8v%dIhfk zL9dG%UI7SN`3HPW$>xhvFjI3m(cfv$JLM^u;qh$dLOZYApT?US8o3eU((@e~TvUgUdWbT>n>rC41w0CF9yP+H#z9LR6{rb|i?{?G4MfrDVB67qKR(hBhgB zP9pBJye>~)W|BgqP$)@AfYDojaYWP{gyrIfYLJlD-#EDhcQw1U=8wzQzRnVeH(~N_ z?zG=>66pd5N*i5X-yuEF`IrX22MiC37|*Rc3o`bII4P~g&V%OOFYZa!bv`gOd3s|S z?Kg{N04?33o|NDH-Z7id&+u@e_24A&`lrOFXq5^P@N#+b)dveLwv;lg-`r|IBoe4c)951DKK z6P25lm>{%58kI?+O*7RwtEZ?ysmR7w{`Lv@gc=)&jr?SPpI#HQ$sbQW7)yHNrL3VM zsnAH@u+FIY!H}OIN(`;DvQFRvt(}$+8RnjFfbsQ}V-6mZcKcWhUTw$*{*?6(6Smn*`ryfk8aw=A1MqoZHzZvW! z+R{(C1wc~lX>nSSQ74Bq*e?`VJ^Ijni}`@;q>{Og}v+UkP` zYnDNty=y1SqXt#r)r9izz?}2T$%F)xf&%S^vVawO~&s|YV zys)%E>2YsuQ;Fbuyop!!wAmxG0rGc3DlXtUz$DP|AWhxmIcVv0UkeagmD=%INiKqG*Y%pr^PTPmKjDZZ)mEQ<#Z4-o z&-{ZP!+F?@P3%1&AH|ZDRXpY1K#tLHT0DCvLTO{mQfh z;W7Mj5;P=L7ZC8?<~@ZKsm8Od4#R}lkS?f-jl&VGtSQgQL;Il`7cs}RWj;4_L$WCP zN3_EQhF`b1s;7QhYeOtXjkCLMi5d8Oki>%N_qxL&B@$vV5CgZs^={M+jkX~H)GS_t zXWPsyDrJj%Dx&n!lbeyVF41giq)KF|x}v$7)P%UPg|Y6Ugn46lI+V-^xVJdN$6x$H zv_uGIQf$~OHfCzVk6S0&)lEOM#5qDHC$<;9Vvt&I<=!{kF-I7P*cDDY)$3C#CPvD-0-QEF!8$$0kRgJ2-&QIPTX&h_cG^w|#wmgVE6>kMiH8 zk`A|si=Uz@RMJ6uM|D;!w50eJ59{!v5R*_bnfrmaiJ?UOCHT4X;z;+18 z??01#w(Y9_6_Y)>4Yn1@))JwMEEj}0Mk##5ujUGL* zLd{ICtw2FV1wlv`lYIk?Oq-_wurx!LBwsYKG(KaA6AP#oej=oJDE;vl`XN4EJb01vz)`UTNeN^+Fk!dkE6TF5 zL@3b#VWhG^96mlX0z2jok?6EX`C`EO%FyC(d5PWsLQ)9C@`D+E!lO(8D4Wc(v z$$nw_u<)RqwQ%;;^JjScojFp(xMuc2{@ZhlB4b0UzVjVpoCCcVmo=BY^IYrT-dXlo zIR{z`)47zxrSQnY#M@ZKVJ6Tao1(kIAq5nSp&z|ZI0$TrUl3LHQYgg1p(Q`>JB?up zB-uT=*dPC+<=(3_sjaOY%HyD+9o;4BWt|iB+Y2!2TBo)(Ht4sQZ@pzWZOF6Sh56G5 zga%rEe=~8v+OqA{5E;Haps1I?;)xxOL~8NKQzBT%XcUp^28ZbTV~_iN{1j5zz))T7 zEbFmy2mb5VZMA+U4FJyQ)zF#1?>s|24Lfa8b)+6mA!lgdL8<91y*dm5SCj*aDQ_DP zu+$SS?8lO(`$ldYy?&FMze?mGxjvJt)rCH(vDx}ol_>(n%P$>oPIB__^lna;3bq;$ z-_;E&3ZA;xu@y_m^PW%>=T!X;8G1fIXc8%YR3 zx!W|Buk`a?-hXGyWc*g={I;6B-6K00KHI;gibH-Q8Pk6) ziJzQ&IXSm6Anz|7SkFp;W~du@`0-|x_{(JpxuhSVa#b9@gCk+GizS zZs~mzlIu@P#!t=sTRf&C%U`uwm?Y8UPQ!be+Uc8IDBP-8=hBRmcsN@LT1e#bV5MUD zdy30cs-aEN*_^lTuNgIyFZ6*SU7Y{?xFV(+UROJ<`WxhT6QmaE-*TT`IJ22$vf(E` z!!Yat3(}O2!0#k>Js{_4%QMduYsA}D47ncon(n#<6R}sz!DQQmk=s6~i^mkUVve-+ zI?605kumhR@lo;BhMf)B!quW%i>34!85s;>AP}$reM9L|+@QhK&+jKQKN0x&MmKgu zq|dR%bBVWno2`Dny!&c1k9QbirO#Hc=Zz-4sqGs;8bghy-*JN)rn`S0zmcsH?i?Sx zd|$C)T46Zu<81KN$Jy}fiL=4P-}|5{Y@0W@xE;8-xsgE$h$77hNwrYUSR^S@jYa4c zZXu`j;%g9MvrEe&Z?Myh@kigJX<<=*Z(cJNm2wl6+I38NMZKoUUE<{&w|V=1pZCIB zU2zcfM)ImCVAT`072TRoTzH#@XE>F?XPLMWHMY@w`4l%uSn8ko<(U8A=Kh#dqJ}c&{k*r_0+(-WEV7vpb+v0^A(|<# z&RDEeS~JS_h)Tg4+7IfEd8$!Q$(uOW|9Q64T9q)eJ+nEL3!~w`uFX^`Uw;u)6=pTg zeHBf$x@bW6VC?@S=BHR=l3EVIv4?eWnSYk`RfR3@vEhbVP+XxwuT@O??MFjmCm!5v z*)`PUShB$wk5%ws#YjjtI0t`ljVJn3D5`Gn2GpfC(QjP(|C6XlEJjFi^KR=K&8lny zbg2QZ7fKARac_k(-<)Xyq2D1rWvA`(9yn#BG`$1upXZZZUwW~IeOV~+dmJIt(}GgG zYaflV7-*l8B^tmmW#7O|Pt5a9*z8~(fg54e>`R4HjD*X*Q4U4cQZl3qXvxYV)va^P zMCrrW)FFpfEcfgX>(S|hLWFu)72h=s8=I2Sl@3>QSnDBcDHHW^|imN1Oe;HzRueq<;JOsL$vy;P;UlW6f-Ad2%wzQ9#tDy6Z< zX90rJA6KPp?yFsQ_k;miOH+i8GSTG^U7k9e{%3tHV+<+p;uG&!q6OSKFYM_hzsnGX z24b$lnPqGAKJGY;U8hr3zo7Jg|0_TJA>przB4F<7a~DU@-Lp9vc*!S+!p{{%c<)_U zz^)$zgB=)YLkD^Yq$86!((-gH{6FPZAkimY30AlOcKu`+7?V27rfs$=kd$FnvTzkG zv&*Kt4iz6ZWWZTk0P~oD=ZEWDZ>}6@gIlh=EtKQhf4FN8pFa4dtpsa1TcmjLsUu|f z!&7Cl?U8vJu0y9@xjWgPYZ5`Y`yONiz2=ymmKtIDsru(!ihr(>0x`XhnHpm|FmqlQYIOLO z%(>?Obc($bZ3giXm!7mPQ}C(zi^1t-_p(*CbXYgbc*C#fqX(exd5kU4_&(_id!gk# zKZCgxu_6muY#}117nYzL@r|NN{}r45i+8G5EE1Z2+6pgWJ3BknG9i+!ZEX|N%i1pp zi6LpUqX+xmHV!8e0mqgD$go4}$<>5RW%{Jh@tz@LQ+esd!A{;6!>p>Q;t*vgnDQ|3#i(5EDezJt6 z@qvR9V2*n-vE$B9$JQE+jNQIZ0k_Yr4MvztNpWs300LaWnx_YP8d<)glj~jLIUz=0 zE?c~uW)Exxei{w3g1~#COVKE>j7#><{mHOEq%+;Itp2Zce3aEo&fysiJVscV>o`_m zrob50c@K+DdQBFwBwYJvKAtbX-5Z|$2&F<7*9b<{ACDBHB&9-u?6%ijM`mG6yySLJ zP2I1L$*}*a!NyroZ|wtI#)xg`5NbySaDs9xG_t_|ZK*>UE-#SXminLa7q2(F_qq;N z0pffA(-N7bBIc-9h7HTgMQNgz1~wRo5l3W!;y(OM-xoSGRd$ASwQe^| zI}YAJqo3wS0tDZ^gX>uZZ#fuwqhFT&3oV$TDhF5R9so`0q)t)8m*8=s1CL25s>go*M;MDX1;# z3={iOco0K??&E?O+?)m%<4U96j4n@{PE;Dt*HMfeuJhWtj3uhb0w*>iaDB^_Z4}Y+ zbTj6>FQer5q9qE5BvpMCIhkAf#Q2GE&TR#`&50rv9c?4PI34_T5>PO+MTWrM?`j@_ zb-##L#O`oQm!_C*HWhA1$Rm7ff@lS+KM=GTNaAG7M2w8dlsvl>>Dmv>Oz0O?VoLq^ z%R79Bf<5jQCNti(lL`^0!3C*!&ketEhX37X>r(QTs558KkXS&!E@G5Z&6(8ZY$k&9Y$q5t?L%Hal{= z9n<^1U(jyW9~0wDWa{d>fca&z{3iQvJ~%_$%sV)GC1d8y`z9y%3~c%KZ2R}$5*^CK z4kQ(44Cu-GJ}CkfqxU{Kqfh+0o(Ecphp>w$?Wy1MGyLJdh(;&jKFC|f(C?Exp>Q`1 z6fu)pDBvv!RRMf|zO%*#LVK)a4U@1S87QEG5mJZ^DyUp{Ts;aBcX!=hFv)<77Z(@q zZS(xJ2^%{*33})YWt;m=AuU*Kizw6My_!t-KEr#DC&)Egf^L|hkxn-k!!G$i3i~25 z

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 delta 4576 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 Date: Mon, 4 Dec 2023 10:54:10 +0300 Subject: [PATCH 52/61] Makes synth livers EMP-able again. Woohoo! (#25412) (#958) Fixed typo in synth liver emp_act proc Co-authored-by: MrDerpi <109750345+MrDerpi@users.noreply.github.com> --- modular_skyrat/modules/synths/code/bodyparts/liver.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_skyrat/modules/synths/code/bodyparts/liver.dm b/modular_skyrat/modules/synths/code/bodyparts/liver.dm index 43597e6d422..cd0f6bae037 100644 --- a/modular_skyrat/modules/synths/code/bodyparts/liver.dm +++ b/modular_skyrat/modules/synths/code/bodyparts/liver.dm @@ -9,10 +9,10 @@ maxHealth = 1 * STANDARD_ORGAN_THRESHOLD organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES -/obj/item/organ/internal/lungs/synth/emp_act(severity) +/obj/item/organ/internal/liver/synth/emp_act(severity) . = ..() - if(. & EMP_PROTECT_SELF) + if(!owner || . & EMP_PROTECT_SELF) return if(!COOLDOWN_FINISHED(src, severe_cooldown)) //So we cant just spam emp to kill people. From 583e054580f1da5c29621fec996a5491308429a9 Mon Sep 17 00:00:00 2001 From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com> Date: Mon, 4 Dec 2023 11:08:23 +0300 Subject: [PATCH 53/61] Automatic changelog for PR #960 [ci skip] --- html/changelogs/AutoChangeLog-pr-960.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-960.yml diff --git a/html/changelogs/AutoChangeLog-pr-960.yml b/html/changelogs/AutoChangeLog-pr-960.yml new file mode 100644 index 00000000000..08d41d9ffb0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-960.yml @@ -0,0 +1,4 @@ +author: "KittyNoodle" +delete-after: True +changes: + - bugfix: "Heretics can no longer cast all of their spells while in jaunt" \ No newline at end of file From 003c9a3f53c41d011c97a2051428a7b4a2cd1539 Mon Sep 17 00:00:00 2001 From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com> Date: Mon, 4 Dec 2023 11:09:09 +0300 Subject: [PATCH 54/61] Automatic changelog for PR #959 [ci skip] --- html/changelogs/AutoChangeLog-pr-959.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-959.yml diff --git a/html/changelogs/AutoChangeLog-pr-959.yml b/html/changelogs/AutoChangeLog-pr-959.yml new file mode 100644 index 00000000000..c0b41373680 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-959.yml @@ -0,0 +1,4 @@ +author: "xXPawnStarrXx" +delete-after: True +changes: + - rscadd: "Added sprites for bone spears to match the other bone items." \ No newline at end of file From da9be9fb18b198fe3ed3e43b47bb32a0298f55fa Mon Sep 17 00:00:00 2001 From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com> Date: Mon, 4 Dec 2023 11:09:49 +0300 Subject: [PATCH 55/61] Automatic changelog for PR #958 [ci skip] --- html/changelogs/AutoChangeLog-pr-958.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-958.yml diff --git a/html/changelogs/AutoChangeLog-pr-958.yml b/html/changelogs/AutoChangeLog-pr-958.yml new file mode 100644 index 00000000000..e0e60b92649 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-958.yml @@ -0,0 +1,4 @@ +author: "MrDerpi" +delete-after: True +changes: + - bugfix: "synth livers not emp-able\n/🆑\n\n" \ No newline at end of file From ac0dccb5e10ddd02d6aead6f862a84ac73ca4872 Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Mon, 4 Dec 2023 12:19:55 +0300 Subject: [PATCH 56/61] [MIRROR] Fixes misapplication of `CAN_BE_DIRTY_1` (floors should now spawn dirty) [MDB IGNORE] (#25420) (#966) * Fixes misapplication of `CAN_BE_DIRTY_1` (floors should now spawn dirty) * Update floor.dm --------- Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Co-authored-by: san7890 Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> --- code/game/turfs/open/asteroid.dm | 3 ++- code/game/turfs/open/floor.dm | 2 +- code/game/turfs/open/misc.dm | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/code/game/turfs/open/asteroid.dm b/code/game/turfs/open/asteroid.dm index c15261a9880..b453fb0c4be 100644 --- a/code/game/turfs/open/asteroid.dm +++ b/code/game/turfs/open/asteroid.dm @@ -232,7 +232,8 @@ GLOBAL_LIST_EMPTY(dug_up_basalt) /// Exact subtype as parent, just used in ruins to prevent other ruins/chasms from spawning on top of it. /turf/open/misc/asteroid/snow/icemoon/do_not_chasm - turf_flags = CAN_BE_DIRTY_1 | IS_SOLID | NO_RUST | NO_RUINS + flags_1 = CAN_BE_DIRTY_1 + turf_flags = IS_SOLID | NO_RUST | NO_RUINS /turf/open/misc/asteroid/snow/icemoon/do_not_scrape flags_1 = CAN_BE_DIRTY_1 diff --git a/code/game/turfs/open/floor.dm b/code/game/turfs/open/floor.dm index 84d8cab4859..28a60c83ddb 100644 --- a/code/game/turfs/open/floor.dm +++ b/code/game/turfs/open/floor.dm @@ -9,7 +9,7 @@ barefootstep = FOOTSTEP_HARD_BAREFOOT clawfootstep = FOOTSTEP_HARD_CLAW heavyfootstep = FOOTSTEP_GENERIC_HEAVY - flags_1 = CAN_BE_DIRTY_1 | NO_SCREENTIPS_1 + flags_1 = NO_SCREENTIPS_1 | CAN_BE_DIRTY_1 turf_flags = IS_SOLID smoothing_groups = SMOOTH_GROUP_TURF_OPEN + SMOOTH_GROUP_OPEN_FLOOR canSmoothWith = SMOOTH_GROUP_TURF_OPEN + SMOOTH_GROUP_OPEN_FLOOR diff --git a/code/game/turfs/open/misc.dm b/code/game/turfs/open/misc.dm index 6459a29e99b..a704c7f12b1 100644 --- a/code/game/turfs/open/misc.dm +++ b/code/game/turfs/open/misc.dm @@ -5,8 +5,8 @@ name = "coder/mapper fucked up" desc = "report on github please" - flags_1 = NO_SCREENTIPS_1 - turf_flags = CAN_BE_DIRTY_1 | IS_SOLID | NO_RUST + flags_1 = NO_SCREENTIPS_1 | CAN_BE_DIRTY_1 + turf_flags = IS_SOLID | NO_RUST footstep = FOOTSTEP_FLOOR barefootstep = FOOTSTEP_HARD_BAREFOOT From a2d2f582d314254db244ae483c4aa4af8df99be9 Mon Sep 17 00:00:00 2001 From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com> Date: Mon, 4 Dec 2023 12:20:24 +0300 Subject: [PATCH 57/61] Automatic changelog for PR #966 [ci skip] --- html/changelogs/AutoChangeLog-pr-966.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-966.yml diff --git a/html/changelogs/AutoChangeLog-pr-966.yml b/html/changelogs/AutoChangeLog-pr-966.yml new file mode 100644 index 00000000000..6cae956506f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-966.yml @@ -0,0 +1,4 @@ +author: "san7890" +delete-after: True +changes: + - bugfix: "Janitors rejoice (or lament): Floors should now be dirty shift-start.\n/ \\:cl:" \ No newline at end of file From fdae437273975482694b5490d8d5ef54aa71feec Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Mon, 4 Dec 2023 12:23:14 +0300 Subject: [PATCH 58/61] [MIRROR] Moves the new "Turn Target into MMI" verb into a VV dropdown option and rewrites the code around it. [MDB IGNORE] (#964) * Moves the new "Turn Target into MMI" verb into a VV dropdown option and rewrites the code around it. (#80097) --------- Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Co-authored-by: Timberpoes Co-authored-by: Iajret --- code/__DEFINES/vv.dm | 1 + code/modules/admin/admin_verbs.dm | 15 ----- code/modules/mob/living/brain/MMI.dm | 56 +++++++++++++++++++ code/modules/mob/living/carbon/human/human.dm | 27 +++++++++ 4 files changed, 84 insertions(+), 15 deletions(-) diff --git a/code/__DEFINES/vv.dm b/code/__DEFINES/vv.dm index 039533cffa5..133b191e5ec 100644 --- a/code/__DEFINES/vv.dm +++ b/code/__DEFINES/vv.dm @@ -153,6 +153,7 @@ #define VV_HK_SET_SPECIES "setspecies" #define VV_HK_PURRBATION "purrbation" #define VV_HK_APPLY_DNA_INFUSION "apply_dna_infusion" +#define VV_HK_TURN_INTO_MMI "turn_into_mmi" // misc #define VV_HK_SPACEVINE_PURGE "spacevine_purge" diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 979c42b9d79..30bb5ff4ffe 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -248,7 +248,6 @@ GLOBAL_PROTECT(admin_verbs_debug) /client/proc/run_empty_query, /client/proc/SDQL2_query, /client/proc/set_dynex_scale, - /client/proc/spawn_as_mmi, /client/proc/spawn_debug_full_crew, /client/proc/test_cardpack_distribution, /client/proc/test_movable_UI, @@ -1230,17 +1229,3 @@ GLOBAL_PROTECT(admin_verbs_poll) segment.AddComponent(/datum/component/mob_chain, front = previous) previous = segment -/client/proc/spawn_as_mmi(mob/living/carbon/human/target in GLOB.human_list) - set category = "Debug" - set name = "Turn target into MMI" - set desc = "Turns something into an MMI, must be used on humans" - if(!check_rights(R_DEBUG)) - return - if(!ishuman(target)) - return - - var/obj/item/mmi/new_mmi = new(target.loc) - var/obj/item/organ/internal/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) - target_brain.Remove(target) - new_mmi.attackby(target_brain,target) - qdel(target) diff --git a/code/modules/mob/living/brain/MMI.dm b/code/modules/mob/living/brain/MMI.dm index b63ca68d7d7..663da2ee8a8 100644 --- a/code/modules/mob/living/brain/MMI.dm +++ b/code/modules/mob/living/brain/MMI.dm @@ -111,6 +111,62 @@ else return ..() +/** + * Forces target brain into the MMI. Mainly intended for admin purposes, as this allows transfer without a mob or user. + * + * Returns FALSE on failure, TRUE on success. + * + * Arguments: + * * new_brain - Brain to be force-inserted into the MMI. Any calling code should handle proper removal of the brain from the mob, as this proc only forceMoves. + */ +/obj/item/mmi/proc/force_brain_into(obj/item/organ/internal/brain/new_brain) + if(isnull(new_brain)) + stack_trace("Proc called with null brain.") + return FALSE + + if(!istype(new_brain)) + stack_trace("Proc called with invalid type: [new_brain] ([new_brain.type])") + return FALSE + + if(isnull(new_brain.brainmob)) + new_brain.forceMove(src) + brain = new_brain + brain.organ_flags |= ORGAN_FROZEN + name = "[initial(name)]: [copytext(new_brain.name, 1, -8)]" + update_appearance() + return TRUE + + new_brain.forceMove(src) + + var/mob/living/brain/new_brain_brainmob = new_brain.brainmob + if(!new_brain_brainmob.key && !new_brain.decoy_override) + new_brain_brainmob.notify_ghost_cloning("Someone has put your brain in a MMI!", source = src) + + set_brainmob(new_brain_brainmob) + new_brain.brainmob = null + brainmob.forceMove(src) + brainmob.container = src + + var/fubar_brain = new_brain.suicided || HAS_TRAIT(brainmob, TRAIT_SUICIDED) + if(!fubar_brain && !(new_brain.organ_flags & ORGAN_FAILING)) + brainmob.set_stat(CONSCIOUS) + + brainmob.reset_perspective() + brain = new_brain + brain.organ_flags |= ORGAN_FROZEN + + name = "[initial(name)]: [brainmob.real_name]" + + update_appearance() + if(istype(brain, /obj/item/organ/internal/brain/alien)) + braintype = "Xenoborg" + else + braintype = "Cyborg" + + SSblackbox.record_feedback("amount", "mmis_filled", 1) + + return TRUE + /obj/item/mmi/attack_self(mob/user) if(!brain) radio.set_on(!radio.is_on()) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 33f2925d19e..c0900ed5a33 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -789,6 +789,7 @@ VV_DROPDOWN_OPTION(VV_HK_SET_SPECIES, "Set Species") VV_DROPDOWN_OPTION(VV_HK_PURRBATION, "Toggle Purrbation") VV_DROPDOWN_OPTION(VV_HK_APPLY_DNA_INFUSION, "Apply DNA Infusion") + VV_DROPDOWN_OPTION(VV_HK_TURN_INTO_MMI, "Turn into MMI") /mob/living/carbon/human/vv_do_topic(list/href_list) . = ..() @@ -889,6 +890,32 @@ to_chat(usr, "Failed to apply DNA Infusion to [src].") log_admin("[key_name(usr)] failed to apply a DNA Infusion to [key_name(src)].") + if(href_list[VV_HK_TURN_INTO_MMI]) + if(!check_rights(R_DEBUG)) + return + + var/result = input(usr, "This will delete the mob, are you sure?", "Turn into MMI") in list("Yes", "No") + if(result != "Yes") + return + + var/obj/item/organ/internal/brain/target_brain = get_organ_slot(ORGAN_SLOT_BRAIN) + + if(isnull(target_brain)) + to_chat(usr, "This mob has no brain to insert into an MMI.") + return + + var/obj/item/mmi/new_mmi = new(get_turf(src)) + + target_brain.Remove(src) + new_mmi.force_brain_into(target_brain) + + to_chat(usr, "Turned [src] into an MMI.") + log_admin("[key_name(usr)] turned [key_name_and_tag(src)] into an MMI.") + + qdel(src) + + + /mob/living/carbon/human/limb_attack_self() var/obj/item/bodypart/arm = hand_bodyparts[active_hand_index] if(arm) From 25f222c8cf1f9fb75d0e4ac8553474992613926c Mon Sep 17 00:00:00 2001 From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com> Date: Mon, 4 Dec 2023 12:30:01 +0300 Subject: [PATCH 59/61] Automatic changelog for PR #964 [ci skip] --- html/changelogs/AutoChangeLog-pr-964.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-964.yml diff --git a/html/changelogs/AutoChangeLog-pr-964.yml b/html/changelogs/AutoChangeLog-pr-964.yml new file mode 100644 index 00000000000..35ce311692d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-964.yml @@ -0,0 +1,4 @@ +author: "Timberpoes" +delete-after: True +changes: + - admin: "Removed the \"Turn Target into MMI\" right click context menu verb entirely, and instead added the same command as a VV dropdown on human mobs." \ No newline at end of file From bfffddc2b90f3e480f0afb5ad9bc3d6b1c7765e0 Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Mon, 4 Dec 2023 12:59:50 +0300 Subject: [PATCH 60/61] [MIRROR] Bumps compile to 515 [MDB IGNORE] (#25257) (#926) * Bumps compile to 515 (#79134) ## About The Pull Request LSP supports it, let's GOOOOOO I've removed the 515 tests since they're stable, alongside the libcall wrapper. left the rustgcall wrapper cause yaknow memes Just removed all the 515 and 514 particular define wrappers. gaming ## Changelog :cl: server: Minimum compile version has been bumped to 515. clients still support 514 but we're gonna start using 515 restricted features for serverside now. /:cl: --------- * Bumps compile to 515 * Fixes a TGS regression in its API --------- Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com> Co-authored-by: GoldenAlpharex --- .github/alternate_byond_versions.txt | 2 - .tgs.yml | 2 +- code/__DEFINES/_helpers.dm | 9 ---- code/__HELPERS/_auxtools_api.dm | 6 +-- code/__HELPERS/nameof.dm | 4 -- code/__byond_version_compat.dm | 48 +++---------------- code/_experiments.dm | 30 ++++-------- code/controllers/globals.dm | 9 +++- code/controllers/subsystem/garbage.dm | 37 +++----------- code/datums/callback.dm | 12 ----- code/datums/datum.dm | 7 --- code/datums/json_savefile.dm | 6 --- code/game/objects/objs.dm | 2 + code/game/world.dm | 6 +-- .../view_variables/reference_tracking.dm | 2 - code/modules/clothing/outfits/vv_outfit.dm | 3 -- code/modules/logging/log_entry.dm | 4 -- code/modules/mob/mob.dm | 1 + code/modules/unit_tests/cardboard_cutouts.dm | 2 - .../unit_tests/find_reference_sanity.dm | 18 ++----- dependencies.sh | 6 +-- 21 files changed, 46 insertions(+), 170 deletions(-) diff --git a/.github/alternate_byond_versions.txt b/.github/alternate_byond_versions.txt index 9a21320ab17..7b50af46885 100644 --- a/.github/alternate_byond_versions.txt +++ b/.github/alternate_byond_versions.txt @@ -5,5 +5,3 @@ # Format is version: map # Example: # 500.1337: runtimestation - -515.1603: runtimestation diff --git a/.tgs.yml b/.tgs.yml index b012bdffe23..bb6077faaab 100644 --- a/.tgs.yml +++ b/.tgs.yml @@ -3,7 +3,7 @@ version: 1 # The BYOND version to use (kept in sync with dependencies.sh by the "TGS Test Suite" CI job) # Must be interpreted as a string, keep quoted -byond: "514.1588" +byond: "515.1620" # Folders to create in "/Configuration/GameStaticFiles/" static_files: # Config directory should be static diff --git a/code/__DEFINES/_helpers.dm b/code/__DEFINES/_helpers.dm index c6a5b860e9a..f1b1b21df33 100644 --- a/code/__DEFINES/_helpers.dm +++ b/code/__DEFINES/_helpers.dm @@ -25,17 +25,8 @@ } \ sleep(time); -#ifdef EXPERIMENT_515_DONT_CACHE_REF /// Takes a datum as input, returns its ref string #define text_ref(datum) ref(datum) -#else -/// Takes a datum as input, returns its ref string, or a cached version of it -/// This allows us to cache \ref creation, which ensures it'll only ever happen once per datum, saving string tree time -/// It is slightly less optimal then a []'d datum, but the cost is massively outweighed by the potential savings -/// It will only work for datums mind, for datum reasons -/// : because of the embedded typecheck -#define text_ref(datum) (isdatum(datum) ? (datum:cached_ref ||= "\ref[datum]") : ("\ref[datum]")) -#endif // Refs contain a type id within their string that can be used to identify byond types. // Custom types that we define don't get a unique id, but this is useful for identifying diff --git a/code/__HELPERS/_auxtools_api.dm b/code/__HELPERS/_auxtools_api.dm index 8dbd58f2eed..0117ded4c51 100644 --- a/code/__HELPERS/_auxtools_api.dm +++ b/code/__HELPERS/_auxtools_api.dm @@ -10,7 +10,7 @@ GLOBAL_PROTECT(auxtools_initialized) }\ if (GLOB.auxtools_initialized[LIB] != AUXTOOLS_FULL_INIT) {\ if (fexists(LIB)) {\ - var/string = LIBCALL(LIB,"auxtools_init")();\ + var/string = call_ext(LIB,"auxtools_init")();\ if(findtext(string, "SUCCESS")) {\ GLOB.auxtools_initialized[LIB] = AUXTOOLS_FULL_INIT;\ } else {\ @@ -23,13 +23,13 @@ GLOBAL_PROTECT(auxtools_initialized) #define AUXTOOLS_SHUTDOWN(LIB)\ if (GLOB.auxtools_initialized[LIB] == AUXTOOLS_FULL_INIT && fexists(LIB)){\ - LIBCALL(LIB,"auxtools_shutdown")();\ + call_ext(LIB,"auxtools_shutdown")();\ GLOB.auxtools_initialized[LIB] = AUXTOOLS_PARTIAL_INIT;\ }\ #define AUXTOOLS_FULL_SHUTDOWN(LIB)\ if (GLOB.auxtools_initialized[LIB] && fexists(LIB)){\ - LIBCALL(LIB,"auxtools_full_shutdown")();\ + call_ext(LIB,"auxtools_full_shutdown")();\ GLOB.auxtools_initialized[LIB] = FALSE;\ } diff --git a/code/__HELPERS/nameof.dm b/code/__HELPERS/nameof.dm index 7cd5777f465..5a2fd60e710 100644 --- a/code/__HELPERS/nameof.dm +++ b/code/__HELPERS/nameof.dm @@ -8,8 +8,4 @@ /** * NAMEOF that actually works in static definitions because src::type requires src to be defined */ -#if DM_VERSION >= 515 #define NAMEOF_STATIC(datum, X) (nameof(type::##X)) -#else -#define NAMEOF_STATIC(datum, X) (#X || ##datum.##X) -#endif diff --git a/code/__byond_version_compat.dm b/code/__byond_version_compat.dm index 4cf6c13654b..645499db65b 100644 --- a/code/__byond_version_compat.dm +++ b/code/__byond_version_compat.dm @@ -1,52 +1,21 @@ // This file contains defines allowing targeting byond versions newer than the supported //Update this whenever you need to take advantage of more recent byond features -#define MIN_COMPILER_VERSION 514 -#define MIN_COMPILER_BUILD 1556 +#define MIN_COMPILER_VERSION 515 +#define MIN_COMPILER_BUILD 1609 #if (DM_VERSION < MIN_COMPILER_VERSION || DM_BUILD < MIN_COMPILER_BUILD) && !defined(SPACEMAN_DMM) //Don't forget to update this part #error Your version of BYOND is too out-of-date to compile this project. Go to https://secure.byond.com/download and update. -#error You need version 514.1556 or higher -#endif - -#if (DM_VERSION == 514 && DM_BUILD > 1575 && DM_BUILD <= 1577) -#error Your version of BYOND currently has a crashing issue that will prevent you from running Dream Daemon test servers. -#error We require developers to test their content, so an inability to test means we cannot allow the compile. -#error Please consider downgrading to 514.1575 or lower. +#error You need version 515.1609 or higher #endif // Keep savefile compatibilty at minimum supported level -#if DM_VERSION >= 515 /savefile/byond_version = MIN_COMPILER_VERSION -#endif - -// 515 split call for external libraries into call_ext -#if DM_VERSION < 515 -#define LIBCALL call -#else -#define LIBCALL call_ext -#endif -// So we want to have compile time guarantees these methods exist on local type, unfortunately 515 killed the .proc/procname and .verb/verbname syntax so we have to use nameof() +// So we want to have compile time guarantees these methods exist on local type +// We use wrappers for this in case some part of the api ever changes, and to make their function more clear // For the record: GLOBAL_VERB_REF would be useless as verbs can't be global. -#if DM_VERSION < 515 - -/// Call by name proc references, checks if the proc exists on either this type or as a global proc. -#define PROC_REF(X) (.proc/##X) -/// Call by name verb references, checks if the verb exists on either this type or as a global verb. -#define VERB_REF(X) (.verb/##X) - -/// Call by name proc reference, checks if the proc exists on either the given type or as a global proc -#define TYPE_PROC_REF(TYPE, X) (##TYPE.proc/##X) -/// Call by name verb reference, checks if the verb exists on either the given type or as a global verb -#define TYPE_VERB_REF(TYPE, X) (##TYPE.verb/##X) - -/// Call by name proc reference, checks if the proc is an existing global proc -#define GLOBAL_PROC_REF(X) (/proc/##X) - -#else - /// Call by name proc references, checks if the proc exists on either this type or as a global proc. #define PROC_REF(X) (nameof(.proc/##X)) /// Call by name verb references, checks if the verb exists on either this type or as a global verb. @@ -60,16 +29,11 @@ /// Call by name proc reference, checks if the proc is an existing global proc #define GLOBAL_PROC_REF(X) (/proc/##X) -#endif - -#if (DM_VERSION == 515) /// fcopy will crash on 515 linux if given a non-existant file, instead of returning 0 like on 514 linux or 515 windows /// var case matches documentation for fcopy. /world/proc/__fcopy(Src, Dst) if (istext(Src) && !fexists(Src)) return 0 return fcopy(Src, Dst) - -#define fcopy(Src, Dst) world.__fcopy(Src, Dst) -#endif +#define fcopy(Src, Dst) world.__fcopy(Src, Dst) diff --git a/code/_experiments.dm b/code/_experiments.dm index dfb7ec0a167..8cc5edb429c 100644 --- a/code/_experiments.dm +++ b/code/_experiments.dm @@ -3,32 +3,20 @@ // Any flag you see here can be flipped with the `-D` CLI argument. // For example, if you want to enable EXPERIMENT_MY_COOL_FEATURE, compile with -DEXPERIMENT_MY_COOL_FEATURE -// EXPERIMENT_515_QDEL_HARD_REFERENCE -// - Hold a hard reference for qdeleted items, and check ref_count, rather than using refs. Requires 515+. - -// EXPERIMENT_515_DONT_CACHE_REF -// - Avoids `text_ref` caching, aided by improvements to ref() speed in 515. +// EXPERIMENT_MY_COOL_FEATURE +// - Does something really cool, just so neat, absolutely banging, gaming and chill #if DM_VERSION < 515 -// You can't X-macro custom names :( -#ifdef EXPERIMENT_515_QDEL_HARD_REFERENCE -#warn EXPERIMENT_515_QDEL_HARD_REFERENCE is only available on 515+ -#undef EXPERIMENT_515_QDEL_HARD_REFERENCE -#endif - -#ifdef EXPERIMENT_515_DONT_CACHE_REF -#warn EXPERIMENT_515_DONT_CACHE_REF is only available on 515+ -#undef EXPERIMENT_515_DONT_CACHE_REF -#endif - + // You can't X-macro custom names :( + #ifdef EXPERIMENT_MY_COOL_FEATURE + #warn EXPERIMENT_MY_COOL_FEATURE is only available on 515+ + #undef EXPERIMENT_MY_COOL_FEATURE + #endif #elif defined(UNIT_TESTS) - -#define EXPERIMENT_515_QDEL_HARD_REFERENCE -#define EXPERIMENT_515_DONT_CACHE_REF - + #define EXPERIMENT_MY_COOL_FEATURE #endif #if DM_VERSION >= 516 -#error "Remove all 515 experiments" + #error "Remove all 515 experiments" #endif diff --git a/code/controllers/globals.dm b/code/controllers/globals.dm index 72b00c7d868..365fdab921d 100644 --- a/code/controllers/globals.dm +++ b/code/controllers/globals.dm @@ -14,7 +14,14 @@ GLOBAL_REAL(GLOB, /datum/controller/global_vars) GLOB = src var/datum/controller/exclude_these = new - gvars_datum_in_built_vars = exclude_these.vars + list(NAMEOF(src, gvars_datum_protected_varlist), NAMEOF(src, gvars_datum_in_built_vars), NAMEOF(src, gvars_datum_init_order)) + // I know this is dumb but the nested vars list hangs a ref to the datum. This fixes that + var/list/controller_vars = exclude_these.vars.Copy() + controller_vars["vars"] = null + gvars_datum_in_built_vars = controller_vars + list(NAMEOF(src, gvars_datum_protected_varlist), NAMEOF(src, gvars_datum_in_built_vars), NAMEOF(src, gvars_datum_init_order)) + +#if DM_VERSION >= 515 && DM_BUILD > 1620 + #warn datum.vars hanging a ref should now be fixed, there should be no reason to remove the vars list from our controller's vars list anymore +#endif QDEL_IN(exclude_these, 0) //signal logging isn't ready Initialize() diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm index d21e2da97d2..66d3f2e5e15 100644 --- a/code/controllers/subsystem/garbage.dm +++ b/code/controllers/subsystem/garbage.dm @@ -145,12 +145,6 @@ SUBSYSTEM_DEF(garbage) pass_counts[i] = 0 fail_counts[i] = 0 -#ifdef EXPERIMENT_515_QDEL_HARD_REFERENCE -// 1 from the hard reference in the queue, and 1 from the variable used before this -#define IS_DELETED(datum, _) (refcount(##datum) == 2) -#else -#define IS_DELETED(datum, gcd_at_time) (isnull(##datum) || ##datum.gc_destroyed != gcd_at_time) -#endif /datum/controller/subsystem/garbage/proc/HandleQueue(level = GC_QUEUE_FILTER) if (level == GC_QUEUE_FILTER) @@ -168,7 +162,7 @@ SUBSYSTEM_DEF(garbage) lastlevel = level - //We do this rather then for(var/refID in queue) because that sort of for loop copies the whole list. + //We do this rather then for(var/list/ref_info in queue) because that sort of for loop copies the whole list. //Normally this isn't expensive, but the gc queue can grow to 40k items, and that gets costly/causes overrun. for (var/i in 1 to length(queue)) var/list/L = queue[i] @@ -183,17 +177,11 @@ SUBSYSTEM_DEF(garbage) break // Everything else is newer, skip them count++ -#ifdef EXPERIMENT_515_QDEL_HARD_REFERENCE var/datum/D = L[GC_QUEUE_ITEM_REF] -#else - var/GCd_at_time = L[GC_QUEUE_ITEM_GCD_DESTROYED] - var/refID = L[GC_QUEUE_ITEM_REF] - var/datum/D - D = locate(refID) -#endif - - if (IS_DELETED(D, GCd_at_time)) // So if something else coincidently gets the same ref, it's not deleted by mistake + // 1 from the hard reference in the queue, and 1 from the variable used before this + // If that's all we've got, send er off + if (refcount(D) == 2) ++gcedlasttick ++totalgcs pass_counts[level]++ @@ -228,10 +216,9 @@ SUBSYSTEM_DEF(garbage) var/datum/qdel_item/I = items[type] var/message = "## TESTING: GC: -- [text_ref(D)] | [type] was unable to be GC'd --" -#if DM_VERSION >= 515 message = "[message] (ref count of [refcount(D)])" -#endif log_world(message) + var/detail = D.dump_harddel_info() if(detail) LAZYADD(I.extra_details, detail) @@ -270,8 +257,6 @@ SUBSYSTEM_DEF(garbage) queue.Cut(1,count+1) count = 0 -#undef IS_DELETED - /datum/controller/subsystem/garbage/proc/Queue(datum/D, level = GC_QUEUE_FILTER) if (isnull(D)) return @@ -280,21 +265,11 @@ SUBSYSTEM_DEF(garbage) return var/queue_time = world.time -#ifdef EXPERIMENT_515_QDEL_HARD_REFERENCE - var/refid = D if (D.gc_destroyed <= 0) D.gc_destroyed = queue_time -#else - var/refid = text_ref(D) - var/static/uid = 0 - if (D.gc_destroyed <= 0) - uid = WRAP(uid+1, 1, SHORT_REAL_LIMIT - 1) - D.gc_destroyed = uid -#endif var/list/queue = queues[level] - - queue[++queue.len] = list(queue_time, refid, D.gc_destroyed) // not += for byond reasons + queue[++queue.len] = list(queue_time, D, D.gc_destroyed) // not += for byond reasons //this is mainly to separate things profile wise. /datum/controller/subsystem/garbage/proc/HardDelete(datum/D) diff --git a/code/datums/callback.dm b/code/datums/callback.dm index 026762d58f7..cf90582115d 100644 --- a/code/datums/callback.dm +++ b/code/datums/callback.dm @@ -104,12 +104,6 @@ if (!object) return -#if DM_VERSION <= 514 - if(istext(object) && object != GLOBAL_PROC) - to_chat(usr, "[object] may be an external library. Calling external libraries is disallowed.", confidential = TRUE) - return -#endif - var/list/calling_arguments = arguments if (length(args)) if (length(arguments)) @@ -147,12 +141,6 @@ if (!object) return -#if DM_VERSION <= 514 - if(istext(object) && object != GLOBAL_PROC) - to_chat(usr, "[object] may be an external library. Calling external libraries is disallowed.", confidential = TRUE) - return -#endif - var/list/calling_arguments = arguments if (length(args)) if (length(arguments)) diff --git a/code/datums/datum.dm b/code/datums/datum.dm index 75605917ef8..a0fcd94c89e 100644 --- a/code/datums/datum.dm +++ b/code/datums/datum.dm @@ -44,13 +44,6 @@ /// Datum level flags var/datum_flags = NONE -#ifndef EXPERIMENT_515_DONT_CACHE_REF - /// A cached version of our \ref - /// The brunt of \ref costs are in creating entries in the string tree (a tree of immutable strings) - /// This avoids doing that more then once per datum by ensuring ref strings always have a reference to them after they're first pulled - var/cached_ref -#endif - /// A weak reference to another datum var/datum/weakref/weak_reference diff --git a/code/datums/json_savefile.dm b/code/datums/json_savefile.dm index 69e5a2ef7cf..08f8cf2d616 100644 --- a/code/datums/json_savefile.dm +++ b/code/datums/json_savefile.dm @@ -98,15 +98,9 @@ GENERAL_PROTECT_DATUM(/datum/json_savefile) var/file_name = "[account_name ? "[account_name]_" : ""]preferences_[time2text(world.timeofday, "MMM_DD_YYYY_hh-mm-ss")].json" var/temporary_file_storage = "data/preferences_export_working_directory/[file_name]" -#if DM_VERSION >= 515 if(!text2file(json_encode(tree, JSON_PRETTY_PRINT), temporary_file_storage)) tgui_alert(requester, "Failed to export preferences to JSON! You might need to try again later.", "Export Preferences JSON") return -#else - if(!text2file(json_encode(tree), temporary_file_storage)) - tgui_alert(requester, "Failed to export preferences to JSON! You might need to try again later.", "Export Preferences JSON") - return -#endif var/exportable_json = file(temporary_file_storage) diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 8695845bf47..d9f22e2cf4f 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -191,6 +191,8 @@ GLOBAL_LIST_EMPTY(objects_by_id_tag) return /mob/proc/set_machine(obj/O) + if(QDELETED(src) || QDELETED(O)) + return if(machine) unset_machine() machine = O diff --git a/code/game/world.dm b/code/game/world.dm index d701f967954..43e01895575 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -342,7 +342,7 @@ GLOBAL_VAR(restart_counter) AUXTOOLS_FULL_SHUTDOWN(AUXLUA) var/debug_server = world.GetConfig("env", "AUXTOOLS_DEBUG_DLL") if (debug_server) - LIBCALL(debug_server, "auxtools_shutdown")() + call_ext(debug_server, "auxtools_shutdown")() /world/Del() auxcleanup() @@ -470,14 +470,14 @@ GLOBAL_VAR(restart_counter) else CRASH("Unsupported platform: [system_type]") - var/init_result = LIBCALL(library, "init")("block") + var/init_result = call_ext(library, "init")("block") if (init_result != "0") CRASH("Error initializing byond-tracy: [init_result]") /world/proc/init_debugger() var/dll = GetConfig("env", "AUXTOOLS_DEBUG_DLL") if (dll) - LIBCALL(dll, "auxtools_init")() + call_ext(dll, "auxtools_init")() enable_debugging() /world/Profile(command, type, format) diff --git a/code/modules/admin/view_variables/reference_tracking.dm b/code/modules/admin/view_variables/reference_tracking.dm index 9cb661d2fee..645467bf0fe 100644 --- a/code/modules/admin/view_variables/reference_tracking.dm +++ b/code/modules/admin/view_variables/reference_tracking.dm @@ -26,9 +26,7 @@ var/starting_time = world.time -#if DM_VERSION >= 515 log_reftracker("Refcount for [type]: [refcount(src)]") -#endif //Time to search the whole game for our ref DoSearchVar(GLOB, "GLOB", search_time = starting_time) //globals diff --git a/code/modules/clothing/outfits/vv_outfit.dm b/code/modules/clothing/outfits/vv_outfit.dm index 1740094fe3d..ec459634115 100644 --- a/code/modules/clothing/outfits/vv_outfit.dm +++ b/code/modules/clothing/outfits/vv_outfit.dm @@ -48,9 +48,6 @@ //Temporary/Internal stuff, do not copy these. var/static/list/ignored_vars = list( NAMEOF(item, animate_movement), -#ifndef EXPERIMENT_515_DONT_CACHE_REF - NAMEOF(item, cached_ref), -#endif NAMEOF(item, datum_flags), NAMEOF(item, fingerprintslast), NAMEOF(item, layer), diff --git a/code/modules/logging/log_entry.dm b/code/modules/logging/log_entry.dm index 778c1ad35c7..3de4e543d1a 100644 --- a/code/modules/logging/log_entry.dm +++ b/code/modules/logging/log_entry.dm @@ -74,11 +74,7 @@ GENERAL_PROTECT_DATUM(/datum/log_entry) output += "[uppertext(category)]: [message]" if(flags & ENTRY_USE_DATA_W_READABLE) -#if DM_VERSION >= 515 output += json_encode(data, JSON_PRETTY_PRINT) -#else - output += json_encode(data) -#endif return output #define MANUAL_JSON_ENTRY(list, key, value) list.Add("\"[key]\":[(!isnull(value)) ? json_encode(value) : "null"]") diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 301e6db16e3..0747d337b2d 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -30,6 +30,7 @@ else if(ckey) stack_trace("Mob without client but with associated ckey, [ckey], has been deleted.") + unset_machine() remove_from_mob_list() remove_from_dead_mob_list() remove_from_alive_mob_list() diff --git a/code/modules/unit_tests/cardboard_cutouts.dm b/code/modules/unit_tests/cardboard_cutouts.dm index f706f8c95b6..ce7066de1ca 100644 --- a/code/modules/unit_tests/cardboard_cutouts.dm +++ b/code/modules/unit_tests/cardboard_cutouts.dm @@ -11,11 +11,9 @@ nukie_cutout.push_over() test_screenshot("nukie_cutout_pushed", getFlatIcon(nukie_cutout)) -#if DM_VERSION >= 515 // This is the only reason we're testing xenomorphs. // Making a custom subtype with direct_icon is hacky. ASSERT(!isnull(/datum/cardboard_cutout/xenomorph_maid::direct_icon)) -#endif var/obj/item/cardboard_cutout/xenomorph/xenomorph_cutout = new test_screenshot("xenomorph_cutout", getFlatIcon(xenomorph_cutout)) diff --git a/code/modules/unit_tests/find_reference_sanity.dm b/code/modules/unit_tests/find_reference_sanity.dm index 8bd2a14dbf5..0dda1559819 100644 --- a/code/modules/unit_tests/find_reference_sanity.dm +++ b/code/modules/unit_tests/find_reference_sanity.dm @@ -27,11 +27,10 @@ SSgarbage.should_save_refs = TRUE //Sanity check - #if DM_VERSION >= 515 var/refcount = refcount(victim) TEST_ASSERT_EQUAL(refcount, 3, "Should be: test references: 0 + baseline references: 3 (victim var,loc,allocated list)") - #endif victim.DoSearchVar(testbed, "Sanity Check", search_time = 1) //We increment search time to get around an optimization + TEST_ASSERT(!victim.found_refs.len, "The ref-tracking tool found a ref where none existed") SSgarbage.should_save_refs = FALSE @@ -45,10 +44,8 @@ testbed.test_list += victim testbed.test_assoc_list["baseline"] = victim - #if DM_VERSION >= 515 var/refcount = refcount(victim) TEST_ASSERT_EQUAL(refcount, 6, "Should be: test references: 3 + baseline references: 3 (victim var,loc,allocated list)") - #endif victim.DoSearchVar(testbed, "First Run", search_time = 2) TEST_ASSERT(victim.found_refs["test"], "The ref-tracking tool failed to find a regular value") @@ -66,10 +63,8 @@ testbed.vis_contents += victim testbed.test_assoc_list[victim] = TRUE - #if DM_VERSION >= 515 var/refcount = refcount(victim) TEST_ASSERT_EQUAL(refcount, 6, "Should be: test references: 3 + baseline references: 3 (victim var,loc,allocated list)") - #endif victim.DoSearchVar(testbed, "Second Run", search_time = 3) //This is another sanity check @@ -90,12 +85,11 @@ var/list/to_find_assoc = list(victim) testbed.test_assoc_list["Nesting"] = to_find_assoc - #if DM_VERSION >= 515 var/refcount = refcount(victim) TEST_ASSERT_EQUAL(refcount, 6, "Should be: test references: 3 + baseline references: 3 (victim var,loc,allocated list)") - #endif victim.DoSearchVar(victim, "Third Run Self", search_time = 4) victim.DoSearchVar(testbed, "Third Run Testbed", search_time = 4) + TEST_ASSERT(victim.found_refs["self_ref"], "The ref-tracking tool failed to find a self reference") TEST_ASSERT(victim.found_refs[to_find], "The ref-tracking tool failed to find a nested list entry") TEST_ASSERT(victim.found_refs[to_find_assoc], "The ref-tracking tool failed to find a nested assoc list entry") @@ -108,11 +102,10 @@ //Calm before the storm testbed.test_assoc_list = list(null = victim) - #if DM_VERSION >= 515 var/refcount = refcount(victim) TEST_ASSERT_EQUAL(refcount, 4, "Should be: test references: 1 + baseline references: 3 (victim var,loc,allocated list)") - #endif victim.DoSearchVar(testbed, "Fourth Run", search_time = 5) + TEST_ASSERT(testbed.test_assoc_list, "The ref-tracking tool failed to find a null key'd assoc list entry") /datum/unit_test/find_reference_assoc_investigation/Run() @@ -126,11 +119,10 @@ var/list/to_find_null_assoc_nested = list(victim) testbed.test_assoc_list[null] = to_find_null_assoc_nested - #if DM_VERSION >= 515 var/refcount = refcount(victim) TEST_ASSERT_EQUAL(refcount, 5, "Should be: test references: 2 + baseline references: 3 (victim var,loc,allocated list)") - #endif victim.DoSearchVar(testbed, "Fifth Run", search_time = 6) + TEST_ASSERT(victim.found_refs[to_find_in_key], "The ref-tracking tool failed to find a nested assoc list key") TEST_ASSERT(victim.found_refs[to_find_null_assoc_nested], "The ref-tracking tool failed to find a null key'd nested assoc list entry") SSgarbage.should_save_refs = FALSE @@ -150,10 +142,8 @@ for(var/key in global.vars) global_vars[key] = global.vars[key] - #if DM_VERSION >= 515 var/refcount = refcount(victim) TEST_ASSERT_EQUAL(refcount, 5, "Should be: test references: 2 + baseline references: 3 (victim var,loc,allocated list)") - #endif victim.DoSearchVar(global_vars, "Sixth Run", search_time = 7) TEST_ASSERT(victim.found_refs[global_vars], "The ref-tracking tool failed to find a natively global variable") diff --git a/dependencies.sh b/dependencies.sh index 6162b349b51..597f90cd850 100644 --- a/dependencies.sh +++ b/dependencies.sh @@ -4,8 +4,8 @@ #Final authority on what's required to fully build the project # byond version -export BYOND_MAJOR=514 -export BYOND_MINOR=1588 +export BYOND_MAJOR=515 +export BYOND_MINOR=1620 #rust_g git tag export RUST_G_VERSION=3.0.0 @@ -15,7 +15,7 @@ export NODE_VERSION=14 export NODE_VERSION_PRECISE=14.16.1 # SpacemanDMM git tag -export SPACEMAN_DMM_VERSION=suite-1.7.3 +export SPACEMAN_DMM_VERSION=suite-1.8 # Python version for mapmerge and other tools export PYTHON_VERSION=3.9.0 From fdb89a444fe2d0e684814b356d2b4a32cd8512ef Mon Sep 17 00:00:00 2001 From: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com> Date: Mon, 4 Dec 2023 13:01:05 +0300 Subject: [PATCH 61/61] Automatic changelog for PR #926 [ci skip] --- html/changelogs/AutoChangeLog-pr-926.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-926.yml diff --git a/html/changelogs/AutoChangeLog-pr-926.yml b/html/changelogs/AutoChangeLog-pr-926.yml new file mode 100644 index 00000000000..07792393431 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-926.yml @@ -0,0 +1,4 @@ +author: "LemonInTheDark" +delete-after: True +changes: + - server: "Minimum compile version has been bumped to 515. clients still support 514 but we're gonna start using 515 restricted features for serverside now." \ No newline at end of file