diff --git a/citadel.dme b/citadel.dme index 9ba994101ae..303ee5f6c75 100644 --- a/citadel.dme +++ b/citadel.dme @@ -117,11 +117,20 @@ #include "code\__DEFINES\atmospherics\atmospheres.dm" #include "code\__DEFINES\atmospherics\constants.dm" #include "code\__DEFINES\atmospherics\environmental.dm" -#include "code\__DEFINES\atmospherics\flags.dm" #include "code\__DEFINES\atmospherics\gas_strings.dm" #include "code\__DEFINES\atmospherics\gasmixtures.dm" #include "code\__DEFINES\atmospherics\helpers.dm" +#include "code\__DEFINES\atmospherics\machinery.dm" #include "code\__DEFINES\atmospherics\pipes.dm" +#include "code\__DEFINES\atmospherics\gases\flags.dm" +#include "code\__DEFINES\atmospherics\gases\generation.dm" +#include "code\__DEFINES\atmospherics\gases\groups.dm" +#include "code\__DEFINES\atmospherics\gases\ids.dm" +#include "code\__DEFINES\atmospherics\gases\reagents.dm" +#include "code\__DEFINES\atmospherics\gases\visuals.dm" +#include "code\__DEFINES\atmospherics\machinery\alarm.dm" +#include "code\__DEFINES\atmospherics\machinery\scrubber.dm" +#include "code\__DEFINES\atmospherics\machinery\vent.dm" #include "code\__DEFINES\cargo\supply.dm" #include "code\__DEFINES\client\player_flags.dm" #include "code\__DEFINES\client\playtime.dm" @@ -1114,10 +1123,10 @@ #include "code\game\legacy_html_uis\menus.dm" #include "code\game\machinery\_frame.dm" #include "code\game\machinery\_machinery.dm" +#include "code\game\machinery\_machinery_construction.dm" #include "code\game\machinery\_machinery_power.dm" #include "code\game\machinery\adv_med.dm" #include "code\game\machinery\ai_slipper.dm" -#include "code\game\machinery\air_alarm.dm" #include "code\game\machinery\atm_ret_field.dm" #include "code\game\machinery\atmo_control.dm" #include "code\game\machinery\beacon.dm" @@ -1180,12 +1189,6 @@ #include "code\game\machinery\wall_frames.dm" #include "code\game\machinery\washing_machine.dm" #include "code\game\machinery\wishgranter.dm" -#include "code\game\machinery\atmoalter\area_atmos_computer.dm" -#include "code\game\machinery\atmoalter\canister.dm" -#include "code\game\machinery\atmoalter\meter.dm" -#include "code\game\machinery\atmoalter\portable_atmospherics.dm" -#include "code\game\machinery\atmoalter\pump.dm" -#include "code\game\machinery\atmoalter\scrubber.dm" #include "code\game\machinery\camera\camera.dm" #include "code\game\machinery\camera\camera_assembly.dm" #include "code\game\machinery\camera\motion.dm" @@ -1536,7 +1539,6 @@ #include "code\game\objects\items\devices\paicard.dm" #include "code\game\objects\items\devices\pipe_painter.dm" #include "code\game\objects\items\devices\powersink.dm" -#include "code\game\objects\items\devices\scanners.dm" #include "code\game\objects\items\devices\scanners_vr.dm" #include "code\game\objects\items\devices\spy_bug.dm" #include "code\game\objects\items\devices\suit_cooling.dm" @@ -1580,6 +1582,12 @@ #include "code\game\objects\items\robot\robot_items.dm" #include "code\game\objects\items\robot\robot_parts.dm" #include "code\game\objects\items\robot\robot_upgrades.dm" +#include "code\game\objects\items\scanners\atmos.dm" +#include "code\game\objects\items\scanners\health.dm" +#include "code\game\objects\items\scanners\plant.dm" +#include "code\game\objects\items\scanners\reagent.dm" +#include "code\game\objects\items\scanners\slime.dm" +#include "code\game\objects\items\scanners\spectrometer.dm" #include "code\game\objects\items\stacks\fifty_spawner.dm" #include "code\game\objects\items\stacks\marker_beacons.dm" #include "code\game\objects\items\stacks\matter_synth.dm" @@ -2142,7 +2150,7 @@ #include "code\modules\asset_cache\assets\debug\fucky_wucky.dm" #include "code\modules\asset_cache\transports\asset_transport.dm" #include "code\modules\asset_cache\transports\webroot_transport.dm" -#include "code\modules\atmospherics\atmosphere\_atmosphere.dm" +#include "code\modules\atmospherics\atmosphere\atmosphere.dm" #include "code\modules\atmospherics\atmosphere\planet.dm" #include "code\modules\atmospherics\environmental\atom.dm" #include "code\modules\atmospherics\environmental\public.dm" @@ -2160,18 +2168,26 @@ #include "code\modules\atmospherics\environmental\zas\turf.dm" #include "code\modules\atmospherics\environmental\zas\variable_settings.dm" #include "code\modules\atmospherics\environmental\zas\zone.dm" +#include "code\modules\atmospherics\gasmixtures\flow.dm" +#include "code\modules\atmospherics\gasmixtures\gas_data.dm" +#include "code\modules\atmospherics\gasmixtures\gas_generation.dm" #include "code\modules\atmospherics\gasmixtures\gas_mixture.dm" #include "code\modules\atmospherics\gasmixtures\gas_types.dm" +#include "code\modules\atmospherics\gasmixtures\gas_types_hardcoded.dm" #include "code\modules\atmospherics\gasmixtures\immutable_mixtures.dm" #include "code\modules\atmospherics\gasmixtures\reactions.dm" #include "code\modules\atmospherics\gasmixtures\transfer_helpers.dm" +#include "code\modules\atmospherics\gasmixtures\gas_types\core.dm" #include "code\modules\atmospherics\machinery\_atmos_setup.dm" #include "code\modules\atmospherics\machinery\_atmospherics_helpers.dm" +#include "code\modules\atmospherics\machinery\air_alarm.dm" #include "code\modules\atmospherics\machinery\analyzer_hooks.dm" #include "code\modules\atmospherics\machinery\datum_pipe_network.dm" #include "code\modules\atmospherics\machinery\datum_pipeline.dm" #include "code\modules\atmospherics\machinery\machinery.dm" #include "code\modules\atmospherics\machinery\mainspipe.dm" +#include "code\modules\atmospherics\machinery\meter.dm" +#include "code\modules\atmospherics\machinery\components\component.dm" #include "code\modules\atmospherics\machinery\components\binary_devices\algae_generator_vr.dm" #include "code\modules\atmospherics\machinery\components\binary_devices\binary_atmos_base.dm" #include "code\modules\atmospherics\machinery\components\binary_devices\circulator.dm" @@ -2190,6 +2206,7 @@ #include "code\modules\atmospherics\machinery\components\omni_devices\omni_base.dm" #include "code\modules\atmospherics\machinery\components\trinary_devices\filter.dm" #include "code\modules\atmospherics\machinery\components\trinary_devices\mixer.dm" +#include "code\modules\atmospherics\machinery\components\trinary_devices\molar_filter.dm" #include "code\modules\atmospherics\machinery\components\trinary_devices\trinary_base.dm" #include "code\modules\atmospherics\machinery\components\trinary_devices\tvalve.dm" #include "code\modules\atmospherics\machinery\components\unary\cold_sink.dm" @@ -2199,7 +2216,6 @@ #include "code\modules\atmospherics\machinery\components\unary\outlet_injector.dm" #include "code\modules\atmospherics\machinery\components\unary\oxygen_generator.dm" #include "code\modules\atmospherics\machinery\components\unary\portables_connector.dm" -#include "code\modules\atmospherics\machinery\components\unary\retro_pump_and_scrubber.dm" #include "code\modules\atmospherics\machinery\components\unary\unary_base.dm" #include "code\modules\atmospherics\machinery\components\unary\vent_pump.dm" #include "code\modules\atmospherics\machinery\components\unary\vent_scrubber.dm" @@ -2212,6 +2228,12 @@ #include "code\modules\atmospherics\machinery\pipes\tank.dm" #include "code\modules\atmospherics\machinery\pipes\universal.dm" #include "code\modules\atmospherics\machinery\pipes\vent.dm" +#include "code\modules\atmospherics\machinery\portable\area_atmos_computer.dm" +#include "code\modules\atmospherics\machinery\portable\canister.dm" +#include "code\modules\atmospherics\machinery\portable\portable_atmospherics.dm" +#include "code\modules\atmospherics\machinery\portable\powered.dm" +#include "code\modules\atmospherics\machinery\portable\pump.dm" +#include "code\modules\atmospherics\machinery\portable\scrubber.dm" #include "code\modules\automata\__automata.dm" #include "code\modules\automata\_wave.dm" #include "code\modules\automata\explosion.dm" diff --git a/code/__DEFINES/atmospherics/constants.dm b/code/__DEFINES/atmospherics/constants.dm index 1633b1de39d..f2b2a2c7a5d 100644 --- a/code/__DEFINES/atmospherics/constants.dm +++ b/code/__DEFINES/atmospherics/constants.dm @@ -1,11 +1,3 @@ -// Gas moles -/// Moles in a tile after which gases are visible. -#define MOLES_GAS_VISIBLE 0.25 -/// moles_visible * FACTOR_GAS_VISIBLE_MAX = Moles after which gas is at maximum visibility. -#define FACTOR_GAS_VISIBLE_MAX 20 -/// Mole step for alpha updates. This means alpha can update at 0.25, 0.5, 0.75, and so on. -#define MOLES_GAS_VISIBLE_STEP 0.25 - /// Volume, in liters, of a single tile. Y'KNOW WHY THIS IS A CONSTANT? WELL FOR ONE, initial_gas_mix IS MOLES, NOT PERCENTAGES OR PRESSURES. IF YOU TOUCH THIS, YOU BREAK *EVERYTHING*. DON'T TOUCH THIS. /// Exceptions can be made if you're a big boy who knows how this clusterfuck of a ZAS/LINDA hybrid works and have good reason to touch this. #define CELL_VOLUME 2500 diff --git a/code/__DEFINES/atmospherics/flags.dm b/code/__DEFINES/atmospherics/flags.dm deleted file mode 100644 index ee5e62a362a..00000000000 --- a/code/__DEFINES/atmospherics/flags.dm +++ /dev/null @@ -1,13 +0,0 @@ -// /datum/gas/gas_flags flags -/// Is this gas a viable combustion fuel? Ported from XGM variable oxidizer-oxidant combustion system. -#define GAS_FLAG_FUEL (1<<0) -/// Is this gas a viable combustion oxidizer? Ported from XGM variable oxidizer-oxidant combustion system. -#define GAS_FLAG_OXIDIZER (1<<1) -/// Is this gas able to contaminate things like clothing? ZAS phoron contaminent memes. -#define GAS_FLAG_CONTAMINANT (1<<2) -/// Is this gas a valid R-UST fusion fuel? Has NOTHING to do with tg fusion! -#define GAS_FLAG_FUSION_FUEL (1<<3) - -// /turf/var/air_flags flags -/// If this is there, the turf will apply graphics even if air status isn't AIR_STATUS_NORMAL. Otherwise, the turf will have no gas graphics, ever. -#define AIR_FLAG_FORCE_VISUAL (1<<0) diff --git a/code/__DEFINES/atmospherics/gases/flags.dm b/code/__DEFINES/atmospherics/gases/flags.dm new file mode 100644 index 00000000000..a9588f4f451 --- /dev/null +++ b/code/__DEFINES/atmospherics/gases/flags.dm @@ -0,0 +1,29 @@ +//! flags +// /datum/gas/gas_flags flags +/// Is this gas a viable combustion fuel? Ported from XGM variable oxidizer-oxidant combustion system. +#define GAS_FLAG_FUEL (1<<0) +/// Is this gas a viable combustion oxidizer? Ported from XGM variable oxidizer-oxidant combustion system. +#define GAS_FLAG_OXIDIZER (1<<1) +/// Is this gas able to contaminate things like clothing? ZAS phoron contaminent memes. +#define GAS_FLAG_CONTAMINANT (1<<2) +/// Is this gas a valid R-UST fusion fuel? Has NOTHING to do with tg fusion! +#define GAS_FLAG_FUSION_FUEL (1<<3) +/// gas is unknown/alien +#define GAS_FLAG_UNKNOWN (1<<4) +/// gas is core gas, always render & on main filter options. implies [GAS_FLAG_FILTERABLE]. +#define GAS_FLAG_CORE (1<<5) +/// gas is common enough to be filtered by machinery without spectrometry/grouping +#define GAS_FLAG_FILTERABLE (1<<6) +/// gas is highly dangerous, mostly used to know when to *loudly* log as opposed to just log +#define GAS_FLAG_DANGEROUS (1<<7) + +DEFINE_BITFIELD(gas_flags, list( + BITFIELD(GAS_FLAG_FUEL), + BITFIELD(GAS_FLAG_OXIDIZER), + BITFIELD(GAS_FLAG_CONTAMINANT), + BITFIELD(GAS_FLAG_FUSION_FUEL), + BITFIELD(GAS_FLAG_UNKNOWN), + BITFIELD(GAS_FLAG_CORE), + BITFIELD(GAS_FLAG_FILTERABLE), + BITFIELD(GAS_FLAG_DANGEROUS), +)) diff --git a/code/__DEFINES/atmospherics/gases/generation.dm b/code/__DEFINES/atmospherics/gases/generation.dm new file mode 100644 index 00000000000..3b378114e39 --- /dev/null +++ b/code/__DEFINES/atmospherics/gases/generation.dm @@ -0,0 +1,21 @@ +//* Collisions + +/// collision threshold for molar mass on generated gasses +#define GAS_COLLISION_THRESHOLD_MOLAR_MASS 0.09 +/// factor used because rand() doesn't do decimals. +#define GAS_COLLISION_FACTOR_MOLAR_MASS (1 / GAS_COLLISION_THRESHOLD_MOLAR_MASS) + +//* Danger flags + +/// allow oxidizer +#define PROCEDURAL_GAS_ALLOW_OXIDIZER (1<<0) +/// allow fuel +#define PROCEDURAL_GAS_ALLOW_FUEL (1<<1) +/// can be both oxidizer and fuel. !!DANGEROUS!! +#define PROCEDURAL_GAS_ALLOW_UNARY_BURNMIX (1<<2) + +DEFINE_BITFIELD(procedural_gas_flags, list( + BITFIELD(PROCEDURAL_GAS_ALLOW_OXIDIZER), + BITFIELD(PROCEDURAL_GAS_ALLOW_FUEL), + BITFIELD(PROCEDURAL_GAS_ALLOW_UNARY_BURNMIX), +)) diff --git a/code/__DEFINES/atmospherics/gases/groups.dm b/code/__DEFINES/atmospherics/gases/groups.dm new file mode 100644 index 00000000000..697398b08b2 --- /dev/null +++ b/code/__DEFINES/atmospherics/gases/groups.dm @@ -0,0 +1,33 @@ +//! groups +/// Should always and only include gasses that are directly selectable on interfaces. +/// Anything not in here should be in one or more of the other groups. +/// Anything in this group should have the CORE and FILTERABLE flag +/// This should not be a lot of gases! Air alarms, amongst other things, genreate lists for these gases. +#define GAS_GROUP_CORE (1<<0) +/// Should include all non-core gasses. +/// Shows up on misc lists. +#define GAS_GROUP_OTHER (1<<1) +/// Unknown / generated gases +#define GAS_GROUP_UNKNOWN (1<<2) +/// chemicals +#define GAS_GROUP_REAGENT (1<<3) + +/// Total gas groups +#define GAS_GROUP_COUNT 4 + +DEFINE_BITFIELD(gas_groups, list( + BITFIELD(GAS_GROUP_CORE), + BITFIELD(GAS_GROUP_OTHER), + BITFIELD(GAS_GROUP_UNKNOWN), + BITFIELD(GAS_GROUP_REAGENT), +)) + +GLOBAL_REAL_LIST(gas_group_names) = list( + "Core", + "Other", + "Unknown", + "Reagents", +) + +#define GAS_GROUPS_FILTERABLE (GAS_GROUP_UNKNOWN | GAS_GROUP_REAGENT | GAS_GROUP_OTHER) +#define GAS_GROUPS_ALL (GAS_GROUP_CORE | GAS_GROUP_UNKNOWN | GAS_GROUP_OTHER | GAS_GROUP_REAGENT) diff --git a/code/__DEFINES/atmospherics/gases/ids.dm b/code/__DEFINES/atmospherics/gases/ids.dm new file mode 100644 index 00000000000..6e710b4f8da --- /dev/null +++ b/code/__DEFINES/atmospherics/gases/ids.dm @@ -0,0 +1,49 @@ +/** + * !! THESE PREFIXES ARE RESERVED. !! + * !! No touchies. !! + * !! They're used for randomgen !! + * !! and we don't want collisions.!! + * ?? These can be changed a will, ?? + * ?? as they will probably never ?? + * ?? be directly mapped in. ?? + */ +/// prefix reserved for dynamic chemgas later +#define GAS_ID_PREFIX_REAGENTS "r_" +/// random generated gas +#define GAS_ID_PREFIX_PROCGEN "x_" + +/** + * !! Hardcoded Gas IDs !! + * ?? Naming convention: ?? + * ?? Use chemical formula if based off ?? + * ?? of a real gas, otherwise make ?? + * ?? something that doesn't collide ?? + * ?? with the dynamic prefixes that ?? + * ?? makes sense like "fuel", "phoron". ?? + * !! These may not be changed at will. !! + * !! Maps can contain them sometimes, !! + * !! so changing them will break things !! + */ +#define GAS_ID_OXYGEN "o2" +#define GAS_ID_NITROGEN "n2" +#define GAS_ID_CARBON_DIOXIDE "co2" +#define GAS_ID_PHORON "phoron" +#define GAS_ID_VOLATILE_FUEL "fuel" +#define GAS_ID_NITROUS_OXIDE "n2o" +#define GAS_ID_HELIUM "he" +#define GAS_ID_CARBON_MONOXIDE "co" +#define GAS_ID_METHYL_BROMIDE "ch3br" +#define GAS_ID_NITROGEN_DIOXIDE "no2" +#define GAS_ID_NITRIC_OXIDE "no" +#define GAS_ID_METHANE "ch4" +#define GAS_ID_ARGON "ar" +#define GAS_ID_KRYPTON "kr" +#define GAS_ID_NEON "ne" +#define GAS_ID_AMMONIA "nh3" +#define GAS_ID_XENON "xe" +#define GAS_ID_CHLORINE "cl2" +#define GAS_ID_SULFUR_DIOXIDE "so2" +#define GAS_ID_HYDROGEN "hydrogen" +#define GAS_ID_DEUTERIUM "deuterium" +#define GAS_ID_TRITIUM "tritium" +#define GAS_ID_VIMUR "vimur" diff --git a/code/__DEFINES/atmospherics/gases/reagents.dm b/code/__DEFINES/atmospherics/gases/reagents.dm new file mode 100644 index 00000000000..2b6b0574f0b --- /dev/null +++ b/code/__DEFINES/atmospherics/gases/reagents.dm @@ -0,0 +1,6 @@ +//! reagent list indices +#define GAS_REAGENT_LIST_ID 1 +#define GAS_REAGENT_LIST_AMOUNT 2 +#define GAS_REAGENT_LIST_THRESHOLD 3 +#define GAS_REAGENT_LIST_FACTOR 4 +#define GAS_REAGENT_LIST_MAX 5 diff --git a/code/__DEFINES/atmospherics/gases/visuals.dm b/code/__DEFINES/atmospherics/gases/visuals.dm new file mode 100644 index 00000000000..fe19270ddb4 --- /dev/null +++ b/code/__DEFINES/atmospherics/gases/visuals.dm @@ -0,0 +1,8 @@ +//! visuals list defines +#define GAS_VISUAL_INDEX_STATE 1 +#define GAS_VISUAL_INDEX_THRESHOLD 2 +#define GAS_VISUAL_INDEX_FACTOR 3 + +//! caching system +/// levels of alpha to make +#define GAS_VISUAL_STEP_MAX 20 diff --git a/code/__DEFINES/atmospherics/helpers.dm b/code/__DEFINES/atmospherics/helpers.dm index 5b015180a43..4ca34abec2d 100644 --- a/code/__DEFINES/atmospherics/helpers.dm +++ b/code/__DEFINES/atmospherics/helpers.dm @@ -1,7 +1,7 @@ //! gasmixtures #define THERMAL_ENERGY(gas) (gas.temperature * gas.heat_capacity()) /// Atmospherics quantization define. -#define QUANTIZE(variable) (round(variable,0.0000001))/*I feel the need to document what happens here. Basically this is used to catch most rounding errors, however it's previous value made it so that +#define QUANTIZE(variable) (round(variable,0.00001))/*I feel the need to document what happens here. Basically this is used to catch most rounding errors, however it's previous value made it so that once gases got hot enough, most procedures wouldnt occur due to the fact that the mole counts would get rounded away. Thus, we lowered it a few orders of magnititude */ /// Writes the total moles of cached gases gaslist to out_var. Use this to spare a proccall in performance critical areas. diff --git a/code/__DEFINES/atmospherics/machinery.dm b/code/__DEFINES/atmospherics/machinery.dm new file mode 100644 index 00000000000..f15b3053b36 --- /dev/null +++ b/code/__DEFINES/atmospherics/machinery.dm @@ -0,0 +1,64 @@ +//* Balancing - Efficiency *// + +/// Global power efficiency of pumps - enforced by transfer helpers, not the machine! +#define ATMOS_ABSTRACT_PUMP_EFFICIENCY 2.5 +/// Global power efficiency of scrubbing - enforced by transfer helpers, not the machine! +#define ATMOS_ABSTRACT_SCRUB_EFFICIENCY 2.5 +/// Global power efficiency of filtering - enforced by transfer helpers, not the machine! +#define ATMOS_ABSTRACT_FILTER_EFFICIENCY 2.5 + +//* /obj/machinery/atmospherics/component atmos_component_ui_flags + +/// allow toggling power +#define ATMOS_COMPONENT_UI_TOGGLE_POWER (1<<0) +/// allow setting power. implies SEE_POWER. +#define ATMOS_COMPONENT_UI_SET_POWER (1<<1) +/// render power usage +#define ATMOS_COMPONENT_UI_SEE_POWER (1<<2) + +DEFINE_BITFIELD(atmos_component_ui_flags, list( + BITFIELD(ATMOS_COMPONENT_UI_TOGGLE_POWER), + BITFIELD(ATMOS_COMPONENT_UI_SET_POWER), + BITFIELD(ATMOS_COMPONENT_UI_SEE_POWER), +)) + +//* /obj/machinery/portable_atmospherics atmos_portable_ui_flags + +/// view flow +#define ATMOS_PORTABLE_UI_SEE_FLOW (1<<0) +/// toggle on/off +#define ATMOS_PORTABLE_UI_TOGGLE_POWER (1<<1) +/// adjust flow. implies SEE_FLOW. +#define ATMOS_PORTABLE_UI_SET_FLOW (1<<2) +/// adjust power. implies SEE_POWER. +#define ATMOS_PORTABLE_UI_SET_POWER (1<<3) +/// see power +#define ATMOS_PORTABLE_UI_SEE_POWER (1<<4) + +DEFINE_BITFIELD(atmos_portable_ui_flags, list( + BITFIELD(ATMOS_PORTABLE_UI_SEE_FLOW), + BITFIELD(ATMOS_PORTABLE_UI_TOGGLE_POWER), + BITFIELD(ATMOS_PORTABLE_UI_SET_FLOW), + BITFIELD(ATMOS_PORTABLE_UI_SET_POWER), + BITFIELD(ATMOS_PORTABLE_UI_SEE_POWER), +)) + +//! legacy + +// Will not bother pumping or filtering if the gas source as fewer than this amount of moles, to help with performance. +#define MINIMUM_MOLES_TO_PUMP 0.00001 +#define MINIMUM_MOLES_TO_FILTER 0.00001 +#define MINIMUM_MOLES_TO_SCRUB 0.00001 +// fire sparking +#define MINIMUM_MOLES_TO_SPARK 0.015 + +// The flow rate/effectiveness of various atmos devices is limited by their internal volume, +// so for many atmos devices these will control maximum flow rates in L/s. +/// Liters. +#define ATMOS_DEFAULT_VOLUME_PUMP 200 +/// L. +#define ATMOS_DEFAULT_VOLUME_FILTER 200 +/// L. +#define ATMOS_DEFAULT_VOLUME_MIXER 200 +/// L. +#define ATMOS_DEFAULT_VOLUME_PIPE 70 diff --git a/code/__DEFINES/atmospherics/machinery/alarm.dm b/code/__DEFINES/atmospherics/machinery/alarm.dm new file mode 100644 index 00000000000..6edd4ef3d2f --- /dev/null +++ b/code/__DEFINES/atmospherics/machinery/alarm.dm @@ -0,0 +1,38 @@ +//* air alarm mode +/// Everything off +#define AIR_ALARM_MODE_OFF "off" +/// vents on, scrubbers scrub +#define AIR_ALARM_MODE_SCRUB "scrub" +/// vents on, scrubbers siphon +#define AIR_ALARM_MODE_REPLACE "replace" +/// vents off, scrubbers siphon +#define AIR_ALARM_MODE_SIPHON "siphon" +/// siphon and then switch to scrub +#define AIR_ALARM_MODE_CYCLE "cycle" +/// panic siphon - rapidly siphon all air out of room +#define AIR_ALARM_MODE_PANIC "panic" +/// contaminated - high power scrub +#define AIR_ALARM_MODE_CONTAMINATED "contaminated" +/// vents on, scrubbers off +#define AIR_ALARM_MODE_FILL "fill" + +//* air alarm danger state +#define AIR_ALARM_RAISE_OKAY 0 +#define AIR_ALARM_RAISE_WARNING 1 +#define AIR_ALARM_RAISE_DANGER 2 + +//* air alarm TLV operatoins +#define AIR_ALARM_TLV_DANGER_LOW 1 +#define AIR_ALARM_TLV_WARNING_LOW 2 +#define AIR_ALARM_TLV_WARNING_HIGH 3 +#define AIR_ALARM_TLV_DANGER_HIGH 4 + +#define AIR_ALARM_TLV_INDEX_MIN 1 +#define AIR_ALARM_TLV_INDEX_MAX 4 + +#define AIR_ALARM_MAKE_TLV(mindanger, minwarning, maxwarning, maxdanger) list(mindanger, minwarning, maxwarning, maxdanger) +#define AIR_ALARM_TEST_TLV(val, list) ( \ + ((val < list[AIR_ALARM_TLV_DANGER_LOW]) || (val > list[AIR_ALARM_TLV_DANGER_HIGH]))? \ + AIR_ALARM_RAISE_DANGER : ((val < list[AIR_ALARM_TLV_WARNING_LOW] || val > list[AIR_ALARM_TLV_WARNING_HIGH])? \ + AIR_ALARM_RAISE_WARNING : AIR_ALARM_RAISE_OKAY) \ + ) diff --git a/code/__DEFINES/atmospherics/machinery/scrubber.dm b/code/__DEFINES/atmospherics/machinery/scrubber.dm new file mode 100644 index 00000000000..de83d9a536a --- /dev/null +++ b/code/__DEFINES/atmospherics/machinery/scrubber.dm @@ -0,0 +1,5 @@ +//* Scrubber default enums - these must be on SSair! +#define SCRUBBER_DEFAULT_STATION "station" + +/// max ids scrubbers can scrub at once +#define SCRUBBER_MAX_GAS_IDS 10 diff --git a/code/__DEFINES/atmospherics/machinery/vent.dm b/code/__DEFINES/atmospherics/machinery/vent.dm new file mode 100644 index 00000000000..94a98a6597e --- /dev/null +++ b/code/__DEFINES/atmospherics/machinery/vent.dm @@ -0,0 +1,13 @@ +/// check to make sure external gas pressure doesn't drop below (pump in) +/// or rise above (pump out) a certain pressure +#define ATMOS_VENT_CHECK_EXTERNAL (1<<0) +/// check to make sure internal gas pressure doesn't drop below (pump out) +/// or rise above (pump in) a certain pressure +#define ATMOS_VENT_CHECK_INTERNAL (1<<1) +/// all bits in check bitfield +#define ATMOS_VENT_CHECKS (ATMOS_VENT_CHECK_EXTERNAL | ATMOS_VENT_CHECK_INTERNAL) + +#define ATMOS_VENT_DIRECTION_SIPHON 0 +#define ATMOS_VENT_DIRECTION_RELEASE 1 + +#define ATMOS_VENT_MAX_PRESSURE_LIMIT (ONE_ATMOSPHERE * 500) diff --git a/code/__DEFINES/machinery.dm b/code/__DEFINES/machinery.dm index 97c31383a26..87eea72002c 100644 --- a/code/__DEFINES/machinery.dm +++ b/code/__DEFINES/machinery.dm @@ -135,35 +135,6 @@ var/list/restricted_camera_networks = list(NETWORK_ERT,NETWORK_MERCENARY,"Secret #define STAGE_FIVE 9 #define STAGE_SUPER 11 -/** - *! Atmospherics Machinery. - */ -/// L/s. This can be used to balance how fast a room is siphoned. Anything higher than CELL_VOLUME has no effect. -#define MAX_SIPHON_FLOWRATE 2500 -/// L/s. Max flow rate when scrubbing from a turf. -#define MAX_SCRUBBER_FLOWRATE 200 -// These balance how easy or hard it is to create huge pressure gradients with pumps and filters. -// Lower values means it takes longer to create large pressures differences. -// Has no effect on pumping gasses from high pressure to low, only from low to high. -#define ATMOS_PUMP_EFFICIENCY 2.5 -#define ATMOS_FILTER_EFFICIENCY 2.5 - -// Will not bother pumping or filtering if the gas source as fewer than this amount of moles, to help with performance. -#define MINIMUM_MOLES_TO_PUMP 0.01 -#define MINIMUM_MOLES_TO_FILTER 0.01 -// fire sparking -#define MINIMUM_MOLES_TO_SPARK 0.015 - -// The flow rate/effectiveness of various atmos devices is limited by their internal volume, -// so for many atmos devices these will control maximum flow rates in L/s. -/// Liters. -#define ATMOS_DEFAULT_VOLUME_PUMP 200 -/// L. -#define ATMOS_DEFAULT_VOLUME_FILTER 200 -/// L. -#define ATMOS_DEFAULT_VOLUME_MIXER 200 -/// L. -#define ATMOS_DEFAULT_VOLUME_PIPE 70 // These are used by supermatter and supermatter monitor program, mostly for UI updating purposes. Higher should always be worse! /// Unknown status, shouldn't happen but just in case. #define SUPERMATTER_ERROR -1 diff --git a/code/__DEFINES/procs/do_after.dm b/code/__DEFINES/procs/do_after.dm index 24d4fd21fd5..e517c8c53c2 100644 --- a/code/__DEFINES/procs/do_after.dm +++ b/code/__DEFINES/procs/do_after.dm @@ -54,3 +54,5 @@ #define INTERACTING_FOR_RESIST "resist" /// Climbing a structure #define INTERACTING_FOR_CLIMB "climb" +/// Construct/deconstruct +#define INTERACTING_FOR_CONSTRUCTION "construction" diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 4d121bd82ed..749a21bd200 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1080,7 +1080,7 @@ * TODO - Fix this ancient list of wall items. Preferably make it dynamically populated. ~Leshana */ var/list/WALLITEMS = list( - /obj/machinery/power/apc, /obj/machinery/alarm, /obj/item/radio/intercom, /obj/structure/frame, + /obj/machinery/power/apc, /obj/machinery/air_alarm, /obj/item/radio/intercom, /obj/structure/frame, /obj/structure/extinguisher_cabinet, /obj/structure/reagent_dispensers/peppertank, /obj/machinery/status_display, /obj/machinery/requests_console, /obj/machinery/light_switch, /obj/structure/sign, /obj/machinery/newscaster, /obj/machinery/firealarm, /obj/structure/noticeboard, /obj/machinery/button/remote, diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index 8caf16342e5..871fb553600 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -19,6 +19,10 @@ SUBSYSTEM_DEF(air) var/list/generated_atmospheres /// cached lists of unpacked gas-strings var/list/cached_strings + /// scrubber defaults + var/list/scrubber_defaults = list( + SCRUBBER_DEFAULT_STATION = list(/datum/gas/carbon_dioxide, /datum/gas/phoron), + ) var/cost_turfs = 0 var/cost_edges = 0 @@ -57,7 +61,20 @@ SUBSYSTEM_DEF(air) return ..() + " [msg.Join()]" /datum/controller/subsystem/air/PreInit(recovering) - air_master = src + // resolve scrubber defaults + for(var/key in scrubber_defaults) + var/list/values = scrubber_defaults[key] + if(isnull(values)) + scrubber_defaults -= key + stack_trace("invalid default [key] in scrubber_defaults") + continue + for(var/i in 1 to length(values)) + if(ispath(values[i])) + var/datum/gas/casted = values[i] + if(!ispath(casted, /datum/gas)) + stack_trace("invalid path [casted] in scrubber_defaults") + casted = /datum/gas/oxygen + values[i] = initial(casted.id) /datum/controller/subsystem/air/Preload(recovering) cached_strings = list() @@ -132,7 +149,7 @@ SUBSYSTEM_DEF(air) INTERNAL_PROCESS_STEP(SSAIR_HOTSPOTS, FALSE, process_active_hotspots, cost_hotspots, SSAIR_ZONES) INTERNAL_PROCESS_STEP(SSAIR_ZONES, FALSE, process_zones_to_update, cost_zones, SSAIR_DONE) - // Okay, we're done! Woo! Got thru a whole air_master cycle! + // Okay, we're done! Woo! Got thru a whole SSair cycle! if(LAZYLEN(currentrun) != 0) stack_trace("Currentrun not empty after processing cycle when it should be. [english_list(currentrun.Copy(1, min(currentrun.len, 5)))]") currentrun = null @@ -320,11 +337,14 @@ SUBSYSTEM_DEF(air) if(initial(A.abstract_type) == T) continue A = new T + // register normal id generated_atmospheres[A.id] = A + // register type too - for faster lookup + generated_atmospheres[A.type] = A /** * parses a gas string - * returns list(gas list, temp) + * returns list(gas list, temp); gas list is cached, make sure to copy it!!! * * @params * - gas_string - gas string @@ -353,17 +373,11 @@ SUBSYSTEM_DEF(air) /datum/controller/subsystem/air/proc/unpack_gas_string(gas_string) var/list/built = new /list(2) var/list/unpacked = params2list(gas_string) - var/list/gases = list() built[2] = text2num(unpacked["TEMP"]) // null allowed unpacked -= "TEMP" - // convert id to path - // todo: remove when we convert gas to ids and not paths why did we ever make it paths aough - for(var/i in 1 to length(unpacked)) - var/id = unpacked[i] - var/amount = text2num(unpacked[id]) - var/path = GLOB.meta_gas_id_lookup[id] - gases[path] = amount - built[1] = gases + for(var/id in unpacked) + unpacked[id] = text2num(unpacked[id]) + built[1] = unpacked return built #undef SSAIR_TURFS diff --git a/code/controllers/subsystem/plants.dm b/code/controllers/subsystem/plants.dm index a4c5c5bba92..403eb196781 100644 --- a/code/controllers/subsystem/plants.dm +++ b/code/controllers/subsystem/plants.dm @@ -111,8 +111,8 @@ SUBSYSTEM_DEF(plants) if(survive_on_station) if(seed.consume_gasses) - seed.consume_gasses[/datum/gas/phoron] = null - seed.consume_gasses[/datum/gas/carbon_dioxide] = null + seed.consume_gasses[GAS_ID_PHORON] = null + seed.consume_gasses[GAS_ID_CARBON_DIOXIDE] = null if(seed.chems && !isnull(seed.chems["pacid"])) seed.chems["pacid"] = null //Eating through the hull will make these plants completely inviable, albeit very dangerous. seed.chems -= null //Setting to null does not actually remove the entry, which is weird. diff --git a/code/controllers/verbs.dm b/code/controllers/verbs.dm index 03ab864a634..2d9c11c27ee 100644 --- a/code/controllers/verbs.dm +++ b/code/controllers/verbs.dm @@ -79,9 +79,11 @@ INITIALIZE_IMMEDIATE(/obj/effect/statclick) if(!holder) return var/list/options = list() - options["MC"] = Master - options["Failsafe"] = Failsafe - options["Configuration"] = config + options["MC"] = global.Master + options["Failsafe"] = global.Failsafe + options["Global Variables"] = global.GLOB + options["Configuration"] = global.config + options["Gas Data"] = global.gas_data options["Legacy Configuration"] = config_legacy for(var/i in Master.subsystems) var/datum/controller/subsystem/S = i @@ -97,7 +99,6 @@ INITIALIZE_IMMEDIATE(/obj/effect/statclick) options[strtype] = S //Goon PS stuff, and other yet-to-be-subsystem things. - options["LEGACY: air_master"] = air_master options["LEGACY: radio_controller"] = radio_controller options["LEGACY: paiController"] = paiController options["LEGACY: GLOB.cameranet"] = GLOB.cameranet diff --git a/code/datums/components/crafting/recipes/recipes_misc.dm b/code/datums/components/crafting/recipes/recipes_misc.dm index 11138052b04..bcf6f22c232 100644 --- a/code/datums/components/crafting/recipes/recipes_misc.dm +++ b/code/datums/components/crafting/recipes/recipes_misc.dm @@ -397,7 +397,7 @@ reqs = list(/obj/item/stock_parts/subspace/amplifier = 1, /obj/item/stack/cable_coil = 15, /obj/item/radio = 1, - /obj/item/analyzer = 1) + /obj/item/atmos_analyzer = 1) subcategory = CAT_MISCELLANEOUS category = CAT_MISCELLANEOUS diff --git a/code/datums/wires/alarm.dm b/code/datums/wires/alarm.dm index d90463e2c59..a84752f0482 100644 --- a/code/datums/wires/alarm.dm +++ b/code/datums/wires/alarm.dm @@ -1,5 +1,5 @@ /datum/wires/alarm - holder_type = /obj/machinery/alarm + holder_type = /obj/machinery/air_alarm wire_count = 5 proper_name = "Air alarm" @@ -12,20 +12,20 @@ /datum/wires/alarm/interactable(mob/user) - var/obj/machinery/alarm/A = holder + var/obj/machinery/air_alarm/A = holder if(A.panel_open) return TRUE return FALSE /datum/wires/alarm/get_status() - var/obj/machinery/alarm/A = holder + var/obj/machinery/air_alarm/A = holder . = ..() . += "The Air Alarm is [A.locked ? "locked." : "unlocked."]" . += "The Air Alarm is [(A.shorted || (A.machine_stat & (NOPOWER|BROKEN))) ? "offline." : "working properly!"]" . += "The 'AI control allowed' light is [A.aidisabled ? "off" : "on"]." /datum/wires/alarm/on_cut(wire, mend) - var/obj/machinery/alarm/A = holder + var/obj/machinery/air_alarm/A = holder switch(wire) if(WIRE_IDSCAN) if(!mend) @@ -51,7 +51,7 @@ ..() /datum/wires/alarm/on_pulse(wire) - var/obj/machinery/alarm/A = holder + var/obj/machinery/air_alarm/A = holder switch(wire) if(WIRE_IDSCAN) A.locked = !A.locked diff --git a/code/game/area/area.dm b/code/game/area/area.dm index 17cfdbec1ca..d0329eb5e68 100644 --- a/code/game/area/area.dm +++ b/code/game/area/area.dm @@ -33,6 +33,14 @@ //? tracking lists for machinery /// holopads - lazyinit'd var/list/obj/machinery/holopad/holopads + /// vents + var/list/obj/machinery/atmospherics/component/unary/vent_pump/vent_pumps + /// next vent id + var/vent_pump_next = 1 + /// scrubbers + var/list/obj/machinery/atmospherics/component/unary/vent_scrubber/vent_scrubbers + /// next scrubber id + var/vent_scrubber_next = 1 //? unsorted var/fire = null @@ -261,14 +269,14 @@ if (danger_level == 0) atmosphere_alarm.clearAlarm(src, alarm_source) else - var/obj/machinery/alarm/atmosalarm = alarm_source //maybe other things can trigger these, who knows + var/obj/machinery/air_alarm/atmosalarm = alarm_source //maybe other things can trigger these, who knows if(istype(atmosalarm)) atmosphere_alarm.triggerAlarm(src, alarm_source, severity = danger_level, hidden = atmosalarm.alarms_hidden) else atmosphere_alarm.triggerAlarm(src, alarm_source, severity = danger_level) //Check all the alarms before lowering atmosalm. Raising is perfectly fine. - for (var/obj/machinery/alarm/AA as anything in GLOB.air_alarms) + for (var/obj/machinery/air_alarm/AA as anything in GLOB.air_alarms) if(AA.loc?.loc != src) continue if (!(AA.machine_stat & (NOPOWER|BROKEN)) && !AA.shorted && AA.report_danger_level) @@ -280,7 +288,7 @@ if (danger_level < 1 || danger_level >= 2) firedoors_update() - for (var/obj/machinery/alarm/AA in src) + for (var/obj/machinery/air_alarm/AA in src) AA.update_icon() return 1 @@ -672,3 +680,49 @@ var/list/ghostteleportlocs = list() ghostteleportlocs = tim_sort(ghostteleportlocs, GLOBAL_PROC_REF(cmp_text_asc), TRUE) return 1 + +//* Atmospherics + +/area/proc/register_scrubber(obj/machinery/atmospherics/component/unary/vent_scrubber/instance) + LAZYADD(vent_scrubbers, instance) + instance.name = "\improper [name] Vent Scrubber #[vent_scrubber_next++]" + +/area/proc/unregister_scrubber(obj/machinery/atmospherics/component/unary/vent_scrubber/instance) + LAZYREMOVE(vent_scrubbers, instance) + instance.name = "\improper Vent Scrubber" + +/area/proc/register_vent(obj/machinery/atmospherics/component/unary/vent_pump/instance) + LAZYADD(vent_pumps, instance) + instance.name = "\improper [name] Vent Pump #[vent_pump_next++]" + +/area/proc/unregister_vent(obj/machinery/atmospherics/component/unary/vent_pump/instance) + LAZYREMOVE(vent_pumps, instance) + instance.name = "\improper Vent Pump" + +// todo: this should unregister first, probably, incase anyone makes registration non-repeatable + +/area/proc/reregister_atmos_machinery() + reregister_atmos_vents() + reregister_atmos_scrubbers() + +/area/proc/reregister_atmos_vents() + vent_pump_next = 0 + var/list/old = vent_pumps.Copy() + for(var/obj/machinery/atmospherics/component/unary/vent_pump/instance in old) + register_vent(instance) + +/area/proc/reregister_atmos_scrubbers() + vent_scrubber_next = 0 + var/list/old = vent_scrubbers.Copy() + for(var/obj/machinery/atmospherics/component/unary/vent_scrubber/instance in old) + register_scrubber(instance) + +/area/proc/vent_pump_by_id(id) + for(var/obj/machinery/atmospherics/component/unary/vent_pump/pump as anything in vent_pumps) + if(pump.id_tag == id) + return pump + +/area/proc/vent_scrubber_by_id(id) + for(var/obj/machinery/atmospherics/component/unary/vent_scrubber/scrubber as anything in vent_scrubbers) + if(scrubber.id_tag == id) + return scrubber diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index fd167f19fc3..a40b745449c 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -510,7 +510,7 @@ var/global/list/all_objectives = list() for(var/obj/item/I in all_items) //Check for phoron tanks if(istype(I, steal_target)) - found_amount += (target_name=="28 moles of phoron (full tank)" ? (I:air_contents:gas[/datum/gas/phoron]) : (I:amount)) + found_amount += (target_name=="28 moles of phoron (full tank)" ? (I:air_contents:gas[GAS_ID_PHORON]) : (I:amount)) return found_amount>=target_amount if("50 coins (in bag)") diff --git a/code/game/gamemodes/technomancer/spells/oxygenate.dm b/code/game/gamemodes/technomancer/spells/oxygenate.dm index 416bbedfd50..3b79fb9846f 100644 --- a/code/game/gamemodes/technomancer/spells/oxygenate.dm +++ b/code/game/gamemodes/technomancer/spells/oxygenate.dm @@ -27,7 +27,7 @@ else if(isturf(hit_atom)) var/turf/T = hit_atom if(pay_energy(1500)) - T.assume_gas(/datum/gas/oxygen, 200) - T.assume_gas(/datum/gas/nitrogen, 800) + T.assume_gas(GAS_ID_OXYGEN, 200) + T.assume_gas(GAS_ID_NITROGEN, 800) playsound(src.loc, 'sound/effects/spray.ogg', 50, 1, -3) adjust_instability(10) diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index 2e7021f1042..f3d9a4160ee 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -108,6 +108,8 @@ // todo: anchored / unanchored should be replaced by movement force someday, how to handle that? //* Construction / Deconstruction + /// allow default part replacement. null for disallowed, number for time. + var/default_part_replacement = 0 /// Can be constructed / deconstructed by players by default. null for off, number for time needed. Panel must be open. // todo: proc for allow / disallow, refactor var/default_deconstruct @@ -116,8 +118,12 @@ /// Can be anchored / unanchored by players without deconstructing by default with a wrench. null for off, number for time needed. // todo: proc for allow / disallow, refactor, unify with can_be_unanchored var/default_unanchor - /// allow default part replacement. null for disallowed, number for time. - var/default_part_replacement = 0 + /// tool used for deconstruction + var/tool_deconstruct = TOOL_CROWBAR + /// tool used for panel open + var/tool_panel = TOOL_SCREWDRIVER + /// tool used for unanchor + var/tool_unanchor = TOOL_WRENCH /// default icon state overlay for panel open var/panel_icon_state /// is the maintenance panel open? @@ -195,50 +201,6 @@ qdel(A) return ..() -/obj/machinery/screwdriver_act(obj/item/I, mob/user, flags, hint) - if(!isnull(default_panel)) - default_deconstruction_screwdriver(user, I) - return TRUE - return ..() - -/obj/machinery/crowbar_act(obj/item/I, mob/user, flags, hint) - if(!isnull(default_deconstruct)) - default_deconstruction_crowbar(user, I) - return TRUE - return ..() - -/obj/machinery/wrench_act(obj/item/I, mob/user, flags, hint) - if(!isnull(default_unanchor)) - default_unfasten_wrench(user, I, default_unanchor) - return TRUE - return ..() - -/obj/machinery/dynamic_tool_functions(obj/item/I, mob/user) - . = ..() - if(!isnull(default_unanchor)) - COERCE_OPTIONS_LIST_IN(.[TOOL_WRENCH]) - .[TOOL_WRENCH] += anchored? "unfasten" : "fasten" - if(!isnull(default_deconstruct) && panel_open) - COERCE_OPTIONS_LIST_IN(.[TOOL_CROWBAR]) - .[TOOL_CROWBAR] += "deconstruct" - if(!isnull(default_panel)) - COERCE_OPTIONS_LIST_IN(.[TOOL_SCREWDRIVER]) - .[TOOL_SCREWDRIVER] += panel_open? "close panel" : "open panel" - -/obj/machinery/dynamic_tool_image(function, hint) - . = ..() - switch(hint) - if("unfasten") - return dyntool_image_backward(TOOL_WRENCH) - if("fasten") - return dyntool_image_forward(TOOL_WRENCH) - if("deconstruct") - return dyntool_image_backward(TOOL_CROWBAR) - if("open panel") - return dyntool_image_backward(TOOL_SCREWDRIVER) - if("close panel") - return dyntool_image_forward(TOOL_SCREWDRIVER) - /obj/machinery/process(delta_time)//If you dont use process or power why are you here return PROCESS_KILL @@ -267,6 +229,10 @@ if(panel_open && panel_icon_state) . += panel_icon_state +/obj/machinery/proc/set_panel_open(panel_opened) + panel_open = panel_opened + update_appearance() + /obj/machinery/legacy_ex_act(severity) switch(severity) if(1.0) @@ -472,6 +438,12 @@ RefreshParts() return 1 +// todo: refactor +/obj/machinery/set_anchored(anchorvalue) + . = ..() + power_change() + update_appearance() + // Default behavior for wrenching down machines. Supports both delay and instant modes. /obj/machinery/proc/default_unfasten_wrench(var/mob/user, var/obj/item/W, var/time = 0) if(!W.is_wrench()) @@ -494,8 +466,6 @@ return TRUE /obj/machinery/proc/default_deconstruction_crowbar(var/mob/user, var/obj/item/C) - - if(!C.is_crowbar()) return 0 if(!panel_open) @@ -549,8 +519,9 @@ playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) drop_products(ATOM_DECONSTRUCT_DISASSEMBLED) on_deconstruction() - // If it doesn't have a circuit board, don't create a frame. Return a smack instead. BONK! + // If it doesn't have a circuit board, don't create a frame, instead just break. if(!circuit) + qdel(src) return 0 var/obj/structure/frame/A = new /obj/structure/frame(src.loc) var/obj/item/circuitboard/M = circuit diff --git a/code/game/machinery/_machinery_construction.dm b/code/game/machinery/_machinery_construction.dm new file mode 100644 index 00000000000..b2e8dc5afae --- /dev/null +++ b/code/game/machinery/_machinery_construction.dm @@ -0,0 +1,103 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2023 Citadel Station developers. *// + +/obj/machinery/dynamic_tool_functions(obj/item/I, mob/user) + . = list() + if(tool_deconstruct && !isnull(default_deconstruct) && panel_open) + LAZYADD(.[tool_panel], "deconstruct") + if(tool_unanchor && !isnull(default_unanchor)) + LAZYADD(.[tool_panel], anchored? "unanchor" : "anchor") + if(tool_panel && !isnull(default_panel)) + LAZYADD(.[tool_panel], panel_open? "close panel" : "open panel") + return merge_double_lazy_assoc_list(., ..()) + +/obj/machinery/dynamic_tool_image(function, hint) + switch(hint) + if("anchor", "close panel") + return dyntool_image_backward(function) + if("unanchor", "open panel", "deconstruct") + return dyntool_image_backward(function) + return ..() + +/obj/machinery/tool_act(obj/item/I, mob/user, function, flags, hint) + if(INTERACTING_WITH_FOR(user, src, INTERACTING_FOR_CONSTRUCTION)) + return CLICKCHAIN_DO_NOT_PROPAGATE + START_INTERACTING_WITH(user, src, INTERACTING_FOR_CONSTRUCTION) + if(function == tool_deconstruct && !isnull(default_deconstruct)) + if(default_deconstruction_dismantle(I, user, flags = flags)) + . = CLICKCHAIN_DID_SOMETHING | CLICKCHAIN_DO_NOT_PROPAGATE + . = CLICKCHAIN_DO_NOT_PROPAGATE + else if(function == tool_unanchor && !isnull(default_unanchor)) + if(default_deconstruction_anchor(I, user, flags = flags)) + . = CLICKCHAIN_DID_SOMETHING | CLICKCHAIN_DO_NOT_PROPAGATE + . = CLICKCHAIN_DO_NOT_PROPAGATE + else if(function == tool_panel && !isnull(default_panel)) + if(default_deconstruction_panel(I, user, flags = flags)) + . = CLICKCHAIN_DID_SOMETHING | CLICKCHAIN_DO_NOT_PROPAGATE + . = CLICKCHAIN_DO_NOT_PROPAGATE + STOP_INTERACTING_WITH(user, src,INTERACTING_FOR_CONSTRUCTION) + if(isnull(.)) + return ..() + +// todo: better verb/message support +/obj/machinery/proc/default_deconstruction_panel(obj/item/tool, mob/user, speed_mult = 1, flags) + var/needed_time = default_panel * speed_mult * (isnull(tool)? 1 : tool.tool_speed) + if(needed_time) + user.visible_action_feedback( + target = src, + soft_range = MESSAGE_RANGE_CONSTRUCTION, + visible_soft = SPAN_WARNING("[user] starts to [panel_open? "close" : "open"] [src]'s maintenance panel."), + audible_soft = SPAN_WARNING("You hear something being (un)fastened."), + ) + if(!use_tool(tool_panel, tool, user, flags, needed_time)) + return FALSE + user.visible_action_feedback( + target = src, + soft_range = MESSAGE_RANGE_CONSTRUCTION, + visible_soft = SPAN_WARNING("[user] [panel_open? "closes" : "opens"] [src]'s maintenance panel."), + audible_soft = SPAN_WARNING("You hear something being (un)fastened."), + ) + set_panel_open(!panel_open) + return TRUE + +// todo: better verb/message support +/obj/machinery/proc/default_deconstruction_dismantle(obj/item/tool, mob/user, speed_mult = 1, flags) + var/needed_time = default_deconstruct * speed_mult * (isnull(tool)? 1 : tool.tool_speed) + if(needed_time) + user.visible_action_feedback( + target = src, + soft_range = MESSAGE_RANGE_CONSTRUCTION, + visible_soft = SPAN_WARNING("[user] starts to dismantle [src]."), + audible_soft = SPAN_WARNING("You hear a series of small parts being removed from something."), + ) + if(!use_tool(tool_deconstruct, tool, user, flags, needed_time)) + return FALSE + user.visible_action_feedback( + target = src, + soft_range = MESSAGE_RANGE_CONSTRUCTION, + visible_soft = SPAN_WARNING("[user] dismantles [src]."), + audible_soft = SPAN_WARNING("You hear something getting dismantled."), + ) + dismantle() + return TRUE + +// todo: better verb/message support +/obj/machinery/proc/default_deconstruction_anchor(obj/item/tool, mob/user, speed_mult = 1, flags) + var/needed_time = default_unanchor * speed_mult * (isnull(tool)? 1 : tool.tool_speed) + if(needed_time) + user.visible_action_feedback( + target = src, + soft_range = MESSAGE_RANGE_CONSTRUCTION, + visible_soft = SPAN_WARNING("[user] starts to [anchored? "unbolt" : "bolt"] [src] [anchored? "from" : "to"] the floor."), + audible_soft = SPAN_WARNING("You hear something heavy being (un)fastened."), + ) + if(!use_tool(tool_unanchor, tool, user, flags, needed_time)) + return FALSE + user.visible_action_feedback( + target = src, + soft_range = MESSAGE_RANGE_CONSTRUCTION, + visible_soft = SPAN_WARNING("[user] [anchored? "bolts" : "unbolts"] [src] [anchored? "to" : "from"] from the floor."), + audible_soft = SPAN_WARNING("You hear something heavy being (un)fastened."), + ) + set_anchored(!anchored) + return TRUE diff --git a/code/game/machinery/air_alarm.dm b/code/game/machinery/air_alarm.dm deleted file mode 100644 index 0f238880a4f..00000000000 --- a/code/game/machinery/air_alarm.dm +++ /dev/null @@ -1,865 +0,0 @@ -GLOBAL_LIST_EMPTY(air_alarms) - -#define DECLARE_TLV_VALUES var/red_min; var/yel_min; var/yel_max; var/red_max; var/tlv_comparitor; -#define LOAD_TLV_VALUES(x, y) red_min = x[1]; yel_min = x[2]; yel_max = x[3]; red_max = x[4]; tlv_comparitor = y; -#define TEST_TLV_VALUES (((tlv_comparitor >= red_max && red_max > 0) || tlv_comparitor <= red_min) ? 2 : ((tlv_comparitor >= yel_max && yel_max > 0) || tlv_comparitor <= yel_min) ? 1 : 0) - -#define AALARM_MODE_SCRUBBING 1 -///like scrubbing, but faster. -#define AALARM_MODE_REPLACEMENT 2 -///constantly sucks all air -#define AALARM_MODE_PANIC 3 -///sucks off all air, then refill and switches to scrubbing -#define AALARM_MODE_CYCLE 4 -///emergency fill -#define AALARM_MODE_FILL 5 -///Shuts it all down. -#define AALARM_MODE_OFF 6 -#define AALARM_SCREEN_MAIN 1 -#define AALARM_SCREEN_VENT 2 -#define AALARM_SCREEN_SCRUB 3 -#define AALARM_SCREEN_MODE 4 -#define AALARM_SCREEN_SENSORS 5 - -#define AALARM_REPORT_TIMEOUT 100 - -#define MAX_TEMPERATURE 90 -#define MIN_TEMPERATURE -40 - -//all air alarms in area are connected via magic -/area - var/obj/machinery/alarm/master_air_alarm - var/list/air_vent_names = list() - var/list/air_scrub_names = list() - var/list/air_vent_info = list() - var/list/air_scrub_info = list() - -/obj/machinery/alarm - name = "alarm" - desc = "Used to control various station atmospheric systems. The light indicates the current air status of the area." - icon = 'icons/obj/monitors.dmi' - icon_state = "alarm0" - plane = TURF_PLANE - layer = ABOVE_TURF_LAYER - anchored = TRUE - use_power = USE_POWER_IDLE - idle_power_usage = 80 - active_power_usage = 1000 //For heating/cooling rooms. 1000 joules equates to about 1 degree every 2 seconds for a single tile of air. - power_channel = ENVIRON - req_one_access = list(ACCESS_ENGINEERING_ATMOS, ACCESS_ENGINEERING_ENGINE) - clicksound = "button" - clickvol = 30 - //blocks_emissive = NONE - light_power = 0.25 - var/alarm_id = null - ///Whether to use automatic breach detection or not - var/breach_detection = TRUE - var/frequency = 1439 - //var/skipprocess = 0 //Experimenting - var/alarm_frequency = 1437 - var/remote_control = FALSE - var/rcon_setting = RCON_AUTO - var/rcon_time = 0 - var/locked = TRUE - ///If it's been screwdrivered open. - panel_open = FALSE - var/aidisabled = FALSE - var/shorted = FALSE - circuit = /obj/item/circuitboard/airalarm - //armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 100, BOMB = 0, BIO = 100, FIRE = 90, ACID = 30) - - var/datum/wires/alarm/wires - - var/mode = AALARM_MODE_SCRUBBING - var/screen = AALARM_SCREEN_MAIN - var/area_uid - var/area/alarm_area - - var/target_temperature = T20C - var/regulating_temperature = 0 - - var/datum/radio_frequency/radio_connection - - /// Keys are things like temperature and certain gasses. Values are lists, which contain, in order: - /// red warning minimum value, yellow warning minimum value, yellow warning maximum value, red warning maximum value - var/list/TLV = list() - var/list/trace_gas = list("nitrous_oxide", "volatile_fuel") //list of other gases that this air alarm is able to detect - - var/danger_level = 0 - var/pressure_dangerlevel = 0 - - var/report_danger_level = 1 - ///If the alarms from this machine are visible on consoles - var/alarms_hidden = FALSE - -/obj/machinery/alarm/nobreach - breach_detection = 0 - -/obj/machinery/alarm/monitor - report_danger_level = 0 - breach_detection = 0 - -/obj/machinery/alarm/alarms_hidden - alarms_hidden = TRUE - -/obj/machinery/alarm/angled -// icon = 'icons/obj/wall_machines_angled.dmi' - -/obj/machinery/alarm/angled/hidden - alarms_hidden = TRUE - -/obj/machinery/alarm/angled/offset_airalarm() - pixel_x = (dir & 3) ? 0 : (dir == 4 ? -21 : 21) - pixel_y = (dir & 3) ? (dir == 1 ? -18 : 20) : 0 - -/obj/machinery/alarm/server/Initialize(mapload) - . = ..() - req_access = list(ACCESS_SCIENCE_RD, ACCESS_ENGINEERING_ATMOS, ACCESS_ENGINEERING_ENGINE) - TLV[/datum/gas/oxygen] = list(16, 19, 135, 140) // Partial pressure, kpa - TLV[/datum/gas/carbon_dioxide] = list(-1.0, -1.0, 5, 10) // Partial pressure, kpa - TLV[/datum/gas/phoron] = list(-1.0, -1.0, 0, 0.5) // Partial pressure, kpa - TLV["other"] = list(-1.0, -1.0, 0.5, 1.0) // Partial pressure, kpa - TLV["pressure"] = list(ONE_ATMOSPHERE * 0.80, ONE_ATMOSPHERE * 0.90, ONE_ATMOSPHERE * 1.10, ONE_ATMOSPHERE * 1.20) /* kpa */ - TLV["temperature"] = list(T0C - 26, T0C, T0C + 40, T0C + 66) // K - setDir(dir) - -/obj/machinery/alarm/Initialize(mapload) - . = ..() - GLOB.air_alarms += src - if(!pixel_x && !pixel_y) - offset_airalarm() - first_run() - -/obj/machinery/alarm/Destroy() - GLOB.air_alarms -= src - unregister_radio(src, frequency) - qdel(wires) - wires = null - if(alarm_area && alarm_area.master_air_alarm == src) - alarm_area.master_air_alarm = null - elect_master(exclude_self = TRUE) - return ..() - -/obj/machinery/alarm/proc/offset_airalarm() - pixel_x = (dir & 3) ? 0 : (dir == 4 ? -26 : 26) - pixel_y = (dir & 3) ? (dir == 1 ? -26 : 26) : 0 - -/obj/machinery/alarm/proc/first_run() - alarm_area = get_area(src) - area_uid = "\ref[alarm_area]" - if(name == "alarm") - name = "[alarm_area.name] Air Alarm" - - if(!wires) - wires = new(src) - - // breathable air according to human/Life() - TLV["oxygen"] = list(16, 19, 135, 140) // Partial pressure, kpa - TLV["nitrogen"] = list(0, 0, 135, 140) // Partial pressure, kpa - TLV["carbon dioxide"] = list(-1.0, -1.0, 5, 10) // Partial pressure, kpa - TLV["phoron"] = list(-1.0, -1.0, 0, 0.5) // Partial pressure, kpa - TLV["other"] = list(-1.0, -1.0, 0.5, 1.0) // Partial pressure, kpa - TLV["pressure"] = list(ONE_ATMOSPHERE * 0.80, ONE_ATMOSPHERE * 0.90, ONE_ATMOSPHERE * 1.10, ONE_ATMOSPHERE * 1.20) /* kpa */ - TLV["temperature"] = list(T0C - 26, T0C, T0C + 40, T0C + 66) // K - - update_icon() - -/obj/machinery/alarm/Initialize(mapload) - . = ..() - set_frequency(frequency) - if(!master_is_operating()) - elect_master() - -/obj/machinery/alarm/process(delta_time) - if((machine_stat & (NOPOWER|BROKEN)) || shorted) - return - - var/turf/simulated/location = src.loc - if(!istype(location)) return//returns if loc is not simulated - - var/datum/gas_mixture/environment = location.return_air() - - //Handle temperature adjustment here. - handle_heating_cooling(environment) - - var/old_level = danger_level - var/old_pressurelevel = pressure_dangerlevel - danger_level = overall_danger_level(environment) - - if(old_level != danger_level) - apply_danger_level(danger_level) - - if(old_pressurelevel != pressure_dangerlevel) - if(breach_detected()) - mode = AALARM_MODE_OFF - apply_mode() - - if(mode == AALARM_MODE_CYCLE && environment.return_pressure() < ONE_ATMOSPHERE * 0.05) - mode = AALARM_MODE_FILL - apply_mode() - - //atmos computer remote control stuff - switch(rcon_setting) - if(RCON_NO) - remote_control = 0 - if(RCON_AUTO) - if(danger_level == 2) - remote_control = 1 - else - remote_control = 0 - if(RCON_YES) - remote_control = 1 - - return - -/obj/machinery/alarm/proc/handle_heating_cooling(var/datum/gas_mixture/environment) - DECLARE_TLV_VALUES - LOAD_TLV_VALUES(TLV["temperature"], target_temperature) - if(!regulating_temperature) - //check for when we should start adjusting temperature - if(!TEST_TLV_VALUES && abs(environment.temperature - target_temperature) > 2.0 && environment.return_pressure() >= 1) - update_use_power(USE_POWER_ACTIVE) - regulating_temperature = 1 - audible_message("\The [src] clicks as it starts [environment.temperature > target_temperature ? "cooling" : "heating"] the room.",\ - "You hear a click and a faint electronic hum.") - playsound(src, 'sound/machines/click.ogg', 50, 1) - else - //check for when we should stop adjusting temperature - if(TEST_TLV_VALUES || abs(environment.temperature - target_temperature) <= 0.5 || environment.return_pressure() < 1) - update_use_power(USE_POWER_IDLE) - regulating_temperature = 0 - audible_message("\The [src] clicks quietly as it stops [environment.temperature > target_temperature ? "cooling" : "heating"] the room.",\ - "You hear a click as a faint electronic humming stops.") - playsound(src, 'sound/machines/click.ogg', 50, 1) - - if(regulating_temperature) - if(target_temperature > T0C + MAX_TEMPERATURE) - target_temperature = T0C + MAX_TEMPERATURE - - if(target_temperature < T0C + MIN_TEMPERATURE) - target_temperature = T0C + MIN_TEMPERATURE - - var/datum/gas_mixture/gas - gas = environment.remove(0.25 * environment.total_moles) - if(gas) - - if(gas.temperature <= target_temperature) //gas heating - var/energy_used = min(gas.get_thermal_energy_change(target_temperature) , active_power_usage) - - gas.adjust_thermal_energy(energy_used) - //use_power(energy_used, ENVIRON) //handle by update_use_power instead - else //gas cooling - var/heat_transfer = min(abs(gas.get_thermal_energy_change(target_temperature)), active_power_usage) - - //Assume the heat is being pumped into the hull which is fixed at 20 C - //none of this is really proper thermodynamics but whatever - - var/cop = gas.temperature / T20C //coefficient of performance -> power used = heat_transfer/cop - - heat_transfer = min(heat_transfer, cop * active_power_usage) //this ensures that we don't use more than active_power_usage amount of power - - heat_transfer = -gas.adjust_thermal_energy(-heat_transfer) //get the actual heat transfer - - //use_power(heat_transfer / cop, ENVIRON) //handle by update_use_power instead - - environment.merge(gas) - -/obj/machinery/alarm/proc/overall_danger_level(var/datum/gas_mixture/environment) - var/partial_pressure = R_IDEAL_GAS_EQUATION * environment.temperature/environment.volume - var/environment_pressure = environment.return_pressure() - - var/other_moles = 0 - for(var/g in trace_gas) - other_moles += environment.gas[g] //this is only going to be used in a partial pressure calc, so we don't need to worry about group_multiplier here. - - DECLARE_TLV_VALUES - LOAD_TLV_VALUES(TLV["pressure"], environment_pressure) - pressure_dangerlevel = TEST_TLV_VALUES // not local because it's used in process() - LOAD_TLV_VALUES(TLV["oxygen"], environment.gas[/datum/gas/oxygen]*partial_pressure) - var/oxygen_dangerlevel = TEST_TLV_VALUES - LOAD_TLV_VALUES(TLV["carbon dioxide"], environment.gas[/datum/gas/carbon_dioxide]*partial_pressure) - var/co2_dangerlevel = TEST_TLV_VALUES - LOAD_TLV_VALUES(TLV["phoron"], environment.gas[/datum/gas/phoron]*partial_pressure) - var/phoron_dangerlevel = TEST_TLV_VALUES - LOAD_TLV_VALUES(TLV["temperature"], environment.temperature) - var/temperature_dangerlevel = TEST_TLV_VALUES - LOAD_TLV_VALUES(TLV["other"], other_moles*partial_pressure) - var/other_dangerlevel = TEST_TLV_VALUES - - return max( - pressure_dangerlevel, - oxygen_dangerlevel, - co2_dangerlevel, - phoron_dangerlevel, - other_dangerlevel, - temperature_dangerlevel - ) - -/// Returns whether this air alarm thinks there is a breach, given the sensors that are available to it. -/obj/machinery/alarm/proc/breach_detected() - var/turf/simulated/location = src.loc - - if(!istype(location)) - return FALSE - - if(!breach_detection) - return FALSE - - var/datum/gas_mixture/environment = location.return_air() - var/environment_pressure = environment.return_pressure() - var/pressure_levels = TLV["pressure"] - - if(environment_pressure <= pressure_levels[1]) // Low pressures - if(!(mode == AALARM_MODE_PANIC || mode == AALARM_MODE_CYCLE)) - return TRUE - return FALSE - -/obj/machinery/alarm/proc/master_is_operating() - return alarm_area && alarm_area.master_air_alarm && !(alarm_area.master_air_alarm.machine_stat & (NOPOWER | BROKEN)) - -/obj/machinery/alarm/proc/elect_master(exclude_self = FALSE) - for(var/obj/machinery/alarm/AA in alarm_area) - if(exclude_self && AA == src) - continue - if(!(AA.machine_stat & (NOPOWER|BROKEN))) - alarm_area.master_air_alarm = AA - return TRUE - return FALSE - -/obj/machinery/alarm/setDir(ndir) - . = ..() - base_pixel_x = 0 - base_pixel_y = 0 - var/turf/T = get_step(get_turf(src), turn(dir, 180)) - if(istype(T) && T.density) - switch(dir) - if(NORTH) - base_pixel_y = -21 - if(SOUTH) - base_pixel_y = 21 - if(WEST) - base_pixel_x = 21 - if(EAST) - base_pixel_x = -21 - reset_pixel_offsets() - -/obj/machinery/alarm/update_icon() - cut_overlays() - - if(panel_open) - icon_state = "alarmx" - set_light(0) - //set_light_on(FALSE) - return - if((machine_stat & (NOPOWER|BROKEN)) || shorted) - icon_state = "alarmp" - set_light(0) - //set_light_on(FALSE) - return - - var/icon_level = danger_level - if(alarm_area?.atmosalm) - icon_level = max(icon_level, 1) //if there's an atmos alarm but everything is okay locally, no need to go past yellow - - var/new_color = null - switch(icon_level) - if(0) - icon_state = "alarm0" - //add_overlay(mutable_appearance(icon, "alarm_ov0")) - //add_overlay(emissive_appearance(icon, "alarm_ov0")) - new_color = "#03A728" - if(1) - icon_state = "alarm2" //yes, alarm2 is yellow alarm - //add_overlay(mutable_appearance(icon, "alarm_ov2")) - //add_overlay(emissive_appearance(icon, "alarm_ov2")) - new_color = "#EC8B2F" - if(2) - icon_state = "alarm1" - //add_overlay(mutable_appearance(icon, "alarm_ov1")) - //add_overlay(emissive_appearance(icon, "alarm_ov1")) - new_color = "#DA0205" - - set_light(l_range = 2, l_power = 0.25, l_color = new_color) - //set_light_on(TRUE) - -/obj/machinery/alarm/receive_signal(datum/signal/signal) - if(machine_stat & (NOPOWER|BROKEN)) - return - if(alarm_area.master_air_alarm != src) - if(master_is_operating()) - return - elect_master() - if(alarm_area.master_air_alarm != src) - return - if(!signal || signal.encryption) - return - var/id_tag = signal.data["tag"] - if(!id_tag) - return - if(signal.data["area"] != area_uid) - return - if(signal.data["sigtype"] != "status") - return - - var/dev_type = signal.data["device"] - if(!(id_tag in alarm_area.air_scrub_names) && !(id_tag in alarm_area.air_vent_names)) - register_env_machine(id_tag, dev_type) - if(dev_type == "AScr") - alarm_area.air_scrub_info[id_tag] = signal.data - else if(dev_type == "AVP") - alarm_area.air_vent_info[id_tag] = signal.data - SStgui.update_uis(src) - -/obj/machinery/alarm/proc/register_env_machine(var/m_id, var/device_type) - var/new_name - if(device_type == "AVP") - new_name = "[alarm_area.name] Vent Pump #[alarm_area.air_vent_names.len+1]" - alarm_area.air_vent_names[m_id] = new_name - else if(device_type == "AScr") - new_name = "[alarm_area.name] Air Scrubber #[alarm_area.air_scrub_names.len+1]" - alarm_area.air_scrub_names[m_id] = new_name - else - return - spawn(10) - send_signal(m_id, list("init" = new_name)) - -/obj/machinery/alarm/proc/refresh_all() - for(var/id_tag in alarm_area.air_vent_names) - var/list/I = alarm_area.air_vent_info[id_tag] - if(I && I["timestamp"] + AALARM_REPORT_TIMEOUT / 2 > world.time) - continue - send_signal(id_tag, list("status")) - for(var/id_tag in alarm_area.air_scrub_names) - var/list/I = alarm_area.air_scrub_info[id_tag] - if(I && I["timestamp"] + AALARM_REPORT_TIMEOUT / 2 > world.time) - continue - send_signal(id_tag, list("status")) - -/obj/machinery/alarm/proc/set_frequency(new_frequency) - radio_controller.remove_object(src, frequency) - frequency = new_frequency - radio_connection = radio_controller.add_object(src, frequency, RADIO_TO_AIRALARM) - -/obj/machinery/alarm/proc/send_signal(var/target, var/list/command)//sends signal 'command' to 'target'. Returns 0 if no radio connection, 1 otherwise - if(!radio_connection) - return 0 - - var/datum/signal/signal = new - signal.transmission_method = TRANSMISSION_RADIO //radio signal - signal.source = src - - signal.data = command - signal.data["tag"] = target - signal.data["sigtype"] = "command" - - radio_connection.post_signal(src, signal, RADIO_FROM_AIRALARM) -// TO_WORLD("Signal [command] Broadcasted to [target]") - - return 1 - -/obj/machinery/alarm/proc/apply_mode() - //propagate mode to other air alarms in the area - //TODO: make it so that players can choose between applying the new mode to the room they are in (related area) vs the entire alarm area - for(var/obj/machinery/alarm/AA in alarm_area) - AA.mode = mode - - switch(mode) - if(AALARM_MODE_SCRUBBING) - for(var/device_id in alarm_area.air_scrub_names) - send_signal(device_id, list("power"= 1, "co2_scrub"= 1, "scrubbing"= 1, "panic_siphon"= 0)) - for(var/device_id in alarm_area.air_vent_names) - send_signal(device_id, list("power"= 1, "checks"= "default", "set_external_pressure"= "default")) - - if(AALARM_MODE_PANIC, AALARM_MODE_CYCLE) - for(var/device_id in alarm_area.air_scrub_names) - send_signal(device_id, list("power"= 1, "panic_siphon"= 1)) - for(var/device_id in alarm_area.air_vent_names) - send_signal(device_id, list("power"= 0)) - - if(AALARM_MODE_REPLACEMENT) - for(var/device_id in alarm_area.air_scrub_names) - send_signal(device_id, list("power"= 1, "panic_siphon"= 1)) - for(var/device_id in alarm_area.air_vent_names) - send_signal(device_id, list("power"= 1, "checks"= "default", "set_external_pressure"= "default")) - - if(AALARM_MODE_FILL) - for(var/device_id in alarm_area.air_scrub_names) - send_signal(device_id, list("power"= 0)) - for(var/device_id in alarm_area.air_vent_names) - send_signal(device_id, list("power"= 1, "checks"= "default", "set_external_pressure"= "default")) - - if(AALARM_MODE_OFF) - for(var/device_id in alarm_area.air_scrub_names) - send_signal(device_id, list("power"= 0)) - for(var/device_id in alarm_area.air_vent_names) - send_signal(device_id, list("power"= 0)) - -/obj/machinery/alarm/proc/apply_danger_level(var/new_danger_level) - if(report_danger_level && alarm_area.atmosalert(new_danger_level, src)) - post_alert(new_danger_level) - - update_icon() - -/obj/machinery/alarm/proc/post_alert(alert_level) - var/datum/radio_frequency/frequency = radio_controller.return_frequency(alarm_frequency) - if(!frequency) - return - - var/datum/signal/alert_signal = new - alert_signal.source = src - alert_signal.transmission_method = TRANSMISSION_RADIO - alert_signal.data["zone"] = alarm_area.name - alert_signal.data["type"] = "Atmospheric" - - if(alert_level==2) - alert_signal.data["alert"] = "severe" - else if(alert_level==1) - alert_signal.data["alert"] = "minor" - else if(alert_level==0) - alert_signal.data["alert"] = "clear" - - frequency.post_signal(src, alert_signal) - -/obj/machinery/alarm/attack_ai(mob/user) - ui_interact(user) - -/obj/machinery/alarm/attack_hand(mob/user, list/params) - . = ..() - if(.) - return - return interact(user) - -/obj/machinery/alarm/interact(mob/user) - ui_interact(user) - wires.Interact(user) - -/obj/machinery/alarm/ui_status(mob/user) - if(isAI(user) && aidisabled) - to_chat(user, "AI control has been disabled.") - else if(!shorted) - return ..() - return UI_CLOSE - -/obj/machinery/alarm/ui_interact(mob/user, datum/tgui/ui, datum/tgui/parent_ui, datum/ui_state/state) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "AirAlarm", name, parent_ui) - if(state) - ui.set_state(state) - ui.open() - -/obj/machinery/alarm/ui_data(mob/user, datum/tgui/ui, datum/ui_state/state) - var/list/data = list( - "locked" = locked, - "siliconUser" = issilicon(user), - "remoteUser" = !!ui.parent_ui, - "danger_level" = danger_level, - "target_temperature" = "[target_temperature - T0C]C", - "rcon" = rcon_setting, - ) - - var/area/A = get_area(src) - data["atmos_alarm"] = A?.atmosalm - data["fire_alarm"] = A?.fire - - var/turf/T = get_turf(src) - var/datum/gas_mixture/environment = T.return_air() - - var/list/list/environment_data = list() - data["environment_data"] = environment_data - - DECLARE_TLV_VALUES - - var/pressure = environment.return_pressure() - LOAD_TLV_VALUES(TLV["pressure"], pressure) - environment_data.Add(list(list( - "name" = "Pressure", - "value" = pressure, - "unit" = "kPa", - "danger_level" = TEST_TLV_VALUES - ))) - - var/temperature = environment.temperature - LOAD_TLV_VALUES(TLV["temperature"], temperature) - environment_data.Add(list(list( - "name" = "Temperature", - "value" = temperature, - "unit" = "K ([round(temperature - T0C, 0.1)]C)", - "danger_level" = TEST_TLV_VALUES - ))) - - var/total_moles = environment.total_moles - var/partial_pressure = R_IDEAL_GAS_EQUATION * environment.temperature / environment.volume - for(var/gas_id in environment.gas) - if(!(gas_id in TLV)) - continue - LOAD_TLV_VALUES(TLV[gas_id], environment.gas[gas_id] * partial_pressure) - environment_data.Add(list(list( - "name" = gas_id, - "value" = environment.gas[gas_id] / total_moles * 100, - "unit" = "%", - "danger_level" = TEST_TLV_VALUES - ))) - - if(!locked || issilicon(user) || data["remoteUser"]) - var/list/list/vents = list() - data["vents"] = vents - for(var/id_tag in A.air_vent_names) - var/long_name = A.air_vent_names[id_tag] - var/list/info = A.air_vent_info[id_tag] - if(!info) - continue - vents.Add(list(list( - "id_tag" = id_tag, - "long_name" = sanitize(long_name), - "power" = info["power"], - "checks" = info["checks"], - "excheck" = info["checks"]&1, - "incheck" = info["checks"]&2, - "direction" = info["direction"], - "external" = info["external"], - "internal" = info["internal"], - "extdefault"= (info["external"] == ONE_ATMOSPHERE), - "intdefault"= (info["internal"] == 0), - ))) - - - var/list/list/scrubbers = list() - data["scrubbers"] = scrubbers - for(var/id_tag in alarm_area.air_scrub_names) - var/long_name = alarm_area.air_scrub_names[id_tag] - var/list/info = alarm_area.air_scrub_info[id_tag] - if(!info) - continue - scrubbers += list(list( - "id_tag" = id_tag, - "long_name" = sanitize(long_name), - "power" = info["power"], - "scrubbing" = info["scrubbing"], - "panic" = info["panic"], - "filters" = list( - list("name" = "Oxygen", "command" = "o2_scrub", "val" = info["filter_o2"]), - list("name" = "Nitrogen", "command" = "n2_scrub", "val" = info["filter_n2"]), - list("name" = "Carbon Dioxide", "command" = "co2_scrub","val" = info["filter_co2"]), - list("name" = "Toxin" , "command" = "tox_scrub","val" = info["filter_phoron"]), - list("name" = "Nitrous Oxide", "command" = "n2o_scrub","val" = info["filter_n2o"]), - list("name" = "Fuel", "command" = "fuel_scrub","val" = info["filter_fuel"]) - ) - )) - data["scrubbers"] = scrubbers - - data["mode"] = mode - - var/list/list/modes = list() - data["modes"] = modes - modes[++modes.len] = list("name" = "Filtering - Scrubs out contaminants", "mode" = AALARM_MODE_SCRUBBING, "selected" = mode == AALARM_MODE_SCRUBBING, "danger" = 0) - modes[++modes.len] = list("name" = "Replace Air - Siphons out air while replacing", "mode" = AALARM_MODE_REPLACEMENT, "selected" = mode == AALARM_MODE_REPLACEMENT, "danger" = 0) - modes[++modes.len] = list("name" = "Panic - Siphons air out of the room", "mode" = AALARM_MODE_PANIC, "selected" = mode == AALARM_MODE_PANIC, "danger" = 1) - modes[++modes.len] = list("name" = "Cycle - Siphons air before replacing", "mode" = AALARM_MODE_CYCLE, "selected" = mode == AALARM_MODE_CYCLE, "danger" = 1) - modes[++modes.len] = list("name" = "Fill - Shuts off scrubbers and opens vents", "mode" = AALARM_MODE_FILL, "selected" = mode == AALARM_MODE_FILL, "danger" = 0) - modes[++modes.len] = list("name" = "Off - Shuts off vents and scrubbers", "mode" = AALARM_MODE_OFF, "selected" = mode == AALARM_MODE_OFF, "danger" = 0) - - var/list/selected - var/list/thresholds = list() - - var/list/gas_names = list("oxygen", "carbon dioxide", "phoron", "other") - for(var/g in gas_names) - thresholds[++thresholds.len] = list("name" = g, "settings" = list()) - selected = TLV[g] - for(var/i = 1, i <= 4, i++) - thresholds[thresholds.len]["settings"] += list(list("env" = g, "val" = i, "selected" = selected[i])) - - selected = TLV["pressure"] - thresholds[++thresholds.len] = list("name" = "Pressure", "settings" = list()) - for(var/i = 1, i <= 4, i++) - thresholds[thresholds.len]["settings"] += list(list("env" = "pressure", "val" = i, "selected" = selected[i])) - - selected = TLV["temperature"] - thresholds[++thresholds.len] = list("name" = "Temperature", "settings" = list()) - for(var/i = 1, i <= 4, i++) - thresholds[thresholds.len]["settings"] += list(list("env" = "temperature", "val" = i, "selected" = selected[i])) - - data["thresholds"] = thresholds - return data - -/obj/machinery/alarm/ui_act(action, params, datum/tgui/ui) - if(..()) - return TRUE - - if(action == "rcon") - var/attempted_rcon_setting = text2num(params["rcon"]) - - switch(attempted_rcon_setting) - if(RCON_NO) - rcon_setting = RCON_NO - if(RCON_AUTO) - rcon_setting = RCON_AUTO - if(RCON_YES) - rcon_setting = RCON_YES - return TRUE - - if(action == "temperature") - var/list/selected = TLV["temperature"] - var/max_temperature = min(selected[3] - T0C, MAX_TEMPERATURE) - var/min_temperature = max(selected[2] - T0C, MIN_TEMPERATURE) - var/input_temperature = tgui_input_number(usr, "What temperature would you like the system to mantain? (Capped between [min_temperature] and [max_temperature]C)", "Thermostat Controls", (target_temperature - T0C), max_temperature, min_temperature) - if(isnum(input_temperature)) - if(input_temperature > max_temperature || input_temperature < min_temperature) - to_chat(usr, "Temperature must be between [min_temperature]C and [max_temperature]C") - else - target_temperature = input_temperature + T0C - return TRUE - - // Account for remote users here. - // Yes, this is kinda snowflaky; however, I would argue it would be far more snowflakey - // to include "custom hrefs" and all the other bullshit that nano states have just for the - // like, two UIs, that want remote access to other UIs. - if((locked && !issilicon(usr) && !istype(ui.state, /datum/ui_state/air_alarm_remote)) || (issilicon(usr) && aidisabled)) - return - - var/device_id = params["id_tag"] - switch(action) - if("lock") - if(issilicon(usr) && !wires.is_cut(WIRE_IDSCAN)) - locked = !locked - . = TRUE - if( "power", - "o2_scrub", - "n2_scrub", - "co2_scrub", - "tox_scrub", - "n2o_scrub", - "fuel_scrub", - "panic_siphon", - "scrubbing", - "direction") - send_signal(device_id, list("[action]" = text2num(params["val"])), usr) - . = TRUE - if("excheck") - send_signal(device_id, list("checks" = text2num(params["val"])^1), usr) - . = TRUE - if("incheck") - send_signal(device_id, list("checks" = text2num(params["val"])^2), usr) - . = TRUE - if("set_external_pressure", "set_internal_pressure") - var/target = params["value"] - if(!isnull(target)) - send_signal(device_id, list("[action]" = target), usr) - . = TRUE - if("reset_external_pressure") - send_signal(device_id, list("reset_external_pressure"), usr) - . = TRUE - if("reset_internal_pressure") - send_signal(device_id, list("reset_internal_pressure"), usr) - . = TRUE - if("threshold") - var/env = params["env"] - - var/name = params["var"] - var/value = input(usr, "New [name] for [env]:", name, TLV[env][name]) as num|null - if(!isnull(value) && !..()) - if(value < 0) - TLV[env][name] = -1 - else - TLV[env][name] = round(value, 0.01) - clamp_tlv_values(env, name) - // investigate_log(" treshold value for [env]:[name] was set to [value] by [key_name(usr)]",INVESTIGATE_ATMOS) - . = TRUE - if("mode") - mode = text2num(params["mode"]) - // investigate_log("was turned to [get_mode_name(mode)] mode by [key_name(usr)]",INVESTIGATE_ATMOS) - apply_mode(usr) - . = TRUE - if("alarm") - if(alarm_area.atmosalert(2, src)) - apply_danger_level(2) - . = TRUE - if("reset") - atmos_reset() - . = TRUE - update_icon() - -// This big ol' mess just ensures that TLV always makes sense. If you set the max value below the min value, -// it'll automatically update all the other values to keep it sane. -/obj/machinery/alarm/proc/clamp_tlv_values(env, changed_threshold) - var/list/selected = TLV[env] - switch(changed_threshold) - if(1) - if(selected[1] > selected[2]) - selected[2] = selected[1] - if(selected[1] > selected[3]) - selected[3] = selected[1] - if(selected[1] > selected[4]) - selected[4] = selected[1] - if(2) - if(selected[1] > selected[2]) - selected[1] = selected[2] - if(selected[2] > selected[3]) - selected[3] = selected[2] - if(selected[2] > selected[4]) - selected[4] = selected[2] - if(3) - if(selected[1] > selected[3]) - selected[1] = selected[3] - if(selected[2] > selected[3]) - selected[2] = selected[3] - if(selected[3] > selected[4]) - selected[4] = selected[3] - if(4) - if(selected[1] > selected[4]) - selected[1] = selected[4] - if(selected[2] > selected[4]) - selected[2] = selected[4] - if(selected[3] > selected[4]) - selected[3] = selected[4] - - - - -/obj/machinery/alarm/proc/atmos_reset() - if(alarm_area.atmosalert(0, src)) - apply_danger_level(0) - update_icon() - -/obj/machinery/alarm/attackby(obj/item/W as obj, mob/user as mob) - add_fingerprint(user) - if(alarm_deconstruction_screwdriver(user, W)) - return - if(alarm_deconstruction_wirecutters(user, W)) - return - - if(istype(W, /obj/item/card/id) || istype(W, /obj/item/pda))// trying to unlock the interface with an ID card - togglelock() - return ..() - -/obj/machinery/alarm/verb/togglelock(mob/user as mob) - if(machine_stat & (NOPOWER|BROKEN)) - to_chat(user, "It does nothing.") - return - else - if(allowed(usr) && !wires.is_cut(WIRE_IDSCAN)) - locked = !locked - to_chat(user, SPAN_NOTICE("You [locked ? "lock" : "unlock"] the Air Alarm interface.")) - else - to_chat(user, SPAN_BOLDWARNING("Access denied.")) - return - -/obj/machinery/alarm/AltClick() - ..() - togglelock() - -/obj/machinery/alarm/power_change() - ..() - spawn(rand(0,15)) - update_icon() -/obj/machinery/alarm/freezer - target_temperature = T0C - 13.15 // Chilly freezer room - -/obj/machinery/alarm/freezer/first_run() - . = ..() - - TLV["temperature"] = list(T0C - 40, T0C - 20, T0C + 40, T0C + 66) // K, Lower Temperature for Freezer Air Alarms (This is because TLV is hardcoded to be generated on first_run, and therefore the only way to modify this without changing TLV generation) - -#undef LOAD_TLV_VALUES -#undef TEST_TLV_VALUES -#undef DECLARE_TLV_VALUES diff --git a/code/game/machinery/atmo_control.dm b/code/game/machinery/atmo_control.dm index d6231dd100b..8a232b6d316 100644 --- a/code/game/machinery/atmo_control.dm +++ b/code/game/machinery/atmo_control.dm @@ -41,13 +41,13 @@ var/total_moles = air_sample.total_moles if(total_moles > 0) if(output&4) - signal.data["oxygen"] = round(100*air_sample.gas[/datum/gas/oxygen]/total_moles,0.1) + signal.data["oxygen"] = round(100*air_sample.gas[GAS_ID_OXYGEN]/total_moles,0.1) if(output&8) - signal.data["phoron"] = round(100*air_sample.gas[/datum/gas/phoron]/total_moles,0.1) + signal.data["phoron"] = round(100*air_sample.gas[GAS_ID_PHORON]/total_moles,0.1) if(output&16) - signal.data["nitrogen"] = round(100*air_sample.gas[/datum/gas/nitrogen]/total_moles,0.1) + signal.data["nitrogen"] = round(100*air_sample.gas[GAS_ID_NITROGEN]/total_moles,0.1) if(output&32) - signal.data["carbon_dioxide"] = round(100*air_sample.gas[/datum/gas/carbon_dioxide]/total_moles,0.1) + signal.data["carbon_dioxide"] = round(100*air_sample.gas[GAS_ID_CARBON_DIOXIDE]/total_moles,0.1) else signal.data["oxygen"] = 0 signal.data["phoron"] = 0 diff --git a/code/game/machinery/atmoalter/scrubber.dm b/code/game/machinery/atmoalter/scrubber.dm deleted file mode 100644 index 16dd175f9c6..00000000000 --- a/code/game/machinery/atmoalter/scrubber.dm +++ /dev/null @@ -1,279 +0,0 @@ -/obj/machinery/portable_atmospherics/powered/scrubber - name = "Portable Air Scrubber" - - icon = 'icons/obj/atmos.dmi' - icon_state = "pscrubber:0" - density = 1 - w_class = ITEMSIZE_NORMAL - - var/on = 0 - var/volume_rate = 800 - - volume = 750 - - power_rating = 7500 //7500 W ~ 10 HP - power_losses = 150 - - var/minrate = 0 - var/maxrate = 10 * ONE_ATMOSPHERE - - var/list/scrubbing_gas = list(/datum/gas/carbon_dioxide, /datum/gas/volatile_fuel, /datum/gas/phoron, /datum/gas/nitrous_oxide, - /datum/gas/helium, /datum/gas/carbon_monoxide, /datum/gas/methyl_bromide, /datum/gas/nitrodioxide, /datum/gas/nitricoxide, - /datum/gas/methane, /datum/gas/argon, /datum/gas/krypton, /datum/gas/neon, /datum/gas/ammonia, /datum/gas/xenon, /datum/gas/chlorine, - /datum/gas/sulfur_dioxide, /datum/gas/hydrogen) - -/obj/machinery/portable_atmospherics/powered/scrubber/Initialize(mapload) - . = ..() - for(var/i in scrubbing_gas) - if(!ispath(i)) - scrubbing_gas -= i - var/path = gas_id2path(i) - if(!path) - stack_trace("Invalid gas id [i]") - else - scrubbing_gas += path - cell = new/obj/item/cell/apc(src) - -/obj/machinery/portable_atmospherics/powered/scrubber/emp_act(severity) - if(machine_stat & (BROKEN|NOPOWER)) - ..(severity) - return - - if(prob(50/severity)) - on = !on - update_icon() - - ..(severity) - -/obj/machinery/portable_atmospherics/powered/scrubber/update_icon_state() - . = ..() - if(on && cell && cell.charge) - icon_state = "pscrubber:1" - else - icon_state = "pscrubber:0" - -/obj/machinery/portable_atmospherics/powered/scrubber/update_overlays() - . = ..() - if(holding) - . += "scrubber-open" - - if(connected_port) - . += "scrubber-connector" - -/obj/machinery/portable_atmospherics/powered/scrubber/process(delta_time) - ..() - - var/power_draw = -1 - - if(on && cell && cell.charge) - var/datum/gas_mixture/environment - if(holding) - environment = holding.air_contents - else - environment = loc.return_air() - - var/transfer_moles = min(1, volume_rate/environment.volume)*environment.total_moles - - power_draw = scrub_gas(src, scrubbing_gas, environment, air_contents, transfer_moles, power_rating) - - if (power_draw < 0) - last_flow_rate = 0 - last_power_draw = 0 - else - power_draw = max(power_draw, power_losses) - cell.use_scaled(DYNAMIC_W_TO_CELL_UNITS(power_draw, 1)) - last_power_draw = power_draw - - update_connected_network() - - //ran out of charge - if (!cell.charge) - power_change() - update_icon() - - //src.update_icon() - src.updateDialog() - -/obj/machinery/portable_atmospherics/powered/scrubber/return_air() - return air_contents - -/obj/machinery/portable_atmospherics/powered/scrubber/attack_ai(var/mob/user) - src.add_hiddenprint(user) - return src.attack_hand(user) - -/obj/machinery/portable_atmospherics/powered/scrubber/attack_ghost(var/mob/user) - . = ..() - return src.attack_hand(user) - -/obj/machinery/portable_atmospherics/powered/scrubber/attack_hand(mob/user, list/params) - ui_interact(user) - -/obj/machinery/portable_atmospherics/powered/scrubber/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "PortableScrubber", name) - ui.open() - -/obj/machinery/portable_atmospherics/powered/scrubber/ui_data(mob/user) - var/list/data = list() - - data["on"] = on ? 1 : 0 - data["connected"] = connected_port ? 1 : 0 - data["pressure"] = round(air_contents.return_pressure() > 0 ? air_contents.return_pressure() : 0) - data["rate"] = round(volume_rate) - data["minrate"] = round(minrate) - data["maxrate"] = round(maxrate) - data["powerDraw"] = round(last_power_draw) - data["cellCharge"] = cell ? cell.charge : 0 - data["cellMaxCharge"] = cell ? cell.maxcharge : 1 - - if(holding) - data["holding"] = list() - data["holding"]["name"] = holding.name - data["holding"]["pressure"] = round(holding.air_contents.return_pressure() > 0 ? holding.air_contents.return_pressure() : 0) - else - data["holding"] = null - - return data - -/obj/machinery/portable_atmospherics/powered/scrubber/ui_act(action, params) - if(..()) - return TRUE - - switch(action) - if("power") - on = !on - . = TRUE - if("eject") - if(holding) - holding.loc = loc - holding = null - . = TRUE - if("volume_adj") - volume_rate = clamp(text2num(params["vol"]), minrate, maxrate) - . = TRUE - - update_icon() - -//Huge scrubber -/obj/machinery/portable_atmospherics/powered/scrubber/huge - name = "Huge Air Scrubber" - icon = 'icons/obj/atmos_vr.dmi' - icon_state = "scrubber:0" - anchored = TRUE - volume = 500000 - volume_rate = 7000 - - use_power = USE_POWER_IDLE - idle_power_usage = 50 //internal circuitry, friction losses and stuff - active_power_usage = 1000 // Blowers running - power_rating = 100000 //100 kW ~ 135 HP - - var/global/gid = 1 - var/id = 0 - -/obj/machinery/portable_atmospherics/powered/scrubber/huge/Initialize(mapload) - . = ..() - cell = null - - id = gid - gid++ - - name = "[name] (ID [id])" - -/obj/machinery/portable_atmospherics/powered/scrubber/huge/attack_hand(mob/user, list/params) - to_chat(user, "You can't directly interact with this machine. Use the scrubber control console.") - -/obj/machinery/portable_atmospherics/powered/scrubber/huge/update_icon() - cut_overlays() - - if(on && !(machine_stat & (NOPOWER|BROKEN))) - icon_state = "scrubber:1" - else - icon_state = "scrubber:0" - -/obj/machinery/portable_atmospherics/powered/scrubber/huge/power_change() - var/old_stat = machine_stat - ..() - if (old_stat != machine_stat) - update_icon() - -/obj/machinery/portable_atmospherics/powered/scrubber/huge/process(delta_time) - if(!anchored || (machine_stat & (NOPOWER|BROKEN))) - on = 0 - last_flow_rate = 0 - last_power_draw = 0 - update_icon() - var/new_use_power = 1 + on - if(new_use_power != use_power) - update_use_power(new_use_power) - if(!on) - return - - var/power_draw = -1 - - var/datum/gas_mixture/environment = loc.return_air() - - var/transfer_moles = min(1, volume_rate/environment.volume)*environment.total_moles - - power_draw = scrub_gas(src, scrubbing_gas, environment, air_contents, transfer_moles, active_power_usage) - - if (power_draw < 0) - last_flow_rate = 0 - last_power_draw = 0 - else - use_power(power_draw) - update_connected_network() - -/obj/machinery/portable_atmospherics/powered/scrubber/huge/attackby(var/obj/item/I as obj, var/mob/user as mob) - if(I.is_wrench()) - if(on) - to_chat(user, "Turn \the [src] off first!") - return - - anchored = !anchored - playsound(src.loc, I.tool_sound, 50, 1) - to_chat(user, "You [anchored ? "wrench" : "unwrench"] \the [src].") - - return - - //doesn't use power cells - if(istype(I, /obj/item/cell)) - return - if(I.is_screwdriver()) - return - - //doesn't hold tanks - if(istype(I, /obj/item/tank)) - return - - ..() - - -/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary - name = "Stationary Air Scrubber" - -/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/attackby(var/obj/item/I as obj, var/mob/user as mob) - if(I.is_wrench()) - to_chat(user, "The bolts are too tight for you to unscrew!") - return - - ..() - -// Tether tram air scrubbers for keeping arrivals clean - they work even with no area power -/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/tram - name = "\improper Tram Air Scrubber" - icon_state = "scrubber:1" - on = TRUE - -/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/tram/powered() - return TRUE // Always be powered - -// Triumph shuttle air scrubbers for keeping arrivals clean - they work even with no area power -/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/shuttle - name = "\improper Shuttle Air Scrubber" - icon_state = "scrubber:1" - on = TRUE - -/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/shuttle/powered() - return TRUE // Always be powered diff --git a/code/game/machinery/bomb_tester.dm b/code/game/machinery/bomb_tester.dm index 48d68ca5326..4d042530955 100644 --- a/code/game/machinery/bomb_tester.dm +++ b/code/game/machinery/bomb_tester.dm @@ -370,7 +370,7 @@ if(G.total_moles) results += "
Temperature: [round(G.temperature-T0C)]°C" for(var/mix in G.gas) - results += "
[GLOB.meta_gas_names[mix]]: [round((G.gas[mix] / G.total_moles) * 100)]%" + results += "
[global.gas_data.names[mix]]: [round((G.gas[mix] / G.total_moles) * 100)]%" return results diff --git a/code/game/machinery/computer/atmos_alert.dm b/code/game/machinery/computer/atmos_alert.dm index 153bf06d024..3a54262c390 100644 --- a/code/game/machinery/computer/atmos_alert.dm +++ b/code/game/machinery/computer/atmos_alert.dm @@ -67,7 +67,7 @@ var/global/list/minor_air_alarms = list() var/datum/alarm/alarm = locate(params["ref"]) in atmosphere_alarm.alarms if(alarm) for(var/datum/alarm_source/alarm_source in alarm.sources) - var/obj/machinery/alarm/air_alarm = alarm_source.source + var/obj/machinery/air_alarm/air_alarm = alarm_source.source if(istype(air_alarm)) // I have to leave a note here: // Once upon a time, this called air_alarm.Topic() with a custom topic state diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index bea8fe774fe..b574db38987 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -9,7 +9,6 @@ layer = UNDER_JUNK_LAYER interaction_flags_machine = INTERACT_MACHINE_OFFLINE | INTERACT_MACHINE_ALLOW_SILICON - var/on = FALSE use_power = USE_POWER_IDLE idle_power_usage = 20 active_power_usage = 200 @@ -25,8 +24,6 @@ var/image/fluid /obj/machinery/atmospherics/component/unary/cryo_cell/Initialize(mapload) - . = ..() - icon = 'icons/obj/medical/cryogenics_split.dmi' icon_state = "base" initialize_directions = dir @@ -43,6 +40,10 @@ fluid.layer = MOB_LAYER+0.1 //Below glass, above mob add_overlay(tank) + + . = ..() + + // todo: duped, components update icon on init right? update_icon() /obj/machinery/atmospherics/component/unary/cryo_cell/Destroy() @@ -205,8 +206,6 @@ qdel(grab) put_mob(M) - return - /obj/machinery/atmospherics/component/unary/cryo_cell/MouseDroppedOnLegacy(mob/target, mob/user) //Allows borgs to put people into cryo without external assistance if(user.stat || user.lying || !Adjacent(user) || !target.Adjacent(user)|| !ishuman(target)) return @@ -233,7 +232,7 @@ if(occupant.bodytemperature < T0C) occupant.afflict_sleeping(20 * max(5, (1/occupant.bodytemperature)*2000)) occupant.afflict_unconscious(20 * max(5, (1/occupant.bodytemperature)*3000)) - if(air_contents.gas[/datum/gas/oxygen] > 2) + if(air_contents.gas[GAS_ID_OXYGEN] > 2) if(occupant.getOxyLoss()) occupant.adjustOxyLoss(-1) else occupant.adjustOxyLoss(-1) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index c29ec0c2b6c..fbb196b55be 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -319,7 +319,7 @@ GLOBAL_REAL_VAR(airlock_typecache) = typecacheof(list( /obj/machinery/door/airlock/phoron/proc/PhoronBurn(temperature) for(var/turf/simulated/floor/target_tile in range(2,loc)) - target_tile.assume_gas(/datum/gas/phoron, 35, 400+T0C) + target_tile.assume_gas(GAS_ID_PHORON, 35, 400+T0C) spawn (0) target_tile.hotspot_expose(temperature, 400) for(var/turf/simulated/wall/W in range(3,src)) W.burn((temperature/4))//Added so that you can't set off a massive chain reaction with a small flame diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index d6b3e404015..6a9520fe006 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -550,15 +550,15 @@ GLOBAL_LIST_INIT(firelock_align_types, typecacheof(list( update_nearby_tiles(need_rebuild) - if(!air_master) return 0 + if(!SSair) return 0 var/turf/simulated/source = loc var/turf/simulated/destination = get_step(source,dir) update_heat_protection(loc) - if(istype(source)) air_master.tiles_to_update += source - if(istype(destination)) air_master.tiles_to_update += destination + if(istype(source)) SSair.tiles_to_update += source + if(istype(destination)) SSair.tiles_to_update += destination return 1 */ diff --git a/code/game/machinery/doors/phoronlocks.dm b/code/game/machinery/doors/phoronlocks.dm index 134fb916d9c..28400e95cb2 100644 --- a/code/game/machinery/doors/phoronlocks.dm +++ b/code/game/machinery/doors/phoronlocks.dm @@ -23,7 +23,7 @@ if(on) var/datum/gas_mixture/air_sample = return_air() var/pressure = round(air_sample.return_pressure(), 0.1) - var/phoron = (/datum/gas/phoron in air_sample.gas) ? round(air_sample.gas[/datum/gas/phoron], 0.1) : 0 + var/phoron = (GAS_ID_PHORON in air_sample.gas) ? round(air_sample.gas[GAS_ID_PHORON], 0.1) : 0 if(abs(pressure - previousPressure) > 0.1 || previousPressure == null || abs(phoron - previousPhoron) > 0.1 || previousPhoron == null) var/datum/signal/signal = new @@ -92,8 +92,8 @@ return 1 /obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/phoronlock //Special scrubber with bonus inbuilt heater - volume_rate = 40000 active_power_usage = 2000 + efficiency_multiplier = 4 var/target_temp = T20C var/heating_power = 150000 @@ -113,11 +113,6 @@ removed.adjust_thermal_energy(clamp(heat_transfer,-heating_power,heating_power)) env.merge(removed) - var/transfer_moles = min(1, volume_rate/env.volume)*env.total_moles - for(var/i=1 to 3) //Scrubs 4 times as fast - scrub_gas(src, scrubbing_gas, env, air_contents, transfer_moles, active_power_usage) - - // // PHORON LOCK CONTROLLER // diff --git a/code/game/machinery/pipe/pipe_recipes.dm b/code/game/machinery/pipe/pipe_recipes.dm index 59399a2e206..8556ba5e2d9 100644 --- a/code/game/machinery/pipe/pipe_recipes.dm +++ b/code/game/machinery/pipe/pipe_recipes.dm @@ -30,7 +30,8 @@ GLOBAL_LIST_INIT(atmos_pipe_recipes, list( new /datum/pipe_info/pipe("Heat Pump", /obj/machinery/atmospherics/component/binary/heat_pump, TRUE), //new /datum/pipe_info/pipe("Automatic Shutoff Valve",/obj/machinery/atmospherics/valve/shutoff, TRUE), new /datum/pipe_info/pipe("Scrubber", /obj/machinery/atmospherics/component/unary/vent_scrubber, TRUE), - new /datum/pipe_info/pipe("Gas Filter", /obj/machinery/atmospherics/component/trinary/atmos_filter, TRUE), + new /datum/pipe_info/pipe("Gas Filter", /obj/machinery/atmospherics/component/trinary/filter, TRUE), + new /datum/pipe_info/pipe("Gas Molar Filter", /obj/machinery/atmospherics/component/trinary/molar_filter, TRUE), new /datum/pipe_info/pipe("Gas Mixer", /obj/machinery/atmospherics/component/trinary/mixer, TRUE), new /datum/pipe_info/pipe("Gas Mixer 'T'", /obj/machinery/atmospherics/component/trinary/mixer/t_mixer, TRUE), new /datum/pipe_info/pipe("Omni Gas Mixer", /obj/machinery/atmospherics/component/quaternary/mixer, TRUE), diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index 972f5dd7edc..7383b5c06e9 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -327,7 +327,7 @@ env.merge(removed) var/turf/T = get_turf(src) new /obj/effect/debris/cleanable/liquid_fuel(T, 5) - T.assume_gas(/datum/gas/volatile_fuel, 5, T20C) + T.assume_gas(GAS_ID_VOLATILE_FUEL, 5, T20C) T.hotspot_expose(700,400) var/datum/effect_system/spark_spread/s = new s.set_up(5, 0, T) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 0df4c120f5f..9f60d0376cb 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -1287,7 +1287,7 @@ /obj/item/weldingtool = 3, /obj/item/tool/wirecutters = 5, /obj/item/tool/wrench = 5, - /obj/item/analyzer = 5, + /obj/item/atmos_analyzer = 5, /obj/item/t_scanner = 5, /obj/item/tool/screwdriver = 5, /obj/item/flashlight/glowstick = 3, diff --git a/code/game/mecha/equipment/tools/generator.dm b/code/game/mecha/equipment/tools/generator.dm index 389d945d75b..3bb5fe69bca 100644 --- a/code/game/mecha/equipment/tools/generator.dm +++ b/code/game/mecha/equipment/tools/generator.dm @@ -96,11 +96,11 @@ return var/datum/gas_mixture/GM = new if(prob(10)) - T.assume_gas(/datum/gas/phoron, 100, 1500+T0C) + T.assume_gas(GAS_ID_PHORON, 100, 1500+T0C) T.visible_message("The [src] suddenly disgorges a cloud of heated phoron.") destroy() else - T.assume_gas(/datum/gas/phoron, 5, istype(T) ? T.air.temperature : T20C) + T.assume_gas(GAS_ID_PHORON, 5, istype(T) ? T.air.temperature : T20C) T.visible_message("The [src] suddenly disgorges a cloud of phoron.") T.assume_air(GM) return diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 90f9ff9c4d6..04dbf514158 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -408,7 +408,7 @@ cabin_air = new cabin_air.temperature = T20C cabin_air.volume = 200 - cabin_air.adjust_multi(/datum/gas/oxygen, O2STANDARD*cabin_air.volume/(R_IDEAL_GAS_EQUATION*cabin_air.temperature), /datum/gas/nitrogen, N2STANDARD*cabin_air.volume/(R_IDEAL_GAS_EQUATION*cabin_air.temperature)) + cabin_air.adjust_multi(GAS_ID_OXYGEN, O2STANDARD*cabin_air.volume/(R_IDEAL_GAS_EQUATION*cabin_air.temperature), GAS_ID_NITROGEN, N2STANDARD*cabin_air.volume/(R_IDEAL_GAS_EQUATION*cabin_air.temperature)) return cabin_air /obj/mecha/proc/add_radio() diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index f4868b547b2..88e0f990487 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -108,7 +108,7 @@ triggered = 1 for (var/turf/simulated/floor/target in range(1,src)) if(!target.blocks_air) - target.assume_gas(/datum/gas/chlorine, 30) + target.assume_gas(GAS_ID_CHLORINE, 30) visible_message("\The [src.name] detonates!") spawn(0) qdel(src) @@ -120,7 +120,7 @@ triggered = 1 for (var/turf/simulated/floor/target in range(1,src)) if(!target.blocks_air) - target.assume_gas(/datum/gas/nitrous_oxide, 30) + target.assume_gas(GAS_ID_NITROUS_OXIDE, 30) visible_message("\The [src.name] detonates!") spawn(0) qdel(src) @@ -132,7 +132,7 @@ triggered = 1 for (var/turf/simulated/floor/target in range(1,src)) if(!target.blocks_air) - target.assume_gas(/datum/gas/phoron, 30) + target.assume_gas(GAS_ID_PHORON, 30) target.hotspot_expose(1000, CELL_VOLUME) visible_message("\The [src.name] detonates!") spawn(0) diff --git a/code/game/objects/effects/spawners/bombspawner.dm b/code/game/objects/effects/spawners/bombspawner.dm index 212c00f13b8..4fde689a64f 100644 --- a/code/game/objects/effects/spawners/bombspawner.dm +++ b/code/game/objects/effects/spawners/bombspawner.dm @@ -173,14 +173,14 @@ OT.master = V PT.valve_welded = 1 - PT.air_contents.gas[/datum/gas/phoron] = phoron_amt - PT.air_contents.gas[/datum/gas/carbon_dioxide] = carbon_amt + PT.air_contents.gas[GAS_ID_PHORON] = phoron_amt + PT.air_contents.gas[GAS_ID_CARBON_DIOXIDE] = carbon_amt PT.air_contents.total_moles = phoron_amt + carbon_amt PT.air_contents.temperature = PHORON_MINIMUM_BURN_TEMPERATURE+1 PT.air_contents.update_values() OT.valve_welded = 1 - OT.air_contents.gas[/datum/gas/oxygen] = oxygen_amt + OT.air_contents.gas[GAS_ID_OXYGEN] = oxygen_amt OT.air_contents.total_moles = oxygen_amt OT.air_contents.temperature = PHORON_MINIMUM_BURN_TEMPERATURE+1 OT.air_contents.update_values() diff --git a/code/game/objects/effects/zone_divider.dm b/code/game/objects/effects/zone_divider.dm index a179ef2c265..946b6cf8933 100644 --- a/code/game/objects/effects/zone_divider.dm +++ b/code/game/objects/effects/zone_divider.dm @@ -12,7 +12,7 @@ // Special case to prevent us from being part of a zone during the first air master tick. // We must merge ourselves into a zone on next tick. This will cause a bit of lag on // startup, but it can't really be helped you know? - if(air_master.current_cycle == 0) + if(SSair.current_cycle == 0) if(!isturf(loc)) return SSticker.OnRoundstart(CALLBACK(loc, TYPE_PROC_REF(/turf, queue_zone_update))) diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm index 9f8a9b958a9..2051c966690 100644 --- a/code/game/objects/items/blueprints.dm +++ b/code/game/objects/items/blueprints.dm @@ -223,7 +223,7 @@ if (!oldtitle) // or replacetext goes to infinite loop return - for(var/obj/machinery/alarm/M in A) + for(var/obj/machinery/air_alarm/M in A) M.name = replacetext(M.name,oldtitle,title) for(var/obj/machinery/power/apc/M in A) M.name = replacetext(M.name,oldtitle,title) diff --git a/code/game/objects/items/circuitboards/frame.dm b/code/game/objects/items/circuitboards/frame.dm index 7d31d2ebb93..62e8713c407 100644 --- a/code/game/objects/items/circuitboards/frame.dm +++ b/code/game/objects/items/circuitboards/frame.dm @@ -52,7 +52,7 @@ /obj/item/circuitboard/airalarm name = T_BOARD("air alarm") - build_path = /obj/machinery/alarm + build_path = /obj/machinery/air_alarm board_type = new /datum/frame/frame_types/air_alarm materials = list(MAT_STEEL = 50, MAT_GLASS = 50) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index c73f5e2ea55..e643bfba9b5 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -1572,10 +1572,10 @@ GLOBAL_LIST_EMPTY(PDAs) var/pressure = environment.return_pressure() var/total_moles = environment.total_moles if (total_moles) - var/o2_level = environment.gas[/datum/gas/oxygen]/total_moles - var/n2_level = environment.gas[/datum/gas/nitrogen]/total_moles - var/co2_level = environment.gas[/datum/gas/carbon_dioxide]/total_moles - var/phoron_level = environment.gas[/datum/gas/phoron]/total_moles + var/o2_level = environment.gas[GAS_ID_OXYGEN]/total_moles + var/n2_level = environment.gas[GAS_ID_NITROGEN]/total_moles + var/co2_level = environment.gas[GAS_ID_CARBON_DIOXIDE]/total_moles + var/phoron_level = environment.gas[GAS_ID_PHORON]/total_moles var/unknown_level = 1-(o2_level+n2_level+co2_level+phoron_level) // entry is what the element is describing diff --git a/code/game/objects/items/devices/communicator/helper.dm b/code/game/objects/items/devices/communicator/helper.dm index b0508f8b2f2..ca06ce4b36b 100644 --- a/code/game/objects/items/devices/communicator/helper.dm +++ b/code/game/objects/items/devices/communicator/helper.dm @@ -6,10 +6,10 @@ var/pressure = environment.return_pressure() var/total_moles = environment.total_moles if (total_moles) - var/o2_level = environment.gas[/datum/gas/oxygen]/total_moles - var/n2_level = environment.gas[/datum/gas/nitrogen]/total_moles - var/co2_level = environment.gas[/datum/gas/carbon_dioxide]/total_moles - var/phoron_level = environment.gas[/datum/gas/phoron]/total_moles + var/o2_level = environment.gas[GAS_ID_OXYGEN]/total_moles + var/n2_level = environment.gas[GAS_ID_NITROGEN]/total_moles + var/co2_level = environment.gas[GAS_ID_CARBON_DIOXIDE]/total_moles + var/phoron_level = environment.gas[GAS_ID_PHORON]/total_moles var/unknown_level = 1-(o2_level+n2_level+co2_level+phoron_level) // Label is what the entry is describing diff --git a/code/game/objects/items/scanners/atmos.dm b/code/game/objects/items/scanners/atmos.dm new file mode 100644 index 00000000000..a36d8978f62 --- /dev/null +++ b/code/game/objects/items/scanners/atmos.dm @@ -0,0 +1,60 @@ +/obj/item/atmos_analyzer + name = "analyzer" + desc = "A hand-held environmental scanner which reports current gas levels." + icon = 'icons/obj/device.dmi' + icon_state = "atmos" + item_state = "analyzer" + w_class = ITEMSIZE_SMALL + slot_flags = SLOT_BELT + throw_force = 5 + throw_speed = 4 + throw_range = 20 + materials = list(MAT_STEEL = 30, MAT_GLASS = 20) + origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 1) + +/obj/item/atmos_analyzer/apidean + name = "\improper Apidean analyzer" + desc = "This analyzer has a strange, soft exterior and seems to faintly breathe." + icon_state = "apidae-analyzer" + +/obj/item/atmos_analyzer/longrange + name = "long-range analyzer" + desc = "A hand-held environmental scanner which reports current gas levels. This one uses bluespace technology." + icon = 'icons/obj/device.dmi' + icon_state = "atmos" + item_state = "analyzer" + w_class = ITEMSIZE_SMALL + slot_flags = SLOT_BELT + throw_force = 5 + throw_speed = 4 + throw_range = 20 + materials = list(MAT_STEEL = 30, MAT_GLASS = 20) + origin_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 3) + +/obj/item/atmos_analyzer/atmosanalyze(var/mob/user) + var/air = user.return_air() + if (!air) + return + + return atmosanalyzer_scan(src, air, user) + +/obj/item/atmos_analyzer/attack_self(mob/user) + . = ..() + if(.) + return + + analyze_gases(src, user) + return + +/obj/item/atmos_analyzer/afterattack(atom/target, mob/user, clickchain_flags, list/params) + if(clickchain_flags & CLICKCHAIN_HAS_PROXIMITY) + if(istype(target, /obj/item/tank)) // don't double post what atmosanalyzer_scan returns + return + analyze_gases(target, user) + return + +/obj/item/atmos_analyzer/longrange/afterattack(atom/target, mob/user, clickchain_flags, list/params) + if(istype(target, /obj/item/tank)) // don't double post what atmosanalyzer_scan returns + return + analyze_gases(target, user) + return diff --git a/code/modules/xenobio2/tools/xeno_trait_scanner.dm b/code/game/objects/items/scanners/biology.dm similarity index 94% rename from code/modules/xenobio2/tools/xeno_trait_scanner.dm rename to code/game/objects/items/scanners/biology.dm index d1fbfd80461..1baffbd71d8 100644 --- a/code/modules/xenobio2/tools/xeno_trait_scanner.dm +++ b/code/game/objects/items/scanners/biology.dm @@ -1,10 +1,10 @@ -/obj/item/analyzer/xeno_analyzer +/obj/item/biology_analyzer name = "exotic biological analyzer" desc = "A device to investigate the genetic data of a biological target." var/form_title var/last_data -/obj/item/analyzer/xeno_analyzer/proc/print_report_verb() +/obj/item/biology_analyzer/proc/print_report_verb() set name = "Print Plant Report" set category = "Object" set src = usr @@ -13,13 +13,13 @@ return print_report(usr) -/obj/item/analyzer/xeno_analyzer/Topic(href, href_list) +/obj/item/biology_analyzer/Topic(href, href_list) if(..()) return if(href_list["print"]) print_report(usr) -/obj/item/analyzer/xeno_analyzer/proc/print_report(var/mob/living/user) +/obj/item/biology_analyzer/proc/print_report(var/mob/living/user) if(!last_data) to_chat(user, "There is no scan data to print.") return @@ -31,14 +31,14 @@ user.visible_message("\The [src] spits out a piece of paper.") return -/obj/item/analyzer/xeno_analyzer/attack_self(mob/user) +/obj/item/biology_analyzer/attack_self(mob/user) . = ..() if(.) return print_report(user) return 0 -/obj/item/analyzer/xeno_analyzer/afterattack(atom/target, mob/user, clickchain_flags, list/params) +/obj/item/biology_analyzer/afterattack(atom/target, mob/user, clickchain_flags, list/params) if(!flag) return var/datum/xeno/traits/trait_info diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/scanners/health.dm similarity index 65% rename from code/game/objects/items/devices/scanners.dm rename to code/game/objects/items/scanners/health.dm index 7cd3bb4c9ac..2a5c6f53109 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/scanners/health.dm @@ -1,16 +1,3 @@ -/// Past this many seconds, defib is useless. -#define DEFIB_TIME_LIMIT (10 MINUTES) -/* -CONTAINS: -T-RAY -DETECTIVE SCANNER -HEALTH ANALYZER -GAS ANALYZER - Analyzes atmosphere, container -MASS SPECTROMETER -REAGENT SCANNER -HALOGEN COUNTER - Radcount on mobs -*/ - /obj/item/healthanalyzer name = "health analyzer" desc = "A hand-held body scanner able to distinguish vital signs of the subject." @@ -91,8 +78,7 @@ HALOGEN COUNTER - Radcount on mobs if(M.timeofdeath && (M.stat == DEAD || (M.status_flags & STATUS_FAKEDEATH))) dat += SPAN_NOTICE("\nTime of Death: [worldtime2stationtime(M.timeofdeath)]") var/tdelta = round(world.time - M.timeofdeath) - if(tdelta < (DEFIB_TIME_LIMIT * 10)) - dat += SPAN_BOLDNOTICE("\nSubject died [DisplayTimeText(tdelta)] ago - resuscitation may be possible!") + dat += SPAN_BOLDNOTICE("\nSubject died [DisplayTimeText(tdelta)] ago - resuscitation may be possible!") if(istype(M, /mob/living/carbon/human) && mode == 1) var/mob/living/carbon/human/H = M var/list/damaged = H.get_damaged_organs(1,1) @@ -334,236 +320,3 @@ HALOGEN COUNTER - Radcount on mobs advscan = 3 origin_tech = list(TECH_MAGNET = 7, TECH_BIO = 8) icon_state = "health3" - -/obj/item/analyzer - name = "analyzer" - desc = "A hand-held environmental scanner which reports current gas levels." - icon = 'icons/obj/device.dmi' - icon_state = "atmos" - item_state = "analyzer" - w_class = ITEMSIZE_SMALL - slot_flags = SLOT_BELT - throw_force = 5 - throw_speed = 4 - throw_range = 20 - - materials = list(MAT_STEEL = 30, MAT_GLASS = 20) - - origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 1) - -/obj/item/analyzer/apidean - name = "\improper Apidean analyzer" - desc = "This analyzer has a strange, soft exterior and seems to faintly breathe." - icon_state = "apidae-analyzer" - -/obj/item/analyzer/longrange - name = "long-range analyzer" - desc = "A hand-held environmental scanner which reports current gas levels. This one uses bluespace technology." - icon = 'icons/obj/device.dmi' - icon_state = "atmos" - item_state = "analyzer" - w_class = ITEMSIZE_SMALL - slot_flags = SLOT_BELT - throw_force = 5 - throw_speed = 4 - throw_range = 20 - materials = list(MAT_STEEL = 30, MAT_GLASS = 20) - origin_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 3) - -/obj/item/analyzer/atmosanalyze(var/mob/user) - var/air = user.return_air() - if (!air) - return - - return atmosanalyzer_scan(src, air, user) - -/obj/item/analyzer/attack_self(mob/user) - . = ..() - if(.) - return - if (user.stat) - return - if (!(ishuman(user) || SSticker) && SSticker.mode.name != "monkey") - to_chat(usr, "You don't have the dexterity to do this!") - return - - analyze_gases(src, user) - return - -/obj/item/analyzer/afterattack(atom/target, mob/user, clickchain_flags, list/params) - if(clickchain_flags & CLICKCHAIN_HAS_PROXIMITY) - if(istype(target, /obj/item/tank)) // don't double post what atmosanalyzer_scan returns - return - analyze_gases(target, user) - return - -/obj/item/analyzer/longrange/afterattack(atom/target, mob/user, clickchain_flags, list/params) - if(istype(target, /obj/item/tank)) // don't double post what atmosanalyzer_scan returns - return - analyze_gases(target, user) - return - -/obj/item/mass_spectrometer - name = "mass spectrometer" - desc = "A hand-held mass spectrometer which identifies trace chemicals in a blood sample." - icon = 'icons/obj/device.dmi' - icon_state = "spectrometer" - w_class = ITEMSIZE_SMALL - atom_flags = OPENCONTAINER - slot_flags = SLOT_BELT - throw_force = 5 - throw_speed = 4 - throw_range = 20 - - materials = list(MAT_STEEL = 30, MAT_GLASS = 20) - - origin_tech = list(TECH_MAGNET = 2, TECH_BIO = 2) - var/details = 0 - var/recent_fail = 0 - -/obj/item/mass_spectrometer/Initialize(mapload) - . = ..() - var/datum/reagents/R = new/datum/reagents(5) - reagents = R - R.my_atom = src - -/obj/item/mass_spectrometer/on_reagent_change() - if(reagents.total_volume) - icon_state = initial(icon_state) + "_s" - else - icon_state = initial(icon_state) - -/obj/item/mass_spectrometer/attack_self(mob/user) - . = ..() - if(.) - return - if (user.stat) - return - if (!(ishuman(user) || SSticker) && SSticker.mode.name != "monkey") - to_chat(user, "You don't have the dexterity to do this!") - return - if(reagents.total_volume) - var/list/blood_traces = list() - for(var/datum/reagent/R in reagents.reagent_list) - if(R.id != "blood") - reagents.clear_reagents() - to_chat(user, "The sample was contaminated! Please insert another sample") - return - else - blood_traces = params2list(R.data["trace_chem"]) - break - var/dat = "Trace Chemicals Found: " - for(var/R in blood_traces) - if(details) - dat += "[R] ([blood_traces[R]] units) " - else - dat += "[R] " - to_chat(user, "[dat]") - reagents.clear_reagents() - return - -/obj/item/mass_spectrometer/adv - name = "advanced mass spectrometer" - icon_state = "adv_spectrometer" - details = 1 - origin_tech = list(TECH_MAGNET = 4, TECH_BIO = 2) - -/obj/item/reagent_scanner - name = "reagent scanner" - desc = "A hand-held reagent scanner which identifies chemical agents." - icon = 'icons/obj/device.dmi' - icon_state = "spectrometer" - item_state = "analyzer" - w_class = ITEMSIZE_SMALL - slot_flags = SLOT_BELT - throw_force = 5 - throw_speed = 4 - throw_range = 20 - materials = list(MAT_STEEL = 30, MAT_GLASS = 20) - - origin_tech = list(TECH_MAGNET = 2, TECH_BIO = 2) - var/details = 0 - var/recent_fail = 0 - -/obj/item/reagent_scanner/afterattack(atom/target, mob/user, clickchain_flags, list/params) - if(!(clickchain_flags & CLICKCHAIN_HAS_PROXIMITY) || user.stat || !istype(target)) - return - if(!istype(user)) - return - - if(!isnull(target.reagents)) - if(!(target.atom_flags & OPENCONTAINER)) // The idea is that the scanner has to touch the reagents somehow. This is done to prevent cheesing unidentified autoinjectors. - to_chat(user, SPAN_WARNING( "\The [target] is sealed, and cannot be scanned by \the [src] until unsealed.")) - return - - var/dat = "" - if(target.reagents.reagent_list.len > 0) - var/one_percent = target.reagents.total_volume / 100 - for (var/datum/reagent/R in target.reagents.reagent_list) - dat += "\n \t " + SPAN_NOTICE("[R][details ? ": [R.volume / one_percent]%" : ""]") - if(dat) - to_chat(user, SPAN_NOTICE("Chemicals found: [dat]")) - else - to_chat(user, SPAN_NOTICE("No active chemical agents found in [target].")) - else - to_chat(user, SPAN_NOTICE("No significant chemical agents found in [target].")) - - return - -/obj/item/reagent_scanner/apidean - name = "\improper Apidean taster" - desc = "This reagent scanner appears to be an artificially created lifeform. Often used by Apidaen guards to test food and drinks during diplomatic meetings." - icon_state = "apidae-reagent" - -/obj/item/reagent_scanner/adv - name = "advanced reagent scanner" - icon_state = "adv_spectrometer" - details = 1 - origin_tech = list(TECH_MAGNET = 4, TECH_BIO = 2) - -/obj/item/slime_scanner - name = "slime scanner" - icon_state = "xenobio" - item_state = "xenobio" - icon = 'icons/obj/device.dmi' - origin_tech = list(TECH_BIO = 1) - w_class = ITEMSIZE_SMALL - throw_force = 0 - throw_speed = 3 - throw_range = 7 - materials = list(MAT_STEEL = 30, MAT_GLASS = 20) - -/obj/item/slime_scanner/attack_mob(mob/target, mob/user, clickchain_flags, list/params, mult, target_zone, intent) - . = CLICKCHAIN_DO_NOT_PROPAGATE - if(!istype(target, /mob/living/simple_mob/slime/xenobio)) - to_chat(user, "This device can only scan lab-grown slimes!") - return - var/mob/living/simple_mob/slime/xenobio/S = target - user.show_message("Slime scan results:
[S.slime_color] [S.is_adult ? "adult" : "baby"] slime
Health: [S.health]
Mutation Probability: [S.mutation_chance]") - - var/list/mutations = list() - for(var/potential_color in S.slime_mutation) - var/mob/living/simple_mob/slime/xenobio/slime = potential_color - mutations.Add(initial(slime.slime_color)) - user.show_message("Potental to mutate into [english_list(mutations)] colors.
Extract potential: [S.cores]
Nutrition: [S.nutrition]/[S.get_max_nutrition()]") - - if (S.nutrition < S.get_starve_nutrition()) - user.show_message("Warning: Subject is starving!") - else if (S.nutrition < S.get_hunger_nutrition()) - user.show_message("Warning: Subject is hungry.") - user.show_message("Electric change strength: [S.power_charge]") - - if(S.has_AI()) - var/datum/ai_holder/simple_mob/xenobio_slime/AI = S.ai_holder - if(AI.resentment) - user.show_message("Warning: Subject is harboring resentment.") - if(AI.rabid) - user.show_message("Subject is enraged and extremely dangerous!") - if(S.harmless) - user.show_message("Subject has been pacified.") - if(S.unity) - user.show_message("Subject is friendly to other slime colors.") - - user.show_message("Growth progress: [S.amount_grown]/10") - -#undef DEFIB_TIME_LIMIT diff --git a/code/game/objects/items/scanners/plant.dm b/code/game/objects/items/scanners/plant.dm new file mode 100644 index 00000000000..31eb5b14caf --- /dev/null +++ b/code/game/objects/items/scanners/plant.dm @@ -0,0 +1,146 @@ +/obj/item/plant_analyzer + name = "plant analyzer" + icon = 'icons/obj/device.dmi' + icon_state = "hydro" + item_state = "analyzer" + var/datum/seed/last_seed + var/list/last_reagents + +/obj/item/plant_analyzer/attack_self(mob/user) + . = ..() + if(.) + return + ui_interact(user) + +/obj/item/plant_analyzer/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "PlantAnalyzer", name) + ui.open() + +/obj/item/plant_analyzer/ui_state(mob/user, datum/tgui_module/module) + return GLOB.inventory_state + +/obj/item/plant_analyzer/ui_data(mob/user, datum/tgui/ui, datum/ui_state/state) + var/list/data = ..() + + var/datum/seed/grown_seed = locate(last_seed) + if(!istype(grown_seed)) + return list("no_seed" = TRUE) + + data["no_seed"] = FALSE + data["seed"] = grown_seed.get_tgui_analyzer_data(user) + data["reagents"] = last_reagents + + return data + +/obj/item/plant_analyzer/ui_act(action, list/params, datum/tgui/ui) + if(..()) + return TRUE + + switch(action) + if("print") + print_report(usr) + return TRUE + if("close") + last_seed = null + last_reagents = null + return TRUE + +/obj/item/plant_analyzer/afterattack(atom/target, mob/user, clickchain_flags, list/params) + if(!(clickchain_flags & CLICKCHAIN_HAS_PROXIMITY)) + return + + var/datum/seed/grown_seed + var/datum/reagents/grown_reagents + if(istype(target,/obj/structure/table)) + return ..() + else if(istype(target,/obj/item/reagent_containers/food/snacks/grown)) + + var/obj/item/reagent_containers/food/snacks/grown/G = target + grown_seed = SSplants.seeds[G.plantname] + grown_reagents = G.reagents + + else if(istype(target,/obj/item/grown)) + + var/obj/item/grown/G = target + grown_seed = SSplants.seeds[G.plantname] + grown_reagents = G.reagents + + else if(istype(target,/obj/item/seeds)) + + var/obj/item/seeds/S = target + grown_seed = S.seed + + else if(istype(target,/obj/machinery/portable_atmospherics/hydroponics)) + + var/obj/machinery/portable_atmospherics/hydroponics/H = target + if(H.frozen == 1) + to_chat(user, "Disable the cryogenic freezing first!") + return + grown_seed = H.seed + grown_reagents = H.reagents + + if(!grown_seed) + to_chat(user, "[src] can tell you nothing about \the [target].") + return + + last_seed = REF(grown_seed) + + user.visible_message("[user] runs the scanner over \the [target].") + + last_reagents = list() + if(grown_reagents && grown_reagents.reagent_list && grown_reagents.reagent_list.len) + for(var/datum/reagent/R in grown_reagents.reagent_list) + last_reagents.Add(list(list( + "name" = R.name, + "volume" = grown_reagents.get_reagent_amount(R.id), + ))) + + ui_interact(user) + +/obj/item/plant_analyzer/proc/print_report_verb() + set name = "Print Plant Report" + set category = "Object" + set src = usr + + if(usr.stat || usr.restrained() || usr.lying) + return + print_report(usr) + +/obj/item/plant_analyzer/proc/print_report(var/mob/living/user) + var/datum/seed/grown_seed = locate(last_seed) + if(!istype(grown_seed)) + to_chat(user, SPAN_WARNING("There is no scan data to print.")) + return + + var/form_title = "[grown_seed.seed_name] (#[grown_seed.uid])" + var/dat = "

Plant data for [form_title]

" + dat += "

General Data

" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "
Endurance[grown_seed.get_trait(TRAIT_ENDURANCE)]
Yield[grown_seed.get_trait(TRAIT_YIELD)]
Maturation time[grown_seed.get_trait(TRAIT_MATURATION)]
Production time[grown_seed.get_trait(TRAIT_PRODUCTION)]
Potency[grown_seed.get_trait(TRAIT_POTENCY)]
" + + if(LAZYLEN(last_reagents)) + dat += "

Reagent Data

" + dat += "
This sample contains: " + for(var/i in 1 to LAZYLEN(last_reagents)) + dat += "
- [last_reagents[i]["name"]], [last_reagents[i]["volume"]] unit(s)" + + dat += "

Other Data

" + + var/list/ui_data = grown_seed.get_tgui_analyzer_data() + + dat += jointext(ui_data["trait_info"], "
\n") + + var/obj/item/paper/P = new /obj/item/paper(get_turf(src)) + P.name = "paper - [form_title]" + P.info = "[dat]" + if(istype(user,/mob/living/carbon/human)) + user.put_in_hands(P) + user.visible_message("\The [src] spits out a piece of paper.") + return diff --git a/code/game/objects/items/scanners/reagent.dm b/code/game/objects/items/scanners/reagent.dm new file mode 100644 index 00000000000..d7cc88fd368 --- /dev/null +++ b/code/game/objects/items/scanners/reagent.dm @@ -0,0 +1,52 @@ +/obj/item/reagent_scanner + name = "reagent scanner" + desc = "A hand-held reagent scanner which identifies chemical agents." + icon = 'icons/obj/device.dmi' + icon_state = "spectrometer" + item_state = "analyzer" + w_class = ITEMSIZE_SMALL + slot_flags = SLOT_BELT + throw_force = 5 + throw_speed = 4 + throw_range = 20 + materials = list(MAT_STEEL = 30, MAT_GLASS = 20) + + origin_tech = list(TECH_MAGNET = 2, TECH_BIO = 2) + var/details = 0 + var/recent_fail = 0 + +/obj/item/reagent_scanner/afterattack(atom/target, mob/user, clickchain_flags, list/params) + if(!(clickchain_flags & CLICKCHAIN_HAS_PROXIMITY) || user.stat || !istype(target)) + return + if(!istype(user)) + return + + if(!isnull(target.reagents)) + if(!(target.atom_flags & OPENCONTAINER)) // The idea is that the scanner has to touch the reagents somehow. This is done to prevent cheesing unidentified autoinjectors. + to_chat(user, SPAN_WARNING( "\The [target] is sealed, and cannot be scanned by \the [src] until unsealed.")) + return + + var/dat = "" + if(target.reagents.reagent_list.len > 0) + var/one_percent = target.reagents.total_volume / 100 + for (var/datum/reagent/R in target.reagents.reagent_list) + dat += "\n \t " + SPAN_NOTICE("[R][details ? ": [R.volume / one_percent]%" : ""]") + if(dat) + to_chat(user, SPAN_NOTICE("Chemicals found: [dat]")) + else + to_chat(user, SPAN_NOTICE("No active chemical agents found in [target].")) + else + to_chat(user, SPAN_NOTICE("No significant chemical agents found in [target].")) + + return + +/obj/item/reagent_scanner/apidean + name = "\improper Apidean taster" + desc = "This reagent scanner appears to be an artificially created lifeform. Often used by Apidaen guards to test food and drinks during diplomatic meetings." + icon_state = "apidae-reagent" + +/obj/item/reagent_scanner/adv + name = "advanced reagent scanner" + icon_state = "adv_spectrometer" + details = 1 + origin_tech = list(TECH_MAGNET = 4, TECH_BIO = 2) diff --git a/code/game/objects/items/scanners/slime.dm b/code/game/objects/items/scanners/slime.dm new file mode 100644 index 00000000000..a7e992c5d77 --- /dev/null +++ b/code/game/objects/items/scanners/slime.dm @@ -0,0 +1,44 @@ +/obj/item/slime_scanner + name = "slime scanner" + icon_state = "xenobio" + item_state = "xenobio" + icon = 'icons/obj/device.dmi' + origin_tech = list(TECH_BIO = 1) + w_class = ITEMSIZE_SMALL + throw_force = 0 + throw_speed = 3 + throw_range = 7 + materials = list(MAT_STEEL = 30, MAT_GLASS = 20) + +/obj/item/slime_scanner/attack_mob(mob/target, mob/user, clickchain_flags, list/params, mult, target_zone, intent) + . = CLICKCHAIN_DO_NOT_PROPAGATE + if(!istype(target, /mob/living/simple_mob/slime/xenobio)) + to_chat(user, "This device can only scan lab-grown slimes!") + return + var/mob/living/simple_mob/slime/xenobio/S = target + user.show_message("Slime scan results:
[S.slime_color] [S.is_adult ? "adult" : "baby"] slime
Health: [S.health]
Mutation Probability: [S.mutation_chance]") + + var/list/mutations = list() + for(var/potential_color in S.slime_mutation) + var/mob/living/simple_mob/slime/xenobio/slime = potential_color + mutations.Add(initial(slime.slime_color)) + user.show_message("Potental to mutate into [english_list(mutations)] colors.
Extract potential: [S.cores]
Nutrition: [S.nutrition]/[S.get_max_nutrition()]") + + if (S.nutrition < S.get_starve_nutrition()) + user.show_message("Warning: Subject is starving!") + else if (S.nutrition < S.get_hunger_nutrition()) + user.show_message("Warning: Subject is hungry.") + user.show_message("Electric change strength: [S.power_charge]") + + if(S.has_AI()) + var/datum/ai_holder/simple_mob/xenobio_slime/AI = S.ai_holder + if(AI.resentment) + user.show_message("Warning: Subject is harboring resentment.") + if(AI.rabid) + user.show_message("Subject is enraged and extremely dangerous!") + if(S.harmless) + user.show_message("Subject has been pacified.") + if(S.unity) + user.show_message("Subject is friendly to other slime colors.") + + user.show_message("Growth progress: [S.amount_grown]/10") diff --git a/code/game/objects/items/scanners/spectrometer.dm b/code/game/objects/items/scanners/spectrometer.dm new file mode 100644 index 00000000000..a68230336b4 --- /dev/null +++ b/code/game/objects/items/scanners/spectrometer.dm @@ -0,0 +1,64 @@ +/obj/item/mass_spectrometer + name = "mass spectrometer" + desc = "A hand-held mass spectrometer which identifies trace chemicals in a blood sample." + icon = 'icons/obj/device.dmi' + icon_state = "spectrometer" + w_class = ITEMSIZE_SMALL + atom_flags = OPENCONTAINER + slot_flags = SLOT_BELT + throw_force = 5 + throw_speed = 4 + throw_range = 20 + + materials = list(MAT_STEEL = 30, MAT_GLASS = 20) + + origin_tech = list(TECH_MAGNET = 2, TECH_BIO = 2) + var/details = 0 + var/recent_fail = 0 + +/obj/item/mass_spectrometer/Initialize(mapload) + . = ..() + var/datum/reagents/R = new/datum/reagents(5) + reagents = R + R.my_atom = src + +/obj/item/mass_spectrometer/on_reagent_change() + if(reagents.total_volume) + icon_state = initial(icon_state) + "_s" + else + icon_state = initial(icon_state) + +/obj/item/mass_spectrometer/attack_self(mob/user) + . = ..() + if(.) + return + if (user.stat) + return + if (!(ishuman(user) || SSticker) && SSticker.mode.name != "monkey") + to_chat(user, "You don't have the dexterity to do this!") + return + if(reagents.total_volume) + var/list/blood_traces = list() + for(var/datum/reagent/R in reagents.reagent_list) + if(R.id != "blood") + reagents.clear_reagents() + to_chat(user, "The sample was contaminated! Please insert another sample") + return + else + blood_traces = params2list(R.data["trace_chem"]) + break + var/dat = "Trace Chemicals Found: " + for(var/R in blood_traces) + if(details) + dat += "[R] ([blood_traces[R]] units) " + else + dat += "[R] " + to_chat(user, "[dat]") + reagents.clear_reagents() + return + +/obj/item/mass_spectrometer/adv + name = "advanced mass spectrometer" + icon_state = "adv_spectrometer" + details = 1 + origin_tech = list(TECH_MAGNET = 4, TECH_BIO = 2) diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 4f117583b35..797e5003d41 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -60,7 +60,7 @@ /obj/item/cell/device, /obj/item/stack/cable_coil, /obj/item/t_scanner, - /obj/item/analyzer, + /obj/item/atmos_analyzer, /obj/item/clothing/glasses, /obj/item/clothing/gloves, /obj/item/pda, @@ -70,7 +70,7 @@ /obj/item/robotanalyzer, /obj/item/material/minihoe, /obj/item/material/knife/machete/hatchet, - /obj/item/analyzer/plant_analyzer, + /obj/item/plant_analyzer, /obj/item/extinguisher/mini, /obj/item/duct_tape_roll, /obj/item/switchtool, @@ -111,7 +111,7 @@ /obj/item/multitool, /obj/item/stack/cable_coil/random_belt, /obj/item/extinguisher/mini, - /obj/item/analyzer/longrange + /obj/item/atmos_analyzer/longrange ) /obj/item/storage/belt/medical @@ -254,7 +254,7 @@ /obj/item/multitool, /obj/item/stack/cable_coil, /obj/item/t_scanner, - /obj/item/analyzer, + /obj/item/atmos_analyzer, /obj/item/flashlight, /obj/item/cell/device, /obj/item/cell/device/weapon, diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm index 67ee29af7b3..0d454fc3708 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -41,7 +41,7 @@ /obj/item/tool/wrench, /obj/item/weldingtool, /obj/item/tool/crowbar, - /obj/item/analyzer, + /obj/item/atmos_analyzer, /obj/item/tool/wirecutters ) @@ -89,7 +89,7 @@ /obj/item/tool/crowbar/power, /obj/item/multitool, /obj/item/stack/cable_coil/random_belt, - /obj/item/analyzer + /obj/item/atmos_analyzer ) /obj/item/storage/toolbox/gold_fake // used in crafting diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm index b6c572d7eb8..f5a809aa4f8 100644 --- a/code/game/objects/items/weapons/flamethrower.dm +++ b/code/game/objects/items/weapons/flamethrower.dm @@ -115,8 +115,8 @@ update_icon() return - if(istype(W, /obj/item/analyzer)) - var/obj/item/analyzer/A = W + if(istype(W, /obj/item/atmos_analyzer)) + var/obj/item/atmos_analyzer/A = W A.analyze_gases(src, user) return ..() @@ -147,7 +147,7 @@ usr.set_machine(src) if(href_list["light"]) if(!ptank) return - if(ptank.air_contents.gas[/datum/gas/phoron] < 1) return + if(ptank.air_contents.gas[GAS_ID_PHORON] < 1) return if(!status) return lit = !lit if(lit) @@ -196,8 +196,8 @@ //Transfer 5% of current tank air contents to turf var/datum/gas_mixture/air_transfer = ptank.air_contents.remove_ratio(0.02*(throw_amount/100)) //air_transfer.toxins = air_transfer.toxins * 5 // This is me not comprehending the air system. I realize this is stupid and I could probably make it work without fucking it up like this, but there you have it. -- TLE - new/obj/effect/debris/cleanable/liquid_fuel/flamethrower_fuel(target,air_transfer.gas[/datum/gas/phoron],get_dir(loc,target)) - air_transfer.gas[/datum/gas/phoron] = 0 + new/obj/effect/debris/cleanable/liquid_fuel/flamethrower_fuel(target,air_transfer.gas[GAS_ID_PHORON],get_dir(loc,target)) + air_transfer.gas[GAS_ID_PHORON] = 0 target.assume_air(air_transfer) //Burn it based on transfered gas //target.hotspot_expose(part4.air_contents.temperature*2,300) diff --git a/code/game/objects/items/weapons/tanks/jetpack.dm b/code/game/objects/items/weapons/tanks/jetpack.dm index c4148c3e00e..30b0f1485c5 100644 --- a/code/game/objects/items/weapons/tanks/jetpack.dm +++ b/code/game/objects/items/weapons/tanks/jetpack.dm @@ -67,7 +67,7 @@ var/datum/gas_mixture/G = air_contents.remove(num) - var/allgases = G.gas[/datum/gas/carbon_dioxide] + G.gas[/datum/gas/nitrogen] + G.gas[/datum/gas/oxygen] + G.gas[/datum/gas/phoron] + var/allgases = G.gas[GAS_ID_CARBON_DIOXIDE] + G.gas[GAS_ID_NITROGEN] + G.gas[GAS_ID_OXYGEN] + G.gas[GAS_ID_PHORON] if(allgases >= 0.005) return 1 @@ -85,7 +85,7 @@ /obj/item/tank/jetpack/void/Initialize(mapload) . = ..() - air_contents.adjust_gas(/datum/gas/oxygen, (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + air_contents.adjust_gas(GAS_ID_OXYGEN, (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) /obj/item/tank/jetpack/oxygen name = "jetpack (oxygen)" @@ -95,7 +95,7 @@ /obj/item/tank/jetpack/oxygen/Initialize(mapload) . = ..() - air_contents.adjust_gas(/datum/gas/oxygen, (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + air_contents.adjust_gas(GAS_ID_OXYGEN, (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) /obj/item/tank/jetpack/carbondioxide name = "jetpack (carbon dioxide)" @@ -106,7 +106,7 @@ /obj/item/tank/jetpack/carbondioxide/Initialize(mapload) . = ..() - air_contents.adjust_gas(/datum/gas/carbon_dioxide, (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + air_contents.adjust_gas(GAS_ID_CARBON_DIOXIDE, (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) /obj/item/tank/jetpack/hardsuit name = "jetpack" @@ -129,7 +129,7 @@ var/datum/gas_mixture/G = pressure_vessel.air_contents.remove(num) - var/allgases = G.gas[/datum/gas/carbon_dioxide] + G.gas[/datum/gas/nitrogen] + G.gas[/datum/gas/oxygen] + G.gas[/datum/gas/phoron] + var/allgases = G.gas[GAS_ID_CARBON_DIOXIDE] + G.gas[GAS_ID_NITROGEN] + G.gas[GAS_ID_OXYGEN] + G.gas[GAS_ID_PHORON] if(allgases >= 0.005) return 1 qdel(G) diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm index 441465c7d4a..f99bcf9611a 100644 --- a/code/game/objects/items/weapons/tanks/tank_types.dm +++ b/code/game/objects/items/weapons/tanks/tank_types.dm @@ -21,11 +21,11 @@ /obj/item/tank/oxygen/Initialize(mapload) . = ..() - air_contents.adjust_gas(/datum/gas/oxygen, (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + air_contents.adjust_gas(GAS_ID_OXYGEN, (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) /obj/item/tank/oxygen/examine(mob/user, dist) . = ..() - if(air_contents.gas[/datum/gas/oxygen] < 10) + if(air_contents.gas[GAS_ID_OXYGEN] < 10) . += "The meter on the [src] indicates you are almost out of oxygen!" /obj/item/tank/oxygen/yellow @@ -50,8 +50,8 @@ /obj/item/tank/anesthetic/Initialize(mapload) . = ..() - air_contents.gas[/datum/gas/oxygen] = (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD - air_contents.gas[/datum/gas/nitrous_oxide] = (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD + air_contents.gas[GAS_ID_OXYGEN] = (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD + air_contents.gas[GAS_ID_NITROUS_OXIDE] = (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD air_contents.update_values() /* @@ -65,14 +65,14 @@ /obj/item/tank/air/examine(mob/user, dist) . = ..() - if(air_contents.gas[/datum/gas/oxygen] < 1 && loc==user) + if(air_contents.gas[GAS_ID_OXYGEN] < 1 && loc==user) . += "The meter on the [src.name] indicates you are almost out of air!" //user.playsound('sound/effects/alert.ogg') /obj/item/tank/air/Initialize(mapload) . = ..() - src.air_contents.adjust_multi(/datum/gas/oxygen, (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD, /datum/gas/nitrogen, (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD) + src.air_contents.adjust_multi(GAS_ID_OXYGEN, (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD, GAS_ID_NITROGEN, (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD) /* * Phoron @@ -87,7 +87,7 @@ /obj/item/tank/phoron/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/phoron, (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C)) + src.air_contents.adjust_gas(GAS_ID_PHORON, (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C)) /obj/item/tank/vox //Can't be a child of phoron or the gas amount gets screwey. name = "phoron tank" @@ -101,7 +101,7 @@ /obj/item/tank/vox/Initialize(mapload) . = ..() - air_contents.adjust_gas(/datum/gas/phoron, (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + air_contents.adjust_gas(GAS_ID_PHORON, (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) /obj/item/tank/phoron/pressurized name = "fuel can" @@ -111,7 +111,7 @@ /obj/item/tank/phoron/pressurized/Initialize(mapload) . = ..() adjust_scale(0.8) - air_contents.adjust_gas(/datum/gas/phoron, (7*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + air_contents.adjust_gas(GAS_ID_PHORON, (7*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) /obj/item/tank/emergency/phoron/double name = "double emergency phoron tank" @@ -125,7 +125,7 @@ /obj/item/tank/emergency/phoron/double/Initialize(mapload) . = ..() - air_contents.adjust_gas(/datum/gas/phoron, (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + air_contents.adjust_gas(GAS_ID_PHORON, (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) /* * Emergency Oxygen @@ -153,11 +153,11 @@ /obj/item/tank/emergency/oxygen/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/oxygen, (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + src.air_contents.adjust_gas(GAS_ID_OXYGEN, (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) /obj/item/tank/emergency/oxygen/examine(mob/user, dist) . = ..() - if(air_contents.gas[/datum/gas/oxygen] < 0.2 && loc==user) + if(air_contents.gas[GAS_ID_OXYGEN] < 0.2 && loc==user) . += "The meter on the [src.name] indicates you are almost out of air!" //user.playsound('sound/effects/alert.ogg') @@ -186,7 +186,7 @@ /obj/item/tank/stasis/oxygen/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/oxygen, (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + src.air_contents.adjust_gas(GAS_ID_OXYGEN, (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) /obj/item/tank/emergency/nitrogen name = "emergency nitrogen tank" @@ -198,7 +198,7 @@ /obj/item/tank/emergency/nitrogen/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/nitrogen, (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + src.air_contents.adjust_gas(GAS_ID_NITROGEN, (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) /obj/item/tank/emergency/nitrogen/double name = "double emergency nitrogen tank" @@ -219,7 +219,7 @@ /obj/item/tank/emergency/phoron/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/phoron, (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + src.air_contents.adjust_gas(GAS_ID_PHORON, (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) /obj/item/tank/emergency/phoron/double name = "double emergency phoron tank" @@ -241,10 +241,10 @@ /obj/item/tank/nitrogen/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/nitrogen, (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C)) + src.air_contents.adjust_gas(GAS_ID_NITROGEN, (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C)) /obj/item/tank/nitrogen/examine(mob/user, dist) - if(air_contents.gas[/datum/gas/nitrogen] < 10) + if(air_contents.gas[GAS_ID_NITROGEN] < 10) . += "The meter on \the [src] indicates you are almost out of nitrogen!" /obj/item/tank/stasis/nitro_cryo // Synthmorph bags need to have initial pressure within safe bounds for human atmospheric pressure, but low temperature to stop unwanted degredation. @@ -256,7 +256,7 @@ /obj/item/tank/stasis/nitro_cryo/Initialize(mapload) . = ..() - src.air_contents.adjust_gas_temp(/datum/gas/nitrogen, (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*TN60C), TN60C) + src.air_contents.adjust_gas_temp(GAS_ID_NITROGEN, (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*TN60C), TN60C) //co2 /obj/item/tank/carbon_dioxide @@ -270,7 +270,7 @@ /obj/item/tank/carbon_dioxide/Initialize(mapload) . = ..() - air_contents.adjust_gas(/datum/gas/carbon_dioxide, (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + air_contents.adjust_gas(GAS_ID_CARBON_DIOXIDE, (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) /obj/item/tank/emergency/carbon_dioxide name = "emergency CO2 tank" @@ -283,9 +283,9 @@ /obj/item/tank/emergency/carbon_dioxide/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/carbon_dioxide, (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + src.air_contents.adjust_gas(GAS_ID_CARBON_DIOXIDE, (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) /obj/item/tank/emergency/carbon_dioxide/examine(mob/user, dist) - if(air_contents.gas[/datum/gas/carbon_dioxide] < 0.2 && loc==user) + if(air_contents.gas[GAS_ID_CARBON_DIOXIDE] < 0.2 && loc==user) . += "The meter on the [src.name] indicates you are almost out of air!" // user.playsound('sound/effects/alert.ogg') diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm index 792dd885b53..7b8e2af04db 100644 --- a/code/game/objects/items/weapons/tanks/tanks.dm +++ b/code/game/objects/items/weapons/tanks/tanks.dm @@ -115,8 +115,8 @@ var/list/global/tank_gauge_cache = list() if (istype(loc, /obj/item/assembly)) icon = loc - if ((istype(W, /obj/item/analyzer)) && get_dist(user, src) <= 1) - var/obj/item/analyzer/A = W + if ((istype(W, /obj/item/atmos_analyzer)) && get_dist(user, src) <= 1) + var/obj/item/atmos_analyzer/A = W A.analyze_gases(src, user) else if (istype(W,/obj/item/latexballon)) var/obj/item/latexballon/LB = W @@ -360,6 +360,16 @@ var/list/global/tank_gauge_cache = list() update_gauge() check_status() +/** + * Encodes data for AtmosTank in tgui/interfaces/common/Atmos.tsx + */ +/obj/item/tank/proc/tgui_tank_data() + return list( + "name" = name, + "pressure" = air_contents?.return_pressure(), + "volume" = air_contents.volume, + "pressureLimit" = TANK_IDEAL_PRESSURE, + ) /obj/item/tank/proc/add_bomb_overlay() cut_overlays() @@ -373,7 +383,6 @@ var/list/global/tank_gauge_cache = list() overlays_to_add += test add_overlay(overlays_to_add) - /obj/item/tank/proc/update_gauge() var/gauge_pressure = 0 if(air_contents) @@ -393,7 +402,6 @@ var/list/global/tank_gauge_cache = list() tank_gauge_cache[indicator] = image(icon, indicator) add_overlay(tank_gauge_cache[indicator]) - /obj/item/tank/proc/check_status() //Handle exploding, leaking, and rupturing of the tank @@ -401,8 +409,6 @@ var/list/global/tank_gauge_cache = list() return 0 var/pressure = air_contents.return_pressure() - - if(pressure > TANK_FRAGMENT_PRESSURE) if(integrity <= 7) if(!istype(src.loc,/obj/item/transfer_valve)) @@ -444,15 +450,11 @@ var/list/global/tank_gauge_cache = list() var/obj/item/transfer_valve/TTV = loc TTV.remove_tank(src) qdel(TTV) - - if(src) qdel(src) - else integrity -=7 - else if(pressure > TANK_RUPTURE_PRESSURE) #ifdef FIREDBG log_debug(SPAN_DEBUGWARNING("[x],[y] tank is rupturing: [pressure] kPa, integrity [integrity]")) @@ -480,8 +482,6 @@ var/list/global/tank_gauge_cache = list() if(istype(loc, /obj/item/transfer_valve)) var/obj/item/transfer_valve/TTV = loc TTV.remove_tank(src) - - qdel(src) else @@ -491,7 +491,6 @@ var/list/global/tank_gauge_cache = list() else integrity-= 5 - else if(pressure > TANK_LEAK_PRESSURE || air_contents.temperature - T0C > failure_temp) if((integrity <= 17 || src.leaking) && !valve_welded) @@ -527,20 +526,6 @@ var/list/global/tank_gauge_cache = list() if(integrity == max_integrity) leaking = 0 -///////////////////////////////// -///Prewelded tanks -///////////////////////////////// - -/obj/item/tank/phoron/welded - valve_welded = 1 -/obj/item/tank/oxygen/welded - valve_welded = 1 - - -///////////////////////////////// -///Onetankbombs (added as actual items) -///////////////////////////////// - /obj/item/tank/proc/onetankbomb(fill = 1) var/phoron_amt = 4 + rand(4) var/oxygen_amt = 6 + rand(8) @@ -553,8 +538,8 @@ var/list/global/tank_gauge_cache = list() oxygen_amt = 4.5 - air_contents.gas[/datum/gas/phoron] = phoron_amt - air_contents.gas[/datum/gas/oxygen] = oxygen_amt + air_contents.gas[GAS_ID_PHORON] = phoron_amt + air_contents.gas[GAS_ID_OXYGEN] = oxygen_amt air_contents.update_values() valve_welded = 1 air_contents.temperature = PHORON_MINIMUM_BURN_TEMPERATURE-1 @@ -569,31 +554,35 @@ var/list/global/tank_gauge_cache = list() add_overlay("bomb_assembly") +/obj/item/tank/oxygen/welded + valve_welded = TRUE + +/obj/item/tank/phoron/welded + valve_welded = TRUE /obj/item/tank/phoron/onetankbomb/Initialize(mapload) . = ..() - src.onetankbomb() + onetankbomb() /obj/item/tank/oxygen/onetankbomb/Initialize(mapload) . = ..() - src.onetankbomb() - + onetankbomb() /obj/item/tank/phoron/onetankbomb/full/Initialize(mapload) . = ..() - src.onetankbomb(2) + onetankbomb(2) /obj/item/tank/oxygen/onetankbomb/full/Initialize(mapload) . = ..() - src.onetankbomb(2) + onetankbomb(2) /obj/item/tank/phoron/onetankbomb/small/Initialize(mapload) . = ..() - src.onetankbomb(0) + onetankbomb(0) /obj/item/tank/oxygen/onetankbomb/small/Initialize(mapload) . = ..() - src.onetankbomb(0) + onetankbomb(0) ///////////////////////////////// ///Pulled from rewritten bomb.dm diff --git a/code/game/objects/mob_spawner.dm b/code/game/objects/mob_spawner.dm index a995fc9782b..a54ea4b6467 100644 --- a/code/game/objects/mob_spawner.dm +++ b/code/game/objects/mob_spawner.dm @@ -311,14 +311,14 @@ It also makes it so a ghost wont know where all the goodies/mobs are. my_mob.maxbodytemp = env.temperature * 1.2 var/list/gaslist = env.gas - my_mob.min_oxy = gaslist[/datum/gas/oxygen] * 0.8 - my_mob.min_tox = gaslist[/datum/gas/phoron] * 0.8 - my_mob.min_n2 = gaslist[/datum/gas/nitrogen] * 0.8 - my_mob.min_co2 = gaslist[/datum/gas/carbon_dioxide] * 0.8 - my_mob.max_oxy = gaslist[/datum/gas/oxygen] * 1.2 - my_mob.max_tox = gaslist[/datum/gas/phoron] * 1.2 - my_mob.max_n2 = gaslist[/datum/gas/nitrogen] * 1.2 - my_mob.max_co2 = gaslist[/datum/gas/carbon_dioxide] * 1.2 + my_mob.min_oxy = gaslist[GAS_ID_OXYGEN] * 0.8 + my_mob.min_tox = gaslist[GAS_ID_PHORON] * 0.8 + my_mob.min_n2 = gaslist[GAS_ID_NITROGEN] * 0.8 + my_mob.min_co2 = gaslist[GAS_ID_CARBON_DIOXIDE] * 0.8 + my_mob.max_oxy = gaslist[GAS_ID_OXYGEN] * 1.2 + my_mob.max_tox = gaslist[GAS_ID_PHORON] * 1.2 + my_mob.max_n2 = gaslist[GAS_ID_NITROGEN] * 1.2 + my_mob.max_co2 = gaslist[GAS_ID_CARBON_DIOXIDE] * 1.2 return else STOP_PROCESSING(SSobj, src) diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 623b05d1d00..5368abb6e74 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -284,7 +284,10 @@ return FALSE if(INTERACTING_WITH_FOR(climber, src, INTERACTING_FOR_CLIMB)) return FALSE - climber.visible_action_feedback(SPAN_WARNING("[climber] starts climbing onto \the [src]!"), src, MESSAGE_RANGE_COMBAT_LOUD) + climber.visible_action_feedback( + target = src, + visible_hard = SPAN_WARNING("[climber] starts climbing onto \the [src]!"), + hard_range = MESSAGE_RANGE_COMBAT_LOUD) START_INTERACTING_WITH(climber, src, INTERACTING_FOR_CLIMB) LAZYDISTINCTADD(climbing, climber) . = do_after(climber, climb_delay * delay_mod, src, mobility_flags = MOBILITY_CAN_MOVE | MOBILITY_CAN_STAND | MOBILITY_IS_STANDING) @@ -383,6 +386,14 @@ H.update_health() */ +//* Hiding / Underfloor + +/obj/proc/is_hidden_underfloor() + return FALSE + +/obj/proc/should_hide_underfloor() + return FALSE + //? Materials /obj/get_materials() diff --git a/code/game/objects/random/maintenance.dm b/code/game/objects/random/maintenance.dm index 9d61e47a88a..653ccb086ff 100644 --- a/code/game/objects/random/maintenance.dm +++ b/code/game/objects/random/maintenance.dm @@ -253,7 +253,7 @@ something, make sure it's not in one of the other lists.*/ /obj/random/maintenance/research/item_to_spawn() return pick(prob(320);/obj/random/maintenance/clean, - prob(3);/obj/item/analyzer/plant_analyzer, + prob(3);/obj/item/plant_analyzer, prob(1);/obj/item/flash/synthetic, prob(2);/obj/item/bucket_sensor, prob(1);/obj/item/cell/device/weapon, diff --git a/code/game/objects/random/misc.dm b/code/game/objects/random/misc.dm index df25ba1d495..209bdb33033 100644 --- a/code/game/objects/random/misc.dm +++ b/code/game/objects/random/misc.dm @@ -66,7 +66,7 @@ /obj/random/technology_scanner/item_to_spawn() return pick(prob(5);/obj/item/t_scanner, prob(2);/obj/item/radio, - prob(5);/obj/item/analyzer) + prob(5);/obj/item/atmos_analyzer) /obj/random/powercell name = "random powercell" diff --git a/code/game/objects/structures/bonfire.dm b/code/game/objects/structures/bonfire.dm index 7e7348d8d3c..57c26df5a4d 100644 --- a/code/game/objects/structures/bonfire.dm +++ b/code/game/objects/structures/bonfire.dm @@ -164,7 +164,7 @@ /obj/structure/bonfire/proc/check_oxygen() var/datum/gas_mixture/G = loc.return_air() - if(G.gas[/datum/gas/oxygen] < 1) + if(G.gas[GAS_ID_OXYGEN] < 1) return FALSE return TRUE @@ -343,7 +343,7 @@ /obj/structure/fireplace/proc/check_oxygen() var/datum/gas_mixture/G = loc.return_air() - if(G.gas[/datum/gas/oxygen] < 1) + if(G.gas[GAS_ID_OXYGEN] < 1) return FALSE return TRUE diff --git a/code/game/objects/structures/crates_lockers/closets/coffin.dm b/code/game/objects/structures/crates_lockers/closets/coffin.dm index 137afd18b4d..9c61d1531ef 100644 --- a/code/game/objects/structures/crates_lockers/closets/coffin.dm +++ b/code/game/objects/structures/crates_lockers/closets/coffin.dm @@ -159,7 +159,7 @@ return PROJECTILE_CONTINUE // It's a hole in the ground, doesn't usually stop or even care about bullets /obj/structure/closet/grave/return_air_for_internal_lifeform(var/mob/living/L) - var/gasid = /datum/gas/carbon_dioxide + var/gasid = GAS_ID_CARBON_DIOXIDE if(ishuman(L)) var/mob/living/carbon/human/H = L if(H.species && H.species.exhale_type) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm index 2f2e133086a..c9b9b6f2215 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm @@ -74,7 +74,7 @@ /obj/item/clothing/under/rank/miner, /obj/item/clothing/gloves/black, /obj/item/clothing/shoes/black, - /obj/item/analyzer, + /obj/item/atmos_analyzer, /obj/item/storage/bag/ore, /obj/item/flashlight/lantern, /obj/item/shovel, diff --git a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm index c790c32d9df..bb399f300e2 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm @@ -7,7 +7,7 @@ /obj/item/storage/bag/plants, /obj/item/clothing/under/rank/hydroponics, /obj/item/clothing/under/rank/hydroponics/skirt_pleated, - /obj/item/analyzer/plant_analyzer, + /obj/item/plant_analyzer, /obj/item/radio/headset/headset_service, /obj/item/clothing/head/greenbandana, /obj/item/material/minihoe, diff --git a/code/game/objects/structures/loot_piles.dm b/code/game/objects/structures/loot_piles.dm index a658e7da47f..f54e21d8868 100644 --- a/code/game/objects/structures/loot_piles.dm +++ b/code/game/objects/structures/loot_piles.dm @@ -386,7 +386,7 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh /obj/item/circuitboard/rcon_console, /obj/item/smes_coil, /obj/item/cartridge/engineering, - /obj/item/analyzer, + /obj/item/atmos_analyzer, /obj/item/healthanalyzer, /obj/item/robotanalyzer, /obj/item/lightreplacer, diff --git a/code/game/objects/structures/mineral_bath.dm b/code/game/objects/structures/mineral_bath.dm index d144f338c42..bf572a66f10 100644 --- a/code/game/objects/structures/mineral_bath.dm +++ b/code/game/objects/structures/mineral_bath.dm @@ -14,7 +14,7 @@ /obj/structure/adherent_bath/return_air() var/datum/gas_mixture/venus = new(CELL_VOLUME) - venus.adjust_multi(/datum/gas/nitrogen, MOLES_N2STANDARD, /datum/gas/oxygen, MOLES_O2STANDARD) + venus.adjust_multi(GAS_ID_NITROGEN, MOLES_N2STANDARD, GAS_ID_OXYGEN, MOLES_O2STANDARD) venus.temperature = 490 return venus diff --git a/code/game/objects/structures/transit_tubes.dm b/code/game/objects/structures/transit_tubes.dm index f224e710a44..e7998b36dfd 100644 --- a/code/game/objects/structures/transit_tubes.dm +++ b/code/game/objects/structures/transit_tubes.dm @@ -83,7 +83,7 @@ /obj/structure/transit_tube_pod/Initialize(mapload) . = ..() - air_contents.adjust_multi(/datum/gas/oxygen, MOLES_O2STANDARD * 2, /datum/gas/nitrogen, MOLES_N2STANDARD) + air_contents.adjust_multi(GAS_ID_OXYGEN, MOLES_O2STANDARD * 2, GAS_ID_NITROGEN, MOLES_N2STANDARD) air_contents.temperature = T20C // Give auto tubes time to align before trying to start moving diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index cf5c8f936b3..f78a8630925 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -189,7 +189,7 @@ soundloop.stop() /obj/machinery/shower/attackby(obj/item/I as obj, mob/user as mob) - if(I.type == /obj/item/analyzer) + if(I.type == /obj/item/atmos_analyzer) to_chat(user, "The water temperature seems to be [watertemp].") if(I.is_wrench()) var/newtemp = input(user, "What setting would you like to set the temperature valve to?", "Water Temperature Valve") in temperature_settings diff --git a/code/game/turfs/simulated/floors/water.dm b/code/game/turfs/simulated/floors/water.dm index 7a1d800b084..1b816d2ea43 100644 --- a/code/game/turfs/simulated/floors/water.dm +++ b/code/game/turfs/simulated/floors/water.dm @@ -52,11 +52,11 @@ var/datum/gas_mixture/water_breath = new() var/datum/gas_mixture/above_air = return_air() var/amount = 300 - water_breath.adjust_gas(/datum/gas/oxygen, amount) // Assuming water breathes just extract the oxygen directly from the water. + water_breath.adjust_gas(GAS_ID_OXYGEN, amount) // Assuming water breathes just extract the oxygen directly from the water. water_breath.temperature = above_air.temperature return return_air() else - var/gasid = /datum/gas/carbon_dioxide + var/gasid = GAS_ID_CARBON_DIOXIDE if(ishuman(L)) var/mob/living/carbon/human/H = L if(H.species && H.species.exhale_type) @@ -241,11 +241,11 @@ var/list/shoreline_icon_cache = list() var/datum/gas_mixture/water_breath = new() var/datum/gas_mixture/above_air = return_air() var/amount = 300 - water_breath.adjust_gas(/datum/gas/oxygen, amount) // Assuming water breathes just extract the oxygen directly from the water. + water_breath.adjust_gas(GAS_ID_OXYGEN, amount) // Assuming water breathes just extract the oxygen directly from the water. water_breath.temperature = above_air.temperature return water_breath else - var/gasid = /datum/gas/carbon_dioxide + var/gasid = GAS_ID_CARBON_DIOXIDE if(ishuman(L)) var/mob/living/carbon/human/H = L if(H.species && H.species.exhale_type) @@ -351,11 +351,11 @@ var/list/shoreline_icon_cache = list() var/datum/gas_mixture/water_breath = new() var/datum/gas_mixture/above_air = return_air() var/amount = 300 - water_breath.adjust_gas(/datum/gas/oxygen, amount) // Assuming water breathes just extract the oxygen directly from the water. + water_breath.adjust_gas(GAS_ID_OXYGEN, amount) // Assuming water breathes just extract the oxygen directly from the water. water_breath.temperature = above_air.temperature return water_breath else - var/gasid = /datum/gas/carbon_dioxide + var/gasid = GAS_ID_CARBON_DIOXIDE if(ishuman(L)) var/mob/living/carbon/human/H = L if(H.species && H.species.exhale_type) diff --git a/code/game/turfs/simulated/wall_attacks.dm b/code/game/turfs/simulated/wall_attacks.dm index 53bd8b60c8b..9ef269692f1 100644 --- a/code/game/turfs/simulated/wall_attacks.dm +++ b/code/game/turfs/simulated/wall_attacks.dm @@ -47,12 +47,12 @@ // "turf in loc" on a turf // you for real? /* - if(!air_master) + if(!SSair) return for(var/turf/simulated/turf in loc) update_thermal(turf) - air_master.mark_for_update(turf) + SSair.mark_for_update(turf) */ /turf/simulated/wall/proc/update_thermal(var/turf/simulated/source) diff --git a/code/modules/admin/callproc/callproc.dm b/code/modules/admin/callproc/callproc.dm index 54c792c1863..4fd283abc8c 100644 --- a/code/modules/admin/callproc/callproc.dm +++ b/code/modules/admin/callproc/callproc.dm @@ -185,6 +185,8 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) retval += named_args return retval +// todo: rework all of vv and proccall yet again because this is shit formatting + /client/proc/get_callproc_returnval(returnval,procname) . = "" if(islist(returnval)) @@ -195,7 +197,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) if(istext(assoc_check) && (returnedlist[assoc_check] != null)) . += "[procname] returned an associative list:" for(var/key in returnedlist) - . += "\n[key] = [returnedlist[key]]" + . += "\n[key] = [islist(returnedlist[key])? json_encode(returnedlist[key]) : returnedlist[key]]" else . += "[procname] returned a list:" diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 3e8227a231f..27fe22e0f1c 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -377,7 +377,7 @@ if(A && !(A.type in areas_with_APC)) areas_with_APC.Add(A.type) - for(var/obj/machinery/alarm/alarm in GLOB.machines) + for(var/obj/machinery/air_alarm/alarm in GLOB.machines) var/area/A = get_area(alarm) if(A && !(A.type in areas_with_air_alarm)) areas_with_air_alarm.Add(A.type) @@ -512,7 +512,7 @@ if(!Rad.P) var/obj/item/tank/phoron/Phoron = new/obj/item/tank/phoron(Rad) /// supercooled so we don't just maxcap the engine lol - Phoron.air_contents.adjust_gas_temp(/datum/gas/phoron, 350, 25) + Phoron.air_contents.adjust_gas_temp(GAS_ID_PHORON, 350, 25) Phoron.forceMove(Rad) Rad.P = Phoron @@ -550,7 +550,7 @@ var/obj/item/tank/phoron/Phoron = new/obj/item/tank/phoron(Rad) - Phoron.air_contents.gas[/datum/gas/phoron] = 29.1154 //This is a full tank if you filled it from a canister + Phoron.air_contents.gas[GAS_ID_PHORON] = 29.1154 //This is a full tank if you filled it from a canister Rad.P = Phoron Phoron.loc = Rad @@ -563,7 +563,7 @@ var/obj/machinery/atmospherics/component/binary/pump/Pump = M if(Pump.name == "Engine Feed" && response == "Setup Completely") found_the_pump = 1 - Pump.air2.gas[/datum/gas/nitrogen] = 3750 //The contents of 2 canisters. + Pump.air2.gas[GAS_ID_NITROGEN] = 3750 //The contents of 2 canisters. Pump.air2.temperature = 50 Pump.air2.update_values() Pump.update_use_power(USE_POWER_IDLE) @@ -591,7 +591,7 @@ if(!found_the_pump && response == "Setup Completely") to_chat(src, "Unable to locate air supply to fill up with coolant, adding some coolant around the supermatter") var/turf/simulated/T = SM.loc - T.zone.air.gas[/datum/gas/nitrogen] += 450 + T.zone.air.gas[GAS_ID_NITROGEN] += 450 T.zone.air.temperature = 50 T.zone.air.update_values() diff --git a/code/modules/admin/verbs/diagnostics.dm b/code/modules/admin/verbs/diagnostics.dm index ec9e9c69f57..60deacb97fe 100644 --- a/code/modules/admin/verbs/diagnostics.dm +++ b/code/modules/admin/verbs/diagnostics.dm @@ -2,12 +2,12 @@ set category = "Debug" set name = "Show Air Report" - if(!air_master) - alert(usr,"air_master not found.","Air Report") + if(!SSair) + alert(usr,"SSair not found.","Air Report") return - var/active_groups = air_master.active_zones - var/inactive_groups = air_master.zones.len - active_groups + var/active_groups = SSair.active_zones + var/inactive_groups = SSair.zones.len - active_groups var/hotspots = 0 for(var/atom/movable/fire/hotspot in world) @@ -15,7 +15,7 @@ var/active_on_main_station = 0 var/inactive_on_main_station = 0 - for(var/datum/zas_zone/zone in air_master.zones) + for(var/datum/zas_zone/zone in SSair.zones) var/turf/simulated/turf = locate() in zone.contents if(turf && (turf.z in (LEGACY_MAP_DATUM).station_levels)) if(zone.needs_update) @@ -25,8 +25,8 @@ var/output = {"AIR SYSTEMS REPORT
General Processing Data
- Cycle: [air_master.current_cycle]
- Groups: [air_master.zones.len]
+ Cycle: [SSair.current_cycle]
+ Groups: [SSair.zones.len]
---- Active: [active_groups]
---- Inactive: [inactive_groups]

---- Active on station: [active_on_main_station]
@@ -36,7 +36,7 @@ Hotspot Processing: [hotspots]

Geometry Processing Data
- Tile Update: [air_master.tiles_to_update.len]
+ Tile Update: [SSair.tiles_to_update.len]
"} usr << browse(output,"window=airreport") @@ -127,11 +127,11 @@ to_chat(src, "Only administrators may use this command.") return - if(!air_master) + if(!SSair) to_chat(usr, "Cannot find air_system") return var/datum/air_group/dead_groups = list() - for(var/datum/air_group/group in air_master.air_groups) + for(var/datum/air_group/group in SSair.air_groups) if (!group.group_processing) dead_groups += group var/datum/air_group/dest_group = pick(dead_groups) @@ -149,7 +149,7 @@ to_chat(src, "Only administrators may use this command.") return - if(!air_master) + if(!SSair) to_chat(usr, "Cannot find air_system") return diff --git a/code/modules/asset_cache/assets/legacy_nanoui.dm b/code/modules/asset_cache/assets/legacy_nanoui.dm index b3207b1ea63..029e468fac4 100644 --- a/code/modules/asset_cache/assets/legacy_nanoui.dm +++ b/code/modules/asset_cache/assets/legacy_nanoui.dm @@ -6,7 +6,6 @@ "nano/css/", "nano/images/", "nano/images/status_icons/", - "nano/images/modular_computers/", "nano/templates/", "nano/js/", "nano/js/libraries/", diff --git a/code/modules/atmospherics/atmosphere/_atmosphere.dm b/code/modules/atmospherics/atmosphere/_atmosphere.dm deleted file mode 100644 index abcbc650df5..00000000000 --- a/code/modules/atmospherics/atmosphere/_atmosphere.dm +++ /dev/null @@ -1,100 +0,0 @@ -/datum/atmosphere - /// Don't initialize abstract datums. - abstract_type = /datum/atmosphere - - /// Gas string. Do not modify directly. Generated by [generate_gas_string()] - var/gas_string - /// Unique ID. MUST be different for every atmosphere! Defaults to typepath. - var/id - // todo: allow id to be set but still allow typepath lookup - - /// A list of gases to always have. Associative gas datum typepath:mols - var/list/base_gases - /// A list of allowed gases. Associative gas datum typepath:mols. Is randomized on generation. - var/list/normal_gases - /// A list of allowed gases that can only be picked once. Associative gas datum typepath:mols. Is randomized on generation. - var/list/restricted_gases - /// Chance per iteration to take from restricted gases - var/restricted_chance = 10 - - /// Pressure to fill base_gases to, if it isn't there. For lazy coders who don't want to pv=nrt. - var/base_target_pressure - /// Minimum pressure in kPa this atmosphere can be - var/minimum_pressure - /// Maximum pressure in kPa this atmosphere can be - var/maximum_pressure - - /// Minimum temperature this atmosphere can be - var/minimum_temp - /// Maximum temperature this atmosphere can be - var/maximum_temp - -/datum/atmosphere/New() - if(!id) - id = type - generate_gas_string() - -/datum/atmosphere/proc/generate_gas_string() - var/target_pressure = max(base_target_pressure, rand(minimum_pressure, maximum_pressure)) - var/pressure_scalar = target_pressure / maximum_pressure - - // First let's set up the gasmix and base gases for this template - // We make the string from a gasmix in this proc because gases need to calculate their pressure - var/datum/gas_mixture/gasmix = new - gasmix.volume = CELL_VOLUME - var/list/gaslist = gasmix.gas - gasmix.temperature = rand(minimum_temp, maximum_temp) - for(var/gaspath in base_gases) - gaslist[gaspath] = base_gases[gaspath] - - // Make sure base gases are at target pressure if it isn't already - if(gasmix.return_pressure() < base_target_pressure) - // yeah you screwed up, redo the whole thing. - // screw lazy coders - var/moles = (base_target_pressure * CELL_VOLUME) / (R_IDEAL_GAS_EQUATION * gasmix.temperature) - gaslist.Cut() - var/total_moles_base - TOTAL_MOLES(base_gases, total_moles_base) - for(var/i in base_gases) - var/amount = base_gases[i] - var/ratio = amount / total_moles_base - var/actual = moles * ratio - gaslist[i] = actual - - // Now let the random choices begin - if(length(normal_gases) && length(restricted_gases)) - var/datum/gas/gastype - var/amount - var/safety = 254 - while(gasmix.return_pressure() < target_pressure) - if(!safety--) - stack_trace("[type] ran out of safety in its while loop in generate_gas_string. Something has gone horribly wrong!") - break - if(!prob(restricted_chance)) - gastype = pick(normal_gases) - amount = normal_gases[gastype] - else - gastype = pick(restricted_gases) - amount = restricted_gases[gastype] - if(gaslist[gastype]) - continue - - amount *= rand(50, 200) / 100 // Randomly modifes the amount from half to double the base for some variety - amount *= pressure_scalar // If we pick a really small target pressure we want roughly the same mix but less of it all - amount = CEILING(amount, 0.01) - - gaslist[gastype] += amount - - if(gastype) - // That last one put us over the limit, remove some of it - while(gasmix.return_pressure() > target_pressure) - gaslist[gastype] -= gaslist[gastype] * 0.01 - gaslist[gastype] = FLOOR(gaslist[gastype], 0.01) - GAS_GARBAGE_COLLECT(gasmix.gas) - - // Now finally lets make that string - var/list/gas_string_builder = list() - for(var/i in gaslist) - gas_string_builder += "[GLOB.meta_gas_ids[i]]=[gaslist[i]]" - gas_string_builder += "TEMP=[gasmix.temperature]" - gas_string = gas_string_builder.Join(";") diff --git a/code/modules/atmospherics/atmosphere/atmosphere.dm b/code/modules/atmospherics/atmosphere/atmosphere.dm new file mode 100644 index 00000000000..6949fcec349 --- /dev/null +++ b/code/modules/atmospherics/atmosphere/atmosphere.dm @@ -0,0 +1,117 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2023 Citadel Station developers. *// + +/** + * system for both + * 1. bundling together gas string defines so they're not hardcoded gas strings + * 2. pregenerating random atmosphers + * + * generation process: + * 0. target pressure and temperature are determined + * 1. base is expanded to base_pressure + * 2. procedurally generate gases with random vars + * if there's no random, use base gases. + */ +/datum/atmosphere + /// don't initialize abstract datums. + abstract_type = /datum/atmosphere + /// generated gas string. do not modify. + var/gas_string + /// unique id. defaults to typepath. + var/id + + /// target volume, incase we want to generate for something that isn't a tile, this lets you set it. + var/volume = CELL_VOLUME + + var/pressure_gaussian = FALSE + var/pressure_center + var/pressure_deviation + var/pressure_low + var/pressure_high + + var/temperature_gaussian = FALSE + var/temperature_center + var/temperature_deviation + var/temperature_low + var/temperature_high + + /// base gases. gas id or typepath to ratio. + var/list/base = list() + /// target pressure to fill base to; if null, and base isn't empty, we fill the whole thing! + var/base_pressure + + // todo: random_markov and have key = list(other key = probability) + /// key: gasid, typepath, or random_procedural key to probability. + var/list/random = list() + /// nominal random steps: the target moles per step is determined by this. actual steps may vary. + /// higher = more uniform, lower = more rough + /// 0 = single pick + var/random_nominal_steps = 10 + /// random procedural gases to throw into the mix. + /// key = typepath. + /// this will override gas lookup, so be careful not to use a real gasid. + var/list/random_procedural = list() + +/datum/atmosphere/New() + if(!id) + id = "[type]" + generate() + +/datum/atmosphere/proc/generate() + // generate wanted pressure/temperature + var/target_pressure = pressure_gaussian? gaussian(pressure_center, pressure_deviation) : (rand(pressure_low * 100, pressure_high * 100) * 0.01) + var/target_temperature = temperature_gaussian? gaussian(temperature_center, temperature_deviation) : (rand(temperature_low * 100, temperature_high * 100) * 0.01) + + // init tracking + var/list/target_gases = list() + var/total_moles = 0 + var/target_moles = (target_pressure * volume) / (R_IDEAL_GAS_EQUATION * target_temperature) + + // generate base + var/total_base = 0 + for(var/i in 1 to length(base)) + var/what = base[i] + var/ratio = base[what] + if(ispath(what, /datum/gas)) + var/datum/gas/casted = what + what = initial(casted.id) + base[i] = what + base[what] = ratio + total_base += ratio + + var/moles_base = ((isnull(base_pressure)? (length(base)? target_pressure : 0) : base_pressure) * volume) / (R_IDEAL_GAS_EQUATION * target_temperature) + var/ratio_base = moles_base / total_base + if(ratio_base) + for(var/what in base) + var/amount = ratio_base * base[what] + total_moles += amount + target_gases[what] = amount + + // check if we have enough + if(total_moles >= target_moles) + gas_string = get_gas_string(target_gases, target_temperature) + return + + // generate rest + var/moles_per_step = (target_moles - total_moles) / random_nominal_steps + // safety + for(var/i in 1 to 200) + if(total_moles >= target_moles) + break + var/left = target_moles - total_moles + var/moles_this_step = min(rand(75, 125) * 0.01 * moles_per_step, left) + // todo: markov chain support by just having pickweight on key = list + var/key = pickweight(random) + if(random_procedural[key]) + if(ispath(random_procedural[key])) + var/datum/procedural_gas/generated = new random_procedural[key] + generated.instance() + generated.generate() + generated.register() + random_procedural[key] = generated + key = random_procedural[key] + target_gases[key] += moles_this_step + total_moles += moles_this_step + + gas_string = get_gas_string(target_gases, target_temperature) + diff --git a/code/modules/atmospherics/environmental/public.dm b/code/modules/atmospherics/environmental/public.dm index ec8171bb6a2..b24155c3047 100644 --- a/code/modules/atmospherics/environmental/public.dm +++ b/code/modules/atmospherics/environmental/public.dm @@ -1,3 +1,6 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2023 Citadel Station developers. *// + // when writing atmos machinery, prefer using these procs // this lets us somewhat separate API from implemenetation of the environmental module. // a lot of things are on atom instead, since stuff like breathing should work with inside, say, bluespace bodybags. diff --git a/code/modules/atmospherics/environmental/turf.dm b/code/modules/atmospherics/environmental/turf.dm index 794fbd34778..c2696fc55d3 100644 --- a/code/modules/atmospherics/environmental/turf.dm +++ b/code/modules/atmospherics/environmental/turf.dm @@ -112,7 +112,7 @@ RETURN_TYPE(/datum/gas_mixture) if(zone) if(!zone.invalid) - air_master.mark_zone_update(zone) + SSair.mark_zone_update(zone) return zone.air else c_copy_air() diff --git a/code/modules/atmospherics/environmental/zas/_docs.dm b/code/modules/atmospherics/environmental/zas/_docs.dm index e61f16195ba..75a3f34e101 100644 --- a/code/modules/atmospherics/environmental/zas/_docs.dm +++ b/code/modules/atmospherics/environmental/zas/_docs.dm @@ -15,7 +15,7 @@ Every air tick: Important Functions: -air_master.mark_for_update(turf) +SSair.mark_for_update(turf) When stuff happens, call this. It works on everything. You basically don't need to worry about any other functions besides CanPass(). diff --git a/code/modules/atmospherics/environmental/zas/connection.dm b/code/modules/atmospherics/environmental/zas/connection.dm index 09f59bd9995..4a3b53e21c4 100644 --- a/code/modules/atmospherics/environmental/zas/connection.dm +++ b/code/modules/atmospherics/environmental/zas/connection.dm @@ -5,7 +5,7 @@ /* Overview: - Connections are made between turfs by air_master.connect(). They represent a single point where two zones converge. + Connections are made between turfs by SSair.connect(). They represent a single point where two zones converge. Class Vars: A - Always a simulated turf. @@ -60,18 +60,18 @@ Class Procs: /datum/zas_connection/New(turf/simulated/A, turf/simulated/B) #ifdef ZAS_ASSERTIONS ASSERT(A.has_valid_zone()) - //ASSERT(air_master.has_valid_zone(B)) + //ASSERT(SSair.has_valid_zone(B)) #endif src.A = A src.B = B zoneA = A.zone if(!istype(B)) mark_space() - edge = air_master.get_edge(A.zone,B) + edge = SSair.get_edge(A.zone,B) edge.add_connection(src) else zoneB = B.zone - edge = air_master.get_edge(A.zone,B.zone) + edge = SSair.get_edge(A.zone,B.zone) edge.add_connection(src) /datum/zas_connection/proc/mark_direct() @@ -132,7 +132,7 @@ Class Procs: return else edge.remove_connection(src) - edge = air_master.get_edge(A.zone, B) + edge = SSair.get_edge(A.zone, B) edge.add_connection(src) zoneA = A.zone @@ -154,7 +154,7 @@ Class Procs: //to_chat(world, "Zones changed, \...") if(A.zone && B.zone) edge.remove_connection(src) - edge = air_master.get_edge(A.zone, B.zone) + edge = SSair.get_edge(A.zone, B.zone) edge.add_connection(src) zoneA = A.zone zoneB = B.zone diff --git a/code/modules/atmospherics/environmental/zas/connection_manager.dm b/code/modules/atmospherics/environmental/zas/connection_manager.dm index 8efe6fd4b0a..59a72066e07 100644 --- a/code/modules/atmospherics/environmental/zas/connection_manager.dm +++ b/code/modules/atmospherics/environmental/zas/connection_manager.dm @@ -16,7 +16,7 @@ Class Procs: Preferable to accessing the connection directly because it checks validity. place(datum/zas_connection/c, d) - Called by air_master.connect(). Sets the connection in the specified direction to c. + Called by SSair.connect(). Sets the connection in the specified direction to c. update_all() Called after turf/update_air_properties(). Updates the validity of all connections on this turf. diff --git a/code/modules/atmospherics/environmental/zas/controller.dm b/code/modules/atmospherics/environmental/zas/controller.dm index 2664cf6dbcd..1e2c42d5f13 100644 --- a/code/modules/atmospherics/environmental/zas/controller.dm +++ b/code/modules/atmospherics/environmental/zas/controller.dm @@ -1,6 +1,3 @@ -var/datum/controller/subsystem/air/air_master - -var/tick_multiplier = 2 /* diff --git a/code/modules/atmospherics/environmental/zas/debug.dm b/code/modules/atmospherics/environmental/zas/debug.dm index 68c034c2027..634652c27fb 100644 --- a/code/modules/atmospherics/environmental/zas/debug.dm +++ b/code/modules/atmospherics/environmental/zas/debug.dm @@ -31,12 +31,12 @@ var/image/mark = image('icons/testing/Zone.dmi', icon_state = "mark") /* if(!check_rights(R_DEBUG)) return - var/result = air_master.Tick() + var/result = SSair.Tick() if(result) to_chat(src, "Successfully Processed.") else - to_chat(src, "Failed to process! ([air_master.tick_progress])") + to_chat(src, "Failed to process! ([SSair.tick_progress])") */ /client/proc/Zone_Info(turf/T as null|turf) diff --git a/code/modules/atmospherics/environmental/zas/edge.dm b/code/modules/atmospherics/environmental/zas/edge.dm index 932106c028a..deea312b03d 100644 --- a/code/modules/atmospherics/environmental/zas/edge.dm +++ b/code/modules/atmospherics/environmental/zas/edge.dm @@ -2,7 +2,7 @@ Overview: These are what handle gas transfers between zones and into space. - They are found in a zone's edges list and in air_master.edges. + They are found in a zone's edges list and in SSair.edges. Each edge updates every air tick due to their role in gas transfer. They come in two flavors, /datum/zas_edge/zone and /datum/zas_edge/unsimulated. As the type names might suggest, they handle inter-zone and spacelike connections respectively. @@ -83,7 +83,7 @@ Class Procs: /datum/zas_edge/proc/contains_zone(datum/zas_zone/Z) /datum/zas_edge/proc/erase() - air_master.remove_edge(src) + SSair.remove_edge(src) //to_chat(world, "[type] Erased.") /datum/zas_edge/proc/tick() @@ -178,19 +178,19 @@ Class Procs: if(equiv) if(direct) erase() - air_master.merge(A, B) + SSair.merge(A, B) return else A.air.equalize(B.air) - air_master.mark_edge_sleeping(src) + SSair.mark_edge_sleeping(src) - air_master.mark_zone_update(A) - air_master.mark_zone_update(B) + SSair.mark_zone_update(A) + SSair.mark_zone_update(B) /datum/zas_edge/zone/recheck() // Edges with only one side being vacuum need processing no matter how close. if(!A.air.compare(B.air, vacuum_exception = 1)) - air_master.mark_edge_active(src) + SSair.mark_edge_active(src) //Helper proc to get connections for a zone. /datum/zas_edge/zone/proc/get_connected_zone(datum/zas_zone/from) @@ -242,16 +242,16 @@ Class Procs: if(equiv) A.air.copy_from(air) - air_master.mark_edge_sleeping(src) + SSair.mark_edge_sleeping(src) - air_master.mark_zone_update(A) + SSair.mark_zone_update(A) /datum/zas_edge/unsimulated/recheck() // Edges with only one side being vacuum need processing no matter how close. // Note: This handles the glaring flaw of a room holding pressure while exposed to space, but // does not specially handle the less common case of a simulated room exposed to an unsimulated pressurized turf. if(!A.air.compare(air, vacuum_exception = 1)) - air_master.mark_edge_active(src) + SSair.mark_edge_active(src) /proc/ShareHeat(datum/gas_mixture/A, datum/gas_mixture/B, connecting_tiles) //This implements a simplistic version of the Stefan-Boltzmann law. diff --git a/code/modules/atmospherics/environmental/zas/fire.dm b/code/modules/atmospherics/environmental/zas/fire.dm index bd194af2e59..24ecfae6475 100644 --- a/code/modules/atmospherics/environmental/zas/fire.dm +++ b/code/modules/atmospherics/environmental/zas/fire.dm @@ -61,7 +61,7 @@ If it gains pressure too slowly, it may leak or just rupture instead of explodin fuel_objs.Cut() if(!fire_tiles.len) - air_master.active_fire_zones.Remove(src) + SSair.active_fire_zones.Remove(src) /datum/zas_zone/proc/remove_liquidfuel(var/used_liquid_fuel, var/remove_fire=0) if(!fuel_objs.len) @@ -99,7 +99,7 @@ If it gains pressure too slowly, it may leak or just rupture instead of explodin return 1 fire = new(src, fl) - air_master.active_fire_zones |= zone + SSair.active_fire_zones |= zone var/obj/effect/debris/cleanable/liquid_fuel/fuel = locate() in src zone.fire_tiles |= src @@ -136,7 +136,7 @@ If it gains pressure too slowly, it may leak or just rupture instead of explodin set_light(3, 1, color) firelevel = fl - air_master.active_hotspots.Add(src) + SSair.active_hotspots.Add(src) /atom/movable/fire/Destroy() RemoveFire() @@ -150,7 +150,7 @@ If it gains pressure too slowly, it may leak or just rupture instead of explodin T.fire = null else stack_trace("Mismatching fire on [T] [COORD(T)]") - air_master.active_hotspots.Remove(src) + SSair.active_hotspots.Remove(src) /atom/movable/fire/process(delta_time) . = 1 diff --git a/code/modules/atmospherics/environmental/zas/phoron.dm b/code/modules/atmospherics/environmental/zas/phoron.dm index 2fc1d8d7f21..894038af9bc 100644 --- a/code/modules/atmospherics/environmental/zas/phoron.dm +++ b/code/modules/atmospherics/environmental/zas/phoron.dm @@ -63,7 +63,7 @@ var/image/contamination_overlay = image('icons/effects/contamination.dmi') return //Burn skin if exposed. - if(skin_burns && (species.breath_type != /datum/gas/phoron)) + if(skin_burns && (species.breath_type != GAS_ID_PHORON)) if(!pl_head_protected() || !pl_suit_protected()) burn_skin(0.75) if(prob(20)) @@ -71,7 +71,7 @@ var/image/contamination_overlay = image('icons/effects/contamination.dmi') update_health() //Burn eyes if exposed. - if(eye_burns && species.breath_type && (species.breath_type != /datum/gas/phoron)) + if(eye_burns && species.breath_type && (species.breath_type != GAS_ID_PHORON)) var/burn_eyes = 1 //Check for protective glasses @@ -95,7 +95,7 @@ var/image/contamination_overlay = image('icons/effects/contamination.dmi') burn_eyes() //Genetic Corruption - if(genetic_corruption && (species.breath_type != /datum/gas/phoron)) + if(genetic_corruption && (species.breath_type != GAS_ID_PHORON)) if(rand(1,10000) < genetic_corruption) randmutb(src) to_chat(src, "High levels of toxins cause you to spontaneously mutate!") @@ -161,6 +161,6 @@ var/image/contamination_overlay = image('icons/effects/contamination.dmi') if(!env) return for(var/g in env.gas) - if(GLOB.meta_gas_flags[g] & GAS_FLAG_CONTAMINANT && env.gas[g] > GLOB.meta_gas_visibility[g] + 1) + if(global.gas_data.flags[g] & GAS_FLAG_CONTAMINANT && env.gas[g] > 1) I.contaminate() break diff --git a/code/modules/atmospherics/environmental/zas/turf.dm b/code/modules/atmospherics/environmental/zas/turf.dm index e9e25fe0ffe..be51633d6a9 100644 --- a/code/modules/atmospherics/environmental/zas/turf.dm +++ b/code/modules/atmospherics/environmental/zas/turf.dm @@ -40,7 +40,7 @@ if(r_block == ATMOS_PASS_AIR_BLOCKED) continue - air_master.connect(potential, src, min(block, r_block), d) + SSair.connect(potential, src, min(block, r_block), d) //* credit to kapu/daedalus dock for some of the code below*// @@ -215,7 +215,7 @@ GLOBAL_REAL_VAR(list/gzn_check) = list(NORTH, SOUTH, EAST, WEST) to_chat(world, "Connecting to [sim.zone]") #endif - air_master.connect(src, potential, min(them_to_us, us_to_them), d) + SSair.connect(src, potential, min(them_to_us, us_to_them), d) #ifdef ZAS_DEBUG_GRAPHICS else if(zas_verbose) @@ -245,7 +245,7 @@ GLOBAL_REAL_VAR(list/gzn_check) = list(NORTH, SOUTH, EAST, WEST) //At this point, a zone should have happened. If it hasn't, don't add more checks, fix the bug. for(var/turf/T as anything in postponed) - air_master.connect(src, T, postponed[T], postponed_dirs[T]) + SSair.connect(src, T, postponed[T], postponed_dirs[T]) /turf/proc/post_update_air_properties() connections?.update_all() diff --git a/code/modules/atmospherics/environmental/zas/zone.dm b/code/modules/atmospherics/environmental/zas/zone.dm index 51b58779da7..09e0de0c4e4 100644 --- a/code/modules/atmospherics/environmental/zas/zone.dm +++ b/code/modules/atmospherics/environmental/zas/zone.dm @@ -53,7 +53,7 @@ Class Procs: var/atom/movable/zas_graphics/renderer_one_for_all /datum/zas_zone/New() - air_master.add_zone(src) + SSair.add_zone(src) air.temperature = TCMB air.group_multiplier = 1 air.volume = CELL_VOLUME @@ -72,7 +72,7 @@ Class Procs: if(T.fire) var/obj/effect/debris/cleanable/liquid_fuel/fuel = locate() in T fire_tiles += T - air_master.active_fire_zones |= src + SSair.active_fire_zones |= src if(fuel) fuel_objs += fuel if(renderer_one_for_all && T.allow_gas_overlays && !T.outdoors) @@ -128,7 +128,7 @@ Class Procs: /datum/zas_zone/proc/c_invalidate() invalid = 1 - air_master.remove_zone(src) + SSair.remove_zone(src) #ifdef ZAS_DEBUG_GRAPHICS for(var/turf/simulated/T in contents) T.dbg(invalid_zone) @@ -154,7 +154,7 @@ Class Procs: /datum/zas_zone/proc/tick() CACHE_VSC_PROP(atmos_vsc, /atmos/fire/firelevel_multiplier, firelevel_multiplier) - if(air.temperature >= PHORON_FLASHPOINT && !(src in air_master.active_fire_zones) && air.check_combustability() && contents.len) + if(air.temperature >= PHORON_FLASHPOINT && !(src in SSair.active_fire_zones) && air.check_combustability() && contents.len) var/turf/T = pick(contents) if(istype(T)) T.create_fire(firelevel_multiplier) @@ -184,9 +184,9 @@ Class Procs: /datum/zas_zone/proc/dbg_data(mob/M) to_chat(M, name) for(var/g in air.gas) - to_chat(M, "[GLOB.meta_gas_names[g]]: [air.gas[g]]") + to_chat(M, "[global.gas_data.names[g]]: [air.gas[g]]") to_chat(M, "P: [air.return_pressure()] kPa V: [air.volume]L T: [air.temperature]�K ([air.temperature - T0C]�C)") - to_chat(M, "O2 per N2: [(air.gas[/datum/gas/nitrogen] ? air.gas[/datum/gas/oxygen]/air.gas[/datum/gas/nitrogen] : "N/A")] Moles: [air.total_moles]") + to_chat(M, "O2 per N2: [(air.gas[GAS_ID_NITROGEN] ? air.gas[GAS_ID_OXYGEN]/air.gas[GAS_ID_NITROGEN] : "N/A")] Moles: [air.total_moles]") to_chat(M, "Simulated: [contents.len] ([air.group_multiplier])") //to_chat(M, "Unsimulated: [unsimulated_contents.len]") //to_chat(M, "Edges: [edges.len]") diff --git a/code/modules/atmospherics/gasmixtures/flow.dm b/code/modules/atmospherics/gasmixtures/flow.dm new file mode 100644 index 00000000000..b0d626ea1bc --- /dev/null +++ b/code/modules/atmospherics/gasmixtures/flow.dm @@ -0,0 +1,357 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2023 Citadel Station developers. *// + +/** + * @params + * * source - mixture to pump from + * * sink - mixture to pump into + * * limit_moles - if set, only pump this many moles of gas at most + * * limit_power - power limit in joules + */ +/proc/xgm_pump_gas(datum/gas_mixture/source, datum/gas_mixture/sink, limit_moles, limit_power) + // not enough to pump + if(source.total_moles < MINIMUM_MOLES_TO_PUMP) + return 0 + + var/specific_power = calculate_specific_power(source, sink) / ATMOS_ABSTRACT_PUMP_EFFICIENCY + limit_moles = isnull(limit_moles)? source.total_moles : min(limit_moles, source.total_moles) + if(!isnull(limit_power) && (specific_power > 0)) + limit_moles = min(limit_moles, limit_power / specific_power) + + if(limit_moles < MINIMUM_MOLES_TO_PUMP) + return + + sink.merge(source.remove(limit_moles)) + + return specific_power * limit_moles + +/** + * @params + * * source - mixture to scrub + * * sink - mixture to scrub into + * * gas_ids - list of gas ids to scrub + * * gas_groups - list of gas groups to scrub + * * limit_moles - if set, only scrubs this many moles of gas at most + * * limit_power - power limit in joules + * + * @return power draw + */ +/proc/xgm_scrub_gas(datum/gas_mixture/source, datum/gas_mixture/sink, list/gas_ids, gas_groups, limit_moles, limit_power) + // not enough to scrub + if(source.total_moles < MINIMUM_MOLES_TO_SCRUB) + return 0 + + // get actually existing gas + var/list/filtered_ids + if(gas_groups) + filtered_ids = list() + // sigh; iterate through source + for(var/id in source.gas) + if(global.gas_data.groups[id] & gas_groups) + filtered_ids += id + // then get the explicitly filtered ones if needed + if(length(gas_ids)) + filtered_ids |= (source.gas & gas_ids) + else if(length(gas_ids)) + filtered_ids = gas_ids & source.gas + + // gather + var/total_filterable_moles = 0 + var/total_specific_power = 0 + for(var/id in filtered_ids) + if(source.gas[id] < MINIMUM_MOLES_TO_SCRUB) + continue + total_filterable_moles += source.gas[id] + total_specific_power += calculate_specific_power_gas(id, source, sink) + total_specific_power /= ATMOS_ABSTRACT_SCRUB_EFFICIENCY + + // limit by both moles and power + limit_moles = isnull(limit_moles)? total_filterable_moles : min(limit_moles, total_filterable_moles) + if(!isnull(limit_power) && (total_specific_power > 0)) + limit_moles = min(limit_moles, limit_power / total_specific_power) + + // can't transfer enough + if(limit_moles < MINIMUM_MOLES_TO_SCRUB) + return 0 + + // unlike in the other procs, ratio here is the amount we can filter vs the amount there is to filter + var/ratio = limit_moles / total_filterable_moles + + // do the actual scrubbing + for(var/id in filtered_ids) + var/transfer = source.gas[id] * ratio + source.adjust_gas(id, -transfer, FALSE) + sink.adjust_gas_temp(id, transfer, source.temperature, FALSE) + + // update values + source.update_values() + sink.update_values() + + // return power used in J + return limit_moles * total_specific_power + +/** + * @params + * * source - mixture to scrub + * * sink - mixture to scrub into + * * gas_ids - list of gas ids to scrub + * * gas_groups - list of gas groups to scrub + * * limit_flow - if set, only scrubs this many liters of gas at most from source. this does *NOT* respect group multiplier. + * * limit_power - power limit in joules + * * mole_boost - ignore limit_flow to filter atleast this many moles. This is so it doesn't take too long to scrub. + * + * @return power draw + */ +/proc/xgm_scrub_gas_volume(datum/gas_mixture/source, datum/gas_mixture/sink, list/gas_ids, gas_groups, limit_flow, limit_power, mole_boost) + // not enough to scrub + if(source.total_moles < MINIMUM_MOLES_TO_SCRUB) + return 0 + + // get actually existing gas + var/list/filtered_ids + if(gas_groups) + filtered_ids = list() + // sigh; iterate through source + for(var/id in source.gas) + if(global.gas_data.groups[id] & gas_groups) + filtered_ids += id + // then get the explicitly filtered ones if needed + if(length(gas_ids)) + filtered_ids |= (source.gas & gas_ids) + else if(length(gas_ids)) + filtered_ids = gas_ids & source.gas + + // gather + var/total_filterable_moles = 0 + var/total_specific_power = 0 + for(var/id in filtered_ids) + if(source.gas[id] < MINIMUM_MOLES_TO_SCRUB) + continue + total_filterable_moles += source.gas[id] + total_specific_power += calculate_specific_power_gas(id, source, sink) + total_specific_power /= ATMOS_ABSTRACT_SCRUB_EFFICIENCY + + // limit by both moles and power + var/limit_moles = isnull(limit_flow)? total_filterable_moles : min(max(mole_boost, total_filterable_moles * (limit_flow / source.volume)), total_filterable_moles) + if(!isnull(limit_power) && (total_specific_power > 0)) + limit_moles = min(limit_moles, limit_power / total_specific_power) + + // can't transfer enough + if(limit_moles < MINIMUM_MOLES_TO_SCRUB) + return 0 + + // unlike in the other procs, ratio here is the amount we can filter vs the amount there is to filter + var/ratio = limit_moles / total_filterable_moles + + // do the actual scrubbing + for(var/id in filtered_ids) + var/transfer = source.gas[id] * ratio + source.adjust_gas(id, -transfer, FALSE) + sink.adjust_gas_temp(id, transfer, source.temperature, FALSE) + + // update values + source.update_values() + sink.update_values() + + // return power used in J + return limit_moles * total_specific_power + +/** + * @params + * * source - mixture to filter + * * sink - mixture to send unfiltered gas into + * * divert - mixture to send filtered gas into + * * to_filter - what to filter, either a gas id or a set of gas groups. + * * limit_moles - if set, only scrubs this many moles of gas at most + * * limit_power - power limit in joules + * + * @return power draw + */ +/proc/xgm_filter_gas(datum/gas_mixture/source, datum/gas_mixture/sink, datum/gas_mixture/divert, to_filter, limit_moles, limit_power) + // not enough to filter + if(source.total_moles < MINIMUM_MOLES_TO_FILTER) + return 0 + + // gather - faster than scrub + var/filterable_moles = 0 + var/list/filter_ids + if(isnum(to_filter)) + // groups + filter_ids = list() + for(var/id in source.gas) + if(global.gas_data.groups[id] & to_filter) + filterable_moles += source.gas[id] + filter_ids += id + if(!length(filter_ids)) + // not there + return xgm_pump_gas(source, sink, limit_moles, limit_power) + else + // ids + if(!(source.gas[to_filter])) + // not there + return xgm_pump_gas(source, sink, limit_moles, limit_power) + filter_ids = list(to_filter) + filterable_moles = source.gas[to_filter] + + // calculate work per mole moved through filter, diverting as necessary + var/total_specific_power = 0 + var/list/not_filtered = source.gas - filter_ids + for(var/id in not_filtered) + total_specific_power += calculate_specific_power_gas(id, source, sink) * source.gas[id] / source.total_moles + for(var/id in filter_ids) + total_specific_power += calculate_specific_power_gas(id, source, divert) * source.gas[id] / source.total_moles + total_specific_power /= ATMOS_ABSTRACT_FILTER_EFFICIENCY + + // limit + limit_moles = isnull(limit_moles)? source.total_moles : min(limit_moles, source.total_moles) + if(!isnull(limit_power) && (total_specific_power > 0)) + limit_moles = min(limit_moles, limit_power / total_specific_power) + + var/ratio = limit_moles / source.total_moles + + // not enough to filter + if(limit_moles < MINIMUM_MOLES_TO_FILTER) + return 0 + + // transfer + for(var/id in filter_ids) + var/transfer = source.gas[id] * ratio + source.adjust_gas(id, -transfer, FALSE) + divert.adjust_gas_temp(id, transfer, source.temperature, FALSE) + for(var/id in not_filtered) + var/transfer = source.gas[id] * ratio + source.adjust_gas(id, -transfer, FALSE) + sink.adjust_gas_temp(id, transfer, source.temperature, FALSE) + + // update values + source.update_values() + sink.update_values() + divert.update_values() + + // return power used in J + return limit_moles * total_specific_power + +/** + * @params + * * source - mixture to filter + * * sink - mixture to send unfiltered gas into + * * filtering - gas ids associated to mixtures to send them to. + * * limit_moles - if set, only scrubs this many moles of gas at most + * * limit_power - power limit in joules + * + * @return power draw + */ +/proc/xgm_multi_filter_gas_specific(datum/gas_mixture/source, datum/gas_mixture/sink, list/filtering, limit_moles, limit_power) + // not enough to filter + if(source.total_moles < MINIMUM_MOLES_TO_FILTER) + return 0 + + // nothing to filter + if(!length(filtering)) + return xgm_pump_gas(source, sink, limit_moles, limit_power) + + // gather - faster than scrub + var/filterable_moles = 0 + var/total_specific_power = 0 + var/list/not_filtered = source.gas - filtering + for(var/id in filtering) + filterable_moles[id] += source.gas[id] + total_specific_power += calculate_specific_power_gas(id, source, filtering[id]) * source.gas[id] / source.total_moles + for(var/id in not_filtered) + total_specific_power += calculate_specific_power_gas(id, source, sink) * source.gas[id] / source.total_moles + total_specific_power /= ATMOS_ABSTRACT_FILTER_EFFICIENCY + + // limit + limit_moles = isnull(limit_moles)? source.total_moles : min(limit_moles, source.total_moles) + if(!isnull(limit_power) && (total_specific_power > 0)) + limit_moles = min(limit_moles, limit_power / total_specific_power) + + var/ratio = limit_moles / source.total_moles + + // not enough to filter + if(limit_moles < MINIMUM_MOLES_TO_FILTER) + return 0 + + // transfer + for(var/id in filtering) + var/transfer = source.gas[id] * ratio + source.adjust_gas(id, -transfer, FALSE) + var/datum/gas_mixture/divert = filtering[id] + // update immediately, we don't have overlap most of the time. + divert.adjust_gas_temp(id, transfer, source.temperature, TRUE) + for(var/id in not_filtered) + var/transfer = source.gas[id] * ratio + source.adjust_gas(id, -transfer, FALSE) + sink.adjust_gas_temp(id, transfer, source.temperature, FALSE) + + // update values + source.update_values() + sink.update_values() + + // return power used in J + return limit_moles * total_specific_power + +/** + * @params + * * source - mixture to filter + * * sink - mixture to send unfiltered gas into + * * divert - mixture to send filtered gas into; this is anything with molar mass between lower and upper, inclusive + * * lower - lower bound of target in kg/mol + * * upper - upper bound of target in kg/mol + * * limit_moles - if set, only scrubs this many moles of gas at most + * * limit_power - power limit in joules + * + * @return power draw + */ +/proc/xgm_molar_filter_gas(datum/gas_mixture/source, datum/gas_mixture/sink, datum/gas_mixture/divert, lower, upper, limit_moles, limit_power) + // not enough to filter + if(source.total_moles < MINIMUM_MOLES_TO_FILTER) + return 0 + + // gather - faster than scrub + var/filterable_moles = 0 + var/list/filter_ids = list() + for(var/id in source.gas) + var/mass = global.gas_data.molar_masses[id] + if(lower > mass || upper < mass) + continue + filterable_moles += source.gas[id] + filter_ids += id + + // calculate work per mole moved through filter, diverting as necessary + var/total_specific_power = 0 + var/list/not_filtered = source.gas - filter_ids + for(var/id in not_filtered) + total_specific_power += calculate_specific_power_gas(id, source, sink) * source.gas[id] / source.total_moles + for(var/id in filter_ids) + total_specific_power += calculate_specific_power_gas(id, source, divert) * source.gas[id] / source.total_moles + total_specific_power /= ATMOS_ABSTRACT_FILTER_EFFICIENCY + + // limit + limit_moles = isnull(limit_moles)? source.total_moles : min(limit_moles, source.total_moles) + if(!isnull(limit_power) && (total_specific_power > 0)) + limit_moles = min(limit_moles, limit_power / total_specific_power) + + var/ratio = limit_moles / source.total_moles + + // not enough to filter + if(limit_moles < MINIMUM_MOLES_TO_FILTER) + return 0 + + // transfer + for(var/id in filter_ids) + var/transfer = source.gas[id] * ratio + source.adjust_gas(id, -transfer, FALSE) + divert.adjust_gas_temp(id, transfer, source.temperature, FALSE) + for(var/id in not_filtered) + var/transfer = source.gas[id] * ratio + source.adjust_gas(id, -transfer, FALSE) + sink.adjust_gas_temp(id, transfer, source.temperature, FALSE) + + // update values + source.update_values() + sink.update_values() + divert.update_values() + + // return power used in J + return limit_moles * total_specific_power diff --git a/code/modules/atmospherics/gasmixtures/gas_data.dm b/code/modules/atmospherics/gasmixtures/gas_data.dm new file mode 100644 index 00000000000..41b92f3391d --- /dev/null +++ b/code/modules/atmospherics/gasmixtures/gas_data.dm @@ -0,0 +1,270 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2023 Citadel Station developers. *// + +GLOBAL_REAL(gas_data, /datum/gas_data) = new + +/proc/__recreate_gas_data() + if(!isnull(global.gas_data)) + qdel(global.gas_data) + global.gas_data = new + +/** + * master datum holding all atmospherics gas data + * all lists should be accessed directly for speed + * all lists are keyed by id + */ +/datum/gas_data + //* gas data - intrinsics + /// ids; associative list to the instantiated datum + var/list/gases = list() + /// names + var/list/names = list() + /// flags + var/list/flags = list() + /// groups + var/list/groups = list() + + //* gas data - physics + /// specific heat + var/list/specific_heats = list() + /// molar masses + var/list/molar_masses = list() + + //* gas data - reagents + /// reagents: id = (reagentid, base amount, minimum moles, mole factor, max amount) + /// this is a sparse lookup, not all gases are in here. + var/list/reagents = list() + + //* gas data - visuals + /// visuals: id = (state, threshold, factor) + var/list/visuals = list() + /// visuals cache + var/list/visual_images = list() + + //* gas data - reactions + var/list/rarities = list() + + //* gas data - "fluff" + var/list/default_tlvs = list() + + //* cache lists + /// list of lists of gas ids by flag + var/list/gas_by_flag = list() + /// list of lists of gas ids by group + var/list/gas_by_group = list() + /// list of gas ids in core + var/list/gas_ids_core = list() + + //* static caches + /// list of non core group names that are filterable + var/list/gas_group_names_filterable = list() + /// gas group name to group + var/list/gas_group_by_name = list() + + //* global data + /// next random gas id + var/static/next_procedural_gas_id = 0 + +/datum/gas_data/New() + rebuild_static_caches() + build_hardcoded() + +/datum/gas_data/proc/rebuild_caches() + rebuild_static_caches() + names = list() + flags = list() + groups = list() + specific_heats = list() + molar_masses = list() + reagents = list() + visuals = list() + visual_images = list() + rarities = list() + default_tlvs = list() + gas_by_flag = list() + gas_by_group = list() + gas_ids_core = list() + if(!islist(gases)) + gases = list() + for(var/i in 1 to length(gases)) + var/id = gases[i] + var/datum/gas/G = gases[id] + if(!G) + gases -= id + continue + if(id != G.id) + gases[i] = G.id + gases[G.id] = G + _register_gas(G) + +/datum/gas_data/proc/rebuild_static_caches() + gas_group_names_filterable = list() + gas_group_by_name = list() + for(var/i in 1 to length(gas_group_names)) + var/group = 1 << i + if(group == GAS_GROUP_CORE) + continue + if(!(group & GAS_GROUPS_FILTERABLE)) + continue + var/name = gas_group_names[i] + gas_group_names_filterable += name + gas_group_by_name[name] = group + +/datum/gas_data/proc/build_hardcoded() + for(var/path in subtypesof(/datum/gas)) + var/datum/gas/G = new path + register_gas(G) + +/datum/gas_data/proc/register_gas(datum/gas/G) + ASSERT(G.id) + ASSERT(!gases[G.id]) + _register_gas(G) + +/datum/gas_data/proc/_register_gas(datum/gas/G) + //? intrinsics + gases[G.id] = G + names[G.id] = G.name + if(groups[G.id]) + var/old_group = groups[G.id] + LAZYREMOVE(gas_by_group[old_group], G.id) + groups[G.id] = G.gas_groups + if(G.gas_groups & GAS_GROUP_CORE) + gas_ids_core += G.id + if(!((G.gas_flags & (GAS_FLAG_CORE | GAS_FLAG_FILTERABLE)) == (GAS_FLAG_CORE | GAS_FLAG_FILTERABLE))) + stack_trace("[G.id] didn't have core/filterable flags even though it was marked as core group. Adding the flags...") + G.gas_flags |= (GAS_FLAG_CORE | GAS_FLAG_FILTERABLE) + else if(!(G.gas_groups & GAS_GROUPS_FILTERABLE)) + stack_trace("[G.id] didn't have a filterable gas group. This is probably a bad thing. Adding filterable flag...") + G.gas_flags |= (GAS_FLAG_FILTERABLE) + if(flags[G.id]) + var/old_flags = flags[G.id] + for(var/bit in bitfield2list(old_flags)) + LAZYREMOVE(gas_by_flag["[bit]"], G.id) + flags[G.id] = G.gas_flags + //? physics + specific_heats[G.id] = G.specific_heat + molar_masses[G.id] = G.molar_mass + //? reagents + if(G.gas_reagent_id) + reagents[G.id] = list( + G.gas_reagent_id, + G.gas_reagent_amount, + G.gas_reagent_threshold, + G.gas_reagent_factor, + G.gas_reagent_max + ) + else + reagents -= G.id + //? visuals + if(!G.visual_overlay) + visuals -= G.id + visual_images -= G.id + else + visuals[G.id] = list( + G.visual_overlay, + G.visual_threshold, + G.visual_factor + ) + visual_images[G.id] = new /list(GAS_VISUAL_STEP_MAX) + for(var/i in 1 to GAS_VISUAL_STEP_MAX) + var/image/I = image('icons/modules/atmospherics/gas.dmi', icon_state = G.visual_overlay, layer = FLOAT_LAYER + i) + I.plane = FLOAT_PLANE + I.alpha = i * (255 / GAS_VISUAL_STEP_MAX) + I.mouse_opacity = MOUSE_OPACITY_TRANSPARENT + I.color = G.visual_color + I.appearance_flags = RESET_TRANSFORM | RESET_COLOR | RESET_ALPHA | KEEP_APART + visual_images[G.id][i] = I + //? reactions + rarities[G.id] = G.rarity + //? fluff + default_tlvs[G.id] = G.default_tlv + //? rebuild cheap cache lists + //* gas groups + for(var/group in bitfield2list(G.gas_groups)) + LAZYDISTINCTADD(gas_by_group["[group]"], G.id) + //* gas flags + for(var/bit in bitfield2list(G.gas_flags)) + LAZYDISTINCTADD(gas_by_flag["[bit]"], G.id) + +/** + * tgui gas context + * + * generates data for tgui/interfaces/Atmos.tsx: + * * GasContext + * * FullGasContext + * + * @params + * * ids - gas ids; defaults to all. + * * full - for FullGasContext? Usually not needed. + */ +/datum/gas_data/proc/tgui_gas_context(list/ids, full = FALSE) + . = list() + var/list/gases = list() + .["gases"] = gases + var/list/core_ids = list() + .["coreGases"] = core_ids + var/list/filterable_ids = list() + .["filterableGases"] = filterable_ids + var/filterableGroups = GAS_GROUPS_FILTERABLE + .["groupNames"] = global.gas_group_names + for(var/id in (ids || src.gases)) + var/datum/gas/instance = src.gases[id] + if(isnull(instance)) + continue + var/list/assembled = list( + "id" = instance.id, + "name" = instance.name, + "flags" = instance.gas_flags, + "groups" = instance.gas_groups, + "specificHeat" = instance.specific_heat, + "molarMass" = instance.molar_mass, + ) + if(instance.gas_flags & GAS_FLAG_CORE) + core_ids |= instance.id + if(instance.gas_flags & GAS_FLAG_FILTERABLE) + filterable_ids += instance.id + gases[instance.id] = assembled + .["filterableGroups"] = filterableGroups + +/** + * gets tgui gas context for all non-unknown gasses + */ +/datum/gas_data/proc/tgui_known_gas_context(full = FALSE) + . = list() + for(var/id in flags) + if(flags[id] & GAS_FLAG_UNKNOWN) + continue + . += id + return tgui_gas_context(., full) + +/** + * checks if a gas group or set of gas groups is filterable + * + * returns all or none + */ +/datum/gas_data/proc/gas_groups_all_filterable(group_flag) + return ((group_flag & GAS_GROUPS_FILTERABLE) == group_flag)? group_flag : NONE + +/** + * checks if a gas group or set of gas groups is filterable + * + * returns filterable groups + */ +/datum/gas_data/proc/gas_groups_filterable(group_flag) + return (group_flag & GAS_GROUPS_FILTERABLE) + +/** + * checks if a gas id is specifically filterable + */ +/datum/gas_data/proc/gas_id_filterable(gas_id) + return flags[gas_id] & (GAS_FLAG_FILTERABLE | GAS_FLAG_CORE) + +/** + * check if a procedural gas is not conflicting with any other gas + */ +/datum/gas_data/proc/procedural_gas_conflicts(datum/procedural_gas/instance) + . = FALSE + for(var/id in gases) + var/datum/gas/gas = gases[id] + if(abs(gas.molar_mass - instance.molar_mass) <= GAS_COLLISION_THRESHOLD_MOLAR_MASS) + return TRUE diff --git a/code/modules/atmospherics/gasmixtures/gas_generation.dm b/code/modules/atmospherics/gasmixtures/gas_generation.dm new file mode 100644 index 00000000000..3ce74318a5e --- /dev/null +++ b/code/modules/atmospherics/gasmixtures/gas_generation.dm @@ -0,0 +1,103 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2023 Citadel Station developers. *// + +/proc/generate_procedural_gas(path, list/arguments) + var/datum/procedural_gas/instance = new path(arglist(arguments)) + if(!instance.instance()) + return + if(!instance.generate()) + return + if(!instance.register()) + return + return instance + +/** + * datums used to procedurally generate gas + */ +/datum/procedural_gas + /// id to use + var/id + /// numerical id - used internally + var/number + /// name + var/name + /// gas flags + var/gas_flags = NONE + /// gas groups + var/gas_groups = NONE + /// specific heat + var/specific_heat = 1 + /// molar mass + var/molar_mass = 1 + + // todo: reagents + // todo: reagents + // todo: reagents + + /// gas generation flags + var/procedural_gas_flags = NONE + +/datum/procedural_gas/New(procedural_gas_flags) + src.procedural_gas_flags = procedural_gas_flags + +/datum/procedural_gas/proc/instance() + RETURN_TYPE(/datum/gas) + number = ++global.gas_data.next_procedural_gas_id + id = "[GAS_ID_PREFIX_PROCGEN][number]" + +/datum/procedural_gas/proc/generate() + . = FALSE + CRASH("not implemented") + +/datum/procedural_gas/proc/register() + var/datum/gas/gas = new + gas.id = id + gas.name = name + gas.gas_flags = gas_flags + gas.gas_groups = gas_groups + gas.specific_heat = specific_heat + gas.molar_mass = molar_mass + +/datum/procedural_gas/proc/round_stable_random_name() + // todo: this is not round stable. we'd need db/whatever for that, deal with this when we do repository systems + persistence + return "unkw#[number]" + +/** + * standard random + */ +/datum/procedural_gas/random + var/oxidizer_chance = 30 + var/fuel_chance = 15 + var/unary_burnmix_chance = 25 + + // todo: molar mass vars + // todo: specific heat vars + +/datum/procedural_gas/random/generate() + name = round_stable_random_name() + gas_flags = GAS_FLAG_UNKNOWN + gas_groups = GAS_GROUP_UNKNOWN + + if(prob(oxidizer_chance) && (procedural_gas_flags & PROCEDURAL_GAS_ALLOW_OXIDIZER)) + gas_flags |= GAS_FLAG_OXIDIZER + if(prob(unary_burnmix_chance) && (procedural_gas_flags & PROCEDURAL_GAS_ALLOW_UNARY_BURNMIX)) + gas_flags |= GAS_FLAG_FUEL + else if(prob(fuel_chance) && (procedural_gas_flags & PROCEDURAL_GAS_ALLOW_FUEL)) + gas_flags |= GAS_FLAG_FUEL + if(prob(unary_burnmix_chance) && (procedural_gas_flags & PROCEDURAL_GAS_ALLOW_UNARY_BURNMIX)) + gas_flags |= GAS_FLAG_OXIDIZER + + // todo: optimize this shit + for(var/i in 1 to 1000) + var/potential = rand(1.5 * GAS_COLLISION_FACTOR_MOLAR_MASS, 550 * GAS_COLLISION_FACTOR_MOLAR_MASS) / GAS_COLLISION_FACTOR_MOLAR_MASS + var/success = TRUE + for(var/id in global.gas_data.molar_masses) + var/mass = global.gas_data.molar_masses[id] + if(abs(mass - potential) <= GAS_COLLISION_THRESHOLD_MOLAR_MASS) + success = FALSE + break + if(success) + molar_mass = potential + break + + specific_heat = rand(3 * 10, 300 * 10) / 10 diff --git a/code/modules/atmospherics/gasmixtures/gas_mixture.dm b/code/modules/atmospherics/gasmixtures/gas_mixture.dm index 5d1dbd49bee..643e387e9ab 100644 --- a/code/modules/atmospherics/gasmixtures/gas_mixture.dm +++ b/code/modules/atmospherics/gasmixtures/gas_mixture.dm @@ -1,19 +1,18 @@ /datum/gas_mixture - //Associative list of gas moles. - //Gases with 0 moles are not tracked and are pruned by update_values() + /// Associative list of gas moles. + /// Gases with 0 moles are not tracked and are pruned by update_values() var/list/gas - //Temperature in Kelvin of this gas mix. + /// Temperature in Kelvin of this gas mix. var/temperature = 0 - - //Sum of all the gas moles in this mix. Updated by update_values() - // DO NOT USE - Planned to be phased out. Use TOTAL_MOLES(). - var/total_moles = 0 - //Volume of this mix. + /// Volume of this mix. var/volume = CELL_VOLUME - //Size of the group this gas_mixture is representing. 1 for singletons. + + /// Sum of all the gas moles in this mix. Updated by update_values() + var/total_moles = 0 + /// Size of the group this gas_mixture is representing. 1 for singletons. var/group_multiplier = 1 - //List of active tile overlays for this gas_mixture. Updated by check_tile_graphic() + /// List of active tile overlays for this gas_mixture. Updated by check_tile_graphic() var/list/graphic /datum/gas_mixture/New(vol = CELL_VOLUME) @@ -40,7 +39,7 @@ return var/self_heat_capacity = heat_capacity() - var/giver_heat_capacity = GLOB.meta_gas_specific_heats[gasid] * moles + var/giver_heat_capacity = global.gas_data.specific_heats[gasid] * moles var/combined_heat_capacity = giver_heat_capacity + self_heat_capacity if(combined_heat_capacity != 0) @@ -96,7 +95,6 @@ update_values() - // Used to equalize the mixture between two zones before sleeping an edge. /datum/gas_mixture/proc/equalize(datum/gas_mixture/sharer) var/our_heatcap = heat_capacity() @@ -133,7 +131,7 @@ /datum/gas_mixture/proc/heat_capacity() . = 0 for(var/g in gas) - . += GLOB.meta_gas_specific_heats[g] * gas[g] + . += global.gas_data.specific_heats[g] * gas[g] . *= group_multiplier /** @@ -196,8 +194,8 @@ return SPECIFIC_ENTROPY_VACUUM //that gas isn't here //group_multiplier gets divided out in volume/gas[gasid] - also, V/(m*T) = R/(partial pressure) - var/molar_mass = GLOB.meta_gas_molar_mass[gasid] - var/specific_heat = GLOB.meta_gas_specific_heats[gasid] + var/molar_mass = global.gas_data.molar_masses[gasid] * 0.001 + var/specific_heat = global.gas_data.specific_heats[gasid] return R_IDEAL_GAS_EQUATION * ( log( (IDEAL_GAS_ENTROPY_CONSTANT*volume/(gas[gasid] * temperature)) * (molar_mass*specific_heat*temperature)**(2/3) + 1 ) + 15 ) //alternative, simpler equation @@ -266,13 +264,13 @@ var/sum = 0 for(var/g in gas) - if(GLOB.meta_gas_flags[g] & flag) + if(global.gas_data.flags[g] & flag) sum += gas[g] var/datum/gas_mixture/removed = new for(var/g in gas) - if(GLOB.meta_gas_flags[g] & flag) + if(global.gas_data.flags[g] & flag) removed.gas[g] = QUANTIZE((gas[g] / sum) * amount) gas[g] -= removed.gas[g] / group_multiplier @@ -282,13 +280,6 @@ return removed -//Returns the amount of gas that has the given flag, in moles -/datum/gas_mixture/proc/get_by_flag(flag) - . = 0 - for(var/g in gas) - if(GLOB.meta_gas_flags[g] & flag) - . += gas[g] - //Copies gas and temperature from another gas_mixture. /datum/gas_mixture/proc/copy_from(const/datum/gas_mixture/sample) gas = sample.gas.Copy() @@ -352,14 +343,16 @@ /datum/gas_mixture/proc/get_turf_graphics() . = list() var/list/gases = src.gas - var/list/no_overlay_typecache = GLOB.meta_gas_typecache_no_overlays + var/list/visual_cache = global.gas_data.visuals + var/list/overlay_cache = global.gas_data.visual_images for(var/id in gases) - if(no_overlay_typecache[id]) + if(!visual_cache[id]) continue + var/list/v = visual_cache[id] var/moles = gases[id] - var/list/gas_overlays = GLOB.meta_gas_overlays[id] - if(gas_overlays && moles > GLOB.meta_gas_visibility[id]) - . += gas_overlays[min(FACTOR_GAS_VISIBLE_MAX, CEILING(moles / MOLES_GAS_VISIBLE_STEP, 1))] + if(moles < v[GAS_VISUAL_INDEX_THRESHOLD]) + continue + . += overlay_cache[id][min(round(moles * v[GAS_VISUAL_INDEX_FACTOR]) + 1, GAS_VISUAL_STEP_MAX)] return length(.)? . : null //Equalizes a list of gas mixtures. Used for pipe networks. @@ -450,20 +443,42 @@ update_values() return 1 +/** + * get mass in kilograms + */ /datum/gas_mixture/proc/get_mass() for(var/g in gas) - . += gas[g] * GLOB.meta_gas_molar_mass[g] * group_multiplier + . += gas[g] * global.gas_data.molar_masses[g] * group_multiplier + . *= 0.001 // todo: sort above +//* Getters - -//! Getters //Returns the pressure of the gas mix. Only accurate if there have been no gas modifications since update_values() has been called. /datum/gas_mixture/proc/return_pressure() return (total_moles * R_IDEAL_GAS_EQUATION * temperature) / volume -//! Gas Strings +/** + * amount of gas of given group + */ +/datum/gas_mixture/proc/moles_by_group(group) + . = 0 + for(var/id in gas) + if(global.gas_data.groups[id] & group) + . += gas[id] + +/** + * amount of gas of given flag + */ +/datum/gas_mixture/proc/moles_by_flag(flag) + . = 0 + for(var/id in gas) + if(global.gas_data.flags[id] & flag) + . += gas[id] + +//* Gas Strings + /** * Copies from a specially formatted gas string, taking on its gas values as our own as well as their temperature. * if the gas string does not specify temperature, it'll remain unchanged. @@ -491,11 +506,24 @@ qdel(temp) return TRUE -//! Tile Operations +/** + * Get our gas string + */ +/datum/gas_mixture/proc/get_gas_string() + return "[list2params(gas)][length(gas)? ";TEMP=[temperature]" : ""]" + +/** + * Get gas string of given list of gas at a given temperature + */ +/proc/get_gas_string(list/gas, temperature) + if(!length(gas)) + return "TEMP=[TCMB]" + return "[list2params(gas)];TEMP=[temperature]" + +//* Tile Operations + /** * get the equivalent of a single tile of this gas mixture - * - * TODO: remove group_multiplier, change to tiles_represented */ /datum/gas_mixture/proc/copy_single_tile() RETURN_TYPE(/datum/gas_mixture) @@ -504,7 +532,83 @@ GM.group_multiplier = 1 return GM -//! Sharing; usually used for environmental systems. +//* Scanning + +/datum/gas_mixture/proc/chat_analyzer_scan(group_together, molar_masses, exact) + RETURN_TYPE(/list) + . = list() + update_values() + if(!total_moles) + . += SPAN_WARNING("Pressure: 0 kPa") + return + var/pressure = return_pressure() + . += SPAN_NOTICE("Pressure: [round(pressure, 0.001)] kPa") + . += SPAN_NOTICE("Temperature: [round(temperature, 0.001)]°K ([round(temperature - T0C, 0.001)]°C)") + var/reagents = 0 + var/other = 0 + var/unknown = 0 + var/list/trace_reagent_masses = list() + var/list/trace_other_masses = list() + var/list/trace_unknown_masses = list() + for(var/id in gas) + var/groups = global.gas_data.groups[id] + if((groups & GAS_GROUP_REAGENT) && (group_together & GAS_GROUP_REAGENT)) + reagents += gas[id] + trace_reagent_masses += id + else if((groups & GAS_GROUP_OTHER) && (group_together & GAS_GROUP_OTHER)) + other += gas[id] + trace_other_masses += id + else if((groups & GAS_GROUP_UNKNOWN) && (group_together & GAS_GROUP_UNKNOWN)) + unknown += gas[id] + trace_unknown_masses += id + else + . += SPAN_NOTICE("[global.gas_data.names[id]]: [exact? "[QUANTIZE(gas[id])] mol @ " : ""][round(gas[id] / total_moles * 100, 0.01)]%[molar_masses? " ([global.gas_data.molar_masses[id]] g/mol)" : ""]") + if(reagents) + . += SPAN_NOTICE("Reagents: [exact? "[QUANTIZE(reagents)] mol @ " : ""][round(reagents / total_moles * 100, 0.01)]%") + if(molar_masses) + for(var/id in trace_reagent_masses) + . += SPAN_NOTICE("[FOURSPACES] - [global.gas_data.names[id]] ([global.gas_data.molar_masses[id]] g/mol)") + if(other) + . += SPAN_NOTICE("Other: [exact? "[QUANTIZE(other)] mol @ " : ""][round(other / total_moles * 100, 0.01)]%") + if(molar_masses) + for(var/id in trace_other_masses) + . += SPAN_NOTICE("[FOURSPACES] - [global.gas_data.names[id]] ([global.gas_data.molar_masses[id]] g/mol)") + if(unknown) + . += SPAN_NOTICE("Unknown: [exact? "[QUANTIZE(unknown)] mol @ " : ""][round(unknown / total_moles * 100, 0.01)]%") + if(molar_masses) + for(var/id in trace_unknown_masses) + . += SPAN_NOTICE("[FOURSPACES] - [global.gas_data.names[id]] ([global.gas_data.molar_masses[id]] g/mol)") + + +/datum/gas_mixture/proc/tgui_analyzer_scan(group_together, molar_masses) + . = list() + var/pressure = return_pressure() + .["moles"] = total_moles + .["pressure"] = pressure + .["temperature"] = temperature + var/list/gases = list() + .["gases"] = gases + var/list/masses = list() + .["masses"] = masses + var/list/names = list() + .["names"] = names + .["showMoles"] = molar_masses + for(var/id in gas) + var/groups = global.gas_data.groups[id] + names[id] = global.gas_data.names[id] + if((groups & GAS_GROUP_REAGENT) && (group_together & GAS_GROUP_REAGENT)) + gases["Reagents"] += gas[id] + else if((groups & GAS_GROUP_OTHER) && (group_together & GAS_GROUP_OTHER)) + gases["Other"] += gas[id] + else if((groups & GAS_GROUP_UNKNOWN) && (group_together & GAS_GROUP_UNKNOWN)) + gases["Unknown"] += gas[id] + else + gases[id] += gas[id] + if(molar_masses) + masses[id] = global.gas_data.molar_masses[id] + +//* Sharing; usually used for environmental systems. + /** * Default share gas implementation - shares with another gas_mixture non-canonically * based on connecting tiles. Is just a wrapper to use a lookup table. @@ -626,7 +730,7 @@ var/their_capacity = 0 for(var/id in gases) // in the same loop, we'll calculate their total capacity, at the same time expanding their moles to the true value - their_capacity += GLOB.meta_gas_specific_heats[id] * gases[id] * group_multiplier + their_capacity += global.gas_data.specific_heats[id] * gases[id] * group_multiplier gases[id] *= group_multiplier for(var/id in our_gas) diff --git a/code/modules/atmospherics/gasmixtures/gas_types.dm b/code/modules/atmospherics/gasmixtures/gas_types.dm index 6fcd175161f..df2afc86664 100644 --- a/code/modules/atmospherics/gasmixtures/gas_types.dm +++ b/code/modules/atmospherics/gasmixtures/gas_types.dm @@ -1,457 +1,59 @@ -/// List of gases that can't react amongst themselves. KEEP THIS UP TO DATE! -GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/gas/nitrogen, /datum/gas/carbon_dioxide))) +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2023 Citadel Station developers. *// -/** - * Converts a gas ID to typepath - */ -/proc/gas_id2path(id) - return GLOB.meta_gas_id_lookup[id] - -//Unomos - global list inits for all of the meta gas lists. -//This setup allows procs to only look at one list instead of trying to dig around in lists-within-lists -GLOBAL_LIST_INIT(meta_gas_specific_heats, meta_gas_heat_list()) -GLOBAL_LIST_INIT(meta_gas_names, meta_gas_name_list()) -GLOBAL_LIST_INIT(meta_gas_visibility, meta_gas_visibility_list()) -GLOBAL_LIST_INIT(meta_gas_overlays, meta_gas_overlay_list()) -GLOBAL_LIST_INIT(meta_gas_dangers, meta_gas_danger_list()) -GLOBAL_LIST_INIT(meta_gas_ids, meta_gas_id_list()) -GLOBAL_LIST_INIT(meta_gas_fusions, meta_gas_fusion_list()) -/// Gas ID to typepath conversion lookup for optimal speed. -GLOBAL_LIST_INIT(meta_gas_id_lookup, meta_gas_id_lookup_list()) -/// Gas flags by gas -GLOBAL_LIST_INIT(meta_gas_flags, meta_gas_flag_list()) -/// Gases by gas flag -GLOBAL_LIST_INIT(meta_gas_by_flag, meta_gas_by_flag_list()) -/// Gas molar mass by gas -GLOBAL_LIST_INIT(meta_gas_molar_mass, meta_gas_molar_mass_list()) -/// Typecache of gases with no overlays -GLOBAL_LIST_INIT(meta_gas_typecache_no_overlays, meta_gas_typecache_no_overlays_list()) -/// The reagents gases give mobs when breathed -GLOBAL_LIST_INIT(meta_gas_reagent_id, meta_gas_reagent_id_list()) -/// The amount of the reagents gases give mobs -GLOBAL_LIST_INIT(meta_gas_reagent_amount, meta_gas_reagent_amount_list()) - - -/proc/meta_gas_heat_list() - . = subtypesof(/datum/gas) - for(var/gas_path in .) - var/datum/gas/gas = gas_path - .[gas_path] = initial(gas.specific_heat) - -/proc/meta_gas_name_list() - . = subtypesof(/datum/gas) - for(var/gas_path in .) - var/datum/gas/gas = gas_path - .[gas_path] = initial(gas.name) - -/proc/meta_gas_visibility_list() - . = subtypesof(/datum/gas) - for(var/gas_path in .) - var/datum/gas/gas = gas_path - .[gas_path] = initial(gas.moles_visible) - -/proc/meta_gas_overlay_list() - . = subtypesof(/datum/gas) - for(var/gas_path in .) - var/datum/gas/gas = gas_path - .[gas_path] = 0 //gotta make sure if(GLOB.meta_gas_overlays[gaspath]) doesn't break - if(initial(gas.moles_visible) != null) - .[gas_path] = new /list(FACTOR_GAS_VISIBLE_MAX) - for(var/i in 1 to FACTOR_GAS_VISIBLE_MAX) - var/image/I = image('icons/effects/atmospherics.dmi', icon_state = initial(gas.gas_overlay), layer = FLOAT_LAYER + i) - I.plane = FLOAT_PLANE - I.alpha = i * 255 / FACTOR_GAS_VISIBLE_MAX - I.mouse_opacity = MOUSE_OPACITY_TRANSPARENT - I.appearance_flags = RESET_TRANSFORM | RESET_COLOR | RESET_ALPHA | KEEP_APART - .[gas_path][i] = I - -/proc/meta_gas_danger_list() - . = subtypesof(/datum/gas) - for(var/gas_path in .) - var/datum/gas/gas = gas_path - .[gas_path] = initial(gas.dangerous) - -/proc/meta_gas_id_list() - . = subtypesof(/datum/gas) - for(var/gas_path in .) - var/datum/gas/gas = gas_path - .[gas_path] = initial(gas.id) - -/proc/meta_gas_fusion_list() - . = subtypesof(/datum/gas) - for(var/gas_path in .) - var/datum/gas/gas = gas_path - .[gas_path] = initial(gas.fusion_power) - -/proc/meta_gas_id_lookup_list() - var/list/gases = subtypesof(/datum/gas) - . = list() - for(var/gas_path in gases) - var/datum/gas/gas = gas_path - .[initial(gas.id)] = gas_path - -/proc/meta_gas_flag_list() - . = subtypesof(/datum/gas) - for(var/gas_path in .) - var/datum/gas/gas = gas_path - .[gas_path] = initial(gas.gas_flags) - -/proc/meta_gas_by_flag_list() - . = list() - // slightly more tricky - var/list/gases = subtypesof(/datum/gas) - // for each gas - for(var/gas_path in gases) - var/datum/gas/gas = gas_path - // cache flags - var/gas_flags = initial(gas.gas_flags) - // for each bitfield - for(var/i in GLOB.bitflags) - // if we have it - if(gas_flags & i) - // add to list - LAZYADD(.["[i]"], gas_path) - -/proc/meta_gas_molar_mass_list() - . = list() - var/list/gases = subtypesof(/datum/gas) - for(var/gas_path in gases) - var/datum/gas/G = gas_path - .[gas_path] = initial(G.molar_mass) - -/proc/meta_gas_typecache_no_overlays_list() - . = list() - for(var/gastype in subtypesof(/datum/gas)) - var/datum/gas/gasvar = gastype - if (!initial(gasvar.gas_overlay)) - .[gastype] = TRUE - -/proc/meta_gas_reagent_id_list() - . = list() - for(var/gastype in subtypesof(/datum/gas)) - var/datum/gas/gasvar = gastype - if(initial(gasvar.gas_reagent_id)) - .[gastype] = initial(gasvar.gas_reagent_id) - -/proc/meta_gas_reagent_amount_list() - . = list() - for(var/gastype in subtypesof(/datum/gas)) - var/datum/gas/gasvar = gastype - if(initial(gasvar.gas_reagent_amount)) - .[gastype] = initial(gasvar.gas_reagent_amount) -// Visual overlay -/* -/obj/effect/overlay/gas - icon = 'icons/effects/atmospherics.dmi' - mouse_opacity = MOUSE_OPACITY_TRANSPARENT - anchored = TRUE // should only appear in vis_contents, but to be safe - layer = FLY_LAYER - appearance_flags = TILE_BOUND - vis_flags = NONE - -/obj/effect/overlay/gas/New(state, alph) - . = ..() - icon_state = state - alpha = alph -*/ - -/*||||||||||||||/----------\||||||||||||||*\ -||||||||||||||||[GAS DATUMS]|||||||||||||||| -||||||||||||||||\__________/|||||||||||||||| -||||These should never be instantiated. |||| -||||They exist only to make it easier |||| -||||to add a new gas. They are accessed |||| -||||only by meta_gas_list(). |||| -\*||||||||||||||||||||||||||||||||||||||||*/ /datum/gas + //* Intrinsics /// Text ID for things like gas strings. THIS SHOULD NEVER, EVER, BE CHANGED! Pick one and stick with it. Change this and EVERYTHING breaks. The typepath, infact, is more mutable than this! var/id = "" - /// Specific heat in J/(mol*K) - var/specific_heat = 0 /// Textual name var/name = "Unnamed Gas" - /// icon_state in icons/effects/atmospherics.dmi - var/gas_overlay = "" - /// How many moles is required to make this gas visible - var/moles_visible - /// Is this gas considered dangerous? Used by canister and admin logging in general. - var/dangerous = FALSE + /// Gas flags. See [code/__DEFINES/atmospherics/flags.dm] + var/gas_flags = GAS_FLAG_FILTERABLE + /// gas group - flag + var/gas_groups = GAS_GROUP_OTHER + + //* physics + /// Specific heat in J/(mol*K). + /// For chemicals that exist in real life this is the specific heat value under constant volume. + var/specific_heat = 1 + /// Molar mass in kg/mol + var/molar_mass = 1 + + //* reagents + /// reagent id to apply + var/gas_reagent_id + /// reagent amount to add to someone breathing it at minimum moles + var/gas_reagent_amount = 0 + /// minimum moles to affect + var/gas_reagent_threshold = 0 + /// reagent amount to additionally add per mole + var/gas_reagent_factor = 0 + /// reagent amount to not exceed in them + var/gas_reagent_max = 10 + /// reserved for chemgas - how many moles of this gas corrospond to 1 unit; should always be inverse of reagent's side of this lookup + var/gas_reagent_moles = 0.1 + + //* visuals + // todo: visual cache gen should be a proc on /datum/gas so we can do custom colors + /// visual overlay color if any + var/visual_color + /// icon_state in icons/modules/atmospherics/gas.dmi; invisible if null + var/visual_overlay + /// minimum moles to see gas + var/visual_threshold = 0.25 + /// index addition per mole for cache list + var/visual_factor = 1 + + //* reactions /// Fusion is not yet implemented : How much the gas accelerates a fusion reaction var/fusion_power = 0 /// Relative rarity compared to other gases, used when setting up the reactions list. var/rarity = 0 - /// Molar mass in kg/mol - var/molar_mass = 0 - /// Gas flags. See [code/__DEFINES/atmospherics/flags.dm] - var/gas_flags - var/gas_reagent_id //What is the ID of the reagent we want to apply - var/gas_reagent_amount = 0//How much of the reagent is applied - //For a gas that makes up 21% of the atmos you need to be above 1.39, for it to instill any reagents, for lower percentages the number needs to be higher,and viceversa + //* fluff + /// default TLV values for air alarms in format of list(danger low, warning low, warning high, danger high) + /// null to have air alarms ignore this gas entirely + var/list/default_tlv -/datum/gas/oxygen - id = "o2" - name = "Oxygen" - specific_heat = 20 - molar_mass = 0.032 - gas_flags = GAS_FLAG_OXIDIZER - -/datum/gas/nitrogen - id = "n2" - name = "Nitrogen" - specific_heat = 20 - molar_mass = 0.028 - -/datum/gas/carbon_dioxide - id = "co2" - name = "Carbon Dioxide" - specific_heat = 30 - molar_mass = 0.044 - -/datum/gas/phoron - id = "phoron" - name = "Phoron" - //Note that this has a significant impact on TTV yield. - //Because it is so high, any leftover phoron soaks up a lot of heat and drops the yield pressure. - specific_heat = 200 // J/(mol*K) - - //Hypothetical group 14 (same as carbon), period 8 element. - //Using multiplicity rule, it's atomic number is 162 - //and following a N/Z ratio of 1.5, the molar mass of a monatomic gas is: - molar_mass = 0.405 // kg/mol - - gas_overlay = "phoron" - - moles_visible = 0.7 - - gas_flags = GAS_FLAG_FUEL | GAS_FLAG_FUSION_FUEL | GAS_FLAG_CONTAMINANT - -/datum/gas/volatile_fuel - id = "volatile_fuel" - name = "Volatile Fuel" - specific_heat = 253 // J/(mol*K) C8H18 gasoline. Isobaric, but good enough. - molar_mass = 0.114 // kg/mol. same. - - gas_flags = GAS_FLAG_FUEL - -/datum/gas/nitrous_oxide - id = "n2o" - name = "Nitrous Oxide" - specific_heat = 40 - molar_mass = 0.044 - - gas_overlay = "nitrous_oxide" - moles_visible = 1 - - gas_flags = GAS_FLAG_OXIDIZER - -//The following is partially stolen from Nebula -//I am not rewriting our handling of air for this, at least for now. -/datum/gas/helium - id = "helium" - name = "Helium" - specific_heat = 80 - molar_mass = 0.004 - - gas_flags = GAS_FLAG_FUSION_FUEL - -/datum/gas/carbon_monoxide - id = "carbon monoxide" - name = "Carbon Monoxide" - //lore_text = "A highly poisonous gas." - specific_heat = 30 - molar_mass = 0.028 - - //gas_symbol_html = "CO" - //gas_symbol = "CO" - //taste_description = "stale air" - //metabolism = 0.05 // As with helium. - -/datum/gas/methyl_bromide - id = "methyl bromide" - name = "Methyl Bromide" - //lore_text = "A once-popular fumigant and weedkiller." - specific_heat = 42.59 - molar_mass = 0.095 - //gas_symbol_html = "CH3Br" - //gas_symbol = "CH3Br" - //taste_description = "pestkiller" - /*vapor_products = list( - /singleton/material/gas/methyl_bromide = 1 - ) - value = 0.25*/ - -/datum/gas/nitrodioxide - id = "nitrogen dioxide" - name = "Nitrogen Dioxide" - //color = "#ca6409" - specific_heat = 37 - molar_mass = 0.054 - gas_flags = GAS_FLAG_OXIDIZER - //gas_symbol_html = "NO2" - //gas_symbol = "NO2" - -/datum/gas/nitricoxide - id = "nitric oxide" - name = "Nitric Oxide" - specific_heat = 10 - molar_mass = 0.030 - gas_flags = GAS_FLAG_OXIDIZER - //gas_symbol_html = "NO" - //gas_symbol = "NO" - -/datum/gas/methane - id = "methane" - name = "Methane" - specific_heat = 30 - molar_mass = 0.016 - gas_flags = GAS_FLAG_FUEL - //gas_symbol_html = "CH4" - //gas_symbol = "CH4" - -/datum/gas/argon - id = "argon" - name = "Argon" - //lore_text = "Just when you need it, all of your supplies argon." - specific_heat = 10 - molar_mass = 0.018 - //gas_symbol_html = "Ar" - //gas_symbol = "Ar" - //value = 0.25 - -// If narcosis is ever simulated, krypton has a narcotic potency seven times greater than regular airmix. -/datum/gas/krypton - id = "krypton" - name = "Krypton" - specific_heat = 5 - molar_mass = 0.036 - //gas_symbol_html = "Kr" - //gas_symbol = "Kr" - //value = 0.25 - -/datum/gas/neon - id = "neon" - name = "Neon" - specific_heat = 20 - molar_mass = 0.01 - //gas_symbol_html = "Ne" - //gas_symbol = "Ne" - //value = 0.25 - -/datum/gas/ammonia - id = "Ammonia" - name = "ammonia" - specific_heat = 20 - molar_mass = 0.017 - //gas_symbol_html = "NH3" - //gas_symbol = "NH3" - //metabolism = 0.05 // So that low dosages have a chance to build up in the body. - //taste_description = "mordant" - //taste_mult = 2 - //lore_text = "A caustic substance commonly used in fertilizer or household cleaners." - //color = "#404030" - //metabolism = REM * 0.5 - //overdose = 5 - -/datum/gas/xenon - id = "Xenon" - name = "xenon" - specific_heat = 3 - molar_mass = 0.054 - //gas_symbol_html = "Xe" - //gas_symbol = "Xe" - //value = 0.25 - -/datum/gas/chlorine - id = "chlorine" - name = "Chlorine" - //color = "#c5f72d" - //gas_overlay_limit = 0.5 - specific_heat = 5 - molar_mass = 0.017 - gas_flags = GAS_FLAG_CONTAMINANT - /*gas_symbol_html = "Cl" - gas_symbol = "Cl" - taste_description = "bleach" - metabolism = REM - heating_point = null - heating_products = null - toxicity = 15*/ - gas_overlay = "chlorine" - moles_visible = 1 - - gas_reagent_id = "sacid" - gas_reagent_amount = 10 - - -/datum/gas/sulfur_dioxide - id = "sulfur dioxide" - name = "Sulfur Dioxide" - specific_heat = 30 - molar_mass = 0.044 - /*gas_symbol_html = "SO2" - gas_symbol = "SO2" - dissolves_into = list( - /singleton/material/solid/sulfur = 0.5, - /singleton/material/gas/oxygen = 0.5 - )*/ - -/datum/gas/hydrogen - id = "hydrogen" - name = "Hydrogen" - //lore_text = "A colorless, flammable gas." - //flags = MAT_FLAG_FUSION_FUEL - //wall_name = "bulkhead" - //construction_difficulty = MAT_VALUE_HARD_DIY - specific_heat = 100 - molar_mass = 0.002 - gas_flags = GAS_FLAG_FUEL | GAS_FLAG_FUSION_FUEL - /*burn_product = /singleton/material/liquid/water - gas_symbol_html = "H2" - gas_symbol = "H2" - dissolves_into = list( - /singleton/material/liquid/fuel/hydrazine = 1 - ) - value = 0.4*/ - -/datum/gas/hydrogen/tritium - id = "tritium" - name = "Tritium" - /*lore_text = "A radioactive isotope of hydrogen. Useful as a fusion reactor fuel material." - mechanics_text = "Tritium is useable as a fuel in some forms of portable generator. It can also be converted into a fuel rod suitable for a R-UST fusion plant injector by using a fuel compressor. It fuses hotter than deuterium but is correspondingly more unstable." - color = "#777777" - stack_origin_tech = "{'materials':5}" - value = 0.45 - gas_symbol_html = "T" - gas_symbol = "T"*/ - -/datum/gas/hydrogen/deuterium - id = "Deuterium" - name = "Deuterium" - /*lore_text = "One of the two stable isotopes of hydrogen; also known as heavy hydrogen. Useful as a chemically synthesised fusion reactor fuel material." - mechanics_text = "Deuterium can be converted into a fuel rod suitable for a R-UST fusion plant injector by using a fuel compressor. It is the most 'basic' fusion fuel." - flags = MAT_FLAG_FUSION_FUEL | MAT_FLAG_FISSIBLE - color = "#999999" - stack_origin_tech = "{'materials':3}" - gas_symbol_html = "D" - gas_symbol = "D" - value = 0.5 - - neutron_interactions = list( - INTERACTION_ABSORPTION = 1250 - ) - absorption_products = list( - /singleton/material/gas/hydrogen/tritium = 1 - ) - neutron_absorption = 5 - neutron_cross_section = 3*/ - -//Special gas type that are very powerful and shouldnt be avaiable in large portions -/datum/gas/vimur - id = "vimur" - name = "Vimur" - specific_heat = 500 // J/(mol*K) //250% the heat capacity of phoron - molar_mass = 0.054 // Standard Mass of xenon - - gas_overlay = "vimur" - moles_visible = 0.1 + // todo: combustion enthalpies / oxidizer powers + // todo: combustion product gases diff --git a/code/modules/atmospherics/gasmixtures/gas_types/core.dm b/code/modules/atmospherics/gasmixtures/gas_types/core.dm new file mode 100644 index 00000000000..747573b9f9c --- /dev/null +++ b/code/modules/atmospherics/gasmixtures/gas_types/core.dm @@ -0,0 +1,82 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2023 Citadel Station developers. *// + +/datum/gas/oxygen + id = GAS_ID_OXYGEN + name = "O2" + + specific_heat = 21 + molar_mass = 32 + gas_flags = GAS_FLAG_OXIDIZER | GAS_FLAG_FILTERABLE | GAS_FLAG_CORE + gas_groups = GAS_GROUP_CORE + + default_tlv = list(16, 19, 70, 100) + +/datum/gas/nitrogen + id = GAS_ID_NITROGEN + name = "N2" + + specific_heat = 20.8 + molar_mass = 28 + gas_flags = GAS_FLAG_FILTERABLE | GAS_FLAG_CORE + gas_groups = GAS_GROUP_CORE + + default_tlv = list(0, 0, 135, 140) + +/datum/gas/carbon_dioxide + id = GAS_ID_CARBON_DIOXIDE + name = "CO2" + + specific_heat = 28.82 + molar_mass = 44 + gas_flags = GAS_FLAG_FILTERABLE | GAS_FLAG_CORE + gas_groups = GAS_GROUP_CORE + + default_tlv = list(0, 0, 5, 10) + +/datum/gas/nitrous_oxide + id = GAS_ID_NITROUS_OXIDE + name = "N2O" + + visual_overlay = "nitrous_oxide" + visual_threshold = 1 + + specific_heat = 30.36 + molar_mass = 44 + gas_flags = GAS_FLAG_OXIDIZER | GAS_FLAG_FILTERABLE | GAS_FLAG_CORE + gas_groups = GAS_GROUP_CORE + + default_tlv = list(0, 0, 3, 7) + +/datum/gas/hydrogen + id = GAS_ID_HYDROGEN + name = "H2" + + specific_heat = 20.32 + molar_mass = 2 + gas_flags = GAS_FLAG_FUEL | GAS_FLAG_FUSION_FUEL | GAS_FLAG_FILTERABLE | GAS_FLAG_CORE + gas_groups = GAS_GROUP_CORE + + default_tlv = list(0, 0, 0.25, 1) + +/datum/gas/phoron + id = GAS_ID_PHORON + name = "PHR" + + visual_overlay = "phoron" + visual_threshold = 0.7 + + // Hypothetical group 14, period 8 element + // Atomic number 162 + // Neutron/Proton ratio 1.5 + molar_mass = 405 + // wonder scifi carbon-group element + // we're going to assume it's a polyatomic gas + // infact while we're at it why not just assume it's some + // weird magic element that naturally forms complex structures like + // carbon nanotubes or something lol i'm sure that'll justify this value + specific_heat = 207.52 + gas_flags = GAS_FLAG_FUEL | GAS_FLAG_FUSION_FUEL | GAS_FLAG_CONTAMINANT | GAS_FLAG_FILTERABLE | GAS_FLAG_CORE + gas_groups = GAS_GROUP_CORE + + default_tlv = list(0, 0, 0, 0.5) diff --git a/code/modules/atmospherics/gasmixtures/gas_types_hardcoded.dm b/code/modules/atmospherics/gasmixtures/gas_types_hardcoded.dm new file mode 100644 index 00000000000..f456bf42360 --- /dev/null +++ b/code/modules/atmospherics/gasmixtures/gas_types_hardcoded.dm @@ -0,0 +1,201 @@ +// todo: eithre rename or remove this and overhaul its uses, fucks sakes. +/datum/gas/volatile_fuel + id = GAS_ID_VOLATILE_FUEL + name = "Volatile Fuel" + specific_heat = 253 // J/(mol*K) C8H18 gasoline. Isobaric, but good enough. + molar_mass = 1000 * 0.114 // kg/mol. same. + + gas_flags = GAS_FLAG_FUEL + +//The following is partially stolen from Nebula +//I am not rewriting our handling of air for this, at least for now. +/datum/gas/helium + id = GAS_ID_HELIUM + name = "Helium" + specific_heat = 80 + molar_mass = 1000 * 0.004 + + gas_flags = GAS_FLAG_FUSION_FUEL + +/datum/gas/carbon_monoxide + id = GAS_ID_CARBON_MONOXIDE + name = "Carbon Monoxide" + //lore_text = "A highly poisonous gas." + specific_heat = 30 + molar_mass = 1000 * 0.028 + + //gas_symbol_html = "CO" + //gas_symbol = "CO" + //taste_description = "stale air" + //metabolism = 0.05 // As with helium. + +/datum/gas/methyl_bromide + id = GAS_ID_METHYL_BROMIDE + name = "Methyl Bromide" + //lore_text = "A once-popular fumigant and weedkiller." + specific_heat = 42.59 + molar_mass = 1000 * 0.095 + //gas_symbol_html = "CH3Br" + //gas_symbol = "CH3Br" + //taste_description = "pestkiller" + /*vapor_products = list( + /singleton/material/gas/methyl_bromide = 1 + ) + value = 0.25*/ + +/datum/gas/nitrodioxide + id = GAS_ID_NITROGEN_DIOXIDE + name = "Nitrogen Dioxide" + //color = "#ca6409" + specific_heat = 37 + molar_mass = 1000 * 0.054 + gas_flags = GAS_FLAG_OXIDIZER + //gas_symbol_html = "NO2" + //gas_symbol = "NO2" + +/datum/gas/nitricoxide + id = GAS_ID_NITRIC_OXIDE + name = "Nitric Oxide" + specific_heat = 10 + molar_mass = 1000 * 0.030 + gas_flags = GAS_FLAG_OXIDIZER + //gas_symbol_html = "NO" + //gas_symbol = "NO" + +/datum/gas/methane + id = GAS_ID_METHANE + name = "Methane" + specific_heat = 30 + molar_mass = 1000 * 0.016 + gas_flags = GAS_FLAG_FUEL + //gas_symbol_html = "CH4" + //gas_symbol = "CH4" + +/datum/gas/argon + id = GAS_ID_ARGON + name = "Argon" + //lore_text = "Just when you need it, all of your supplies argon." + specific_heat = 10 + molar_mass = 1000 * 0.018 + //gas_symbol_html = "Ar" + //gas_symbol = "Ar" + //value = 0.25 + +// If narcosis is ever simulated, krypton has a narcotic potency seven times greater than regular airmix. +/datum/gas/krypton + id = GAS_ID_KRYPTON + name = "Krypton" + specific_heat = 5 + molar_mass = 1000 * 0.036 + //gas_symbol_html = "Kr" + //gas_symbol = "Kr" + //value = 0.25 + +/datum/gas/neon + id = GAS_ID_NEON + name = "Neon" + specific_heat = 20 + molar_mass = 1000 * 0.01 + //gas_symbol_html = "Ne" + //gas_symbol = "Ne" + //value = 0.25 + +/datum/gas/ammonia + id = GAS_ID_AMMONIA + name = "Ammonia" + specific_heat = 20 + molar_mass = 1000 * 0.017 + //gas_symbol_html = "NH3" + //gas_symbol = "NH3" + //metabolism = 0.05 // So that low dosages have a chance to build up in the body. + //taste_description = "mordant" + //taste_mult = 2 + //lore_text = "A caustic substance commonly used in fertilizer or household cleaners." + //color = "#404030" + //metabolism = REM * 0.5 + //overdose = 5 + +/datum/gas/xenon + id = GAS_ID_XENON + name = "Xenon" + specific_heat = 3 + molar_mass = 1000 * 0.054 + //gas_symbol_html = "Xe" + //gas_symbol = "Xe" + //value = 0.25 + +/datum/gas/chlorine + id = GAS_ID_CHLORINE + name = "Chlorine" + //color = "#c5f72d" + //visual_overlay_limit = 0.5 + specific_heat = 5 + molar_mass = 1000 * 0.017 + gas_flags = GAS_FLAG_CONTAMINANT + /*gas_symbol_html = "Cl" + gas_symbol = "Cl" + taste_description = "bleach" + metabolism = REM + heating_point = null + heating_products = null + toxicity = 15*/ + visual_overlay = "chlorine" + visual_threshold = 1 + + gas_reagent_id = "sacid" + gas_reagent_amount = 10 + + +/datum/gas/sulfur_dioxide + id = GAS_ID_SULFUR_DIOXIDE + name = "Sulfur Dioxide" + specific_heat = 30 + molar_mass = 1000 * 0.044 + /*gas_symbol_html = "SO2" + gas_symbol = "SO2" + dissolves_into = list( + /singleton/material/solid/sulfur = 0.5, + /singleton/material/gas/oxygen = 0.5 + )*/ + +/datum/gas/tritium + id = GAS_ID_TRITIUM + name = "Tritium" + /*lore_text = "A radioactive isotope of hydrogen. Useful as a fusion reactor fuel material." + mechanics_text = "Tritium is useable as a fuel in some forms of portable generator. It can also be converted into a fuel rod suitable for a R-UST fusion plant injector by using a fuel compressor. It fuses hotter than deuterium but is correspondingly more unstable." + color = "#777777" + stack_origin_tech = "{'materials':5}" + value = 0.45 + gas_symbol_html = "T" + gas_symbol = "T"*/ + +/datum/gas/deuterium + id = GAS_ID_DEUTERIUM + name = "Deuterium" + /*lore_text = "One of the two stable isotopes of hydrogen; also known as heavy hydrogen. Useful as a chemically synthesised fusion reactor fuel material." + mechanics_text = "Deuterium can be converted into a fuel rod suitable for a R-UST fusion plant injector by using a fuel compressor. It is the most 'basic' fusion fuel." + flags = MAT_FLAG_FUSION_FUEL | MAT_FLAG_FISSIBLE + color = "#999999" + stack_origin_tech = "{'materials':3}" + gas_symbol_html = "D" + gas_symbol = "D" + value = 0.5 + + neutron_interactions = list( + INTERACTION_ABSORPTION = 1250 + ) + absorption_products = list( + /singleton/material/gas/hydrogen/tritium = 1 + ) + neutron_absorption = 5 + neutron_cross_section = 3*/ + +//Special gas type that are very powerful and shouldnt be avaiable in large portions +/datum/gas/vimur + id = GAS_ID_VIMUR + name = "Vimur" + specific_heat = 500 // J/(mol*K) //250% the heat capacity of phoron + molar_mass = 1000 * 0.054 // Standard Mass of xenon + + visual_overlay = "vimur" + visual_threshold = 0.1 diff --git a/code/modules/atmospherics/gasmixtures/reactions.dm b/code/modules/atmospherics/gasmixtures/reactions.dm index a3d47caf12c..963b4d2646c 100644 --- a/code/modules/atmospherics/gasmixtures/reactions.dm +++ b/code/modules/atmospherics/gasmixtures/reactions.dm @@ -18,9 +18,9 @@ //*** Get the fuel and oxidizer amounts for(var/g in gas) - if(GLOB.meta_gas_flags[g] & GAS_FLAG_FUEL) + if(global.gas_data.flags[g] & GAS_FLAG_FUEL) gas_fuel += gas[g] - if(GLOB.meta_gas_flags[g] & GAS_FLAG_OXIDIZER) + if(global.gas_data.flags[g] & GAS_FLAG_OXIDIZER) total_oxidizers += gas[g] gas_fuel *= group_multiplier total_oxidizers *= group_multiplier @@ -85,7 +85,7 @@ //remove_by_flag() and adjust_gas() handle the group_multiplier for us. remove_by_flag(GAS_FLAG_OXIDIZER, used_oxidizers) remove_by_flag(GAS_FLAG_FUEL, used_gas_fuel) - adjust_gas(/datum/gas/carbon_dioxide, used_oxidizers) + adjust_gas(GAS_ID_CARBON_DIOXIDE, used_oxidizers) if(zone) zone.remove_liquidfuel(used_liquid_fuel, !check_combustability()) @@ -104,7 +104,7 @@ /datum/gas_mixture/proc/check_recombustability(list/fuel_objs) . = 0 for(var/g in gas) - if(GLOB.meta_gas_flags[g] & GAS_FLAG_OXIDIZER && gas[g] >= 0.1) + if(global.gas_data.flags[g] & GAS_FLAG_OXIDIZER && gas[g] >= 0.1) . = 1 break @@ -116,7 +116,7 @@ . = 0 for(var/g in gas) - if(GLOB.meta_gas_flags[g] & GAS_FLAG_FUEL && gas[g] >= 0.1) + if(global.gas_data.flags[g] & GAS_FLAG_FUEL && gas[g] >= 0.1) . = 1 break @@ -124,7 +124,7 @@ . = 0 CACHE_VSC_PROP(atmos_vsc, /atmos/fire/consumption_rate, fire_consumption_rate) for(var/g in gas) - if(GLOB.meta_gas_flags[g] & GAS_FLAG_OXIDIZER && QUANTIZE(gas[g] * fire_consumption_rate) >= 0.1) + if(global.gas_data.flags[g] & GAS_FLAG_OXIDIZER && QUANTIZE(gas[g] * fire_consumption_rate) >= 0.1) . = 1 break @@ -136,7 +136,7 @@ . = 0 for(var/g in gas) - if(GLOB.meta_gas_flags[g] & GAS_FLAG_FUEL && (QUANTIZE(gas[g] * fire_consumption_rate) >= max(0.005, MINIMUM_MOLES_TO_SPARK))) + if(global.gas_data.flags[g] & GAS_FLAG_FUEL && (QUANTIZE(gas[g] * fire_consumption_rate) >= max(0.005, MINIMUM_MOLES_TO_SPARK))) . = 1 break diff --git a/code/modules/atmospherics/gasmixtures/transfer_helpers.dm b/code/modules/atmospherics/gasmixtures/transfer_helpers.dm index 0a8699805bd..f88a407cd5f 100644 --- a/code/modules/atmospherics/gasmixtures/transfer_helpers.dm +++ b/code/modules/atmospherics/gasmixtures/transfer_helpers.dm @@ -1,5 +1,5 @@ // // Helpers for machine transfer, taking into account power draws, max pressures, max volumes, etc. -// // All of these also, if provided with machine parameter, set the machine's last_power_draw and last_transfer_rate. +// // All of these also, if provided with machine parameter, set the machine's last_power_draw_legacy and last_transfer_rate. // /** // * Gas pumping proc diff --git a/code/modules/atmospherics/machinery/_atmospherics_helpers.dm b/code/modules/atmospherics/machinery/_atmospherics_helpers.dm index b01a070b0e7..4f4fbdb81ba 100644 --- a/code/modules/atmospherics/machinery/_atmospherics_helpers.dm +++ b/code/modules/atmospherics/machinery/_atmospherics_helpers.dm @@ -8,9 +8,7 @@ */ -/obj/machinery/atmospherics/var/last_flow_rate = 0 -/obj/machinery/atmospherics/var/last_power_draw = 0 -/obj/machinery/portable_atmospherics/var/last_flow_rate = 0 +/obj/machinery/portable_atmospherics/var/last_flow_rate_legacy = 0 /obj/machinery/atmospherics/var/debug = 0 @@ -35,7 +33,7 @@ transfer_moles = min(source.total_moles, transfer_moles) //Calculate the amount of energy required and limit transfer_moles based on available power - var/specific_power = calculate_specific_power(source, sink)/ATMOS_PUMP_EFFICIENCY //this has to be calculated before we modify any gas mixtures + var/specific_power = calculate_specific_power(source, sink)/ATMOS_ABSTRACT_PUMP_EFFICIENCY //this has to be calculated before we modify any gas mixtures if (!isnull(available_power) && specific_power > 0)//specific_power > 0 means we need to use power to move moles, otherwise we can get away with just letting it flow passive transfer_moles = min(transfer_moles, available_power / specific_power) @@ -45,7 +43,7 @@ //Update flow rate meter if (istype(M, /obj/machinery/atmospherics)) var/obj/machinery/atmospherics/A = M - A.last_flow_rate = (transfer_moles/source.total_moles)*source.volume //group_multiplier gets divided out here + A.last_flow_rate_legacy = (transfer_moles/source.total_moles)*source.volume //group_multiplier gets divided out here if (A.debug) A.visible_message("[A]: power avaiable to move gases: [available_power] W") @@ -56,7 +54,7 @@ if (istype(M, /obj/machinery/portable_atmospherics)) var/obj/machinery/portable_atmospherics/P = M - P.last_flow_rate = (transfer_moles/source.total_moles)*source.volume //group_multiplier gets divided out here + P.last_flow_rate_legacy = (transfer_moles/source.total_moles)*source.volume //group_multiplier gets divided out here var/datum/gas_mixture/removed = source.remove(transfer_moles) if (!removed) //Just in case @@ -87,13 +85,13 @@ //Update flow rate meter if (istype(M, /obj/machinery/atmospherics)) var/obj/machinery/atmospherics/A = M - A.last_flow_rate = (transfer_moles/source.total_moles)*source.volume //group_multiplier gets divided out here + A.last_flow_rate_legacy = (transfer_moles/source.total_moles)*source.volume //group_multiplier gets divided out here if (A.debug) A.visible_message("[A]: moles transferred = [transfer_moles] mol") if (istype(M, /obj/machinery/portable_atmospherics)) var/obj/machinery/portable_atmospherics/P = M - P.last_flow_rate = (transfer_moles/source.total_moles)*source.volume //group_multiplier gets divided out here + P.last_flow_rate_legacy = (transfer_moles/source.total_moles)*source.volume //group_multiplier gets divided out here var/datum/gas_mixture/removed = source.remove(transfer_moles) if(!removed) //Just in case @@ -108,7 +106,7 @@ //total_transfer_moles - Limits the amount of moles to scrub. The actual amount of gas scrubbed may also be limited by available_power, if given. //available_power - the maximum amount of power that may be used when scrubbing gas. If null then the scrubbing is not limited by power. /proc/scrub_gas(var/obj/machinery/M, var/list/filtering, var/datum/gas_mixture/source, var/datum/gas_mixture/sink, var/total_transfer_moles = null, var/available_power = null) - if (source.total_moles < MINIMUM_MOLES_TO_FILTER) //if we cant transfer enough gas just stop to avoid further processing + if (source.total_moles < MINIMUM_MOLES_TO_SCRUB) //if we cant transfer enough gas just stop to avoid further processing return -1 filtering = filtering & source.gas //only filter gasses that are actually there. DO NOT USE &= @@ -117,14 +115,14 @@ var/total_filterable_moles = 0 //the total amount of filterable gas var/list/specific_power_gas = list() //the power required to remove one mole of pure gas, for each gas type for (var/g in filtering) - if (source.gas[g] < MINIMUM_MOLES_TO_FILTER) + if (source.gas[g] < MINIMUM_MOLES_TO_SCRUB) continue - var/specific_power = calculate_specific_power_gas(g, source, sink)/ATMOS_FILTER_EFFICIENCY + var/specific_power = calculate_specific_power_gas(g, source, sink)/ATMOS_ABSTRACT_SCRUB_EFFICIENCY specific_power_gas[g] = specific_power total_filterable_moles += source.gas[g] - if (total_filterable_moles < MINIMUM_MOLES_TO_FILTER) //if we cant transfer enough gas just stop to avoid further processing + if (total_filterable_moles < MINIMUM_MOLES_TO_SCRUB) //if we cant transfer enough gas just stop to avoid further processing return -1 //now that we know the total amount of filterable gas, we can calculate the amount of power needed to scrub one mole of gas @@ -143,16 +141,16 @@ if (!isnull(available_power) && total_specific_power > 0) total_transfer_moles = min(total_transfer_moles, available_power/total_specific_power) - if (total_transfer_moles < MINIMUM_MOLES_TO_FILTER) //if we cant transfer enough gas just stop to avoid further processing + if (total_transfer_moles < MINIMUM_MOLES_TO_SCRUB) //if we cant transfer enough gas just stop to avoid further processing return -1 //Update flow rate var if (istype(M, /obj/machinery/atmospherics)) var/obj/machinery/atmospherics/A = M - A.last_flow_rate = (total_transfer_moles/source.total_moles)*source.volume //group_multiplier gets divided out here + A.last_flow_rate_legacy = (total_transfer_moles/source.total_moles)*source.volume //group_multiplier gets divided out here if (istype(M, /obj/machinery/portable_atmospherics)) var/obj/machinery/portable_atmospherics/P = M - P.last_flow_rate = (total_transfer_moles/source.total_moles)*source.volume //group_multiplier gets divided out here + P.last_flow_rate_legacy = (total_transfer_moles/source.total_moles)*source.volume //group_multiplier gets divided out here var/power_draw = 0 for (var/g in filtering) @@ -172,81 +170,6 @@ return power_draw -//Generalized gas filtering proc. -//Filtering is a bit different from scrubbing. Instead of selectively moving the targeted gas types from one gas mix to another, filtering splits -//the input gas into two outputs: one that contains /only/ the targeted gas types, and another that completely clean of the targeted gas types. -//filtering - A list of gasids to be filtered. These gasses get moved to sink_filtered, while the other gasses get moved to sink_clean. -//total_transfer_moles - Limits the amount of moles to input. The actual amount of gas filtered may also be limited by available_power, if given. -//available_power - the maximum amount of power that may be used when filtering gas. If null then the filtering is not limited by power. -/proc/filter_gas(var/obj/machinery/M, var/list/filtering, var/datum/gas_mixture/source, var/datum/gas_mixture/sink_filtered, var/datum/gas_mixture/sink_clean, var/total_transfer_moles = null, var/available_power = null) - if (source.total_moles < MINIMUM_MOLES_TO_FILTER) //if we cant transfer enough gas just stop to avoid further processing - return -1 - - filtering = filtering & source.gas //only filter gasses that are actually there. DO NOT USE &= - - var/total_specific_power = 0 //the power required to remove one mole of input gas - var/total_filterable_moles = 0 //the total amount of filterable gas - var/total_unfilterable_moles = 0 //the total amount of non-filterable gas - var/list/specific_power_gas = list() //the power required to remove one mole of pure gas, for each gas type - for (var/g in source.gas) - if (source.gas[g] < MINIMUM_MOLES_TO_FILTER) - continue - - if (g in filtering) - specific_power_gas[g] = calculate_specific_power_gas(g, source, sink_filtered)/ATMOS_FILTER_EFFICIENCY - total_filterable_moles += source.gas[g] - else - specific_power_gas[g] = calculate_specific_power_gas(g, source, sink_clean)/ATMOS_FILTER_EFFICIENCY - total_unfilterable_moles += source.gas[g] - - var/ratio = source.gas[g]/source.total_moles //converts the specific power per mole of pure gas to specific power per mole of input gas mix - total_specific_power += specific_power_gas[g]*ratio - - //Figure out how much of each gas to filter - if (isnull(total_transfer_moles)) - total_transfer_moles = source.total_moles - else - total_transfer_moles = min(total_transfer_moles, source.total_moles) - - //limit transfer_moles based on available power - if (!isnull(available_power) && total_specific_power > 0) - total_transfer_moles = min(total_transfer_moles, available_power/total_specific_power) - - if (total_transfer_moles < MINIMUM_MOLES_TO_FILTER) //if we cant transfer enough gas just stop to avoid further processing - return -1 - - //Update flow rate var - if (istype(M, /obj/machinery/atmospherics)) - var/obj/machinery/atmospherics/A = M - A.last_flow_rate = (total_transfer_moles/source.total_moles)*source.volume //group_multiplier gets divided out here - if (istype(M, /obj/machinery/portable_atmospherics)) - var/obj/machinery/portable_atmospherics/P = M - P.last_flow_rate = (total_transfer_moles/source.total_moles)*source.volume //group_multiplier gets divided out here - - var/datum/gas_mixture/removed = source.remove(total_transfer_moles) - if (!removed) //Just in case - return -1 - - var/filtered_power_used = 0 //power used to move filterable gas to sink_filtered - var/unfiltered_power_used = 0 //power used to move unfilterable gas to sink_clean - for (var/g in removed.gas) - var/power_used = specific_power_gas[g]*removed.gas[g] - - if (g in filtering) - //use update=0. All the filtered gasses are supposed to be added simultaneously, so we update after the for loop. - sink_filtered.adjust_gas_temp(g, removed.gas[g], removed.temperature, update=0) - removed.adjust_gas(g, -removed.gas[g], update=0) - filtered_power_used += power_used - else - unfiltered_power_used += power_used - - sink_filtered.update_values() - removed.update_values() - - sink_clean.merge(removed) - - return filtered_power_used + unfiltered_power_used - //For omni devices. Instead filtering is an associative list mapping gasids to gas mixtures. //I don't like the copypasta, but I decided to keep both versions of gas filtering as filter_gas is slightly faster (doesn't create as many temporary lists, doesn't call update_values() as much) //filter_gas can be removed and replaced with this proc if need be. @@ -266,10 +189,10 @@ if (g in filtering) var/datum/gas_mixture/sink_filtered = filtering[g] - specific_power_gas[g] = calculate_specific_power_gas(g, source, sink_filtered)/ATMOS_FILTER_EFFICIENCY + specific_power_gas[g] = calculate_specific_power_gas(g, source, sink_filtered)/ATMOS_ABSTRACT_FILTER_EFFICIENCY total_filterable_moles += source.gas[g] else - specific_power_gas[g] = calculate_specific_power_gas(g, source, sink_clean)/ATMOS_FILTER_EFFICIENCY + specific_power_gas[g] = calculate_specific_power_gas(g, source, sink_clean)/ATMOS_ABSTRACT_FILTER_EFFICIENCY total_unfilterable_moles += source.gas[g] var/ratio = source.gas[g]/source.total_moles //converts the specific power per mole of pure gas to specific power per mole of input gas mix @@ -291,10 +214,10 @@ //Update Flow Rate var if (istype(M, /obj/machinery/atmospherics)) var/obj/machinery/atmospherics/A = M - A.last_flow_rate = (total_transfer_moles/source.total_moles)*source.volume //group_multiplier gets divided out here + A.last_flow_rate_legacy = (total_transfer_moles/source.total_moles)*source.volume //group_multiplier gets divided out here if (istype(M, /obj/machinery/portable_atmospherics)) var/obj/machinery/portable_atmospherics/P = M - P.last_flow_rate = (total_transfer_moles/source.total_moles)*source.volume //group_multiplier gets divided out here + P.last_flow_rate_legacy = (total_transfer_moles/source.total_moles)*source.volume //group_multiplier gets divided out here var/datum/gas_mixture/removed = source.remove(total_transfer_moles) if (!removed) //Just in case @@ -349,7 +272,7 @@ if (isnull(total_mixing_moles) || total_mixing_moles > this_mixing_moles) total_mixing_moles = this_mixing_moles - source_specific_power[source] = calculate_specific_power(source, sink)*mix_ratio/ATMOS_FILTER_EFFICIENCY + source_specific_power[source] = calculate_specific_power(source, sink)*mix_ratio/ATMOS_ABSTRACT_FILTER_EFFICIENCY total_specific_power += source_specific_power[source] total_input_volume += source.volume total_input_moles += source.total_moles @@ -372,10 +295,10 @@ //Update flow rate var if (istype(M, /obj/machinery/atmospherics)) var/obj/machinery/atmospherics/A = M - A.last_flow_rate = (total_transfer_moles/total_input_moles)*total_input_volume //group_multiplier gets divided out here + A.last_flow_rate_legacy = (total_transfer_moles/total_input_moles)*total_input_volume //group_multiplier gets divided out here if (istype(M, /obj/machinery/portable_atmospherics)) var/obj/machinery/portable_atmospherics/P = M - P.last_flow_rate = (total_transfer_moles/total_input_moles)*total_input_volume //group_multiplier gets divided out here + P.last_flow_rate_legacy = (total_transfer_moles/total_input_moles)*total_input_volume //group_multiplier gets divided out here var/total_power_draw = 0 for (var/datum/gas_mixture/source in mix_sources) @@ -411,7 +334,8 @@ return specific_power -//Calculates the amount of power needed to move one mole of a certain gas from source to sink. +// Calculates the amount of power needed to move one mole of a certain gas from source to sink. +// returns wattage /proc/calculate_specific_power_gas(var/gasid, datum/gas_mixture/source, datum/gas_mixture/sink) //Calculate the amount of energy required var/air_temperature = (sink.temperature > 0)? sink.temperature : source.temperature diff --git a/code/modules/atmospherics/machinery/air_alarm.dm b/code/modules/atmospherics/machinery/air_alarm.dm new file mode 100644 index 00000000000..a8bb4940f57 --- /dev/null +++ b/code/modules/atmospherics/machinery/air_alarm.dm @@ -0,0 +1,782 @@ +GLOBAL_LIST_EMPTY(air_alarms) + +#define DECLARE_TLV_VALUES var/red_min; var/yel_min; var/yel_max; var/red_max; var/tlv_comparitor; +#define LOAD_TLV_VALUES(x, y) red_min = x[1]; yel_min = x[2]; yel_max = x[3]; red_max = x[4]; tlv_comparitor = y; +#define TEST_TLV_VALUES (((tlv_comparitor >= red_max && red_max > 0) || tlv_comparitor <= red_min) ? AIR_ALARM_RAISE_DANGER : ((tlv_comparitor >= yel_max && yel_max > 0) || tlv_comparitor <= yel_min) ? AIR_ALARM_RAISE_WARNING : AIR_ALARM_RAISE_OKAY) + +#define MAX_TEMPERATURE 90 +#define MIN_TEMPERATURE -40 + +//all air alarms in area are connected via magic +/area + var/obj/machinery/air_alarm/master_air_alarm + +/obj/machinery/air_alarm + name = "alarm" + desc = "Used to control various station atmospheric systems. The light indicates the current air status of the area." + icon = 'icons/obj/monitors.dmi' + icon_state = "alarm0" + plane = TURF_PLANE + layer = ABOVE_TURF_LAYER + anchored = TRUE + use_power = USE_POWER_IDLE + idle_power_usage = 80 + active_power_usage = 1000 //For heating/cooling rooms. 1000 joules equates to about 1 degree every 2 seconds for a single tile of air. + power_channel = ENVIRON + req_one_access = list(ACCESS_ENGINEERING_ATMOS, ACCESS_ENGINEERING_ENGINE) + clicksound = "button" + clickvol = 30 + //blocks_emissive = NONE + light_power = 0.25 + + /// The area we're registered to + var/area/registered_area + /// keys are gas group names + /// values are TLV lists + var/list/tlv_groups = list() + /// keys are gas ids + /// values are TLV lists + var/list/tlv_ids = list() + /// pressure tlv list + var/list/tlv_pressure + /// temperature tlv list + var/list/tlv_temperature + /// mode + var/mode = AIR_ALARM_MODE_SCRUB + + var/alarm_id = null + ///Whether to use automatic breach detection or not + var/breach_detection = TRUE + var/frequency = 1439 + //var/skipprocess = 0 //Experimenting + var/alarm_frequency = 1437 + var/remote_control = FALSE + var/rcon_setting = RCON_AUTO + var/rcon_time = 0 + var/locked = TRUE + ///If it's been screwdrivered open. + panel_open = FALSE + var/aidisabled = FALSE + var/shorted = FALSE + circuit = /obj/item/circuitboard/airalarm + //armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 100, BOMB = 0, BIO = 100, FIRE = 90, ACID = 30) + + var/datum/wires/alarm/wires + + var/area_uid + var/area/alarm_area + + var/target_temperature = T20C + var/regulating_temperature = 0 + + var/datum/radio_frequency/radio_connection + + var/danger_level = 0 + var/pressure_dangerlevel = 0 + + var/report_danger_level = 1 + ///If the alarms from this machine are visible on consoles + var/alarms_hidden = FALSE + +/obj/machinery/air_alarm/Initialize(mapload) + . = ..() + GLOB.air_alarms += src + if(!pixel_x && !pixel_y) + offset_airalarm() + first_run() + set_frequency(frequency) + if(!master_is_operating()) + elect_master() + +/obj/machinery/air_alarm/Destroy() + GLOB.air_alarms -= src + unregister_radio(src, frequency) + qdel(wires) + wires = null + if(alarm_area && alarm_area.master_air_alarm == src) + alarm_area.master_air_alarm = null + elect_master(exclude_self = TRUE) + return ..() + +/obj/machinery/air_alarm/proc/offset_airalarm() + pixel_x = (dir & 3) ? 0 : (dir == 4 ? -26 : 26) + pixel_y = (dir & 3) ? (dir == 1 ? -26 : 26) : 0 + +/obj/machinery/air_alarm/proc/first_run() + alarm_area = get_area(src) + registered_area = alarm_area + area_uid = "\ref[alarm_area]" + if(name == "alarm") + name = "[alarm_area.name] Air Alarm" + + if(!wires) + wires = new(src) + + update_icon() + create_tlv() + +/obj/machinery/air_alarm/proc/create_tlv() + if(isnull(tlv_pressure)) + tlv_pressure = AIR_ALARM_MAKE_TLV(0.7 * ONE_ATMOSPHERE, 0.9 * ONE_ATMOSPHERE, 1.1 * ONE_ATMOSPHERE, 1.3 * ONE_ATMOSPHERE) + if(isnull(tlv_temperature)) + tlv_temperature = AIR_ALARM_MAKE_TLV(T0C - 26, T0C, T0C + 35, T0C + 60) + for(var/id in global.gas_data.gas_ids_core) + var/list/default = global.gas_data.default_tlvs[id] + if(isnull(default)) + continue + if(!isnull(tlv_ids[id])) + continue + tlv_ids[id] = default + for(var/group in global.gas_data.gas_group_names_filterable) + if(!isnull(tlv_groups[group])) + continue + tlv_groups[group] = AIR_ALARM_MAKE_TLV(0, 0, 0.5, 1) + +/obj/machinery/air_alarm/process(delta_time) + if((machine_stat & (NOPOWER|BROKEN)) || shorted) + return + + var/turf/simulated/location = src.loc + if(!istype(location)) return//returns if loc is not simulated + + var/datum/gas_mixture/environment = location.return_air() + + //Handle temperature adjustment here. + handle_heating_cooling(environment) + + var/old_level = danger_level + var/old_pressurelevel = pressure_dangerlevel + danger_level = overall_danger_level(environment) + + if(old_level != danger_level) + apply_danger_level(danger_level) + + if(old_pressurelevel != pressure_dangerlevel) + if(breach_detected()) + mode = AIR_ALARM_MODE_OFF + apply_mode() + + if(mode == AIR_ALARM_MODE_CYCLE && environment.return_pressure() < ONE_ATMOSPHERE * 0.05) + mode = AIR_ALARM_MODE_FILL + apply_mode() + + //atmos computer remote control stuff + switch(rcon_setting) + if(RCON_NO) + remote_control = 0 + if(RCON_AUTO) + if(danger_level == 2) + remote_control = 1 + else + remote_control = 0 + if(RCON_YES) + remote_control = 1 + + return + +/obj/machinery/air_alarm/proc/handle_heating_cooling(var/datum/gas_mixture/environment) + var/list/tlv = tlv_temperature + var/this_is_fine = AIR_ALARM_TEST_TLV(target_temperature, tlv) + if(!regulating_temperature) + //check for when we should start adjusting temperature + if((this_is_fine == AIR_ALARM_RAISE_OKAY) && abs(environment.temperature - target_temperature) > 2.0 && environment.return_pressure() >= 1) + update_use_power(USE_POWER_ACTIVE) + regulating_temperature = 1 + audible_message("\The [src] clicks as it starts [environment.temperature > target_temperature ? "cooling" : "heating"] the room.",\ + "You hear a click and a faint electronic hum.") + playsound(src, 'sound/machines/click.ogg', 50, 1) + else + //check for when we should stop adjusting temperature + if((this_is_fine != AIR_ALARM_RAISE_OKAY) || abs(environment.temperature - target_temperature) <= 0.5 || environment.return_pressure() < 1) + update_use_power(USE_POWER_IDLE) + regulating_temperature = 0 + audible_message("\The [src] clicks quietly as it stops [environment.temperature > target_temperature ? "cooling" : "heating"] the room.",\ + "You hear a click as a faint electronic humming stops.") + playsound(src, 'sound/machines/click.ogg', 50, 1) + + if(regulating_temperature) + if(target_temperature > T0C + MAX_TEMPERATURE) + target_temperature = T0C + MAX_TEMPERATURE + + if(target_temperature < T0C + MIN_TEMPERATURE) + target_temperature = T0C + MIN_TEMPERATURE + + var/datum/gas_mixture/gas + gas = environment.remove(0.25 * environment.total_moles) + if(gas) + + if(gas.temperature <= target_temperature) //gas heating + var/energy_used = min(gas.get_thermal_energy_change(target_temperature) , active_power_usage) + + gas.adjust_thermal_energy(energy_used) + //use_power(energy_used, ENVIRON) //handle by update_use_power instead + else //gas cooling + var/heat_transfer = min(abs(gas.get_thermal_energy_change(target_temperature)), active_power_usage) + + //Assume the heat is being pumped into the hull which is fixed at 20 C + //none of this is really proper thermodynamics but whatever + + var/cop = gas.temperature / T20C //coefficient of performance -> power used = heat_transfer/cop + + heat_transfer = min(heat_transfer, cop * active_power_usage) //this ensures that we don't use more than active_power_usage amount of power + + heat_transfer = -gas.adjust_thermal_energy(-heat_transfer) //get the actual heat transfer + + //use_power(heat_transfer / cop, ENVIRON) //handle by update_use_power instead + + environment.merge(gas) + +/obj/machinery/air_alarm/proc/overall_danger_level(datum/gas_mixture/environment) + var/environment_pressure = environment.return_pressure() + var/partial_pressure_factor = (R_IDEAL_GAS_EQUATION * environment.temperature) / environment.volume + + var/dangerlevel = AIR_ALARM_TEST_TLV(environment_pressure, tlv_pressure) + if(dangerlevel >= AIR_ALARM_RAISE_DANGER) + return dangerlevel + dangerlevel = max(dangerlevel, AIR_ALARM_TEST_TLV(environment.temperature, tlv_temperature)) + if(dangerlevel >= AIR_ALARM_RAISE_DANGER) + return dangerlevel + + // todo: would be faster to iterate once and store the groups we care about... + + for(var/id in tlv_ids) + var/list/tlv = tlv_ids[id] + var/partial = environment.gas[id] * partial_pressure_factor + dangerlevel = max(dangerlevel, AIR_ALARM_TEST_TLV(partial, tlv)) + if(dangerlevel >= AIR_ALARM_RAISE_DANGER) + return dangerlevel + + for(var/name in tlv_groups) + var/list/tlv = tlv_groups[name] + var/partial = environment.moles_by_group(global.gas_data.gas_group_by_name[name]) * partial_pressure_factor + dangerlevel = max(dangerlevel, AIR_ALARM_TEST_TLV(partial, tlv)) + if(dangerlevel >= AIR_ALARM_RAISE_DANGER) + return dangerlevel + + return dangerlevel + +/// Returns whether this air alarm thinks there is a breach, given the sensors that are available to it. +/obj/machinery/air_alarm/proc/breach_detected() + var/turf/simulated/location = src.loc + + if(!istype(location)) + return FALSE + + if(!breach_detection) + return FALSE + + var/datum/gas_mixture/environment = location.return_air() + var/environment_pressure = environment.return_pressure() + var/list/pressure_levels = tlv_pressure + + if(environment_pressure <= pressure_levels[1]) // Low pressures + switch(mode) + if(AIR_ALARM_MODE_CYCLE) + return FALSE + if(AIR_ALARM_MODE_PANIC) + return FALSE + if(AIR_ALARM_MODE_SIPHON) + return FALSE + if(AIR_ALARM_MODE_REPLACE) + return FALSE + return TRUE + return FALSE + +/obj/machinery/air_alarm/proc/master_is_operating() + return alarm_area && alarm_area.master_air_alarm && !(alarm_area.master_air_alarm.machine_stat & (NOPOWER | BROKEN)) + +/obj/machinery/air_alarm/proc/elect_master(exclude_self = FALSE) + for(var/obj/machinery/air_alarm/AA in alarm_area) + if(exclude_self && AA == src) + continue + if(!(AA.machine_stat & (NOPOWER|BROKEN))) + alarm_area.master_air_alarm = AA + return TRUE + return FALSE + +/obj/machinery/air_alarm/setDir(ndir) + . = ..() + base_pixel_x = 0 + base_pixel_y = 0 + var/turf/T = get_step(get_turf(src), turn(dir, 180)) + if(istype(T) && T.density) + switch(dir) + if(NORTH) + base_pixel_y = -21 + if(SOUTH) + base_pixel_y = 21 + if(WEST) + base_pixel_x = 21 + if(EAST) + base_pixel_x = -21 + reset_pixel_offsets() + +/obj/machinery/air_alarm/update_icon() + cut_overlays() + + if(panel_open) + icon_state = "alarmx" + set_light(0) + //set_light_on(FALSE) + return + if((machine_stat & (NOPOWER|BROKEN)) || shorted) + icon_state = "alarmp" + set_light(0) + //set_light_on(FALSE) + return + + var/icon_level = danger_level + if(alarm_area?.atmosalm) + icon_level = max(icon_level, 1) //if there's an atmos alarm but everything is okay locally, no need to go past yellow + + var/new_color = null + switch(icon_level) + if(0) + icon_state = "alarm0" + //add_overlay(mutable_appearance(icon, "alarm_ov0")) + //add_overlay(emissive_appearance(icon, "alarm_ov0")) + new_color = "#03A728" + if(1) + icon_state = "alarm2" //yes, alarm2 is yellow alarm + //add_overlay(mutable_appearance(icon, "alarm_ov2")) + //add_overlay(emissive_appearance(icon, "alarm_ov2")) + new_color = "#EC8B2F" + if(2) + icon_state = "alarm1" + //add_overlay(mutable_appearance(icon, "alarm_ov1")) + //add_overlay(emissive_appearance(icon, "alarm_ov1")) + new_color = "#DA0205" + + set_light(l_range = 2, l_power = 0.25, l_color = new_color) + //set_light_on(TRUE) + +/obj/machinery/air_alarm/receive_signal(datum/signal/signal) + if(machine_stat & (NOPOWER|BROKEN)) + return + if(alarm_area.master_air_alarm != src) + if(master_is_operating()) + return + elect_master() + if(alarm_area.master_air_alarm != src) + return + if(!signal || signal.encryption) + return + var/id_tag = signal.data["tag"] + if(!id_tag) + return + if(signal.data["area"] != area_uid) + return + if(signal.data["sigtype"] != "status") + return + + SStgui.update_uis(src) + +/obj/machinery/air_alarm/proc/set_frequency(new_frequency) + radio_controller.remove_object(src, frequency) + frequency = new_frequency + radio_connection = radio_controller.add_object(src, frequency, RADIO_TO_AIRALARM) + +/obj/machinery/air_alarm/proc/send_signal(var/target, var/list/command)//sends signal 'command' to 'target'. Returns 0 if no radio connection, 1 otherwise + if(!radio_connection) + return 0 + + var/datum/signal/signal = new + signal.transmission_method = TRANSMISSION_RADIO //radio signal + signal.source = src + + signal.data = command + signal.data["tag"] = target + signal.data["sigtype"] = "command" + + radio_connection.post_signal(src, signal, RADIO_FROM_AIRALARM) +// TO_WORLD("Signal [command] Broadcasted to [target]") + + return 1 + +/obj/machinery/air_alarm/proc/apply_mode(mode) + // set our mode + src.mode = mode + // legacy: propagate mode to other air alarms in the area + //TODO: make it so that players can choose between applying the new mode to the room they are in (related area) vs the entire alarm area + for(var/obj/machinery/air_alarm/AA in alarm_area) + AA.mode = mode + + switch(mode) + if(AIR_ALARM_MODE_OFF) + for(var/obj/machinery/atmospherics/component/unary/vent_pump/pump as anything in registered_area.vent_pumps) + if(!pump.controllable_from_alarm || !pump.environmental) + continue + send_signal(pump.id_tag, list("hard_reset" = TRUE, "power" = FALSE)) + for(var/obj/machinery/atmospherics/component/unary/vent_scrubber/scrubber as anything in registered_area.vent_scrubbers) + if(!scrubber.controllable_from_alarm || !scrubber.environmental) + continue + send_signal(scrubber.id_tag, list("hard_reset" = TRUE, "power" = FALSE)) + if(AIR_ALARM_MODE_SCRUB) + for(var/obj/machinery/atmospherics/component/unary/vent_pump/pump as anything in registered_area.vent_pumps) + if(!pump.controllable_from_alarm || !pump.environmental) + continue + send_signal(pump.id_tag, list("hard_reset" = TRUE, "power" = TRUE)) + for(var/obj/machinery/atmospherics/component/unary/vent_scrubber/scrubber as anything in registered_area.vent_scrubbers) + if(!scrubber.controllable_from_alarm || !scrubber.environmental) + continue + send_signal(scrubber.id_tag, list("hard_reset" = TRUE, "power" = TRUE)) + if(AIR_ALARM_MODE_REPLACE) + for(var/obj/machinery/atmospherics/component/unary/vent_pump/pump as anything in registered_area.vent_pumps) + if(!pump.controllable_from_alarm || !pump.environmental) + continue + send_signal(pump.id_tag, list("hard_reset" = TRUE, "power" = TRUE)) + for(var/obj/machinery/atmospherics/component/unary/vent_scrubber/scrubber as anything in registered_area.vent_scrubbers) + if(!scrubber.controllable_from_alarm || !scrubber.environmental) + continue + send_signal(scrubber.id_tag, list("hard_reset" = TRUE, "power" = TRUE, "siphon" = TRUE)) + if(AIR_ALARM_MODE_SIPHON, AIR_ALARM_MODE_CYCLE) + for(var/obj/machinery/atmospherics/component/unary/vent_pump/pump as anything in registered_area.vent_pumps) + if(!pump.controllable_from_alarm || !pump.environmental) + continue + send_signal(pump.id_tag, list("hard_reset" = TRUE, "power" = FALSE)) + for(var/obj/machinery/atmospherics/component/unary/vent_scrubber/scrubber as anything in registered_area.vent_scrubbers) + if(!scrubber.controllable_from_alarm || !scrubber.environmental) + continue + send_signal(scrubber.id_tag, list("hard_reset" = TRUE, "power" = TRUE, "siphon" = TRUE)) + if(AIR_ALARM_MODE_PANIC) + for(var/obj/machinery/atmospherics/component/unary/vent_pump/pump as anything in registered_area.vent_pumps) + if(!pump.controllable_from_alarm || !pump.environmental) + continue + send_signal(pump.id_tag, list("hard_reset" = TRUE, "power" = FALSE)) + for(var/obj/machinery/atmospherics/component/unary/vent_scrubber/scrubber as anything in registered_area.vent_scrubbers) + if(!scrubber.controllable_from_alarm || !scrubber.environmental) + continue + send_signal(scrubber.id_tag, list("hard_reset" = TRUE, "power" = TRUE, "siphon" = TRUE, "expand" = TRUE)) + if(AIR_ALARM_MODE_CONTAMINATED) + for(var/obj/machinery/atmospherics/component/unary/vent_pump/pump as anything in registered_area.vent_pumps) + if(!pump.controllable_from_alarm || !pump.environmental) + continue + send_signal(pump.id_tag, list("hard_reset" = TRUE)) + for(var/obj/machinery/atmospherics/component/unary/vent_scrubber/scrubber as anything in registered_area.vent_scrubbers) + if(!scrubber.controllable_from_alarm || !scrubber.environmental) + continue + send_signal(scrubber.id_tag, list("hard_reset" = TRUE, "power" = TRUE, "expand" = TRUE)) + if(AIR_ALARM_MODE_FILL) + for(var/obj/machinery/atmospherics/component/unary/vent_pump/pump as anything in registered_area.vent_pumps) + if(!pump.controllable_from_alarm || !pump.environmental) + continue + send_signal(pump.id_tag, list("hard_reset" = TRUE)) + for(var/obj/machinery/atmospherics/component/unary/vent_scrubber/scrubber as anything in registered_area.vent_scrubbers) + if(!scrubber.controllable_from_alarm || !scrubber.environmental) + continue + send_signal(scrubber.id_tag, list("hard_reset" = TRUE, "power" = FALSE)) + +/obj/machinery/air_alarm/proc/apply_danger_level(var/new_danger_level) + if(report_danger_level && alarm_area.atmosalert(new_danger_level, src)) + post_alert(new_danger_level) + + update_icon() + +/obj/machinery/air_alarm/proc/post_alert(alert_level) + var/datum/radio_frequency/frequency = radio_controller.return_frequency(alarm_frequency) + if(!frequency) + return + + var/datum/signal/alert_signal = new + alert_signal.source = src + alert_signal.transmission_method = TRANSMISSION_RADIO + alert_signal.data["zone"] = alarm_area.name + alert_signal.data["type"] = "Atmospheric" + + if(alert_level==2) + alert_signal.data["alert"] = "severe" + else if(alert_level==1) + alert_signal.data["alert"] = "minor" + else if(alert_level==0) + alert_signal.data["alert"] = "clear" + + frequency.post_signal(src, alert_signal) + +/obj/machinery/air_alarm/attack_ai(mob/user) + ui_interact(user) + +/obj/machinery/air_alarm/attack_hand(mob/user, list/params) + . = ..() + if(.) + return + return interact(user) + +/obj/machinery/air_alarm/interact(mob/user) + ui_interact(user) + wires.Interact(user) + +/obj/machinery/air_alarm/ui_status(mob/user) + if(isAI(user) && aidisabled) + to_chat(user, "AI control has been disabled.") + else if(!shorted) + return ..() + return UI_CLOSE + +/obj/machinery/air_alarm/ui_interact(mob/user, datum/tgui/ui, datum/tgui/parent_ui, datum/ui_state/state) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "AirAlarm", name, parent_ui) + if(state) + ui.set_state(state) + ui.open() + +/obj/machinery/air_alarm/ui_data(mob/user, datum/tgui/ui, datum/ui_state/state) + . = ..() + var/datum/gas_mixture/environment = loc.return_air() + .["environment"] = environment.tgui_analyzer_scan(GAS_GROUP_REAGENT | GAS_GROUP_UNKNOWN) + // todo: static data with event hooks for updates for these two + var/list/vents = list() + var/list/scrubbers = list() + for(var/obj/machinery/atmospherics/component/unary/vent_pump/pump as anything in registered_area.vent_pumps) + var/list/returned = pump.ui_vent_data() + returned["name"] = pump.name + vents[pump.id_tag] = returned + for(var/obj/machinery/atmospherics/component/unary/vent_scrubber/scrubber as anything in registered_area.vent_scrubbers) + var/list/returned = scrubber.ui_scrubber_data() + returned["name"] = scrubber.name + scrubbers[scrubber.id_tag] = returned + .["vents"] = vents + .["scrubbers"] = scrubbers + .["mode"] = mode + + //! legacy below + var/list/data = list( + "locked" = locked, + "siliconUser" = issilicon(user), + "remoteUser" = !!ui?.parent_ui, + "danger_level" = danger_level, + "target_temperature" = "[target_temperature - T0C]C", + "rcon" = rcon_setting, + ) + var/area/A = get_area(src) + data["atmos_alarm"] = A?.atmosalm + data["fire_alarm"] = A?.fire + . += data + //! end + +/obj/machinery/air_alarm/ui_static_data(mob/user, datum/tgui/ui, datum/ui_state/state) + . = ..() + .["gasContext"] = global.gas_data.tgui_gas_context() + .["gasTLV"] = tlv_ids + .["groupTLV"] = tlv_groups + .["pressureTLV"] = tlv_pressure + .["temperatureTLV"] = tlv_temperature + +/obj/machinery/air_alarm/proc/push_ui_tlv() + var/list/data = list() + data["gasTLV"] = tlv_ids + data["groupTLV"] = tlv_groups + data["pressureTLV"] = tlv_pressure + data["temperatureTLV"] = tlv_temperature + push_ui_data(data = data) + +/obj/machinery/air_alarm/ui_act(action, params, datum/tgui/ui) + . = ..() + if(.) + return + + // unlocked actions + switch(action) + if("rcon") + //! warning: legacy + var/attempted_rcon_setting = text2num(params["rcon"]) + switch(attempted_rcon_setting) + if(RCON_NO) + rcon_setting = RCON_NO + if(RCON_AUTO) + rcon_setting = RCON_AUTO + if(RCON_YES) + rcon_setting = RCON_YES + return TRUE + if("temperature") + //! warning: legacy + var/list/selected = tlv_temperature + var/max_temperature = min(selected[3] - T0C, MAX_TEMPERATURE) + var/min_temperature = max(selected[2] - T0C, MIN_TEMPERATURE) + var/input_temperature = tgui_input_number(usr, "What temperature would you like the system to mantain? (Capped between [min_temperature] and [max_temperature]C)", "Thermostat Controls", (target_temperature - T0C), max_temperature, min_temperature) + if(isnum(input_temperature)) + if(input_temperature > max_temperature || input_temperature < min_temperature) + to_chat(usr, "Temperature must be between [min_temperature]C and [max_temperature]C") + else + target_temperature = input_temperature + T0C + return TRUE + + // Account for remote users here. + // Yes, this is kinda snowflaky; however, I would argue it would be far more snowflakey + // to include "custom hrefs" and all the other bullshit that nano states have just for the + // like, two UIs, that want remote access to other UIs. + //! warning: legacy + if((locked && !issilicon(usr) && !istype(ui.state, /datum/ui_state/air_alarm_remote)) || (issilicon(usr) && aidisabled)) + return + + // locked actions + switch(action) + if("vent") + var/id = params["id"] + var/obj/machinery/atmospherics/component/unary/vent_pump/machine = registered_area.vent_pump_by_id(id) + if(isnull(machine) || !machine.controllable_from_alarm) + return TRUE + var/command = params["command"] + var/target = params["target"] + switch(command) + if("direction") + send_signal(id, list("direction" = !machine.pump_direction)) + if("internalPressure") + send_signal(id, list("set_internal_pressure" = text2num(target))) + if("externalPressure") + send_signal(id, list("set_external_pressure" = text2num(target))) + if("internalToggle") + send_signal(id, list("checks_toggle" = ATMOS_VENT_CHECK_INTERNAL)) + if("externalToggle") + send_signal(id, list("checks_toggle" = ATMOS_VENT_CHECK_EXTERNAL)) + if("power") + send_signal(id, list("power" = !machine.use_power)) + return TRUE + if("scrubber") + var/id = params["id"] + var/obj/machinery/atmospherics/component/unary/vent_scrubber/machine = registered_area.vent_scrubber_by_id(id) + if(isnull(machine) || !machine.controllable_from_alarm) + return TRUE + var/command = params["command"] + var/target = params["target"] + switch(command) + if("siphon") + send_signal(id, list("siphon" = !machine.siphoning)) + if("gasID") + send_signal(id, list("scrub_ids_toggle" = list(target))) + if("gasGroup") + send_signal(id, list("scrub_groups_toggle" = text2num(target))) + if("highPower") + send_signal(id, list("expand" = !machine.expanded)) + if("power") + send_signal(id, list("power" = !machine.use_power)) + return TRUE + if("mode") + var/mode = params["mode"] + apply_mode(mode) + return TRUE + if("tlv") + var/entry = params["entry"] + var/index = text2num(params["index"]) + 1 + if((index < AIR_ALARM_TLV_INDEX_MIN) || (index > AIR_ALARM_TLV_INDEX_MAX)) + return TRUE + var/val = clamp(0, text2num(params["val"]), 1000000) + var/list/target + switch(entry) + if("pressure") + target = tlv_pressure + if("temperature") + target = tlv_temperature + else + var/group = global.gas_data.gas_group_by_name[entry] + if(group) + target = tlv_groups[entry] + else + target = tlv_ids[entry] + if(isnull(target)) + return TRUE + target[index] = val + clamp_tlv_list(target, index) + push_ui_tlv() + return TRUE + if("alarm") + //! warning: legacy + if(alarm_area.atmosalert(2, src)) + apply_danger_level(2) + return TRUE + if("reset") + //! warning: legacy + atmos_reset() + return TRUE + if("lock") + //! warning: legacy + if(issilicon(usr) && !wires.is_cut(WIRE_IDSCAN)) + locked = !locked + return TRUE + +/** + * clamps tlv to be sensical + * + * source_indx is the one the user / or something else is changing; rest will be updated to make sense with it. + */ +/obj/machinery/air_alarm/proc/clamp_tlv_list(list/tlv, source_index) + for(var/i in AIR_ALARM_TLV_INDEX_MIN to (source_index - 1)) + if(tlv[i] > tlv[source_index]) + tlv[i] = tlv[source_index] + for(var/i in (source_index + 1) to AIR_ALARM_TLV_INDEX_MAX) + if(tlv[i] < tlv[source_index]) + tlv[i] = tlv[source_index] + +/obj/machinery/air_alarm/proc/atmos_reset() + if(alarm_area.atmosalert(0, src)) + apply_danger_level(0) + update_icon() + +/obj/machinery/air_alarm/attackby(obj/item/W as obj, mob/user as mob) + add_fingerprint(user) + if(alarm_deconstruction_screwdriver(user, W)) + return + if(alarm_deconstruction_wirecutters(user, W)) + return + + if(istype(W, /obj/item/card/id) || istype(W, /obj/item/pda))// trying to unlock the interface with an ID card + togglelock() + return ..() + +/obj/machinery/air_alarm/verb/togglelock(mob/user as mob) + if(machine_stat & (NOPOWER|BROKEN)) + to_chat(user, "It does nothing.") + return + else + if(allowed(usr) && !wires.is_cut(WIRE_IDSCAN)) + locked = !locked + to_chat(user, SPAN_NOTICE("You [locked ? "lock" : "unlock"] the Air Alarm interface.")) + else + to_chat(user, SPAN_BOLDWARNING("Access denied.")) + return + +/obj/machinery/air_alarm/AltClick() + ..() + togglelock() + +/obj/machinery/air_alarm/power_change() + ..() + spawn(rand(0,15)) + update_icon() + +#undef LOAD_TLV_VALUES +#undef TEST_TLV_VALUES +#undef DECLARE_TLV_VALUES + +/obj/machinery/air_alarm/alarms_hidden + alarms_hidden = TRUE + +/obj/machinery/air_alarm/angled +// icon = 'icons/obj/wall_machines_angled.dmi' + +/obj/machinery/air_alarm/angled/hidden + alarms_hidden = TRUE + +/obj/machinery/air_alarm/angled/offset_airalarm() + pixel_x = (dir & 3) ? 0 : (dir == 4 ? -21 : 21) + pixel_y = (dir & 3) ? (dir == 1 ? -18 : 20) : 0 + +/obj/machinery/air_alarm/freezer + target_temperature = T0C - 13.15 // Chilly freezer room + +/obj/machinery/air_alarm/freezer/create_tlv() + if(isnull(tlv_temperature)) + tlv_temperature = list(T0C - 40, T0C - 20, T0C + 40, T0C + 60) + return ..() + +/obj/machinery/air_alarm/monitor + report_danger_level = 0 + breach_detection = 0 + +/obj/machinery/air_alarm/nobreach + breach_detection = 0 + +/obj/machinery/air_alarm/server/Initialize(mapload) + . = ..() + req_access = list(ACCESS_SCIENCE_RD, ACCESS_ENGINEERING_ATMOS, ACCESS_ENGINEERING_ENGINE) + setDir(dir) diff --git a/code/modules/atmospherics/machinery/analyzer_hooks.dm b/code/modules/atmospherics/machinery/analyzer_hooks.dm index 303e80dcc8a..9dd52d52b0f 100644 --- a/code/modules/atmospherics/machinery/analyzer_hooks.dm +++ b/code/modules/atmospherics/machinery/analyzer_hooks.dm @@ -25,20 +25,7 @@ return 0 /proc/atmosanalyzer_scan(var/atom/target, var/datum/gas_mixture/mixture, var/mob/user) - var/list/results = list() - - if (mixture && mixture.total_moles > 0) - var/pressure = mixture.return_pressure() - var/total_moles = mixture.total_moles - results += "Pressure: [QUANTIZE(pressure)] kPa" - for(var/mix in mixture.gas) - results += "[GLOB.meta_gas_names[mix]]: [QUANTIZE((mixture.gas[mix] / total_moles) * 100)]%" - results += "Temperature: [QUANTIZE(mixture.temperature-T0C)]°C" - results += "Total Moles: [QUANTIZE(total_moles)]" - else - results += "\The [target] is empty!" - - return results + return mixture.chat_analyzer_scan(GAS_GROUP_UNKNOWN, TRUE, TRUE) /turf/atmosanalyze(var/mob/user) return atmosanalyzer_scan(src, src.air, user) @@ -66,10 +53,12 @@ /obj/machinery/atmospherics/component/unary/atmosanalyze(var/mob/user) return atmosanalyzer_scan(src, src.air_contents, user) +// todo: components should allow each end to be analyzed separately. + /obj/machinery/atmospherics/component/binary/atmosanalyze(var/mob/user) return atmosanalyzer_scan(src, src.air1, user) -/obj/machinery/atmospherics/component/trinary/atmos_filter/atmosanalyze(var/mob/user) +/obj/machinery/atmospherics/component/trinary/filter/atmosanalyze(var/mob/user) return atmosanalyzer_scan(src, src.air1, user) /obj/machinery/atmospherics/component/trinary/mixer/atmosanalyze(var/mob/user) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/algae_generator_vr.dm b/code/modules/atmospherics/machinery/components/binary_devices/algae_generator_vr.dm index 8cb2ad900c3..5edb1466299 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/algae_generator_vr.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/algae_generator_vr.dm @@ -31,8 +31,8 @@ var/ui_error = null // For error messages to show up in nano ui. var/datum/gas_mixture/internal = new() - var/const/input_gas = /datum/gas/carbon_dioxide - var/const/output_gas = /datum/gas/oxygen + var/const/input_gas = GAS_ID_CARBON_DIOXIDE + var/const/output_gas = GAS_ID_OXYGEN /obj/machinery/atmospherics/component/binary/algae_farm/filled stored_material = list(MATERIAL_ALGAE = 10000, MATERIAL_CARBON = 0) @@ -63,12 +63,12 @@ ui_error = null update_icon() if(use_power == USE_POWER_IDLE) - last_power_draw = idle_power_usage + last_power_draw_legacy = idle_power_usage else - last_power_draw = 0 + last_power_draw_legacy = 0 return 0 - last_power_draw = active_power_usage + last_power_draw_legacy = active_power_usage // STEP 1 - Check material resources if(stored_material[MATERIAL_ALGAE] < algae_per_mole) @@ -89,19 +89,19 @@ network1.update = 1 if (power_draw > 0) use_power(power_draw) - last_power_draw += power_draw + last_power_draw_legacy += power_draw // STEP 3 - Convert CO2 to O2 (Note: We know our internal group multipier is 1, so just be cool) var/co2_moles = internal.gas[input_gas] if(co2_moles < MINIMUM_MOLES_TO_FILTER) - ui_error = "Insufficient [GLOB.meta_gas_names[input_gas]] to process." + ui_error = "Insufficient [global.gas_data.names[input_gas]] to process." update_icon() return // STEP 4 - Consume the resources var/converted_moles = min(co2_moles, moles_per_tick) use_power(converted_moles * power_per_mole) - last_power_draw += converted_moles * power_per_mole + last_power_draw_legacy += converted_moles * power_per_mole stored_material[MATERIAL_ALGAE] -= converted_moles * algae_per_mole stored_material[MATERIAL_CARBON] += converted_moles * carbon_per_mole @@ -187,8 +187,8 @@ "max" = storage_capacity[M], "percent" = (stored_material[M] / storage_capacity[M] * 100)) data["materials"] = materials_ui - data["last_flow_rate"] = last_flow_rate - data["last_power_draw"] = last_power_draw + data["last_flow_rate"] = last_flow_rate_legacy + data["last_power_draw"] = last_power_draw_legacy data["inputDir"] = dir2text(global.reverse_dir[dir]) data["outputDir"] = dir2text(dir) data["usePower"] = use_power @@ -197,13 +197,13 @@ if(air1 && network1 && node1) data["input"] = list( "pressure" = air1.return_pressure(), - "name" = GLOB.meta_gas_names[input_gas], + "name" = global.gas_data.names[input_gas], "percent" = air1.total_moles > 0 ? round((air1.gas[input_gas] / air1.total_moles) * 100) : 0, "moles" = round(air1.gas[input_gas], 0.01)) if(air2 && network2 && node2) data["output"] = list( "pressure" = air2.return_pressure(), - "name" = GLOB.meta_gas_names[output_gas], + "name" = global.gas_data.names[output_gas], "percent" = air2.total_moles ? round((air2.gas[output_gas] / air2.total_moles) * 100) : 0, "moles" = round(air2.gas[output_gas], 0.01)) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm b/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm index 8c2fc6e5750..b74f9b7643d 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm @@ -15,6 +15,7 @@ depth_level = 12 anchored = FALSE pipe_flags = PIPING_DEFAULT_LAYER_ONLY|PIPING_ONE_PER_TURF + default_deconstruct = null var/kinetic_efficiency = 0.04 //combined kinetic and kinetic-to-electric efficiency var/volume_ratio = 0.2 diff --git a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm index bb0da270d2f..d48486f4f72 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm @@ -107,8 +107,8 @@ /obj/machinery/atmospherics/component/binary/dp_vent_pump/process(delta_time) ..() - last_power_draw = 0 - last_flow_rate = 0 + last_power_draw_legacy = 0 + last_flow_rate_legacy = 0 if(machine_stat & (NOPOWER|BROKEN) || !use_power) return 0 @@ -140,7 +140,7 @@ network2.update = 1 if (power_draw >= 0) - last_power_draw = power_draw + last_power_draw_legacy = power_draw use_power(power_draw) return 1 @@ -201,7 +201,7 @@ /obj/machinery/atmospherics/component/binary/dp_vent_pump/examine(mob/user, dist) . = ..() - . += "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s; [round(last_power_draw)] W" + . += "A small gauge in the corner reads [round(last_flow_rate_legacy, 0.1)] L/s; [round(last_power_draw_legacy)] W" /obj/machinery/atmospherics/component/unary/vent_pump/power_change() diff --git a/code/modules/atmospherics/machinery/components/binary_devices/heat_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/heat_pump.dm index 7a78442ca03..8e01b7cee05 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/heat_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/heat_pump.dm @@ -32,7 +32,6 @@ var/lowest_temp = TCMB var/max_temp = 99999999//Need to bottle it somewhere, the sun's core has 15 million kelvin - var/on = 0 var/efficiency = 0 /obj/machinery/atmospherics/component/binary/heat_pump/CtrlClick(mob/user) @@ -150,7 +149,7 @@ var/power_draw = abs(energy_transfered/performance_factor) air2.adjust_thermal_energy(-air1.adjust_thermal_energy(-energy_transfered*efficiency))//only adds the energy actually removed from air one to air two(- infront of air1 because energy was removed) if (power_draw >= 0) - last_power_draw = power_draw + last_power_draw_legacy = power_draw use_power(power_draw) if(network1) network1.update = 1 diff --git a/code/modules/atmospherics/machinery/components/binary_devices/massive_gas_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/massive_gas_pump.dm index 99a478cd435..0dc4032904c 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/massive_gas_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/massive_gas_pump.dm @@ -58,22 +58,22 @@ build_network()//built networks if we are missing them network1?.update = 1 network2?.update = 1 - last_flow_rate = last_power_draw = 0 + last_flow_rate_legacy = last_power_draw_legacy = 0 return if((machine_stat & (NOPOWER|BROKEN)) || !use_power) - last_flow_rate = last_power_draw = 0 + last_flow_rate_legacy = last_power_draw_legacy = 0 return if(!power_machine || !power_machine.powernet) if(!power_machine || !power_machine.connect_to_network())//returns 0 if it fails to find a - last_flow_rate = last_power_draw = 0 + last_flow_rate_legacy = last_power_draw_legacy = 0 return//make sure we are connected to a powernet power_rating = power_machine.surplus() * 1000 //update power rateing to what ever is avaiable power_rating = clamp(power_rating, 0, power_level) if(power_rating <= 0) - last_flow_rate = last_power_draw = 0 + last_flow_rate_legacy = last_power_draw_legacy = 0 return//no point in continuing if we dont have any power var/power_draw = -1 @@ -85,7 +85,7 @@ power_draw = pump_gas(src, air1, air2, transfer_moles, power_rating) if (power_draw >= 0) - last_power_draw = power_draw + last_power_draw_legacy = power_draw power_machine.draw_power(power_draw * 0.001) if(network1) @@ -112,7 +112,7 @@ if(inoperable() || !anchored || !power_machine.powernet) icon_state = "pump" else if(use_power) - switch(last_power_draw) + switch(last_power_draw_legacy) if(1 to (1 MEGAWATTS)) icon_state = "pump_1" if((1 MEGAWATTS) to (10 MEGAWATTS)) @@ -140,8 +140,8 @@ "pressure_set" = round(target_pressure*100), "max_pressure" = max_pressure_setting, "power_level" = power_level, - "last_flow_rate" = round(last_flow_rate*10), - "last_power_draw" = round(last_power_draw), + "last_flow_rate" = round(last_flow_rate_legacy*10), + "last_power_draw" = round(last_power_draw_legacy), "max_power_draw" = MAX_POWER_FOR_MASSIVE, ) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/massive_heat_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/massive_heat_pump.dm index f60a58d9cb5..b689c6986e2 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/massive_heat_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/massive_heat_pump.dm @@ -29,7 +29,6 @@ var/obj/machinery/power/powersupply/power_machine //for funky massive power machines //if its not null the machine attempts to draw from the grid the power machinery is connected to //see examples in the file "code\modules\atmospherics\components\binary_devices\massive_heat_pump.dm" - var/on = 0 var/efficiency = 0 /obj/machinery/atmospherics/component/binary/massive_heat_pump/Initialize(mapload) @@ -94,7 +93,7 @@ air2.adjust_thermal_energy(-air1.adjust_thermal_energy(-energy_transfered*efficiency))//only adds the energy actually removed from air one to air two(- infront of air1 because energy was removed) if (power_draw >= 0) - last_power_draw = power_draw + last_power_draw_legacy = power_draw power_machine.draw_power(power_draw * 0.001) if(network1) @@ -146,7 +145,7 @@ if(inoperable() || !anchored || !power_machine.powernet) icon_state = "pump" else if(use_power) - switch(last_power_draw) + switch(last_power_draw_legacy) if(1 to (1 MEGAWATTS)) icon_state = "heat_1" if((1 MEGAWATTS) to (10 MEGAWATTS)) @@ -177,7 +176,7 @@ "power_level" = power_level, "current_temp" = air2.temperature, "sink_temp" = air1.temperature, - "last_power_draw" = round(last_power_draw), + "last_power_draw" = round(last_power_draw_legacy), "max_power_draw" = MAX_POWER_FOR_MASSIVE, "efficiency" = efficiency, ) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm index f4f88bd898c..5582317ccee 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm @@ -54,7 +54,7 @@ /obj/machinery/atmospherics/component/binary/passive_gate/process(delta_time) ..() - last_flow_rate = 0 + last_flow_rate_legacy = 0 if(!unlocked) return 0 @@ -94,7 +94,7 @@ if(network2) network2.update = 1 - if (last_flow_rate) + if (last_flow_rate_legacy) flowing = 1 update_icon() @@ -197,7 +197,7 @@ "output_pressure" = round(air2.return_pressure()*100), "regulate_mode" = regulate_mode, "set_flow_rate" = round(set_flow_rate*10), - "last_flow_rate" = round(last_flow_rate*10), + "last_flow_rate" = round(last_flow_rate_legacy*10), ) return data diff --git a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm index 930198c712f..f9742e64dad 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm @@ -120,8 +120,8 @@ Thus, the two variables affect pump operation are set in New(): update_underlays() /obj/machinery/atmospherics/component/binary/pump/process(delta_time) - last_power_draw = 0 - last_flow_rate = 0 + last_power_draw_legacy = 0 + last_flow_rate_legacy = 0 if((machine_stat & (NOPOWER|BROKEN)) || !use_power) return @@ -135,7 +135,7 @@ Thus, the two variables affect pump operation are set in New(): power_draw = pump_gas(src, air1, air2, transfer_moles, power_rating) if (power_draw >= 0) - last_power_draw = power_draw + last_power_draw_legacy = power_draw use_power(power_draw) if(network1) @@ -190,8 +190,8 @@ Thus, the two variables affect pump operation are set in New(): "on" = use_power, "pressure_set" = round(target_pressure*100), "max_pressure" = max_pressure_setting, - "last_flow_rate" = round(last_flow_rate*10), - "last_power_draw" = round(last_power_draw), + "last_flow_rate" = round(last_flow_rate_legacy*10), + "last_power_draw" = round(last_power_draw_legacy), "max_power_draw" = power_rating, ) diff --git a/code/modules/atmospherics/machinery/components/component.dm b/code/modules/atmospherics/machinery/components/component.dm new file mode 100644 index 00000000000..e2ffac8c168 --- /dev/null +++ b/code/modules/atmospherics/machinery/components/component.dm @@ -0,0 +1,145 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2023 Citadel Station developers. *// + +/obj/machinery/atmospherics/component + interaction_flags_machine = INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OPEN | INTERACT_MACHINE_OPEN_SILICON | INTERACT_MACHINE_OFFLINE | INTERACT_MACHINE_OFFLINE_SILICON + default_deconstruct = 4 SECONDS + tool_deconstruct = TOOL_WRENCH + default_unanchor = null + tool_unanchor = null + default_panel = null + tool_panel = null + + /// allow multitool "hijacking" even if this is controlled by something else + /// set to non-null for delay, 0 for instant. + var/default_multitool_hijack = null + /// allow access normally + var/default_access_interface = FALSE + /// need tile pried to access or to be above tile + var/interface_require_exposed = FALSE + /// need tiled pried to access or to be above tile + var/hijack_require_exposed = FALSE + /// tgui interface ID - set to non-null to use new atmospherics UI system + // todo: convert all atmos machinery to new system + var/tgui_interface + /// allowed default ui controls + var/atmos_component_ui_flags = NONE + + /// efficiency multiplier + var/efficiency_multiplier = 1 + + /// are we on? + var/on = FALSE + /// maximum power limit in watts + var/power_maximum = 7500 + /// power setting configured in watts + var/power_setting + /// current power usage in watts + var/power_current = 0 + + //! legacy below + /// legacy power limit in watts + var/power_rating = 7500 + +/obj/machinery/atmospherics/component/Initialize(mapload, newdir) + . = ..() + if(isnull(power_setting)) + power_setting = power_maximum + //! LEGACY IF STATEMENT + // tgui_interface being set usually means we got refactored, and therefore we can be relied on to have + // proper on/off behavior, as opposed to the old "use power idle vs off" behavior." + if(tgui_interface) + set_on(on) + +/obj/machinery/atmospherics/component/proc/set_power(watts) + power_setting = watts + +/obj/machinery/atmospherics/component/proc/set_on(enabled) + on = enabled + if(enabled) + update_use_power(USE_POWER_IDLE) + else + update_use_power(USE_POWER_OFF) + update_icon() + +/obj/machinery/atmospherics/component/process(delta_time) + power_current = 0 + // todo: don't need this after pipenet rework + build_network() + +// todo: use a special state to handle multitool hijacking + +// /obj/machinery/atmospherics/component/ui_state(mob/user, datum/tgui_module/module) +// return GLOB.default_state + +/obj/machinery/atmospherics/component/ui_static_data(mob/user, datum/tgui/ui, datum/ui_state/state) + . = ..() + .["powerRating"] = power_maximum + .["controlFlags"] = atmos_component_ui_flags + +/obj/machinery/atmospherics/component/ui_data(mob/user, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(!tgui_interface) + return + .["on"] = on + .["powerSetting"] = power_setting + .["powerUsage"] = power_current + +/obj/machinery/atmospherics/component/ui_act(action, list/params, datum/tgui/ui) + . = ..() + if(.) + return + if(!tgui_interface) + return + switch(action) + if("togglePower") + if(!(atmos_component_ui_flags & ATMOS_COMPONENT_UI_TOGGLE_POWER)) + return TRUE + set_on(!on) + return TRUE + if("setPowerDraw") + if(!(atmos_component_ui_flags & ATMOS_COMPONENT_UI_SET_POWER)) + return TRUE + var/watts = text2num(params["target"]) + set_power(watts) + return TRUE + +/obj/machinery/atmospherics/component/interact(mob/user) + // todo: interact needs a refactor; doing it like this stops fingerprints from applying. + if(!allowed(user)) + user.action_feedback(SPAN_WARNING("Access denied."), src) + return FALSE + if(!default_access_interface) + return FALSE + // todo: refactor silicon interaction + if(interface_require_exposed && is_hidden_underfloor() && !issilicon(user)) + return FALSE + return ..() + +/obj/machinery/atmospherics/component/ui_interact(mob/user, datum/tgui/ui, datum/tgui/parent_ui) + if(!tgui_interface) + return ..() + + ui = SStgui.try_update_ui(user, src, ui) + if(isnull(ui)) + ui = new(user, src, tgui_interface) + ui.open() + +/obj/machinery/atmospherics/component/multitool_act(obj/item/I, mob/user, flags, hint) + . = ..() + if(.) + return + if(isnull(default_multitool_hijack)) + return FALSE + if(hijack_require_exposed && is_hidden_underfloor()) + user.action_feedback(SPAN_WARNING("You can't reach the controls of [src] while it's covered by flooring."), src) + return TRUE + user.visible_action_feedback( + target = src, + hard_range = MESSAGE_RANGE_CONFIGURATION, + visible_hard = SPAN_WARNING("[user] starts tinkering with [src] using their [I]!"), + ) + if(!do_after(user, default_multitool_hijack, src, mobility_flags = MOBILITY_CAN_USE)) + return TRUE + ui_interact(user) + return TRUE diff --git a/code/modules/atmospherics/machinery/components/omni_devices/_omni_extras.dm b/code/modules/atmospherics/machinery/components/omni_devices/_omni_extras.dm index 14117e2dd98..d567e6a1e29 100644 --- a/code/modules/atmospherics/machinery/components/omni_devices/_omni_extras.dm +++ b/code/modules/atmospherics/machinery/components/omni_devices/_omni_extras.dm @@ -96,14 +96,14 @@ /proc/mode_to_gasid(var/mode) switch(mode) if(ATM_O2) - return /datum/gas/oxygen + return GAS_ID_OXYGEN if(ATM_N2) - return /datum/gas/nitrogen + return GAS_ID_NITROGEN if(ATM_CO2) - return /datum/gas/carbon_dioxide + return GAS_ID_CARBON_DIOXIDE if(ATM_P) - return /datum/gas/phoron + return GAS_ID_PHORON if(ATM_N2O) - return /datum/gas/nitrous_oxide + return GAS_ID_NITROUS_OXIDE else return null diff --git a/code/modules/atmospherics/machinery/components/omni_devices/filter.dm b/code/modules/atmospherics/machinery/components/omni_devices/filter.dm index 715f26a7fcd..09ec71b720c 100644 --- a/code/modules/atmospherics/machinery/components/omni_devices/filter.dm +++ b/code/modules/atmospherics/machinery/components/omni_devices/filter.dm @@ -1,6 +1,9 @@ //-------------------------------------------- // Gas filter - omni variant //-------------------------------------------- + +// todo: refactor omni, and add gas group support for filters. + /obj/machinery/atmospherics/component/quaternary/atmos_filter name = "omni gas filter" icon_state = "map_filter" @@ -73,7 +76,7 @@ power_draw = filter_gas_multi(src, filtering_outputs, input_air, output_air, transfer_moles, power_rating) if (power_draw >= 0) - last_power_draw = power_draw + last_power_draw_legacy = power_draw use_power(power_draw) if(input.network) @@ -128,7 +131,7 @@ data["ports"] = portData if(output) data["set_flow_rate"] = round(set_flow_rate*10) //because nanoui can't handle rounded decimals. - data["last_flow_rate"] = round(last_flow_rate*10) + data["last_flow_rate"] = round(last_flow_rate_legacy*10) return data diff --git a/code/modules/atmospherics/machinery/components/omni_devices/mixer.dm b/code/modules/atmospherics/machinery/components/omni_devices/mixer.dm index 11e0e7789ed..ee481208f05 100644 --- a/code/modules/atmospherics/machinery/components/omni_devices/mixer.dm +++ b/code/modules/atmospherics/machinery/components/omni_devices/mixer.dm @@ -112,7 +112,7 @@ power_draw = mix_gas(src, mixing_inputs, output.air, transfer_moles, power_rating) if (power_draw >= 0) - last_power_draw = power_draw + last_power_draw_legacy = power_draw use_power(power_draw) for(var/datum/omni_port/P in inputs) @@ -159,7 +159,7 @@ data["ports"] = portData if(output) data["set_flow_rate"] = round(set_flow_rate*10) //because nanoui can't handle rounded decimals. - data["last_flow_rate"] = round(last_flow_rate*10) + data["last_flow_rate"] = round(last_flow_rate_legacy*10) return data diff --git a/code/modules/atmospherics/machinery/components/omni_devices/omni_base.dm b/code/modules/atmospherics/machinery/components/omni_devices/omni_base.dm index 3d61ae0adf2..c628bd8994e 100644 --- a/code/modules/atmospherics/machinery/components/omni_devices/omni_base.dm +++ b/code/modules/atmospherics/machinery/components/omni_devices/omni_base.dm @@ -61,8 +61,8 @@ return /obj/machinery/atmospherics/component/quaternary/process(delta_time) - last_power_draw = 0 - last_flow_rate = 0 + last_power_draw_legacy = 0 + last_flow_rate_legacy = 0 if(error_check()) update_use_power(USE_POWER_OFF) diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm index 049bdbbf189..cd89e667103 100644 --- a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm +++ b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm @@ -1,188 +1,105 @@ -/obj/machinery/atmospherics/component/trinary/atmos_filter +/obj/machinery/atmospherics/component/trinary/filter + name = "gas filter" icon = 'icons/atmos/filter.dmi' icon_state = "map" + density = FALSE construction_type = /obj/item/pipe/trinary/flippable pipe_state = "filter" - density = 0 level = 1 - name = "Gas filter" - use_power = USE_POWER_IDLE - idle_power_usage = 150 //internal circuitry, friction losses and stuff - power_rating = 7500 //This also doubles as a measure of how powerful the filter is, in Watts. 7500 W ~ 10 HP + idle_power_usage = 150 + power_maximum = 7500 - var/temp = null // -- TLE + tgui_interface = "AtmosTrinaryFilter" + default_access_interface = TRUE + atmos_component_ui_flags = ATMOS_COMPONENT_UI_TOGGLE_POWER - var/set_flow_rate = ATMOS_DEFAULT_VOLUME_FILTER + /// target gas id, or groups; can be type on init. + var/filtering + // todo: put flow rate at component level + /// flow rate in L + var/flow_setting = ATMOS_DEFAULT_VOLUME_FILTER + /// current flow rate in L + var/flow_current = 0 - /* - Filter types: - -1: Nothing - 0: Phoron: Phoron, Oxygen Agent B - 1: Oxygen: Oxygen ONLY - 2: Nitrogen: Nitrogen ONLY - 3: Carbon Dioxide: Carbon Dioxide ONLY - 4: Sleeping Agent (N2O) - */ - var/filter_type = -1 - var/list/filtered_out = list() - - - var/frequency = 0 - var/datum/radio_frequency/radio_connection - -/obj/machinery/atmospherics/component/trinary/atmos_filter/proc/set_frequency(new_frequency) - radio_controller.remove_object(src, frequency) - frequency = new_frequency - if(frequency) - radio_connection = radio_controller.add_object(src, frequency, RADIO_ATMOSIA) - -/obj/machinery/atmospherics/component/trinary/atmos_filter/Initialize(mapload) +/obj/machinery/atmospherics/component/trinary/filter/Initialize(mapload) . = ..() - switch(filter_type) - if(0) //removing hydrocarbons - filtered_out += /datum/gas/phoron - filtered_out += /datum/gas/volatile_fuel - if(1) //removing O2 - filtered_out += /datum/gas/oxygen - if(2) //removing N2 - filtered_out += /datum/gas/nitrogen - if(3) //removing CO2 - filtered_out += /datum/gas/carbon_dioxide - if(4)//removing N2O - filtered_out += /datum/gas/nitrous_oxide - air1.volume = ATMOS_DEFAULT_VOLUME_FILTER air2.volume = ATMOS_DEFAULT_VOLUME_FILTER air3.volume = ATMOS_DEFAULT_VOLUME_FILTER + if(ispath(filtering)) + var/datum/gas/casted = filtering + filtering = initial(casted.id) -/obj/machinery/atmospherics/component/trinary/atmos_filter/Destroy() - unregister_radio(src, frequency) - . = ..() - -/obj/machinery/atmospherics/component/trinary/atmos_filter/update_icon() +/obj/machinery/atmospherics/component/trinary/filter/update_icon_state() if(mirrored) icon_state = "m" else icon_state = "" - - if(!powered()) + if(!powered() || !on) icon_state += "off" else if(node2 && node3 && node1) - icon_state += use_power ? "on" : "off" + icon_state += on ? "on" : "off" else icon_state += "off" - update_use_power(USE_POWER_OFF) + return ..() -/obj/machinery/atmospherics/component/trinary/atmos_filter/process(delta_time) +/obj/machinery/atmospherics/component/trinary/filter/process(delta_time) ..() - last_power_draw = 0 - last_flow_rate = 0 - - if((machine_stat & (NOPOWER|BROKEN)) || !use_power) + if(!on || inoperable()) return - //Figure out the amount of moles to transfer - var/transfer_moles = (set_flow_rate/air1.volume)*air1.total_moles + var/old_mols = air1.total_moles + var/transfer_mols = (flow_setting / air1.volume) * old_mols - var/power_draw = -1 - if (transfer_moles > MINIMUM_MOLES_TO_FILTER) - power_draw = filter_gas(src, filtered_out, air1, air2, air3, transfer_moles, power_rating) + if(transfer_mols > MINIMUM_MOLES_TO_FILTER) + power_current = xgm_filter_gas(air1, air3, air2, filtering, transfer_mols, power_setting * efficiency_multiplier) / efficiency_multiplier + flow_current = (1 - air1.total_moles / old_mols) * air1.volume - if(network2) - network2.update = 1 + // todo: better API for this + network1?.update = TRUE + network2?.update = TRUE + network3?.update = TRUE - if(network3) - network3.update = 1 + if(power_current) + use_power(power_current) + // switch to watts instead of joules by dividing out tick time + power_current /= delta_time - if(network1) - network1.update = 1 +/obj/machinery/atmospherics/component/trinary/filter/proc/set_rate(liters) + flow_setting = clamp(liters, 0, air1.volume) - if (power_draw >= 0) - last_power_draw = power_draw - use_power(power_draw) - - return 1 - -/obj/machinery/atmospherics/component/trinary/atmos_filter/Initialize(mapload) +/obj/machinery/atmospherics/component/trinary/filter/ui_data(mob/user) . = ..() - if(frequency) - set_frequency(frequency) + .["filtering"] = filtering + .["maxRate"] = air1.volume + .["rate"] = flow_setting -/obj/machinery/atmospherics/component/trinary/atmos_filter/attack_hand(mob/user, list/params) - if(..()) +/obj/machinery/atmospherics/component/trinary/filter/ui_static_data(mob/user, datum/tgui/ui, datum/ui_state/state) + . = ..() + .["atmosContext"] = global.gas_data.tgui_gas_context() + +/obj/machinery/atmospherics/component/trinary/filter/ui_act(action, params) + . = ..() + if(.) return - if(!src.allowed(user)) - to_chat(user, SPAN_WARNING("Access denied.")) - return - ui_interact(user) - -/obj/machinery/atmospherics/component/trinary/atmos_filter/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "AtmosFilter", name) - ui.open() - -/obj/machinery/atmospherics/component/trinary/atmos_filter/ui_data(mob/user) - var/list/data = list() - - data["on"] = use_power - data["rate"] = set_flow_rate - data["max_rate"] = air1.volume - data["last_flow_rate"] = round(last_flow_rate, 0.1) - - data["filter_types"] = list() - data["filter_types"] += list(list("name" = "Nothing", "f_type" = -1, "selected" = filter_type == -1)) - data["filter_types"] += list(list("name" = "Phoron", "f_type" = 0, "selected" = filter_type == 0)) - data["filter_types"] += list(list("name" = "Oxygen", "f_type" = 1, "selected" = filter_type == 1)) - data["filter_types"] += list(list("name" = "Nitrogen", "f_type" = 2, "selected" = filter_type == 2)) - data["filter_types"] += list(list("name" = "Carbon Dioxide", "f_type" = 3, "selected" = filter_type == 3)) - data["filter_types"] += list(list("name" = "Nitrous Oxide", "f_type" = 4, "selected" = filter_type == 4)) - - return data - -/obj/machinery/atmospherics/component/trinary/atmos_filter/ui_act(action, params) - if(..()) - return TRUE - switch(action) - if("power") - update_use_power(!use_power) - if("rate") - var/rate = params["rate"] - if(rate == "max") - rate = air1.volume - . = TRUE - else if(text2num(rate) != null) - rate = text2num(rate) - . = TRUE - if(.) - set_flow_rate = clamp(rate, 0, air1.volume) if("filter") - . = TRUE - filter_type = text2num(params["filterset"]) - filtered_out.len = 0 //no need to create new lists unnecessarily - switch(filter_type) - if(0) //removing hydrocarbons - filtered_out += /datum/gas/phoron - filtered_out += /datum/gas/volatile_fuel - if(1) //removing O2 - filtered_out += /datum/gas/oxygen - if(2) //removing N2 - filtered_out += /datum/gas/nitrogen - if(3) //removing CO2 - filtered_out += /datum/gas/carbon_dioxide - if(4)//removing N2O - filtered_out += /datum/gas/nitrous_oxide + var/target = params["target"] + if(!(isnum(target)? global.gas_data.gas_groups_filterable(target) : global.gas_data.gas_id_filterable(target))) + return TRUE + filtering = target + return TRUE + if("rate") + var/liters = params["rate"] + if(isnull(liters)) + return FALSE + set_rate(liters) + return TRUE - update_icon() - -// -// Mirrored Orientation - Flips the output dir to opposite side from normal. -// -/obj/machinery/atmospherics/component/trinary/atmos_filter/m_filter +/obj/machinery/atmospherics/component/trinary/filter/mirrored icon_state = "mmap" dir = SOUTH initialize_directions = SOUTH|NORTH|EAST diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm index c535d6d7789..c0f8e340a36 100644 --- a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm +++ b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm @@ -49,8 +49,8 @@ /obj/machinery/atmospherics/component/trinary/mixer/process(delta_time) ..() - last_power_draw = 0 - last_flow_rate = 0 + last_power_draw_legacy = 0 + last_flow_rate_legacy = 0 if((machine_stat & (NOPOWER|BROKEN)) || !use_power) return @@ -72,7 +72,7 @@ network3.update = 1 if (power_draw >= 0) - last_power_draw = power_draw + last_power_draw_legacy = power_draw use_power(power_draw) return 1 diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/molar_filter.dm b/code/modules/atmospherics/machinery/components/trinary_devices/molar_filter.dm new file mode 100644 index 00000000000..fd7bafa66c4 --- /dev/null +++ b/code/modules/atmospherics/machinery/components/trinary_devices/molar_filter.dm @@ -0,0 +1,111 @@ +/obj/machinery/atmospherics/component/trinary/molar_filter + name = "molar filter" + desc = "A prototype filter that filters gases based on their molar mass." + icon = 'icons/modules/atmospherics/components/trinary/molar_filter.dmi' + base_icon_state = "molar" + icon_state = "molar-map" + density = FALSE + construction_type = /obj/item/pipe/trinary/flippable + pipe_state = "filter" + level = 1 + + use_power = USE_POWER_IDLE + idle_power_usage = 150 + power_maximum = 7500 + + tgui_interface = "AtmosTrinaryMolarFilter" + default_access_interface = TRUE + atmos_component_ui_flags = ATMOS_COMPONENT_UI_TOGGLE_POWER + + /// inverted mode + var/invert = FALSE + /// lower molar bound + var/mass_lower = 0 + /// upper molar bound + var/mass_upper = 10000 + // todo: put flow rate at component level + /// flow rate in L + var/flow_setting = ATMOS_DEFAULT_VOLUME_FILTER + /// current flow rate in L + var/flow_current = 0 + +/obj/machinery/atmospherics/component/trinary/molar_filter/Initialize(mapload) + . = ..() + air1.volume = ATMOS_DEFAULT_VOLUME_FILTER + air2.volume = ATMOS_DEFAULT_VOLUME_FILTER + air3.volume = ATMOS_DEFAULT_VOLUME_FILTER + +/obj/machinery/atmospherics/component/trinary/molar_filter/update_icon_state() + var/is_on = on && powered() && (node1 && node2 && node3) + icon_state = "[base_icon_state][mirrored? "-f" : ""][(is_on? "-on" : "")]" + return ..() + +/obj/machinery/atmospherics/component/trinary/molar_filter/process(delta_time) + ..() + + if(!on || inoperable()) + return + + var/old_mols = air1.total_moles + var/transfer_mols = (flow_setting / air1.volume) * old_mols + + if(transfer_mols > MINIMUM_MOLES_TO_FILTER) + if(invert) + power_current = xgm_molar_filter_gas(air1, air2, air3, mass_lower, mass_upper, transfer_mols, power_setting * efficiency_multiplier) / efficiency_multiplier + else + power_current = xgm_molar_filter_gas(air1, air3, air2, mass_lower, mass_upper, transfer_mols, power_setting * efficiency_multiplier) / efficiency_multiplier + flow_current = (1 - air1.total_moles / old_mols) * air1.volume + + // todo: better API for this + network1?.update = TRUE + network2?.update = TRUE + network3?.update = TRUE + + if(power_current) + use_power(power_current) + // switch to watts instead of joules by dividing out tick time + power_current /= delta_time + +/obj/machinery/atmospherics/component/trinary/molar_filter/proc/set_rate(liters) + flow_setting = clamp(liters, 0, air1.volume) + +/obj/machinery/atmospherics/component/trinary/molar_filter/ui_data(mob/user) + . = ..() + .["lower"] = mass_lower + .["upper"] = mass_upper + .["invert"] = invert + .["maxRate"] = air1.volume + .["rate"] = flow_setting + +/obj/machinery/atmospherics/component/trinary/molar_filter/ui_act(action, params) + . = ..() + if(.) + return + switch(action) + if("lower") + var/target = params["target"] + target = clamp(text2num(target), 0, INFINITY) + mass_lower = target + mass_upper = max(mass_upper, mass_lower) + return TRUE + if("upper") + var/target = params["target"] + target = clamp(text2num(target), 0, INFINITY) + mass_upper = target + mass_lower = min(mass_lower, mass_upper) + return TRUE + if("invert") + invert = !invert + return TRUE + if("rate") + var/liters = params["rate"] + if(isnull(liters)) + return FALSE + set_rate(liters) + return TRUE + +/obj/machinery/atmospherics/component/trinary/molar_filter/mirrored + dir = SOUTH + initialize_directions = SOUTH|NORTH|EAST + mirrored = TRUE + icon_state = "molar-f-map" diff --git a/code/modules/atmospherics/machinery/components/unary/cold_sink.dm b/code/modules/atmospherics/machinery/components/unary/cold_sink.dm index 85709a23073..96f17418729 100644 --- a/code/modules/atmospherics/machinery/components/unary/cold_sink.dm +++ b/code/modules/atmospherics/machinery/components/unary/cold_sink.dm @@ -14,7 +14,7 @@ var/internal_volume = 600 // L var/max_power_rating = 20000 // Power rating when the usage is turned up to 100 - var/power_setting = 100 + var/power_setting_legacy = 100 var/set_temperature = T20C // Thermostat var/cooling = 0 @@ -77,7 +77,7 @@ data["minGasTemperature"] = 0 data["maxGasTemperature"] = round(T20C+500) data["targetGasTemperature"] = round(set_temperature) - data["powerSetting"] = power_setting + data["powerSetting"] = power_setting_legacy var/temp_class = "good" if(air_contents.temperature > (T0C - 20)) @@ -155,11 +155,11 @@ max_power_rating = initial(max_power_rating) * cap_rating / 2 //more powerful heatsink_temperature = initial(heatsink_temperature) / ((manip_rating + bin_rating) / 2) //more efficient air_contents.volume = max(initial(internal_volume) - 200, 0) + 200 * bin_rating - set_power_level(power_setting) + set_power_level(power_setting_legacy) -/obj/machinery/atmospherics/component/unary/freezer/proc/set_power_level(var/new_power_setting) - power_setting = new_power_setting - power_rating = max_power_rating * (power_setting/100) +/obj/machinery/atmospherics/component/unary/freezer/proc/set_power_level(var/new_power_setting_legacy) + power_setting_legacy = new_power_setting_legacy + power_rating = max_power_rating * (power_setting_legacy/100) /obj/machinery/atmospherics/component/unary/freezer/attackby(var/obj/item/O as obj, var/mob/user as mob) if(default_deconstruction_screwdriver(user, O)) diff --git a/code/modules/atmospherics/machinery/components/unary/heat_exchanger.dm b/code/modules/atmospherics/machinery/components/unary/heat_exchanger.dm index d307391bcfe..e21a782c5cb 100644 --- a/code/modules/atmospherics/machinery/components/unary/heat_exchanger.dm +++ b/code/modules/atmospherics/machinery/components/unary/heat_exchanger.dm @@ -33,11 +33,11 @@ if(!partner) return 0 - if(!air_master || air_master.current_cycle <= update_cycle) + if(!SSair || SSair.current_cycle <= update_cycle) return 0 - update_cycle = air_master.current_cycle - partner.update_cycle = air_master.current_cycle + update_cycle = SSair.current_cycle + partner.update_cycle = SSair.current_cycle var/air_heat_capacity = air_contents.heat_capacity() var/other_air_heat_capacity = partner.air_contents.heat_capacity() diff --git a/code/modules/atmospherics/machinery/components/unary/heat_source.dm b/code/modules/atmospherics/machinery/components/unary/heat_source.dm index c2a16315e36..4e37184dbdc 100644 --- a/code/modules/atmospherics/machinery/components/unary/heat_source.dm +++ b/code/modules/atmospherics/machinery/components/unary/heat_source.dm @@ -14,7 +14,7 @@ var/internal_volume = 600 //L var/max_power_rating = 20000 //power rating when the usage is turned up to 100 - var/power_setting = 100 + var/power_setting_legacy = 100 var/set_temperature = T20C //thermostat var/heating = 0 //mainly for icon updates @@ -91,7 +91,7 @@ data["minGasTemperature"] = 0 data["maxGasTemperature"] = round(max_temperature) data["targetGasTemperature"] = round(set_temperature) - data["powerSetting"] = power_setting + data["powerSetting"] = power_setting_legacy var/temp_class = "average" if(air_contents.temperature > (T20C+40)) @@ -134,11 +134,11 @@ max_power_rating = initial(max_power_rating) * cap_rating / 2 max_temperature = max(initial(max_temperature) - T20C, 0) * ((bin_rating * 4 + cap_rating) / 5) + T20C air_contents.volume = max(initial(internal_volume) - 200, 0) + 200 * bin_rating - set_power_level(power_setting) + set_power_level(power_setting_legacy) -/obj/machinery/atmospherics/component/unary/heater/proc/set_power_level(var/new_power_setting) - power_setting = new_power_setting - power_rating = max_power_rating * (power_setting/100) +/obj/machinery/atmospherics/component/unary/heater/proc/set_power_level(var/new_power_setting_legacy) + power_setting_legacy = new_power_setting_legacy + power_rating = max_power_rating * (power_setting_legacy/100) /obj/machinery/atmospherics/component/unary/heater/attackby(var/obj/item/O as obj, var/mob/user as mob) if(default_deconstruction_screwdriver(user, O)) diff --git a/code/modules/atmospherics/machinery/components/unary/outlet_injector.dm b/code/modules/atmospherics/machinery/components/unary/outlet_injector.dm index 0773434506f..4314a1d5a4d 100644 --- a/code/modules/atmospherics/machinery/components/unary/outlet_injector.dm +++ b/code/modules/atmospherics/machinery/components/unary/outlet_injector.dm @@ -55,8 +55,8 @@ /obj/machinery/atmospherics/component/unary/outlet_injector/process(delta_time) ..() - last_power_draw = 0 - last_flow_rate = 0 + last_power_draw_legacy = 0 + last_flow_rate_legacy = 0 if((machine_stat & (NOPOWER|BROKEN)) || !use_power) return @@ -69,7 +69,7 @@ power_draw = pump_gas(src, air_contents, environment, transfer_moles, power_rating) if (power_draw >= 0) - last_power_draw = power_draw + last_power_draw_legacy = power_draw use_power(power_draw) if(network) diff --git a/code/modules/atmospherics/machinery/components/unary/oxygen_generator.dm b/code/modules/atmospherics/machinery/components/unary/oxygen_generator.dm index 82e6e2bf538..d47883ae893 100644 --- a/code/modules/atmospherics/machinery/components/unary/oxygen_generator.dm +++ b/code/modules/atmospherics/machinery/components/unary/oxygen_generator.dm @@ -9,8 +9,6 @@ dir = SOUTH initialize_directions = SOUTH - var/on = 0 - var/oxygen_content = 10 /obj/machinery/atmospherics/component/unary/oxygen_generator/update_icon() @@ -18,11 +16,8 @@ icon_state = "intact_[on?("on"):("off")]" else icon_state = "exposed_off" - on = 0 - return - /obj/machinery/atmospherics/component/unary/oxygen_generator/New() ..() air_contents.volume = 50 @@ -40,7 +35,7 @@ var/added_oxygen = oxygen_content - total_moles air_contents.temperature = (current_heat_capacity*air_contents.temperature + 20*added_oxygen*T0C)/(current_heat_capacity+20*added_oxygen) - air_contents.adjust_gas(/datum/gas/oxygen, added_oxygen) + air_contents.adjust_gas(GAS_ID_OXYGEN, added_oxygen) if(network) network.update = 1 diff --git a/code/modules/atmospherics/machinery/components/unary/retro_pump_and_scrubber.dm b/code/modules/atmospherics/machinery/components/unary/retro_pump_and_scrubber.dm deleted file mode 100644 index 2fd98e972dc..00000000000 --- a/code/modules/atmospherics/machinery/components/unary/retro_pump_and_scrubber.dm +++ /dev/null @@ -1,72 +0,0 @@ -//// Retro Styles of vents and scrubbers/// -/// -/// Vents first - -/obj/machinery/atmospherics/component/unary/vent_pump/retro - icon_state = "map_vent" - -/obj/machinery/atmospherics/component/unary/vent_pump/retro/on - use_power = USE_POWER_IDLE - icon_state = "map_vent_out" - -/obj/machinery/atmospherics/component/unary/vent_pump/retro/on/welded - welded = 1 - -/obj/machinery/atmospherics/component/unary/vent_pump/retro/update_icon(safety = 0) - if(!check_icon_cache()) - return - - cut_overlays() - - var/vent_icon = "vent" - - var/turf/T = get_turf(src) - if(!istype(T)) - return - - if(!T.is_plating() && node && node.level == 1 && istype(node, /obj/machinery/atmospherics/pipe)) - vent_icon += "h" - - if(welded) - vent_icon += "retro_weld" - else if(!use_power || !node || (machine_stat & (NOPOWER|BROKEN))) - vent_icon += "retro_off" - else - vent_icon += "[pump_direction ? "retro_out" : "retro_in"]" - - add_overlay(icon_manager.get_atmos_icon("device", , , vent_icon)) - - -////////////////////// -/// Scrubbers now //// - -/obj/machinery/atmospherics/component/unary/vent_scrubber/retro - icon_state = "map_scrubber_off" /// Will get replaced on mapload - -/obj/machinery/atmospherics/component/unary/vent_scrubber/retro/on - use_power = USE_POWER_IDLE - icon_state = "map_scrubber_on" - -/obj/machinery/atmospherics/component/unary/vent_scrubber/retro/on/welded - welded = 1 - -/obj/machinery/atmospherics/component/unary/vent_scrubber/retro/update_icon(safety = 0) - if(!check_icon_cache()) - return - - cut_overlays() - - var/scrubber_icon = "scrubber" - - var/turf/T = get_turf(src) - if(!istype(T)) - return - - if(welded) - scrubber_icon += "retro_weld" - else if(!powered()) - scrubber_icon += "retro_off" - else - scrubber_icon += "[use_power ? "[scrubbing ? "retro_on" : "retro_in"]" : "retro_off"]" - - add_overlay(icon_manager.get_atmos_icon("device", , , scrubber_icon)) diff --git a/code/modules/atmospherics/machinery/components/unary/vent_pump.dm b/code/modules/atmospherics/machinery/components/unary/vent_pump.dm index b35f3ce2170..086b243e4b8 100644 --- a/code/modules/atmospherics/machinery/components/unary/vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/unary/vent_pump.dm @@ -1,49 +1,58 @@ #define DEFAULT_PRESSURE_DELTA 10000 -#define EXTERNAL_PRESSURE_BOUND ONE_ATMOSPHERE -#define INTERNAL_PRESSURE_BOUND 0 -#define PRESSURE_CHECKS 1 - -#define PRESSURE_CHECK_EXTERNAL 1 -#define PRESSURE_CHECK_INTERNAL 2 - +// todo: better interface logging /obj/machinery/atmospherics/component/unary/vent_pump + name = "Air Vent" + desc = "Has a valve and pump attached to it" icon = 'icons/atmos/vent_pump.dmi' icon_state = "map_vent" pipe_state = "uvent" - - name = "Air Vent" - desc = "Has a valve and pump attached to it" - use_power = USE_POWER_OFF idle_power_usage = 150 //internal circuitry, friction losses and stuff power_rating = 30000 connect_types = CONNECT_TYPE_REGULAR|CONNECT_TYPE_SUPPLY //connects to regular and supply pipes - var/area/initial_loc + hijack_require_exposed = TRUE + default_multitool_hijack = TRUE + tgui_interface = "AtmosVentPump" + atmos_component_ui_flags = NONE + level = 1 + + /// registered area + var/area/registered_area + /// auto name by area + var/name_from_area = TRUE + /// show on area + var/controllable_from_alarm = TRUE + /// cares about siphoning/filling/alarm modes + var/environmental = TRUE + + /// pump direction + var/pump_direction + /// default pump direction + var/pump_direction_default = ATMOS_VENT_DIRECTION_RELEASE + /// external pressure limit + var/external_pressure_bound = ONE_ATMOSPHERE + /// external pressure limit default + var/external_pressure_bound_default = ONE_ATMOSPHERE + /// internal pressure limit + var/internal_pressure_bound = 0 + /// internal pressure limit default + var/internal_pressure_bound_default = 0 + /// pressure checks flag + var/pressure_checks + /// default pressure checks + var/pressure_checks_default = ATMOS_VENT_CHECK_EXTERNAL + var/area_uid var/id_tag = null - var/hibernate = 0 //Do we even process? - var/pump_direction = 1 //0 = siphoning, 1 = releasing - - var/external_pressure_bound = EXTERNAL_PRESSURE_BOUND - var/internal_pressure_bound = INTERNAL_PRESSURE_BOUND - - var/pressure_checks = PRESSURE_CHECKS - //1: Do not pass external_pressure_bound - //2: Do not pass internal_pressure_bound - //3: Do not pass either - - // Used when handling incoming radio signals requesting default settings - var/external_pressure_bound_default = EXTERNAL_PRESSURE_BOUND - var/internal_pressure_bound_default = INTERNAL_PRESSURE_BOUND - var/pressure_checks_default = PRESSURE_CHECKS - var/frequency = 1439 var/datum/radio_frequency/radio_connection + var/hibernate = 0 //Do we even process? + var/radio_filter_out var/radio_filter_in @@ -51,8 +60,357 @@ var/datum/looping_sound/air_pump/soundloop */ +/obj/machinery/atmospherics/component/unary/vent_pump/Initialize(mapload) + . = ..() + if(isnull(external_pressure_bound)) + external_pressure_bound = external_pressure_bound_default + if(isnull(internal_pressure_bound)) + internal_pressure_bound = internal_pressure_bound_default + if(isnull(pressure_checks)) + pressure_checks = pressure_checks_default + if(isnull(pump_direction)) + pump_direction = pump_direction_default + /* + soundloop = new(list(src), FALSE) + */ + air_contents.volume = ATMOS_DEFAULT_VOLUME_PUMP + + icon = null + registered_area = get_area(loc) + area_uid = registered_area.uid + registered_area?.register_vent(src) + if (!id_tag) + assign_uid() + id_tag = num2text(uid) + +/obj/machinery/atmospherics/component/unary/vent_pump/Destroy() + unregister_radio(src, frequency) + registered_area?.unregister_vent(src) + //QDEL_NULL(soundloop) + return ..() + +/obj/machinery/atmospherics/component/unary/vent_pump/update_icon(safety = 0) + if(!check_icon_cache()) + return + + cut_overlays() + + var/vent_icon = "vent" + + var/turf/T = get_turf(src) + if(!istype(T)) + return + + if(!T.is_plating() && node && node.level == 1 && istype(node, /obj/machinery/atmospherics/pipe)) + vent_icon += "h" + + if(welded) + vent_icon += "weld" + else if(!on || !node || (machine_stat & (NOPOWER|BROKEN))) + vent_icon += "off" + else + vent_icon += "[pump_direction ? "out" : "in"]" + + add_overlay(icon_manager.get_atmos_icon("device", , , vent_icon)) + +/obj/machinery/atmospherics/component/unary/vent_pump/update_underlays() + if(..()) + underlays.Cut() + var/turf/T = get_turf(src) + if(!istype(T)) + return + if(!T.is_plating() && node && node.level == 1 && istype(node, /obj/machinery/atmospherics/pipe)) + return + else + if(node) + add_underlay(T, node, dir, node.icon_connect_type) + else + add_underlay(T,, dir) + +/obj/machinery/atmospherics/component/unary/vent_pump/hide() + update_icon() + update_underlays() + +/obj/machinery/atmospherics/component/unary/vent_pump/proc/can_pump() + if(machine_stat & (NOPOWER|BROKEN)) + //soundloop.stop() + return 0 + if(!on) + //soundloop.stop() + return 0 + if(welded) + //soundloop.stop() + return 0 + //soundloop.start() + return 1 + +/obj/machinery/atmospherics/component/unary/vent_pump/process(delta_time) + ..() + if (hibernate) + return 1 + if(!node) + set_on(FALSE) + if(!can_pump()) + return 0 + + var/datum/gas_mixture/environment = return_air() + + var/power_draw = -1 + + //Figure out the target pressure difference + var/pressure_delta = get_pressure_delta(environment) + //src.visible_message("DEBUG >>> [src]: pressure_delta = [pressure_delta]") + + if((environment.temperature || air_contents.temperature) && pressure_delta > 0.5) + if(pump_direction) //internal -> external + var/transfer_moles = calculate_transfer_moles(air_contents, environment, pressure_delta) + power_draw = pump_gas(src, air_contents, environment, transfer_moles, power_rating) + else //external -> internal + var/transfer_moles = calculate_transfer_moles(environment, air_contents, pressure_delta, (network)? network.volume : 0) + + //limit flow rate from turfs + transfer_moles = min(transfer_moles, environment.total_moles*air_contents.volume/environment.volume) //group_multiplier gets divided out here + power_draw = pump_gas(src, environment, air_contents, transfer_moles, power_rating) + + + if (power_draw >= 0) + last_power_draw_legacy = power_draw + use_power(power_draw) + if(network) + network.update = 1 + + return 1 + +/obj/machinery/atmospherics/component/unary/vent_pump/proc/get_pressure_delta(datum/gas_mixture/environment) + var/pressure_delta = DEFAULT_PRESSURE_DELTA + var/environment_pressure = environment.return_pressure() + + if(pump_direction) //internal -> external + if(pressure_checks & ATMOS_VENT_CHECK_EXTERNAL) + pressure_delta = min(pressure_delta, external_pressure_bound - environment_pressure) //increasing the pressure here + if(pressure_checks & ATMOS_VENT_CHECK_INTERNAL) + pressure_delta = min(pressure_delta, air_contents.return_pressure() - internal_pressure_bound) //decreasing the pressure here + else //external -> internal + if(pressure_checks & ATMOS_VENT_CHECK_EXTERNAL) + pressure_delta = min(pressure_delta, environment_pressure - external_pressure_bound) //decreasing the pressure here + if(pressure_checks & ATMOS_VENT_CHECK_INTERNAL) + pressure_delta = min(pressure_delta, internal_pressure_bound - air_contents.return_pressure()) //increasing the pressure here + + return pressure_delta + +/obj/machinery/atmospherics/component/unary/vent_pump/proc/broadcast_status() + if(!radio_connection) + return 0 + + var/datum/signal/signal = new + signal.transmission_method = 1 //radio signal + signal.source = src + + signal.data = list( + "area" = src.area_uid, + "tag" = src.id_tag, + "device" = "AVP", + "power" = on, + "direction" = pump_direction?("release"):("siphon"), + "checks" = pressure_checks, + "internal" = internal_pressure_bound, + "external" = external_pressure_bound, + "timestamp" = world.time, + "sigtype" = "status", + "power_draw" = last_power_draw_legacy, + "flow_rate" = last_flow_rate_legacy, + ) + + radio_connection.post_signal(src, signal, radio_filter_out) + + return 1 + +/obj/machinery/atmospherics/component/unary/vent_pump/atmos_init() + ..() + + //some vents work his own special way + radio_filter_in = frequency==1439?(RADIO_FROM_AIRALARM):null + radio_filter_out = frequency==1439?(RADIO_TO_AIRALARM):null + if(frequency) + radio_connection = register_radio(src, frequency, frequency, radio_filter_in) + src.broadcast_status() + +/obj/machinery/atmospherics/component/unary/vent_pump/attackby(obj/item/W, mob/user) + if(istype(W, /obj/item/weldingtool)) + var/obj/item/weldingtool/WT = W + if (WT.remove_fuel(0,user)) + to_chat(user, "Now welding the vent.") + if(do_after(user, 20 * WT.tool_speed)) + if(!src || !WT.isOn()) return + playsound(src.loc, WT.tool_sound, 50, 1) + if(!welded) + user.visible_message("\The [user] welds the vent shut.", "You weld the vent shut.", "You hear welding.") + welded = 1 + update_icon() + else + user.visible_message("[user] unwelds the vent.", "You unweld the vent.", "You hear welding.") + welded = 0 + update_icon() + else + to_chat(user, "The welding tool needs to be on to start this task.") + else + to_chat(user, "You need more welding fuel to complete this task.") + return 1 + else + ..() + +/obj/machinery/atmospherics/component/unary/vent_pump/examine(mob/user, dist) + . = ..() + . += "A small gauge in the corner reads [round(last_flow_rate_legacy, 0.1)] L/s; [round(last_power_draw_legacy)] W" + if(welded) + . += "It seems welded shut." + +/obj/machinery/atmospherics/component/unary/vent_pump/power_change() + var/old_stat = machine_stat + ..() + if(old_stat != machine_stat) + update_icon() + +/obj/machinery/atmospherics/component/unary/vent_pump/attackby(obj/item/W, mob/user) + if (!W.is_wrench()) + return ..() + if (!(machine_stat & NOPOWER) && on) + to_chat(user, "You cannot unwrench \the [src], turn it off first.") + return 1 + var/turf/T = src.loc + if (node && node.level==1 && isturf(T) && !T.is_plating()) + to_chat(user, "You must remove the plating first.") + return 1 + if(unsafe_pressure()) + to_chat(user, "You feel a gust of air blowing in your face as you try to unwrench [src]. Maybe you should reconsider..") + add_fingerprint(user) + playsound(src, W.tool_sound, 50, 1) + to_chat(user, "You begin to unfasten \the [src]...") + if (do_after(user, 40 * W.tool_speed)) + user.visible_message( \ + "\The [user] unfastens \the [src].", \ + "You have unfastened \the [src].", \ + "You hear a ratchet.") + deconstruct() + +/** + * Encodes UI data for AtmosVentState in tgui/interfaces/machines/AtmosVent.tsx + */ +/obj/machinery/atmospherics/component/unary/vent_pump/proc/ui_vent_data() + return list( + "pressureChecks" = pressure_checks, + "internalPressure" = internal_pressure_bound, + "externalPressure" = external_pressure_bound, + "power" = on, + "siphon" = !pump_direction, + ) + +/obj/machinery/atmospherics/component/unary/vent_pump/ui_interact(mob/user, datum/tgui/ui, datum/tgui/parent_ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!isnull(ui)) + return + ui = new(user, src, "AtmosVentPump") + ui.open() + +/obj/machinery/atmospherics/component/unary/vent_pump/ui_data(mob/user, datum/tgui/ui, datum/ui_state/state) + . = ..() + .["state"] = ui_vent_data() + .["name"] = name + +/obj/machinery/atmospherics/component/unary/vent_pump/ui_act(action, list/params, datum/tgui/ui) + . = ..() + if(.) + return + var/target = params["target"] + switch(action) + if("toggle") + set_on(!on) + return TRUE + if("intPressure") + internal_pressure_bound = target == "default"? internal_pressure_bound_default : clamp(text2num(target), 0, ATMOS_VENT_MAX_PRESSURE_LIMIT) + return TRUE + if("extPressure") + external_pressure_bound = target == "default"? external_pressure_bound_default : clamp(text2num(target), 0, ATMOS_VENT_MAX_PRESSURE_LIMIT) + return TRUE + if("intCheck") + pressure_checks ^= ATMOS_VENT_CHECK_INTERNAL + return TRUE + if("extCheck") + pressure_checks ^= ATMOS_VENT_CHECK_EXTERNAL + return TRUE + if("siphon") + //! warning: legacy + pump_direction = !pump_direction + update_icon() + return TRUE + +//* Signal Handling - Check / Application order is in order of these comments. +/// environmental: void. set to ignore the signal if we're not an environmental vent. +/// hard_reset: resets everything to default. +/// power: 0 | 1. sets us to be on/off. overrides power_toggle. +/// power_toggle: void. toggles us on/off. +/// checks: bitfield | "default". sets our checks to that. overrides checks_toggle. +/// checks_toggle: bitfield. toggles those checks. +/// direction: enum | "default". sets direction to that +/// direction_toggle: void. toggles direction. +/// set_internal_pressure: number | "default". sets internal pressure. overrides adjust_internal_pressure. +/// adjust_internal_pressure: number. adjusts internal pressure. +/// set_external_pressure: number | "default". sets external pressure. overrides adjust_external_pressure. +/// adjust_external_pressure: number. adjusts external pressure. + +/obj/machinery/atmospherics/component/unary/vent_pump/receive_signal(datum/signal/signal) + if(machine_stat & (NOPOWER|BROKEN)) + return + + hibernate = 0 + + if(!signal.data["tag"] || (signal.data["tag"] != id_tag) || (signal.data["sigtype"]!="command")) + return 0 + + if(!isnull(signal.data["environmental"]) && environmental) + return FALSE + + if(!isnull(signal.data["hard_reset"])) + pressure_checks = pressure_checks_default + pump_direction = pump_direction_default + internal_pressure_bound = internal_pressure_bound_default + external_pressure_bound = external_pressure_bound_default + if(!isnull(signal.data["power"])) + set_on(!!text2num(signal.data["power"])) + else if(!isnull(signal.data["power_toggle"])) + set_on(!on) + if(!isnull(signal.data["checks"])) + pressure_checks = (signal.data["checks"] == "default")? pressure_checks_default : (text2num(signal.data) & ATMOS_VENT_CHECKS) + else if(!isnull(signal.data["checks_toggle"])) + pressure_checks ^= (text2num(signal.data["checks_toggle"]) & ATMOS_VENT_CHECKS) + if(!isnull(signal.data["direction"])) + pump_direction = signal.data["direction"] == "default"? pump_direction_default : clamp(text2num(signal.data["direction"]), 0, 1) + else if(!isnull(signal.data["direction_toggle"])) + pump_direction = !pump_direction + if(!isnull(signal.data["set_internal_pressure"])) + internal_pressure_bound = signal.data["set_internal_presure"] == "default"? internal_pressure_bound_default : clamp(text2num(signal.data["set_internal_pressure"]), 0, ATMOS_VENT_MAX_PRESSURE_LIMIT) + else if(!isnull(signal.data["adjust_internal_pressure"])) + internal_pressure_bound = clamp(internal_pressure_bound + text2num(signal.data["set_internal_pressure"]), 0, ATMOS_VENT_MAX_PRESSURE_LIMIT) + if(!isnull(signal.data["set_external_pressure"])) + external_pressure_bound = signal.data["set_external_presure"] == "default"? external_pressure_bound_default : clamp(text2num(signal.data["set_external_pressure"]), 0, ATMOS_VENT_MAX_PRESSURE_LIMIT) + else if(!isnull(signal.data["adjust_external_pressure"])) + external_pressure_bound = clamp(external_pressure_bound + text2num(signal.data["set_external_pressure"]), 0, ATMOS_VENT_MAX_PRESSURE_LIMIT) + + //! legacy below + if(signal.data["status"] != null) + spawn(2) + broadcast_status() + return //do not update_icon + + //log_admin("DEBUG \[[world.timeofday]\]: vent_pump/receive_signal: unknown command \"[signal.data["command"]]\"\n[signal.debug_print()]") + spawn(2) + broadcast_status() + update_icon() + +//* Subtypes + /obj/machinery/atmospherics/component/unary/vent_pump/on - use_power = USE_POWER_IDLE + on = TRUE icon_state = "map_vent_out" /obj/machinery/atmospherics/component/unary/vent_pump/on/welded @@ -67,16 +425,16 @@ pump_direction = 0 /obj/machinery/atmospherics/component/unary/vent_pump/siphon/on - use_power = USE_POWER_IDLE + on = TRUE icon_state = "map_vent_in" /obj/machinery/atmospherics/component/unary/vent_pump/positive // For some reason was buried in tether_things.dm -Bloop - use_power = USE_POWER_IDLE + on = TRUE icon_state = "map_vent_out" external_pressure_bound = ONE_ATMOSPHERE * 1.1 /obj/machinery/atmospherics/component/unary/vent_pump/siphon/on/atmos - use_power = USE_POWER_IDLE + on = TRUE icon_state = "map_vent_in" external_pressure_bound = 0 external_pressure_bound_default = 0 @@ -85,31 +443,6 @@ pressure_checks = 2 pressure_checks_default = 2 -/obj/machinery/atmospherics/component/unary/vent_pump/Initialize(mapload) - . = ..() - /* - soundloop = new(list(src), FALSE) - */ - -/obj/machinery/atmospherics/component/unary/vent_pump/Initialize(mapload) - . = ..() - air_contents.volume = ATMOS_DEFAULT_VOLUME_PUMP - - icon = null - initial_loc = get_area(loc) - area_uid = initial_loc.uid - if (!id_tag) - assign_uid() - id_tag = num2text(uid) - -/obj/machinery/atmospherics/component/unary/vent_pump/Destroy() - unregister_radio(src, frequency) - if(initial_loc) - initial_loc.air_vent_info -= id_tag - initial_loc.air_vent_names -= id_tag - //QDEL_NULL(soundloop) - return ..() - /obj/machinery/atmospherics/component/unary/vent_pump/high_volume name = "Large Air Vent" power_channel = EQUIP @@ -144,7 +477,17 @@ . = ..() air_contents.volume = ATMOS_DEFAULT_VOLUME_PUMP + 500 //meant to match air injector -/obj/machinery/atmospherics/component/unary/vent_pump/update_icon(safety = 0) +/obj/machinery/atmospherics/component/unary/vent_pump/retro + icon_state = "map_vent" + +/obj/machinery/atmospherics/component/unary/vent_pump/retro/on + on = TRUE + icon_state = "map_vent_out" + +/obj/machinery/atmospherics/component/unary/vent_pump/retro/on/welded + welded = 1 + +/obj/machinery/atmospherics/component/unary/vent_pump/retro/update_icon(safety = 0) if(!check_icon_cache()) return @@ -160,301 +503,12 @@ vent_icon += "h" if(welded) - vent_icon += "weld" + vent_icon += "retro_weld" else if(!use_power || !node || (machine_stat & (NOPOWER|BROKEN))) - vent_icon += "off" + vent_icon += "retro_off" else - vent_icon += "[pump_direction ? "out" : "in"]" + vent_icon += "[pump_direction ? "retro_out" : "retro_in"]" add_overlay(icon_manager.get_atmos_icon("device", , , vent_icon)) -/obj/machinery/atmospherics/component/unary/vent_pump/update_underlays() - if(..()) - underlays.Cut() - var/turf/T = get_turf(src) - if(!istype(T)) - return - if(!T.is_plating() && node && node.level == 1 && istype(node, /obj/machinery/atmospherics/pipe)) - return - else - if(node) - add_underlay(T, node, dir, node.icon_connect_type) - else - add_underlay(T,, dir) - -/obj/machinery/atmospherics/component/unary/vent_pump/hide() - update_icon() - update_underlays() - -/obj/machinery/atmospherics/component/unary/vent_pump/proc/can_pump() - if(machine_stat & (NOPOWER|BROKEN)) - //soundloop.stop() - return 0 - if(!use_power) - //soundloop.stop() - return 0 - if(welded) - //soundloop.stop() - return 0 - //soundloop.start() - return 1 - -/obj/machinery/atmospherics/component/unary/vent_pump/process(delta_time) - ..() - - if (hibernate) - return 1 - - if (!node) - update_use_power(USE_POWER_OFF) - if(!can_pump()) - return 0 - - var/datum/gas_mixture/environment = return_air() - - var/power_draw = -1 - - //Figure out the target pressure difference - var/pressure_delta = get_pressure_delta(environment) - //src.visible_message("DEBUG >>> [src]: pressure_delta = [pressure_delta]") - - if((environment.temperature || air_contents.temperature) && pressure_delta > 0.5) - if(pump_direction) //internal -> external - var/transfer_moles = calculate_transfer_moles(air_contents, environment, pressure_delta) - power_draw = pump_gas(src, air_contents, environment, transfer_moles, power_rating) - else //external -> internal - var/transfer_moles = calculate_transfer_moles(environment, air_contents, pressure_delta, (network)? network.volume : 0) - - //limit flow rate from turfs - transfer_moles = min(transfer_moles, environment.total_moles*air_contents.volume/environment.volume) //group_multiplier gets divided out here - power_draw = pump_gas(src, environment, air_contents, transfer_moles, power_rating) - - - if (power_draw >= 0) - last_power_draw = power_draw - use_power(power_draw) - if(network) - network.update = 1 - - return 1 - -/obj/machinery/atmospherics/component/unary/vent_pump/proc/get_pressure_delta(datum/gas_mixture/environment) - var/pressure_delta = DEFAULT_PRESSURE_DELTA - var/environment_pressure = environment.return_pressure() - - if(pump_direction) //internal -> external - if(pressure_checks & PRESSURE_CHECK_EXTERNAL) - pressure_delta = min(pressure_delta, external_pressure_bound - environment_pressure) //increasing the pressure here - if(pressure_checks & PRESSURE_CHECK_INTERNAL) - pressure_delta = min(pressure_delta, air_contents.return_pressure() - internal_pressure_bound) //decreasing the pressure here - else //external -> internal - if(pressure_checks & PRESSURE_CHECK_EXTERNAL) - pressure_delta = min(pressure_delta, environment_pressure - external_pressure_bound) //decreasing the pressure here - if(pressure_checks & PRESSURE_CHECK_INTERNAL) - pressure_delta = min(pressure_delta, internal_pressure_bound - air_contents.return_pressure()) //increasing the pressure here - - return pressure_delta - -/obj/machinery/atmospherics/component/unary/vent_pump/proc/broadcast_status() - if(!radio_connection) - return 0 - - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.source = src - - signal.data = list( - "area" = src.area_uid, - "tag" = src.id_tag, - "device" = "AVP", - "power" = use_power, - "direction" = pump_direction?("release"):("siphon"), - "checks" = pressure_checks, - "internal" = internal_pressure_bound, - "external" = external_pressure_bound, - "timestamp" = world.time, - "sigtype" = "status", - "power_draw" = last_power_draw, - "flow_rate" = last_flow_rate, - ) - - if(!initial_loc.air_vent_names[id_tag]) - var/new_name = "[initial_loc.name] Vent Pump #[initial_loc.air_vent_names.len+1]" - initial_loc.air_vent_names[id_tag] = new_name - src.name = new_name - initial_loc.air_vent_info[id_tag] = signal.data - - radio_connection.post_signal(src, signal, radio_filter_out) - - return 1 - - -/obj/machinery/atmospherics/component/unary/vent_pump/atmos_init() - ..() - - //some vents work his own special way - radio_filter_in = frequency==1439?(RADIO_FROM_AIRALARM):null - radio_filter_out = frequency==1439?(RADIO_TO_AIRALARM):null - if(frequency) - radio_connection = register_radio(src, frequency, frequency, radio_filter_in) - src.broadcast_status() - -/obj/machinery/atmospherics/component/unary/vent_pump/receive_signal(datum/signal/signal) - if(machine_stat & (NOPOWER|BROKEN)) - return - - hibernate = 0 - - //log_admin("DEBUG \[[world.timeofday]\]: /obj/machinery/atmospherics/component/unary/vent_pump/receive_signal([signal.debug_print()])") - if(!signal.data["tag"] || (signal.data["tag"] != id_tag) || (signal.data["sigtype"]!="command")) - return 0 - - if(signal.data["purge"] != null) - pressure_checks &= ~1 - pump_direction = 0 - - if(signal.data["stabalize"] != null) - pressure_checks |= 1 - pump_direction = 1 - - if(signal.data["power"] != null) - update_use_power(text2num(signal.data["power"])) - - if(signal.data["power_toggle"] != null) - update_use_power(!use_power) - - if(signal.data["checks"] != null) - if (signal.data["checks"] == "default") - pressure_checks = pressure_checks_default - else - pressure_checks = text2num(signal.data["checks"]) - - if(signal.data["checks_toggle"] != null) - pressure_checks = (pressure_checks?0:3) - - if(signal.data["direction"] != null) - pump_direction = text2num(signal.data["direction"]) - - if(signal.data["set_internal_pressure"] != null) - if (signal.data["set_internal_pressure"] == "default") - internal_pressure_bound = internal_pressure_bound_default - else - internal_pressure_bound = between( - 0, - text2num(signal.data["set_internal_pressure"]), - ONE_ATMOSPHERE*50 - ) - - if(signal.data["set_external_pressure"] != null) - if (signal.data["set_external_pressure"] == "default") - external_pressure_bound = external_pressure_bound_default - else - external_pressure_bound = between( - 0, - text2num(signal.data["set_external_pressure"]), - ONE_ATMOSPHERE*50 - ) - - if(signal.data["adjust_internal_pressure"] != null) - internal_pressure_bound = between( - 0, - internal_pressure_bound + text2num(signal.data["adjust_internal_pressure"]), - ONE_ATMOSPHERE*50 - ) - - if(signal.data["adjust_external_pressure"] != null) - - - external_pressure_bound = between( - 0, - external_pressure_bound + text2num(signal.data["adjust_external_pressure"]), - ONE_ATMOSPHERE*50 - ) - - if("reset_external_pressure" in signal.data) - external_pressure_bound = ONE_ATMOSPHERE - - if("reset_internal_pressure" in signal.data) - internal_pressure_bound = 0 - - if(signal.data["init"] != null) - name = signal.data["init"] - return - - if(signal.data["status"] != null) - spawn(2) - broadcast_status() - return //do not update_icon - - //log_admin("DEBUG \[[world.timeofday]\]: vent_pump/receive_signal: unknown command \"[signal.data["command"]]\"\n[signal.debug_print()]") - spawn(2) - broadcast_status() - update_icon() - return - -/obj/machinery/atmospherics/component/unary/vent_pump/attackby(obj/item/W, mob/user) - if(istype(W, /obj/item/weldingtool)) - var/obj/item/weldingtool/WT = W - if (WT.remove_fuel(0,user)) - to_chat(user, "Now welding the vent.") - if(do_after(user, 20 * WT.tool_speed)) - if(!src || !WT.isOn()) return - playsound(src.loc, WT.tool_sound, 50, 1) - if(!welded) - user.visible_message("\The [user] welds the vent shut.", "You weld the vent shut.", "You hear welding.") - welded = 1 - update_icon() - else - user.visible_message("[user] unwelds the vent.", "You unweld the vent.", "You hear welding.") - welded = 0 - update_icon() - else - to_chat(user, "The welding tool needs to be on to start this task.") - else - to_chat(user, "You need more welding fuel to complete this task.") - return 1 - else - ..() - -/obj/machinery/atmospherics/component/unary/vent_pump/examine(mob/user, dist) - . = ..() - . += "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s; [round(last_power_draw)] W" - if(welded) - . += "It seems welded shut." - -/obj/machinery/atmospherics/component/unary/vent_pump/power_change() - var/old_stat = machine_stat - ..() - if(old_stat != machine_stat) - update_icon() - -/obj/machinery/atmospherics/component/unary/vent_pump/attackby(obj/item/W, mob/user) - if (!W.is_wrench()) - return ..() - if (!(machine_stat & NOPOWER) && use_power) - to_chat(user, "You cannot unwrench \the [src], turn it off first.") - return 1 - var/turf/T = src.loc - if (node && node.level==1 && isturf(T) && !T.is_plating()) - to_chat(user, "You must remove the plating first.") - return 1 - if(unsafe_pressure()) - to_chat(user, "You feel a gust of air blowing in your face as you try to unwrench [src]. Maybe you should reconsider..") - add_fingerprint(user) - playsound(src, W.tool_sound, 50, 1) - to_chat(user, "You begin to unfasten \the [src]...") - if (do_after(user, 40 * W.tool_speed)) - user.visible_message( \ - "\The [user] unfastens \the [src].", \ - "You have unfastened \the [src].", \ - "You hear a ratchet.") - deconstruct() - #undef DEFAULT_PRESSURE_DELTA - -#undef EXTERNAL_PRESSURE_BOUND -#undef INTERNAL_PRESSURE_BOUND -#undef PRESSURE_CHECKS - -#undef PRESSURE_CHECK_EXTERNAL -#undef PRESSURE_CHECK_INTERNAL diff --git a/code/modules/atmospherics/machinery/components/unary/vent_scrubber.dm b/code/modules/atmospherics/machinery/components/unary/vent_scrubber.dm index a715ca559ba..da062da22b7 100644 --- a/code/modules/atmospherics/machinery/components/unary/vent_scrubber.dm +++ b/code/modules/atmospherics/machinery/components/unary/vent_scrubber.dm @@ -1,11 +1,11 @@ +// todo: better interface logging /obj/machinery/atmospherics/component/unary/vent_scrubber + name = "Air Scrubber" + desc = "Has a valve and pump attached to it" icon = 'icons/atmos/vent_scrubber.dmi' icon_state = "map_scrubber_off" pipe_state = "scrubber" - name = "Air Scrubber" - desc = "Has a valve and pump attached to it" - use_power = USE_POWER_OFF idle_power_usage = 150 //internal circuitry, friction losses and stuff power_rating = 7500 //7500 W ~ 10 HP @@ -13,56 +13,89 @@ level = 1 - var/area/initial_loc + hijack_require_exposed = TRUE + default_multitool_hijack = TRUE + tgui_interface = "AtmosVentScrubber" + atmos_component_ui_flags = NONE + + /// registered area + var/area/registered_area + /// auto name by area + var/name_from_area = TRUE + /// show on area + var/controllable_from_alarm = TRUE + /// cares about siphoning/filling/alarm modes + var/environmental = TRUE + + /// filter ids. both scrub_ids and scrub_groups must be set to not automatically use default. + var/list/scrub_ids + /// filter groups. both scrub_ids and scrub_groups must be set to not automatically use default. + var/list/scrub_groups + /// filter defaults - either an enum for SCRUBBER_DEFAULT_* or a list of ids and groups. + var/scrub_default = SCRUBBER_DEFAULT_STATION + /// siphoning? + var/siphoning + /// siphoning default + var/siphoning_default = FALSE + /// high power? + var/expanded + /// high power default + var/expanded_default = FALSE + + /// default scrub volume + var/scrub_volume = 2500 + /// additional power when expanded + var/expanded_power = 7500 + /// additional volume when expanded + var/expanded_scrub = 1250 + /// mole boost + var/scrub_boost = 50 + + var/area_uid var/id_tag = null + var/frequency = 1439 var/datum/radio_frequency/radio_connection var/hibernate = 0 //Do we even process? - var/scrubbing = 1 //0 = siphoning, 1 = scrubbing - var/list/scrubbing_gas = list(/datum/gas/carbon_dioxide, /datum/gas/phoron) - var/panic = 0 //is this scrubber panicked? - - var/area_uid var/radio_filter_out var/radio_filter_in -/obj/machinery/atmospherics/component/unary/vent_scrubber/on - use_power = USE_POWER_IDLE - icon_state = "map_scrubber_on" - -/obj/machinery/atmospherics/component/unary/vent_scrubber/on/welded - welded = 1 - - /obj/machinery/atmospherics/component/unary/vent_scrubber/Initialize(mapload) . = ..() + if(isnull(siphoning)) + siphoning = siphoning_default + if(isnull(expanded)) + expanded = expanded_default + if(isnull(scrub_ids) || isnull(scrub_groups)) + reset_scrubbing_to_default() air_contents.volume = ATMOS_DEFAULT_VOLUME_FILTER - for(var/i in scrubbing_gas) - if(!ispath(i)) - scrubbing_gas -= i - var/path = gas_id2path(i) - if(!path) - stack_trace("Invalid gasid [i]") - else - scrubbing_gas += path - icon = null - initial_loc = get_area(loc) - area_uid = initial_loc.uid + registered_area = get_area(loc) + area_uid = registered_area.uid + registered_area?.register_scrubber(src) if (!id_tag) assign_uid() id_tag = num2text(uid) /obj/machinery/atmospherics/component/unary/vent_scrubber/Destroy() unregister_radio(src, frequency) - if(initial_loc) - initial_loc.air_scrub_info -= id_tag - initial_loc.air_scrub_names -= id_tag + registered_area?.unregister_scrubber(src) return ..() +/obj/machinery/atmospherics/component/unary/vent_scrubber/proc/reset_scrubbing_to_default() + scrub_ids = list() + scrub_groups = NONE + var/list/default = SSair.scrubber_defaults[scrub_default] + if(isnull(default)) + return + for(var/key in default) + if(istext(key)) + scrub_ids += key + else if(isnum(key)) + scrub_groups |= key /obj/machinery/atmospherics/component/unary/vent_scrubber/update_icon(safety = 0) if(!check_icon_cache()) @@ -81,7 +114,7 @@ else if(!powered()) scrubber_icon += "off" else - scrubber_icon += "[use_power ? "[scrubbing ? "on" : "in"]" : "off"]" + scrubber_icon += "[on ? "[siphoning ? "in" : "on"]" : "off"]" add_overlay(icon_manager.get_atmos_icon("device", , , scrubber_icon)) @@ -116,22 +149,16 @@ "tag" = id_tag, "device" = "AScr", "timestamp" = world.time, - "power" = use_power, - "scrubbing" = scrubbing, - "panic" = panic, - "filter_o2" = (/datum/gas/oxygen in scrubbing_gas), - "filter_n2" = (/datum/gas/nitrogen in scrubbing_gas), - "filter_co2" = (/datum/gas/carbon_dioxide in scrubbing_gas), - "filter_phoron" = (/datum/gas/phoron in scrubbing_gas), - "filter_n2o" = (/datum/gas/nitrous_oxide in scrubbing_gas), - "filter_fuel" = (/datum/gas/volatile_fuel in scrubbing_gas), - "sigtype" = "status" + "power" = on, + "scrubbing" = !siphoning, // legacy + "siphoning" = siphoning, + "expanded" = expanded, + "panic" = siphoning, // legacy + "scrub_ids" = scrub_ids, + "scrub_groups" = scrub_groups, + "sigtype" = "status", ) - if(!initial_loc.air_scrub_names[id_tag]) - var/new_name = "[initial_loc.name] Air Scrubber #[initial_loc.air_scrub_names.len+1]" - initial_loc.air_scrub_names[id_tag] = new_name - src.name = new_name - initial_loc.air_scrub_info[id_tag] = signal.data + radio_connection.post_signal(src, signal, radio_filter_out) return 1 @@ -148,7 +175,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/proc/can_scrub() if(machine_stat & (NOPOWER|BROKEN)) return 0 - if(!use_power) + if(!on) return 0 if(welded) return 0 @@ -160,31 +187,23 @@ if (hibernate) return 1 - if (!node) - update_use_power(USE_POWER_OFF) - //broadcast_status() + set_on(FALSE) if(!can_scrub()) return 0 var/datum/gas_mixture/environment = loc.return_air() + var/using_power = expanded? expanded_power + power_rating : power_rating - var/power_draw = -1 - if(scrubbing) - //limit flow rate from turfs - var/transfer_moles = min(environment.total_moles, environment.total_moles*MAX_SCRUBBER_FLOWRATE/environment.volume) //group_multiplier gets divided out here + if(siphoning) + power_current = xgm_pump_gas(environment, air_contents, limit_power = using_power) + else + var/using_volume = expanded? expanded_scrub + scrub_volume : scrub_volume + power_current = xgm_scrub_gas_volume(environment, air_contents, scrub_ids, scrub_groups, using_volume, using_power, scrub_boost) - power_draw = scrub_gas(src, scrubbing_gas, environment, air_contents, transfer_moles, power_rating) - else //Just siphon all air - //limit flow rate from turfs - var/transfer_moles = min(environment.total_moles, environment.total_moles*MAX_SIPHON_FLOWRATE/environment.volume) //group_multiplier gets divided out here - - power_draw = pump_gas(src, environment, air_contents, transfer_moles, power_rating) - - - if (power_draw >= 0) - last_power_draw = power_draw - use_power(power_draw) + if (power_current >= 0) + last_power_draw_legacy = power_current + use_power(power_current) if(network) network.update = 1 @@ -195,90 +214,6 @@ update_icon() update_underlays() -/obj/machinery/atmospherics/component/unary/vent_scrubber/receive_signal(datum/signal/signal) - if(machine_stat & (NOPOWER|BROKEN)) - return - if(!signal.data["tag"] || (signal.data["tag"] != id_tag) || (signal.data["sigtype"]!="command")) - return 0 - - if(signal.data["power"] != null) - update_use_power(text2num(signal.data["power"])) - if(signal.data["power_toggle"] != null) - update_use_power(!use_power) - - if(signal.data["panic_siphon"]) //must be before if("scrubbing" thing - panic = text2num(signal.data["panic_siphon"]) - if(panic) - update_use_power(USE_POWER_IDLE) - scrubbing = 0 - else - scrubbing = 1 - if(signal.data["toggle_panic_siphon"] != null) - panic = !panic - if(panic) - update_use_power(USE_POWER_IDLE) - scrubbing = 0 - else - scrubbing = 1 - - if(signal.data["scrubbing"] != null) - scrubbing = text2num(signal.data["scrubbing"]) - if(scrubbing) - panic = 0 - if(signal.data["toggle_scrubbing"]) - scrubbing = !scrubbing - if(scrubbing) - panic = 0 - - var/list/toggle = list() - - if(!isnull(signal.data["o2_scrub"]) && text2num(signal.data["o2_scrub"]) != (/datum/gas/oxygen in scrubbing_gas)) - toggle += /datum/gas/oxygen - else if(signal.data["toggle_o2_scrub"]) - toggle += /datum/gas/oxygen - - if(!isnull(signal.data["n2_scrub"]) && text2num(signal.data["n2_scrub"]) != (/datum/gas/nitrogen in scrubbing_gas)) - toggle += /datum/gas/nitrogen - else if(signal.data["toggle_n2_scrub"]) - toggle += /datum/gas/nitrogen - - if(!isnull(signal.data["co2_scrub"]) && text2num(signal.data["co2_scrub"]) != (/datum/gas/carbon_dioxide in scrubbing_gas)) - toggle += /datum/gas/carbon_dioxide - else if(signal.data["toggle_co2_scrub"]) - toggle += /datum/gas/carbon_dioxide - - if(!isnull(signal.data["tox_scrub"]) && text2num(signal.data["tox_scrub"]) != (/datum/gas/phoron in scrubbing_gas)) - toggle += /datum/gas/phoron - else if(signal.data["toggle_tox_scrub"]) - toggle += /datum/gas/phoron - - if(!isnull(signal.data["n2o_scrub"]) && text2num(signal.data["n2o_scrub"]) != (/datum/gas/nitrous_oxide in scrubbing_gas)) - toggle += /datum/gas/nitrous_oxide - else if(signal.data["toggle_n2o_scrub"]) - toggle += /datum/gas/nitrous_oxide - - if(!isnull(signal.data["fuel_scrub"]) && text2num(signal.data["fuel_scrub"]) != (/datum/gas/volatile_fuel in scrubbing_gas)) - toggle += /datum/gas/volatile_fuel - else if(signal.data["toggle_fuel_scrub"]) - toggle += /datum/gas/volatile_fuel - - scrubbing_gas ^= toggle - - if(signal.data["init"] != null) - name = signal.data["init"] - return - - if(signal.data["status"] != null) - spawn(2) - broadcast_status() - return //do not update_icon - -// log_admin("DEBUG \[[world.timeofday]\]: vent_scrubber/receive_signal: unknown command \"[signal.data["command"]]\"\n[signal.debug_print()]") - spawn(2) - broadcast_status() - update_icon() - return - /obj/machinery/atmospherics/component/unary/vent_scrubber/power_change() var/old_stat = machine_stat ..() @@ -288,7 +223,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/attackby(var/obj/item/W as obj, var/mob/user as mob) if (!W.is_wrench()) return ..() - if (!(machine_stat & NOPOWER) && use_power) + if (!(machine_stat & NOPOWER) && on) to_chat(user, "You cannot unwrench \the [src], turn it off first.") return 1 var/turf/T = src.loc @@ -309,7 +244,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/examine(mob/user, dist) . = ..() - . += "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s; [round(last_power_draw)] W" + . += "A small gauge in the corner reads [round(last_flow_rate_legacy, 0.1)] L/s; [round(last_power_draw_legacy)] W" if(welded) . += "It seems welded shut." @@ -338,3 +273,175 @@ return 1 else ..() + +/** + * encodes data for AtmosScrubberControl interface component + */ +/obj/machinery/atmospherics/component/unary/vent_scrubber/proc/ui_scrubber_data() + return list( + "siphon" = siphoning, + "expand" = expanded, + "scrubIDs" = scrub_ids, + "scrubGroups" = scrub_groups, + "power" = on, + ) + +/obj/machinery/atmospherics/component/unary/vent_scrubber/ui_act(action, list/params, datum/tgui/ui) + . = ..() + if(.) + return + var/target = params["target"] + switch(action) + if("power") + set_on(!on) + return TRUE + if("expand") + //! warning: legacy + expanded = !expanded + update_icon() + return TRUE + if("siphon") + //! warning: legacy + siphoning = !siphoning + update_icon() + return TRUE + if("id") + if(!global.gas_data.gas_id_filterable(target)) + return TRUE + scrub_ids ^= target + return TRUE + if("group") + // the << 0 gets rid of any floating points incase someone somehow puts in a non bitfield + target = (text2num(target) << 0) + if(!global.gas_data.gas_groups_all_filterable(target)) + return TRUE + scrub_groups ^= target + return TRUE + +/obj/machinery/atmospherics/component/unary/vent_scrubber/ui_data(mob/user, datum/tgui/ui, datum/ui_state/state) + . = ..() + .["state"] = ui_scrubber_data() + +/obj/machinery/atmospherics/component/unary/vent_scrubber/ui_static_data(mob/user, datum/tgui/ui, datum/ui_state/state) + . = ..() + .["gasContext"] = global.gas_data.tgui_gas_context() + .["name"] = name + +//* Signal Handling - Order of application is same as these comments. +/// environmental: void. set to ignore the signal if we're not an environmental vent. +/// hard_reset: resets everything to default. +/// power: 0 | 1. sets us to be on/off. overrides power_toggle. +/// power_toggle: void. toggles us on/off. +/// siphon: 0 | 1 | "default". sets if we're siphoning. overrides siphon_toggle. +/// siphon_toggle: void. toggles siphoning on/off. +/// expand: 0 | 1 | "default". sets if we're expanded / high powered mode. overrides expand_toggle. +/// expand_toggle: void. sets if we're in high powered mode. +/// scrub_reset: resets scrubbing to default. +/// scrub_ids: list[string]. sets scrub ids. overrides scrub_ids_toggle. +/// scrub_ids_toggle: list[string]. toggles scrubbing gas ids. +/// scrub_groups: bitfield. sets groups to scrub. overrides scrub_groups_toggle. +/// scrub_groups_toggle: bitfield. toggles scrubbing these groups. + +/obj/machinery/atmospherics/component/unary/vent_scrubber/receive_signal(datum/signal/signal) + if(machine_stat & (NOPOWER|BROKEN)) + return + if(!signal.data["tag"] || (signal.data["tag"] != id_tag) || (signal.data["sigtype"]!="command")) + return 0 + + if(!isnull(signal.data["environmental"]) && environmental) + return FALSE + + if(!isnull(signal.data["hard_reset"])) + expanded = expanded_default + siphoning = siphoning_default + reset_scrubbing_to_default() + if(!isnull(signal.data["power"])) + set_on(!!text2num(signal.data["power"])) + else if(!isnull(signal.data["power_toggle"])) + set_on(!on) + if(!isnull(signal.data["siphon"])) + siphoning = signal.data["siphon"] == "default"? siphoning_default : !!text2num(signal.data["siphon"]) + else if(!isnull(signal.data["siphon_toggle"])) + siphoning = !siphoning + if(!isnull(signal.data["expand"])) + expanded = signal.data["expand"] == "default"? expanded_default : !!text2num(signal.data["expand"]) + else if(!isnull(signal.data["expand_toggle"])) + expanded = !expanded + if(!isnull(signal.data["scrub_reset"])) + reset_scrubbing_to_default() + if(!isnull(signal.data["scrub_ids"])) + var/list/target_ids = signal.data["scrub_ids"] + if(islist(target_ids)) + if(target_ids.len > SCRUBBER_MAX_GAS_IDS) + target_ids.len = SCRUBBER_MAX_GAS_IDS + for(var/key in target_ids) + if(!global.gas_data.gas_id_filterable(key)) + target_ids -= key + scrub_ids = target_ids + else if(!isnull(signal.data["scrub_ids_toggle"])) + var/list/target_ids = signal.data["scrub_ids_toggle"] + if(islist(target_ids)) + if(target_ids.len > SCRUBBER_MAX_GAS_IDS * 2) + target_ids.len = SCRUBBER_MAX_GAS_IDS * 2 + for(var/key in target_ids) + if(!global.gas_data.gas_id_filterable(key)) + target_ids -= key + scrub_ids ^= target_ids + if(scrub_ids.len > SCRUBBER_MAX_GAS_IDS) + scrub_ids.len = SCRUBBER_MAX_GAS_IDS + if(!isnull(signal.data["scrub_groups"])) + scrub_groups = (GAS_GROUPS_FILTERABLE & (text2num(signal.data["scrub_groups"]))) + else if(!isnull(signal.data["scrub_groups_toggle"])) + scrub_groups ^= (GAS_GROUPS_FILTERABLE & (text2num(signal.data["scrub_groups_toggle"]))) + + //! legacy below + + if(signal.data["status"] != null) + spawn(2) + broadcast_status() + return //do not update_icon + +// log_admin("DEBUG \[[world.timeofday]\]: vent_scrubber/receive_signal: unknown command \"[signal.data["command"]]\"\n[signal.debug_print()]") + spawn(2) + broadcast_status() + update_icon() + +//* Subtypes + +/obj/machinery/atmospherics/component/unary/vent_scrubber/on + on = TRUE + icon_state = "map_scrubber_on" + +/obj/machinery/atmospherics/component/unary/vent_scrubber/on/welded + welded = 1 + +/obj/machinery/atmospherics/component/unary/vent_scrubber/retro + icon_state = "map_scrubber_off" /// Will get replaced on mapload + +/obj/machinery/atmospherics/component/unary/vent_scrubber/retro/on + on = TRUE + icon_state = "map_scrubber_on" + +/obj/machinery/atmospherics/component/unary/vent_scrubber/retro/on/welded + welded = 1 + +/obj/machinery/atmospherics/component/unary/vent_scrubber/retro/update_icon(safety = 0) + if(!check_icon_cache()) + return + + cut_overlays() + + var/scrubber_icon = "scrubber" + + var/turf/T = get_turf(src) + if(!istype(T)) + return + + if(welded) + scrubber_icon += "retro_weld" + else if(!powered()) + scrubber_icon += "retro_off" + else + scrubber_icon += "[use_power ? "[siphoning ? "retro_in" : "retro_on"]" : "retro_off"]" + + add_overlay(icon_manager.get_atmos_icon("device", , , scrubber_icon)) diff --git a/code/modules/atmospherics/machinery/machinery.dm b/code/modules/atmospherics/machinery/machinery.dm index dfe8bf9a638..0526cc978f1 100644 --- a/code/modules/atmospherics/machinery/machinery.dm +++ b/code/modules/atmospherics/machinery/machinery.dm @@ -25,8 +25,6 @@ Pipelines + Other Objects -> Pipe network ///The color of the pipe var/pipe_color - ///The maximum amount of power the machine can use to do work, affects how powerful the machine is, in Watts - var/power_rating ///The flags of the pipe/component (PIPING_ALL_LAYER | PIPING_ONE_PER_TURF | PIPING_DEFAULT_LAYER_ONLY | PIPING_CARDINAL_AUTONORMALIZE) var/pipe_flags = PIPING_DEFAULT_LAYER_ONLY ///What pipe layer can this connect to. @@ -48,6 +46,9 @@ Pipelines + Other Objects -> Pipe network var/obj/machinery/atmospherics/node1 var/obj/machinery/atmospherics/node2 + var/last_flow_rate_legacy = 0 + var/last_power_draw_legacy = 0 + /obj/machinery/atmospherics/Initialize(mapload, newdir) . = ..() if(!icon_manager) @@ -91,8 +92,8 @@ Pipelines + Other Objects -> Pipe network /obj/machinery/atmospherics/proc/check_connectable(obj/machinery/atmospherics/target) return (src.connect_types & target.connect_types) -/obj/machinery/atmospherics/attackby(atom/A, mob/user as mob) - if(istype(A, /obj/item/pipe_painter)) +/obj/machinery/atmospherics/attackby(obj/item/I, mob/living/user, list/params, clickchain_flags, damage_multiplier) + if(istype(I, /obj/item/pipe_painter)) return ..() @@ -131,8 +132,8 @@ Pipelines + Other Objects -> Pipe network return node.pipe_color /obj/machinery/atmospherics/process(delta_time) - last_flow_rate = 0 - last_power_draw = 0 + last_flow_rate_legacy = 0 + last_power_draw_legacy = 0 build_network() @@ -164,9 +165,6 @@ Pipelines + Other Objects -> Pipe network /obj/machinery/atmospherics/proc/disconnect(obj/machinery/atmospherics/reference) -/obj/machinery/atmospherics/update_icon() - return null - /obj/machinery/atmospherics/proc/unsafe_pressure() var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() @@ -241,3 +239,19 @@ Pipelines + Other Objects -> Pipe network layer = PIPE_LAYER else reset_plane_and_layer() + +// todo: refactor + +/obj/machinery/atmospherics/is_hidden_underfloor() + var/turf/T = loc + return istype(T) && (level == 1) && !T.is_plating() + +/obj/machinery/atmospherics/should_hide_underfloor() + return level == 1 + +/** + * currently unimplemented + * call when our internal settings change to push changes to relevant uis. + */ +/obj/machinery/atmospherics/proc/ui_settings_updated() + // todo: implement diff --git a/code/game/machinery/atmoalter/meter.dm b/code/modules/atmospherics/machinery/meter.dm similarity index 100% rename from code/game/machinery/atmoalter/meter.dm rename to code/modules/atmospherics/machinery/meter.dm diff --git a/code/modules/atmospherics/machinery/pipes/tank.dm b/code/modules/atmospherics/machinery/pipes/tank.dm index 36891d524bc..928e23754e5 100644 --- a/code/modules/atmospherics/machinery/pipes/tank.dm +++ b/code/modules/atmospherics/machinery/pipes/tank.dm @@ -71,8 +71,8 @@ if(istype(W, /obj/item/pipe_painter)) return - if(istype(W, /obj/item/analyzer) && in_range(user, src)) - var/obj/item/analyzer/A = W + if(istype(W, /obj/item/atmos_analyzer) && in_range(user, src)) + var/obj/item/atmos_analyzer/A = W A.analyze_gases(src, user) /obj/machinery/atmospherics/pipe/tank/air @@ -84,8 +84,8 @@ air_temporary.volume = volume air_temporary.temperature = T20C - air_temporary.adjust_multi(/datum/gas/oxygen, (start_pressure*O2STANDARD)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature), \ - /datum/gas/nitrogen,(start_pressure*N2STANDARD)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature)) + air_temporary.adjust_multi(GAS_ID_OXYGEN, (start_pressure*O2STANDARD)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature), \ + GAS_ID_NITROGEN,(start_pressure*N2STANDARD)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature)) . = ..() icon_state = "air" @@ -99,7 +99,7 @@ air_temporary.volume = volume air_temporary.temperature = T20C - air_temporary.adjust_gas(/datum/gas/oxygen, (start_pressure)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature)) + air_temporary.adjust_gas(GAS_ID_OXYGEN, (start_pressure)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature)) . = ..() icon_state = "o2" @@ -113,7 +113,7 @@ air_temporary.volume = volume air_temporary.temperature = T20C - air_temporary.adjust_gas(/datum/gas/nitrogen, (start_pressure)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature)) + air_temporary.adjust_gas(GAS_ID_NITROGEN, (start_pressure)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature)) . = ..() icon_state = "n2" @@ -127,7 +127,7 @@ air_temporary.volume = volume air_temporary.temperature = T20C - air_temporary.adjust_gas(/datum/gas/carbon_dioxide, (start_pressure)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature)) + air_temporary.adjust_gas(GAS_ID_CARBON_DIOXIDE, (start_pressure)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature)) . = ..() icon_state = "co2" @@ -142,7 +142,7 @@ air_temporary.volume = volume air_temporary.temperature = T20C - air_temporary.adjust_gas(/datum/gas/phoron, (start_pressure)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature)) + air_temporary.adjust_gas(GAS_ID_PHORON, (start_pressure)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature)) . = ..() icon_state = "phoron" @@ -156,7 +156,7 @@ air_temporary.volume = volume air_temporary.temperature = T0C - air_temporary.adjust_gas(/datum/gas/nitrous_oxide, (start_pressure)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature)) + air_temporary.adjust_gas(GAS_ID_NITROUS_OXIDE, (start_pressure)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature)) . = ..() icon_state = "n2o" @@ -171,7 +171,7 @@ air_temporary.volume = volume air_temporary.temperature = T20C - air_temporary.adjust_gas(/datum/gas/chlorine, (start_pressure)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature)) + air_temporary.adjust_gas(GAS_ID_CHLORINE, (start_pressure)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature)) . = ..() icon_state = "hazard" diff --git a/code/game/machinery/atmoalter/area_atmos_computer.dm b/code/modules/atmospherics/machinery/portable/area_atmos_computer.dm similarity index 97% rename from code/game/machinery/atmoalter/area_atmos_computer.dm rename to code/modules/atmospherics/machinery/portable/area_atmos_computer.dm index ab76632a49e..e4ea08ae3da 100644 --- a/code/game/machinery/atmoalter/area_atmos_computer.dm +++ b/code/modules/atmospherics/machinery/portable/area_atmos_computer.dm @@ -1,3 +1,5 @@ +// todo: wrong folder? + /obj/machinery/computer/area_atmos name = "Area Air Control" desc = "A computer used to control the stationary scrubbers and pumps in the area." @@ -44,8 +46,8 @@ "name" = scrubber.name, "on" = scrubber.on, "pressure" = scrubber.air_contents.return_pressure(), - "flow_rate" = scrubber.last_flow_rate, - "load" = scrubber.last_power_draw, + "flow_rate" = scrubber.last_flow_rate_legacy, + "load" = scrubber.last_power_draw_legacy, "area" = get_area(scrubber), ))) diff --git a/code/game/machinery/atmoalter/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm similarity index 89% rename from code/game/machinery/atmoalter/canister.dm rename to code/modules/atmospherics/machinery/portable/canister.dm index 402cc3c211e..5aa036fced3 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -292,7 +292,7 @@ update_flag ..() /obj/machinery/portable_atmospherics/canister/attackby(var/obj/item/W as obj, var/mob/user as mob) - if(!W.is_wrench() && !istype(W, /obj/item/tank) && !istype(W, /obj/item/analyzer) && !istype(W, /obj/item/pda)) + if(!W.is_wrench() && !istype(W, /obj/item/tank) && !istype(W, /obj/item/atmos_analyzer) && !istype(W, /obj/item/pda)) visible_message(SPAN_WARNING("\The [user] hits \the [src] with \a [W]!")) src.health -= W.damage_force healthcheck() @@ -439,109 +439,109 @@ update_flag /obj/machinery/portable_atmospherics/canister/phoron/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/phoron, MolesForPressure()) + src.air_contents.adjust_gas(GAS_ID_PHORON, MolesForPressure()) src.update_icon() /obj/machinery/portable_atmospherics/canister/oxygen/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/oxygen, MolesForPressure()) + src.air_contents.adjust_gas(GAS_ID_OXYGEN, MolesForPressure()) src.update_icon() /obj/machinery/portable_atmospherics/canister/oxygen/prechilled/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/oxygen, MolesForPressure()) + src.air_contents.adjust_gas(GAS_ID_OXYGEN, MolesForPressure()) src.air_contents.temperature = 80 src.update_icon() /obj/machinery/portable_atmospherics/canister/nitrous_oxide/Initialize(mapload) . = ..() - air_contents.adjust_gas(/datum/gas/nitrous_oxide, MolesForPressure()) + air_contents.adjust_gas(GAS_ID_NITROUS_OXIDE, MolesForPressure()) src.update_icon() /obj/machinery/portable_atmospherics/canister/helium/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/helium, MolesForPressure()) + src.air_contents.adjust_gas(GAS_ID_HELIUM, MolesForPressure()) src.update_icon() /obj/machinery/portable_atmospherics/canister/carbon_monoxide/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/carbon_monoxide, MolesForPressure()) + src.air_contents.adjust_gas(GAS_ID_CARBON_MONOXIDE, MolesForPressure()) src.update_icon() /obj/machinery/portable_atmospherics/canister/methyl_bromide/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/methyl_bromide, MolesForPressure()) + src.air_contents.adjust_gas(GAS_ID_METHYL_BROMIDE, MolesForPressure()) src.update_icon() /obj/machinery/portable_atmospherics/canister/nitrodioxide/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/nitrodioxide, MolesForPressure()) + src.air_contents.adjust_gas(GAS_ID_NITROGEN_DIOXIDE, MolesForPressure()) src.update_icon() /obj/machinery/portable_atmospherics/canister/nitricoxide/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/nitricoxide, MolesForPressure()) + src.air_contents.adjust_gas(GAS_ID_NITRIC_OXIDE, MolesForPressure()) src.update_icon() /obj/machinery/portable_atmospherics/canister/methane/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/methane, MolesForPressure()) + src.air_contents.adjust_gas(GAS_ID_METHANE, MolesForPressure()) src.update_icon() /obj/machinery/portable_atmospherics/canister/argon/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/argon, MolesForPressure()) + src.air_contents.adjust_gas(GAS_ID_ARGON, MolesForPressure()) src.update_icon() /obj/machinery/portable_atmospherics/canister/krypton/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/krypton, MolesForPressure()) + src.air_contents.adjust_gas(GAS_ID_KRYPTON, MolesForPressure()) src.update_icon() /obj/machinery/portable_atmospherics/canister/neon/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/neon, MolesForPressure()) + src.air_contents.adjust_gas(GAS_ID_NEON, MolesForPressure()) src.update_icon() /obj/machinery/portable_atmospherics/canister/ammonia/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/ammonia, MolesForPressure()) + src.air_contents.adjust_gas(GAS_ID_AMMONIA, MolesForPressure()) src.update_icon() /obj/machinery/portable_atmospherics/canister/xenon/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/xenon, MolesForPressure()) + src.air_contents.adjust_gas(GAS_ID_XENON, MolesForPressure()) src.update_icon() /obj/machinery/portable_atmospherics/canister/chlorine/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/chlorine, MolesForPressure()) + src.air_contents.adjust_gas(GAS_ID_CHLORINE, MolesForPressure()) src.update_icon() /obj/machinery/portable_atmospherics/canister/sulfur_dioxide/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/sulfur_dioxide, MolesForPressure()) + src.air_contents.adjust_gas(GAS_ID_SULFUR_DIOXIDE, MolesForPressure()) src.update_icon() /obj/machinery/portable_atmospherics/canister/hydrogen/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/hydrogen, MolesForPressure()) + src.air_contents.adjust_gas(GAS_ID_HYDROGEN, MolesForPressure()) src.update_icon() /obj/machinery/portable_atmospherics/canister/tritium/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/hydrogen/tritium, MolesForPressure()) + src.air_contents.adjust_gas(GAS_ID_TRITIUM, MolesForPressure()) src.update_icon() /obj/machinery/portable_atmospherics/canister/deuterium/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/hydrogen/deuterium, MolesForPressure()) + src.air_contents.adjust_gas(GAS_ID_DEUTERIUM, MolesForPressure()) src.update_icon() //Dirty way to fill room with gas. However it is a bit easier to do than creating some floor/engine/n2o -rastaf0 /obj/machinery/portable_atmospherics/canister/nitrous_oxide/roomfiller/Initialize(mapload) . = ..() - air_contents.gas[/datum/gas/nitrous_oxide] = 9*4000 + air_contents.gas[GAS_ID_NITROUS_OXIDE] = 9*4000 return INITIALIZE_HINT_LATELOAD /obj/machinery/portable_atmospherics/canister/nitrous_oxide/roomfiller/LateInitialize() @@ -555,35 +555,35 @@ update_flag /obj/machinery/portable_atmospherics/canister/nitrogen/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/nitrogen, MolesForPressure()) + src.air_contents.adjust_gas(GAS_ID_NITROGEN, MolesForPressure()) src.update_icon() /obj/machinery/portable_atmospherics/canister/carbon_dioxide/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/carbon_dioxide, MolesForPressure()) + src.air_contents.adjust_gas(GAS_ID_CARBON_DIOXIDE, MolesForPressure()) src.update_icon() /obj/machinery/portable_atmospherics/canister/air/Initialize(mapload) . = ..() var/list/air_mix = StandardAirMix() - src.air_contents.adjust_multi(/datum/gas/oxygen, air_mix[/datum/gas/oxygen], /datum/gas/nitrogen, air_mix[/datum/gas/nitrogen]) + src.air_contents.adjust_multi(GAS_ID_OXYGEN, air_mix[GAS_ID_OXYGEN], GAS_ID_NITROGEN, air_mix[GAS_ID_NITROGEN]) src.update_icon() //R-UST port // Special types used for engine setup admin verb, they contain double amount of that of normal canister. /obj/machinery/portable_atmospherics/canister/nitrogen/engine_setup/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/nitrogen, MolesForPressure()) + src.air_contents.adjust_gas(GAS_ID_NITROGEN, MolesForPressure()) src.update_icon() /obj/machinery/portable_atmospherics/canister/carbon_dioxide/engine_setup/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/carbon_dioxide, MolesForPressure()) + src.air_contents.adjust_gas(GAS_ID_CARBON_DIOXIDE, MolesForPressure()) src.update_icon() /obj/machinery/portable_atmospherics/canister/phoron/engine_setup/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/phoron, MolesForPressure()) + src.air_contents.adjust_gas(GAS_ID_PHORON, MolesForPressure()) src.update_icon() /obj/machinery/portable_atmospherics/canister/take_damage(var/damage) diff --git a/code/game/machinery/atmoalter/portable_atmospherics.dm b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm similarity index 60% rename from code/game/machinery/atmoalter/portable_atmospherics.dm rename to code/modules/atmospherics/machinery/portable/portable_atmospherics.dm index 763ace9a7e7..499241555ca 100644 --- a/code/game/machinery/atmoalter/portable_atmospherics.dm +++ b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm @@ -2,9 +2,32 @@ name = "atmoalter" use_power = USE_POWER_OFF layer = OBJ_LAYER // These are mobile, best not be under everything. + interaction_flags_machine = INTERACT_MACHINE_OPEN | INTERACT_MACHINE_OFFLINE + + /// allow multitool "hijacking" even if this is controlled by something else + /// set to non-null for delay. + var/default_multitool_hijack = null + /// allow access normally + var/default_access_interface = FALSE + /// tgui interface + var/tgui_interface + /// ui flags + var/atmos_portable_ui_flags = NONE + + /// on right now + var/on = FALSE + /// current flow, liters + var/flow_current = 0 + /// flow maximum + var/flow_maximum = 1000 + /// flow setting + var/flow_setting + + var/datum/gas_mixture/air_contents = new var/obj/machinery/atmospherics/portables_connector/connected_port + // todo: tweak this; not all portables can / should necessarily be able to hold tanks. var/obj/item/tank/holding var/volume = 0 @@ -16,6 +39,8 @@ /obj/machinery/portable_atmospherics/Initialize(mapload) . = ..() + if(isnull(flow_setting)) + flow_setting = flow_maximum air_contents.volume = volume air_contents.temperature = T20C @@ -26,26 +51,94 @@ /obj/machinery/portable_atmospherics/Initialize(mapload) . = ..() - spawn() - var/obj/machinery/atmospherics/portables_connector/port = locate() in loc - if(port) - connect(port) - update_icon() + return INITIALIZE_HINT_LATELOAD + +/obj/machinery/portable_atmospherics/LateInitialize() + var/obj/machinery/atmospherics/portables_connector/port = locate() in loc + if(port) + connect(port) + update_icon() + return ..() /obj/machinery/portable_atmospherics/process(delta_time) + flow_current = 0 + if(!connected_port) //only react when pipe_network will ont it do it for you //Allow for reactions air_contents.react() else update_icon() +/obj/machinery/portable_atmospherics/interact(mob/user) + if(!default_access_interface) + user.action_feedback(SPAN_WARNING("You can't directly interact with [src]. Use an area atmospherics control computer, if there is one."), src) + return FALSE + ui_interact(user) + return TRUE + +/obj/machinery/portable_atmospherics/ui_interact(mob/user, datum/tgui/ui, datum/tgui/parent_ui) + if(!tgui_interface) + return ..() + + ui = SStgui.try_update_ui(user, src, ui) + if(isnull(ui)) + ui = new(user, src, tgui_interface) + +/obj/machinery/portable_atmospherics/ui_static_data(mob/user, datum/tgui/ui, datum/ui_state/state) + . = ..() + .["controlFlags"] = atmos_portable_ui_flags + .["useCharge"] = FALSE + .["flowMax"] = flow_maximum + +/obj/machinery/portable_atmospherics/ui_data(mob/user, datum/tgui/ui, datum/ui_state/state) + . = ..() + .["flow"] = flow_current + .["on"] = on + .["tank"] = holding?.tgui_tank_data() + +/obj/machinery/portable_atmospherics/ui_act(action, list/params, datum/tgui/ui) + . = ..() + if(.) + return + switch(action) + if("togglePower") + if(!(atmos_portable_ui_flags & ATMOS_PORTABLE_UI_TOGGLE_POWER)) + return TRUE + set_on(!on) + return TRUE + if("setFlow") + var/amt = params["value"] + if(!isnum(amt)) + return TRUE + if(!(atmos_portable_ui_flags & ATMOS_PORTABLE_UI_SET_FLOW)) + return TRUE + set_flow(amt) + return TRUE + if("eject") + if(isnull(holding)) + return TRUE + usr.action_feedback(SPAN_NOTICE("You remove [holding] from [src]."), src) + usr.grab_item_from_interacted_with(holding, src) + holding = null + return TRUE + +/obj/machinery/portable_atmospherics/proc/set_on(enabled) + on = enabled + update_icon() + +/obj/machinery/portable_atmospherics/proc/set_flow(liters) + flow_setting = clamp(liters, 0, flow_maximum) + +/obj/machinery/portable_atmospherics/return_air() + return air_contents + /obj/machinery/portable_atmospherics/blob_act() qdel(src) /obj/machinery/portable_atmospherics/proc/StandardAirMix() return list( - /datum/gas/oxygen = O2STANDARD * MolesForPressure(), - /datum/gas/nitrogen = N2STANDARD * MolesForPressure()) + GAS_ID_OXYGEN = O2STANDARD * MolesForPressure(), + GAS_ID_NITROGEN = N2STANDARD * MolesForPressure()) /obj/machinery/portable_atmospherics/proc/MolesForPressure(var/target_pressure = start_pressure) return (target_pressure * air_contents.volume) / (R_IDEAL_GAS_EQUATION * air_contents.temperature) @@ -97,13 +190,13 @@ if (network) network.update = 1 -/obj/machinery/portable_atmospherics/attackby(var/obj/item/W as obj, var/mob/user as mob) - if ((istype(W, /obj/item/tank) && !( src.destroyed ))) +/obj/machinery/portable_atmospherics/attackby(obj/item/I, mob/living/user, list/params, clickchain_flags, damage_multiplier) + if ((istype(I, /obj/item/tank) && !( src.destroyed ))) if (holding && (user.a_intent != INTENT_GRAB)) return - if(!user.attempt_insert_item_for_installation(W, src)) + if(!user.attempt_insert_item_for_installation(I, src)) return - var/obj/item/tank/T = W + var/obj/item/tank/T = I if(holding) user.grab_item_from_interacted_with(holding, src) to_chat(user, SPAN_NOTICE("You quickly swap the tanks with the quick release valve.")) @@ -111,12 +204,12 @@ update_icon() return - else if (W.is_wrench()) + else if (I.is_wrench()) if(connected_port) disconnect() to_chat(user, "You disconnect \the [src] from the port.") update_icon() - playsound(src, W.tool_sound, 50, 1) + playsound(src, I.tool_sound, 50, 1) return else var/obj/machinery/atmospherics/portables_connector/possible_port = locate(/obj/machinery/atmospherics/portables_connector/) in loc @@ -124,7 +217,7 @@ if(connect(possible_port)) to_chat(user, "You connect \the [src] to the port.") update_icon() - playsound(src, W.tool_sound, 50, 1) + playsound(src, I.tool_sound, 50, 1) return else to_chat(user, "\The [src] failed to connect to the port.") @@ -133,8 +226,8 @@ to_chat(user, "Nothing happens.") return - else if ((istype(W, /obj/item/analyzer)) && Adjacent(user)) - var/obj/item/analyzer/A = W + else if ((istype(I, /obj/item/atmos_analyzer)) && Adjacent(user)) + var/obj/item/atmos_analyzer/A = I A.analyze_gases(src, user) /obj/machinery/portable_atmospherics/MouseDroppedOnLegacy(mob/living/carbon/O, mob/user as mob) @@ -165,51 +258,6 @@ if (get_turf(user) == get_turf(src)) usr.visible_message("[user] climbs onto \the [src]!") -/obj/machinery/portable_atmospherics/powered - var/power_rating - var/power_losses - var/last_power_draw = 0 - var/obj/item/cell/cell - var/use_cell = TRUE - var/removeable_cell = TRUE - -/obj/machinery/portable_atmospherics/powered/powered() - if(use_power) //using area power - return ..() - if(cell && cell.charge) - return 1 - return 0 - -/obj/machinery/portable_atmospherics/powered/attackby(obj/item/I, mob/user) - if(use_cell && istype(I, /obj/item/cell)) - if(cell) - to_chat(user, "There is already a power cell installed.") - return - if(!user.attempt_insert_item_for_installation(I, src)) - return - - var/obj/item/cell/C = I - - C.add_fingerprint(user) - cell = C - user.visible_message("[user] opens the panel on [src] and inserts [C].", "You open the panel on [src] and insert [C].") - power_change() - return - - if(I.is_screwdriver() && removeable_cell) - if(!cell) - to_chat(user, "There is no power cell installed.") - return - - user.visible_message("[user] opens the panel on [src] and removes [cell].", "You open the panel on [src] and remove [cell].") - playsound(src, I.tool_sound, 50, 1) - cell.add_fingerprint(user) - cell.forceMove(drop_location()) - cell = null - power_change() - return - ..() - /obj/machinery/portable_atmospherics/proc/log_open() if(air_contents.gas.len == 0) return diff --git a/code/modules/atmospherics/machinery/portable/powered.dm b/code/modules/atmospherics/machinery/portable/powered.dm new file mode 100644 index 00000000000..e7a83f75bbd --- /dev/null +++ b/code/modules/atmospherics/machinery/portable/powered.dm @@ -0,0 +1,85 @@ +/obj/machinery/portable_atmospherics/powered + /// power rating in watts + var/power_maximum = 7500 + /// power setting in watts + var/power_setting + /// power usage current + var/power_current = 0 + + /// efficiency multiplier + var/efficiency_multiplier = 1 + + var/last_power_draw_legacy = 0 + var/obj/item/cell/cell + var/use_cell = TRUE + var/removeable_cell = TRUE + +/obj/machinery/portable_atmospherics/powered/Initialize(mapload) + . = ..() + if(isnull(power_setting)) + power_setting = power_maximum + +/obj/machinery/portable_atmospherics/powered/process(delta_time) + ..() + power_current = 0 + +/obj/machinery/portable_atmospherics/powered/powered() + if(use_power) //using area power + return ..() + if(cell && cell.charge) + return 1 + return 0 + +/obj/machinery/portable_atmospherics/powered/ui_static_data(mob/user, datum/tgui/ui, datum/ui_state/state) + . = ..() + .["useCharge"] = TRUE + .["maxCharge"] = isnull(cell)? cell.maxcharge : 0 + .["powerRating"] = power_maximum + .["useCell"] = use_cell + +/obj/machinery/portable_atmospherics/powered/ui_data(mob/user, datum/tgui/ui, datum/ui_state/state) + . = ..() + .["charge"] = isnull(cell)? cell.charge : 0 + if(atmos_portable_ui_flags & (ATMOS_PORTABLE_UI_SEE_POWER | ATMOS_PORTABLE_UI_SET_POWER)) + .["powerCurrent"] = power_current + .["hasCell"] = !isnull(cell) + +/obj/machinery/portable_atmospherics/powered/attackby(obj/item/I, mob/living/user, list/params, clickchain_flags, damage_multiplier) + if(use_cell && istype(I, /obj/item/cell)) + if(cell) + to_chat(user, "There is already a power cell installed.") + return + if(!user.attempt_insert_item_for_installation(I, src)) + return + + var/obj/item/cell/C = I + + C.add_fingerprint(user) + cell = C + user.visible_message("[user] opens the panel on [src] and inserts [C].", "You open the panel on [src] and insert [C].") + power_change() + update_static_data() + return + + if(I.is_screwdriver() && removeable_cell) + if(!cell) + to_chat(user, "There is no power cell installed.") + return + + user.visible_message("[user] opens the panel on [src] and removes [cell].", "You open the panel on [src] and remove [cell].") + playsound(src, I.tool_sound, 50, 1) + cell.add_fingerprint(user) + cell.forceMove(drop_location()) + cell = null + power_change() + update_static_data() + return + ..() + +/obj/machinery/portable_atmospherics/powered/use_power(amount, chan, dt) + if(!use_cell) + return ..() + . = cell.use(DYNAMIC_W_TO_CELL_UNITS(amount, dt)) + if(!cell.charge) + power_change() + update_icon() diff --git a/code/game/machinery/atmoalter/pump.dm b/code/modules/atmospherics/machinery/portable/pump.dm similarity index 94% rename from code/game/machinery/atmoalter/pump.dm rename to code/modules/atmospherics/machinery/portable/pump.dm index 4b1f0faca85..1ae3d3bca5a 100644 --- a/code/game/machinery/atmoalter/pump.dm +++ b/code/modules/atmospherics/machinery/portable/pump.dm @@ -1,12 +1,10 @@ /obj/machinery/portable_atmospherics/powered/pump name = "portable air pump" - icon = 'icons/obj/atmos.dmi' icon_state = "psiphon:0" density = 1 w_class = ITEMSIZE_NORMAL - var/on = 0 var/direction_out = 0 //0 = siphoning, 1 = releasing var/target_pressure = ONE_ATMOSPHERE @@ -15,8 +13,7 @@ volume = 1000 - power_rating = 7500 //7500 W ~ 10 HP - power_losses = 150 + var/power_rating = 7500 //7500 W ~ 10 HP /obj/machinery/portable_atmospherics/powered/pump/filled start_pressure = 90 * ONE_ATMOSPHERE @@ -25,9 +22,6 @@ . = ..() cell = new/obj/item/cell/apc(src) - var/list/air_mix = StandardAirMix() - src.air_contents.adjust_multi(/datum/gas/oxygen, air_mix[/datum/gas/oxygen], /datum/gas/nitrogen, air_mix[/datum/gas/nitrogen]) - /obj/machinery/portable_atmospherics/powered/pump/update_icon() cut_overlays() var/list/overlays_to_add = list() @@ -85,12 +79,11 @@ power_draw = pump_gas(src, environment, air_contents, transfer_moles, power_rating) if (power_draw < 0) - last_flow_rate = 0 - last_power_draw = 0 + last_flow_rate_legacy = 0 + last_power_draw_legacy = 0 else - power_draw = max(power_draw, power_losses) cell.use_scaled(DYNAMIC_W_TO_CELL_UNITS(power_draw, 1)) - last_power_draw = power_draw + last_power_draw_legacy = power_draw update_connected_network() @@ -136,7 +129,7 @@ data["max_pressure"] = round(pressuremax) - data["powerDraw"] = round(last_power_draw) + data["powerDraw"] = round(last_power_draw_legacy) data["cellCharge"] = cell ? cell.charge : 0 data["cellMaxCharge"] = cell ? cell.maxcharge : 1 @@ -228,8 +221,8 @@ /obj/machinery/portable_atmospherics/powered/pump/huge/process(delta_time) if(!anchored || (machine_stat & (NOPOWER|BROKEN))) on = 0 - last_flow_rate = 0 - last_power_draw = 0 + last_flow_rate_legacy = 0 + last_power_draw_legacy = 0 update_icon() var/new_use_power = 1 + on if(new_use_power != use_power) @@ -262,8 +255,8 @@ power_draw = pump_gas(src, environment, air_contents, transfer_moles, power_rating) if (power_draw < 0) - last_flow_rate = 0 - last_power_draw = 0 + last_flow_rate_legacy = 0 + last_power_draw_legacy = 0 else use_power(power_draw) update_connected_network() diff --git a/code/modules/atmospherics/machinery/portable/scrubber.dm b/code/modules/atmospherics/machinery/portable/scrubber.dm new file mode 100644 index 00000000000..7a6eb429664 --- /dev/null +++ b/code/modules/atmospherics/machinery/portable/scrubber.dm @@ -0,0 +1,205 @@ +/obj/machinery/portable_atmospherics/powered/scrubber + name = "portable air scrubber" + icon = 'icons/obj/atmos.dmi' + icon_state = "pscrubber:0" + density = TRUE + w_class = ITEMSIZE_NORMAL + + atmos_portable_ui_flags = ATMOS_PORTABLE_UI_TOGGLE_POWER | ATMOS_PORTABLE_UI_SEE_POWER | ATMOS_PORTABLE_UI_SEE_FLOW + power_maximum = 7500 + flow_maximum = 5000 + + volume = 1000 + + /// scrubbing ids + var/list/scrubbing_ids + /// scrubbing groups + var/scrubbing_groups + /// molar rate current + var/transfer_current = 0 + /// minimum moles to scrub per tick (if enough power) even if flow is not enough + var/scrub_mole_boost = 50 + +/obj/machinery/portable_atmospherics/powered/scrubber/Initialize(mapload) + . = ..() + cell = new /obj/item/cell/apc(src) + +//! LEGACY BELOW + +/obj/machinery/portable_atmospherics/powered/scrubber/emp_act(severity) + if(machine_stat & (BROKEN|NOPOWER)) + ..(severity) + return + + if(prob(50/severity)) + on = !on + update_icon() + + ..(severity) + +/obj/machinery/portable_atmospherics/powered/scrubber/update_icon_state() + . = ..() + if(on && cell && cell.charge) + icon_state = "pscrubber:1" + else + icon_state = "pscrubber:0" + +/obj/machinery/portable_atmospherics/powered/scrubber/update_overlays() + . = ..() + if(holding) + . += "scrubber-open" + + if(connected_port) + . += "scrubber-connector" + +//! LEGACY ABOVE + +/obj/machinery/portable_atmospherics/powered/scrubber/ui_static_data(mob/user, datum/tgui/ui, datum/ui_state/state) + . = ..() + .["atmosContext"] = global.gas_data.tgui_gas_context() + .["scrubbingIds"] = scrubbing_ids + .["scrubbingGroups"] = scrubbing_groups + +/obj/machinery/portable_atmospherics/powered/scrubber/ui_data(mob/user) + . = ..() + .["moleRate"] = transfer_current + +/obj/machinery/portable_atmospherics/powered/scrubber/ui_act(action, params) + . = ..() + if(.) + return + + switch(action) + if("scrubID") + var/target = params["target"] + if(!istext(target)) + return FALSE + if(!global.gas_data.gas_id_filterable(target)) + return FALSE + if(target in scrubbing_ids) + scrubbing_ids -= target + else + scrubbing_ids += target + push_ui_data(data = list("scrubbingIds" = scrubbing_ids)) + return TRUE + if("scrubGroup") + var/target = params["target"] + if(!isnum(target)) + return FALSE + if(!global.gas_data.gas_groups_filterable(target)) + return FALSE + scrubbing_groups ^= target + push_ui_data(data = list("scrubbingGroups" = scrubbing_groups)) + return TRUE + +/obj/machinery/portable_atmospherics/powered/scrubber/process(delta_time) + ..() + + if(on && cell?.charge) + var/datum/gas_mixture/scrubbing = isnull(holding)? loc.return_air() : holding.air_contents + var/old_mols = scrubbing.total_moles + // todo: compensate for delta_time, right now this is not stable and will go faster/slower based on SSair tick rate. + power_current = xgm_scrub_gas_volume(scrubbing, air_contents, scrubbing_ids, scrubbing_groups, flow_setting / scrubbing.group_multiplier, power_setting * efficiency_multiplier, scrub_mole_boost) / efficiency_multiplier + transfer_current = (old_mols - scrubbing.total_moles) / delta_time + update_connected_network() + + if(power_current) + use_power(power_current, dt = delta_time) + +//Huge scrubber +/obj/machinery/portable_atmospherics/powered/scrubber/huge + name = "Huge Air Scrubber" + icon = 'icons/obj/atmos_vr.dmi' + icon_state = "scrubber:0" + anchored = TRUE + // just 1 million because no way to offload. yet. + volume = 1000000 + flow_maximum = 50000 + use_cell = FALSE + + use_power = USE_POWER_IDLE + idle_power_usage = 50 //internal circuitry, friction losses and stuff + active_power_usage = 1000 // Blowers running + power_maximum = 100000 //100 kW ~ 135 HP + + var/global/gid = 1 + var/id = 0 + +/obj/machinery/portable_atmospherics/powered/scrubber/huge/Initialize(mapload) + . = ..() + cell = null + + id = gid + gid++ + + name = "[name] (ID [id])" + +/obj/machinery/portable_atmospherics/powered/scrubber/huge/attack_hand(mob/user, list/params) + to_chat(user, "You can't directly interact with this machine. Use the scrubber control console.") + +/obj/machinery/portable_atmospherics/powered/scrubber/huge/update_icon() + cut_overlays() + + if(on && !(machine_stat & (NOPOWER|BROKEN))) + icon_state = "scrubber:1" + else + icon_state = "scrubber:0" + +/obj/machinery/portable_atmospherics/powered/scrubber/huge/power_change() + var/old_stat = machine_stat + ..() + if (old_stat != machine_stat) + update_icon() + + +/obj/machinery/portable_atmospherics/powered/scrubber/huge/attackby(var/obj/item/I as obj, var/mob/user as mob) + if(I.is_wrench()) + if(on) + to_chat(user, "Turn \the [src] off first!") + return + + anchored = !anchored + playsound(src.loc, I.tool_sound, 50, 1) + to_chat(user, "You [anchored ? "wrench" : "unwrench"] \the [src].") + + return + + //doesn't use power cells + if(istype(I, /obj/item/cell)) + return + if(I.is_screwdriver()) + return + + //doesn't hold tanks + if(istype(I, /obj/item/tank)) + return + + ..() + +/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary + name = "Stationary Air Scrubber" + +/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/attackby(var/obj/item/I as obj, var/mob/user as mob) + if(I.is_wrench()) + to_chat(user, "The bolts are too tight for you to unscrew!") + return + + ..() + +// Tether tram air scrubbers for keeping arrivals clean - they work even with no area power +/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/tram + name = "\improper Tram Air Scrubber" + icon_state = "scrubber:1" + on = TRUE + +/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/tram/powered() + return TRUE // Always be powered + +// Triumph shuttle air scrubbers for keeping arrivals clean - they work even with no area power +/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/shuttle + name = "\improper Shuttle Air Scrubber" + icon_state = "scrubber:1" + on = TRUE + +/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/shuttle/powered() + return TRUE // Always be powered diff --git a/code/game/machinery/atmoalter/zvent.dm b/code/modules/atmospherics/machinery/zvent.dm similarity index 96% rename from code/game/machinery/atmoalter/zvent.dm rename to code/modules/atmospherics/machinery/zvent.dm index 0857757e7c9..2c22dbe9e65 100644 --- a/code/game/machinery/atmoalter/zvent.dm +++ b/code/modules/atmospherics/machinery/zvent.dm @@ -1,3 +1,5 @@ +// todo: this is in the wrong folder + /obj/machinery/zvent name = "Interfloor Air Transfer System" diff --git a/code/modules/cargo/supplypacks/hydroponics.dm b/code/modules/cargo/supplypacks/hydroponics.dm index 9788fd40238..7c3ceea420a 100644 --- a/code/modules/cargo/supplypacks/hydroponics.dm +++ b/code/modules/cargo/supplypacks/hydroponics.dm @@ -56,7 +56,7 @@ /obj/item/reagent_containers/glass/bottle/ammonia = 2, /obj/item/material/knife/machete/hatchet, /obj/item/material/minihoe, - /obj/item/analyzer/plant_analyzer, + /obj/item/plant_analyzer, /obj/item/clothing/gloves/botanic_leather, /obj/item/clothing/suit/storage/apron, /obj/item/material/minihoe, diff --git a/code/modules/cargo/supplypacks/misc.dm b/code/modules/cargo/supplypacks/misc.dm index ebb5de441e8..b051d957c6f 100644 --- a/code/modules/cargo/supplypacks/misc.dm +++ b/code/modules/cargo/supplypacks/misc.dm @@ -302,7 +302,7 @@ contains = list( /obj/fiftyspawner/wax = 2, /obj/item/healthanalyzer/apidean = 1, - /obj/item/analyzer/apidean = 1, + /obj/item/atmos_analyzer/apidean = 1, /obj/item/reagent_scanner/apidean = 1, /mob/living/bot/medibot/apidean = 1, /obj/item/reagent_containers/food/drinks/bottle/ambrosia_mead = 2, diff --git a/code/modules/cargo/supplypacks/supply.dm b/code/modules/cargo/supplypacks/supply.dm index ea67dbe749f..f6ffa2e7119 100644 --- a/code/modules/cargo/supplypacks/supply.dm +++ b/code/modules/cargo/supplypacks/supply.dm @@ -102,7 +102,7 @@ /obj/item/clothing/under/rank/miner, /obj/item/clothing/gloves/black, /obj/item/clothing/shoes/black, - /obj/item/analyzer, + /obj/item/atmos_analyzer, /obj/item/storage/bag/ore, /obj/item/flashlight/lantern, /obj/item/shovel, diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index 3aae23b9922..31240d01e16 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -12,7 +12,7 @@ siemens_coefficient = 0.9 armor_type = /datum/armor/mask/gas var/gas_filter_strength = 1 //For gas mask filters - var/list/filtered_gases = list(/datum/gas/phoron, /datum/gas/nitrous_oxide) + var/list/filtered_gases = list(GAS_ID_PHORON, GAS_ID_NITROUS_OXIDE) /obj/item/clothing/mask/gas/filter_air(datum/gas_mixture/air) var/datum/gas_mixture/gas_filtered = new @@ -107,7 +107,7 @@ atom_flags = PHORONGUARD clothing_flags = BLOCK_GAS_SMOKE_EFFECT | ALLOWINTERNALS species_restricted = list(SPECIES_VOX) - filtered_gases = list(/datum/gas/oxygen, /datum/gas/nitrous_oxide) + filtered_gases = list(GAS_ID_OXYGEN, GAS_ID_NITROUS_OXIDE) var/mask_open = FALSE // Controls if the Vox can eat through this mask action_button_name = "Toggle Feeding Port" @@ -127,7 +127,6 @@ if(.) return feeding_port(user) - ..() /obj/item/clothing/mask/gas/zaddat name = "Zaddat Veil" @@ -136,8 +135,8 @@ item_state = "vax_mask" //body_cover_flags = 0 species_restricted = list(SPECIES_ZADDAT) + filtered_gases = list(GAS_ID_PHORON, GAS_ID_NITROUS_OXIDE, GAS_ID_NITROGEN) inv_hide_flags = HIDEEARS //semi-transparent - filtered_gases = list(/datum/gas/phoron, /datum/gas/nitrous_oxide, /datum/gas/nitrogen) /obj/item/clothing/mask/gas/opaque name = "Opaque Mask" diff --git a/code/modules/clothing/spacesuits/void/event.dm b/code/modules/clothing/spacesuits/void/event.dm index fcfbc95dd36..7524e74fa5f 100644 --- a/code/modules/clothing/spacesuits/void/event.dm +++ b/code/modules/clothing/spacesuits/void/event.dm @@ -248,7 +248,7 @@ /obj/item/measuring_tape, /obj/item/reagent_scanner, /obj/item/robotanalyzer, - /obj/item/analyzer, + /obj/item/atmos_analyzer, /obj/item/cataloguer, /obj/item/universal_translator, /obj/item/tool/crowbar, diff --git a/code/modules/clothing/suits/aliens/tajara.dm b/code/modules/clothing/suits/aliens/tajara.dm index 379ed1cca5f..e86caf3513b 100644 --- a/code/modules/clothing/suits/aliens/tajara.dm +++ b/code/modules/clothing/suits/aliens/tajara.dm @@ -43,7 +43,7 @@ blood_overlay_type = "coat" body_cover_flags = UPPER_TORSO|ARMS inv_hide_flags = HIDEHOLSTER - allowed = list(/obj/item/analyzer,/obj/item/stack/medical,/obj/item/dnainjector,/obj/item/reagent_containers/dropper,/obj/item/reagent_containers/syringe,/obj/item/reagent_containers/hypospray,/obj/item/healthanalyzer,/obj/item/flashlight/pen,/obj/item/reagent_containers/glass/bottle,/obj/item/reagent_containers/glass/beaker,/obj/item/reagent_containers/pill,/obj/item/storage/pill_bottle,/obj/item/paper) + allowed = list(/obj/item/atmos_analyzer,/obj/item/stack/medical,/obj/item/dnainjector,/obj/item/reagent_containers/dropper,/obj/item/reagent_containers/syringe,/obj/item/reagent_containers/hypospray,/obj/item/healthanalyzer,/obj/item/flashlight/pen,/obj/item/reagent_containers/glass/bottle,/obj/item/reagent_containers/glass/beaker,/obj/item/reagent_containers/pill,/obj/item/storage/pill_bottle,/obj/item/paper) armor_type = /datum/armor/suit/labcoat /obj/item/clothing/suit/storage/toggle/tajaran/coat/wool diff --git a/code/modules/clothing/suits/hooded.dm b/code/modules/clothing/suits/hooded.dm index b0e05f03b9e..c50a1548aae 100644 --- a/code/modules/clothing/suits/hooded.dm +++ b/code/modules/clothing/suits/hooded.dm @@ -196,7 +196,7 @@ armor_type = /datum/armor/medical/coat hoodtype = /obj/item/clothing/head/hood/winter/medical allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes, - /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/analyzer,/obj/item/stack/medical, + /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/atmos_analyzer,/obj/item/stack/medical, /obj/item/dnainjector,/obj/item/reagent_containers/dropper,/obj/item/reagent_containers/syringe,/obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer,/obj/item/reagent_containers/glass/bottle,/obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill,/obj/item/storage/pill_bottle) @@ -239,7 +239,7 @@ armor_type = /datum/armor/science/coat hoodtype = /obj/item/clothing/head/hood/winter/science allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes, - /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/analyzer,/obj/item/stack/medical, + /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/atmos_analyzer,/obj/item/stack/medical, /obj/item/dnainjector,/obj/item/reagent_containers/dropper,/obj/item/reagent_containers/syringe,/obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer,/obj/item/reagent_containers/glass/bottle,/obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill,/obj/item/storage/pill_bottle) @@ -264,7 +264,7 @@ armor_type = /datum/armor/engineering/coat hoodtype = /obj/item/clothing/head/hood/winter/engineering allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes, - /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/analyzer, /obj/item/flashlight, + /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/atmos_analyzer, /obj/item/flashlight, /obj/item/multitool, /obj/item/pipe_painter, /obj/item/radio, /obj/item/t_scanner, /obj/item/tool/crowbar, /obj/item/tool/screwdriver, /obj/item/weldingtool, /obj/item/tool/wirecutters, /obj/item/tool/wrench, /obj/item/tank/emergency/oxygen, /obj/item/clothing/mask/gas, /obj/item/barrier_tape_roll/engineering, /obj/item/rcd, /obj/item/pipe_dispenser) @@ -290,7 +290,7 @@ hoodtype = /obj/item/clothing/head/hood/winter/hydro allowed = list (/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes, /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/reagent_containers/spray/plantbgone, - /obj/item/analyzer/plant_analyzer, /obj/item/seeds, /obj/item/reagent_containers/glass/bottle, /obj/item/material/minihoe) + /obj/item/plant_analyzer, /obj/item/seeds, /obj/item/reagent_containers/glass/bottle, /obj/item/material/minihoe) /obj/item/clothing/suit/storage/hooded/wintercoat/cargo name = "cargo winter coat" diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 1387735860e..a70a3195cdd 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -10,7 +10,7 @@ item_state_slots = list(SLOT_ID_RIGHT_HAND = "overalls", SLOT_ID_LEFT_HAND = "overalls") blood_overlay_type = "armor" body_cover_flags = 0 - allowed = list (/obj/item/reagent_containers/spray/plantbgone, /obj/item/analyzer/plant_analyzer, /obj/item/seeds, + allowed = list (/obj/item/reagent_containers/spray/plantbgone, /obj/item/plant_analyzer, /obj/item/seeds, /obj/item/reagent_containers/glass/bottle, /obj/item/material/minihoe) /obj/item/clothing/suit/storage/apron/white @@ -176,7 +176,7 @@ desc = "A high-visibility vest used in work zones." icon_state = "hazard" blood_overlay_type = "armor" - allowed = list (/obj/item/analyzer, /obj/item/flashlight, /obj/item/multitool, /obj/item/pipe_painter, /obj/item/radio, /obj/item/t_scanner, + allowed = list (/obj/item/atmos_analyzer, /obj/item/flashlight, /obj/item/multitool, /obj/item/pipe_painter, /obj/item/radio, /obj/item/t_scanner, /obj/item/tool/crowbar, /obj/item/tool/screwdriver, /obj/item/weldingtool, /obj/item/tool/wirecutters, /obj/item/tool/wrench, /obj/item/tank/emergency/oxygen, /obj/item/clothing/mask/gas, /obj/item/barrier_tape_roll/engineering) body_cover_flags = UPPER_TORSO @@ -285,7 +285,7 @@ armor_type = /datum/armor/medical/coat/field_medic valid_accessory_slots = (ACCESSORY_SLOT_INSIGNIA) allowed = list (/obj/item/gun,/obj/item/pen, /obj/item/paper, /obj/item/flashlight,/obj/item/tank/emergency/oxygen, /obj/item/storage/fancy/cigarettes, - /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/analyzer,/obj/item/stack/medical, + /obj/item/storage/box/matches, /obj/item/reagent_containers/food/drinks/flask, /obj/item/suit_cooling_unit, /obj/item/atmos_analyzer,/obj/item/stack/medical, /obj/item/dnainjector,/obj/item/reagent_containers/dropper,/obj/item/reagent_containers/syringe,/obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer,/obj/item/reagent_containers/glass/bottle,/obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill,/obj/item/storage/pill_bottle) diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm index 02e1fc86a8a..53c0abab1e9 100644 --- a/code/modules/clothing/suits/labcoat.dm +++ b/code/modules/clothing/suits/labcoat.dm @@ -7,7 +7,7 @@ blood_overlay_type = "coat" body_cover_flags = UPPER_TORSO|ARMS inv_hide_flags = HIDEHOLSTER - allowed = list(/obj/item/analyzer,/obj/item/stack/medical,/obj/item/dnainjector,/obj/item/reagent_containers/dropper,/obj/item/reagent_containers/syringe,/obj/item/reagent_containers/hypospray,/obj/item/healthanalyzer,/obj/item/flashlight/pen,/obj/item/reagent_containers/glass/bottle,/obj/item/reagent_containers/glass/beaker,/obj/item/reagent_containers/pill,/obj/item/storage/pill_bottle,/obj/item/paper) + allowed = list(/obj/item/atmos_analyzer,/obj/item/stack/medical,/obj/item/dnainjector,/obj/item/reagent_containers/dropper,/obj/item/reagent_containers/syringe,/obj/item/reagent_containers/hypospray,/obj/item/healthanalyzer,/obj/item/flashlight/pen,/obj/item/reagent_containers/glass/bottle,/obj/item/reagent_containers/glass/beaker,/obj/item/reagent_containers/pill,/obj/item/storage/pill_bottle,/obj/item/paper) armor_type = /datum/armor/suit/labcoat worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL diff --git a/code/modules/clothing/suits/oricon.dm b/code/modules/clothing/suits/oricon.dm index 399a6e98075..fa77da88b1c 100644 --- a/code/modules/clothing/suits/oricon.dm +++ b/code/modules/clothing/suits/oricon.dm @@ -11,7 +11,7 @@ armor_type = /datum/armor/none siemens_coefficient = 0.9 inv_hide_flags = HIDEHOLSTER - allowed = list(/obj/item/tank/emergency/oxygen,/obj/item/flashlight,/obj/item/pen,/obj/item/clothing/head/soft,/obj/item/clothing/head/beret,/obj/item/storage/fancy/cigarettes,/obj/item/flame/lighter,/obj/item/tape_recorder,/obj/item/analyzer,/obj/item/radio,/obj/item/barrier_tape_roll) + allowed = list(/obj/item/tank/emergency/oxygen,/obj/item/flashlight,/obj/item/pen,/obj/item/clothing/head/soft,/obj/item/clothing/head/beret,/obj/item/storage/fancy/cigarettes,/obj/item/flame/lighter,/obj/item/tape_recorder,/obj/item/atmos_analyzer,/obj/item/radio,/obj/item/barrier_tape_roll) /obj/item/clothing/suit/storage/service/sysguard name = "\improper SysGuard jacket" diff --git a/code/modules/events/atmos_leak.dm b/code/modules/events/atmos_leak.dm index 59bf63b2c1d..ef5d6a2b04f 100644 --- a/code/modules/events/atmos_leak.dm +++ b/code/modules/events/atmos_leak.dm @@ -21,11 +21,11 @@ // Decide which area will be targeted! /datum/event/atmos_leak/setup() - var/gas_choices = list(/datum/gas/carbon_dioxide, /datum/gas/nitrous_oxide) // Annoying + var/gas_choices = list(GAS_ID_CARBON_DIOXIDE, GAS_ID_NITROUS_OXIDE) // Annoying if(severity >= EVENT_LEVEL_MODERATE) - gas_choices += /datum/gas/phoron // Dangerous + gas_choices += GAS_ID_PHORON // Dangerous // if(severity >= EVENT_LEVEL_MAJOR) - // gas_choices += /datum/gas/volatile_fuel // Dangerous and no default atmos setup! + // gas_choices += GAS_ID_VOLATILE_FUEL // Dangerous and no default atmos setup! gas_type = pick(gas_choices) var/list/area/grand_list_of_areas = get_station_areas(excluded) @@ -54,7 +54,7 @@ return /datum/event/atmos_leak/announce() - command_announcement.Announce("Warning, hazardous [GLOB.meta_gas_names[gas_type]] gas leak detected in \the [target_area], evacuate the area and contain the damage!", "Hazard Alert") + command_announcement.Announce("Warning, hazardous [global.gas_data.names[gas_type]] gas leak detected in \the [target_area], evacuate the area and contain the damage!", "Hazard Alert") /datum/event/atmos_leak/start() // Okay, time to actually put the gas in the room! diff --git a/code/modules/events/supply_demand.dm b/code/modules/events/supply_demand.dm index aaad6d47c47..3e830155852 100644 --- a/code/modules/events/supply_demand.dm +++ b/code/modules/events/supply_demand.dm @@ -230,7 +230,7 @@ var/total_moles = mixture.total_moles var desc = "Canister filled to [round(pressure,0.1)] kPa with gas mixture:\n" for(var/gas in mixture.gas) - desc += "
- [GLOB.meta_gas_names[gas]]: [round((mixture.gas[gas] / total_moles) * 100)]%\n" + desc += "
- [global.gas_data.names[gas]]: [round((mixture.gas[gas] / total_moles) * 100)]%\n" return desc /datum/supply_demand_order/gas/match_item(var/obj/machinery/portable_atmospherics/canister) @@ -322,7 +322,7 @@ /datum/event/supply_demand/proc/choose_atmos_items(var/differentTypes) var/datum/gas_mixture/mixture = new mixture.temperature = T20C - var/unpickedTypes = gas_data.gases.Copy() + var/unpickedTypes = global.gas_data.gases.Copy() unpickedTypes -= "volatile_fuel" // Don't do that one for(var/i in 1 to differentTypes) var/gasId = pick(unpickedTypes) diff --git a/code/modules/gamemaster/actions/atmos_leak.dm b/code/modules/gamemaster/actions/atmos_leak.dm index 63f7546fc04..59dd4422cd1 100644 --- a/code/modules/gamemaster/actions/atmos_leak.dm +++ b/code/modules/gamemaster/actions/atmos_leak.dm @@ -22,11 +22,11 @@ EVENT_LEVEL_MAJOR = 3 ) - var/gas_choices = list(/datum/gas/carbon_dioxide, /datum/gas/nitrous_oxide) // Annoying + var/gas_choices = list(GAS_ID_CARBON_DIOXIDE, GAS_ID_NITROUS_OXIDE) // Annoying if(severity >= EVENT_LEVEL_MODERATE) - gas_choices += /datum/gas/phoron // Dangerous + gas_choices += GAS_ID_PHORON // Dangerous if(severity >= EVENT_LEVEL_MAJOR) - gas_choices += /datum/gas/volatile_fuel // Dangerous and no default atmos setup! + gas_choices += GAS_ID_VOLATILE_FUEL // Dangerous and no default atmos setup! gas_type = pick(gas_choices) var/list/area/grand_list_of_areas = get_station_areas(excluded) @@ -55,7 +55,7 @@ /datum/gm_action/atmos_leak/announce() if(target_area) - command_announcement.Announce("Warning, hazardous [GLOB.meta_gas_names[gas_type]] gas leak detected in \the [target_area], evacuate the area.", "Hazard Alert") + command_announcement.Announce("Warning, hazardous [global.gas_data.names[gas_type]] gas leak detected in \the [target_area], evacuate the area.", "Hazard Alert") /datum/gm_action/atmos_leak/start() if(!target_turf) diff --git a/code/modules/hardsuits/suits/combat.dm b/code/modules/hardsuits/suits/combat.dm index 4e65120d7b9..6f0dcf4db3f 100644 --- a/code/modules/hardsuits/suits/combat.dm +++ b/code/modules/hardsuits/suits/combat.dm @@ -80,7 +80,7 @@ /obj/item/tool, /obj/item/multitool, /obj/item/radio, - /obj/item/analyzer, + /obj/item/atmos_analyzer, /obj/item/storage/briefcase/inflatable, /obj/item/melee/baton, /obj/item/gun, diff --git a/code/modules/hardsuits/suits/ert.dm b/code/modules/hardsuits/suits/ert.dm index a2ec96dd72b..5673f15fd00 100644 --- a/code/modules/hardsuits/suits/ert.dm +++ b/code/modules/hardsuits/suits/ert.dm @@ -35,7 +35,7 @@ /obj/item/tool/wrench, /obj/item/multitool, /obj/item/radio, - /obj/item/analyzer, + /obj/item/atmos_analyzer, /obj/item/storage/briefcase/inflatable, /obj/item/melee/baton, /obj/item/gun, diff --git a/code/modules/hardsuits/suits/pmc.dm b/code/modules/hardsuits/suits/pmc.dm index 4d28da9118b..df6f2242f75 100644 --- a/code/modules/hardsuits/suits/pmc.dm +++ b/code/modules/hardsuits/suits/pmc.dm @@ -33,7 +33,7 @@ /obj/item/tool/wrench, /obj/item/multitool, /obj/item/radio, - /obj/item/analyzer, + /obj/item/atmos_analyzer, /obj/item/storage/briefcase/inflatable, /obj/item/melee/baton, /obj/item/gun, diff --git a/code/modules/hydroponics/beekeeping/beehive.dm b/code/modules/hydroponics/beekeeping/beehive.dm index a70359683fe..2ad9e7ca486 100644 --- a/code/modules/hydroponics/beekeeping/beehive.dm +++ b/code/modules/hydroponics/beekeeping/beehive.dm @@ -98,7 +98,7 @@ B.fill() update_icon() return - else if(istype(I, /obj/item/analyzer/plant_analyzer)) + else if(istype(I, /obj/item/plant_analyzer)) to_chat(user, "Scan result of \the [src]...") to_chat(user, "Beehive is [bee_count ? "[round(bee_count)]% full" : "empty"].[bee_count > 90 ? " Colony is ready to split." : ""]") if(frames) diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm index 1553cfa6920..67aac64879b 100644 --- a/code/modules/hydroponics/seed.dm +++ b/code/modules/hydroponics/seed.dm @@ -417,12 +417,12 @@ if(prob(5)) consume_gasses = list() - var/gas = pick(/datum/gas/oxygen,/datum/gas/nitrogen,/datum/gas/phoron,/datum/gas/carbon_dioxide) + var/gas = pick(GAS_ID_OXYGEN,GAS_ID_NITROGEN,GAS_ID_PHORON,GAS_ID_CARBON_DIOXIDE) consume_gasses[gas] = rand(3,9) if(prob(5)) exude_gasses = list() - var/gas = pick(/datum/gas/oxygen,/datum/gas/nitrogen,/datum/gas/phoron,/datum/gas/carbon_dioxide) + var/gas = pick(GAS_ID_OXYGEN,GAS_ID_NITROGEN,GAS_ID_PHORON,GAS_ID_CARBON_DIOXIDE) exude_gasses[gas] = rand(3,9) chems = list() diff --git a/code/modules/hydroponics/trays/tray_tools.dm b/code/modules/hydroponics/trays/tray_tools.dm index 4bb1cc6b0c8..b940411fd9e 100644 --- a/code/modules/hydroponics/trays/tray_tools.dm +++ b/code/modules/hydroponics/trays/tray_tools.dm @@ -17,152 +17,6 @@ item_state = "hedget" damage_force = 7 //One point extra than standard wire cutters. -/obj/item/analyzer/plant_analyzer - name = "plant analyzer" - icon = 'icons/obj/device.dmi' - icon_state = "hydro" - item_state = "analyzer" - var/datum/seed/last_seed - var/list/last_reagents - -/obj/item/analyzer/plant_analyzer/attack_self(mob/user) - . = ..() - if(.) - return - ui_interact(user) - -/obj/item/analyzer/plant_analyzer/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "PlantAnalyzer", name) - ui.open() - -/obj/item/analyzer/plant_analyzer/ui_state(mob/user, datum/tgui_module/module) - return GLOB.inventory_state - -/obj/item/analyzer/plant_analyzer/ui_data(mob/user, datum/tgui/ui, datum/ui_state/state) - var/list/data = ..() - - var/datum/seed/grown_seed = locate(last_seed) - if(!istype(grown_seed)) - return list("no_seed" = TRUE) - - data["no_seed"] = FALSE - data["seed"] = grown_seed.get_tgui_analyzer_data(user) - data["reagents"] = last_reagents - - return data - -/obj/item/analyzer/plant_analyzer/ui_act(action, list/params, datum/tgui/ui) - if(..()) - return TRUE - - switch(action) - if("print") - print_report(usr) - return TRUE - if("close") - last_seed = null - last_reagents = null - return TRUE - -/obj/item/analyzer/plant_analyzer/afterattack(atom/target, mob/user, clickchain_flags, list/params) - if(!(clickchain_flags & CLICKCHAIN_HAS_PROXIMITY)) - return - - var/datum/seed/grown_seed - var/datum/reagents/grown_reagents - if(istype(target,/obj/structure/table)) - return ..() - else if(istype(target,/obj/item/reagent_containers/food/snacks/grown)) - - var/obj/item/reagent_containers/food/snacks/grown/G = target - grown_seed = SSplants.seeds[G.plantname] - grown_reagents = G.reagents - - else if(istype(target,/obj/item/grown)) - - var/obj/item/grown/G = target - grown_seed = SSplants.seeds[G.plantname] - grown_reagents = G.reagents - - else if(istype(target,/obj/item/seeds)) - - var/obj/item/seeds/S = target - grown_seed = S.seed - - else if(istype(target,/obj/machinery/portable_atmospherics/hydroponics)) - - var/obj/machinery/portable_atmospherics/hydroponics/H = target - if(H.frozen == 1) - to_chat(user, "Disable the cryogenic freezing first!") - return - grown_seed = H.seed - grown_reagents = H.reagents - - if(!grown_seed) - to_chat(user, "[src] can tell you nothing about \the [target].") - return - - last_seed = REF(grown_seed) - - user.visible_message("[user] runs the scanner over \the [target].") - - last_reagents = list() - if(grown_reagents && grown_reagents.reagent_list && grown_reagents.reagent_list.len) - for(var/datum/reagent/R in grown_reagents.reagent_list) - last_reagents.Add(list(list( - "name" = R.name, - "volume" = grown_reagents.get_reagent_amount(R.id), - ))) - - ui_interact(user) - -/obj/item/analyzer/plant_analyzer/proc/print_report_verb() - set name = "Print Plant Report" - set category = "Object" - set src = usr - - if(usr.stat || usr.restrained() || usr.lying) - return - print_report(usr) - -/obj/item/analyzer/plant_analyzer/proc/print_report(var/mob/living/user) - var/datum/seed/grown_seed = locate(last_seed) - if(!istype(grown_seed)) - to_chat(user, SPAN_WARNING("There is no scan data to print.")) - return - - var/form_title = "[grown_seed.seed_name] (#[grown_seed.uid])" - var/dat = "

Plant data for [form_title]

" - dat += "

General Data

" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "
Endurance[grown_seed.get_trait(TRAIT_ENDURANCE)]
Yield[grown_seed.get_trait(TRAIT_YIELD)]
Maturation time[grown_seed.get_trait(TRAIT_MATURATION)]
Production time[grown_seed.get_trait(TRAIT_PRODUCTION)]
Potency[grown_seed.get_trait(TRAIT_POTENCY)]
" - - if(LAZYLEN(last_reagents)) - dat += "

Reagent Data

" - dat += "
This sample contains: " - for(var/i in 1 to LAZYLEN(last_reagents)) - dat += "
- [last_reagents[i]["name"]], [last_reagents[i]["volume"]] unit(s)" - - dat += "

Other Data

" - - var/list/ui_data = grown_seed.get_tgui_analyzer_data() - - dat += jointext(ui_data["trait_info"], "
\n") - - var/obj/item/paper/P = new /obj/item/paper(get_turf(src)) - P.name = "paper - [form_title]" - P.info = "[dat]" - if(istype(user,/mob/living/carbon/human)) - user.put_in_hands(P) - user.visible_message("\The [src] spits out a piece of paper.") - return /datum/seed/proc/get_tgui_analyzer_data(mob/user) var/list/data = list() @@ -285,7 +139,7 @@ amount = "large amounts of " else if(exude_gasses[gas] < 5) amount = "small amounts of " - data["trait_info"] += "It will release [amount][GLOB.meta_gas_names[gas]] into the environment." + data["trait_info"] += "It will release [amount][global.gas_data.names[gas]] into the environment." if(consume_gasses && consume_gasses.len) for(var/gas in consume_gasses) @@ -294,6 +148,6 @@ amount = "large amounts of " else if(consume_gasses[gas] < 5) amount = "small amounts of " - data["trait_info"] += "It will consume [amount][GLOB.meta_gas_names[gas]] from the environment." + data["trait_info"] += "It will consume [amount][global.gas_data.names[gas]] from the environment." return data diff --git a/code/modules/integrated_electronics/subtypes/input.dm b/code/modules/integrated_electronics/subtypes/input.dm index 12b86b0c35a..28608eb0ca9 100644 --- a/code/modules/integrated_electronics/subtypes/input.dm +++ b/code/modules/integrated_electronics/subtypes/input.dm @@ -1468,10 +1468,10 @@ GLOBAL_DATUM_INIT(circuit_translation_context, /datum/translation_context/simple var/total_moles = environment.total_moles if (total_moles) - var/o2_level = environment.gas[/datum/gas/oxygen]/total_moles - var/n2_level = environment.gas[/datum/gas/nitrogen]/total_moles - var/co2_level = environment.gas[/datum/gas/carbon_dioxide]/total_moles - var/phoron_level = environment.gas[/datum/gas/phoron]/total_moles + var/o2_level = environment.gas[GAS_ID_OXYGEN]/total_moles + var/n2_level = environment.gas[GAS_ID_NITROGEN]/total_moles + var/co2_level = environment.gas[GAS_ID_CARBON_DIOXIDE]/total_moles + var/phoron_level = environment.gas[GAS_ID_PHORON]/total_moles var/unknown_level = 1-(o2_level+n2_level+co2_level+phoron_level) set_pin_data(IC_OUTPUT, 1, pressure) set_pin_data(IC_OUTPUT, 2, round(environment.temperature-T0C,0.1)) @@ -1576,7 +1576,7 @@ GLOBAL_DATUM_INIT(circuit_translation_context, /datum/translation_context/simple var/total_moles = environment.total_moles if (total_moles) - var/o2_level = environment.gas[/datum/gas/oxygen]/total_moles + var/o2_level = environment.gas[GAS_ID_OXYGEN]/total_moles set_pin_data(IC_OUTPUT, 1, round(o2_level*100,0.1)) else set_pin_data(IC_OUTPUT, 1, 0) @@ -1607,7 +1607,7 @@ GLOBAL_DATUM_INIT(circuit_translation_context, /datum/translation_context/simple var/total_moles = environment.total_moles if (total_moles) - var/co2_level = environment.gas[/datum/gas/carbon_dioxide]/total_moles + var/co2_level = environment.gas[GAS_ID_CARBON_DIOXIDE]/total_moles set_pin_data(IC_OUTPUT, 1, round(co2_level*100,0.1)) else set_pin_data(IC_OUTPUT, 1, 0) @@ -1638,7 +1638,7 @@ GLOBAL_DATUM_INIT(circuit_translation_context, /datum/translation_context/simple var/total_moles = environment.total_moles if (total_moles) - var/n2_level = environment.gas[/datum/gas/nitrogen]/total_moles + var/n2_level = environment.gas[GAS_ID_NITROGEN]/total_moles set_pin_data(IC_OUTPUT, 1, round(n2_level*100,0.1)) else set_pin_data(IC_OUTPUT, 1, 0) @@ -1669,7 +1669,7 @@ GLOBAL_DATUM_INIT(circuit_translation_context, /datum/translation_context/simple var/total_moles = environment.total_moles if (total_moles) - var/phoron_level = environment.gas[/datum/gas/phoron]/total_moles + var/phoron_level = environment.gas[GAS_ID_PHORON]/total_moles set_pin_data(IC_OUTPUT, 1, round(phoron_level*100,0.1)) else set_pin_data(IC_OUTPUT, 1, 0) diff --git a/code/modules/jobs/job_types/station/service/botanist.dm b/code/modules/jobs/job_types/station/service/botanist.dm index 25b4381a00f..568aa45b2e7 100644 --- a/code/modules/jobs/job_types/station/service/botanist.dm +++ b/code/modules/jobs/job_types/station/service/botanist.dm @@ -35,7 +35,7 @@ uniform = /obj/item/clothing/under/rank/hydroponics suit = /obj/item/clothing/suit/storage/apron - suit_store = /obj/item/analyzer/plant_analyzer + suit_store = /obj/item/plant_analyzer gloves = /obj/item/clothing/gloves/botanic_leather backpack = /obj/item/storage/backpack/hydroponics diff --git a/code/modules/mapping/map_helpers/network_builder/power_cable.dm b/code/modules/mapping/map_helpers/network_builder/power_cable.dm index 1e6a93cb89b..a87b59ba7bc 100644 --- a/code/modules/mapping/map_helpers/network_builder/power_cable.dm +++ b/code/modules/mapping/map_helpers/network_builder/power_cable.dm @@ -68,41 +68,41 @@ icon_state = "powerlinebuilderauto" knot = KNOT_AUTO -#define WORK_HARDER_NOT_SMARTER \ - WORK_SMARTER_NOT_HARDER("Red", COLOR_RED) \ - WORK_SMARTER_NOT_HARDER("White", COLOR_WHITE) \ - WORK_SMARTER_NOT_HARDER("Silver", COLOR_SILVER) \ - WORK_SMARTER_NOT_HARDER("Gray", COLOR_GRAY) \ - WORK_SMARTER_NOT_HARDER("Black", COLOR_BLACK) \ - WORK_SMARTER_NOT_HARDER("Maroon", COLOR_MAROON) \ - WORK_SMARTER_NOT_HARDER("Yellow", COLOR_YELLOW) \ - WORK_SMARTER_NOT_HARDER("Olive", COLOR_OLIVE) \ - WORK_SMARTER_NOT_HARDER("Lime", COLOR_LIME) \ - WORK_SMARTER_NOT_HARDER("Green", COLOR_GREEN) \ - WORK_SMARTER_NOT_HARDER("Cyan", COLOR_CYAN) \ - WORK_SMARTER_NOT_HARDER("Teal", COLOR_TEAL) \ - WORK_SMARTER_NOT_HARDER("Blue", COLOR_BLUE) \ - WORK_SMARTER_NOT_HARDER("Navy", COLOR_NAVY) \ - WORK_SMARTER_NOT_HARDER("Pink", COLOR_PINK) \ - WORK_SMARTER_NOT_HARDER("Purple", COLOR_PURPLE) \ - WORK_SMARTER_NOT_HARDER("Orange", COLOR_ORANGE) \ - WORK_SMARTER_NOT_HARDER("Beige", COLOR_BEIGE) \ - WORK_SMARTER_NOT_HARDER("Brown", COLOR_BROWN) - -#define WORK_SMARTER_NOT_HARDER(c, v) \ -/obj/map_helper/network_builder/power_cable{ \ - color = v; \ - cable_color = c; \ -} \ -/obj/map_helper/network_builder/power_cable/auto{ \ - color = v; \ - cable_color = c; \ -} \ -/obj/map_helper/network_builder/power_cable/knot{ \ - color = v; \ - cable_color = c; \ +#define WORK_SMARTER_NOT_HARDER(c, v, p) \ +/obj/map_helper/network_builder/power_cable/##p{ \ + color = v; \ + cable_color = c; \ +} \ +/obj/map_helper/network_builder/power_cable/##p/auto{ \ + color = v; \ + cable_color = c; \ +} \ +/obj/map_helper/network_builder/power_cable/##p/knot{ \ + color = v; \ + cable_color = c; \ } +#define WORK_HARDER_NOT_SMARTER \ + WORK_SMARTER_NOT_HARDER("Red", COLOR_RED, red) \ + WORK_SMARTER_NOT_HARDER("White", COLOR_WHITE, white) \ + WORK_SMARTER_NOT_HARDER("Silver", COLOR_SILVER, silver) \ + WORK_SMARTER_NOT_HARDER("Gray", COLOR_GRAY, gray) \ + WORK_SMARTER_NOT_HARDER("Black", COLOR_BLACK, black) \ + WORK_SMARTER_NOT_HARDER("Maroon", COLOR_MAROON, maroon) \ + WORK_SMARTER_NOT_HARDER("Yellow", COLOR_YELLOW, yellow) \ + WORK_SMARTER_NOT_HARDER("Olive", COLOR_OLIVE, olive) \ + WORK_SMARTER_NOT_HARDER("Lime", COLOR_LIME, lime) \ + WORK_SMARTER_NOT_HARDER("Green", COLOR_GREEN, green) \ + WORK_SMARTER_NOT_HARDER("Cyan", COLOR_CYAN, cyan) \ + WORK_SMARTER_NOT_HARDER("Teal", COLOR_TEAL, teal) \ + WORK_SMARTER_NOT_HARDER("Blue", COLOR_BLUE, blue) \ + WORK_SMARTER_NOT_HARDER("Navy", COLOR_NAVY, navy) \ + WORK_SMARTER_NOT_HARDER("Pink", COLOR_PINK, pink) \ + WORK_SMARTER_NOT_HARDER("Purple", COLOR_PURPLE, purple) \ + WORK_SMARTER_NOT_HARDER("Orange", COLOR_ORANGE, orange) \ + WORK_SMARTER_NOT_HARDER("Beige", COLOR_BEIGE, beige) \ + WORK_SMARTER_NOT_HARDER("Brown", COLOR_BROWN, brown) + WORK_HARDER_NOT_SMARTER // LMAO! #undef WORK_HARDER_NOT_SMARTER diff --git a/code/modules/maps/_shim/away_spawner.dm b/code/modules/maps/_shim/away_spawner.dm index d4d349007fb..beff6090453 100644 --- a/code/modules/maps/_shim/away_spawner.dm +++ b/code/modules/maps/_shim/away_spawner.dm @@ -71,21 +71,21 @@ For now this is still usable but bad. var/list/gaslist = env.gas if(my_mob.min_oxy) - my_mob.min_oxy = gaslist[/datum/gas/oxygen] * 0.8 + my_mob.min_oxy = gaslist[GAS_ID_OXYGEN] * 0.8 if(my_mob.min_tox) - my_mob.min_tox = gaslist[/datum/gas/phoron] * 0.8 + my_mob.min_tox = gaslist[GAS_ID_PHORON] * 0.8 if(my_mob.min_n2) - my_mob.min_n2 = gaslist[/datum/gas/nitrogen] * 0.8 + my_mob.min_n2 = gaslist[GAS_ID_NITROGEN] * 0.8 if(my_mob.min_co2) - my_mob.min_co2 = gaslist[/datum/gas/carbon_dioxide] * 0.8 + my_mob.min_co2 = gaslist[GAS_ID_CARBON_DIOXIDE] * 0.8 if(my_mob.max_oxy) - my_mob.max_oxy = gaslist[/datum/gas/oxygen] * 1.2 + my_mob.max_oxy = gaslist[GAS_ID_OXYGEN] * 1.2 if(my_mob.max_tox) - my_mob.max_tox = gaslist[/datum/gas/phoron] * 1.2 + my_mob.max_tox = gaslist[GAS_ID_PHORON] * 1.2 if(my_mob.max_n2) - my_mob.max_n2 = gaslist[/datum/gas/nitrogen] * 1.2 + my_mob.max_n2 = gaslist[GAS_ID_NITROGEN] * 1.2 if(my_mob.max_co2) - my_mob.max_co2 = gaslist[/datum/gas/carbon_dioxide] * 1.2 + my_mob.max_co2 = gaslist[GAS_ID_CARBON_DIOXIDE] * 1.2 return else STOP_PROCESSING(SSobj, src) diff --git a/code/modules/maps/misc_maps/geothermal_vent/geothermal_vent.dm b/code/modules/maps/misc_maps/geothermal_vent/geothermal_vent.dm index b4814c8c454..5b097ab6a7d 100644 --- a/code/modules/maps/misc_maps/geothermal_vent/geothermal_vent.dm +++ b/code/modules/maps/misc_maps/geothermal_vent/geothermal_vent.dm @@ -2,16 +2,15 @@ #define GEOTHERMAL_TEMP 2473.15 /datum/atmosphere/geothermal_vent - base_gases = list( - /datum/gas/carbon_dioxide = 0.5, - /datum/gas/sulfur_dioxide = 0.34, - /datum/gas/carbon_monoxide = 0.16, + base = list( + /datum/gas/carbon_dioxide = 0.5, + /datum/gas/sulfur_dioxide = 0.34, + /datum/gas/carbon_monoxide = 0.16, ) - base_target_pressure = 376.9 - minimum_pressure = 376.9 - maximum_pressure = 376.9 - minimum_temp = GEOTHERMAL_TEMP - 10 - maximum_temp = GEOTHERMAL_TEMP + 10 + pressure_high = 376.9 + pressure_low = 376.9 + temperature_low = GEOTHERMAL_TEMP - 10 + temperature_high = GEOTHERMAL_TEMP + 10 //Turfmakers #define GEOTHERMAL_SET_ATMOS initial_gas_mix = ATMOSPHERE_ID_GEOTHERMAL diff --git a/code/modules/maps/overmap/planets/_virgo3b.dm b/code/modules/maps/overmap/planets/_virgo3b.dm index f52e42652fa..8cb4e6cac89 100644 --- a/code/modules/maps/overmap/planets/_virgo3b.dm +++ b/code/modules/maps/overmap/planets/_virgo3b.dm @@ -1,15 +1,14 @@ /datum/atmosphere/planet/virgo3b - base_gases = list( - /datum/gas/nitrogen = 0.16, - /datum/gas/phoron = 0.72, - /datum/gas/carbon_dioxide = 0.12 + base = list( + /datum/gas/nitrogen = 0.16, + /datum/gas/phoron = 0.72, + /datum/gas/carbon_dioxide = 0.12, ) - base_target_pressure = 82.4 - minimum_pressure = 82.4 - maximum_pressure = 82.4 - minimum_temp = 234 - maximum_temp = 234 + pressure_low = 82.4 + pressure_high = 82.4 + temperature_low = 234 + temperature_high = 234 /obj/overmap/entity/visitable/sector/virgo3b name = "Virgo 3B" diff --git a/code/modules/maps/overmap/planets/virgo2.dm b/code/modules/maps/overmap/planets/virgo2.dm index 17e197a3898..8ae65454434 100644 --- a/code/modules/maps/overmap/planets/virgo2.dm +++ b/code/modules/maps/overmap/planets/virgo2.dm @@ -1,16 +1,14 @@ // V2 doesnt actually have its own weather so this is gonna be here for now /datum/atmosphere/planet/virgo2 - base_gases = list( - /datum/gas/nitrogen = 0.10, - /datum/gas/oxygen = 0.03, - /datum/gas/carbon_dioxide = 0.87 + base = list( + /datum/gas/nitrogen = 0.10, + /datum/gas/oxygen = 0.03, + /datum/gas/carbon_dioxide = 0.87, ) - base_target_pressure = 312.1 - minimum_pressure = 312.1 - maximum_pressure = 312.1 - minimum_temp = 612 - maximum_temp = 612 - + pressure_low = 312.1 + pressure_high = 312.1 + temperature_low = 612 + temperature_high = 612 /obj/overmap/entity/visitable/sector/virgo2 name = "Virgo 2" diff --git a/code/modules/maps/overmap/space/debrisfield.dm b/code/modules/maps/overmap/space/debrisfield.dm index 5125abede3e..26d8cafe8f7 100644 --- a/code/modules/maps/overmap/space/debrisfield.dm +++ b/code/modules/maps/overmap/space/debrisfield.dm @@ -194,11 +194,7 @@ A.name = "[newname] [initial(A.name)]" if(A.apc) A.apc.name = "[A.name] APC" - A.air_vent_names = list() - A.air_scrub_names = list() - A.air_vent_info = list() - A.air_scrub_info = list() - for(var/obj/machinery/alarm/AA in A) + for(var/obj/machinery/air_alarm/AA in A) AA.name = "[A.name] Air Alarm" /obj/machinery/computer/shuttle_control/explore/tinycarrier diff --git a/code/modules/maps/overmap/space/talon/talon.dm b/code/modules/maps/overmap/space/talon/talon.dm index c8b57c4e871..562cac66e18 100644 --- a/code/modules/maps/overmap/space/talon/talon.dm +++ b/code/modules/maps/overmap/space/talon/talon.dm @@ -180,7 +180,7 @@ Once in open space, consider disabling nonessential power-consuming electronics /obj/machinery/power/apc/talon/hyper cell_type = /obj/item/cell/hyper -/obj/machinery/alarm/talon +/obj/machinery/air_alarm/talon req_access = list() req_one_access = list(ACCESS_FACTION_TALON) alarms_hidden = 1 diff --git a/code/modules/maps/weather/classd.dm b/code/modules/maps/weather/classd.dm index ababd1e40bf..034b72843f6 100644 --- a/code/modules/maps/weather/classd.dm +++ b/code/modules/maps/weather/classd.dm @@ -1,12 +1,11 @@ /datum/atmosphere/planet/classd - base_gases = list( - /datum/gas/nitrogen = 0.01 + base = list( + /datum/gas/nitrogen = 0.01, ) - base_target_pressure = 0.1 - minimum_pressure = 0.1 - maximum_pressure = 0.5 - minimum_temp = 203 - maximum_temp = 203 + pressure_low = 0.1 + pressure_high = 0.5 + temperature_low = 203 + temperature_high = 203 /datum/time/classd diff --git a/code/modules/maps/weather/classg.dm b/code/modules/maps/weather/classg.dm index 3275434f958..546fded001a 100644 --- a/code/modules/maps/weather/classg.dm +++ b/code/modules/maps/weather/classg.dm @@ -1,15 +1,13 @@ /datum/atmosphere/planet/classg - base_gases = list( - /datum/gas/oxygen = 10, - /datum/gas/nitrogen = 10, - /datum/gas/phoron = 80 + base = list( + /datum/gas/oxygen = 10, + /datum/gas/nitrogen = 10, + /datum/gas/phoron = 80, ) - base_target_pressure = 110.1 - minimum_pressure = 110.1 - maximum_pressure = 110.1 - minimum_temp = 293.3 - maximum_temp = 307.3 - + pressure_low = 110.1 + pressure_high = 110.1 + temperature_low = 293.3 + temperature_high = 307.3 /datum/time/classg seconds_in_day = 3 HOURS diff --git a/code/modules/maps/weather/classh.dm b/code/modules/maps/weather/classh.dm index a1f01bb3760..45ad69f0df8 100644 --- a/code/modules/maps/weather/classh.dm +++ b/code/modules/maps/weather/classh.dm @@ -1,14 +1,13 @@ /datum/atmosphere/planet/classh - base_gases = list( - /datum/gas/oxygen = 0.24, - /datum/gas/nitrogen = 0.72, - /datum/gas/carbon_dioxide = 0.04 + base = list( + /datum/gas/oxygen = 0.24, + /datum/gas/nitrogen = 0.72, + /datum/gas/carbon_dioxide = 0.04, ) - base_target_pressure = 110.1 - minimum_pressure = 110.1 - maximum_pressure = 110.1 - minimum_temp = 317.3 //Barely enough to avoid baking Teshari - maximum_temp = 317.3 + pressure_low = 110.1 + pressure_high = 110.1 + temperature_low = 317.3 //Barely enough to avoid baking Teshari + temperature_high = 317.3 /datum/time/classh diff --git a/code/modules/maps/weather/classm.dm b/code/modules/maps/weather/classm.dm index f964b9ee0e8..894626d29d4 100644 --- a/code/modules/maps/weather/classm.dm +++ b/code/modules/maps/weather/classm.dm @@ -1,14 +1,12 @@ /datum/atmosphere/planet/classm - base_gases = list( - /datum/gas/oxygen = 0.22, - /datum/gas/nitrogen = 0.78 + base = list( + /datum/gas/oxygen = 0.22, + /datum/gas/nitrogen = 0.78, ) - base_target_pressure = 110.1 - minimum_pressure = 110.1 - maximum_pressure = 110.1 - minimum_temp = 293.3 - maximum_temp = 307.3 - + pressure_low = 110.1 + pressure_high = 110.1 + temperature_low = 293.3 + temperature_high = 307.3 /datum/time/classm seconds_in_day = 10 HOURS diff --git a/code/modules/maps/weather/classp.dm b/code/modules/maps/weather/classp.dm index 4b6a180d78b..c744f3a55c0 100644 --- a/code/modules/maps/weather/classp.dm +++ b/code/modules/maps/weather/classp.dm @@ -1,15 +1,12 @@ /datum/atmosphere/planet/classp - base_gases = list( - /datum/gas/oxygen = 0.23, - /datum/gas/nitrogen = 0.77 + base = list( + /datum/gas/oxygen = 0.23, + /datum/gas/nitrogen = 0.77, ) - base_target_pressure = 100.1 - minimum_pressure = 100.1 - maximum_pressure = 100.1 - minimum_temp = 225.3 - maximum_temp = 230.3 - - + pressure_low = 100.1 + pressure_high = 100.1 + temperature_low = 225.3 + temperature_high = 230.3 /datum/time/classp seconds_in_day = 2 HOURS diff --git a/code/modules/maps/weather/lavaland.dm b/code/modules/maps/weather/lavaland.dm index 1393621c102..f1d3b825856 100644 --- a/code/modules/maps/weather/lavaland.dm +++ b/code/modules/maps/weather/lavaland.dm @@ -1,16 +1,13 @@ /datum/atmosphere/planet/lavaland - base_gases = list( - /datum/gas/oxygen = 0.14, - /datum/gas/nitrogen = 0.20, - /datum/gas/carbon_dioxide = 0.66 + base = list( + /datum/gas/oxygen = 0.14, + /datum/gas/nitrogen = 0.20, + /datum/gas/carbon_dioxide = 0.66, ) - base_target_pressure = 35.1 - minimum_pressure = 32.1 - maximum_pressure = 37.1 - minimum_temp = 310.3 - maximum_temp = 350.1 - - + pressure_low = 32.1 + pressure_high = 37.1 + temperature_low = 310.3 + temperature_high = 350.1 /datum/time/lavaland seconds_in_day = 2 HOURS diff --git a/code/modules/maps/weather/rift_lythios-43c.dm b/code/modules/maps/weather/rift_lythios-43c.dm index 0ac79beb9d7..607e0d7d82a 100644 --- a/code/modules/maps/weather/rift_lythios-43c.dm +++ b/code/modules/maps/weather/rift_lythios-43c.dm @@ -1,13 +1,12 @@ /datum/atmosphere/planet/lythios43c - base_gases = list( - /datum/gas/nitrogen = 0.66, - /datum/gas/oxygen = 0.34 + base = list( + /datum/gas/nitrogen = 0.66, + /datum/gas/oxygen = 0.34, ) - base_target_pressure = 76.9 - minimum_pressure = 76.9 - maximum_pressure = 76.9 - minimum_temp = 220.14 - maximum_temp = 241.72 + pressure_low = 76.9 + pressure_high = 76.9 + temperature_low = 220.14 + temperature_high = 241.72 /datum/time/lythios43c seconds_in_day = 10 HOURS diff --git a/code/modules/mining/ore_redemption_machine/engineering_points_vendor.dm b/code/modules/mining/ore_redemption_machine/engineering_points_vendor.dm index 3454b9e52af..9cccb526086 100644 --- a/code/modules/mining/ore_redemption_machine/engineering_points_vendor.dm +++ b/code/modules/mining/ore_redemption_machine/engineering_points_vendor.dm @@ -41,7 +41,7 @@ new /datum/data/mining_equipment("Power Tool - Experimental Welder", /obj/item/weldingtool/experimental, 80), new /datum/data/mining_equipment("Power Tool - Upgraded T-Ray Scanner", /obj/item/t_scanner/upgraded, 80), new /datum/data/mining_equipment("Power Tool - Advanced T-Ray Scanner", /obj/item/t_scanner/advanced, 80), - new /datum/data/mining_equipment("Power Tool - Long Range Atmosphere scanner", /obj/item/analyzer/longrange, 80), + new /datum/data/mining_equipment("Power Tool - Long Range Atmosphere scanner", /obj/item/atmos_analyzer/longrange, 80), //new /datum/data/mining_equipment("Power Tool - Holofan Projector", /obj/item/holosign_creator/combifan, 80), new /datum/data/mining_equipment("Superior Welding Goggles", /obj/item/clothing/glasses/welding/superior, 50), @@ -140,7 +140,7 @@ /obj/item/tank/vimur/Initialize(mapload) . = ..() - src.air_contents.adjust_gas(/datum/gas/vimur, (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + src.air_contents.adjust_gas(GAS_ID_VIMUR, (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) return . /obj/item/engineering_voucher diff --git a/code/modules/mob/living/bot/farmbot.dm b/code/modules/mob/living/bot/farmbot.dm index c4de4f76bbc..611b14d17bc 100644 --- a/code/modules/mob/living/bot/farmbot.dm +++ b/code/modules/mob/living/bot/farmbot.dm @@ -276,7 +276,7 @@ new /obj/item/material/minihoe(Tsec) new /obj/item/reagent_containers/glass/bucket(Tsec) new /obj/item/assembly/prox_sensor(Tsec) - new /obj/item/analyzer/plant_analyzer(Tsec) + new /obj/item/plant_analyzer(Tsec) if(tank) tank.loc = Tsec @@ -367,7 +367,7 @@ /obj/item/farmbot_arm_assembly/attackby(obj/item/W as obj, mob/user as mob) ..() - if((istype(W, /obj/item/analyzer/plant_analyzer)) && (build_step == 0)) + if((istype(W, /obj/item/plant_analyzer)) && (build_step == 0)) if(!user.attempt_consume_item_for_construction(W)) return build_step++ diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm index 4503efab081..1d71145ef89 100644 --- a/code/modules/mob/living/carbon/alien/larva/life.dm +++ b/code/modules/mob/living/carbon/alien/larva/life.dm @@ -5,7 +5,7 @@ if(!environment) return var/turf/T = get_turf(src) - if(environment.gas[/datum/gas/phoron] > 0 || (T && locate(/obj/effect/alien/weeds) in T.contents)) + if(environment.gas[GAS_ID_PHORON] > 0 || (T && locate(/obj/effect/alien/weeds) in T.contents)) update_progression() adjustBruteLoss(-1) adjustFireLoss(-1) diff --git a/code/modules/mob/living/carbon/breathe.dm b/code/modules/mob/living/carbon/breathe.dm index 9c75e40b34b..5e7ead6578f 100644 --- a/code/modules/mob/living/carbon/breathe.dm +++ b/code/modules/mob/living/carbon/breathe.dm @@ -2,7 +2,7 @@ //Start of a breath chain, calls breathe() /mob/living/carbon/handle_breathing() - if(air_master.current_cycle%4==2 || failed_last_breath || (health < config_legacy.health_threshold_crit)) //First, resolve location and get a breath + if(SSair.current_cycle%4==2 || failed_last_breath || (health < config_legacy.health_threshold_crit)) //First, resolve location and get a breath breathe() /mob/living/carbon/proc/breathe() diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index f330fb27366..c2c38c36c98 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -475,13 +475,13 @@ if(species.breath_type) breath_type = species.breath_type else - breath_type = /datum/gas/oxygen + breath_type = GAS_ID_OXYGEN inhaling = breath.gas[breath_type] if(species.poison_type) poison_type = species.poison_type else - poison_type = /datum/gas/phoron + poison_type = GAS_ID_PHORON poison = breath.gas[poison_type] if(species.exhale_type) @@ -559,8 +559,8 @@ phoron_alert = 0 // If there's some other shit in the air lets deal with it here. - if(breath.gas[/datum/gas/nitrous_oxide]) - var/SA_pp = (breath.gas[/datum/gas/nitrous_oxide] / breath.total_moles) * breath_pressure + if(breath.gas[GAS_ID_NITROUS_OXIDE]) + var/SA_pp = (breath.gas[GAS_ID_NITROUS_OXIDE] / breath.total_moles) * breath_pressure // Enough to make us paralysed for a bit if(SA_pp > SA_para_min) @@ -576,19 +576,23 @@ else if(SA_pp > 0.15) if(prob(20)) spawn(0) emote(pick("giggle", "laugh")) - breath.adjust_gas(/datum/gas/nitrous_oxide, -breath.gas[/datum/gas/nitrous_oxide]/6, update = 0) //update after + breath.adjust_gas(GAS_ID_NITROUS_OXIDE, -breath.gas[GAS_ID_NITROUS_OXIDE]/6, update = 0) //update after - for(var/gasname in breath.gas) //datum/gas/ - //var/datum/gas/gas = gasname + for(var/gasname in breath.gas) if(gasname == breath_type) continue - if(!GLOB.meta_gas_reagent_id[gasname]) + var/list/reagent_gas_data = global.gas_data.reagents[gasname] + if(!reagent_gas_data) continue + if(breath.gas[gasname] < reagent_gas_data[GAS_REAGENT_LIST_THRESHOLD]) + return // Little bit of sanity so we aren't trying to add 0.0000000001 units of CO2, and so we don't end up with 99999 units of CO2. - var/reagent_amount = breath.gas[gasname] * 10 * gas_to_process_ratio * GLOB.meta_gas_reagent_amount[gasname] //10 is for the u per gas mol, ratio is defined further up where we have the lungs for checks + var/reagent_id = reagent_gas_data[GAS_REAGENT_LIST_ID] + var/reagent_amount = (breath.gas[gasname] * reagent_gas_data[GAS_REAGENT_LIST_FACTOR] + reagent_gas_data[GAS_REAGENT_LIST_AMOUNT]) * gas_to_process_ratio + reagent_amount = min(reagent_amount, reagent_gas_data[GAS_REAGENT_LIST_MAX] - reagents.get_reagent_amount(reagent_id)) if(reagent_amount < 0.05) continue - reagents.add_reagent(GLOB.meta_gas_reagent_id[gasname], reagent_amount) + reagents.add_reagent(reagent_id, reagent_amount) breath.adjust_gas(gasname, -breath.gas[gasname], update = 0) //update after // Were we able to breathe? @@ -708,7 +712,7 @@ //Check for contaminants before anything else because we don't want to skip it. for(var/g in environment.gas) - if(GLOB.meta_gas_flags[g] & GAS_FLAG_CONTAMINANT && environment.gas[g] > GLOB.meta_gas_visibility[g] + 1) + if(global.gas_data.flags[g] & GAS_FLAG_CONTAMINANT && environment.gas[g] > 1) pl_effects() break @@ -1603,7 +1607,7 @@ stomach_contents.Remove(M) qdel(M) continue - if(air_master.current_cycle%3==1) + if(SSair.current_cycle%3==1) if(!(M.status_flags & STATUS_GODMODE)) M.adjustBruteLoss(5) nutrition += 10 diff --git a/code/modules/mob/living/defense.dm b/code/modules/mob/living/defense.dm index 199b93f03a3..97711ee2a8c 100644 --- a/code/modules/mob/living/defense.dm +++ b/code/modules/mob/living/defense.dm @@ -404,7 +404,7 @@ return 1 var/datum/gas_mixture/G = loc?.return_air() // Check if we're standing in an oxygenless environment - if(!G || (G.gas[/datum/gas/oxygen] < 1)) + if(!G || (G.gas[GAS_ID_OXYGEN] < 1)) ExtinguishMob() //If there's no oxygen in the tile we're on, put out the fire return 1 diff --git a/code/modules/mob/living/silicon/pai/software_modules/atmosphere_sensor.dm b/code/modules/mob/living/silicon/pai/software_modules/atmosphere_sensor.dm index dc6840d6653..f59258b9c0e 100644 --- a/code/modules/mob/living/silicon/pai/software_modules/atmosphere_sensor.dm +++ b/code/modules/mob/living/silicon/pai/software_modules/atmosphere_sensor.dm @@ -26,7 +26,7 @@ var/gases[0] for(var/g in env.gas) var/gas[0] - gas["name"] = GLOB.meta_gas_names[g] + gas["name"] = global.gas_data.names[g] gas["percent"] = round((env.gas[g] / t_moles) * 100) gases[++gases.len] = gas data["gas"] = gases diff --git a/code/modules/mob/living/silicon/robot/dogborg/dog_modules_vr.dm b/code/modules/mob/living/silicon/robot/dogborg/dog_modules_vr.dm index 5ad0d841270..592dad83d96 100644 --- a/code/modules/mob/living/silicon/robot/dogborg/dog_modules_vr.dm +++ b/code/modules/mob/living/silicon/robot/dogborg/dog_modules_vr.dm @@ -84,7 +84,7 @@ to_chat(user, "Pressure: [round(pressure,0.1)] kPa") if(total_moles) for(var/g in environment.gas) - to_chat(user, "[GLOB.meta_gas_names[g]]: [round((environment.gas[g] / total_moles) * 100)]%") + to_chat(user, "[global.gas_data.names[g]]: [round((environment.gas[g] / total_moles) * 100)]%") to_chat(user, "Temperature: [round(environment.temperature-T0C,0.1)]°C ([round(environment.temperature,0.1)]K)") /obj/item/dogborg/boop_module/afterattack(atom/target, mob/user, clickchain_flags, list/params) diff --git a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm index cdc94e169f2..60c78dbc91c 100644 --- a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm +++ b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm @@ -514,7 +514,7 @@ 'sound/vore/digest12.ogg') playsound(hound, churnsound, vol = 100, vary = 1, falloff = 0.1, ignore_walls = TRUE, preference = /datum/client_preference/digestion_noises) //If the timing is right, and there are items to be touched - if(air_master.current_cycle%3==1 && length(touchable_items)) + if(SSair.current_cycle%3==1 && length(touchable_items)) //Burn all the mobs or add them to the exclusion list var/volume = 0 diff --git a/code/modules/mob/living/silicon/robot/robot_modules/event.dm b/code/modules/mob/living/silicon/robot/robot_modules/event.dm index 2ddae454fb0..3bbbdec23cf 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/event.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/event.dm @@ -67,7 +67,7 @@ // For growing flowers /obj/item/material/minihoe, /obj/item/material/knife/machete/hatchet, - /obj/item/analyzer/plant_analyzer, + /obj/item/plant_analyzer, /obj/item/storage/bag/plants, /obj/item/robot_harvester, diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station/drone.dm b/code/modules/mob/living/silicon/robot/robot_modules/station/drone.dm index 31760d807fa..1cc4b4f395f 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station/drone.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station/drone.dm @@ -24,7 +24,7 @@ /obj/item/pipe_painter, /obj/item/floor_painter, /obj/item/t_scanner, - /obj/item/analyzer, + /obj/item/atmos_analyzer, /obj/item/inflatable_dispenser/robot, /obj/item/barrier_tape_roll/engineering, /obj/item/pipe_dispenser diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station/engineering.dm b/code/modules/mob/living/silicon/robot/robot_modules/station/engineering.dm index 03f4facb0ec..364d122aa2a 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station/engineering.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station/engineering.dm @@ -88,7 +88,7 @@ /obj/item/tool/wirecutters/cyborg, /obj/item/multitool, /obj/item/t_scanner, - /obj/item/analyzer, + /obj/item/atmos_analyzer, /obj/item/barrier_tape_roll/engineering, /obj/item/gripper, /obj/item/gripper/circuit, @@ -162,7 +162,7 @@ /obj/item/multitool, /obj/item/t_scanner, /obj/item/rcd/electric/mounted/borg, - /obj/item/analyzer, + /obj/item/atmos_analyzer, /obj/item/barrier_tape_roll/engineering, /obj/item/inflatable_dispenser/robot, /obj/item/pickaxe/plasmacutter, diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station/service.dm b/code/modules/mob/living/silicon/robot/robot_modules/station/service.dm index da9dfa861e5..a26142e3434 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station/service.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station/service.dm @@ -109,7 +109,7 @@ src.modules += new /obj/item/reagent_containers/glass/bucket(src) src.modules += new /obj/item/material/minihoe(src) src.modules += new /obj/item/material/knife/machete/hatchet(src) - src.modules += new /obj/item/analyzer/plant_analyzer(src) + src.modules += new /obj/item/plant_analyzer(src) src.modules += new /obj/item/storage/bag/plants(src) src.modules += new /obj/item/robot_harvester(src) src.modules += new /obj/item/material/knife(src) @@ -305,7 +305,7 @@ /obj/item/reagent_containers/glass/bucket, /obj/item/material/minihoe, /obj/item/material/knife/machete/hatchet, - /obj/item/analyzer/plant_analyzer, + /obj/item/plant_analyzer, /obj/item/storage/bag/dogborg, /obj/item/robot_harvester, /obj/item/material/knife, diff --git a/code/modules/mob/living/simple_mob/life.dm b/code/modules/mob/living/simple_mob/life.dm index 7e895df6f7c..565252fa879 100644 --- a/code/modules/mob/living/simple_mob/life.dm +++ b/code/modules/mob/living/simple_mob/life.dm @@ -93,28 +93,28 @@ bodytemperature += ((Environment.temperature - bodytemperature) / 5) if(min_oxy) - if(Environment.gas[/datum/gas/oxygen] < min_oxy) + if(Environment.gas[GAS_ID_OXYGEN] < min_oxy) atmos_unsuitable = 1 if(max_oxy) - if(Environment.gas[/datum/gas/oxygen] > max_oxy) + if(Environment.gas[GAS_ID_OXYGEN] > max_oxy) atmos_unsuitable = 1 if(min_tox) - if(Environment.gas[/datum/gas/phoron] < min_tox) + if(Environment.gas[GAS_ID_PHORON] < min_tox) atmos_unsuitable = 2 if(max_tox) - if(Environment.gas[/datum/gas/phoron] > max_tox) + if(Environment.gas[GAS_ID_PHORON] > max_tox) atmos_unsuitable = 2 if(min_n2) - if(Environment.gas[/datum/gas/nitrogen] < min_n2) + if(Environment.gas[GAS_ID_NITROGEN] < min_n2) atmos_unsuitable = 1 if(max_n2) - if(Environment.gas[/datum/gas/nitrogen] > max_n2) + if(Environment.gas[GAS_ID_NITROGEN] > max_n2) atmos_unsuitable = 1 if(min_co2) - if(Environment.gas[/datum/gas/carbon_dioxide] < min_co2) + if(Environment.gas[GAS_ID_CARBON_DIOXIDE] < min_co2) atmos_unsuitable = 1 if(max_co2) - if(Environment.gas[/datum/gas/carbon_dioxide] > max_co2) + if(Environment.gas[GAS_ID_CARBON_DIOXIDE] > max_co2) atmos_unsuitable = 1 //Atmos effect diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/mouse_army.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/mouse_army.dm index f79a459dfb8..f3ffbce3f6d 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/space/mouse_army.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/mouse_army.dm @@ -233,10 +233,10 @@ return var/datum/gas_mixture/GM = new if(prob(10)) - T.assume_gas(/datum/gas/phoron, 100, 1500+T0C) + T.assume_gas(GAS_ID_PHORON, 100, 1500+T0C) T.visible_message("\The [src]'s tank vents a cloud of heated gas!") else - T.assume_gas(/datum/gas/phoron, 5, istype(T) ? T.air.temperature : T20C) + T.assume_gas(GAS_ID_PHORON, 5, istype(T) ? T.air.temperature : T20C) visible_message("\The [src]'s tank ruptures!") T.assume_air(GM) return diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes.dm b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes.dm index e879fa3b0f4..1aa984f4e01 100644 --- a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes.dm +++ b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes.dm @@ -180,7 +180,7 @@ /mob/living/simple_mob/slime/xenobio/dark_purple/proc/ignite() visible_message(SPAN_CRITICAL("\The [src] erupts in an inferno!")) for(var/turf/simulated/target_turf in get_ignition_turfs(25, 2)) - target_turf.assume_gas(/datum/gas/phoron, 30, 1500+T0C) + target_turf.assume_gas(GAS_ID_PHORON, 30, 1500+T0C) spawn(0) target_turf.hotspot_expose(1500+T0C, 400) qdel(src) diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/solargrub_larva.dm b/code/modules/mob/living/simple_mob/subtypes/vore/solargrub_larva.dm index 94897831a70..387a8c5df44 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/solargrub_larva.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/solargrub_larva.dm @@ -95,7 +95,7 @@ var/global/list/grub_machine_overlays = list() if(istype(loc, /obj/machinery)) // to anyone who sees me on git blame, i'm not responsible for this shit code ~silicons - if(machine_effect && (air_master.current_cycle % 30)) + if(machine_effect && (SSair.current_cycle % 30)) for(var/mob/M in GLOB.player_list) SEND_IMAGE(M, machine_effect) if(prob(10)) diff --git a/code/modules/mob/observer/dead/dead.dm b/code/modules/mob/observer/dead/dead.dm index 5d51c0a34eb..c2fa4371a2e 100644 --- a/code/modules/mob/observer/dead/dead.dm +++ b/code/modules/mob/observer/dead/dead.dm @@ -447,19 +447,8 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp var/datum/gas_mixture/environment = usr.loc.return_air() - var/pressure = environment.return_pressure() - var/total_moles = environment.total_moles - to_chat(src, "Results:") - if(abs(pressure - ONE_ATMOSPHERE) < 10) - to_chat(src, "Pressure: [round(pressure,0.1)] kPa") - else - to_chat(src, "Pressure: [round(pressure,0.1)] kPa") - if(total_moles) - for(var/g in environment.gas) - to_chat(src, "[GLOB.meta_gas_names[g]]: [round((environment.gas[g] / total_moles) * 100)]% ([round(environment.gas[g], 0.01)] moles)") - to_chat(src, "Temperature: [round(environment.temperature-T0C,0.1)]°C ([round(environment.temperature,0.1)]K)") - to_chat(src, "Heat Capacity: [round(environment.heat_capacity(),0.1)]") + to_chat(src, jointext(environment.chat_analyzer_scan(NONE, TRUE, TRUE), "
")) /mob/observer/dead/verb/become_mouse() set name = "Become mouse" diff --git a/code/modules/overmap/legacy/overmap_shuttle.dm b/code/modules/overmap/legacy/overmap_shuttle.dm index 8cb609c9f2d..19c6f1649f0 100644 --- a/code/modules/overmap/legacy/overmap_shuttle.dm +++ b/code/modules/overmap/legacy/overmap_shuttle.dm @@ -91,13 +91,13 @@ return 0 //can't launch if you have no fuel TANKS in the ports var/total_flammable_gas_moles = 0 for(var/obj/item/tank/FT in fuel_tanks) - total_flammable_gas_moles += FT.air_contents.get_by_flag(GAS_FLAG_FUEL) + total_flammable_gas_moles += FT.air_contents.moles_by_flag(GAS_FLAG_FUEL) if(total_flammable_gas_moles < fuel_consumption) //not enough fuel return 0 // We are going to succeed if we got to here, so start consuming that fuel var/fuel_to_consume = fuel_consumption for(var/obj/item/tank/FT in fuel_tanks) //loop through tanks, consume their fuel one by one - var/fuel_available = FT.air_contents.get_by_flag(GAS_FLAG_FUEL) + var/fuel_available = FT.air_contents.moles_by_flag(GAS_FLAG_FUEL) if(!fuel_available) // Didn't even have fuel. continue if(fuel_available >= fuel_to_consume) diff --git a/code/modules/power/fission/engine.dm b/code/modules/power/fission/engine.dm index fe2fcc958ea..72625349539 100644 --- a/code/modules/power/fission/engine.dm +++ b/code/modules/power/fission/engine.dm @@ -544,14 +544,14 @@ I'm commenting this out until I have time to make this less stupid. my_mob.maxbodytemp = env.temperature * 1.2 var/list/gaslist = env.gas - my_mob.min_oxy = gaslist[/datum/gas/oxygen] * 0.8 - my_mob.min_tox = gaslist[/datum/gas/phoron] * 0.8 - my_mob.min_n2 = gaslist[/datum/gas/nitrogen] * 0.8 - my_mob.min_co2 = gaslist[/datum/gas/carbon_dioxide] * 0.8 - my_mob.max_oxy = gaslist[/datum/gas/oxygen] * 1.2 - my_mob.max_tox = gaslist[/datum/gas/phoron] * 1.2 - my_mob.max_n2 = gaslist[/datum/gas/nitrogen] * 1.2 - my_mob.max_co2 = gaslist[/datum/gas/carbon_dioxide] * 1.2 + my_mob.min_oxy = gaslist[GAS_ID_OXYGEN] * 0.8 + my_mob.min_tox = gaslist[GAS_ID_PHORON] * 0.8 + my_mob.min_n2 = gaslist[GAS_ID_NITROGEN] * 0.8 + my_mob.min_co2 = gaslist[GAS_ID_CARBON_DIOXIDE] * 0.8 + my_mob.max_oxy = gaslist[GAS_ID_OXYGEN] * 1.2 + my_mob.max_tox = gaslist[GAS_ID_PHORON] * 1.2 + my_mob.max_n2 = gaslist[GAS_ID_NITROGEN] * 1.2 + my_mob.max_co2 = gaslist[GAS_ID_CARBON_DIOXIDE] * 1.2 return else STOP_PROCESSING(SSobj, src) diff --git a/code/modules/power/fusion/core/core_field.dm b/code/modules/power/fusion/core/core_field.dm index 2df45b17c43..35daf97aa66 100644 --- a/code/modules/power/fusion/core/core_field.dm +++ b/code/modules/power/fusion/core/core_field.dm @@ -306,8 +306,8 @@ GLOBAL_VAR_INIT(max_fusion_air_heat, INFINITY) var/turf/T = get_turf(src) if(istype(T)) var/datum/gas_mixture/plasma = new - plasma.adjust_gas(/datum/gas/oxygen, (size*100), 0) - plasma.adjust_gas(/datum/gas/phoron, (size*100), 0) + plasma.adjust_gas(GAS_ID_OXYGEN, (size*100), 0) + plasma.adjust_gas(GAS_ID_PHORON, (size*100), 0) plasma.temperature = (plasma_temperature/2) plasma.update_values() T.assume_air(plasma) @@ -616,8 +616,8 @@ GLOBAL_VAR_INIT(max_fusion_air_heat, INFINITY) var/turf/TT = get_turf(pick(turfs_in_range)) if(istype(TT)) var/datum/gas_mixture/plasma = new - plasma.adjust_gas(/datum/gas/oxygen, (size*100), 0) - plasma.adjust_gas(/datum/gas/phoron, (size*100), 0) + plasma.adjust_gas(GAS_ID_OXYGEN, (size*100), 0) + plasma.adjust_gas(GAS_ID_PHORON, (size*100), 0) plasma.temperature = (plasma_temperature/2) plasma.update_values() TT.assume_air(plasma) @@ -632,8 +632,8 @@ GLOBAL_VAR_INIT(max_fusion_air_heat, INFINITY) var/turf/TT = get_turf(owned_core) if(istype(TT)) var/datum/gas_mixture/plasma = new - plasma.adjust_gas(/datum/gas/oxygen, (size*100), 0) - plasma.adjust_gas(/datum/gas/phoron, (size*100), 0) + plasma.adjust_gas(GAS_ID_OXYGEN, (size*100), 0) + plasma.adjust_gas(GAS_ID_PHORON, (size*100), 0) plasma.temperature = (plasma_temperature/2) plasma.update_values() TT.assume_air(plasma) diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index 2dc86b78f65..a3a1db992f0 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -256,7 +256,7 @@ var/phoron = (sheets+sheet_left)*20 var/datum/gas_mixture/environment = loc.return_air() if (environment) - environment.adjust_gas_temp(/datum/gas/phoron, phoron/10, temperature + T0C) + environment.adjust_gas_temp(GAS_ID_PHORON, phoron/10, temperature + T0C) sheets = 0 sheet_left = 0 diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index c8b4588d35b..1f42f4c4e5f 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -45,13 +45,14 @@ AddComponent(/datum/component/radiation_listener) rad_insulation = active? rad_insulation_active : rad_insulation_inactive + /obj/machinery/power/rad_collector/attack_hand(mob/user, list/params) if(anchored) if(!src.locked) toggle_power() user.visible_message("[user.name] turns the [src.name] [active? "on":"off"].", \ "You turn the [src.name] [active? "on":"off"].") - investigate_log("turned [active?"on":"off"] by [user.key]. [P?"Fuel: [round(P.air_contents.gas[/datum/gas/phoron]/0.29)]%":"It is empty"].","singulo") + investigate_log("turned [active?"on":"off"] by [user.key]. [P?"Fuel: [round(P.air_contents.gas[GAS_ID_PHORON]/0.29)]%":"It is empty"].","singulo") else to_chat(user, "The controls are locked!") @@ -130,10 +131,10 @@ . = ..() var/power_produced = max(0, (strength - flat_loss) * efficiency) var/gas_needed = power_produced * gas_usage_factor - if(!power_produced || !P?.air_contents.gas[/datum/gas/phoron]) + if(!power_produced || !P?.air_contents.gas[GAS_ID_PHORON]) return - P.air_contents.adjust_gas(/datum/gas/phoron, -gas_needed) - if(!P.air_contents.gas[/datum/gas/phoron]) + P.air_contents.adjust_gas(GAS_ID_PHORON, -gas_needed) + if(!P.air_contents.gas[GAS_ID_PHORON]) investigate_log("ran out of gas", INVESTIGATE_SINGULO) eject() stored_power += power_produced @@ -159,9 +160,6 @@ add_overlay(overlays_to_add) - return - - /obj/machinery/power/rad_collector/proc/toggle_power() active = !active rad_insulation = active? rad_insulation_active : rad_insulation_inactive diff --git a/code/modules/power/singularity/particle_accelerator/particle_smasher.dm b/code/modules/power/singularity/particle_accelerator/particle_smasher.dm index bdc43fa3bec..b9436c253a5 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_smasher.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_smasher.dm @@ -44,7 +44,7 @@ . += "\the [I]" /obj/machinery/particle_smasher/attackby(obj/item/W as obj, mob/user as mob) - if(W.type == /obj/item/analyzer) + if(W.type == /obj/item/atmos_analyzer) to_chat(user, "\The [src] reads an energy level of [energy].") else if(istype(W, /obj/item/stack/material) && !target) var/obj/item/stack/material/M = W diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 603185d1877..f0888dbe926 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -318,7 +318,7 @@ damage = max( damage + min( ( (removed.temperature - CRITICAL_TEMPERATURE) / 150 ), damage_inc_limit ) , 0 ) //Ok, 100% oxygen atmosphere = best reaction //Maxes out at 100% oxygen pressure - oxygen = max(min((removed.gas[/datum/gas/oxygen] - (removed.gas[/datum/gas/nitrogen] * NITROGEN_SLOWING_FACTOR)) / removed.total_moles, 1), 0) + oxygen = max(min((removed.gas[GAS_ID_OXYGEN] - (removed.gas[GAS_ID_NITROGEN] * NITROGEN_SLOWING_FACTOR)) / removed.total_moles, 1), 0) //calculate power gain for oxygen reaction var/temp_factor @@ -342,8 +342,8 @@ //Release reaction gasses var/heat_capacity = removed.heat_capacity() - removed.adjust_multi(/datum/gas/phoron, max(device_energy / PHORON_RELEASE_MODIFIER, 0), \ - /datum/gas/oxygen, max((device_energy + removed.temperature - T0C) / OXYGEN_RELEASE_MODIFIER, 0)) + removed.adjust_multi(GAS_ID_PHORON, max(device_energy / PHORON_RELEASE_MODIFIER, 0), \ + GAS_ID_OXYGEN, max((device_energy + removed.temperature - T0C) / OXYGEN_RELEASE_MODIFIER, 0)) var/thermal_power = THERMAL_RELEASE_MODIFIER * device_energy if (debug) diff --git a/code/modules/reagents/Misc-Recipes.dm b/code/modules/reagents/Misc-Recipes.dm index 00ef4ef36e4..f2803a05921 100644 --- a/code/modules/reagents/Misc-Recipes.dm +++ b/code/modules/reagents/Misc-Recipes.dm @@ -422,7 +422,7 @@ /datum/chemical_reaction/napalm/on_reaction(datum/reagents/holder, created_volume) var/turf/location = get_turf(holder.my_atom.loc) for(var/turf/simulated/floor/target_tile in range(0,location)) - target_tile.assume_gas(/datum/gas/volatile_fuel, created_volume, 400+T0C) + target_tile.assume_gas(GAS_ID_VOLATILE_FUEL, created_volume, 400+T0C) spawn (0) target_tile.hotspot_expose(700, 400) holder.del_reagent("napalm") return @@ -986,7 +986,7 @@ sleep(50) var/turf/location = get_turf(holder.my_atom.loc) for(var/turf/simulated/floor/target_tile in range(0,location)) - target_tile.assume_gas(/datum/gas/phoron, 25, 1400) + target_tile.assume_gas(GAS_ID_PHORON, 25, 1400) spawn (0) target_tile.hotspot_expose(700, 400) diff --git a/code/modules/reagents/chemistry/reagents/Chemistry-Reagents-Toxins.dm b/code/modules/reagents/chemistry/reagents/Chemistry-Reagents-Toxins.dm index e62ae5d11b8..465d2bbff39 100644 --- a/code/modules/reagents/chemistry/reagents/Chemistry-Reagents-Toxins.dm +++ b/code/modules/reagents/chemistry/reagents/Chemistry-Reagents-Toxins.dm @@ -95,9 +95,9 @@ /datum/reagent/toxin/hydrophoron/touch_turf(turf/simulated/T) if(!istype(T)) return - T.assume_gas(/datum/gas/phoron, CEILING(volume/2, 1), T20C) + T.assume_gas(GAS_ID_PHORON, CEILING(volume/2, 1), T20C) for(var/turf/simulated/floor/target_tile in range(0,T)) - target_tile.assume_gas(/datum/gas/phoron, volume/2, 400+T0C) + target_tile.assume_gas(GAS_ID_PHORON, volume/2, 400+T0C) spawn (0) target_tile.hotspot_expose(700, 400) remove_self(volume) @@ -154,7 +154,7 @@ /datum/reagent/toxin/phoron/touch_turf(turf/simulated/T, amount) if(!istype(T)) return - T.assume_gas(/datum/gas/volatile_fuel, amount, T20C) + T.assume_gas(GAS_ID_VOLATILE_FUEL, amount, T20C) remove_self(amount) /datum/reagent/toxin/cyanide //Fast and Lethal diff --git a/code/modules/reagents/distilling/distilling.dm b/code/modules/reagents/distilling/distilling.dm index 043015b3c93..bfce4bbdc5c 100644 --- a/code/modules/reagents/distilling/distilling.dm +++ b/code/modules/reagents/distilling/distilling.dm @@ -12,10 +12,7 @@ icon_state = "distiller" var/base_state // The string var used in update icon for overlays, either set manually or initialized. - power_rating = 3000 - power_losses = 240 - - var/on = FALSE + var/power_rating = 3000 var/target_temp = T20C @@ -210,7 +207,7 @@ update_icon() /obj/machinery/portable_atmospherics/powered/reagent_distillery/use_power(var/amount, var/chan = -1) - last_power_draw = amount + last_power_draw_legacy = amount if(use_cell && cell && cell.charge) var/needed = DYNAMIC_W_TO_CELL_UNITS(amount, 1) needed -= cell.use(needed) diff --git a/code/modules/research/designs/bio_devices.dm b/code/modules/research/designs/bio_devices.dm index 71222e7cc0f..e74527188e6 100644 --- a/code/modules/research/designs/bio_devices.dm +++ b/code/modules/research/designs/bio_devices.dm @@ -51,7 +51,7 @@ id = "plant_analyzer" req_tech = list(TECH_MAGNET = 2, TECH_BIO = 2) materials = list(MAT_STEEL = 500, MAT_GLASS = 500) - build_path = /obj/item/analyzer/plant_analyzer + build_path = /obj/item/plant_analyzer /datum/design/science/biotech/nif design_name = "nanite implant framework" diff --git a/code/modules/research/designs/engineering.dm b/code/modules/research/designs/engineering.dm index 9e12c9495cc..5b8c37a5ca2 100644 --- a/code/modules/research/designs/engineering.dm +++ b/code/modules/research/designs/engineering.dm @@ -72,7 +72,7 @@ id = "atmosanalyzer" req_tech = list(TECH_ENGINEERING = 2) materials = list(MAT_STEEL = 200, MAT_GLASS = 100) - build_path = /obj/item/analyzer + build_path = /obj/item/atmos_analyzer /datum/design/science/engineering/atmosanalyzerlongrange design_name = "Long Range Atmospheric Analyzer" @@ -80,4 +80,4 @@ id = "atmosanalyzerlr" req_tech = list(TECH_ENGINEERING = 4) materials = list(MAT_STEEL = 300, MAT_GLASS = 300) - build_path = /obj/item/analyzer/longrange + build_path = /obj/item/atmos_analyzer/longrange diff --git a/code/modules/resleeving/infomorph.dm b/code/modules/resleeving/infomorph.dm index 02c840ceb87..95f05fc7a3c 100644 --- a/code/modules/resleeving/infomorph.dm +++ b/code/modules/resleeving/infomorph.dm @@ -581,7 +581,7 @@ var/global/list/default_infomorph_software = list() to_chat(src, "Communication circuit reinitialized. Speech and messaging functionality restored.") //Only every so often - if(air_master.current_cycle%30 == 1) + if(SSair.current_cycle%30 == 1) SStranscore.m_backup(mind) if(health <= 0) diff --git a/code/modules/resleeving/infomorph_software.dm b/code/modules/resleeving/infomorph_software.dm index 8dc7cc9dde7..ba927afbd52 100644 --- a/code/modules/resleeving/infomorph_software.dm +++ b/code/modules/resleeving/infomorph_software.dm @@ -265,7 +265,7 @@ var/gases[0] for(var/g in env.gas) var/gas[0] - gas["name"] = GLOB.meta_gas_names[g] + gas["name"] = global.gas_data.names[g] gas["percent"] = round((env.gas[g] / t_moles) * 100) gases[++gases.len] = gas data["gas"] = gases diff --git a/code/modules/shuttles/shuttles_web.dm b/code/modules/shuttles/shuttles_web.dm index b51afe5e5da..a72fc239b5d 100644 --- a/code/modules/shuttles/shuttles_web.dm +++ b/code/modules/shuttles/shuttles_web.dm @@ -457,10 +457,10 @@ var/total_moles = environment.total_moles if(total_moles) - var/o2_level = environment.gas[/datum/gas/oxygen]/total_moles - var/n2_level = environment.gas[/datum/gas/nitrogen]/total_moles - var/co2_level = environment.gas[/datum/gas/carbon_dioxide]/total_moles - var/phoron_level = environment.gas[/datum/gas/phoron]/total_moles + var/o2_level = environment.gas[GAS_ID_OXYGEN]/total_moles + var/n2_level = environment.gas[GAS_ID_NITROGEN]/total_moles + var/co2_level = environment.gas[GAS_ID_CARBON_DIOXIDE]/total_moles + var/phoron_level = environment.gas[GAS_ID_PHORON]/total_moles var/unknown_level = 1-(o2_level+n2_level+co2_level+phoron_level) aircontents = list(\ "pressure" = "[round(pressure,0.1)]",\ diff --git a/code/modules/species/outsider/scori.dm b/code/modules/species/outsider/scori.dm index 7cc586cacc1..ec470984e74 100644 --- a/code/modules/species/outsider/scori.dm +++ b/code/modules/species/outsider/scori.dm @@ -48,8 +48,8 @@ siemens_coefficient = 1.5 //Adapted to Surt's hot, thin atmosphere. - breath_type = /datum/gas/carbon_dioxide - exhale_type = /datum/gas/oxygen + breath_type = GAS_ID_CARBON_DIOXIDE + exhale_type = GAS_ID_OXYGEN heat_discomfort_level = T0C+20 diff --git a/code/modules/species/outsider/vox.dm b/code/modules/species/outsider/vox.dm index 99b7ba6805f..3a5938eabc5 100644 --- a/code/modules/species/outsider/vox.dm +++ b/code/modules/species/outsider/vox.dm @@ -52,8 +52,8 @@ gluttonous = 0 - breath_type = /datum/gas/phoron - poison_type = /datum/gas/oxygen + breath_type = GAS_ID_PHORON + poison_type = GAS_ID_OXYGEN siemens_coefficient = 0.2 species_flags = NO_SCAN | CONTAMINATION_IMMUNE diff --git a/code/modules/species/species.dm b/code/modules/species/species.dm index fa74ba845f6..f24a8524d32 100644 --- a/code/modules/species/species.dm +++ b/code/modules/species/species.dm @@ -347,11 +347,11 @@ //? Breath /// Non-oxygen gas breathed, if any. - var/breath_type = /datum/gas/oxygen + var/breath_type = GAS_ID_OXYGEN /// Poisonous air. - var/poison_type = /datum/gas/phoron + var/poison_type = GAS_ID_PHORON /// Exhaled gas type. - var/exhale_type = /datum/gas/carbon_dioxide + var/exhale_type = GAS_ID_CARBON_DIOXIDE /// Species will try to stabilize at this temperature. (also affects temperature processing) var/body_temperature = 310.15 @@ -567,10 +567,10 @@ return sanitizeName(name, MAX_NAME_LEN) GLOBAL_LIST_INIT(species_oxygen_tank_by_gas, list( - /datum/gas/oxygen = /obj/item/tank/emergency/oxygen, - /datum/gas/nitrogen = /obj/item/tank/emergency/nitrogen, - /datum/gas/phoron = /obj/item/tank/emergency/phoron, - /datum/gas/carbon_dioxide = /obj/item/tank/emergency/carbon_dioxide + GAS_ID_OXYGEN = /obj/item/tank/emergency/oxygen, + GAS_ID_NITROGEN = /obj/item/tank/emergency/nitrogen, + GAS_ID_PHORON = /obj/item/tank/emergency/phoron, + GAS_ID_CARBON_DIOXIDE = /obj/item/tank/emergency/carbon_dioxide )) /datum/species/proc/equip_survival_gear(var/mob/living/carbon/human/H,var/extendedtank = 0,var/comprehensive = 0) diff --git a/code/modules/species/station/alraune.dm b/code/modules/species/station/alraune.dm index e5fb540f804..067e8bf91d9 100644 --- a/code/modules/species/station/alraune.dm +++ b/code/modules/species/station/alraune.dm @@ -35,9 +35,9 @@ selects_bodytype = TRUE body_temperature = T20C - breath_type = /datum/gas/carbon_dioxide - poison_type = /datum/gas/phoron - exhale_type = /datum/gas/oxygen + breath_type = GAS_ID_CARBON_DIOXIDE + poison_type = GAS_ID_PHORON + exhale_type = GAS_ID_OXYGEN // Heat and cold resistances are 20 degrees broader on the level 1 range, level 2 is default, level 3 is much weaker, halfway between L2 and normal L3. // Essentially, they can tolerate a broader range of comfortable temperatures, but suffer more at extremes. @@ -257,8 +257,8 @@ H.phoron_alert = 0 // If there's some other shit in the air lets deal with it here. - if(breath.gas[/datum/gas/nitrous_oxide]) - var/SA_pp = (breath.gas[/datum/gas/nitrous_oxide] / breath.total_moles) * breath_pressure + if(breath.gas[GAS_ID_NITROUS_OXIDE]) + var/SA_pp = (breath.gas[GAS_ID_NITROUS_OXIDE] / breath.total_moles) * breath_pressure // Enough to make us paralysed for a bit if(SA_pp > SA_para_min) @@ -274,7 +274,7 @@ else if(SA_pp > 0.15) if(prob(20)) spawn(0) H.emote(pick("giggle", "laugh")) - breath.adjust_gas(/datum/gas/nitrous_oxide, -breath.gas[/datum/gas/nitrous_oxide]/6, update = 0) //update after + breath.adjust_gas(GAS_ID_NITROUS_OXIDE, -breath.gas[GAS_ID_NITROUS_OXIDE]/6, update = 0) //update after // Were we able to breathe? if (failed_inhale || failed_exhale) diff --git a/code/modules/species/station/phoronoids.dm b/code/modules/species/station/phoronoids.dm index 5f032de0d26..063610f61a5 100644 --- a/code/modules/species/station/phoronoids.dm +++ b/code/modules/species/station/phoronoids.dm @@ -46,8 +46,8 @@ flash_mod = 2 chemOD_mod = 1 // turns out this is just damage - breath_type = /datum/gas/phoron - poison_type = /datum/gas/oxygen + breath_type = GAS_ID_PHORON + poison_type = GAS_ID_OXYGEN siemens_coefficient = 1 speech_bubble_appearance = "phoron" @@ -90,7 +90,7 @@ /// In case they're ever set on fire while wearing a spacesuit, we don't want the message that they're reacting with the atmosphere. var/enviroment_bad = FALSE - if(environment.gas[/datum/gas/oxygen] > 0.5) + if(environment.gas[GAS_ID_OXYGEN] > 0.5) // Now any airtight spessuit works for them. Which means exploration voidsuits work. :O if(H.wear_suit && istype(H.wear_suit,/obj/item/clothing/suit/space) && H.head && istype(H.head,/obj/item/clothing/head/helmet/space)) return diff --git a/code/modules/species/station/standard/zaddat.dm b/code/modules/species/station/standard/zaddat.dm index 73d08fdc347..d8ee4426176 100644 --- a/code/modules/species/station/standard/zaddat.dm +++ b/code/modules/species/station/standard/zaddat.dm @@ -50,7 +50,7 @@ warning_low_pressure = 300 // Low pressure warning. hazard_low_pressure = 220 // Dangerously low pressure. safe_pressure = 400 - poison_type = /datum/gas/nitrogen // technically it's a partial pressure thing but IDK if we can emulate that + poison_type = GAS_ID_NITROGEN // technically it's a partial pressure thing but IDK if we can emulate that genders = list(FEMALE, PLURAL) //females are polyp-producing, infertile females and males are nigh-identical diff --git a/code/modules/species/station/xenochimera.dm b/code/modules/species/station/xenochimera.dm index 88107cedd63..28c9b08365e 100644 --- a/code/modules/species/station/xenochimera.dm +++ b/code/modules/species/station/xenochimera.dm @@ -37,9 +37,9 @@ catalogue_data = list(/datum/category_item/catalogue/fauna/xenochimera) //rarity_value = 4 - breath_type = /datum/gas/oxygen - poison_type = /datum/gas/phoron - exhale_type = /datum/gas/carbon_dioxide + breath_type = GAS_ID_OXYGEN + poison_type = GAS_ID_PHORON + exhale_type = GAS_ID_CARBON_DIOXIDE hazard_high_pressure = HAZARD_HIGH_PRESSURE warning_high_pressure = WARNING_HIGH_PRESSURE @@ -421,10 +421,10 @@ set category = "Abilities" var/list/gas_choices = list( - "oxygen" = /datum/gas/oxygen, - "phoron" = /datum/gas/phoron, - "nitrogen" = /datum/gas/nitrogen, - "carbon dioxide" = /datum/gas/carbon_dioxide + "oxygen" = GAS_ID_OXYGEN, + "phoron" = GAS_ID_PHORON, + "nitrogen" = GAS_ID_NITROGEN, + "carbon dioxide" = GAS_ID_CARBON_DIOXIDE ) var/choice if(target && target != src) @@ -443,20 +443,20 @@ target.visible_message("[src] begins to burrow their digits into [target], slithering down their throat!", "You feel an extremely uncomfortable slithering sensation going through your throat and into your chest...") if(do_after(src,15 SECONDS)) switch(resp_biomorph) - if(/datum/gas/oxygen) - target.species.breath_type = /datum/gas/oxygen - target.species.poison_type = /datum/gas/phoron - target.species.exhale_type = /datum/gas/carbon_dioxide - if(/datum/gas/phoron) - target.species.breath_type = /datum/gas/phoron + if(GAS_ID_OXYGEN) + target.species.breath_type = GAS_ID_OXYGEN + target.species.poison_type = GAS_ID_PHORON + target.species.exhale_type = GAS_ID_CARBON_DIOXIDE + if(GAS_ID_PHORON) + target.species.breath_type = GAS_ID_PHORON target.species.poison_type = null - target.species.exhale_type = /datum/gas/nitrogen - if(/datum/gas/nitrogen) - target.species.breath_type = /datum/gas/nitrogen + target.species.exhale_type = GAS_ID_NITROGEN + if(GAS_ID_NITROGEN) + target.species.breath_type = GAS_ID_NITROGEN target.species.poison_type = null - if(/datum/gas/carbon_dioxide) - target.species.breath_type = /datum/gas/carbon_dioxide - target.species.exhale_type = /datum/gas/oxygen + if(GAS_ID_CARBON_DIOXIDE) + target.species.breath_type = GAS_ID_CARBON_DIOXIDE + target.species.exhale_type = GAS_ID_OXYGEN if(target == src) to_chat("It is done.") else diff --git a/code/modules/species/xenomorphs/alien_species.dm b/code/modules/species/xenomorphs/alien_species.dm index 20b21f2e7cc..d3995d105e4 100644 --- a/code/modules/species/xenomorphs/alien_species.dm +++ b/code/modules/species/xenomorphs/alien_species.dm @@ -120,7 +120,7 @@ var/datum/gas_mixture/environment = T.return_air() if(!environment) return - if(environment.gas[/datum/gas/phoron] > 0 || locate(/obj/effect/alien/weeds) in T) + if(environment.gas[GAS_ID_PHORON] > 0 || locate(/obj/effect/alien/weeds) in T) if(!regenerate(H)) var/obj/item/organ/internal/xenos/plasmavessel/P = H.internal_organs_by_name[O_PLASMA] P.stored_plasma += weeds_plasma_rate diff --git a/code/modules/surgery/external_repair.dm b/code/modules/surgery/external_repair.dm index b1f89070018..21ead186371 100644 --- a/code/modules/surgery/external_repair.dm +++ b/code/modules/surgery/external_repair.dm @@ -32,7 +32,7 @@ /datum/surgery_step/repairflesh/scan_injury allowed_tools = list( /obj/item/healthanalyzer = 100, - /obj/item/analyzer = 10 + /obj/item/atmos_analyzer = 10 ) priority = 2 diff --git a/code/modules/tgui/modules/atmos_control.dm b/code/modules/tgui/modules/atmos_control.dm index a788e5996b3..8ad661055a3 100644 --- a/code/modules/tgui/modules/atmos_control.dm +++ b/code/modules/tgui/modules/atmos_control.dm @@ -12,7 +12,7 @@ access.req_one_access = req_one_access if(monitored_alarm_ids) - for(var/obj/machinery/alarm/alarm in GLOB.machines) + for(var/obj/machinery/air_alarm/alarm in GLOB.machines) if(alarm.alarm_id && (alarm.alarm_id in monitored_alarm_ids)) monitored_alarms += alarm // machines may not yet be ordered at this point @@ -25,7 +25,7 @@ switch(action) if("alarm") if(ui_ref) - var/obj/machinery/alarm/alarm = locate(params["alarm"]) in (monitored_alarms.len ? monitored_alarms : GLOB.machines) + var/obj/machinery/air_alarm/alarm = locate(params["alarm"]) in (monitored_alarms.len ? monitored_alarms : GLOB.machines) if(alarm) var/datum/ui_state/TS = generate_state(alarm) alarm.ui_interact(usr, parent_ui = ui_ref, state = TS) @@ -53,7 +53,7 @@ // TODO: Move these to a cache, similar to cameras var/alarms[0] - for(var/obj/machinery/alarm/alarm in (monitored_alarms.len ? monitored_alarms : GLOB.machines)) + for(var/obj/machinery/air_alarm/alarm in (monitored_alarms.len ? monitored_alarms : GLOB.machines)) if(!monitored_alarms.len && alarm.alarms_hidden) continue if(!(alarm.z in map_levels)) @@ -88,7 +88,7 @@ /datum/ui_state/air_alarm_remote var/datum/tgui_module_old/atmos_control/atmos_control = null - var/obj/machinery/alarm/air_alarm = null + var/obj/machinery/air_alarm/air_alarm = null /datum/ui_state/air_alarm_remote/can_use_topic(src_object, mob/user) if(!atmos_control.ui_ref) diff --git a/code/modules/tgui/modules/supermatter_monitor.dm b/code/modules/tgui/modules/supermatter_monitor.dm index e9ab0b9e6ef..43df17079fa 100644 --- a/code/modules/tgui/modules/supermatter_monitor.dm +++ b/code/modules/tgui/modules/supermatter_monitor.dm @@ -59,11 +59,11 @@ data["SM_History"] = active.history //data["SM_EPR"] = active.get_epr() if(air.total_moles) - data["SM_gas_O2"] = round(100*air.gas[/datum/gas/oxygen]/air.total_moles,0.01) - data["SM_gas_CO2"] = round(100*air.gas[/datum/gas/carbon_dioxide]/air.total_moles,0.01) - data["SM_gas_N2"] = round(100*air.gas[/datum/gas/nitrogen]/air.total_moles,0.01) - data["SM_gas_PH"] = round(100*air.gas[/datum/gas/phoron]/air.total_moles,0.01) - data["SM_gas_N2O"] = round(100*air.gas["/datum/gas/nitrous_oxide"]/air.total_moles,0.01) + data["SM_gas_O2"] = round(100*air.gas[GAS_ID_OXYGEN]/air.total_moles,0.01) + data["SM_gas_CO2"] = round(100*air.gas[GAS_ID_CARBON_DIOXIDE]/air.total_moles,0.01) + data["SM_gas_N2"] = round(100*air.gas[GAS_ID_NITROGEN]/air.total_moles,0.01) + data["SM_gas_PH"] = round(100*air.gas[GAS_ID_PHORON]/air.total_moles,0.01) + data["SM_gas_N2O"] = round(100*air.gas["GAS_ID_NITROUS_OXIDE"]/air.total_moles,0.01) else data["SM_gas_O2"] = 0 data["SM_gas_CO2"] = 0 diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index fbe4b2310cc..8415f5450fd 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -74,6 +74,7 @@ /// A trait source when adding traits through unit tests #define TRAIT_SOURCE_UNIT_TESTS "unit_tests" +#include "atmospherics/_atmospherics.dm" #include "core/_core.dm" #include "datum/_datum.dm" #include "elements/_elements.dm" diff --git a/code/modules/unit_tests/atmospherics/_atmospherics.dm b/code/modules/unit_tests/atmospherics/_atmospherics.dm new file mode 100644 index 00000000000..5ef0a76d402 --- /dev/null +++ b/code/modules/unit_tests/atmospherics/_atmospherics.dm @@ -0,0 +1 @@ +#include "gases.dm" diff --git a/code/modules/unit_tests/atmospherics/gases.dm b/code/modules/unit_tests/atmospherics/gases.dm new file mode 100644 index 00000000000..ab1ea95927b --- /dev/null +++ b/code/modules/unit_tests/atmospherics/gases.dm @@ -0,0 +1,17 @@ +// empty for now + +/datum/unit_test/hardcoded_gas_sanity/Run() + for(var/datum/gas/path as anything in subtypesof(/datum/gas)) + if(initial(path.abstract_type) == path) + continue + var/groups = initial(path.gas_groups) + var/flags = initial(path.gas_flags) + if(groups & GAS_GROUP_CORE) + if((flags & (GAS_FLAG_CORE | GAS_FLAG_FILTERABLE)) != (GAS_FLAG_CORE | GAS_FLAG_FILTERABLE)) + Fail("[path] didn't have either core or filterable flags even though it was a core group.") + else if(!groups) + Fail("[path] has no gas groups.") + else if(!(groups & GAS_GROUPS_FILTERABLE) && !(flags & GAS_FLAG_FILTERABLE)) + Fail("[path] is not scrubbable through any means; this is bad.") + // else if((groups & GAS_GROUP_UNKNOWN) && (flags & GAS_FLAG_FILTERABLE)) + // Fail("[path] is unknown/alien but filterable, why is it unknown if it is filterable?") diff --git a/code/modules/unit_tests/map_tests.dm b/code/modules/unit_tests/map_tests.dm index aa5fb271bbd..113c5647a6c 100644 --- a/code/modules/unit_tests/map_tests.dm +++ b/code/modules/unit_tests/map_tests.dm @@ -90,10 +90,10 @@ /datum/unit_test/active_edges/Run() - var/active_edges = air_master.active_edges.len + var/active_edges = SSair.active_edges.len var/list/edge_log = list() if(active_edges) - for(var/datum/zas_edge/E in air_master.active_edges) + for(var/datum/zas_edge/E in SSair.active_edges) edge_log += "Active Edge [E] ([E.type])" for(var/turf/T in E.connecting_turfs) edge_log += "+--- Connecting Turf [T] @ [T.x], [T.y], [T.z]" diff --git a/code/modules/unit_tests/quick_swap_sanity.dm b/code/modules/unit_tests/quick_swap_sanity.dm index 85e73f9b6ae..bd6047755f4 100644 --- a/code/modules/unit_tests/quick_swap_sanity.dm +++ b/code/modules/unit_tests/quick_swap_sanity.dm @@ -6,7 +6,7 @@ var/obj/item/coat = allocate(/obj/item/clothing/suit/hooded/wintercoat/medical) TEST_ASSERT(human.equip_to_slot_if_possible(coat, ITEM_SLOT_OCLOTHING), "Couldn't equip winter coat") - var/obj/item/analyzer = allocate(/obj/item/healthanalyzer) + var/obj/item/atmos_analyzer = allocate(/obj/item/healthanalyzer) TEST_ASSERT(human.equip_to_slot_if_possible(analyzer, ITEM_SLOT_SUITSTORE), "Couldn't equip health analyzer") // Then, have them quick swap between the coat and a space suit diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index 85f8d57ec24..ffc8afec599 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -532,8 +532,8 @@ /datum/gas_mixture/belly_air/New() . = ..() gas = list( - /datum/gas/oxygen = 21, - /datum/gas/nitrogen = 79) + GAS_ID_OXYGEN = 21, + GAS_ID_NITROGEN = 79) // Procs for micros stuffed into boots and the like to escape from them /mob/living/proc/escape_clothes(obj/item/clothing/C) diff --git a/code/modules/vore/fluffstuff/custom_clothes.dm b/code/modules/vore/fluffstuff/custom_clothes.dm index a389f69ab41..1d7fbc241c4 100644 --- a/code/modules/vore/fluffstuff/custom_clothes.dm +++ b/code/modules/vore/fluffstuff/custom_clothes.dm @@ -338,7 +338,7 @@ body_cover_flags = UPPER_TORSO|LOWER_TORSO|ARMS permeability_coefficient = 0.50 allowed = list( - /obj/item/flashlight, /obj/item/analyzer, + /obj/item/flashlight, /obj/item/atmos_analyzer, /obj/item/radio, /obj/item/tank/emergency/oxygen, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/reagent_containers/dropper,/obj/item/reagent_containers/syringe, diff --git a/code/modules/xenoarcheaology/artifacts/artifact.dm b/code/modules/xenoarcheaology/artifacts/artifact.dm index 28fba6a0455..b29df379625 100644 --- a/code/modules/xenoarcheaology/artifacts/artifact.dm +++ b/code/modules/xenoarcheaology/artifacts/artifact.dm @@ -93,13 +93,13 @@ else if(env.temperature > 375) trigger_hot = 1 - if(env.gas[/datum/gas/phoron] >= 2) + if(env.gas[GAS_ID_PHORON] >= 2) trigger_phoron = 1 - if(env.gas[/datum/gas/oxygen] >= 2) + if(env.gas[GAS_ID_OXYGEN] >= 2) trigger_oxy = 1 - if(env.gas[/datum/gas/carbon_dioxide] >= 2) + if(env.gas[GAS_ID_CARBON_DIOXIDE] >= 2) trigger_co2 = 1 - if(env.gas[/datum/gas/nitrogen] >= 2) + if(env.gas[GAS_ID_NITROGEN] >= 2) trigger_nitro = 1 //COLD ACTIVATION diff --git a/code/modules/xenoarcheaology/artifacts/replicator.dm b/code/modules/xenoarcheaology/artifacts/replicator.dm index cb00da1b1a4..057630e05b2 100644 --- a/code/modules/xenoarcheaology/artifacts/replicator.dm +++ b/code/modules/xenoarcheaology/artifacts/replicator.dm @@ -29,7 +29,7 @@ /obj/structure/closet/acloset, /mob/living/simple_mob/mechanical/viscerator, /mob/living/simple_mob/mechanical/hivebot, - /obj/item/analyzer, + /obj/item/atmos_analyzer, /obj/item/camera, /obj/item/flash, /obj/item/flashlight, diff --git a/code/modules/xenoarcheaology/effects/gasco2.dm b/code/modules/xenoarcheaology/effects/gasco2.dm index f006759d0c1..d24e653ae91 100644 --- a/code/modules/xenoarcheaology/effects/gasco2.dm +++ b/code/modules/xenoarcheaology/effects/gasco2.dm @@ -10,10 +10,10 @@ if(holder) var/turf/holder_loc = holder.loc if(istype(holder_loc)) - holder_loc.assume_gas(/datum/gas/carbon_dioxide, rand(2, 15)) + holder_loc.assume_gas(GAS_ID_CARBON_DIOXIDE, rand(2, 15)) /datum/artifact_effect/gasco2/DoEffectAura() if(holder) var/turf/holder_loc = holder.loc if(istype(holder_loc)) - holder_loc.assume_gas(/datum/gas/carbon_dioxide, pick(0, 0, 0.1, rand())) + holder_loc.assume_gas(GAS_ID_CARBON_DIOXIDE, pick(0, 0, 0.1, rand())) diff --git a/code/modules/xenoarcheaology/effects/gasnitro.dm b/code/modules/xenoarcheaology/effects/gasnitro.dm index 285a9f8a6a9..4cd7b0af20a 100644 --- a/code/modules/xenoarcheaology/effects/gasnitro.dm +++ b/code/modules/xenoarcheaology/effects/gasnitro.dm @@ -10,10 +10,10 @@ if(holder) var/turf/holder_loc = holder.loc if(istype(holder_loc)) - holder_loc.assume_gas(/datum/gas/nitrogen, rand(2, 15)) + holder_loc.assume_gas(GAS_ID_NITROGEN, rand(2, 15)) /datum/artifact_effect/gasnitro/DoEffectAura() if(holder) var/turf/holder_loc = holder.loc if(istype(holder_loc)) - holder_loc.assume_gas(/datum/gas/nitrogen, pick(0, 0, 0.1, rand())) + holder_loc.assume_gas(GAS_ID_NITROGEN, pick(0, 0, 0.1, rand())) diff --git a/code/modules/xenoarcheaology/effects/gasoxy.dm b/code/modules/xenoarcheaology/effects/gasoxy.dm index 488ffd68ce7..71ab3bd0231 100644 --- a/code/modules/xenoarcheaology/effects/gasoxy.dm +++ b/code/modules/xenoarcheaology/effects/gasoxy.dm @@ -10,10 +10,10 @@ if(holder) var/turf/holder_loc = holder.loc if(istype(holder_loc)) - holder_loc.assume_gas(/datum/gas/oxygen, rand(2, 15)) + holder_loc.assume_gas(GAS_ID_OXYGEN, rand(2, 15)) /datum/artifact_effect/gasoxy/DoEffectAura() if(holder) var/turf/holder_loc = holder.loc if(istype(holder_loc)) - holder_loc.assume_gas(/datum/gas/oxygen, pick(0, 0, 0.1, rand())) + holder_loc.assume_gas(GAS_ID_OXYGEN, pick(0, 0, 0.1, rand())) diff --git a/code/modules/xenoarcheaology/effects/gasphoron.dm b/code/modules/xenoarcheaology/effects/gasphoron.dm index 2dbe0775feb..8a6dfe11b94 100644 --- a/code/modules/xenoarcheaology/effects/gasphoron.dm +++ b/code/modules/xenoarcheaology/effects/gasphoron.dm @@ -10,10 +10,10 @@ if(holder) var/turf/holder_loc = holder.loc if(istype(holder_loc)) - holder_loc.assume_gas(/datum/gas/phoron, rand(2, 15)) + holder_loc.assume_gas(GAS_ID_PHORON, rand(2, 15)) /datum/artifact_effect/gasphoron/DoEffectAura() if(holder) var/turf/holder_loc = holder.loc if(istype(holder_loc)) - holder_loc.assume_gas(/datum/gas/phoron, pick(0, 0, 0.1, rand())) + holder_loc.assume_gas(GAS_ID_PHORON, pick(0, 0, 0.1, rand())) diff --git a/code/modules/xenoarcheaology/effects/gassleeping.dm b/code/modules/xenoarcheaology/effects/gassleeping.dm index 6043bc72dc2..e86b9fc2d62 100644 --- a/code/modules/xenoarcheaology/effects/gassleeping.dm +++ b/code/modules/xenoarcheaology/effects/gassleeping.dm @@ -10,10 +10,10 @@ if(holder) var/turf/holder_loc = holder.loc if(istype(holder_loc)) - holder_loc.assume_gas(/datum/gas/nitrous_oxide, rand(2, 15)) + holder_loc.assume_gas(GAS_ID_NITROUS_OXIDE, rand(2, 15)) /datum/artifact_effect/gassleeping/DoEffectAura() if(holder) var/turf/holder_loc = holder.loc if(istype(holder_loc)) - holder_loc.assume_gas(/datum/gas/nitrous_oxide, pick(0, 0, 0.1, rand())) + holder_loc.assume_gas(GAS_ID_NITROUS_OXIDE, pick(0, 0, 0.1, rand())) diff --git a/code/modules/xenoarcheaology/misc.dm b/code/modules/xenoarcheaology/misc.dm index cf32e87aa1c..f4597cd4e79 100644 --- a/code/modules/xenoarcheaology/misc.dm +++ b/code/modules/xenoarcheaology/misc.dm @@ -90,8 +90,8 @@ /obj/item/paper_bin, /obj/item/hand_labeler) -/obj/machinery/alarm/isolation +/obj/machinery/air_alarm/isolation req_one_access = list(ACCESS_SCIENCE_MAIN, ACCESS_ENGINEERING_ATMOS, ACCESS_ENGINEERING_ENGINE) -/obj/machinery/alarm/monitor/isolation +/obj/machinery/air_alarm/monitor/isolation req_one_access = list(ACCESS_SCIENCE_MAIN, ACCESS_ENGINEERING_ATMOS, ACCESS_ENGINEERING_ENGINE) diff --git a/code/modules/xenobio/items/extracts.dm b/code/modules/xenobio/items/extracts.dm index 347e5f99c6c..4bb9a90e313 100644 --- a/code/modules/xenobio/items/extracts.dm +++ b/code/modules/xenobio/items/extracts.dm @@ -331,8 +331,8 @@ return for(var/turf/simulated/target_turf in view(2, T)) - target_turf.assume_gas(/datum/gas/volatile_fuel, 33, 1500+T0C) - target_turf.assume_gas(/datum/gas/oxygen, 66, 1500+T0C) + target_turf.assume_gas(GAS_ID_VOLATILE_FUEL, 33, 1500+T0C) + target_turf.assume_gas(GAS_ID_OXYGEN, 66, 1500+T0C) spawn(0) target_turf.hotspot_expose(1500+T0C, 400) diff --git a/icons/effects/atmospherics.dmi b/icons/effects/atmospherics.dmi deleted file mode 100644 index b13848277c3..00000000000 Binary files a/icons/effects/atmospherics.dmi and /dev/null differ diff --git a/icons/modules/atmospherics/components/trinary/molar_filter.dmi b/icons/modules/atmospherics/components/trinary/molar_filter.dmi new file mode 100644 index 00000000000..fe86fd9bd5d Binary files /dev/null and b/icons/modules/atmospherics/components/trinary/molar_filter.dmi differ diff --git a/icons/modules/atmospherics/gas.dmi b/icons/modules/atmospherics/gas.dmi new file mode 100644 index 00000000000..e272053fd4e Binary files /dev/null and b/icons/modules/atmospherics/gas.dmi differ diff --git a/icons/obj/pipe-item.dmi b/icons/obj/pipe-item.dmi index 073aed84224..c29f8abbe3d 100644 Binary files a/icons/obj/pipe-item.dmi and b/icons/obj/pipe-item.dmi differ diff --git a/maps/away_missions/140x140/snow_outpost.dmm b/maps/away_missions/140x140/snow_outpost.dmm index a76c17ff038..19d4becb94a 100644 --- a/maps/away_missions/140x140/snow_outpost.dmm +++ b/maps/away_missions/140x140/snow_outpost.dmm @@ -511,7 +511,7 @@ icon_state = "map_vent_out"; pressure_checks = 1; pressure_checks_default = 1; - use_power = 1 + on = 1 }, /turf/simulated/floor/tiled/white, /area/awaymission/snow_outpost/powered) @@ -553,7 +553,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/tiled/white, /area/awaymission/snow_outpost/powered) @@ -2596,7 +2596,7 @@ icon_state = "map_vent_out"; pressure_checks = 1; pressure_checks_default = 1; - use_power = 1 + on = 1 }, /obj/item/stack/material/phoron, /obj/machinery/light/flicker{ diff --git a/maps/away_missions/140x140/snowfield.dmm b/maps/away_missions/140x140/snowfield.dmm index c721218f3d5..137a2fda538 100644 --- a/maps/away_missions/140x140/snowfield.dmm +++ b/maps/away_missions/140x140/snowfield.dmm @@ -644,7 +644,7 @@ "bL" = ( /obj/structure/table/glass, /obj/item/duct_tape_roll, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, /turf/simulated/floor/tiled/white, /area/awaymission/snowfield/base) "bM" = ( diff --git a/maps/away_missions/archive/blackmarketpackers.dmm b/maps/away_missions/archive/blackmarketpackers.dmm index bf2237e3626..524ef777073 100644 --- a/maps/away_missions/archive/blackmarketpackers.dmm +++ b/maps/away_missions/archive/blackmarketpackers.dmm @@ -561,7 +561,7 @@ /area/awaymission/BMPship1) "cr" = ( /obj/structure/closet/crate, -/obj/item/analyzer, +/obj/item/atmos_analyzer, /obj/item/spacecash/c10, /turf/simulated/floor/tiled/dark, /area/awaymission/BMPship1) diff --git a/maps/away_missions/archive/example.dmm b/maps/away_missions/archive/example.dmm index ff1813a7832..3f90555f7b3 100644 --- a/maps/away_missions/archive/example.dmm +++ b/maps/away_missions/archive/example.dmm @@ -483,7 +483,7 @@ /area/awaymission/example) "bX" = ( /obj/structure/table/standard, -/obj/item/analyzer, +/obj/item/atmos_analyzer, /turf/simulated/floor, /area/awaymission/example) "bY" = ( diff --git a/maps/away_missions/archive/stationCollision.dmm b/maps/away_missions/archive/stationCollision.dmm index c601894b97c..c2049d0fac8 100644 --- a/maps/away_missions/archive/stationCollision.dmm +++ b/maps/away_missions/archive/stationCollision.dmm @@ -1272,7 +1272,7 @@ /area/awaymission/research) "fC" = ( /obj/structure/table/standard, -/obj/item/analyzer, +/obj/item/atmos_analyzer, /obj/item/mass_spectrometer{ pixel_x = 5; pixel_y = 5 diff --git a/maps/euthenia/levels/deck1.dmm b/maps/euthenia/levels/deck1.dmm index c87f9d0887a..849ccc84d71 100644 --- a/maps/euthenia/levels/deck1.dmm +++ b/maps/euthenia/levels/deck1.dmm @@ -353,7 +353,7 @@ /turf/simulated/floor/tiled/dark, /area/crew_quarters/kitchen) "alI" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -616,7 +616,7 @@ /obj/effect/floor_decal/corner/mauve/border{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -948,7 +948,7 @@ name = "Distribution Loop" }, /obj/machinery/atmospherics/pipe/manifold/hidden, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -1586,7 +1586,7 @@ /turf/simulated/floor/wood, /area/crew_quarters/bar) "bee" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -1762,7 +1762,7 @@ /turf/simulated/floor/plating, /area/security/security_lockerroom) "blA" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -1930,9 +1930,9 @@ /obj/item/clothing/gloves/botanic_leather, /obj/item/clothing/gloves/botanic_leather, /obj/item/clothing/gloves/botanic_leather, -/obj/item/analyzer/plant_analyzer, -/obj/item/analyzer/plant_analyzer, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, +/obj/item/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/tool/wirecutters/clippers/trimmers, /obj/item/tool/wirecutters/clippers/trimmers, /obj/item/material/knife/machete/hatchet, @@ -2151,7 +2151,7 @@ /turf/simulated/floor/tiled/techfloor, /area/space) "bvV" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -2415,7 +2415,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/security/iaa/officecommon) "bDZ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -2915,7 +2915,7 @@ /turf/simulated/wall/r_wall, /area/maintenance/solars) "bXc" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -3097,7 +3097,7 @@ /obj/machinery/photocopier/faxmachine{ department = "Internal Affairs" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -3185,7 +3185,7 @@ /turf/simulated/floor/carpet/bcarpet, /area/space) "cgf" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -3470,7 +3470,7 @@ /turf/simulated/floor/tiled/white, /area/medical/medbay) "cob" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -4096,7 +4096,7 @@ /obj/effect/floor_decal/spline/plain{ dir = 5 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/dark, @@ -4759,7 +4759,7 @@ pixel_x = 2; pixel_y = 2 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -5249,7 +5249,7 @@ /turf/simulated/floor/carpet/blucarpet, /area/crew_quarters/fitness) "dMT" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -5727,7 +5727,7 @@ /area/medical/surgery) "efQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -6441,7 +6441,7 @@ /turf/simulated/floor/tiled/techmaint, /area/space) "eDe" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/plating, @@ -6592,7 +6592,7 @@ pixel_x = -1; pixel_y = -2 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/borderfloorblack{ @@ -8162,7 +8162,7 @@ /turf/simulated/floor/wood, /area/maintenance/deck_one/aft/port) "fMC" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 30 }, /obj/machinery/door/airlock/glass/security{ @@ -8588,7 +8588,7 @@ /area/crew_quarters/sleep/Dorm_5) "gaV" = ( /obj/structure/closet/wardrobe/red, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -8685,7 +8685,7 @@ /turf/simulated/floor/tiled, /area/rnd/xenobiology/xenoflora_storage) "gdY" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -10089,7 +10089,7 @@ /turf/simulated/floor/tiled/techfloor, /area/space) "heY" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -10241,7 +10241,7 @@ /turf/simulated/floor/tiled/techfloor, /area/rnd/research/researchdivision) "hmu" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -10700,7 +10700,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -10984,7 +10984,7 @@ /turf/simulated/floor/tiled/techfloor, /area/rnd/xenobiology/xenoflora_storage) "hSg" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -11473,7 +11473,7 @@ "iho" = ( /obj/machinery/atmospherics/pipe/simple/hidden, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -11851,7 +11851,7 @@ /turf/simulated/floor/carpet/oracarpet, /area/crew_quarters/sleep/Dorm_6) "ivE" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/camera/network/civilian, @@ -12852,7 +12852,7 @@ /turf/simulated/floor/tiled/steel_ridged, /area/crew_quarters/bar) "jec" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 30 }, /turf/simulated/floor/tiled/dark, @@ -13273,7 +13273,7 @@ /turf/simulated/floor/carpet/bcarpet, /area/crew_quarters/sleep/Dorm_9) "jwr" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -13449,7 +13449,7 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/maintenance/solars) "jFc" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -13527,7 +13527,7 @@ /turf/simulated/open, /area/crew_quarters/bar) "jIx" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -14040,7 +14040,7 @@ /turf/simulated/floor/tiled/techfloor, /area/rnd/xenobiology/xenoflora_storage) "keG" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/table/steel_reinforced, @@ -14269,7 +14269,7 @@ /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/security/iaa/officea) "kmJ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -14494,7 +14494,7 @@ /turf/simulated/floor/tiled/dark, /area/security/armoury) "kuM" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -14647,7 +14647,7 @@ /obj/item/clothing/head/helmet/combat, /obj/effect/floor_decal/corner/black/full, /obj/effect/floor_decal/industrial/outline/grey, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -14940,7 +14940,7 @@ /turf/simulated/floor/tiled/white, /area/space) "kML" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -15151,7 +15151,7 @@ /turf/simulated/floor/tiled/techmaint, /area/maintenance/solars) "kSQ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -15616,7 +15616,7 @@ }, /obj/item/tool/screwdriver, /obj/effect/floor_decal/industrial/outline/blue, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/corner/paleblue{ @@ -15811,7 +15811,7 @@ /turf/simulated/floor/tiled/techmaint, /area/maintenance/deck_one/starboard) "lrU" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -16118,7 +16118,7 @@ "lGz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -16725,7 +16725,7 @@ /obj/structure/bed/chair/shuttle{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -16962,7 +16962,7 @@ /obj/effect/floor_decal/corner/blue{ dir = 5 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 30 }, /obj/structure/table/steel_reinforced, @@ -17420,7 +17420,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/security/briefingroom) "mKk" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -18338,7 +18338,7 @@ /obj/effect/floor_decal/corner/blue/border{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 28 }, /obj/structure/bed/chair/wheelchair, @@ -19119,7 +19119,7 @@ }, /obj/structure/table/reinforced, /obj/machinery/computer/med_data/laptop, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -19884,7 +19884,7 @@ /turf/simulated/floor/tiled/techfloor, /area/space) "oBo" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/white, @@ -20500,7 +20500,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -21511,7 +21511,7 @@ /turf/simulated/floor/carpet/oracarpet, /area/crew_quarters/heads/chief) "pVi" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -22797,7 +22797,7 @@ /turf/simulated/floor/tiled/techfloor, /area/rnd/xenobiology/xenoflora_storage) "rcm" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -23534,7 +23534,7 @@ dir = 9 }, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -24130,7 +24130,7 @@ /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_3) "sgb" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -24386,7 +24386,7 @@ /turf/simulated/floor/crystal, /area/space) "srh" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -24641,7 +24641,7 @@ /turf/simulated/floor/tiled/monotile, /area/crew_quarters/recreation_area) "sAi" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/cable/green{ @@ -24753,7 +24753,7 @@ /obj/machinery/camera/network/security{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -25379,7 +25379,7 @@ /turf/simulated/floor/tiled/monotile, /area/hallway/primary/fore) "tfj" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -25704,7 +25704,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -25815,7 +25815,7 @@ /turf/simulated/floor/plating, /area/medical/medbay_emt_bay) "txc" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -26785,7 +26785,7 @@ /obj/item/storage/box/syringes{ pixel_y = -4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -26897,7 +26897,7 @@ /turf/simulated/floor/tiled, /area/medical/surgery) "umS" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -26916,7 +26916,7 @@ /area/security/armoury) "unh" = ( /obj/machinery/papershredder, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -27033,7 +27033,7 @@ /obj/effect/floor_decal/spline/plain{ dir = 9 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/dark, @@ -27181,7 +27181,7 @@ /turf/simulated/floor/lino, /area/security/detectives_office) "uwA" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -28380,7 +28380,7 @@ /turf/simulated/floor/tiled/monotile, /area/hallway/primary/central_one) "vqz" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -28686,7 +28686,7 @@ /turf/simulated/floor/tiled/dark, /area/security/armoury) "vDT" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -28955,7 +28955,7 @@ /turf/simulated/floor/tiled/dark, /area/space) "vNb" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -29606,7 +29606,7 @@ }, /area/holodeck/alphadeck) "wip" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, diff --git a/maps/euthenia/levels/deck2.dmm b/maps/euthenia/levels/deck2.dmm index 7f370d75684..75bd5f8d238 100644 --- a/maps/euthenia/levels/deck2.dmm +++ b/maps/euthenia/levels/deck2.dmm @@ -714,7 +714,7 @@ /obj/machinery/ai_status_display{ pixel_x = 32 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -748,7 +748,7 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/crew_quarters/sleep/cryo) "aBM" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -1270,7 +1270,7 @@ /turf/simulated/floor/tiled/techfloor, /area/rnd/rdoffice) "aRR" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -1980,7 +1980,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -2282,7 +2282,7 @@ /turf/simulated/floor/plating, /area/maintenance/substation/service) "bAd" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -2389,7 +2389,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced/airless, /area/engineering/atmos/processing) @@ -2860,7 +2860,7 @@ /turf/simulated/floor/tiled/techmaint, /area/space) "cgh" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -3138,7 +3138,7 @@ /turf/simulated/floor/reinforced, /area/space) "cqV" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/plating, @@ -3319,7 +3319,7 @@ /turf/simulated/floor/tiled/white, /area/crew_quarters/sleep/Dorm_10) "czZ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -3947,7 +3947,7 @@ /obj/machinery/atmospherics/pipe/manifold/visible/green{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -4345,8 +4345,8 @@ /turf/simulated/floor/wood, /area/hallway/primary/central_two) "dqQ" = ( -/obj/machinery/atmospherics/component/trinary/atmos_filter{ - filter_type = 3 +/obj/machinery/atmospherics/component/trinary/filter{ + filtering = "co2" }, /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -4884,7 +4884,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -5004,7 +5004,7 @@ /area/hydroponics) "dQl" = ( /obj/structure/closet/secure_closet/personal/patient, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -5353,7 +5353,7 @@ /turf/simulated/floor/tiled/techmaint, /area/quartermaster/warehouse) "edS" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -5750,7 +5750,7 @@ /turf/simulated/floor/tiled/steel_grid, /area/space) "epo" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -6300,7 +6300,7 @@ /turf/simulated/open, /area/quartermaster/hallway) "ePu" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -6667,7 +6667,7 @@ /turf/simulated/floor/plating, /area/engineering/atmos) "fiq" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -7139,7 +7139,7 @@ /turf/simulated/open, /area/maintenance/deck_two/forward/starboard) "fzk" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -7193,7 +7193,7 @@ }, /obj/structure/window/reinforced, /turf/simulated/floor/bluegrid{ - initial_gas_mix = "nitrogen=500;TEMP=80"; + initial_gas_mix = "n2=500;TEMP=80"; name = "Server Base" }, /area/server) @@ -7357,7 +7357,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced/airmix, /area/engineering/atmos/gas_storage) @@ -7562,7 +7562,7 @@ /turf/simulated/floor/tiled/steel_grid, /area/rnd/xenobiology/xenoflora_storage) "fPo" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -7625,7 +7625,7 @@ /turf/simulated/wall, /area/maintenance/atmospheric_substation/civilian) "fTc" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ @@ -7857,7 +7857,7 @@ "gdF" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -8178,7 +8178,7 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/engineering/atmos) "gpR" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -8706,8 +8706,8 @@ /turf/simulated/floor/tiled/steel_grid, /area/rnd/robotics) "gOt" = ( -/obj/machinery/atmospherics/component/trinary/atmos_filter{ - filter_type = 4 +/obj/machinery/atmospherics/component/trinary/filter{ + filtering = "n2o" }, /turf/simulated/floor/tiled/techfloor, /area/engineering/atmos/gas_storage) @@ -9000,7 +9000,7 @@ /turf/simulated/floor/plating, /area/maintenance/substation/medical) "heX" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -9040,7 +9040,7 @@ /turf/simulated/floor/tiled, /area/rnd/rdoffice) "hfM" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -9057,7 +9057,7 @@ /turf/simulated/floor/tiled/techfloor, /area/engineering/engine_gas) "hgT" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -9609,7 +9609,7 @@ /turf/simulated/floor/tiled/techfloor, /area/engineering/atmos/storage) "hGb" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -10298,7 +10298,7 @@ /turf/simulated/floor/tiled/techfloor, /area/engineering/atmos/gas_storage) "ill" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -10377,7 +10377,7 @@ /area/maintenance/deck_two/forward/port) "ioh" = ( /obj/structure/closet/secure_closet/personal/patient, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -11030,9 +11030,9 @@ /turf/simulated/floor/tiled/techmaint, /area/maintenance/deck_two) "iRH" = ( -/obj/machinery/atmospherics/component/trinary/atmos_filter/m_filter{ +/obj/machinery/atmospherics/component/trinary/filter/mirrored{ dir = 1; - filter_type = 1 + filtering = "o2" }, /turf/simulated/floor/tiled/techfloor, /area/engineering/atmos/gas_storage) @@ -11747,10 +11747,10 @@ "jvf" = ( /obj/machinery/atmospherics/component/unary/vent_pump{ icon_state = "map_vent_out"; - use_power = 1 + on = 1 }, /turf/simulated/floor/bluegrid{ - initial_gas_mix = "nitrogen=500;TEMP=80"; + initial_gas_mix = "n2=500;TEMP=80"; name = "Server Base" }, /area/server) @@ -12142,7 +12142,7 @@ /turf/simulated/floor/tiled/techfloor, /area/space) "jJI" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -13356,7 +13356,7 @@ /turf/simulated/floor/plating, /area/crew_quarters/bar) "kBZ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -13692,7 +13692,7 @@ /obj/effect/floor_decal/corner/lime/border{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -13711,7 +13711,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced/carbon_dioxide, /area/engineering/atmos/gas_storage) @@ -14115,7 +14115,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced/nitrogen, /area/engineering/atmos/gas_storage) @@ -14314,7 +14314,7 @@ dir = 4 }, /turf/simulated/floor/bluegrid{ - initial_gas_mix = "nitrogen=500;TEMP=80"; + initial_gas_mix = "n2=500;TEMP=80"; name = "Server Base" }, /area/server) @@ -14485,7 +14485,7 @@ /turf/simulated/floor/tiled/techmaint, /area/space) "lsF" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -14555,7 +14555,7 @@ /area/medical/patient_d) "lvT" = ( /obj/structure/closet/secure_closet/personal/patient, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -15808,7 +15808,7 @@ /turf/simulated/floor/tiled/techfloor, /area/rnd/research/researchdivision) "mpS" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -15930,7 +15930,7 @@ /turf/simulated/floor/plating, /area/maintenance/substation/security) "mtm" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -15938,7 +15938,7 @@ /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_2) "mty" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -16867,7 +16867,7 @@ /turf/simulated/floor/plating, /area/maintenance/substation/service) "nng" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -17047,7 +17047,7 @@ /turf/simulated/floor/reinforced/nitrogen, /area/engineering/atmos/gas_storage) "nur" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -17180,7 +17180,7 @@ /turf/simulated/floor/carpet/blucarpet, /area/crew_quarters/fitness) "nBb" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -18349,7 +18349,7 @@ /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_3) "ozt" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -18901,7 +18901,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -19634,7 +19634,7 @@ /turf/simulated/floor/tiled/techfloor, /area/engineering/atmos/gas_storage) "puW" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -20176,7 +20176,7 @@ /turf/simulated/floor/outdoors/grass/heavy/interior, /area/rnd/research/researchdivision) "pPG" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -21190,7 +21190,7 @@ /area/crew_quarters/sleep/Dorm_8) "qIW" = ( /obj/structure/closet/secure_closet/personal/patient, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -21333,7 +21333,7 @@ /obj/effect/floor_decal/techfloor{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -21844,9 +21844,9 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/space) "rfk" = ( -/obj/machinery/atmospherics/component/trinary/atmos_filter{ +/obj/machinery/atmospherics/component/trinary/filter{ dir = 8; - filter_type = 0 + filtering = "phoron" }, /obj/effect/floor_decal/borderfloor/corner{ dir = 4 @@ -22284,7 +22284,7 @@ /turf/simulated/floor/wood, /area/medical/patient_wing) "ruJ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -23157,7 +23157,7 @@ /turf/simulated/floor/tiled/techfloor, /area/engineering/atmos/gas_storage) "siB" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -23204,7 +23204,7 @@ /turf/simulated/floor/carpet/bcarpet, /area/crew_quarters/sleep/Dorm_1) "skc" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -23536,7 +23536,7 @@ dir = 4 }, /turf/simulated/floor/bluegrid{ - initial_gas_mix = "nitrogen=500;TEMP=80"; + initial_gas_mix = "n2=500;TEMP=80"; name = "Server Base" }, /area/server) @@ -23597,10 +23597,10 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/bluegrid{ - initial_gas_mix = "nitrogen=500;TEMP=80"; + initial_gas_mix = "n2=500;TEMP=80"; name = "Server Base" }, /area/server) @@ -23962,7 +23962,7 @@ /turf/simulated/floor/tiled/techfloor, /area/engineering/atmos) "sOU" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/camera/network/civilian, @@ -24134,7 +24134,7 @@ /obj/structure/bed/chair/shuttle{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -24730,7 +24730,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced/phoron, /area/engineering/atmos/gas_storage) @@ -24759,7 +24759,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced/oxygen, /area/engineering/atmos/gas_storage) @@ -25654,7 +25654,7 @@ dir = 8 }, /turf/simulated/floor/bluegrid{ - initial_gas_mix = "nitrogen=500;TEMP=80"; + initial_gas_mix = "n2=500;TEMP=80"; name = "Server Base" }, /area/server) @@ -26667,7 +26667,7 @@ /turf/simulated/floor/tiled/steel_grid, /area/rnd/robotics) "uQP" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -28001,7 +28001,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced/n20, /area/engineering/atmos/gas_storage) @@ -29761,9 +29761,9 @@ /turf/simulated/floor/plating, /area/space) "wVg" = ( -/obj/machinery/atmospherics/component/trinary/atmos_filter/m_filter{ +/obj/machinery/atmospherics/component/trinary/filter/mirrored{ dir = 1; - filter_type = 2 + filtering = "n2" }, /turf/simulated/floor/tiled/techfloor, /area/engineering/atmos/gas_storage) @@ -29774,7 +29774,7 @@ /turf/simulated/floor/plating, /area/engineering/engine_gas) "wVm" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -30399,7 +30399,7 @@ /turf/simulated/open, /area/maintenance/deck_two/aft/port) "xrj" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/cable/green{ @@ -30702,7 +30702,7 @@ /turf/simulated/floor/tiled/techmaint, /area/maintenance/deck_two/aft/starboard) "xCn" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -30780,7 +30780,7 @@ /area/crew_quarters/sleep/Dorm_11) "xEx" = ( /obj/machinery/disposal, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -31274,7 +31274,7 @@ /turf/simulated/floor/tiled, /area/maintenance/tool_storage) "xXe" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -31642,7 +31642,7 @@ "ylF" = ( /obj/item/coin/silver, /obj/item/coin/silver, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, diff --git a/maps/euthenia/levels/deck3.dmm b/maps/euthenia/levels/deck3.dmm index eca9917703e..394bb4de1a3 100644 --- a/maps/euthenia/levels/deck3.dmm +++ b/maps/euthenia/levels/deck3.dmm @@ -217,7 +217,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/black{ dir = 4 }, -/obj/machinery/alarm/monitor/isolation{ +/obj/machinery/air_alarm/monitor/isolation{ alarm_id = "xenopenvent"; pixel_y = 24 }, @@ -376,7 +376,7 @@ /turf/simulated/floor/wood, /area/security/brig) "auu" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -405,7 +405,7 @@ /turf/simulated/floor/outdoors/dirt, /area/hydroponics/garden) "auX" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 30 }, /turf/simulated/floor/tiled/steel_grid, @@ -636,7 +636,7 @@ /area/maintenance/deck_three/aft) "aCd" = ( /obj/structure/catwalk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -1224,7 +1224,7 @@ /obj/machinery/portable_atmospherics/canister/carbon_dioxide{ start_pressure = 8500 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -2789,7 +2789,7 @@ /turf/simulated/floor/tiled/white, /area/medical/virologyaccess) "cxm" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/landmark/spawnpoint/latejoin/station/cryogenics, @@ -3332,7 +3332,7 @@ /turf/simulated/floor/tiled/monotile, /area/rnd/xenobiology) "cZH" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/steel, @@ -3748,7 +3748,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -3894,7 +3894,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/corner/blue{ @@ -4017,7 +4017,7 @@ /turf/simulated/floor/tiled/techmaint, /area/shuttle/excursion/general) "dIU" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/techfloor, @@ -4238,7 +4238,7 @@ /turf/simulated/floor/tiled, /area/rnd/xenobiology) "dSC" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -4348,8 +4348,8 @@ /obj/item/material/minihoe, /obj/item/shovel/spade, /obj/item/shovel/spade, -/obj/item/analyzer/plant_analyzer, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/tool/wirecutters/clippers/trimmers, /obj/effect/floor_decal/grass_edge{ dir = 4 @@ -4466,7 +4466,7 @@ /turf/simulated/floor/tiled, /area/engineering/engine_monitoring) "eew" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 30 }, /turf/simulated/floor/outdoors/grass/heavy/interior, @@ -4555,14 +4555,14 @@ /turf/simulated/floor/tiled/techfloor, /area/space) "eiv" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/scale, /turf/simulated/floor/tiled/white, /area/medical/psych_ward) "ejt" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -5077,7 +5077,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 30 }, /obj/structure/cable/green{ @@ -5436,7 +5436,7 @@ /obj/effect/floor_decal/corner/green{ dir = 6 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -6102,7 +6102,7 @@ /area/rnd/anomaly_lab) "fzv" = ( /obj/machinery/atmospherics/component/unary/vent_pump/on, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -6227,7 +6227,7 @@ /turf/simulated/floor/tiled/monotile, /area/tether/exploration) "fDs" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -6339,7 +6339,7 @@ /obj/structure/table/woodentable, /obj/item/towel/random, /obj/item/towel/random, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22; target_temperature = 312.15 @@ -7450,7 +7450,7 @@ /obj/effect/floor_decal/corner/mauve/border{ dir = 5 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 30 }, /turf/simulated/floor/tiled, @@ -8210,7 +8210,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/corner/beige/full{ @@ -8290,7 +8290,7 @@ /obj/structure/window/reinforced{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -8377,7 +8377,7 @@ /obj/item/folder/red{ pixel_y = 3 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -8554,7 +8554,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/purple{ dir = 10 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 30 }, /turf/simulated/floor/tiled, @@ -8773,7 +8773,7 @@ /area/shuttle/excursion/cargo) "hFy" = ( /obj/machinery/atmospherics/portables_connector, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -9036,7 +9036,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /obj/machinery/camera/network/research{ network = list("Xenobiology"); @@ -9528,7 +9528,7 @@ /turf/simulated/floor/plating, /area/tcommsat/entrance) "inU" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/bed/chair/office/dark{ @@ -9746,7 +9746,7 @@ /turf/simulated/floor/reinforced/airless, /area/engineering/engine_eva) "iux" = ( -/obj/machinery/alarm/monitor/isolation{ +/obj/machinery/air_alarm/monitor/isolation{ alarm_id = "isolation_two"; dir = 8; pixel_x = 22 @@ -9966,7 +9966,7 @@ /turf/simulated/floor/plating, /area/maintenance/library) "iDG" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -10789,7 +10789,7 @@ /area/hallway/primary/central_three) "jpj" = ( /obj/machinery/vending/loadout/uniform, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -10826,7 +10826,7 @@ }, /obj/structure/table/standard, /obj/item/flashlight/lamp, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -10953,7 +10953,7 @@ /turf/simulated/floor/wood, /area/tether/exploration/pathfinder_office) "jxG" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/steel, @@ -11367,7 +11367,7 @@ /turf/simulated/floor/plating, /area/quartermaster/warehouse) "jMT" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -11625,7 +11625,7 @@ /turf/simulated/floor/tiled/white, /area/medical/virologyaccess) "jYA" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -12121,7 +12121,7 @@ /obj/effect/floor_decal/industrial/warning{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -12506,7 +12506,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/bluegrid, /area/rnd/xenobiology) @@ -12596,7 +12596,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -13475,7 +13475,7 @@ /turf/simulated/floor/bluegrid, /area/ai) "lvH" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -13921,7 +13921,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/white, @@ -14435,7 +14435,7 @@ /turf/simulated/floor/tiled/techmaint, /area/security/prison) "mmv" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -14928,8 +14928,7 @@ dir = 8 }, /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ - dir = 8; - scrubbing_gas = list(/datum/gas/carbon_dioxide) + dir = 8 }, /turf/simulated/floor/tiled/techfloor, /area/tcommsat/entrance) @@ -15255,7 +15254,7 @@ /turf/simulated/wall/r_wall, /area/engineering/engine_eva) "mTJ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/component/unary/freezer{ @@ -15832,7 +15831,7 @@ /obj/machinery/atmospherics/pipe/manifold/visible/red{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -16492,7 +16491,7 @@ pixel_x = 13; pixel_y = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/wood, @@ -16630,7 +16629,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/red{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 30 }, /turf/simulated/floor/tiled, @@ -17232,7 +17231,7 @@ pixel_x = 13; pixel_y = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/wood, @@ -17485,7 +17484,7 @@ /obj/machinery/atmospherics/component/unary/vent_pump/on{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -17510,7 +17509,7 @@ /obj/machinery/atmospherics/component/unary/vent_pump/on{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -17613,7 +17612,7 @@ /turf/simulated/floor/wood, /area/crew_quarters/theatre) "oVG" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/component/unary/vent_scrubber/on, @@ -18269,7 +18268,7 @@ /obj/machinery/atmospherics/component/unary/vent_pump/on{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -18628,7 +18627,7 @@ /turf/simulated/floor/tiled, /area/rnd/xenobiology) "pMw" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -19005,7 +19004,7 @@ /turf/simulated/floor/carpet, /area/medical/psych_ward) "qlI" = ( -/obj/machinery/alarm/monitor/isolation{ +/obj/machinery/air_alarm/monitor/isolation{ alarm_id = "isolation_one"; dir = 8; pixel_x = 22 @@ -19377,7 +19376,7 @@ /turf/simulated/floor/tiled/techfloor, /area/medical/morgue) "qCe" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -19847,7 +19846,7 @@ /turf/simulated/floor/plating, /area/security/brig) "qYm" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/vending/loadout/costume, @@ -19981,7 +19980,7 @@ /turf/simulated/floor/tiled, /area/medical/psych_ward) "rdT" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -20422,7 +20421,7 @@ /obj/structure/bed/chair/shuttle{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -20534,7 +20533,7 @@ /obj/structure/curtain/open/shower{ anchored = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -21233,7 +21232,7 @@ /obj/item/folder/red{ pixel_y = 3 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -22156,7 +22155,7 @@ /turf/simulated/wall/r_wall, /area/rnd/rdoffice) "sVg" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -22795,7 +22794,7 @@ /obj/effect/floor_decal/industrial/warning{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -22805,7 +22804,7 @@ /turf/simulated/floor/tiled/steel_grid, /area/rnd/robotics/surgeryroom1) "tAI" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/techfloor{ @@ -22906,7 +22905,7 @@ "tIp" = ( /obj/structure/table/woodentable, /obj/machinery/recharger, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -22985,7 +22984,7 @@ /turf/simulated/floor/tiled/steel_ridged, /area/hydroponics/garden) "tNc" = ( -/obj/machinery/alarm/server{ +/obj/machinery/air_alarm/server{ dir = 4; pixel_x = -21 }, @@ -23535,7 +23534,7 @@ /obj/effect/floor_decal/techfloor{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/techfloor, @@ -23879,7 +23878,7 @@ /turf/simulated/wall/r_wall, /area/rnd/test_area) "uve" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/item/clothing/suit/straight_jacket, @@ -24465,7 +24464,7 @@ /obj/effect/floor_decal/corner/blue{ dir = 10 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -24784,7 +24783,7 @@ /turf/simulated/wall, /area/maintenance/library) "vll" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/bluegrid, @@ -24863,7 +24862,7 @@ /turf/simulated/floor/tiled, /area/crew_quarters/pool) "vqs" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -24907,7 +24906,7 @@ /obj/structure/toilet{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/corner/blue{ @@ -25062,7 +25061,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/bluegrid{ initial_gas_mix = "n2=100;TEMP=80"; @@ -25655,7 +25654,7 @@ /obj/machinery/portable_atmospherics/canister/carbon_dioxide{ start_pressure = 8500 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -26146,7 +26145,7 @@ /area/hallway/primary/central_three) "wzh" = ( /obj/machinery/atmospherics/pipe/simple/visible/red, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -26215,7 +26214,7 @@ icon_state = "map_vent_out"; pressure_checks = 0; pressure_checks_default = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/bluegrid{ initial_gas_mix = "n2=100;TEMP=80"; @@ -26518,7 +26517,7 @@ /turf/simulated/floor/wood, /area/space) "wOw" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -27020,7 +27019,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/borderfloorwhite{ @@ -27752,7 +27751,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/borderfloorwhite{ diff --git a/maps/euthenia/levels/deck4.dmm b/maps/euthenia/levels/deck4.dmm index c5893214cc7..61f081b3584 100644 --- a/maps/euthenia/levels/deck4.dmm +++ b/maps/euthenia/levels/deck4.dmm @@ -98,7 +98,7 @@ /obj/effect/floor_decal/industrial/warning{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -231,7 +231,7 @@ /turf/simulated/floor/tiled/techfloor, /area/maintenance/deck_four/aft/port) "bR" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -621,7 +621,7 @@ /obj/structure/cable/green{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 24 }, /turf/simulated/floor/tiled, @@ -915,7 +915,7 @@ /turf/simulated/floor/tiled/monotile, /area/gateway) "gP" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -1273,7 +1273,7 @@ /turf/simulated/floor/plating, /area/rnd/outpost/maintenance) "jp" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -1766,7 +1766,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -1929,7 +1929,7 @@ /turf/simulated/shuttle/wall/voidcraft, /area/maintenance/deck_four/aft/port) "od" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/bluegrid, @@ -2089,7 +2089,7 @@ /turf/simulated/floor/tiled, /area/gateway/prep_room) "pn" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -2455,7 +2455,7 @@ /turf/simulated/shuttle/wall/voidcraft/hard_corner, /area/space) "rd" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/techfloor/grid, @@ -2522,7 +2522,7 @@ /turf/simulated/floor/plating, /area/library) "rE" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/industrial/hatch/yellow, @@ -2843,7 +2843,7 @@ /turf/simulated/wall/r_wall, /area/maintenance/deck_four/aft/port) "ua" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -3194,7 +3194,7 @@ /turf/simulated/floor/tiled/monotile, /area/rnd/outpost/underground) "wU" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -3233,7 +3233,7 @@ /turf/simulated/floor/tiled, /area/rnd/research/testingrange) "xq" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -4141,7 +4141,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ai) "Ee" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/techfloor, @@ -4299,7 +4299,7 @@ /turf/simulated/floor/plating, /area/ai_upload) "Fp" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -5139,7 +5139,7 @@ /area/space) "Ld" = ( /obj/structure/table/rack/shelf, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 24 }, /turf/simulated/floor/reinforced, @@ -5218,7 +5218,7 @@ /area/gateway/prep_room) "Ma" = ( /obj/structure/table/rack/shelf, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 24 }, /turf/simulated/floor/reinforced, @@ -5337,7 +5337,7 @@ /area/space) "Nh" = ( /obj/structure/filingcabinet, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 24 }, /turf/simulated/floor/reinforced, @@ -6109,7 +6109,7 @@ desc = "A large cabinet with drawers. They seem to be ominously empty."; name = "Classified Science Records" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -6143,7 +6143,7 @@ /turf/simulated/floor/tiled/steel_ridged, /area/maintenance/deck_four/aft/port) "SF" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -6230,7 +6230,7 @@ /turf/simulated/floor/carpet/bcarpet, /area/library/study) "Tg" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -6343,7 +6343,7 @@ /turf/simulated/open, /area/space) "TY" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -6770,7 +6770,7 @@ /turf/simulated/floor/plating, /area/space) "WP" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/closet/hydrant{ @@ -7241,7 +7241,7 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, diff --git a/maps/euthenia/levels/deck5.dmm b/maps/euthenia/levels/deck5.dmm index 1b7e0331aa5..6a7a3efd9fe 100644 --- a/maps/euthenia/levels/deck5.dmm +++ b/maps/euthenia/levels/deck5.dmm @@ -807,7 +807,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, diff --git a/maps/generic/misc.dm b/maps/generic/misc.dm index 84ea1f48da5..d9a98415fe8 100644 --- a/maps/generic/misc.dm +++ b/maps/generic/misc.dm @@ -147,7 +147,7 @@ layer = ABOVE_WINDOW_LAYER /obj/machinery/airlock_sensor layer = ABOVE_WINDOW_LAYER -/obj/machinery/alarm +/obj/machinery/air_alarm layer = ABOVE_WINDOW_LAYER /obj/machinery/button layer = ABOVE_WINDOW_LAYER @@ -202,7 +202,7 @@ layer = ABOVE_WINDOW_LAYER /obj/machinery/airlock_sensor layer = ABOVE_WINDOW_LAYER -/obj/machinery/alarm +/obj/machinery/air_alarm layer = ABOVE_WINDOW_LAYER /obj/machinery/button layer = ABOVE_WINDOW_LAYER diff --git a/maps/map_levels/140x140/talon/talon1.dmm b/maps/map_levels/140x140/talon/talon1.dmm index 4fb2fe6c1ea..91ca7b015cb 100644 --- a/maps/map_levels/140x140/talon/talon1.dmm +++ b/maps/map_levels/140x140/talon/talon1.dmm @@ -264,7 +264,7 @@ /turf/simulated/floor/tiled/eris/dark/brown_perforated, /area/talon/deckone/port_eng) "cB" = ( -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 1; pixel_y = -22 }, @@ -352,7 +352,7 @@ /obj/structure/cable/yellow{ icon_state = "1-8" }, -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 1; pixel_y = -22 }, @@ -692,7 +692,7 @@ /turf/simulated/floor/tiled/eris/steel, /area/talon/deckone/central_hallway) "gj" = ( -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ pixel_y = 22 }, /obj/effect/floor_decal/industrial/outline/red, @@ -814,7 +814,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ pixel_y = 22 }, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ @@ -863,7 +863,7 @@ /obj/item/spaceflare, /obj/item/storage/box/flashshells/large, /obj/item/gun/ballistic/shotgun/flare, -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 1; pixel_y = -22 }, @@ -1241,7 +1241,7 @@ /turf/simulated/floor/tiled/eris/techmaint_panels, /area/talon/deckone/central_hallway) "kJ" = ( -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 4; pixel_x = -23 }, @@ -1343,7 +1343,7 @@ /area/talon/deckone/central_hallway) "lv" = ( /obj/structure/catwalk, -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ pixel_y = 22 }, /turf/simulated/floor/plating, @@ -1396,7 +1396,7 @@ /area/talon/deckone/central_hallway) "ms" = ( /obj/structure/catwalk, -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ pixel_y = 22 }, /turf/simulated/floor/plating, @@ -1442,7 +1442,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 1; pixel_y = -22 }, @@ -1848,7 +1848,7 @@ /turf/simulated/wall/rshull, /area/talon/maintenance/deckone_starboard_aft_wing) "qf" = ( -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 4; pixel_x = -23 }, @@ -1864,7 +1864,7 @@ /turf/simulated/floor/tiled/eris/steel, /area/talon/deckone/central_hallway) "qi" = ( -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ pixel_y = 22 }, /turf/simulated/floor/tiled/eris/dark/monofloor, @@ -2086,7 +2086,7 @@ /turf/simulated/floor/tiled/eris/steel/gray_perforated, /area/talon/deckone/workroom) "rX" = ( -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ pixel_y = 22 }, /obj/effect/floor_decal/industrial/outline/red, @@ -2289,7 +2289,7 @@ /obj/machinery/atmospherics/pipe/zpipe/up/scrubbers{ dir = 8 }, -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 8; pixel_x = 22 }, @@ -2775,7 +2775,7 @@ dir = 1; icon_state = "1-2" }, -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 8; pixel_x = 22 }, @@ -2826,7 +2826,7 @@ /obj/machinery/atmospherics/pipe/zpipe/up/supply{ dir = 4 }, -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 4; pixel_x = -23 }, @@ -3159,7 +3159,7 @@ pixel_y = -8 }, /obj/item/surgical/bioregen, -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 8; pixel_x = 22 }, @@ -3191,7 +3191,7 @@ }, /obj/structure/table/standard, /obj/machinery/photocopier/faxmachine/talon, -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 1; pixel_y = -22 }, @@ -3676,7 +3676,7 @@ /turf/simulated/floor/tiled/eris/steel, /area/talon/deckone/central_hallway) "DX" = ( -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ pixel_y = 22 }, /turf/simulated/floor/tiled/eris/dark/brown_perforated, @@ -3806,7 +3806,7 @@ /obj/item/stack/marker_beacon/thirty, /obj/item/pipe_dispenser, /obj/item/inducer/syndicate, -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ pixel_y = 22 }, /turf/simulated/floor/tiled/eris/dark/brown_platform, @@ -4127,7 +4127,7 @@ /obj/item/tank/jetpack/carbondioxide, /obj/item/tank/jetpack/carbondioxide, /obj/item/tank/jetpack/carbondioxide, -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 1; pixel_y = -22 }, @@ -4157,7 +4157,7 @@ /obj/structure/table/standard, /obj/item/paper_bin, /obj/item/pen, -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 8; pixel_x = 22 }, @@ -5005,7 +5005,7 @@ dir = 1; icon_state = "1-2" }, -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 4; pixel_x = -23 }, @@ -6045,7 +6045,7 @@ /obj/structure/cable/yellow{ icon_state = "1-4" }, -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 1; pixel_y = -22 }, diff --git a/maps/map_levels/140x140/talon/talon2.dmm b/maps/map_levels/140x140/talon/talon2.dmm index 55d6cf2cfc6..b819ded272b 100644 --- a/maps/map_levels/140x140/talon/talon2.dmm +++ b/maps/map_levels/140x140/talon/talon2.dmm @@ -868,7 +868,7 @@ /turf/simulated/floor/wood, /area/talon/decktwo/med_room) "ku" = ( -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 8; pixel_x = 23 }, @@ -979,7 +979,7 @@ /area/talon/decktwo/vault) "lv" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 8; pixel_x = 22 }, @@ -999,7 +999,7 @@ /turf/simulated/floor/wood, /area/talon/decktwo/bar) "lP" = ( -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 4; pixel_x = -23 }, @@ -1147,7 +1147,7 @@ /turf/simulated/wall, /area/talon/maintenance/decktwo_starboard) "nD" = ( -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 1; pixel_y = -22 }, @@ -1182,7 +1182,7 @@ /turf/simulated/floor/hull/airless, /area/talon/maintenance/decktwo_solars) "nU" = ( -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 4; pixel_x = -22 }, @@ -1296,7 +1296,7 @@ dir = 8 }, /obj/machinery/portable_atmospherics/powered/scrubber, -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 8; pixel_x = 23 }, @@ -1654,7 +1654,7 @@ pixel_y = 32; starts_with = list(/obj/item/clothing/suit/fire/firefighter = 2, /obj/item/clothing/mask/gas = 2, /obj/item/flashlight = 2, /obj/item/tank/oxygen/red = 2, /obj/item/extinguisher = 2, /obj/item/clothing/head/hardhat/red = 2) }, -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 4; pixel_x = -22 }, @@ -1757,7 +1757,7 @@ /obj/item/stolenpackageplus, /obj/item/stolenpackageplus, /obj/item/stolenpackageplus, -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ pixel_y = 22 }, /obj/machinery/light{ @@ -1826,7 +1826,7 @@ /turf/simulated/floor/tiled/eris/steel, /area/talon/decktwo/central_hallway) "vK" = ( -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 8; pixel_x = 22 }, @@ -2132,7 +2132,7 @@ /area/talon/maintenance/decktwo_solars) "zt" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 8; pixel_x = 22 }, @@ -2406,7 +2406,7 @@ /turf/simulated/floor/tiled/techfloor, /area/talon/decktwo/lifeboat) "Cu" = ( -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 4; pixel_x = -23 }, @@ -2461,7 +2461,7 @@ /turf/simulated/floor/wood, /area/talon/decktwo/eng_room) "Dk" = ( -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 8; pixel_x = 22 }, @@ -2746,7 +2746,7 @@ /turf/simulated/floor/plating, /area/talon/maintenance/decktwo_aft) "FN" = ( -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 8; pixel_x = 22 }, @@ -2917,7 +2917,7 @@ /turf/simulated/floor/wood, /area/talon/decktwo/med_room) "Ik" = ( -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 4; pixel_x = -23 }, @@ -2934,7 +2934,7 @@ /turf/simulated/floor/tiled/eris/steel, /area/talon/decktwo/central_hallway) "Ir" = ( -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ pixel_y = 22 }, /obj/structure/catwalk, @@ -3130,7 +3130,7 @@ /turf/simulated/floor/tiled/steel_grid, /area/talon/decktwo/pilot_room) "Kh" = ( -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ pixel_y = 22 }, /turf/simulated/floor/wood, @@ -3318,7 +3318,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 }, -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ pixel_y = 22 }, /turf/simulated/floor/plating, @@ -3501,7 +3501,7 @@ /turf/simulated/floor/tiled/eris/steel, /area/talon/decktwo/central_hallway) "NO" = ( -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 4; pixel_x = -23 }, @@ -3746,7 +3746,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 }, -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ pixel_y = 22 }, /obj/structure/catwalk, @@ -3796,7 +3796,7 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/talon/decktwo/lifeboat) "RN" = ( -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 4; pixel_x = -22 }, @@ -3973,7 +3973,7 @@ /turf/simulated/floor/hull/airless, /area/talon/maintenance/decktwo_solars) "TY" = ( -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 4; pixel_x = -23 }, @@ -4285,14 +4285,14 @@ /turf/simulated/floor/carpet, /area/talon/decktwo/pilot_room) "XA" = ( -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 8; pixel_x = 23 }, /turf/simulated/floor/carpet, /area/talon/decktwo/eng_room) "XD" = ( -/obj/machinery/alarm/talon{ +/obj/machinery/air_alarm/talon{ dir = 4; pixel_x = -23 }, diff --git a/maps/minitest/levels/minitest.dmm b/maps/minitest/levels/minitest.dmm index 7dd44ea2f67..32a3b8806a9 100644 --- a/maps/minitest/levels/minitest.dmm +++ b/maps/minitest/levels/minitest.dmm @@ -40,7 +40,7 @@ /turf/simulated/floor/tiled/dark, /area/tcommsat/computer) "ag" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -484,7 +484,7 @@ frequency = 1379; icon_state = "map_vent_out"; id_tag = "toxins_pump"; - use_power = 1 + on = 1 }, /obj/structure/lattice, /turf/space, @@ -611,7 +611,7 @@ }, /area/tcommsat/chamber) "bq" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -25; pixel_y = 0 @@ -950,7 +950,7 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; icon_state = "alarm0"; pixel_x = 24 @@ -1030,7 +1030,7 @@ external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "map_vent_out"; - use_power = 1; + on = 1; pressure_checks = 0; pressure_checks_default = 0 }, @@ -1059,7 +1059,7 @@ initialize_directions = 1; internal_pressure_bound = 4000; internal_pressure_bound_default = 4000; - use_power = 1; + on = 1; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0 @@ -1215,7 +1215,7 @@ /turf/simulated/floor/tiled, /area/medical/medbay) "cQ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -1486,7 +1486,7 @@ /turf/simulated/floor/tiled, /area/medical/medbay2) "dB" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -1594,7 +1594,7 @@ /turf/simulated/floor/tiled, /area/hallway/secondary/civilian_hallway_aft) "dM" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -1864,7 +1864,7 @@ /turf/simulated/floor/tiled, /area/medical/medbay) "ev" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -2024,7 +2024,7 @@ /turf/simulated/floor/tiled, /area/crew_quarters/bar) "eR" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -2146,7 +2146,7 @@ /turf/simulated/floor/tiled, /area/hallway/secondary/civilian_hallway_fore) "ff" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -25; pixel_y = 0 @@ -2156,7 +2156,7 @@ /turf/simulated/floor/tiled, /area/hallway/primary/fore) "fg" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; icon_state = "alarm0"; pixel_x = 24 @@ -2456,7 +2456,7 @@ /turf/simulated/floor/tiled, /area/crew_quarters/cafeteria) "fO" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -2588,7 +2588,7 @@ /turf/simulated/floor/tiled, /area/bridge) "gg" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, diff --git a/maps/rift/levels/rift-01-underground3.dmm b/maps/rift/levels/rift-01-underground3.dmm index 6a1ba22b1bd..e7de9ee33e8 100644 --- a/maps/rift/levels/rift-01-underground3.dmm +++ b/maps/rift/levels/rift-01-underground3.dmm @@ -72,7 +72,7 @@ /turf/simulated/floor/outdoors/safeice/lythios43c/indoors, /area/rift/surfacebase/underground/under1) "et" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, diff --git a/maps/rift/levels/rift-02-underground2.dmm b/maps/rift/levels/rift-02-underground2.dmm index 6c44cdf4ff0..6d31e99b1ef 100644 --- a/maps/rift/levels/rift-02-underground2.dmm +++ b/maps/rift/levels/rift-02-underground2.dmm @@ -170,7 +170,7 @@ /turf/simulated/floor, /area/engineering/engine_smes) "aC" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -375,7 +375,7 @@ "bd" = ( /obj/structure/catwalk, /obj/effect/floor_decal/industrial/danger, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -773,7 +773,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -916,7 +916,7 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -1294,7 +1294,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -1459,7 +1459,7 @@ /obj/machinery/atmospherics/pipe/simple/visible{ dir = 5 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -1539,7 +1539,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -2096,7 +2096,7 @@ "ge" = ( /obj/effect/floor_decal/borderfloor, /obj/machinery/light, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -2145,7 +2145,7 @@ "gk" = ( /obj/effect/floor_decal/borderfloor, /obj/machinery/light, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -2277,7 +2277,7 @@ /obj/structure/cable/cyan{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -2322,7 +2322,7 @@ /obj/effect/floor_decal/techfloor{ dir = 5 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -2381,7 +2381,7 @@ /obj/effect/floor_decal/techfloor{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; name = "unlocked air alarm"; pixel_y = 24; @@ -2568,7 +2568,7 @@ /area/rnd/secure_storage/critical) "hr" = ( /obj/structure/catwalk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -3107,7 +3107,7 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -3129,7 +3129,7 @@ id_tag = "cooling_out"; initialize_directions = 4; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced/nitrogen{ initial_gas_mix = "n2=82.1472;TEMP=293.15" @@ -3198,7 +3198,7 @@ /area/engineering/hallway) "js" = ( /obj/structure/railing, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -3287,7 +3287,7 @@ /obj/effect/floor_decal/techfloor{ dir = 9 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -3493,7 +3493,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -3579,7 +3579,7 @@ /turf/simulated/floor/plating, /area/maintenance/atmos) "kg" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -3860,7 +3860,7 @@ /obj/machinery/atmospherics/pipe/manifold/visible/black{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -3972,7 +3972,7 @@ /obj/structure/cable/cyan{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 24 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -4063,7 +4063,7 @@ /turf/simulated/floor, /area/engineering/engine_room) "lB" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -4156,7 +4156,7 @@ /obj/structure/closet/radiation, /obj/item/clothing/glasses/meson, /obj/item/clothing/glasses/meson, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -4270,7 +4270,7 @@ /turf/simulated/floor/tiled/steel, /area/hallway/primary/undertwo) "me" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -4773,7 +4773,7 @@ dir = 4; req_one_access = list(18,47) }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -5100,7 +5100,7 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -6771,7 +6771,7 @@ /area/chapel/main) "tk" = ( /obj/structure/table/rack/shelf, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 24 }, /turf/simulated/floor/reinforced, @@ -7230,7 +7230,7 @@ /area/maintenance/lower/mining) "uU" = ( /obj/machinery/suit_cycler/engineering, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -7339,7 +7339,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -7446,7 +7446,7 @@ /area/chapel/main) "vU" = ( /obj/structure/filingcabinet, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 24 }, /turf/simulated/floor/reinforced, @@ -7819,7 +7819,7 @@ /obj/structure/cable/green{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 24 }, /turf/simulated/floor/tiled, @@ -8009,7 +8009,7 @@ /turf/simulated/floor/plating, /area/maintenance/research/xenobio) "xO" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -8357,7 +8357,7 @@ /turf/simulated/floor/tiled/techfloor, /area/rnd/secure_storage/lower) "zp" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -8517,7 +8517,7 @@ /obj/item/clothing/mask/breath, /obj/item/mining_scanner, /obj/item/tank/oxygen, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/table/rack/shelf, @@ -8611,7 +8611,7 @@ /area/engineering/hallway) "AF" = ( /obj/structure/bed/chair/comfy/beige, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/carpet, @@ -8669,7 +8669,7 @@ /turf/simulated/floor/wood, /area/chapel/observation) "AU" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -8808,7 +8808,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -8923,7 +8923,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -9033,7 +9033,7 @@ /area/quartermaster/miningdock) "Cq" = ( /obj/landmark/spawnpoint/job/station_engineer, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -9080,7 +9080,7 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/engineering/locker_room) "CK" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -9109,7 +9109,7 @@ /obj/machinery/computer/rcon{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -9403,7 +9403,7 @@ /area/quartermaster/miningdock) "DR" = ( /obj/machinery/computer/atmos_alert, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -9542,7 +9542,7 @@ /obj/structure/cable/green{ icon_state = "1-2" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -9669,7 +9669,7 @@ /area/chapel/office) "ES" = ( /obj/machinery/vending/engivend, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -10089,7 +10089,7 @@ desc = "A large cabinet with drawers. They seem to be ominously empty."; name = "Classified Science Records" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -10099,7 +10099,7 @@ /obj/structure/toilet{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -10155,7 +10155,7 @@ /turf/simulated/floor/tiled, /area/rnd/secure_storage/lower) "GO" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -10308,7 +10308,7 @@ /turf/simulated/floor/plating, /area/maintenance/lower/mining) "HA" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -10400,7 +10400,7 @@ /turf/simulated/floor/tiled/monotile, /area/engineering/workshop) "HW" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -10440,7 +10440,7 @@ /area/rnd/secure_storage/lower) "Ie" = ( /obj/structure/catwalk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -10816,7 +10816,7 @@ /turf/simulated/floor/tiled, /area/quartermaster/belterdock/refinery) "JD" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -10960,7 +10960,7 @@ /turf/simulated/floor/tiled, /area/engineering/foyer) "Kf" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/white, @@ -11383,7 +11383,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -11531,7 +11531,7 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -12175,7 +12175,7 @@ /obj/item/geiger_counter, /obj/item/geiger_counter, /obj/structure/table/steel_reinforced, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/techfloor, @@ -12195,7 +12195,7 @@ /turf/simulated/floor/tiled/steel_grid, /area/engineering/foyer) "OX" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -12257,7 +12257,7 @@ /area/chapel/chapel_morgue) "Pi" = ( /obj/effect/floor_decal/borderfloor, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -12401,7 +12401,7 @@ /obj/item/nullrod{ pixel_x = -4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -12584,7 +12584,7 @@ /turf/simulated/floor/tiled/steel_grid, /area/engineering/atmos/hallway) "QB" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -12909,7 +12909,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -13012,7 +13012,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -13083,7 +13083,7 @@ /turf/simulated/floor/tiled/steel, /area/quartermaster/miningdock) "SY" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -13719,7 +13719,7 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/chapel/chapel_morgue) "Vy" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -13783,7 +13783,7 @@ /turf/simulated/floor/plating, /area/maintenance/chapel) "VJ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -14667,7 +14667,7 @@ pixel_x = -11; pixel_y = -5 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -14680,7 +14680,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/photocopier, @@ -14820,7 +14820,7 @@ /area/rnd/secure_storage/critical/records) "ZT" = ( /obj/structure/table/bench/padded, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, diff --git a/maps/rift/levels/rift-03-underground1.dmm b/maps/rift/levels/rift-03-underground1.dmm index ec3b4cf4593..59609cac134 100644 --- a/maps/rift/levels/rift-03-underground1.dmm +++ b/maps/rift/levels/rift-03-underground1.dmm @@ -16,7 +16,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced/phoron, /area/engineering/atmos) @@ -285,7 +285,7 @@ /area/maintenance/engineering/upper) "aO" = ( /obj/structure/catwalk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -456,7 +456,7 @@ }, /obj/effect/floor_decal/industrial/warning, /obj/structure/railing, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -631,7 +631,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -787,7 +787,7 @@ sensors = list("n2_sensor"="Tank") }, /obj/structure/window/reinforced, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -1268,7 +1268,7 @@ /turf/simulated/floor/tiled/steel, /area/hallway/primary/underone) "cR" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -1391,7 +1391,7 @@ /turf/simulated/floor/concrete/rng/lythios43c, /area/rift/station/fighter_bay/transport_tunnel) "dd" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -2463,7 +2463,7 @@ "gb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/blue, /obj/effect/floor_decal/industrial/warning, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -2896,7 +2896,7 @@ /area/maintenance/engineering) "hx" = ( /obj/machinery/atmospherics/pipe/simple/visible/red, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -2937,7 +2937,7 @@ /turf/simulated/floor/tiled/techfloor, /area/station/protean_nanite_room) "hJ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -3080,7 +3080,7 @@ /obj/machinery/atmospherics/pipe/manifold/visible/supply{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -3609,7 +3609,7 @@ /turf/simulated/floor/plating, /area/maintenance/engineering) "ka" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -4199,7 +4199,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -4431,7 +4431,7 @@ /area/crew_quarters/pool) "nj" = ( /obj/effect/alien/weeds, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -4654,7 +4654,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced/oxygen, /area/engineering/atmos) @@ -4777,7 +4777,7 @@ /obj/machinery/door/window/southleft{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -5402,7 +5402,7 @@ /area/engineering/atmos/hallway) "qY" = ( /obj/structure/railing, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -5508,7 +5508,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced/airless, /area/engineering/atmos) @@ -5618,7 +5618,7 @@ /turf/simulated/floor/plating, /area/maintenance/public_bunker) "rG" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -5660,7 +5660,7 @@ /turf/simulated/floor/tiled/steel, /area/rift/station/stairs_two) "rO" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -6057,7 +6057,7 @@ dir = 8 }, /obj/random/trash_pile, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -6520,7 +6520,7 @@ /turf/simulated/floor/tiled/kafel_full/blue, /area/crew_quarters/pool) "va" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -6652,7 +6652,7 @@ /obj/item/clothing/suit/storage/snowsuit/science, /obj/item/clothing/suit/storage/snowsuit/science, /obj/item/clothing/suit/storage/snowsuit/science, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 24 }, /turf/simulated/floor/tiled/white, @@ -6807,7 +6807,7 @@ /turf/simulated/floor/tiled, /area/maintenance/elevator) "vU" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -6877,7 +6877,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 24 }, /turf/simulated/floor/tiled, @@ -7000,7 +7000,7 @@ internal_pressure_bound_default = 4000; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/bluegrid{ initial_gas_mix = "n2=100;TEMP=80"; @@ -7064,7 +7064,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced/n20, /area/engineering/atmos) @@ -8892,7 +8892,7 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/rift/station/fighter_bay/hangar) "De" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 24 }, /turf/simulated/floor/tiled/monotile, @@ -9175,7 +9175,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced/carbon_dioxide, /area/engineering/atmos) @@ -9261,7 +9261,7 @@ /turf/simulated/floor/tiled/monotile, /area/hallway/primary/underone) "ED" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -9310,7 +9310,7 @@ /obj/effect/floor_decal/corner/mauve/border{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -9492,7 +9492,7 @@ icon_state = "map_vent_out"; pressure_checks = 0; pressure_checks_default = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/bluegrid{ initial_gas_mix = "n2=100;TEMP=80"; @@ -9698,7 +9698,7 @@ /area/rnd/secure_storage/upper) "FY" = ( /obj/effect/floor_decal/borderfloor, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -9912,7 +9912,7 @@ /area/maintenance/engineering) "GE" = ( /obj/machinery/atmospherics/pipe/simple/hidden, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -9957,7 +9957,7 @@ /turf/simulated/floor/tiled/monotile, /area/hallway/primary/underone) "GN" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -10337,7 +10337,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -10668,7 +10668,7 @@ /obj/structure/bed/chair/sofa/purp/left{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -11284,7 +11284,7 @@ dir = 4 }, /obj/item/flashlight/lantern, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -11642,7 +11642,7 @@ /turf/simulated/floor/plating, /area/storage/tech) "MJ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -12086,8 +12086,8 @@ /obj/item/reagent_scanner, /obj/item/healthanalyzer, /obj/item/geiger_counter, -/obj/item/analyzer/plant_analyzer, -/obj/item/analyzer, +/obj/item/plant_analyzer, +/obj/item/atmos_analyzer, /obj/item/t_scanner, /obj/machinery/camera/network/engineering{ dir = 8 @@ -12544,7 +12544,7 @@ /turf/simulated/floor/outdoors/snow/lythios43c, /area/rift/surfacebase/underground/under1) "PC" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -12666,7 +12666,7 @@ /turf/simulated/floor/plating, /area/maintenance/engineering) "PZ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 24 }, /turf/simulated/floor/tiled/kafel_full/blue, @@ -12980,7 +12980,7 @@ /turf/simulated/floor/tiled/steel, /area/hallway/primary/underone) "Rl" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -14360,7 +14360,7 @@ /obj/item/flash, /obj/item/flash, /obj/structure/table/steel, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -14830,7 +14830,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced/nitrogen, /area/engineering/atmos) @@ -14842,7 +14842,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -14864,7 +14864,7 @@ dir = 8 }, /obj/machinery/disposal, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -14906,7 +14906,7 @@ /turf/simulated/floor/reinforced, /area/rnd/secure_storage/upper) "YN" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -15023,7 +15023,7 @@ /turf/simulated/floor/tiled, /area/engineering/atmos) "Zc" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -15119,7 +15119,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced/airmix, /area/engineering/atmos) diff --git a/maps/rift/levels/rift-04-surface1.dmm b/maps/rift/levels/rift-04-surface1.dmm index 511c0b2c286..878b655446d 100644 --- a/maps/rift/levels/rift-04-surface1.dmm +++ b/maps/rift/levels/rift-04-surface1.dmm @@ -90,7 +90,7 @@ /obj/machinery/atmospherics/pipe/manifold/visible/cyan{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 20 }, /turf/simulated/floor/plating, @@ -774,7 +774,7 @@ /obj/item/storage/belt/utility, /obj/item/storage/belt/utility, /obj/item/t_scanner, -/obj/item/analyzer, +/obj/item/atmos_analyzer, /obj/item/clothing/gloves/fyellow, /obj/item/flashlight, /obj/machinery/light, @@ -1183,7 +1183,7 @@ /obj/effect/floor_decal/corner/red/bordercorner2{ dir = 6 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -1402,7 +1402,7 @@ /turf/simulated/floor/tiled/monotile, /area/quartermaster/garage) "bcL" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -1416,7 +1416,7 @@ /area/hallway/primary/surfaceone) "bcN" = ( /obj/structure/table/standard, -/obj/machinery/alarm/monitor/isolation{ +/obj/machinery/air_alarm/monitor/isolation{ pixel_y = 26 }, /obj/machinery/atmospherics/component/unary/outlet_injector{ @@ -1621,7 +1621,7 @@ "bjd" = ( /obj/machinery/floodlight, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -1658,7 +1658,7 @@ /area/tether/surfacebase/funny/clownoffice) "bkd" = ( /obj/machinery/atmospherics/component/unary/vent_pump/on, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 20 }, /turf/simulated/floor/plating, @@ -1766,7 +1766,7 @@ /turf/simulated/floor/plating, /area/maintenance/starboard) "bmT" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -1990,7 +1990,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 20 }, /obj/machinery/atmospherics/component/unary/vent_pump/on{ @@ -2588,7 +2588,7 @@ /obj/structure/railing{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -2610,7 +2610,7 @@ /obj/effect/floor_decal/corner/brown/border{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -2632,7 +2632,7 @@ "bOt" = ( /obj/structure/flora/pottedplant/minitree, /obj/effect/floor_decal/corner/red/diagonal, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -2852,7 +2852,7 @@ /obj/item/packageWrap, /obj/item/packageWrap, /obj/item/destTagger, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -3052,7 +3052,7 @@ /obj/effect/floor_decal/industrial/warning{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -3242,7 +3242,7 @@ /obj/effect/floor_decal/corner/blue/border{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -3306,7 +3306,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -3413,7 +3413,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 1 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -4230,7 +4230,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -4409,7 +4409,7 @@ /obj/random/maintenance, /obj/random/maintenance, /obj/random/maintenance/clean, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -4874,7 +4874,7 @@ /obj/item/duct_tape_roll, /obj/item/storage/toolbox/mechanical, /obj/item/t_scanner, -/obj/item/analyzer, +/obj/item/atmos_analyzer, /obj/item/stack/cable_coil, /obj/item/flashlight/maglight, /obj/random/toolbox, @@ -5976,7 +5976,7 @@ /obj/effect/floor_decal/corner/brown/bordercorner2{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -7420,7 +7420,7 @@ /turf/simulated/floor/tiled/dark, /area/medical/psych/psych_2) "eJm" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -7612,7 +7612,7 @@ /turf/simulated/floor/plating, /area/crew_quarters/medbreak) "eUk" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -7623,7 +7623,7 @@ /obj/structure/bed/chair/wood{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -7995,7 +7995,7 @@ /obj/effect/floor_decal/industrial/warning{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -8499,7 +8499,7 @@ /obj/item/assembly/igniter, /obj/item/assembly/igniter, /obj/item/assembly/igniter, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = null; pixel_y = 24 }, @@ -8935,7 +8935,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/cable/green{ @@ -9013,7 +9013,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -9392,7 +9392,7 @@ /area/quartermaster/qm) "gim" = ( /obj/structure/catwalk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -9821,7 +9821,7 @@ "gwx" = ( /obj/structure/bed/padded, /obj/item/bedsheet/medical, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -9955,7 +9955,7 @@ "gEv" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/brown/border, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -10652,7 +10652,7 @@ /obj/effect/floor_decal/corner/beige/bordercorner2{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 24 }, /turf/simulated/floor/tiled/white, @@ -10719,7 +10719,7 @@ }, /obj/effect/floor_decal/industrial/warning, /obj/structure/railing, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -10761,7 +10761,7 @@ "gZL" = ( /obj/structure/barricade/cutout/clown, /obj/effect/floor_decal/rust, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = null; pixel_y = 24 }, @@ -10855,7 +10855,7 @@ /obj/effect/floor_decal/corner/green/border{ dir = 9 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -10882,7 +10882,7 @@ /obj/structure/cable/green{ icon_state = "2-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -10931,7 +10931,7 @@ name = "obscure table" }, /obj/random/action_figure, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = null; pixel_y = 24 }, @@ -11126,7 +11126,7 @@ /turf/simulated/floor/tiled/steel, /area/security/prison) "hip" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -11381,7 +11381,7 @@ /obj/structure/toilet{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/light{ @@ -11453,7 +11453,7 @@ /area/maintenance/maint_bar) "hqU" = ( /obj/effect/floor_decal/industrial/loading, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -11927,7 +11927,7 @@ /obj/effect/floor_decal/spline/plain{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -13067,7 +13067,7 @@ /obj/structure/cable/green{ icon_state = "1-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -13894,7 +13894,7 @@ /obj/effect/floor_decal/corner/paleblue/border{ dir = 6 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -14780,7 +14780,7 @@ dir = 1 }, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -14898,8 +14898,8 @@ /obj/structure/table/woodentable, /obj/item/storage/bag/plants, /obj/item/storage/bag/plants, -/obj/item/analyzer/plant_analyzer, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/material/minihoe, /obj/item/material/minihoe, /turf/simulated/floor/tiled/steel, @@ -15222,7 +15222,7 @@ /turf/simulated/floor/tiled/white, /area/medical/psych) "jEg" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -15383,7 +15383,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/supply{ dir = 10 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -16189,7 +16189,7 @@ /turf/simulated/floor/wood, /area/rnd/outpost/xenobiology/outpost_office) "kjM" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -16915,9 +16915,9 @@ /obj/item/clothing/gloves/botanic_leather, /obj/item/clothing/gloves/botanic_leather, /obj/item/clothing/gloves/botanic_leather, -/obj/item/analyzer/plant_analyzer, -/obj/item/analyzer/plant_analyzer, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, +/obj/item/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/tool/wirecutters/clippers/trimmers, /obj/item/tool/wirecutters/clippers/trimmers, /obj/item/material/knife/machete/hatchet, @@ -17392,7 +17392,7 @@ }, /obj/machinery/camera/network/medbay, /obj/structure/table/glass, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 20 }, /obj/item/paper_bin, @@ -17487,7 +17487,7 @@ /area/maintenance/research/lower) "kVL" = ( /obj/effect/floor_decal/borderfloor, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -18395,7 +18395,7 @@ /obj/item/storage/box/syringes{ pixel_y = -4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -18768,7 +18768,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -19203,7 +19203,7 @@ /turf/simulated/floor/tiled/monowhite, /area/security/forensics) "mdL" = ( -/obj/machinery/alarm/monitor/isolation{ +/obj/machinery/air_alarm/monitor/isolation{ pixel_y = 26 }, /obj/structure/table/standard, @@ -19763,7 +19763,7 @@ /obj/structure/bed/chair/wood{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 20 }, /obj/effect/floor_decal/borderfloor{ @@ -19971,7 +19971,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -20566,7 +20566,7 @@ /obj/effect/floor_decal/corner/beige/border{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 24 }, /turf/simulated/floor/tiled/white, @@ -20635,7 +20635,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -21137,7 +21137,7 @@ /obj/effect/floor_decal/corner/brown/border{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -21192,7 +21192,7 @@ dir = 10 }, /obj/machinery/light, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -22022,7 +22022,7 @@ dir = 1 }, /obj/structure/closet/emcloset, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -22451,7 +22451,7 @@ "nUJ" = ( /obj/effect/floor_decal/borderfloorwhite, /obj/effect/floor_decal/corner/paleblue/border, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -22652,7 +22652,7 @@ /obj/effect/floor_decal/corner/mauve/border, /obj/effect/floor_decal/borderfloor/corner2, /obj/effect/floor_decal/corner/mauve/bordercorner2, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -23000,7 +23000,7 @@ dir = 8 }, /obj/effect/floor_decal/industrial/outline/blue, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -23453,7 +23453,7 @@ /obj/effect/floor_decal/industrial/danger{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -23856,7 +23856,7 @@ /obj/item/clothing/suit/space/anomaly, /obj/item/clothing/mask/breath, /obj/item/clothing/head/helmet/space/anomaly, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = null; pixel_y = 24 }, @@ -23942,7 +23942,7 @@ /turf/simulated/floor/tiled/techmaint, /area/rnd/tankstorage) "oOb" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -24410,7 +24410,7 @@ /obj/effect/floor_decal/industrial/loading{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -24559,7 +24559,7 @@ "pcB" = ( /obj/structure/bed/padded, /obj/item/bedsheet/medical, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -24940,7 +24940,7 @@ /obj/effect/floor_decal/corner/lightgrey/border{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -25095,7 +25095,7 @@ /area/maintenance/cargo) "ptg" = ( /obj/machinery/atmospherics/component/unary/vent_pump/high_volume, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 20 }, /turf/simulated/floor/plating, @@ -25325,7 +25325,7 @@ /turf/simulated/floor/tiled/steel, /area/hallway/primary/surfaceone) "pzE" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -25518,7 +25518,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 24 }, /turf/simulated/floor/tiled, @@ -25752,7 +25752,7 @@ /obj/effect/floor_decal/corner/purple/border{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = null; pixel_y = 24 }, @@ -25831,7 +25831,7 @@ /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/brown/border, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -25895,7 +25895,7 @@ /obj/machinery/atmospherics/component/unary/vent_pump{ dir = 8; icon_state = "map_vent_out"; - use_power = 1 + on = 1 }, /obj/structure/window/reinforced{ dir = 1 @@ -26414,7 +26414,7 @@ internal_pressure_bound_default = 4000; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /obj/machinery/door/window/southleft{ dir = 1; @@ -26585,7 +26585,7 @@ /turf/simulated/open, /area/turbolift/rhammerhead/midpoint) "qro" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -26802,7 +26802,7 @@ /turf/simulated/floor/tiled/steel, /area/rnd/hallway) "qwN" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = null; pixel_y = 24 }, @@ -26863,7 +26863,7 @@ /turf/simulated/floor/tiled/steel, /area/rift/trade_shop) "qAu" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -27043,7 +27043,7 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -27410,7 +27410,7 @@ /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak) "qTZ" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -27424,7 +27424,7 @@ }, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, /obj/structure/catwalk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -27599,7 +27599,7 @@ dir = 8 }, /obj/machinery/light, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -27982,7 +27982,7 @@ /obj/effect/floor_decal/industrial/warning/dust{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -28362,7 +28362,7 @@ /obj/effect/floor_decal/corner/mauve/border{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = null; pixel_y = 24 }, @@ -28591,7 +28591,7 @@ /turf/simulated/floor/plating, /area/maintenance/starboard) "rHl" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -28780,7 +28780,7 @@ /obj/item/surgical/scalpel, /obj/item/surgical/cautery, /obj/item/autopsy_scanner, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -29655,7 +29655,7 @@ /obj/effect/floor_decal/corner/pink/border{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -29738,7 +29738,7 @@ }, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, /obj/structure/catwalk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -29872,7 +29872,7 @@ }, /obj/structure/table/reinforced, /obj/machinery/computer/med_data/laptop, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -30934,7 +30934,7 @@ /turf/simulated/floor/tiled/steel, /area/rnd/xenobiology/xenoflora) "sXn" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = null; pixel_y = 24 }, @@ -31507,7 +31507,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/supply{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -32406,7 +32406,7 @@ /area/library) "tQY" = ( /obj/structure/closet/emcloset, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -32834,7 +32834,7 @@ /turf/simulated/floor/tiled/monotile, /area/quartermaster/delivery) "uct" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -33192,7 +33192,7 @@ "unB" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/brown/border, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -33339,7 +33339,7 @@ /area/rnd/outpost/xenobiology/outpost_main) "uqq" = ( /obj/structure/table/standard, -/obj/machinery/alarm/monitor/isolation{ +/obj/machinery/air_alarm/monitor/isolation{ dir = 1; pixel_y = -26 }, @@ -33491,7 +33491,7 @@ /obj/effect/floor_decal/corner/brown/border{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -33575,7 +33575,7 @@ /turf/simulated/floor/tiled/white, /area/medical/medbay_emt_bay) "uvA" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -33917,7 +33917,7 @@ /turf/simulated/floor/tiled/steel, /area/rift/stairwell/primary/surfaceone) "uDC" = ( -/obj/machinery/alarm/monitor/isolation{ +/obj/machinery/air_alarm/monitor/isolation{ dir = 1; pixel_y = -26 }, @@ -34122,7 +34122,7 @@ /turf/simulated/floor/plating, /area/medical/virologymaint) "uLP" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -34260,7 +34260,7 @@ dir = 4 }, /obj/structure/closet/firecloset, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -34808,7 +34808,7 @@ /turf/simulated/floor/tiled, /area/rnd/outpost/xenobiology/outpost_breakroom) "vja" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "anomaly_testing"; breach_detection = 0; dir = 8; @@ -35257,7 +35257,7 @@ /turf/simulated/floor/tiled/steel, /area/rnd/tankstorage) "vBt" = ( -/obj/machinery/alarm/monitor/isolation{ +/obj/machinery/air_alarm/monitor/isolation{ pixel_y = 26 }, /turf/simulated/floor/outdoors/grass/heavy/interior, @@ -35452,7 +35452,7 @@ use_power = 1; volume_rate = 700 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -35460,7 +35460,7 @@ /turf/simulated/floor/tiled, /area/medical/virology) "vLh" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 20 }, /obj/structure/undies_wardrobe, @@ -35896,7 +35896,7 @@ dir = 4 }, /obj/effect/floor_decal/rust, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -36000,7 +36000,7 @@ /turf/simulated/floor/tiled/techmaint, /area/rift/surfaceeva/aa/surface_south) "waZ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -36063,7 +36063,7 @@ /turf/simulated/floor/tiled/white, /area/rnd/chemistry_lab) "wdp" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -36166,7 +36166,7 @@ /obj/machinery/camera/network/medbay{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -36665,7 +36665,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -37616,7 +37616,7 @@ /turf/simulated/floor/plating, /area/maintenance/research/lower) "xaz" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -37636,7 +37636,7 @@ /turf/simulated/floor/outdoors/grass/heavy/interior, /area/rift/station/public_garden) "xbi" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -37796,7 +37796,7 @@ /turf/simulated/floor/plating, /area/engineering/engine_eva) "xcX" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/component/unary/vent_pump/on, @@ -38076,7 +38076,7 @@ name = "Powernet Sensor - Med Subgrid"; name_tag = "Med Subgrid" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -38493,7 +38493,7 @@ /obj/structure/cable/green{ icon_state = "0-2" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -38661,7 +38661,7 @@ /obj/item/reagent_containers/food/snacks/monkeycube/wrapped, /obj/item/reagent_containers/food/snacks/monkeycube/wrapped, /obj/item/reagent_containers/food/snacks/monkeycube/wrapped, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -38960,7 +38960,7 @@ /obj/effect/floor_decal/industrial/warning/corner{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -39001,7 +39001,7 @@ /obj/item/duct_tape_roll, /obj/item/multitool, /obj/item/t_scanner, -/obj/item/analyzer, +/obj/item/atmos_analyzer, /obj/item/stack/cable_coil, /obj/item/clothing/gloves/fyellow, /obj/random/toolbox, @@ -39029,7 +39029,7 @@ /area/tether/surfacebase/funny/mimeoffice) "xQb" = ( /obj/effect/floor_decal/spline/plain, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -39102,7 +39102,7 @@ /area/quartermaster/garage) "xRD" = ( /obj/structure/janitorialcart, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = null; pixel_y = 24 }, diff --git a/maps/rift/levels/rift-05-surface2.dmm b/maps/rift/levels/rift-05-surface2.dmm index e2b1d1b66b9..fba8b95f837 100644 --- a/maps/rift/levels/rift-05-surface2.dmm +++ b/maps/rift/levels/rift-05-surface2.dmm @@ -589,7 +589,7 @@ }, /obj/structure/table/reinforced, /obj/item/paper_bin, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = null; pixel_y = 24 }, @@ -609,7 +609,7 @@ /obj/effect/floor_decal/corner/lightgrey/border{ dir = 9 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -653,7 +653,7 @@ /area/crew_quarters/sleep) "axQ" = ( /obj/structure/table/woodentable, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -1347,7 +1347,7 @@ /turf/simulated/floor/plating, /area/maintenance/asmaint2) "aVr" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -1384,7 +1384,7 @@ /turf/simulated/floor/tiled/steel, /area/rift/trade_shop/loading) "aWP" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -1894,7 +1894,7 @@ /area/assembly/robotics) "bfe" = ( /obj/machinery/light, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -1955,7 +1955,7 @@ dir = 10 }, /obj/structure/closet/secure_closet/medical2, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = null; pixel_y = 24 }, @@ -2410,7 +2410,7 @@ /obj/effect/floor_decal/corner/red/bordercorner2{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 24 }, /turf/simulated/floor/tiled/steel, @@ -2852,7 +2852,7 @@ /obj/effect/floor_decal/industrial/warning{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -3387,7 +3387,7 @@ /turf/simulated/floor/tiled/steel, /area/assembly/robotics) "cbV" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ breach_detection = 0; dir = 1; pixel_y = -22 @@ -3441,7 +3441,7 @@ /obj/effect/floor_decal/spline/plain{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -3487,7 +3487,7 @@ /obj/effect/floor_decal/corner/paleblue{ dir = 10 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = null; pixel_y = 24 }, @@ -5552,7 +5552,7 @@ /area/medical/surgery_hallway) "dzC" = ( /obj/structure/catwalk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -5912,7 +5912,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -6736,7 +6736,7 @@ /turf/simulated/floor/tiled/techfloor, /area/maintenance/dormitory) "elb" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -6781,7 +6781,7 @@ /area/medical/medbay_primary_storage) "emu" = ( /obj/structure/table/woodentable, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -7371,7 +7371,7 @@ /obj/item/gun/energy/gun, /obj/effect/floor_decal/industrial/outline/yellow, /obj/machinery/camera/network/security, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 24 }, /turf/simulated/floor/tiled/dark, @@ -8056,7 +8056,7 @@ /obj/effect/floor_decal/corner/lightgrey/border{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -8390,7 +8390,7 @@ "foH" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -8629,7 +8629,7 @@ "fzG" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/lightgrey/border, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -9034,7 +9034,7 @@ /area/security/range) "fOd" = ( /obj/machinery/recharge_station, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -9909,7 +9909,7 @@ /obj/effect/floor_decal/corner/paleblue{ dir = 5 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = null; pixel_y = 24 }, @@ -10503,7 +10503,7 @@ dir = 1 }, /obj/machinery/atmospherics/pipe/simple/hidden, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -10661,7 +10661,7 @@ pixel_x = -25; req_access = list(55) }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -35 }, @@ -10727,7 +10727,7 @@ /turf/simulated/floor/tiled/steel, /area/holodeck_control) "gMc" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 24 }, /obj/machinery/light{ @@ -10784,7 +10784,7 @@ }, /obj/effect/floor_decal/industrial/warning, /obj/structure/railing, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = null; pixel_y = 24 }, @@ -11799,7 +11799,7 @@ pixel_x = 3; pixel_y = 5 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = null; pixel_y = 24 }, @@ -12307,7 +12307,7 @@ /obj/machinery/computer/aifixer{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -12359,7 +12359,7 @@ /obj/effect/floor_decal/corner/purple/border{ dir = 9 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = null; pixel_y = 24 }, @@ -12513,7 +12513,7 @@ /obj/effect/floor_decal/corner/red/border{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -12556,7 +12556,7 @@ /turf/simulated/floor/tiled/dark, /area/rnd/outpost/xenobiology/outpost_slimepens) "hUC" = ( -/obj/machinery/alarm/monitor/isolation{ +/obj/machinery/air_alarm/monitor/isolation{ alarm_id = "slime_pens"; dir = 4; pixel_x = -22 @@ -12573,7 +12573,7 @@ /obj/effect/floor_decal/spline/plain{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -13814,7 +13814,7 @@ /obj/effect/floor_decal/corner/paleblue/border{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = null; pixel_y = 24 }, @@ -15592,7 +15592,7 @@ "jUi" = ( /obj/machinery/optable, /obj/effect/floor_decal/industrial/outline/blue, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -15632,7 +15632,7 @@ /obj/effect/floor_decal/borderfloorblack{ dir = 9 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -15916,7 +15916,7 @@ /obj/structure/closet/secure_closet/guncabinet{ anchored = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -16018,7 +16018,7 @@ pixel_y = -2 }, /obj/effect/floor_decal/borderfloorblack/full, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -16086,7 +16086,7 @@ /obj/effect/floor_decal/corner/lightgrey/bordercorner2{ dir = 10 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -17039,7 +17039,7 @@ /turf/simulated/floor/tiled/steel, /area/crew_quarters/heads/hor) "kMj" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -17800,7 +17800,7 @@ /obj/item/clothing/mask/gas/half, /obj/item/clothing/mask/gas/half, /obj/item/clothing/mask/gas/half, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -18286,7 +18286,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -18311,7 +18311,7 @@ "lxu" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/lightgrey/border, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -19113,7 +19113,7 @@ /area/medical/reception) "lUe" = ( /obj/structure/table/standard, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -19332,7 +19332,7 @@ /area/maintenance/asmaint2) "maU" = ( /obj/structure/table/woodentable, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -20527,7 +20527,7 @@ /turf/simulated/floor/tiled/steel, /area/crew_quarters/sleep) "mGL" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -20851,7 +20851,7 @@ "mRB" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/purple/border, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -21365,7 +21365,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -21908,7 +21908,7 @@ /turf/simulated/floor/tiled, /area/security/briefing_room) "nAo" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -21946,7 +21946,7 @@ alpha = 255; dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -22104,7 +22104,7 @@ "nHA" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/purple/border, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -23787,7 +23787,7 @@ /obj/machinery/camera/network/civilian{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -24019,7 +24019,7 @@ /obj/effect/floor_decal/corner_techfloor_grid/full{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -24103,7 +24103,7 @@ /area/crew_quarters/sleep/Dorm_5) "oWE" = ( /obj/structure/table/woodentable, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -24439,7 +24439,7 @@ /area/security/hammerhead_bay) "pfD" = ( /obj/structure/table/woodentable, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -25399,7 +25399,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor, @@ -25676,7 +25676,7 @@ /turf/simulated/floor/plating, /area/maintenance/asmaint2) "pZT" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = null; pixel_y = 24 }, @@ -26458,7 +26458,7 @@ "qxJ" = ( /obj/structure/reagent_dispensers/watertank, /obj/effect/floor_decal/rust, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -26602,7 +26602,7 @@ /area/rnd/workshop) "qBv" = ( /obj/machinery/scale, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -26715,7 +26715,7 @@ /obj/effect/floor_decal/corner/lightgrey/border{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -26737,7 +26737,7 @@ /turf/simulated/floor/water/deep/pool, /area/crew_quarters/pool) "qHW" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -26767,7 +26767,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = null; pixel_y = 24 }, @@ -26980,7 +26980,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 8 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -27030,7 +27030,7 @@ name = "north bump"; pixel_y = 24 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -27087,7 +27087,7 @@ /turf/simulated/floor/tiled/dark, /area/security/lobby) "qSY" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -27482,7 +27482,7 @@ }, /obj/machinery/papershredder, /obj/structure/table/steel, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -27704,7 +27704,7 @@ }, /obj/item/hand_labeler, /obj/item/pen, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = null; pixel_y = 24 }, @@ -28027,7 +28027,7 @@ /turf/simulated/floor/reinforced, /area/security/hammerhead_bay) "rrL" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -28286,7 +28286,7 @@ /obj/effect/floor_decal/corner/paleblue/border{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -28385,7 +28385,7 @@ /obj/effect/floor_decal/corner/lightgrey{ dir = 10 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -28842,7 +28842,7 @@ pixel_y = -8; req_access = list(55) }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -35 }, @@ -29350,7 +29350,7 @@ /obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary{ scrub_id = "xeno_phoron_pen_scrubbers" }, -/obj/machinery/alarm/monitor/isolation{ +/obj/machinery/air_alarm/monitor/isolation{ alarm_id = "slime_pens"; dir = 1; pixel_y = -22 @@ -30084,7 +30084,7 @@ /area/hallway/primary/surfacetwo) "sLL" = ( /obj/structure/catwalk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -30322,7 +30322,7 @@ dir = 4 }, /obj/structure/bed/chair/wood, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -30422,7 +30422,7 @@ /obj/effect/floor_decal/corner/red/border{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -31323,7 +31323,7 @@ /area/maintenance/dormitory) "tCA" = ( /obj/structure/table/woodentable, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -31341,7 +31341,7 @@ "tDr" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -31804,7 +31804,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ breach_detection = 0; dir = 1; pixel_y = -22 @@ -32151,7 +32151,7 @@ /obj/item/tank/oxygen, /obj/item/suit_cooling_unit, /obj/item/tank/jetpack/oxygen, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -32953,7 +32953,7 @@ dir = 8; pixel_x = -24 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -32984,7 +32984,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 8 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -32995,7 +32995,7 @@ /area/rift/trade_shop/loading) "uNX" = ( /obj/effect/floor_decal/industrial/outline/yellow, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -33075,7 +33075,7 @@ /turf/simulated/floor/reinforced, /area/security/hammerhead_bay) "uRh" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = null; pixel_y = 24 }, @@ -33470,7 +33470,7 @@ /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, /obj/effect/mist, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 30 }, /obj/machinery/camera/network/civilian, @@ -34767,7 +34767,7 @@ "vSi" = ( /obj/structure/table/rack/shelf/steel, /obj/effect/floor_decal/industrial/outline/red, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 24 }, /obj/machinery/light{ @@ -35081,7 +35081,7 @@ /obj/machinery/door/firedoor/glass{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = null; pixel_y = 24 }, @@ -35304,7 +35304,7 @@ /obj/effect/floor_decal/corner/purple/border{ dir = 9 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -35962,7 +35962,7 @@ /obj/effect/floor_decal/borderfloorwhite, /obj/effect/floor_decal/corner/paleblue/border, /obj/machinery/light, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -36463,7 +36463,7 @@ /turf/simulated/floor/plating, /area/maintenance/asmaint2) "xdl" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -36524,7 +36524,7 @@ /turf/simulated/floor/tiled/monotile, /area/security/security_lockerroom) "xfF" = ( -/obj/machinery/alarm/monitor/isolation{ +/obj/machinery/air_alarm/monitor/isolation{ alarm_id = "slime_pens"; dir = 8; pixel_x = 22 @@ -36758,7 +36758,7 @@ pixel_x = 2; pixel_y = 2 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -37372,7 +37372,7 @@ /turf/simulated/floor/tiled/white, /area/medical/resleeving) "xII" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -37492,7 +37492,7 @@ name = "Station Intercom (General)"; pixel_y = 21 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 30 }, /obj/machinery/computer/security/xenobio, @@ -37957,7 +37957,7 @@ /turf/simulated/floor/tiled/monotile, /area/hallway/primary/surfacetwo) "xXj" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -38487,7 +38487,7 @@ desc = "A small wall mounted cabinet designed to hold a fire extinguisher. "; pixel_y = -32 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, diff --git a/maps/rift/levels/rift-06-surface3.dmm b/maps/rift/levels/rift-06-surface3.dmm index 042cf237ba0..936b2d0d76e 100644 --- a/maps/rift/levels/rift-06-surface3.dmm +++ b/maps/rift/levels/rift-06-surface3.dmm @@ -790,7 +790,7 @@ /obj/effect/floor_decal/techfloor{ dir = 10 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -831,8 +831,8 @@ /obj/structure/table/standard{ name = "plastic table frame" }, -/obj/item/analyzer/plant_analyzer, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/material/minihoe, /obj/item/material/minihoe, /obj/effect/floor_decal/borderfloor, @@ -917,7 +917,7 @@ /turf/simulated/floor/tiled/steel_grid, /area/exploration/excursion_dock) "acY" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = null; pixel_y = 24 }, @@ -1166,7 +1166,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -1609,7 +1609,7 @@ /obj/machinery/computer/ship/navigation/telescreen{ pixel_x = -32 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 24 }, /turf/simulated/floor/carpet/tealcarpet, @@ -1951,7 +1951,7 @@ /obj/effect/floor_decal/corner/blue/bordercorner2{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -2114,7 +2114,7 @@ /obj/machinery/atmospherics/component/unary/vent_pump/on{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -2130,7 +2130,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -2327,7 +2327,7 @@ /turf/simulated/floor/tiled/dark, /area/exploration/showers) "ahl" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -2387,7 +2387,7 @@ /turf/simulated/floor/tiled/white, /area/crew_quarters/kitchen) "ahu" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -2404,7 +2404,7 @@ name = "south bump"; pixel_y = -24 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -2792,7 +2792,7 @@ /turf/simulated/floor/reinforced/lythios43c, /area/rift/surfacebase/outside/outside3) "aiC" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -3369,7 +3369,7 @@ /turf/simulated/floor/tiled/steel, /area/exploration) "ajV" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -3587,7 +3587,7 @@ "ako" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/beige/border, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -3875,7 +3875,7 @@ /turf/simulated/floor/tiled/techfloor/grid/lythios43c, /area/shuttle/excursion/general) "akY" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -4773,14 +4773,14 @@ }, /obj/item/storage/toolbox/mechanical, /obj/item/tank/phoron, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/cockpit) "anx" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -5758,7 +5758,7 @@ /turf/simulated/floor/tiled/dark, /area/bridge) "aqi" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -5887,7 +5887,7 @@ /obj/machinery/seed_storage/garden, /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/lime/border, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -6557,7 +6557,7 @@ /obj/machinery/computer/ship/navigation/telescreen{ pixel_x = 32 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 24 }, /turf/simulated/floor/carpet/tealcarpet, @@ -6620,7 +6620,7 @@ /obj/effect/floor_decal/spline/plain{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -6689,7 +6689,7 @@ /turf/simulated/floor/tiled, /area/exploration/explorer_prep) "asz" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -7647,7 +7647,7 @@ }, /obj/effect/floor_decal/industrial/warning, /obj/structure/railing, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -7852,7 +7852,7 @@ /obj/effect/floor_decal/borderfloorblack/corner2{ dir = 6 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -7996,7 +7996,7 @@ /turf/simulated/floor/tiled/dark, /area/crew_quarters/heads/hop) "avX" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -8855,7 +8855,7 @@ /obj/structure/bed/chair{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -8966,7 +8966,7 @@ /obj/effect/floor_decal/borderfloorblack{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -9646,7 +9646,7 @@ /turf/simulated/shuttle/wall/voidcraft/green, /area/shuttle/civvie/general) "aAn" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -10249,7 +10249,7 @@ /obj/effect/floor_decal/borderfloorblack/corner2{ dir = 6 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -10619,7 +10619,7 @@ /turf/simulated/floor/lythios43c/indoors, /area/maintenance/commandmaint) "aDt" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -11290,7 +11290,7 @@ /turf/simulated/floor/carpet/bcarpet, /area/crew_quarters/bar) "aFx" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 22; req_one_access = list(160) @@ -11317,7 +11317,7 @@ name = "AI Upload turret control"; pixel_x = 30 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 24 }, /obj/effect/floor_decal/techfloor{ @@ -11472,7 +11472,7 @@ dir = 10 }, /obj/landmark/spawnpoint/job/explorer, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -11910,7 +11910,7 @@ /obj/effect/floor_decal/corner/lightgrey{ dir = 5 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -12078,7 +12078,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 8 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -13389,7 +13389,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -13916,7 +13916,7 @@ /turf/simulated/floor/carpet/bcarpet, /area/crew_quarters/bar) "aMI" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -24 }, @@ -14612,7 +14612,7 @@ "aOJ" = ( /obj/machinery/computer/robotics, /obj/structure/table/reinforced, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -14646,7 +14646,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -14767,7 +14767,7 @@ /obj/machinery/computer/ship/navigation/telescreen{ pixel_y = -32 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -16182,7 +16182,7 @@ /turf/simulated/floor/tiled/steel, /area/teleporter/departing) "aSV" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -16794,7 +16794,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -16873,7 +16873,7 @@ /turf/simulated/floor/tiled/steel_grid, /area/exploration/explorer_prep) "aUU" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 24 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -17140,7 +17140,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -17929,7 +17929,7 @@ /turf/simulated/floor/tiled/old_tile/green, /area/shuttle/civvie/general) "aYa" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -18249,7 +18249,7 @@ dir = 5 }, /obj/effect/floor_decal/corner/paleblue, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -18323,7 +18323,7 @@ /area/rift/surfacebase/outside/outside3) "aZk" = ( /obj/structure/table/bench/standard, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -18364,7 +18364,7 @@ /obj/effect/floor_decal/borderfloorblack{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -18558,7 +18558,7 @@ dir = 4; pixel_x = 32 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -18618,7 +18618,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -18802,7 +18802,7 @@ /obj/effect/floor_decal/corner/lightgrey/border{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = " "; pixel_y = 24 }, @@ -19656,7 +19656,7 @@ pixel_y = 32 }, /obj/machinery/vending/giftvendor, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -19704,7 +19704,7 @@ /obj/effect/floor_decal/corner/red/border{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -19828,7 +19828,7 @@ /obj/item/storage/fancy/candle_box, /obj/item/storage/fancy/whitecandle_box, /obj/item/storage/fancy/blackcandle_box, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -19934,7 +19934,7 @@ /turf/simulated/floor/tiled/white, /area/crew_quarters/kitchen) "eIi" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -20043,7 +20043,7 @@ /obj/random/tech_supply, /obj/structure/table/steel, /obj/random/maintenance/engineering, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -21331,7 +21331,7 @@ /obj/effect/floor_decal/corner/lightgrey/border{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -21373,7 +21373,7 @@ /obj/effect/floor_decal/industrial/warning{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 24 }, /obj/machinery/light{ @@ -22009,7 +22009,7 @@ pixel_x = 3; pixel_y = 2 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -24648,7 +24648,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -25471,7 +25471,7 @@ /area/bridge/bridge_hallway) "tyY" = ( /obj/effect/floor_decal/corner/grey/diagonal, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, diff --git a/maps/rift/levels/rift-08-west_deep.dmm b/maps/rift/levels/rift-08-west_deep.dmm index 72ffea94e6a..1da386cc19d 100644 --- a/maps/rift/levels/rift-08-west_deep.dmm +++ b/maps/rift/levels/rift-08-west_deep.dmm @@ -1958,7 +1958,7 @@ /area/gateway/prep_room) "rb" = ( /obj/effect/floor_decal/spline/fancy/wood, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -2558,7 +2558,7 @@ /turf/simulated/floor/outdoors/gravsnow/lythios43c/indoors, /area/rift/surfacebase/outside/west_deep) "xf" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/techfloor, @@ -2662,7 +2662,7 @@ /turf/simulated/floor/tiled/techfloor, /area/gateway) "yp" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -2894,7 +2894,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/steel_grid, @@ -2968,7 +2968,7 @@ /turf/simulated/mineral/ignore_cavegen/lythios43c, /area/rift/surfacebase/outside/west_deep) "AW" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/industrial/hatch/yellow, @@ -3816,7 +3816,7 @@ /turf/simulated/floor/wood, /area/outpost/mining_main/outpost/recreation) "In" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/closet/hydrant{ @@ -4271,7 +4271,7 @@ /turf/simulated/floor/tiled/dark, /area/gateway/prep_room) "Mo" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -4374,7 +4374,7 @@ /area/gateway/prep_room) "Nq" = ( /obj/structure/table/reinforced, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -5514,7 +5514,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/cable/green{ diff --git a/maps/rift/levels/rift-09-west_caves.dmm b/maps/rift/levels/rift-09-west_caves.dmm index 3ea098b022d..fd460571e3f 100644 --- a/maps/rift/levels/rift-09-west_caves.dmm +++ b/maps/rift/levels/rift-09-west_caves.dmm @@ -950,7 +950,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -1794,7 +1794,7 @@ /turf/simulated/floor/tiled/steel_dirty/lythios43c/indoors, /area/rift/facility/interior/underground1) "vn" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/techfloor, @@ -2657,7 +2657,7 @@ /turf/simulated/floor/tiled/steel_grid, /area/outpost/mining_main/outpost/storage) "Eq" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -2825,7 +2825,7 @@ /obj/effect/floor_decal/corner/purple/border{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, diff --git a/maps/rift/levels/rift-10-west_plains.dmm b/maps/rift/levels/rift-10-west_plains.dmm index a1f6a4f5458..898408b7538 100644 --- a/maps/rift/levels/rift-10-west_plains.dmm +++ b/maps/rift/levels/rift-10-west_plains.dmm @@ -976,7 +976,7 @@ dir = 1 }, /obj/structure/table/standard, -/obj/item/analyzer, +/obj/item/atmos_analyzer, /obj/machinery/camera/network/research_outpost{ dir = 1 }, @@ -1085,7 +1085,7 @@ dir = 8 }, /obj/machinery/meter, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -1166,7 +1166,7 @@ /turf/simulated/floor/tiled, /area/rnd/outpost/anomaly_lab) "fw" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/borderfloor{ @@ -1374,7 +1374,7 @@ /area/rift/facility/interior/surface) "gq" = ( /obj/machinery/atmospherics/portables_connector, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -2078,7 +2078,7 @@ /obj/effect/floor_decal/corner/yellow/bordercorner{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 25 }, /obj/machinery/atmospherics/pipe/simple/hidden{ @@ -3345,7 +3345,7 @@ /turf/simulated/floor/tiled, /area/rnd/outpost) "pv" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "anomaly_testing"; breach_detection = 0; dir = 8; @@ -3502,7 +3502,7 @@ /obj/item/storage/excavation, /obj/item/stack/flag/yellow, /obj/item/pickaxe, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -3927,7 +3927,7 @@ pixel_x = 6; pixel_y = 26 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -4050,7 +4050,7 @@ /turf/simulated/floor/outdoors/snow/lythios43c/indoors, /area/rift/surfacebase/outside/west) "sH" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -4192,7 +4192,7 @@ /obj/machinery/atmospherics/component/unary/vent_pump/on{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -4293,7 +4293,7 @@ /turf/simulated/wall/r_wall, /area/rift/facility/exterior) "tB" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/steeldecal/steel_decals5, @@ -4425,7 +4425,7 @@ /area/rnd/outpost/anomaly_lab) "ug" = ( /obj/machinery/atmospherics/component/unary/vent_pump/on, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 25 }, /turf/simulated/floor/tiled, @@ -4650,7 +4650,7 @@ name = "Powernet Sensor - Science Outpost Subgrid"; name_tag = "Science Outpost Subgrid" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -4740,7 +4740,7 @@ /obj/structure/cable/green{ icon_state = "2-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -5557,7 +5557,7 @@ /area/rnd/outpost/anomaly_lab/analysis) "yY" = ( /obj/machinery/atmospherics/component/unary/vent_pump/on, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -5587,7 +5587,7 @@ /obj/machinery/camera/network/research_outpost{ dir = 8 }, -/obj/item/analyzer, +/obj/item/atmos_analyzer, /turf/simulated/floor/tiled/white, /area/rnd/outpost/heating) "zc" = ( @@ -5950,7 +5950,7 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -6456,7 +6456,7 @@ /turf/simulated/floor, /area/construction/solarscontrol) "DH" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -6698,9 +6698,8 @@ /turf/simulated/wall, /area/rnd/outpost/mixing) "Fe" = ( -/obj/machinery/atmospherics/component/trinary/atmos_filter/m_filter{ - filter_type = 4; - filtered_out = list("nitrous_oxide") +/obj/machinery/atmospherics/component/trinary/filter/mirrored{ + filtering = /datum/gas/nitrous_oxide }, /turf/simulated/floor, /area/rnd/outpost/atmos) @@ -6708,7 +6707,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -6944,7 +6943,7 @@ /turf/simulated/floor/outdoors/snow/lythios43c, /area/rift/facility/exterior) "Gi" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/steel_dirty, @@ -7314,7 +7313,7 @@ /turf/simulated/open, /area/outpost/mining_main/outpost/airlock/one) "HM" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -8042,7 +8041,7 @@ /turf/simulated/wall/r_wall, /area/rnd/outpost/chamber) "KY" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/corner/purple{ @@ -8607,7 +8606,7 @@ /turf/simulated/floor, /area/rnd/outpost/atmos) "NV" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -8724,7 +8723,7 @@ /obj/structure/cable/green{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/borderfloor{ @@ -8970,9 +8969,8 @@ /turf/simulated/floor/tiled, /area/rnd/outpost/anomaly_lab) "PB" = ( -/obj/machinery/atmospherics/component/trinary/atmos_filter/m_filter{ - filter_type = 0; - filtered_out = list("phoron") +/obj/machinery/atmospherics/component/trinary/filter/mirrored{ + filtering = /datum/gas/phoron }, /turf/simulated/floor, /area/rnd/outpost/atmos) @@ -9794,7 +9792,7 @@ "Tu" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/purple/border, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -10462,9 +10460,8 @@ /turf/simulated/floor/tiled/white, /area/rnd/outpost/heating) "WP" = ( -/obj/machinery/atmospherics/component/trinary/atmos_filter/m_filter{ - filter_type = 3; - filtered_out = list("carbon_dioxide") +/obj/machinery/atmospherics/component/trinary/filter/mirrored{ + filtering = /datum/gas/carbon_dioxide }, /turf/simulated/floor, /area/rnd/outpost/atmos) @@ -10814,7 +10811,7 @@ /turf/simulated/floor/tiled/steel/lythios43c, /area/rift/facility/interior/elevator) "Ys" = ( -/obj/machinery/atmospherics/component/trinary/atmos_filter{ +/obj/machinery/atmospherics/component/trinary/filter{ dir = 4; name = "High Power Gas filter"; power_rating = 15000; @@ -11138,7 +11135,7 @@ /obj/effect/floor_decal/corner/purple/border{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, diff --git a/maps/sectors/frozen_140/levels/frozen_140.dmm b/maps/sectors/frozen_140/levels/frozen_140.dmm index 1a1c94e3726..d3ff1f11f47 100644 --- a/maps/sectors/frozen_140/levels/frozen_140.dmm +++ b/maps/sectors/frozen_140/levels/frozen_140.dmm @@ -345,7 +345,7 @@ /turf/simulated/floor/outdoors/snow/classp/no_tree, /area/class_p/unexplored) "oa" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 24 }, /obj/structure/blob/normal, @@ -359,7 +359,7 @@ /turf/simulated/floor/outdoors/shelfice/classp, /area/class_p/unexplored) "oe" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 24 }, /turf/simulated/floor/old_tile/blue/classp{ @@ -433,7 +433,7 @@ /turf/simulated/floor/classp, /area/class_p/facility) "ss" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 24 }, /obj/structure/barricade, @@ -753,7 +753,7 @@ }, /area/class_p/facility) "IK" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 24 }, /obj/structure/blob/normal, @@ -1031,7 +1031,7 @@ }, /area/class_p/facility) "XK" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 24 }, /turf/simulated/floor/classp, diff --git a/maps/sectors/frozen_192/levels/frozen_192.dmm b/maps/sectors/frozen_192/levels/frozen_192.dmm index 4677e775509..85c9258182d 100644 --- a/maps/sectors/frozen_192/levels/frozen_192.dmm +++ b/maps/sectors/frozen_192/levels/frozen_192.dmm @@ -170,7 +170,7 @@ }, /area/class_p/unexplored) "iq" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 24 }, /turf/simulated/floor/classp, @@ -631,7 +631,7 @@ /turf/simulated/floor/classp, /area/class_p/unexplored) "FU" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 24 }, /obj/structure/barricade, @@ -710,7 +710,7 @@ /turf/simulated/floor/classp, /area/class_p/unexplored) "Ku" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 24 }, /obj/structure/blob/normal, @@ -942,7 +942,7 @@ }, /area/class_p/unexplored) "VV" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 24 }, /turf/simulated/floor/old_tile/blue/classp{ @@ -981,7 +981,7 @@ }, /area/class_p/unexplored) "Xi" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 24 }, /obj/structure/blob/normal, diff --git a/maps/sectors/gaia_140/levels/gaia_140.dmm b/maps/sectors/gaia_140/levels/gaia_140.dmm index 61b79f2af8d..19ea29192a0 100644 --- a/maps/sectors/gaia_140/levels/gaia_140.dmm +++ b/maps/sectors/gaia_140/levels/gaia_140.dmm @@ -227,8 +227,8 @@ /obj/item/material/minihoe, /obj/item/shovel/spade, /obj/item/shovel/spade, -/obj/item/analyzer/plant_analyzer, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/tool/wirecutters/clippers/trimmers, /turf/simulated/floor/outdoors/grass/classm, /area/class_m/outside) @@ -1468,8 +1468,8 @@ /obj/item/material/minihoe, /obj/item/shovel/spade, /obj/item/shovel/spade, -/obj/item/analyzer/plant_analyzer, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/tool/wirecutters/clippers/trimmers, /turf/simulated/floor/outdoors/grass/classm, /area/class_m/outside) diff --git a/maps/sectors/gaia_192/levels/gaia_192.dmm b/maps/sectors/gaia_192/levels/gaia_192.dmm index 043142bbff7..dd62c4bd730 100644 --- a/maps/sectors/gaia_192/levels/gaia_192.dmm +++ b/maps/sectors/gaia_192/levels/gaia_192.dmm @@ -867,8 +867,8 @@ /obj/item/material/minihoe, /obj/item/shovel/spade, /obj/item/shovel/spade, -/obj/item/analyzer/plant_analyzer, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/tool/wirecutters/clippers/trimmers, /turf/simulated/floor/outdoors/grass/classm, /area/class_m/outside) @@ -951,8 +951,8 @@ /obj/item/material/minihoe, /obj/item/shovel/spade, /obj/item/shovel/spade, -/obj/item/analyzer/plant_analyzer, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/tool/wirecutters/clippers/trimmers, /turf/simulated/floor/outdoors/grass/classm, /area/class_m/outside) @@ -4312,8 +4312,8 @@ /obj/item/material/minihoe, /obj/item/shovel/spade, /obj/item/shovel/spade, -/obj/item/analyzer/plant_analyzer, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/tool/wirecutters/clippers/trimmers, /turf/simulated/floor/tiled/classm, /area/class_m/inside) @@ -8655,8 +8655,8 @@ /obj/item/material/minihoe, /obj/item/shovel/spade, /obj/item/shovel/spade, -/obj/item/analyzer/plant_analyzer, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/tool/wirecutters/clippers/trimmers, /turf/simulated/floor/tiled/classm, /area/class_m/inside) diff --git a/maps/sectors/lavaland_140/levels/lavaland_140.dmm b/maps/sectors/lavaland_140/levels/lavaland_140.dmm index fc1fca17883..ee617f4cee4 100644 --- a/maps/sectors/lavaland_140/levels/lavaland_140.dmm +++ b/maps/sectors/lavaland_140/levels/lavaland_140.dmm @@ -25,7 +25,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -23; req_one_access = list(48) @@ -89,7 +89,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -27; req_one_access = list(48) @@ -208,7 +208,7 @@ /obj/structure/bed/chair{ dir = 1 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -23; req_one_access = list(48) @@ -337,7 +337,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -27; req_one_access = list(48) @@ -414,7 +414,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 1 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -23; req_one_access = list(48) @@ -937,7 +937,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -23; req_one_access = list(48) @@ -1115,7 +1115,7 @@ /obj/machinery/atmospherics/component/unary/vent_pump/on{ dir = 1 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -27; req_one_access = list(48) @@ -1166,7 +1166,7 @@ /turf/simulated/floor/tiled, /area/lavaland/central/base/common) "ws" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(48) }, @@ -1326,7 +1326,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(48) }, @@ -1375,7 +1375,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced/airmix, /area/lavaland/central/base/common) @@ -1495,7 +1495,7 @@ /obj/effect/floor_decal/industrial/warning{ dir = 8 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -23; req_one_access = list(48) @@ -1661,7 +1661,7 @@ /obj/machinery/atmospherics/portables_connector{ dir = 1 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -27; req_one_access = list(48) @@ -1757,7 +1757,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(48) }, @@ -1872,7 +1872,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 8 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(48) }, @@ -1999,7 +1999,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 1 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -23; req_one_access = list(48) @@ -2474,7 +2474,7 @@ /area/lavaland/central/base/common) "VY" = ( /obj/structure/closet/crate/bin, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(48) }, diff --git a/maps/sectors/lavaland_192/levels/lavaland_192.dmm b/maps/sectors/lavaland_192/levels/lavaland_192.dmm index 57e19c8eed5..69d379ab853 100644 --- a/maps/sectors/lavaland_192/levels/lavaland_192.dmm +++ b/maps/sectors/lavaland_192/levels/lavaland_192.dmm @@ -369,7 +369,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -23; req_one_access = list(48) @@ -543,7 +543,7 @@ /obj/machinery/atmospherics/portables_connector{ dir = 1 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -27; req_one_access = list(48) @@ -897,7 +897,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced/airmix, /area/lavaland/central/base/common) @@ -994,7 +994,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -27; req_one_access = list(48) @@ -1076,7 +1076,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -27; req_one_access = list(48) @@ -1142,7 +1142,7 @@ /area/lavaland/central/base/common) "uE" = ( /obj/structure/closet/crate/bin, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(48) }, @@ -1321,7 +1321,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 1 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -23; req_one_access = list(48) @@ -1625,7 +1625,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 8 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(48) }, @@ -1712,7 +1712,7 @@ /obj/structure/bed/chair{ dir = 1 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -23; req_one_access = list(48) @@ -1823,7 +1823,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 1 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -23; req_one_access = list(48) @@ -1944,7 +1944,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(48) }, @@ -1978,7 +1978,7 @@ /turf/simulated/floor/carpet/bcarpet, /area/lavaland/central/base/common) "Qs" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(48) }, @@ -2176,7 +2176,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(48) }, @@ -2202,7 +2202,7 @@ /obj/effect/floor_decal/industrial/warning{ dir = 8 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -23; req_one_access = list(48) @@ -2241,7 +2241,7 @@ /obj/machinery/atmospherics/component/unary/vent_pump/on{ dir = 1 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -27; req_one_access = list(48) @@ -2520,7 +2520,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -23; req_one_access = list(48) diff --git a/maps/sectors/miaphus_192/levels/miaphus_192_beach.dmm b/maps/sectors/miaphus_192/levels/miaphus_192_beach.dmm index 575fd067f8e..51b2d18cf85 100644 --- a/maps/sectors/miaphus_192/levels/miaphus_192_beach.dmm +++ b/maps/sectors/miaphus_192/levels/miaphus_192_beach.dmm @@ -4272,8 +4272,8 @@ /obj/structure/table/standard{ name = "plastic table frame" }, -/obj/item/analyzer/plant_analyzer, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/material/minihoe, /obj/item/material/minihoe, /obj/item/material/knife/machete/hatchet, diff --git a/maps/sectors/piratebase_192/levels/piratebase_192.dmm b/maps/sectors/piratebase_192/levels/piratebase_192.dmm index c3d2ecd16b2..d1e7c9e30dc 100644 --- a/maps/sectors/piratebase_192/levels/piratebase_192.dmm +++ b/maps/sectors/piratebase_192/levels/piratebase_192.dmm @@ -258,7 +258,7 @@ /turf/simulated/floor/tiled/steel_dirty, /area/piratebase/bunks) "cs" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -27; req_one_access = list(168) @@ -612,7 +612,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 28; req_one_access = list(168) @@ -759,7 +759,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 1 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -30; req_one_access = list(168) @@ -864,7 +864,7 @@ /area/piratebase/mining) "ii" = ( /obj/machinery/atmospherics/component/unary/vent_scrubber/on, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(168) }, @@ -1096,7 +1096,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -30; req_one_access = list(168) @@ -1121,7 +1121,7 @@ /turf/simulated/floor/tiled/steel_dirty/silver, /area/piratebase/bunks) "kq" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(168) }, @@ -1239,7 +1239,7 @@ /area/space) "ly" = ( /obj/machinery/atmospherics/component/unary/vent_scrubber/on, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(168) }, @@ -1387,7 +1387,7 @@ icon_state = "4-8" }, /obj/effect/floor_decal/rust, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(168) }, @@ -1744,7 +1744,7 @@ /turf/simulated/floor/tiled/steel_dirty/silver, /area/piratebase/atmospherics) "pG" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -30; req_one_access = list(168) @@ -2199,7 +2199,7 @@ /turf/simulated/floor/tiled/steel_dirty/silver, /area/piratebase/halls) "tS" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -30; req_one_access = list(168) @@ -2228,7 +2228,7 @@ /turf/simulated/floor/wood, /area/piratebase/captain) "uC" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(168) }, @@ -2339,7 +2339,7 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(168) }, @@ -2580,7 +2580,7 @@ /area/piratebase/power) "yh" = ( /obj/effect/floor_decal/rust, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -27; req_one_access = list(168) @@ -3038,7 +3038,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(168) }, @@ -3581,7 +3581,7 @@ /turf/simulated/floor, /area/shuttle/pirate/deck) "GF" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -30; req_one_access = list(168) @@ -3727,7 +3727,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 8 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 28; req_one_access = list(168) @@ -3893,7 +3893,7 @@ /turf/simulated/floor/tiled/steel_dirty, /area/piratebase/bunks) "Ix" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(168) }, @@ -4109,7 +4109,7 @@ /turf/simulated/floor/plating, /area/piratebase/halls) "Lo" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(168) }, @@ -4410,7 +4410,7 @@ /area/piratebase/bunks) "NX" = ( /obj/machinery/atmospherics/component/unary/vent_scrubber/on, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(168) }, @@ -4816,7 +4816,7 @@ /area/piratebase/mining) "Rg" = ( /obj/effect/floor_decal/rust, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -30; req_one_access = list(168) @@ -5134,7 +5134,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -30; req_one_access = list(168) @@ -5214,7 +5214,7 @@ /area/piratebase/bunks) "Vn" = ( /obj/structure/bed/roller, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(168) }, @@ -5538,7 +5538,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced/airmix, /area/piratebase/atmospherics) @@ -5623,7 +5623,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -30; req_one_access = list(168) diff --git a/maps/sectors/tradeport_140/levels/tradeport_140.dmm b/maps/sectors/tradeport_140/levels/tradeport_140.dmm index 4314c25047d..f8cabc42e39 100644 --- a/maps/sectors/tradeport_140/levels/tradeport_140.dmm +++ b/maps/sectors/tradeport_140/levels/tradeport_140.dmm @@ -47,7 +47,7 @@ /turf/simulated/floor/reinforced, /area/tradeport/pads) "ah" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -521,7 +521,7 @@ /area/tradeport) "bZ" = ( /obj/machinery/light, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -756,7 +756,7 @@ /area/tradeport) "cM" = ( /obj/structure/table/woodentable, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 22; req_one_access = list(160) @@ -1139,7 +1139,7 @@ /area/tradeport/safarizoo) "ea" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -1776,7 +1776,7 @@ /obj/structure/cable/yellow{ icon_state = "2-4" }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -1834,7 +1834,7 @@ /obj/structure/toilet{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -2178,7 +2178,7 @@ /turf/simulated/floor/tiled/old_cargo/red, /area/shuttle/trade_ship/general) "io" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 22; req_one_access = list(160) @@ -2187,7 +2187,7 @@ /turf/simulated/floor, /area/tradeport/pads) "iu" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 22; req_one_access = list(160) @@ -2404,7 +2404,7 @@ /turf/simulated/floor/wood, /area/tradeport/cyndishow) "jd" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -2485,7 +2485,7 @@ /obj/item/soap/deluxe, /obj/item/soap/deluxe, /obj/item/soap/deluxe, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -2665,7 +2665,7 @@ /turf/simulated/floor/plating, /area/tradeport) "jV" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -23; req_one_access = list(160) @@ -2713,7 +2713,7 @@ /obj/item/towel{ color = "#0000FF" }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -2835,7 +2835,7 @@ /turf/simulated/floor/tiled/old_cargo/red, /area/shuttle/trade_ship/general) "kK" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 23; req_one_access = list(160) @@ -3013,7 +3013,7 @@ /turf/simulated/floor/tiled/hydro, /area/tradeport/cyndishow) "ls" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 22; req_one_access = list(160) @@ -3096,7 +3096,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -3411,7 +3411,7 @@ /turf/simulated/floor/tiled/neutral, /area/tradeport/commons) "mT" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 22; req_one_access = list(160) @@ -3419,7 +3419,7 @@ /turf/simulated/floor/tiled/dark, /area/shuttle/trade_ship/cockpit) "mU" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -3884,7 +3884,7 @@ pixel_y = 8 }, /obj/machinery/light, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -3988,7 +3988,7 @@ /turf/simulated/floor/tiled/dark, /area/shuttle/trade_ship/cockpit) "oN" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -4773,7 +4773,7 @@ /turf/simulated/floor/wood, /area/tradeport/commons) "rI" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -4787,7 +4787,7 @@ /obj/structure/mirror{ pixel_x = -29 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -5106,7 +5106,7 @@ req_access = list(160) }, /obj/effect/floor_decal/industrial/outline/grey, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -22; req_one_access = list(160) @@ -5157,7 +5157,7 @@ /turf/simulated/shuttle/floor/white, /area/tradeport/commons) "ta" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -5408,7 +5408,7 @@ "tV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -22; req_one_access = list(160) @@ -5516,7 +5516,7 @@ /turf/simulated/floor/tiled/old_tile/white, /area/tradeport) "uu" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -5765,7 +5765,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 22; req_one_access = list(160) @@ -6315,7 +6315,7 @@ dir = 8; pixel_x = -25 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -6757,7 +6757,7 @@ /turf/simulated/floor/tiled/techmaint, /area/tradeport/engineering) "yx" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 22; req_one_access = list(160) @@ -7265,7 +7265,7 @@ /turf/simulated/floor/wood, /area/tradeport/commons) "Au" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -22; req_one_access = list(160) @@ -7484,7 +7484,7 @@ /area/tradeport/cyndishow) "BF" = ( /obj/machinery/light, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 23; req_one_access = list(160) @@ -7805,7 +7805,7 @@ /turf/simulated/floor/tiled/old_tile/yellow, /area/tradeport/safari) "CQ" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 22; req_one_access = list(160) @@ -7822,7 +7822,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -8209,7 +8209,7 @@ /turf/simulated/floor/tiled/old_tile/blue, /area/tradeport) "Ez" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -8453,7 +8453,7 @@ dir = 1 }, /obj/structure/table/bench/wooden, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -8598,7 +8598,7 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -22; req_one_access = list(160) @@ -8633,7 +8633,7 @@ /turf/simulated/floor/tiled/dark, /area/shuttle/trade_ship/general) "Gs" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 22; req_one_access = list(160) @@ -8812,7 +8812,7 @@ /turf/simulated/floor/plating, /area/tradeport/atmospherics) "Hq" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 23; req_one_access = list(160) @@ -9015,7 +9015,7 @@ /turf/simulated/floor/wood, /area/tradeport/cyndi) "It" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 22; req_one_access = list(160) @@ -9298,7 +9298,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -9544,7 +9544,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -9747,7 +9747,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -10137,7 +10137,7 @@ /obj/structure/bed/chair{ dir = 8 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 22; req_one_access = list(160) @@ -10419,7 +10419,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -10773,7 +10773,7 @@ /turf/simulated/floor/plating, /area/tradeport/expansion) "OP" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 22; req_one_access = list(160) @@ -11656,7 +11656,7 @@ /turf/simulated/floor/tiled/old_tile/yellow, /area/tradeport/safari) "Sk" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -11841,7 +11841,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -12137,7 +12137,7 @@ /turf/simulated/floor/tiled/hydro, /area/tradeport/cyndishow) "TX" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -22; req_one_access = list(160) @@ -12783,7 +12783,7 @@ /turf/simulated/floor/airless, /area/tradeport/expansion) "WA" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 23; req_one_access = list(160) @@ -12815,7 +12815,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -13396,7 +13396,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced/airmix, /area/tradeport/atmospherics) @@ -13454,7 +13454,7 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/tradeport/dock) "YW" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 23; req_one_access = list(160) @@ -13531,7 +13531,7 @@ /turf/simulated/floor/tiled/neutral, /area/tradeport) "Zl" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 22; req_one_access = list(160) @@ -13594,7 +13594,7 @@ /area/tradeport/cafeteria) "Zx" = ( /obj/structure/bed/chair, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, diff --git a/maps/sectors/tradeport_192/levels/tradeport_192.dmm b/maps/sectors/tradeport_192/levels/tradeport_192.dmm index d186eabb1e1..5a564e578e1 100644 --- a/maps/sectors/tradeport_192/levels/tradeport_192.dmm +++ b/maps/sectors/tradeport_192/levels/tradeport_192.dmm @@ -171,7 +171,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -766,7 +766,7 @@ /turf/simulated/floor/tiled/old_cargo/red, /area/shuttle/trade_ship/general) "cW" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -22; req_one_access = list(160) @@ -1025,7 +1025,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -1104,7 +1104,7 @@ /turf/simulated/floor/wood, /area/tradeport/safarizoo) "ej" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -1123,7 +1123,7 @@ /turf/simulated/floor/airless, /area/shuttle/trade_ship/general) "em" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -22; req_one_access = list(160) @@ -2026,7 +2026,7 @@ /turf/simulated/floor/tiled/steel, /area/tradeport) "hT" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 22; req_one_access = list(160) @@ -2495,7 +2495,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -2716,7 +2716,7 @@ /turf/simulated/floor/wood, /area/tradeport/cyndi) "kc" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 22; req_one_access = list(160) @@ -2881,7 +2881,7 @@ /obj/structure/cable/yellow{ icon_state = "2-4" }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -2920,7 +2920,7 @@ /turf/simulated/floor/tiled/white, /area/tradeport/facility) "kS" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 23; req_one_access = list(160) @@ -3189,7 +3189,7 @@ /turf/simulated/floor, /area/tradeport/pads) "lM" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -23; req_one_access = list(160) @@ -3426,7 +3426,7 @@ /area/tradeport/cyndishow) "mK" = ( /obj/structure/table/woodentable, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 22; req_one_access = list(160) @@ -3515,7 +3515,7 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/tradeport/dock) "na" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 22; req_one_access = list(160) @@ -3654,7 +3654,7 @@ /obj/item/soap/deluxe, /obj/item/soap/deluxe, /obj/item/soap/deluxe, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -3704,7 +3704,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -3712,7 +3712,7 @@ /turf/simulated/floor/tiled/neutral, /area/tradeport/facility) "nV" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 22; req_one_access = list(160) @@ -4188,7 +4188,7 @@ /turf/simulated/floor/wood, /area/shuttle/trade_ship/general) "qd" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -4475,7 +4475,7 @@ /turf/simulated/floor/tiled/hydro, /area/tradeport/cyndishow) "re" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -4595,7 +4595,7 @@ /turf/simulated/floor/wmarble, /area/tradeport/cafeteria) "ry" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 22; req_one_access = list(160) @@ -4648,7 +4648,7 @@ dir = 8; pixel_x = -25 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -4786,7 +4786,7 @@ /area/tradeport/safarizoo) "sB" = ( /obj/machinery/light, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -4882,7 +4882,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 22; req_one_access = list(160) @@ -5491,7 +5491,7 @@ /area/tradeport/dock) "vj" = ( /obj/machinery/light, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 23; req_one_access = list(160) @@ -6223,7 +6223,7 @@ /turf/simulated/floor/plating, /area/tradeport/facility) "xD" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -6796,7 +6796,7 @@ /turf/simulated/floor/grass, /area/tradeport) "zM" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -7293,7 +7293,7 @@ /turf/simulated/floor/tiled/old_tile/purple, /area/tradeport) "BG" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -7304,7 +7304,7 @@ /turf/simulated/floor/tiled/old_cargo/red, /area/shuttle/trade_ship/general) "BH" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 23; req_one_access = list(160) @@ -7470,7 +7470,7 @@ /turf/simulated/floor/plating, /area/tradeport/cyndishow) "Ch" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 22; req_one_access = list(160) @@ -7488,7 +7488,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -7686,7 +7686,7 @@ /obj/item/towel{ color = "#0000FF" }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -7694,7 +7694,7 @@ /turf/simulated/floor/tiled/dark, /area/shuttle/trade_ship/cockpit) "Df" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 22; req_one_access = list(160) @@ -7777,7 +7777,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -7933,7 +7933,7 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -22; req_one_access = list(160) @@ -8360,7 +8360,7 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/tradeport/dock) "FA" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 22; req_one_access = list(160) @@ -8401,7 +8401,7 @@ dir = 1 }, /obj/structure/table/bench/wooden, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -8429,7 +8429,7 @@ /turf/simulated/shuttle/wall/voidcraft, /area/shuttle/trade_ship/general) "FQ" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 23; req_one_access = list(160) @@ -8485,7 +8485,7 @@ /turf/simulated/floor/tiled/old_tile/red, /area/tradeport) "FY" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 22; req_one_access = list(160) @@ -8517,7 +8517,7 @@ /turf/simulated/floor/tiled/steel, /area/tradeport) "Gg" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 23; req_one_access = list(160) @@ -8638,7 +8638,7 @@ req_access = list(160) }, /obj/effect/floor_decal/industrial/outline/grey, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -22; req_one_access = list(160) @@ -8712,7 +8712,7 @@ /area/tradeport/commons) "GP" = ( /obj/structure/bed/chair, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -10679,7 +10679,7 @@ /obj/structure/toilet{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -10911,7 +10911,7 @@ /obj/structure/bed/chair{ dir = 8 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 22; req_one_access = list(160) @@ -10982,7 +10982,7 @@ /area/tradeport/commons) "Pv" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -11025,7 +11025,7 @@ "PC" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -22; req_one_access = list(160) @@ -11156,7 +11156,7 @@ /turf/simulated/floor/carpet/bcarpet, /area/tradeport/commons) "Qg" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 22; req_one_access = list(160) @@ -11296,7 +11296,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -11988,7 +11988,7 @@ /obj/structure/mirror{ pixel_x = -29 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -12717,7 +12717,7 @@ pixel_y = 8 }, /obj/machinery/light, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -12857,7 +12857,7 @@ /turf/simulated/floor/carpet/bcarpet, /area/tradeport/cyndishow) "WT" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -13023,7 +13023,7 @@ /turf/simulated/floor/tiled/old_cargo/red, /area/shuttle/trade_ship/general) "XH" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 22; req_one_access = list(160) }, @@ -13438,7 +13438,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced/airmix, /area/tradeport/atmospherics) @@ -13452,7 +13452,7 @@ /turf/simulated/floor/tiled/old_tile/beige, /area/tradeport/safari) "Zb" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) @@ -13502,7 +13502,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -22; req_one_access = list(160) diff --git a/maps/sectors/virgo4_140/levels/virgo4_140_beach.dmm b/maps/sectors/virgo4_140/levels/virgo4_140_beach.dmm index 86619dafd99..82e50fff624 100644 --- a/maps/sectors/virgo4_140/levels/virgo4_140_beach.dmm +++ b/maps/sectors/virgo4_140/levels/virgo4_140_beach.dmm @@ -1317,8 +1317,8 @@ /obj/random/drinkbottle, /obj/structure/closet, /obj/item/reagent_containers/glass/bucket, -/obj/item/analyzer/plant_analyzer, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/reagent_containers/food/condiment/small/peppermill{ pixel_x = 3 }, diff --git a/maps/sectors/wasteland_140/levels/wasteland_140.dmm b/maps/sectors/wasteland_140/levels/wasteland_140.dmm index f84a0433312..878402424ba 100644 --- a/maps/sectors/wasteland_140/levels/wasteland_140.dmm +++ b/maps/sectors/wasteland_140/levels/wasteland_140.dmm @@ -673,7 +673,7 @@ /turf/simulated/floor/outdoors/classd, /area/class_d/explored) "tW" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 28 }, @@ -1451,7 +1451,7 @@ /turf/simulated/mineral/classd, /area/class_d/wildcat_mining_base/exterior_power) "Pg" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 28 }, /obj/structure/bed{ @@ -1560,7 +1560,7 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 28 }, /obj/effect/floor_decal/rust, @@ -1655,7 +1655,7 @@ /turf/simulated/floor/classd, /area/class_d/wildcat_mining_base/exterior_power) "Wz" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 28 }, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, diff --git a/maps/sectors/wasteland_192/levels/wasteland_192.dmm b/maps/sectors/wasteland_192/levels/wasteland_192.dmm index 0d3898be53d..07d51d5c410 100644 --- a/maps/sectors/wasteland_192/levels/wasteland_192.dmm +++ b/maps/sectors/wasteland_192/levels/wasteland_192.dmm @@ -183,7 +183,7 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 28 }, /obj/effect/floor_decal/rust, @@ -515,7 +515,7 @@ /turf/simulated/floor/tiled/classd/indoors, /area/class_d/wildcat_mining_base/interior/main_room) "rZ" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 28 }, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, @@ -950,7 +950,7 @@ /turf/simulated/floor/outdoors/classd, /area/class_d/wildcat_mining_base/exterior_power) "EF" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 28 }, /obj/structure/bed{ @@ -1353,7 +1353,7 @@ /turf/simulated/floor/tiled/classd/indoors, /area/class_d/wildcat_mining_base/interior/bathroom) "Ot" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 28 }, diff --git a/maps/submaps/level_specific/debrisfield/clownship.dmm b/maps/submaps/level_specific/debrisfield/clownship.dmm index c5c44a72147..e8d09732a90 100644 --- a/maps/submaps/level_specific/debrisfield/clownship.dmm +++ b/maps/submaps/level_specific/debrisfield/clownship.dmm @@ -562,7 +562,7 @@ /turf/simulated/shuttle/floor/yellow/airless, /area/submap/debrisfiled_vr/clownshuttle/atmos) "BG" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 28 }, @@ -685,7 +685,7 @@ /turf/simulated/floor/bluegrid, /area/submap/debrisfiled_vr/clownshuttle/engine) "HT" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -28 }, @@ -697,7 +697,7 @@ dir = 4; pixel_x = -29 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -28 }, @@ -830,7 +830,7 @@ /turf/simulated/shuttle/floor/yellow/airless, /area/submap/debrisfiled_vr/clownshuttle/bunk) "PL" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 28 }, @@ -877,7 +877,7 @@ /turf/simulated/shuttle/floor/yellow/airless, /area/submap/debrisfiled_vr/clownshuttle/atmos) "RR" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 28 }, @@ -955,7 +955,7 @@ dir = 4; pixel_x = 29 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -28 }, diff --git a/maps/submaps/level_specific/debrisfield/ship_sci_overrun.dmm b/maps/submaps/level_specific/debrisfield/ship_sci_overrun.dmm index 49d0ef2c131..b0cea28f11b 100644 --- a/maps/submaps/level_specific/debrisfield/ship_sci_overrun.dmm +++ b/maps/submaps/level_specific/debrisfield/ship_sci_overrun.dmm @@ -69,8 +69,8 @@ /obj/item/material/knife/machete/hatchet, /obj/item/reagent_containers/glass/bucket, /obj/item/reagent_containers/glass/bucket, -/obj/item/analyzer/plant_analyzer, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, +/obj/item/plant_analyzer, /turf/simulated/floor/tiled/white/airless, /area/space/debrisfield/scioverrun) "aq" = ( diff --git a/maps/submaps/level_specific/debrisfield_vr/gecko_cr_wreck.dmm b/maps/submaps/level_specific/debrisfield_vr/gecko_cr_wreck.dmm index a5ff4db0118..3d919787d05 100644 --- a/maps/submaps/level_specific/debrisfield_vr/gecko_cr_wreck.dmm +++ b/maps/submaps/level_specific/debrisfield_vr/gecko_cr_wreck.dmm @@ -49,7 +49,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -78,7 +78,7 @@ /obj/effect/floor_decal/industrial/warning/corner{ dir = 1 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /obj/effect/floor_decal/industrial/outline/grey, @@ -607,7 +607,7 @@ /turf/simulated/floor/tiled/techfloor, /area/shuttle/gecko_cr_cockpit_wreck) "lY" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /turf/simulated/floor/airless, @@ -1025,7 +1025,7 @@ }, /obj/structure/bed/pod, /obj/item/bedsheet/blue, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /turf/simulated/floor/tiled/techfloor, @@ -1347,7 +1347,7 @@ /area/shuttle/gecko_cr_cockpit_wreck) "BN" = ( /obj/machinery/light/small, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -1789,7 +1789,7 @@ /area/shuttle/gecko_cr_cockpit_wreck) "JV" = ( /obj/effect/floor_decal/industrial/warning/corner, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -2259,7 +2259,7 @@ /turf/simulated/floor/tiled/techfloor, /area/shuttle/gecko_cr_cockpit_wreck) "Qu" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -2518,7 +2518,7 @@ /obj/effect/floor_decal/industrial/warning/corner{ dir = 8 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -2737,7 +2737,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -2823,7 +2823,7 @@ /obj/effect/floor_decal/industrial/warning/corner{ dir = 8 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /obj/machinery/button/remote/blast_door{ diff --git a/maps/submaps/level_specific/debrisfield_vr/mackerel_lc_wreck.dmm b/maps/submaps/level_specific/debrisfield_vr/mackerel_lc_wreck.dmm index 2a4ec6b00b4..582d630398c 100644 --- a/maps/submaps/level_specific/debrisfield_vr/mackerel_lc_wreck.dmm +++ b/maps/submaps/level_specific/debrisfield_vr/mackerel_lc_wreck.dmm @@ -144,7 +144,7 @@ /area/shuttle/mackerel_lc_wreck) "mf" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -499,7 +499,7 @@ /obj/effect/floor_decal/industrial/warning{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /obj/effect/floor_decal/industrial/warning/corner{ @@ -739,7 +739,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, diff --git a/maps/submaps/level_specific/debrisfield_vr/salamander_wreck.dmm b/maps/submaps/level_specific/debrisfield_vr/salamander_wreck.dmm index 11adcfbf71f..3c6eeb06da4 100644 --- a/maps/submaps/level_specific/debrisfield_vr/salamander_wreck.dmm +++ b/maps/submaps/level_specific/debrisfield_vr/salamander_wreck.dmm @@ -96,7 +96,7 @@ /area/shuttle/salamander_wreck) "bN" = ( /obj/machinery/atmospherics/component/unary/vent_pump/on, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /obj/machinery/light/flicker{ @@ -254,7 +254,7 @@ /turf/simulated/floor/airless, /area/shuttle/salamander_wreck_engineering) "eB" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -764,7 +764,7 @@ /obj/structure/handrail{ dir = 1 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -1195,7 +1195,7 @@ "vi" = ( /obj/structure/table/steel, /obj/machinery/microwave, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -1633,7 +1633,7 @@ "RO" = ( /obj/structure/bed/pod, /obj/item/bedsheet/blue, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -1865,7 +1865,7 @@ /obj/structure/cable{ icon_state = "0-8" }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /obj/machinery/light_switch{ diff --git a/maps/submaps/level_specific/debrisfield_vr/ship_sci_overrun.dmm b/maps/submaps/level_specific/debrisfield_vr/ship_sci_overrun.dmm index f12a5109d84..067fbbc185c 100644 --- a/maps/submaps/level_specific/debrisfield_vr/ship_sci_overrun.dmm +++ b/maps/submaps/level_specific/debrisfield_vr/ship_sci_overrun.dmm @@ -134,8 +134,8 @@ /obj/item/material/knife/machete/hatchet, /obj/item/reagent_containers/glass/bucket, /obj/item/reagent_containers/glass/bucket, -/obj/item/analyzer/plant_analyzer, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, +/obj/item/plant_analyzer, /turf/simulated/floor/tiled/white/airless, /area/submap/debrisfield_vr/sci_overrun) "aC" = ( diff --git a/maps/submaps/level_specific/debrisfield_vr/tinycarrier.dmm b/maps/submaps/level_specific/debrisfield_vr/tinycarrier.dmm index a5ed1f41e59..5744ec1e2d4 100644 --- a/maps/submaps/level_specific/debrisfield_vr/tinycarrier.dmm +++ b/maps/submaps/level_specific/debrisfield_vr/tinycarrier.dmm @@ -212,7 +212,7 @@ }, /area/submap/debrisfield_vr/tinyshuttle/bridge) "ay" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 24; req_one_access = list() @@ -658,7 +658,7 @@ /obj/effect/floor_decal/corner/brown{ dir = 10 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -24 }, @@ -846,7 +846,7 @@ "bB" = ( /obj/structure/table/rack/steel, /obj/item/storage/toolbox/mechanical{ - starts_with = list(/obj/item/tool/screwdriver,/obj/item/tool/wrench,/obj/item/tool/crowbar,/obj/item/analyzer,/obj/item/tool/wirecutters) + starts_with = list(/obj/item/tool/screwdriver,/obj/item/tool/wrench,/obj/item/tool/crowbar,/obj/item/atmos_analyzer,/obj/item/tool/wirecutters) }, /obj/item/t_scanner, /obj/effect/floor_decal/corner/orange{ @@ -984,7 +984,7 @@ /turf/simulated/floor/tiled/steel_ridged, /area/submap/debrisfield_vr/tinyshuttle/engine) "bO" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 24; req_one_access = list() @@ -1126,7 +1126,7 @@ /obj/machinery/atmospherics/component/binary/pump/fuel{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -24 }, diff --git a/maps/submaps/level_specific/lavaland/botany.dmm b/maps/submaps/level_specific/lavaland/botany.dmm index 6ccb8abce77..69849e2911c 100644 --- a/maps/submaps/level_specific/lavaland/botany.dmm +++ b/maps/submaps/level_specific/lavaland/botany.dmm @@ -105,8 +105,8 @@ /obj/item/material/knife/machete/hatchet, /obj/item/reagent_containers/glass/bucket, /obj/item/reagent_containers/glass/bucket, -/obj/item/analyzer/plant_analyzer, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, +/obj/item/plant_analyzer, /turf/simulated/floor/tiled/lavaland, /area/lavaland/idleruins) "Y" = ( diff --git a/maps/submaps/level_specific/virgo2/DJOutpost1.dmm b/maps/submaps/level_specific/virgo2/DJOutpost1.dmm index 06ae1332c5c..07feb5696e1 100644 --- a/maps/submaps/level_specific/virgo2/DJOutpost1.dmm +++ b/maps/submaps/level_specific/virgo2/DJOutpost1.dmm @@ -236,7 +236,7 @@ /obj/item/material/knife/machete/hatchet, /obj/item/reagent_containers/glass/bucket, /obj/item/material/minihoe, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, /obj/random_multi/single_item/sfr_headset, /turf/simulated/floor/wood, /area/submap/virgo2/DJOutpost1) diff --git a/maps/submaps/wilderness/DJOutpost1.dmm b/maps/submaps/wilderness/DJOutpost1.dmm index c6f542f267b..3c149118572 100644 --- a/maps/submaps/wilderness/DJOutpost1.dmm +++ b/maps/submaps/wilderness/DJOutpost1.dmm @@ -244,7 +244,7 @@ /obj/item/material/knife/machete/hatchet, /obj/item/reagent_containers/glass/bucket, /obj/item/material/minihoe, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, /obj/random_multi/single_item/sfr_headset, /turf/simulated/floor/wood, /area/submap/DJOutpost1) diff --git a/maps/submaps/wilderness/DJOutpost3.dmm b/maps/submaps/wilderness/DJOutpost3.dmm index da7716f9dee..3eeb87f97df 100644 --- a/maps/submaps/wilderness/DJOutpost3.dmm +++ b/maps/submaps/wilderness/DJOutpost3.dmm @@ -242,7 +242,7 @@ /obj/item/material/knife/machete/hatchet, /obj/item/reagent_containers/glass/bucket, /obj/item/material/minihoe, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, /obj/random_multi/single_item/sfr_headset, /turf/simulated/floor/tiled/techfloor, /area/submap/DJOutpost1) diff --git a/maps/submaps/wilderness/DJOutpost4.dmm b/maps/submaps/wilderness/DJOutpost4.dmm index e1267cc72d0..5e7fd67a01f 100644 --- a/maps/submaps/wilderness/DJOutpost4.dmm +++ b/maps/submaps/wilderness/DJOutpost4.dmm @@ -290,7 +290,7 @@ /obj/item/material/knife/machete/hatchet, /obj/item/reagent_containers/glass/bucket, /obj/item/material/minihoe, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, /obj/random_multi/single_item/sfr_headset, /turf/simulated/floor/tiled/techfloor, /area/submap/DJOutpost1) diff --git a/maps/templates/admin/dhael_centcom.dmm b/maps/templates/admin/dhael_centcom.dmm index ae6823e2773..c8c33e00326 100644 --- a/maps/templates/admin/dhael_centcom.dmm +++ b/maps/templates/admin/dhael_centcom.dmm @@ -12415,7 +12415,7 @@ "NE" = ( /obj/structure/table/reinforced, /obj/item/material/minihoe, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, /obj/effect/floor_decal/borderfloorblack{ dir = 1 }, diff --git a/maps/templates/admin/ert.dmm b/maps/templates/admin/ert.dmm index 4b98d531e7c..2921ab899cb 100644 --- a/maps/templates/admin/ert.dmm +++ b/maps/templates/admin/ert.dmm @@ -96,7 +96,7 @@ /area/ship/ert/med_surg) "aD" = ( /obj/structure/table/steel_reinforced, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -889,7 +889,7 @@ /obj/structure/cable/yellow{ icon_state = "2-8" }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /turf/simulated/floor/tiled/techfloor, @@ -987,7 +987,7 @@ /turf/simulated/floor/tiled/techmaint, /area/ship/ert/dock_star) "iy" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -1320,7 +1320,7 @@ /turf/simulated/floor/tiled/techmaint, /area/ship/ert/dock_port) "lO" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -1337,7 +1337,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -1778,13 +1778,13 @@ /turf/simulated/wall/shull, /area/ship/ert/hangar) "oj" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /turf/simulated/floor/tiled/techmaint, /area/ship/ert/hallways_aft) "ok" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /turf/simulated/floor/tiled/techfloor, @@ -1909,7 +1909,7 @@ /obj/item/clothing/accessory/storage/white_vest, /obj/item/clothing/accessory/storage/white_vest, /obj/item/clothing/accessory/storage/white_vest, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -2088,7 +2088,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -2210,7 +2210,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /obj/machinery/recharge_station, @@ -2247,7 +2247,7 @@ /area/ship/ert/eng_storage) "qQ" = ( /obj/machinery/mech_recharger, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -2493,7 +2493,7 @@ /obj/item/clothing/accessory/storage/black_vest, /obj/item/clothing/accessory/storage/black_vest, /obj/item/clothing/accessory/storage/black_vest, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -2999,7 +2999,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /obj/effect/floor_decal/industrial/outline/grey, @@ -3066,7 +3066,7 @@ /area/ship/ert/eng_storage) "xG" = ( /obj/machinery/portable_atmospherics/canister/air, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /obj/machinery/light_switch{ @@ -3337,7 +3337,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 8 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -3506,7 +3506,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/ert/bridge) "AZ" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /turf/simulated/floor/tiled/techfloor, @@ -4534,7 +4534,7 @@ /obj/structure/cable/yellow{ icon_state = "0-8" }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -4780,7 +4780,7 @@ "JZ" = ( /obj/structure/table/rack/steel, /obj/machinery/light, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -5732,7 +5732,7 @@ /turf/simulated/floor/plating, /area/ship/ert/eng_storage) "PG" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -5776,7 +5776,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /turf/simulated/floor/wood, @@ -5785,7 +5785,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /turf/simulated/floor/tiled/techmaint, @@ -6149,7 +6149,7 @@ /obj/item/reagent_containers/hypospray, /obj/item/reagent_containers/hypospray, /obj/item/reagent_containers/hypospray, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /obj/effect/floor_decal/industrial/outline, @@ -6261,7 +6261,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /obj/machinery/porta_turret/industrial/teleport_defense, @@ -6572,7 +6572,7 @@ /turf/simulated/wall/rshull, /area/ship/ert/eng_storage) "XH" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, diff --git a/maps/templates/admin/killhouse2.dmm b/maps/templates/admin/killhouse2.dmm index 56c63ecdebe..ea290e330dd 100644 --- a/maps/templates/admin/killhouse2.dmm +++ b/maps/templates/admin/killhouse2.dmm @@ -1609,7 +1609,7 @@ /obj/effect/floor_decal/corner/paleblue{ dir = 10 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = null; pixel_y = 24 }, @@ -1947,7 +1947,7 @@ dir = 10 }, /obj/structure/closet/secure_closet/medical2, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ desc = null; pixel_y = 24 }, diff --git a/maps/templates/admin/kk_mercship.dmm b/maps/templates/admin/kk_mercship.dmm index d97b3e90274..6493ee7fda4 100644 --- a/maps/templates/admin/kk_mercship.dmm +++ b/maps/templates/admin/kk_mercship.dmm @@ -62,7 +62,7 @@ name = "Merc APC - West"; pixel_x = -24 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -141,7 +141,7 @@ /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 10 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /turf/simulated/floor/plating, @@ -337,7 +337,7 @@ /obj/effect/floor_decal/techfloor{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -689,7 +689,7 @@ /obj/effect/floor_decal/techfloor{ dir = 5 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -903,7 +903,7 @@ name = "Syndicate-Spawn" }, /obj/item/bedsheet/hos, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -2460,7 +2460,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -2873,7 +2873,7 @@ /obj/structure/flora/pottedplant{ icon_state = "plant-10" }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -3047,7 +3047,7 @@ /obj/effect/floor_decal/techfloor{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -3319,7 +3319,7 @@ /obj/effect/floor_decal/techfloor{ dir = 10 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -3352,7 +3352,7 @@ /turf/simulated/wall/rshull, /area/ship/manta/radiator_star) "qH" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -3362,7 +3362,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/manta/hallways_aft) "qJ" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -3770,7 +3770,7 @@ /turf/simulated/floor/tiled/white, /area/ship/manta/med) "th" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /obj/effect/floor_decal/techfloor{ @@ -3783,7 +3783,7 @@ /obj/effect/floor_decal/techfloor{ dir = 9 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /turf/simulated/floor/tiled/techfloor, @@ -4123,7 +4123,7 @@ /obj/effect/floor_decal/techfloor{ dir = 9 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -4187,7 +4187,7 @@ /obj/effect/floor_decal/techfloor{ dir = 9 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /turf/simulated/floor/tiled/techfloor, @@ -5759,7 +5759,7 @@ /obj/effect/floor_decal/techfloor{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -5992,7 +5992,7 @@ /obj/effect/floor_decal/techfloor{ dir = 5 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /obj/machinery/light{ @@ -6271,7 +6271,7 @@ /obj/structure/fuel_port{ pixel_y = -29 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -6336,7 +6336,7 @@ /obj/structure/cable/orange{ icon_state = "1-2" }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -7071,7 +7071,7 @@ /obj/effect/floor_decal/techfloor{ dir = 8 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -7154,7 +7154,7 @@ /area/ship/manta/bridge) "Kd" = ( /obj/structure/dogbed, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /obj/machinery/light{ @@ -7364,7 +7364,7 @@ /obj/effect/floor_decal/techfloor{ dir = 10 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -7791,7 +7791,7 @@ /obj/structure/cable/orange{ icon_state = "1-2" }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -8074,7 +8074,7 @@ /obj/structure/cable/orange{ icon_state = "1-2" }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -8702,7 +8702,7 @@ /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 6 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /turf/simulated/floor/plating, @@ -8981,7 +8981,7 @@ name = "Syndicate-Spawn" }, /obj/item/bedsheet/hos, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -9140,7 +9140,7 @@ /obj/effect/floor_decal/techfloor{ dir = 5 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -9426,7 +9426,7 @@ /obj/effect/floor_decal/techfloor{ dir = 1 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /obj/structure/cable/orange{ diff --git a/maps/templates/shuttles/overmaps/generic/bearcat.dmm b/maps/templates/shuttles/overmaps/generic/bearcat.dmm index 499cb75fa20..b6a9dc9b655 100644 --- a/maps/templates/shuttles/overmaps/generic/bearcat.dmm +++ b/maps/templates/shuttles/overmaps/generic/bearcat.dmm @@ -58,7 +58,7 @@ /area/shuttle/bearcat/command) "ak" = ( /obj/machinery/light, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -201,7 +201,7 @@ /obj/machinery/light_switch{ pixel_y = 25 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -224,7 +224,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -289,7 +289,7 @@ /obj/machinery/atmospherics/component/unary/vent_pump/on{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -677,7 +677,7 @@ /turf/simulated/floor/tiled/techmaint, /area/shuttle/bearcat/dock_port) "bN" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -712,7 +712,7 @@ /turf/simulated/floor/tiled/techfloor, /area/shuttle/bearcat/dock_central) "bV" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -848,7 +848,7 @@ /obj/structure/sink{ pixel_y = 18 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -867,7 +867,7 @@ /area/shuttle/bearcat/crew_corridors) "cp" = ( /obj/machinery/vending/snack, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -924,7 +924,7 @@ /area/shuttle/bearcat/crew_dorms) "cw" = ( /obj/structure/closet, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -1368,7 +1368,7 @@ /area/shuttle/bearcat/crew_corridors) "dD" = ( /obj/effect/debris/cleanable/dirt, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -1477,7 +1477,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -1685,7 +1685,7 @@ "eq" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -1835,7 +1835,7 @@ /obj/structure/handrail{ dir = 8 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -1999,7 +1999,7 @@ }, /obj/item/storage/toolbox/mechanical, /obj/item/clothing/head/welding, -/obj/item/analyzer, +/obj/item/atmos_analyzer, /obj/machinery/light_switch{ pixel_x = -25 }, @@ -2037,7 +2037,7 @@ /obj/item/clothing/shoes/magboots, /obj/item/clothing/suit/space/void/refurb/engineering, /obj/item/clothing/head/helmet/space/void/refurb/engineering, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -2132,7 +2132,7 @@ /turf/simulated/floor/tiled/techfloor, /area/shuttle/bearcat/crew_wash) "fx" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /obj/machinery/light/small{ @@ -2166,7 +2166,7 @@ /obj/item/storage/box/lights/bulbs, /obj/item/storage/box/lights/mixed, /obj/structure/cable, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -2419,7 +2419,7 @@ /obj/structure/handrail{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -2443,7 +2443,7 @@ icon_state = "4-8" }, /obj/structure/closet/secure_closet/engineering_electrical, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /obj/machinery/light/small{ @@ -2467,7 +2467,7 @@ /area/shuttle/bearcat/maintenance_atmos) "gm" = ( /obj/machinery/atmospherics/portables_connector, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /obj/effect/floor_decal/industrial/outline/blue, @@ -2751,7 +2751,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -2823,7 +2823,7 @@ icon_state = "1-4" }, /obj/machinery/power/apc/alarms_hidden/south_bump, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -3171,7 +3171,7 @@ /turf/simulated/floor/airless, /area/shuttle/bearcat/dock_port) "Ea" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -3225,7 +3225,7 @@ /turf/simulated/floor/plating, /area/shuttle/bearcat/maintenance_engine_pod_port) "Ik" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, diff --git a/maps/templates/shuttles/overmaps/generic/cruise_ship.dmm b/maps/templates/shuttles/overmaps/generic/cruise_ship.dmm index e66a6c2c4a9..b4c5cec30d8 100644 --- a/maps/templates/shuttles/overmaps/generic/cruise_ship.dmm +++ b/maps/templates/shuttles/overmaps/generic/cruise_ship.dmm @@ -78,7 +78,7 @@ /turf/simulated/floor/gold, /area/shuttle/cruise_ship) "kv" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -27 }, diff --git a/maps/templates/shuttles/overmaps/generic/cruiser.dmm b/maps/templates/shuttles/overmaps/generic/cruiser.dmm index c0e5f073257..c63619fbec9 100644 --- a/maps/templates/shuttles/overmaps/generic/cruiser.dmm +++ b/maps/templates/shuttles/overmaps/generic/cruiser.dmm @@ -152,7 +152,7 @@ /turf/simulated/floor/carpet/blue, /area/mothership/breakroom) "as" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/wood, @@ -590,7 +590,7 @@ /obj/item/reagent_containers/food/condiment/small/saltshaker{ pixel_x = -3 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/white, @@ -863,7 +863,7 @@ "ce" = ( /obj/structure/reagent_dispensers/watertank, /obj/machinery/light, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -876,7 +876,7 @@ /turf/simulated/floor/tiled/steel_grid, /area/mothership/hydroponics) "cf" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -978,7 +978,7 @@ /obj/item/tank/oxygen, /obj/item/clothing/shoes/magboots, /obj/item/clothing/mask/breath, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/table/rack/shelf/steel, @@ -1023,7 +1023,7 @@ /obj/fiftyspawner/steel, /obj/fiftyspawner/steel, /obj/fiftyspawner/steel, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/steel_grid, @@ -1532,7 +1532,7 @@ /turf/simulated/floor/tiled/white, /area/mothership/bathroom1) "du" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "pen_nine"; breach_detection = 0; dir = 1; @@ -1597,7 +1597,7 @@ /turf/simulated/floor/tiled/techmaint, /area/mothership/hallway) "dD" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "pen_nine"; breach_detection = 0; dir = 1; @@ -1623,7 +1623,7 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/bathroom2) "dH" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "pen_nine"; breach_detection = 0; dir = 1; @@ -1734,7 +1734,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/light{ @@ -1928,7 +1928,7 @@ /obj/structure/bed/chair/office/dark{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "pen_nine"; breach_detection = 0; dir = 1; @@ -2071,7 +2071,7 @@ dir = 1 }, /obj/machinery/light/small, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "pen_nine"; breach_detection = 0; dir = 1; @@ -2109,7 +2109,7 @@ /obj/item/cell/device/weapon, /obj/item/cell/device/weapon, /obj/item/cell/device/weapon, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -2160,7 +2160,7 @@ /obj/structure/cable/cyan{ icon_state = "1-2" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "anomaly_testing"; breach_detection = 0; dir = 8; @@ -2198,7 +2198,7 @@ /obj/effect/floor_decal/industrial/warning{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "pen_nine"; breach_detection = 0; dir = 1; @@ -2222,7 +2222,7 @@ /area/mothership/surgery) "eW" = ( /obj/structure/medical_stand, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ @@ -2428,7 +2428,7 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/vault) "fx" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22; target_temperature = 274.15 }, @@ -2480,7 +2480,7 @@ /obj/structure/cable/cyan{ icon_state = "1-2" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -2684,7 +2684,7 @@ pixel_x = 6; pixel_y = -2 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -2745,7 +2745,7 @@ /obj/item/tool/screwdriver, /obj/item/storage/box/pillbottles, /obj/item/storage/box/pillbottles, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -3389,7 +3389,7 @@ /obj/machinery/atmospherics/component/unary/vent_pump/on{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/light/small{ @@ -3475,7 +3475,7 @@ /obj/machinery/atmospherics/component/unary/vent_pump/on{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/light/small{ @@ -3685,7 +3685,7 @@ /turf/simulated/floor/tiled/white, /area/mothership/treatment) "is" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -3784,7 +3784,7 @@ /turf/simulated/floor/tiled/steel_grid, /area/mothership/processing) "iE" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "anomaly_testing"; breach_detection = 0; dir = 8; @@ -3831,7 +3831,7 @@ /turf/simulated/floor/tiled/techfloor, /area/mothership/morgue) "iL" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/table/steel_reinforced, @@ -3974,7 +3974,7 @@ /area/mothership/resleeving) "iZ" = ( /obj/structure/table/steel_reinforced, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/white, @@ -4049,7 +4049,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "anomaly_testing"; breach_detection = 0; dir = 8; @@ -4290,7 +4290,7 @@ /turf/simulated/floor/tiled/techfloor, /area/mothership/morgue) "jN" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/table/steel_reinforced, @@ -4399,7 +4399,7 @@ /area/mothership/warden) "jV" = ( /obj/structure/table/steel_reinforced, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/component/unary/vent_pump/on{ @@ -4681,7 +4681,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/white, @@ -4883,7 +4883,7 @@ /obj/machinery/atmospherics/component/unary/vent_pump/on{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -4970,7 +4970,7 @@ /obj/machinery/atmospherics/component/unary/vent_pump/on{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -6335,7 +6335,7 @@ /obj/structure/table/steel_reinforced, /obj/item/robotanalyzer, /obj/machinery/light, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -6459,7 +6459,7 @@ /turf/simulated/floor/tiled/steel_grid, /area/mothership/armory) "ob" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -6538,7 +6538,7 @@ /turf/simulated/floor/tiled/steel_grid, /area/mothership/bridge) "oj" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -6627,7 +6627,7 @@ /turf/simulated/floor/tiled/techmaint, /area/mothership/hallway) "ox" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -6813,7 +6813,7 @@ /area/mothership/robotics) "oQ" = ( /obj/machinery/mech_recharger, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -6887,7 +6887,7 @@ /obj/structure/bed/chair/comfy/black{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "pen_nine"; breach_detection = 0; dir = 1; @@ -7319,7 +7319,7 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/mothership/telecomms2) "pW" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -7463,7 +7463,7 @@ /turf/simulated/floor/tiled/techmaint, /area/mothership/telecomms2) "qr" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "anomaly_testing"; breach_detection = 0; dir = 8; @@ -7613,7 +7613,7 @@ /area/mothership/cryotube) "qZ" = ( /obj/machinery/cryopod, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -7648,7 +7648,7 @@ /obj/structure/cable/cyan{ icon_state = "1-4" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -7902,26 +7902,23 @@ /turf/simulated/floor/tiled/steel_grid, /area/mothership/engineering) "rP" = ( -/obj/machinery/atmospherics/component/trinary/atmos_filter{ +/obj/machinery/atmospherics/component/trinary/filter{ dir = 4; - filter_type = 0; - filtered_out = list("phoron") + filtering = "phoron" }, /turf/simulated/floor/tiled/steel_grid, /area/mothership/engineering) "rQ" = ( -/obj/machinery/atmospherics/component/trinary/atmos_filter{ +/obj/machinery/atmospherics/component/trinary/filter{ dir = 4; - filter_type = 3; - filtered_out = list("carbon_dioxide") + filtering = "co2" }, /turf/simulated/floor/tiled/steel_grid, /area/mothership/engineering) "rR" = ( -/obj/machinery/atmospherics/component/trinary/atmos_filter{ +/obj/machinery/atmospherics/component/trinary/filter{ dir = 4; - filter_type = 4; - filtered_out = list("sleeping_agent") + filtering = "n2o" }, /turf/simulated/floor/tiled/steel_grid, /area/mothership/engineering) @@ -8613,7 +8610,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "anomaly_testing"; breach_detection = 0; dir = 8; @@ -8661,7 +8658,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -8985,7 +8982,7 @@ /turf/simulated/floor/tiled/techmaint, /area/mothership/hallway) "JJ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "pen_nine"; breach_detection = 0; dir = 1; @@ -9042,7 +9039,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -9235,7 +9232,7 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, diff --git a/maps/templates/shuttles/overmaps/generic/curashuttle.dmm b/maps/templates/shuttles/overmaps/generic/curashuttle.dmm index 0188933d185..4d9b5410c1f 100644 --- a/maps/templates/shuttles/overmaps/generic/curashuttle.dmm +++ b/maps/templates/shuttles/overmaps/generic/curashuttle.dmm @@ -599,7 +599,7 @@ /area/shuttle/curabitur/curashuttle/med) "bi" = ( /obj/machinery/suit_cycler/medical, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 25 }, /obj/machinery/firealarm{ @@ -1274,7 +1274,7 @@ /area/shuttle/curabitur/curashuttle/hangar) "cB" = ( /obj/machinery/light, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -32 }, diff --git a/maps/templates/shuttles/overmaps/generic/gecko_cr.dmm b/maps/templates/shuttles/overmaps/generic/gecko_cr.dmm index d29469ce5a4..64211b8cf16 100644 --- a/maps/templates/shuttles/overmaps/generic/gecko_cr.dmm +++ b/maps/templates/shuttles/overmaps/generic/gecko_cr.dmm @@ -47,7 +47,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -76,7 +76,7 @@ /obj/effect/floor_decal/industrial/warning/corner{ dir = 1 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /obj/effect/floor_decal/industrial/outline/grey, @@ -599,7 +599,7 @@ dir = 8 }, /obj/effect/floor_decal/industrial/warning/corner, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /obj/machinery/light{ @@ -1014,7 +1014,7 @@ }, /obj/structure/bed/pod, /obj/item/bedsheet/blue, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /obj/machinery/light{ @@ -1398,7 +1398,7 @@ /area/shuttle/gecko_cr_cockpit) "BN" = ( /obj/machinery/light/small, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -1889,7 +1889,7 @@ /area/shuttle/gecko_cr_cockpit) "JV" = ( /obj/effect/floor_decal/industrial/warning/corner, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -2331,7 +2331,7 @@ /turf/simulated/floor/tiled/techfloor, /area/shuttle/gecko_cr_cockpit) "Qu" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -2595,7 +2595,7 @@ /obj/effect/floor_decal/industrial/warning/corner{ dir = 8 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -2818,7 +2818,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -2896,7 +2896,7 @@ /obj/effect/floor_decal/industrial/warning/corner{ dir = 8 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /obj/machinery/button/remote/blast_door{ diff --git a/maps/templates/shuttles/overmaps/generic/gecko_sh.dmm b/maps/templates/shuttles/overmaps/generic/gecko_sh.dmm index d0aed684bb7..c00bb4618c1 100644 --- a/maps/templates/shuttles/overmaps/generic/gecko_sh.dmm +++ b/maps/templates/shuttles/overmaps/generic/gecko_sh.dmm @@ -19,7 +19,7 @@ /turf/simulated/floor/tiled/techfloor, /area/shuttle/gecko_sh_cockpit) "aK" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /turf/simulated/floor/tiled/techfloor, @@ -74,7 +74,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -94,7 +94,7 @@ /obj/effect/floor_decal/industrial/warning/corner{ dir = 1 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /obj/effect/floor_decal/industrial/outline/grey, @@ -170,7 +170,7 @@ /obj/machinery/atmospherics/component/unary/vent_pump/on{ dir = 8 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /turf/simulated/floor/tiled/techfloor, @@ -1344,7 +1344,7 @@ /area/shuttle/gecko_sh_engineering) "BN" = ( /obj/machinery/light/small, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -2133,7 +2133,7 @@ /turf/simulated/floor/plating, /area/shuttle/gecko_sh_engineering) "Qu" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -2529,7 +2529,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, diff --git a/maps/templates/shuttles/overmaps/generic/itglight.dmm b/maps/templates/shuttles/overmaps/generic/itglight.dmm index 872707ed77c..bd10dbd0c4e 100644 --- a/maps/templates/shuttles/overmaps/generic/itglight.dmm +++ b/maps/templates/shuttles/overmaps/generic/itglight.dmm @@ -20,7 +20,7 @@ /obj/structure/bed/chair/bay/chair/padded/red/bignest{ name = "large dog bed" }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -1077,7 +1077,7 @@ "gX" = ( /obj/structure/bed/chair/sofa/brown/left, /obj/machinery/atmospherics/component/unary/vent_pump/on, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -1149,7 +1149,7 @@ /obj/structure/bed/chair/bay/chair/padded/brown{ dir = 8 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -1508,7 +1508,7 @@ /area/itglight/starboardhighsec) "jE" = ( /obj/structure/table/steel_reinforced, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -1810,8 +1810,8 @@ /obj/structure/closet, /obj/item/robot_parts/l_arm, /obj/item/reagent_containers/glass/bucket, -/obj/item/analyzer/plant_analyzer, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/reagent_containers/food/condiment/small/peppermill{ pixel_x = 3 }, @@ -1907,7 +1907,7 @@ /turf/simulated/floor/tiled/eris/steel/gray_platform, /area/itglight/starboardhighsec) "mL" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -2520,7 +2520,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -3133,7 +3133,7 @@ /turf/simulated/floor/tiled/eris/steel/gray_platform, /area/itglight/starboardhighsec) "wS" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -3590,7 +3590,7 @@ /turf/simulated/floor/airless, /area/itglight/portengi) "Aa" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /turf/simulated/floor/tiled/monotile, @@ -3645,7 +3645,7 @@ /obj/structure/cable/pink{ icon_state = "1-4" }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -3784,7 +3784,7 @@ /obj/structure/cable/pink{ icon_state = "1-4" }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -3901,7 +3901,7 @@ /obj/structure/cable/pink{ icon_state = "1-4" }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -4208,7 +4208,7 @@ /turf/simulated/floor/airless, /area/itglight/shuttlebay) "Eg" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -26 }, @@ -4244,7 +4244,7 @@ /obj/structure/cable/pink{ icon_state = "1-4" }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -4419,7 +4419,7 @@ "Fc" = ( /obj/machinery/atmospherics/portables_connector, /obj/effect/floor_decal/industrial/outline, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /turf/simulated/floor, @@ -5432,7 +5432,7 @@ /turf/simulated/floor/tiled/eris/steel/brown_platform, /area/itglight/common) "Mh" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /turf/simulated/floor/carpet, @@ -5490,7 +5490,7 @@ dir = 8 }, /obj/effect/floor_decal/industrial/warning, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /turf/simulated/floor/tiled/eris/steel/brown_platform, @@ -5931,7 +5931,7 @@ /turf/simulated/floor, /area/itglight/kitchen) "OX" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /turf/simulated/floor, @@ -6015,7 +6015,7 @@ /obj/effect/floor_decal/industrial/warning{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /turf/simulated/floor/tiled/eris/white/techfloor_grid, @@ -6035,7 +6035,7 @@ /obj/item/bedsheet/brown, /obj/structure/curtain/black, /obj/structure/bed/padded, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -6501,7 +6501,7 @@ dir = 1 }, /obj/item/radio, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -6572,7 +6572,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /turf/simulated/floor/tiled/white, @@ -6752,7 +6752,7 @@ /obj/random/soap, /obj/random/soap, /obj/machinery/atmospherics/component/unary/vent_scrubber/on, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /turf/simulated/floor/tiled/white, @@ -7400,7 +7400,7 @@ /turf/simulated/floor/tiled/steel_ridged, /area/itglight/portengi) "Zm" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /turf/simulated/floor/tiled/eris/cafe, @@ -7482,7 +7482,7 @@ /turf/simulated/wall/shull, /area/itglight/portcargo) "ZO" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /obj/structure/closet/crate/bin{ @@ -7519,7 +7519,7 @@ /obj/structure/cable/pink{ icon_state = "4-8" }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /turf/simulated/floor/tiled/eris/steel/brown_platform, diff --git a/maps/templates/shuttles/overmaps/generic/mackerel_hc.dmm b/maps/templates/shuttles/overmaps/generic/mackerel_hc.dmm index d3e2d042ddb..0e989ae641d 100644 --- a/maps/templates/shuttles/overmaps/generic/mackerel_hc.dmm +++ b/maps/templates/shuttles/overmaps/generic/mackerel_hc.dmm @@ -101,7 +101,7 @@ "gU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/light, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -184,7 +184,7 @@ /obj/effect/floor_decal/industrial/warning{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /obj/effect/floor_decal/industrial/warning/corner{ @@ -383,7 +383,7 @@ /obj/structure/fuel_port{ pixel_y = 26 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, diff --git a/maps/templates/shuttles/overmaps/generic/mackerel_hc_skel.dmm b/maps/templates/shuttles/overmaps/generic/mackerel_hc_skel.dmm index 259545bf4b8..c7adc3dd5ee 100644 --- a/maps/templates/shuttles/overmaps/generic/mackerel_hc_skel.dmm +++ b/maps/templates/shuttles/overmaps/generic/mackerel_hc_skel.dmm @@ -152,7 +152,7 @@ "gU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/light, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -492,7 +492,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -956,7 +956,7 @@ /obj/effect/floor_decal/industrial/warning/corner{ dir = 1 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, diff --git a/maps/templates/shuttles/overmaps/generic/mackerel_lc.dmm b/maps/templates/shuttles/overmaps/generic/mackerel_lc.dmm index 3000f53f779..a854ec53bc7 100644 --- a/maps/templates/shuttles/overmaps/generic/mackerel_lc.dmm +++ b/maps/templates/shuttles/overmaps/generic/mackerel_lc.dmm @@ -161,7 +161,7 @@ "mf" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/light, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -454,7 +454,7 @@ /obj/effect/floor_decal/industrial/warning{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /obj/effect/floor_decal/industrial/warning/corner{ @@ -653,7 +653,7 @@ /obj/structure/fuel_port{ pixel_y = 26 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, diff --git a/maps/templates/shuttles/overmaps/generic/mackerel_sh.dmm b/maps/templates/shuttles/overmaps/generic/mackerel_sh.dmm index 065180e53bb..7211465bfe7 100644 --- a/maps/templates/shuttles/overmaps/generic/mackerel_sh.dmm +++ b/maps/templates/shuttles/overmaps/generic/mackerel_sh.dmm @@ -164,7 +164,7 @@ "mf" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/light, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -477,7 +477,7 @@ /obj/effect/floor_decal/industrial/warning{ dir = 4 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /obj/effect/floor_decal/industrial/warning/corner{ @@ -710,7 +710,7 @@ /obj/structure/fuel_port{ pixel_y = 26 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, diff --git a/maps/templates/shuttles/overmaps/generic/mercenarybase.dmm b/maps/templates/shuttles/overmaps/generic/mercenarybase.dmm index ebeb0a520db..182bc628b83 100644 --- a/maps/templates/shuttles/overmaps/generic/mercenarybase.dmm +++ b/maps/templates/shuttles/overmaps/generic/mercenarybase.dmm @@ -155,7 +155,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -314,7 +314,7 @@ /turf/simulated/floor, /area/mercbase/atmos) "fY" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -378,7 +378,7 @@ /area/mercbase/fuel) "gq" = ( /obj/machinery/computer/operating, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -450,7 +450,7 @@ /turf/simulated/floor, /area/mercbase/atmos) "gD" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -1145,7 +1145,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -2041,7 +2041,7 @@ /turf/simulated/floor/tiled/dark, /area/mercbase/hall) "kG" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -2229,7 +2229,7 @@ /obj/structure/closet/secure_closet/chemical{ req_access = list(150) }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -2256,28 +2256,28 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, /turf/simulated/floor/tiled/dark, /area/mercbase/medical) "lE" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, /turf/simulated/floor/tiled/dark, /area/mercbase/engineering) "lF" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, /turf/simulated/floor/tiled/dark, /area/mercbase/hall) "lG" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -2288,7 +2288,7 @@ dir = 5 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -2298,7 +2298,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/fuel{ dir = 5 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -2407,7 +2407,7 @@ /turf/simulated/floor/tiled/dark, /area/mercbase/eqroom) "lT" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -2672,7 +2672,7 @@ /turf/simulated/floor/tiled/dark, /area/mercbase/dock) "mQ" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -2874,7 +2874,7 @@ /turf/simulated/floor/tiled/dark, /area/mercbase/roid) "np" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 24 }, /turf/simulated/floor/tiled/dark, diff --git a/maps/templates/shuttles/overmaps/generic/mercship.dmm b/maps/templates/shuttles/overmaps/generic/mercship.dmm index 2ed8b2cb54b..3eddf80a15f 100644 --- a/maps/templates/shuttles/overmaps/generic/mercship.dmm +++ b/maps/templates/shuttles/overmaps/generic/mercship.dmm @@ -113,7 +113,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ breach_detection = 0; dir = 8; pixel_x = 25; @@ -374,7 +374,7 @@ /obj/effect/floor_decal/borderfloorblack{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 30 }, /turf/simulated/floor/tiled/dark, @@ -894,7 +894,7 @@ dir = 1 }, /obj/item/storage/secure/briefcase, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 30 }, /turf/simulated/floor/tiled/dark, @@ -949,7 +949,7 @@ /obj/effect/floor_decal/borderfloorblack{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "anomaly_testing"; breach_detection = 0; dir = 8; @@ -1772,7 +1772,7 @@ /obj/effect/floor_decal/borderfloorblack{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -35 }, @@ -2306,7 +2306,7 @@ /obj/effect/floor_decal/borderfloorblack{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -35 }, @@ -2350,7 +2350,7 @@ /obj/effect/floor_decal/borderfloorblack{ dir = 6 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "anomaly_testing"; breach_detection = 0; dir = 8; @@ -2609,7 +2609,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ breach_detection = 0; dir = 8; pixel_x = 25; @@ -2898,7 +2898,7 @@ /obj/effect/floor_decal/borderfloorblack{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 30 }, /turf/simulated/floor/tiled/white, @@ -3016,7 +3016,7 @@ /obj/effect/floor_decal/borderfloorblack{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 30 }, /turf/simulated/floor/tiled/white, @@ -3082,7 +3082,7 @@ /obj/effect/floor_decal/borderfloorblack{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 30 }, /turf/simulated/floor/tiled/dark, @@ -3094,7 +3094,7 @@ /obj/effect/floor_decal/borderfloorblack{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 30 }, /turf/simulated/floor/tiled/dark, @@ -3122,7 +3122,7 @@ /obj/effect/floor_decal/borderfloorblack{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "anomaly_testing"; breach_detection = 0; dir = 8; @@ -3180,7 +3180,7 @@ }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "pen_nine"; breach_detection = 0; dir = 1; @@ -3201,7 +3201,7 @@ /obj/effect/floor_decal/borderfloorblack{ dir = 10 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "pen_nine"; breach_detection = 0; dir = 1; @@ -3217,7 +3217,7 @@ dir = 5 }, /obj/effect/floor_decal/borderfloorblack, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "pen_nine"; breach_detection = 0; dir = 1; @@ -3673,7 +3673,7 @@ dir = 8 }, /obj/effect/floor_decal/borderfloorblack, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "pen_nine"; breach_detection = 0; dir = 1; diff --git a/maps/templates/shuttles/overmaps/generic/salamander.dmm b/maps/templates/shuttles/overmaps/generic/salamander.dmm index 6ddc3e3ea8b..66cbdf79bb2 100644 --- a/maps/templates/shuttles/overmaps/generic/salamander.dmm +++ b/maps/templates/shuttles/overmaps/generic/salamander.dmm @@ -97,7 +97,7 @@ /area/shuttle/salamander) "bN" = ( /obj/machinery/atmospherics/component/unary/vent_pump/on, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /obj/machinery/light{ @@ -242,7 +242,7 @@ /turf/simulated/floor/plating, /area/shuttle/salamander_engineering) "eB" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -738,7 +738,7 @@ /obj/structure/handrail{ dir = 1 }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -26 }, @@ -1189,7 +1189,7 @@ "vi" = ( /obj/structure/table/steel, /obj/machinery/microwave, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -1618,7 +1618,7 @@ "RO" = ( /obj/structure/bed/pod, /obj/item/bedsheet/blue, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 26 }, @@ -1843,7 +1843,7 @@ /obj/structure/cable{ icon_state = "0-8" }, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ pixel_y = 26 }, /obj/machinery/light_switch{ diff --git a/maps/templates/shuttles/overmaps/generic/vespa.dmm b/maps/templates/shuttles/overmaps/generic/vespa.dmm index 10e9e26a5b5..f623b0edf13 100644 --- a/maps/templates/shuttles/overmaps/generic/vespa.dmm +++ b/maps/templates/shuttles/overmaps/generic/vespa.dmm @@ -83,7 +83,7 @@ /turf/simulated/floor, /area/ship/expe/engines) "ap" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -371,7 +371,7 @@ /turf/simulated/floor, /area/ship/expe/maintenancerim) "bl" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -631,7 +631,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/northairlock) "bO" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -767,7 +767,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/northairlock) "co" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -842,7 +842,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/hangarcontrol) "cy" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -873,7 +873,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/maintenancerim) "cC" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -894,7 +894,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/cabin1) "cF" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -915,7 +915,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/cabin2) "cI" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -935,7 +935,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/cabin3) "cL" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -955,7 +955,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/cabin4) "cO" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -976,7 +976,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/cabin5) "cR" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -997,7 +997,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/cabin6) "cU" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -1017,7 +1017,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/cabin7) "cX" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -1037,7 +1037,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/cabin8) "da" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -1117,7 +1117,7 @@ /turf/simulated/floor, /area/ship/expe/maintenance1) "dk" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -2002,7 +2002,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor4) "fB" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -2057,7 +2057,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/corridor4) "fH" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -2079,7 +2079,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/bridge) "fK" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -3125,7 +3125,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -3222,7 +3222,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -3761,7 +3761,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/seceq) "iI" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -3776,7 +3776,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/seceq) "iJ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -3878,7 +3878,7 @@ /turf/simulated/floor/tiled/white, /area/ship/expe/medicalchem) "iR" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -4039,7 +4039,7 @@ /area/ship/expe/medicaleq) "jg" = ( /obj/structure/table/reinforced, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -4766,7 +4766,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringpower) "kJ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -5236,7 +5236,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringequipment) "lL" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -5636,7 +5636,7 @@ /obj/effect/floor_decal/corner/paleblue/border{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -25 }, @@ -5934,7 +5934,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/engineeringpower) "mY" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -25 }, @@ -6930,7 +6930,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/seclobby2) "oZ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -7330,7 +7330,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/expedition) "pQ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -7376,7 +7376,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/hangar) "pU" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -7774,7 +7774,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/captqua) "qK" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -8218,7 +8218,7 @@ /turf/simulated/floor, /area/ship/expe/sm) "rQ" = ( -/obj/machinery/atmospherics/component/trinary/atmos_filter/m_filter{ +/obj/machinery/atmospherics/component/trinary/filter/mirrored{ dir = 4 }, /obj/structure/cable{ @@ -8499,7 +8499,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/seclobby) "sw" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -8576,7 +8576,7 @@ /turf/simulated/floor/tiled/white, /area/ship/expe/medical) "sC" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -8654,7 +8654,7 @@ /turf/simulated/floor/tiled/white, /area/ship/expe/medicalsur) "sH" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -8698,7 +8698,7 @@ /turf/simulated/floor/tiled/white, /area/ship/expe/medical1) "sK" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -8921,7 +8921,7 @@ /turf/simulated/wall/rpshull, /area/ship/expe/seccells) "tz" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -25 }, @@ -9126,7 +9126,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -10040,7 +10040,7 @@ /obj/effect/floor_decal/techfloor{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -10494,7 +10494,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ship/expe/southairlock) "xI" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -10544,7 +10544,7 @@ /turf/simulated/floor, /area/ship/expe/engines) "xZ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, diff --git a/maps/tether/engines/rust.dmm b/maps/tether/engines/rust.dmm index e87d45b3afb..9bb00473cdb 100644 --- a/maps/tether/engines/rust.dmm +++ b/maps/tether/engines/rust.dmm @@ -228,7 +228,7 @@ /turf/simulated/floor, /area/engineering/engine_room) "aM" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -275,7 +275,7 @@ "aT" = ( /obj/machinery/atmospherics/component/unary/vent_pump/high_volume{ pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced, /area/engineering/engine_room) @@ -318,7 +318,7 @@ /obj/machinery/atmospherics/component/unary/vent_pump/high_volume{ dir = 4; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced, /area/engineering/engine_room) @@ -330,7 +330,7 @@ /obj/machinery/atmospherics/component/unary/vent_pump/high_volume{ dir = 8; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced, /area/engineering/engine_room) @@ -1145,7 +1145,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/red{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -1190,7 +1190,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, diff --git a/maps/tether/engines/singulo.dmm b/maps/tether/engines/singulo.dmm index 14f89739192..8bef8a935df 100644 --- a/maps/tether/engines/singulo.dmm +++ b/maps/tether/engines/singulo.dmm @@ -92,7 +92,7 @@ /turf/simulated/floor, /area/engineering/engine_gas) "aq" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -1033,7 +1033,7 @@ /turf/simulated/floor/tiled, /area/submap/pa_room) "bY" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -1246,7 +1246,7 @@ /obj/structure/cable/cyan{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, diff --git a/maps/tether/engines/sme.dmm b/maps/tether/engines/sme.dmm index bf0bc974cca..583b662350c 100644 --- a/maps/tether/engines/sme.dmm +++ b/maps/tether/engines/sme.dmm @@ -239,7 +239,7 @@ id_tag = "cooling_out"; initialize_directions = 4; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced/nitrogen{ initial_gas_mix = "n2=82.1472;TEMP=293.15" @@ -634,7 +634,7 @@ /turf/simulated/floor, /area/engineering/engine_room) "bw" = ( -/obj/machinery/atmospherics/component/trinary/atmos_filter/m_filter{ +/obj/machinery/atmospherics/component/trinary/filter/mirrored{ dir = 1; use_power = 0 }, @@ -916,7 +916,7 @@ /turf/simulated/floor, /area/engineering/engine_room) "cd" = ( -/obj/machinery/atmospherics/component/trinary/atmos_filter{ +/obj/machinery/atmospherics/component/trinary/filter{ dir = 1; use_power = 0 }, @@ -1361,7 +1361,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/red{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -1398,7 +1398,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, diff --git a/maps/tether/engines/tesla.dmm b/maps/tether/engines/tesla.dmm index 0a1e59e1cd1..7eaf0709753 100644 --- a/maps/tether/engines/tesla.dmm +++ b/maps/tether/engines/tesla.dmm @@ -92,7 +92,7 @@ /turf/simulated/floor, /area/engineering/engine_gas) "aq" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -1006,7 +1006,7 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/submap/pa_room) "bY" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -1208,7 +1208,7 @@ /obj/structure/cable/cyan{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, diff --git a/maps/tether/levels/midpoint.dmm b/maps/tether/levels/midpoint.dmm index 365fd586595..405d0466913 100644 --- a/maps/tether/levels/midpoint.dmm +++ b/maps/tether/levels/midpoint.dmm @@ -281,7 +281,7 @@ /turf/simulated/floor/tiled/dark, /area/tether/midpoint) "yF" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 26 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -370,7 +370,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 26 }, /turf/simulated/floor/plating, diff --git a/maps/tether/levels/mining.dmm b/maps/tether/levels/mining.dmm index 108c6176da8..90114f5a3dc 100644 --- a/maps/tether/levels/mining.dmm +++ b/maps/tether/levels/mining.dmm @@ -315,7 +315,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/washing_machine, @@ -451,7 +451,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/wood, @@ -483,7 +483,7 @@ /turf/simulated/floor/tiled, /area/outpost/mining_main/secondary_gear_storage) "lC" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/component/unary/vent_pump/on, @@ -493,7 +493,7 @@ /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/outpost/mining_main/drill_equipment) "lT" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ breach_detection = 0; dir = 1; pixel_y = -22 @@ -540,7 +540,7 @@ /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/mine/explored) "nn" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ breach_detection = 0; dir = 1; pixel_y = -22 @@ -1429,7 +1429,7 @@ name = "Large Waste Vent"; pressure_checks = 2; pressure_checks_default = 2; - use_power = 1 + on = 1 }, /turf/simulated/floor/virgo3b, /area/outpost/mining_main/maintenance) diff --git a/maps/tether/levels/station1.dmm b/maps/tether/levels/station1.dmm index 62afaadf25c..2dd53b83ddd 100644 --- a/maps/tether/levels/station1.dmm +++ b/maps/tether/levels/station1.dmm @@ -481,7 +481,7 @@ /obj/effect/floor_decal/corner/red/border{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/component/unary/vent_scrubber/on, @@ -543,7 +543,7 @@ /turf/simulated/floor/tiled/dark, /area/bridge/secondary) "bc" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/borderfloor{ @@ -744,7 +744,7 @@ /obj/fiftyspawner/glass, /obj/fiftyspawner/glass, /obj/fiftyspawner/glass, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -1035,7 +1035,7 @@ /obj/item/camera_assembly, /obj/item/camera_assembly, /obj/item/camera_assembly, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -1085,7 +1085,7 @@ "cd" = ( /obj/effect/floor_decal/techfloor, /obj/effect/floor_decal/techfloor/hole, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -2319,7 +2319,7 @@ /turf/simulated/floor/tiled/white, /area/crew_quarters/sleep/engi_wash) "ev" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -2527,7 +2527,7 @@ /turf/simulated/floor/plating, /area/maintenance/station/eng_lower) "eO" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -2578,7 +2578,7 @@ /turf/simulated/floor/plating, /area/engineering/gravity_lobby) "eS" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -2985,7 +2985,7 @@ pixel_x = 28 }, /obj/structure/cable/green, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -3072,7 +3072,7 @@ dir = 1; pixel_y = -24 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -3772,7 +3772,7 @@ /turf/simulated/floor, /area/engineering/engine_monitoring) "hs" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -4171,7 +4171,7 @@ /turf/simulated/floor/wood, /area/engineering/break_room) "ih" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/borderfloor{ @@ -4585,7 +4585,7 @@ /turf/simulated/floor/tiled, /area/engineering/hallway) "jc" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/landmark/spawnpoint/latejoin/station/cryogenics, @@ -4690,7 +4690,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/fuel{ dir = 5 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -4829,7 +4829,7 @@ /obj/machinery/camera/network/engine{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -5303,7 +5303,7 @@ /turf/simulated/floor, /area/constructionsite) "kr" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -5492,7 +5492,7 @@ /obj/landmark{ name = "lightsout" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -5649,7 +5649,7 @@ /turf/simulated/floor/tiled, /area/crew_quarters/sleep/engi_wash) "kZ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -6171,7 +6171,7 @@ dir = 9 }, /obj/structure/flora/pottedplant/subterranean, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -6302,7 +6302,7 @@ /turf/simulated/floor/tiled/techfloor, /area/ai_upload) "mq" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -6417,7 +6417,7 @@ /turf/simulated/floor, /area/constructionsite) "mA" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -6860,7 +6860,7 @@ /turf/simulated/floor/tiled/dark, /area/bridge/secondary) "ny" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -7256,7 +7256,7 @@ /obj/effect/floor_decal/techfloor{ dir = 9 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/component/unary/vent_scrubber/on, @@ -7590,7 +7590,7 @@ dir = 1 }, /obj/machinery/light, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -7658,7 +7658,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals_central6{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/vehicle_old/train/engine, @@ -8146,7 +8146,7 @@ id = "dist_aux_meter"; name = "Distribution Loop" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -8738,7 +8738,7 @@ /turf/simulated/floor, /area/vacant/vacant_restaurant_lower) "ri" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -9184,7 +9184,7 @@ /obj/random/tech_supply, /obj/random/tech_supply, /obj/random/tech_supply, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -9403,7 +9403,7 @@ /obj/structure/cable{ icon_state = "2-4" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -9514,7 +9514,7 @@ /turf/simulated/floor/bluegrid, /area/ai_upload) "sL" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -9726,7 +9726,7 @@ /turf/simulated/floor/tiled/techmaint, /area/engineering/engine_smes) "ti" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -9823,7 +9823,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/plating, @@ -9990,7 +9990,7 @@ "tP" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/yellow/border, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ breach_detection = 0; dir = 1; pixel_y = -22 @@ -10069,7 +10069,7 @@ /obj/effect/floor_decal/techfloor{ dir = 5 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/component/unary/vent_scrubber/on, @@ -11244,7 +11244,7 @@ /turf/simulated/floor/tiled, /area/engineering/hallway) "wu" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -11781,7 +11781,7 @@ /obj/structure/cable{ icon_state = "2-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -12361,7 +12361,7 @@ dir = 8; icon_state = "pipe-c" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -12934,7 +12934,7 @@ /turf/simulated/floor/tiled, /area/engineering/workshop) "zT" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -13063,7 +13063,7 @@ /obj/effect/floor_decal/corner/purple/border{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -13084,7 +13084,7 @@ pixel_y = -32 }, /obj/structure/cable/green, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -13409,7 +13409,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 6 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -13595,7 +13595,7 @@ /turf/simulated/floor/tiled, /area/hallway/station/docks) "Bi" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -13705,7 +13705,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/segment, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -35 }, @@ -14086,7 +14086,7 @@ /turf/simulated/floor/tiled, /area/engineering/hallway) "Cf" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -14283,7 +14283,7 @@ /turf/simulated/floor/tiled, /area/hallway/station/docks) "Cx" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -14465,7 +14465,7 @@ /area/hallway/station/atrium) "CS" = ( /obj/structure/closet/secure_closet/brig, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/component/unary/vent_pump/on{ @@ -14725,7 +14725,7 @@ /turf/simulated/floor/tiled, /area/engineering/workshop) "Dt" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -15122,7 +15122,7 @@ /obj/structure/cable/green{ icon_state = "2-4" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -16108,7 +16108,7 @@ dir = 4 }, /obj/machinery/light, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -16255,7 +16255,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -16320,7 +16320,7 @@ /turf/simulated/floor/tiled, /area/engineering/hallway) "Gt" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/techfloor, @@ -16588,7 +16588,7 @@ /turf/simulated/floor/plating, /area/hallway/station/docks) "GX" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -16695,7 +16695,7 @@ /turf/simulated/floor/tiled, /area/engineering/workshop) "Hh" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -17080,7 +17080,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 6 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -17111,7 +17111,7 @@ /turf/simulated/floor/tiled/steel_grid, /area/engineering/foyer) "Ic" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -17176,7 +17176,7 @@ /turf/simulated/floor/tiled, /area/engineering/atmos/backup) "In" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/borderfloor{ @@ -17634,7 +17634,7 @@ /obj/structure/cable/green{ icon_state = "2-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -17839,7 +17839,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 10 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -18016,7 +18016,7 @@ dir = 4 }, /obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/disposalpipe/junction{ @@ -18205,7 +18205,7 @@ /obj/structure/cable/green{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -18376,7 +18376,7 @@ dir = 4 }, /obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/pipe/simple/hidden/universal{ @@ -18407,7 +18407,7 @@ /turf/simulated/floor/tiled, /area/engineering/gravity_lobby) "KA" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -18629,7 +18629,7 @@ icon_state = "0-8" }, /obj/effect/floor_decal/industrial/warning, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -18854,7 +18854,7 @@ /turf/simulated/floor/plating, /area/security/checkpoint/science) "Lr" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -19020,7 +19020,7 @@ /turf/simulated/floor/tiled, /area/hallway/station/docks) "LM" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -19132,7 +19132,7 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/fuel{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ breach_detection = 0; dir = 8; pixel_x = 25; @@ -19163,7 +19163,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -19335,7 +19335,7 @@ }, /obj/item/storage/box/glasses/square, /obj/effect/floor_decal/corner/white/diagonal, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -19742,7 +19742,7 @@ /obj/structure/cable/green{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -19988,7 +19988,7 @@ /area/engineering/storage) "NR" = ( /obj/structure/table/reinforced, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -20691,7 +20691,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 10 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -21021,7 +21021,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on, /obj/structure/table/standard, /obj/random/soap, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/white, @@ -21410,7 +21410,7 @@ /turf/simulated/floor/tiled, /area/hallway/station/docks) "QF" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -22874,7 +22874,7 @@ /obj/structure/table/glass, /obj/effect/floor_decal/borderfloorwhite, /obj/effect/floor_decal/corner/paleblue/border, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -23019,7 +23019,7 @@ icon_state = "1-8" }, /obj/structure/table/rack/shelf, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ breach_detection = 0; dir = 8; pixel_x = 25; @@ -23495,7 +23495,7 @@ /turf/simulated/floor/tiled, /area/hallway/station/docks) "UI" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/table/rack{ @@ -24439,7 +24439,7 @@ name = "AI Upload turret control"; pixel_y = 30 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -24753,7 +24753,7 @@ /turf/simulated/floor, /area/vacant/vacant_restaurant_lower) "Xo" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -24779,14 +24779,14 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, /turf/simulated/floor, /area/maintenance/station/eng_lower) "Xt" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -25503,7 +25503,7 @@ /turf/simulated/floor/wood, /area/bridge/meeting_room) "YO" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -25521,7 +25521,7 @@ /turf/simulated/floor/tiled/eris/dark/violetcorener, /area/shuttle/securiship/general) "YR" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/flora/pottedplant, @@ -25532,7 +25532,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -25817,7 +25817,7 @@ /obj/effect/floor_decal/corner/red/bordercorner2{ dir = 6 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -25902,7 +25902,7 @@ /turf/simulated/floor/tiled/dark, /area/bridge/secondary) "ZD" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -26015,7 +26015,7 @@ /obj/effect/floor_decal/corner/paleblue/border{ dir = 10 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -26106,7 +26106,7 @@ /obj/structure/disposalpipe/trunk{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, diff --git a/maps/tether/levels/station2.dmm b/maps/tether/levels/station2.dmm index 509ff376115..aa5f57e19a4 100644 --- a/maps/tether/levels/station2.dmm +++ b/maps/tether/levels/station2.dmm @@ -330,7 +330,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -628,7 +628,7 @@ /turf/simulated/floor/plating, /area/quartermaster/belterdock/refinery) "bm" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -1425,7 +1425,7 @@ dir = 10 }, /obj/effect/floor_decal/industrial/warning, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -1555,7 +1555,7 @@ /turf/simulated/floor, /area/maintenance/station/cargo) "dh" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -1975,7 +1975,7 @@ /obj/item/clothing/mask/breath, /obj/item/clothing/head/helmet/space/void/mining, /obj/item/mining_scanner, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/industrial/outline/yellow, @@ -1989,7 +1989,7 @@ /area/tether/exploration) "eg" = ( /obj/structure/closet/crate, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -2294,7 +2294,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -2492,7 +2492,7 @@ /obj/effect/floor_decal/corner/lightgrey/border{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -3721,7 +3721,7 @@ /turf/simulated/floor/tiled/techfloor, /area/shuttle/excursion/general) "hK" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/corner/brown/border{ @@ -4248,7 +4248,7 @@ /obj/effect/floor_decal/industrial/warning{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -6109,7 +6109,7 @@ /area/maintenance/station/cargo) "ms" = ( /obj/machinery/computer/security/mining, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 25 }, /turf/simulated/floor/wood, @@ -6533,7 +6533,7 @@ dir = 4 }, /obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -6985,7 +6985,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -7239,7 +7239,7 @@ /turf/simulated/floor/tiled, /area/hallway/station/starboard) "oK" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -7293,7 +7293,7 @@ /obj/item/flash, /obj/item/flash, /obj/structure/table/steel, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -7494,7 +7494,7 @@ /turf/simulated/floor/airless, /area/quartermaster/belterdock) "pj" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -8123,7 +8123,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -8458,7 +8458,7 @@ /turf/simulated/floor/tiled, /area/quartermaster/office) "rd" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/portable_atmospherics/powered/scrubber, @@ -8496,7 +8496,7 @@ pixel_x = 13; pixel_y = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/wood, @@ -8721,7 +8721,7 @@ /area/tether/station/visitorhallway/lounge) "rD" = ( /obj/structure/catwalk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/rust, @@ -8959,7 +8959,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -9258,7 +9258,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -9367,7 +9367,7 @@ /turf/simulated/floor/tiled, /area/hallway/station/starboard) "sQ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/wood, @@ -9622,7 +9622,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 5 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -9961,7 +9961,7 @@ /obj/effect/floor_decal/corner/yellow/bordercorner2{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -10420,7 +10420,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 6 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -10597,7 +10597,7 @@ /turf/simulated/floor, /area/maintenance/station/eng_upper) "vk" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -11325,7 +11325,7 @@ /turf/simulated/floor/tiled, /area/hallway/station/starboard) "wy" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -11382,7 +11382,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -11510,7 +11510,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 10 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -11872,7 +11872,7 @@ /turf/simulated/floor/tiled, /area/quartermaster/storage) "xH" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -12283,7 +12283,7 @@ /turf/simulated/floor/tiled/steel_grid, /area/tether/exploration) "yx" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -12310,7 +12310,7 @@ /turf/simulated/floor/tiled, /area/engineering/foyer_mezzenine) "yA" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor, @@ -12336,7 +12336,7 @@ /turf/simulated/floor/tiled/techmaint, /area/shuttle/excursion/cargo) "yD" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/dark, @@ -12394,7 +12394,7 @@ /obj/effect/floor_decal/corner/yellow/border{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -12668,7 +12668,7 @@ /obj/vehicle_old/train/trolley{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -12731,7 +12731,7 @@ /turf/simulated/floor/tiled, /area/quartermaster/office) "zu" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -12843,7 +12843,7 @@ /area/shuttle/mining_outpost/shuttle) "zG" = ( /obj/machinery/atmospherics/component/unary/vent_scrubber/on, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -12894,7 +12894,7 @@ dir = 10 }, /obj/structure/disposalpipe/junction/yjunction, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/catwalk, @@ -13021,7 +13021,7 @@ /turf/simulated/floor/tiled/dark, /area/tether/exploration) "Ae" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/borderfloor{ @@ -13277,7 +13277,7 @@ /area/tether/station/public_meeting_room) "AJ" = ( /obj/random/trash, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor, @@ -13341,7 +13341,7 @@ "AO" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -13366,7 +13366,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -13437,7 +13437,7 @@ /obj/effect/floor_decal/techfloor{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/bluegrid, @@ -13870,7 +13870,7 @@ /turf/simulated/floor/tiled, /area/quartermaster/office) "BN" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -14157,7 +14157,7 @@ /area/quartermaster/storage) "Cq" = ( /obj/structure/table/steel, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor, @@ -14230,8 +14230,8 @@ /obj/item/reagent_scanner, /obj/item/healthanalyzer, /obj/item/geiger_counter, -/obj/item/analyzer/plant_analyzer, -/obj/item/analyzer, +/obj/item/plant_analyzer, +/obj/item/atmos_analyzer, /obj/item/t_scanner, /turf/simulated/floor/plating, /area/storage/tech) @@ -14510,7 +14510,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -14604,7 +14604,7 @@ /obj/structure/cable/green{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -14621,7 +14621,7 @@ /turf/simulated/floor/wood, /area/hallway/station/port) "Dl" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -15275,7 +15275,7 @@ /turf/simulated/floor/wood, /area/tether/station/burial) "EA" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -15435,7 +15435,7 @@ /turf/simulated/floor/plating, /area/shuttle/excursion/general) "EO" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -15782,7 +15782,7 @@ /turf/simulated/floor/tiled, /area/quartermaster/office) "FA" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -15811,7 +15811,7 @@ /turf/simulated/floor/tiled/monotile, /area/quartermaster/office) "FE" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -15979,7 +15979,7 @@ /turf/simulated/open, /area/tether/station/stairs_two) "Gc" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -16120,7 +16120,7 @@ /turf/simulated/floor/tiled, /area/hallway/station/port) "Gr" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -17059,7 +17059,7 @@ /turf/simulated/wall/r_wall, /area/engineering/foyer_mezzenine) "Io" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -17335,7 +17335,7 @@ /area/tether/exploration) "IV" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -17842,7 +17842,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -18318,7 +18318,7 @@ /turf/simulated/wall/r_wall, /area/ai) "KV" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -18866,7 +18866,7 @@ /turf/simulated/wall/r_wall, /area/tether/exploration/pathfinder_office) "LX" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor, @@ -18976,7 +18976,7 @@ /turf/simulated/floor, /area/maintenance/station/eng_upper) "Mj" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/bed/chair/comfy/beige, @@ -19435,7 +19435,7 @@ /area/quartermaster/warehouse) "Nf" = ( /obj/machinery/suit_storage_unit/standard_unit, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -19461,7 +19461,7 @@ /turf/simulated/floor/plating, /area/quartermaster/foyer) "Nh" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/industrial/hatch/yellow, @@ -19731,7 +19731,7 @@ /area/vacant/vacant_restaurant_upper) "NI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -19744,7 +19744,7 @@ /turf/simulated/floor/carpet/bcarpet, /area/tether/station/visitorhallway/office) "NK" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -20473,7 +20473,7 @@ /obj/structure/bed/chair/comfy/black{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/camera/network/tether, @@ -20587,7 +20587,7 @@ /area/hallway/station/port) "Pu" = ( /obj/structure/closet/coffin, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -20726,7 +20726,7 @@ /turf/simulated/floor/tiled/white, /area/maintenance/station/eng_upper) "PI" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -20966,7 +20966,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -21440,7 +21440,7 @@ /turf/simulated/wall/r_wall, /area/maintenance/station/eng_upper) "Rh" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -21492,7 +21492,7 @@ /obj/structure/bed/chair/office/light{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -22910,7 +22910,7 @@ dir = 1; icon_state = "pipe-c" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -23038,7 +23038,7 @@ /turf/simulated/floor/tiled/dark, /area/quartermaster/warehouse) "Ux" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -23069,7 +23069,7 @@ /turf/simulated/floor/plating, /area/quartermaster/storage) "UA" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -23118,7 +23118,7 @@ /obj/structure/table/rack, /obj/item/suit_cooling_unit, /obj/item/suit_cooling_unit, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -23674,7 +23674,7 @@ /obj/effect/floor_decal/corner/lightgrey/border{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -24694,7 +24694,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/carpet/bcarpet, @@ -24992,7 +24992,7 @@ /turf/simulated/floor/tiled/dark, /area/chapel/main) "Yk" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/dark, @@ -25886,7 +25886,7 @@ dir = 1 }, /obj/machinery/mineral/equipment_vendor, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, diff --git a/maps/tether/levels/surface1.dmm b/maps/tether/levels/surface1.dmm index ea3f44db86e..c23ff1b172a 100644 --- a/maps/tether/levels/surface1.dmm +++ b/maps/tether/levels/surface1.dmm @@ -14,7 +14,7 @@ dir = 10 }, /obj/effect/floor_decal/steeldecal/steel_decals4, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/borderfloor/corner{ @@ -164,7 +164,7 @@ /turf/simulated/floor, /area/rnd/outpost/storage) "aeO" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -598,7 +598,7 @@ /obj/effect/floor_decal/corner/lightgrey/border{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -1153,9 +1153,8 @@ /turf/simulated/floor/plating, /area/maintenance/lower/research) "aDk" = ( -/obj/machinery/atmospherics/component/trinary/atmos_filter/m_filter{ - filter_type = 0; - filtered_out = list("phoron") +/obj/machinery/atmospherics/component/trinary/filter/mirrored{ + filtering = "phoron" }, /turf/simulated/floor, /area/rnd/outpost/atmos) @@ -1345,7 +1344,7 @@ /turf/simulated/floor/tiled, /area/rnd/testingroom) "aHI" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 23 }, /obj/effect/floor_decal/borderfloor{ @@ -1521,7 +1520,7 @@ /obj/effect/floor_decal/corner/paleblue/border{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -2023,7 +2022,7 @@ /turf/simulated/wall/r_wall, /area/storage/surface_eva) "baS" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -2781,7 +2780,7 @@ "bxv" = ( /obj/machinery/space_heater, /obj/effect/floor_decal/industrial/outline/grey, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -3079,7 +3078,7 @@ /obj/effect/floor_decal/corner/purple/border{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -3576,7 +3575,7 @@ "bTx" = ( /obj/structure/closet/l3closet/virology, /obj/machinery/atmospherics/component/unary/vent_scrubber/on, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/white, @@ -4071,7 +4070,7 @@ /turf/simulated/floor/tiled, /area/rnd/hallway) "chk" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -4373,7 +4372,7 @@ /obj/item/clothing/suit/space/void/medical/emt, /obj/item/clothing/mask/breath, /obj/item/clothing/head/helmet/space/void/medical/emt, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -24 }, @@ -4461,7 +4460,7 @@ /turf/simulated/floor/plating, /area/maintenance/lower/public_garden_maintenance) "crA" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -4955,7 +4954,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/security/brig/bathroom) "cEo" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -5492,7 +5491,7 @@ name = "plastic table frame" }, /obj/item/inflatable/door, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 25 }, /turf/simulated/floor/carpet/gaycarpet, @@ -5581,7 +5580,7 @@ /obj/effect/floor_decal/corner/lightgrey/border{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -6404,7 +6403,7 @@ /turf/simulated/floor/tiled, /area/rnd/outpost) "dqG" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -6755,9 +6754,8 @@ /turf/simulated/floor, /area/rnd/outpost/atmos) "dAQ" = ( -/obj/machinery/atmospherics/component/trinary/atmos_filter/m_filter{ - filter_type = 3; - filtered_out = list("carbon_dioxide") +/obj/machinery/atmospherics/component/trinary/filter/mirrored{ + filtering = "co2" }, /turf/simulated/floor, /area/rnd/outpost/atmos) @@ -7018,7 +7016,7 @@ /turf/simulated/floor/tiled/monofloor, /area/tether/surfacebase/surface_one_hall) "dGL" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/borderfloor{ @@ -7165,7 +7163,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -7941,7 +7939,7 @@ /turf/simulated/floor/tiled, /area/engineering/atmos/processing) "ehl" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -7976,7 +7974,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/lowernorthhall) "eif" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -8043,7 +8041,7 @@ name = "Powernet Sensor - Science Outpost Subgrid"; name_tag = "Science Outpost Subgrid" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -8157,7 +8155,7 @@ /obj/structure/toilet{ pixel_y = 10 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -8234,7 +8232,7 @@ /turf/simulated/floor/plating, /area/maintenance/lower/solars) "epp" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -8307,7 +8305,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/cargostore) "erH" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/techfloor, @@ -8430,7 +8428,7 @@ /area/tether/surfacebase/medical/lowerhall) "eyh" = ( /obj/machinery/atmospherics/component/unary/vent_pump/on, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 25 }, /turf/simulated/floor/tiled, @@ -9144,7 +9142,7 @@ dir = 10 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "anomaly_testing"; breach_detection = 0; dir = 8; @@ -9847,7 +9845,7 @@ /turf/simulated/floor/tiled, /area/rnd/outpost/breakroom) "flN" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -9921,7 +9919,7 @@ name = "Powernet Sensor - SurfMed Subgrid"; name_tag = "SurfMed Subgrid" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -10153,7 +10151,7 @@ /area/rnd/outpost/mixing) "frp" = ( /obj/structure/catwalk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -10536,7 +10534,7 @@ /turf/simulated/floor/wood, /area/crew_quarters/sleep/maintDorm2) "fDz" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/steel_dirty, @@ -10690,7 +10688,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/north_stairs_one) "fHk" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/steeldecal/steel_decals5, @@ -10943,7 +10941,7 @@ /obj/structure/toilet{ pixel_y = 10 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -11206,7 +11204,7 @@ /turf/simulated/floor/tiled/steel_dirty, /area/tether/surfacebase/cargostore/warehouse) "fTt" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/plating, @@ -11438,7 +11436,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/cable/orange{ @@ -11686,9 +11684,8 @@ /turf/simulated/floor/tiled/techmaint, /area/engineering/atmos/gas_storage) "gfu" = ( -/obj/machinery/atmospherics/component/trinary/atmos_filter/m_filter{ - filter_type = 4; - filtered_out = list("nitrous_oxide") +/obj/machinery/atmospherics/component/trinary/filter/mirrored{ + filtering = "n2o" }, /turf/simulated/floor, /area/rnd/outpost/atmos) @@ -13011,7 +13008,7 @@ /turf/simulated/floor/reinforced, /area/rnd/testingroom) "gKr" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/disposalpipe/segment{ @@ -13230,7 +13227,7 @@ /turf/simulated/floor/tiled, /area/rnd/outpost/anomaly_lab) "gQm" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -13756,7 +13753,7 @@ /turf/simulated/floor/tiled/dark, /area/rnd/outpost/anomaly_lab/analysis) "hiV" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -13795,7 +13792,7 @@ /turf/simulated/floor/tiled/white, /area/rnd/outpost/mixing) "hli" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -13975,7 +13972,7 @@ /turf/simulated/floor/tiled, /area/crew_quarters/locker) "hox" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -14176,7 +14173,7 @@ /turf/simulated/floor/tiled/steel_dirty, /area/rnd/outpost/storage) "hsl" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -15115,7 +15112,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -15168,7 +15165,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -15437,7 +15434,7 @@ /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_6) "hZG" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -15515,7 +15512,7 @@ pixel_x = 3; pixel_y = 3 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -15540,7 +15537,7 @@ /turf/simulated/floor/tiled/white, /area/rnd/chemistry_lab) "idY" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -16525,7 +16522,7 @@ dir = 1 }, /obj/structure/table/steel, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/dark, @@ -16595,7 +16592,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ @@ -16769,7 +16766,7 @@ /turf/simulated/floor/tiled/techfloor/grid/virgo3b, /area/tether/surfacebase/outside/outside1) "iKA" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -17212,7 +17209,7 @@ /obj/structure/cable/green{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -17573,7 +17570,7 @@ /area/tether/surfacebase/cargostore) "jfv" = ( /obj/structure/reagent_dispensers/watertank, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -17804,7 +17801,7 @@ /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/medical/paramed) "jpj" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -18308,7 +18305,7 @@ /turf/simulated/floor/tiled, /area/engineering/atmos) "jEb" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/borderfloor{ @@ -18327,7 +18324,7 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/white, @@ -18684,7 +18681,7 @@ /area/tether/surfacebase/surface_one_hall) "jOR" = ( /obj/effect/floor_decal/industrial/warning, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -19315,7 +19312,7 @@ /obj/structure/cable/green{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/borderfloor{ @@ -19530,7 +19527,7 @@ /obj/structure/toilet{ pixel_y = 10 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -19707,7 +19704,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 6 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -19772,7 +19769,7 @@ dir = 1 }, /obj/structure/table/standard, -/obj/item/analyzer, +/obj/item/atmos_analyzer, /obj/machinery/camera/network/research_outpost{ dir = 1 }, @@ -20200,7 +20197,7 @@ /obj/random/tech_supply, /obj/random/tech_supply, /obj/random/tech_supply, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 23 }, /turf/simulated/floor/tiled, @@ -20231,7 +20228,7 @@ /turf/simulated/floor/plating, /area/maintenance/lower/xenoflora) "kHy" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -20325,7 +20322,7 @@ external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "map_vent_out"; - use_power = 1 + on = 1 }, /obj/structure/sign/signnew/biohazard{ pixel_y = -32 @@ -20378,7 +20375,7 @@ /obj/effect/floor_decal/corner/mauve/border{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -21076,7 +21073,7 @@ /obj/structure/cable/cyan{ icon_state = "1-2" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ breach_detection = 0; dir = 8; pixel_x = 25; @@ -21741,7 +21738,7 @@ /obj/effect/floor_decal/rust, /obj/item/toy/bouquet/fake, /obj/item/reagent_containers/spray/waterflower, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 25 }, /turf/simulated/floor/plating, @@ -21782,7 +21779,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/security/lowerhall) "lwd" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -21944,7 +21941,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/green{ dir = 10 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor, @@ -22350,7 +22347,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -22369,7 +22366,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "pen_nine"; breach_detection = 0; dir = 1; @@ -22388,7 +22385,7 @@ "lQN" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/purple/border, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -22775,7 +22772,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -22802,7 +22799,7 @@ /obj/item/radio/off, /obj/item/radio/off, /obj/item/radio/off, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -22980,7 +22977,7 @@ /area/medical/virology) "mga" = ( /obj/structure/catwalk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/rust, @@ -23100,7 +23097,7 @@ /turf/simulated/wall/r_wall, /area/crew_quarters/sleep/Dorm_5) "mkH" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -23596,7 +23593,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -23667,7 +23664,7 @@ /turf/simulated/floor/tiled/steel_grid, /area/rnd/outpost/testing_lab) "myk" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -23773,7 +23770,7 @@ /area/crew_quarters/sleep/maintDorm2) "mAh" = ( /obj/effect/floor_decal/industrial/outline/yellow, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -23792,7 +23789,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/item/towel/random, @@ -24077,7 +24074,7 @@ /obj/structure/bed/chair/comfy/black{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/wood, @@ -24227,7 +24224,7 @@ /obj/structure/bed/chair/comfy/black{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/wood, @@ -24324,7 +24321,7 @@ /area/tether/surfacebase/security/brig) "mMO" = ( /obj/machinery/atmospherics/pipe/simple/visible/yellow, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -24601,7 +24598,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 10 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -24609,7 +24606,7 @@ /turf/simulated/floor/plating, /area/storage/surface_eva) "mVV" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -24685,7 +24682,7 @@ dir = 1; icon_state = "pipe-c" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -24758,7 +24755,7 @@ /turf/simulated/floor/tiled, /area/crew_quarters/visitor_lodging) "mXX" = ( -/obj/machinery/atmospherics/component/trinary/atmos_filter{ +/obj/machinery/atmospherics/component/trinary/filter{ dir = 4; name = "High Power Gas filter"; power_rating = 15000; @@ -24869,7 +24866,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/security/brig) "ncq" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -25307,7 +25304,7 @@ /turf/simulated/floor/plating, /area/maintenance/lowmedbaymaint) "noF" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -25684,7 +25681,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -25739,7 +25736,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/plating, @@ -26290,7 +26287,7 @@ /turf/simulated/mineral, /area/maintenance/lower/mining_eva) "nTk" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/table/bench/steel, @@ -26607,7 +26604,7 @@ /obj/effect/floor_decal/corner/paleblue/border{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/white, @@ -26746,7 +26743,7 @@ /area/tether/surfacebase/medical/paramed) "ogn" = ( /obj/structure/catwalk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -26997,7 +26994,7 @@ /turf/simulated/wall, /area/tether/surfacebase/tunnel) "onO" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -27029,7 +27026,7 @@ /obj/item/storage/excavation, /obj/item/stack/flag/yellow, /obj/item/pickaxe, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -27078,7 +27075,7 @@ /turf/simulated/floor/tiled, /area/rnd/hallway) "opX" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -27186,7 +27183,7 @@ /obj/effect/floor_decal/corner/brown/border{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -27544,7 +27541,7 @@ /turf/simulated/floor/tiled/dark, /area/rnd/outpost/anomaly_lab/analysis) "oJD" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/steel_dirty, @@ -28402,7 +28399,7 @@ /area/tether/surfacebase/tram) "pgm" = ( /obj/structure/table/steel, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -29391,7 +29388,7 @@ /obj/effect/floor_decal/corner/brown{ dir = 6 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -29620,7 +29617,7 @@ "pJV" = ( /obj/machinery/floodlight, /obj/effect/floor_decal/industrial/outline/yellow, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -30015,7 +30012,7 @@ /turf/simulated/floor/plating, /area/engineering/atmos/processing) "pXd" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -30075,7 +30072,7 @@ /turf/simulated/floor/tiled/white, /area/rnd/outpost/mixing) "pYi" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -30142,7 +30139,7 @@ /obj/machinery/camera/network/research_outpost{ dir = 8 }, -/obj/item/analyzer, +/obj/item/atmos_analyzer, /turf/simulated/floor/tiled/white, /area/rnd/outpost/heating) "pZm" = ( @@ -30237,7 +30234,7 @@ /turf/simulated/floor/plating, /area/maintenance/lowmedbaymaint) "qbr" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "anomaly_testing"; breach_detection = 0; dir = 8; @@ -30268,7 +30265,7 @@ /area/rnd/outpost/breakroom) "qcl" = ( /obj/structure/flora/ausbushes/ppflowers, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/grass, @@ -30294,7 +30291,7 @@ /turf/simulated/floor/plating, /area/rnd/testingroom) "qdD" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/disposal, @@ -30566,7 +30563,7 @@ /turf/simulated/floor/plating, /area/maintenance/lower/solars) "qnT" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -30719,7 +30716,7 @@ dir = 6 }, /obj/structure/closet/crate, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -31308,7 +31305,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -31763,7 +31760,7 @@ /area/rnd/outpost/atmos) "qQU" = ( /obj/machinery/sleep_console, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/white, @@ -31849,7 +31846,7 @@ /obj/structure/railing{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -31984,7 +31981,7 @@ dir = 8 }, /obj/machinery/meter, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -32669,7 +32666,7 @@ /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/tether/surfacebase/tunnel) "rqv" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -32699,7 +32696,7 @@ /area/rnd/outpost/heating) "rrJ" = ( /obj/machinery/atmospherics/portables_connector, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -32734,7 +32731,7 @@ /obj/effect/floor_decal/corner/paleblue/border{ dir = 6 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -33147,7 +33144,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -33620,7 +33617,7 @@ "rPZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -33770,7 +33767,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 6 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -34055,7 +34052,7 @@ /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/lowernortheva) "sbh" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -34527,7 +34524,7 @@ /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "snl" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -34559,7 +34556,7 @@ /obj/structure/cable/orange{ icon_state = "2-4" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -35150,7 +35147,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/cargostore) "sDy" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -35333,7 +35330,7 @@ /obj/structure/cable{ icon_state = "2-4" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/catwalk, @@ -36010,7 +36007,7 @@ /area/rnd/outpost/atmos) "taQ" = ( /obj/machinery/computer/centrifuge, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/borderfloorwhite{ @@ -36292,7 +36289,7 @@ /obj/effect/floor_decal/corner/red/border{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -36410,14 +36407,14 @@ /obj/structure/bed/chair{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/lowerhall) "tro" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/corner/purple{ @@ -36564,7 +36561,7 @@ /turf/simulated/floor/tiled, /area/engineering/atmos) "tyg" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -36791,7 +36788,7 @@ /obj/structure/cable/green{ icon_state = "2-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -36851,7 +36848,7 @@ /obj/structure/bed/chair{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/dark, @@ -36927,7 +36924,7 @@ dir = 1 }, /obj/effect/floor_decal/borderfloor, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -37155,7 +37152,7 @@ /area/engineering/atmos) "tNz" = ( /obj/effect/floor_decal/industrial/warning/dust, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -37356,7 +37353,7 @@ /obj/structure/toilet{ pixel_y = 10 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -37392,7 +37389,7 @@ /area/tether/surfacebase/security/brig/storage) "tUh" = ( /obj/structure/catwalk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -37951,7 +37948,7 @@ /obj/structure/bed/chair/comfy/black{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/wood, @@ -38289,7 +38286,7 @@ on = 1 }, /obj/item/reagent_containers/glass/rag, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -38485,7 +38482,7 @@ /turf/simulated/floor/tiled, /area/rnd/testingroom) "uzB" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -40024,7 +40021,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/cargostore) "vrp" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -40260,7 +40257,7 @@ /area/crew_quarters/visitor_laundry) "vze" = ( /obj/machinery/atmospherics/component/unary/vent_pump/on, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -40531,7 +40528,7 @@ /turf/simulated/floor/virgo3b, /area/tether/outpost/solars_outside) "vFA" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/power/apc{ @@ -40939,7 +40936,7 @@ /turf/simulated/floor/plating, /area/maintenance/lower/atmos) "vMM" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -41218,7 +41215,7 @@ /area/rnd/hallway) "vSR" = ( /obj/structure/bed/chair/bar_stool, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 25 }, /turf/simulated/floor/carpet/bcarpet, @@ -41392,7 +41389,7 @@ /obj/structure/bed/chair{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -41493,7 +41490,7 @@ dir = 10 }, /obj/machinery/floodlight, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/plating, @@ -41693,7 +41690,7 @@ /turf/simulated/floor/tiled, /area/crew_quarters/visitor_laundry) "wgp" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -41746,7 +41743,7 @@ }, /obj/structure/table/steel, /obj/machinery/atmospherics/component/unary/vent_pump/on, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/dark, @@ -42052,7 +42049,7 @@ /obj/effect/floor_decal/corner/grey/border{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -42090,7 +42087,7 @@ icon_state = "2-4" }, /obj/effect/floor_decal/industrial/warning, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/power/apc{ @@ -42216,7 +42213,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/corner/lightgrey/border{ @@ -42768,7 +42765,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/lowernortheva) "wJB" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/light/small{ @@ -42789,7 +42786,7 @@ /obj/machinery/atmospherics/component/unary/vent_pump/on{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -43291,7 +43288,7 @@ /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/tether/surfacebase/outside/outside1) "wXy" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "pen_nine"; breach_detection = 0; dir = 1; @@ -43356,7 +43353,7 @@ /obj/structure/bed/chair{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/dark, @@ -43683,7 +43680,7 @@ pixel_x = 6; pixel_y = 26 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -43694,7 +43691,7 @@ /area/rnd/outpost/anomaly_lab) "xjo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/green, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -43983,7 +43980,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "pen_nine"; breach_detection = 0; dir = 1; @@ -44607,7 +44604,7 @@ /obj/structure/railing{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "pen_nine"; breach_detection = 0; dir = 1; @@ -44619,14 +44616,14 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, /turf/simulated/floor/tiled/dark, /area/rnd/outpost/anomaly_lab/analysis) "xIN" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/dark, @@ -44642,7 +44639,7 @@ /area/tether/outpost/solars_outside) "xJe" = ( /obj/structure/catwalk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -44801,7 +44798,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -45054,14 +45051,14 @@ /obj/structure/bed/chair/comfy/black{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_2) "ybG" = ( /obj/structure/catwalk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/cable{ diff --git a/maps/tether/levels/surface2.dmm b/maps/tether/levels/surface2.dmm index 3ae93d8afa7..90282845e92 100644 --- a/maps/tether/levels/surface2.dmm +++ b/maps/tether/levels/surface2.dmm @@ -722,7 +722,7 @@ }, /obj/effect/floor_decal/industrial/warning, /obj/machinery/recharge_station, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/plating, @@ -916,7 +916,7 @@ /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/east_stairs_two) "aGG" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/industrial/warning/corner{ @@ -1016,7 +1016,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -1525,7 +1525,7 @@ /area/maintenance/lower/south) "beP" = ( /obj/effect/floor_decal/rust, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -1918,7 +1918,7 @@ /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/security/armory) "brO" = ( -/obj/machinery/alarm/monitor/isolation{ +/obj/machinery/air_alarm/monitor/isolation{ alarm_id = "slime_pens"; dir = 8; pixel_x = 22 @@ -1995,7 +1995,7 @@ /turf/simulated/floor/wood, /area/maintenance/lower/atmos) "btW" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -2616,7 +2616,7 @@ /area/maintenance/lower/north) "bTU" = ( /obj/structure/table/glass, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -3644,7 +3644,7 @@ /obj/item/stock_parts/subspace/ansible, /obj/item/stock_parts/subspace/ansible, /obj/item/stock_parts/subspace/ansible, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -3843,7 +3843,7 @@ /obj/effect/floor_decal/corner/mauve/border{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -4596,7 +4596,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/plating, @@ -4705,7 +4705,7 @@ /obj/machinery/atmospherics/component/unary/vent_pump/on{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -5316,7 +5316,7 @@ dir = 4 }, /turf/simulated/floor/bluegrid{ - initial_gas_mix = "nitrogen=500;TEMP=80"; + initial_gas_mix = "n2=500;TEMP=80"; name = "Server Base" }, /area/server) @@ -5564,7 +5564,7 @@ /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/security/evidence) "dZg" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -5646,7 +5646,7 @@ /turf/simulated/floor/water/deep/indoors, /area/tether/surfacebase/fish_farm) "edL" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -6030,7 +6030,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -6301,7 +6301,7 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -6818,7 +6818,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_two_hall) "eRG" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -6931,7 +6931,7 @@ /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/breakroom) "eWF" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -7635,7 +7635,7 @@ /area/maintenance/lower/south) "fyD" = ( /obj/structure/lattice, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/open, @@ -7665,10 +7665,10 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/bluegrid{ - initial_gas_mix = "nitrogen=500;TEMP=80"; + initial_gas_mix = "n2=500;TEMP=80"; name = "Server Base" }, /area/server) @@ -8843,7 +8843,7 @@ /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/centralhall) "glB" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -8920,7 +8920,7 @@ dir = 1 }, /obj/structure/closet/secure_closet/atmos_personal, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -9436,7 +9436,7 @@ /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/atmos) "gBv" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/white, @@ -9560,7 +9560,7 @@ /obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary{ scrub_id = "xeno_phoron_pen_scrubbers" }, -/obj/machinery/alarm/monitor/isolation{ +/obj/machinery/air_alarm/monitor/isolation{ alarm_id = "slime_pens"; dir = 1; pixel_y = -22 @@ -9980,7 +9980,7 @@ }, /obj/structure/window/reinforced, /turf/simulated/floor/bluegrid{ - initial_gas_mix = "nitrogen=500;TEMP=80"; + initial_gas_mix = "n2=500;TEMP=80"; name = "Server Base" }, /area/server) @@ -10028,7 +10028,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/cable/green{ @@ -10269,7 +10269,7 @@ /obj/structure/cable/green{ icon_state = "1-2" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -11009,7 +11009,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/security/evastorage) "hLa" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -11373,7 +11373,7 @@ /turf/simulated/floor/plating, /area/maintenance/asmaint2) "hVr" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/railing, @@ -11756,7 +11756,7 @@ /turf/simulated/floor/tiled/dark, /area/bridge/bridge_hallway) "imW" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -12251,7 +12251,7 @@ /obj/effect/floor_decal/corner/paleblue/border{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -35 }, @@ -12332,7 +12332,7 @@ pixel_y = -8; req_access = list(55) }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -35 }, @@ -12372,7 +12372,7 @@ dir = 8; icon_state = "pipe-c" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -12594,7 +12594,7 @@ /obj/structure/railing{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -12608,7 +12608,7 @@ /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/tether/surfacebase/old_tram) "iKR" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -12939,7 +12939,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_x = 3; pixel_y = -28 @@ -12971,7 +12971,7 @@ /obj/effect/floor_decal/corner/yellow/border{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -13001,7 +13001,7 @@ /obj/structure/sign/nosmoking_1{ pixel_x = -32 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 28 }, /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ @@ -13154,7 +13154,7 @@ /obj/effect/floor_decal/corner/paleblue/border{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/white, @@ -13391,7 +13391,7 @@ /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/centralhall) "joP" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -13460,7 +13460,7 @@ dir = 8 }, /turf/simulated/floor/bluegrid{ - initial_gas_mix = "nitrogen=500;TEMP=80"; + initial_gas_mix = "n2=500;TEMP=80"; name = "Server Base" }, /area/server) @@ -13658,7 +13658,7 @@ dir = 4 }, /turf/simulated/floor/bluegrid{ - initial_gas_mix = "nitrogen=500;TEMP=80"; + initial_gas_mix = "n2=500;TEMP=80"; name = "Server Base" }, /area/server) @@ -13728,7 +13728,7 @@ /area/maintenance/lower/atmos) "jAo" = ( /obj/structure/table/glass, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -13763,7 +13763,7 @@ "jAL" = ( /obj/effect/floor_decal/techfloor, /obj/effect/floor_decal/techfloor/hole/right, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -14694,7 +14694,7 @@ dir = 1 }, /obj/machinery/atmospherics/component/unary/vent_scrubber/on, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/techmaint, @@ -14867,7 +14867,7 @@ /turf/simulated/floor/plating, /area/maintenance/lower/rnd) "kvB" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -14925,7 +14925,7 @@ /obj/effect/floor_decal/corner/purple{ dir = 5 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/light{ @@ -15452,14 +15452,14 @@ /area/maintenance/lower/atmos) "kTQ" = ( /obj/structure/catwalk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, /turf/simulated/open, /area/engineering/atmos) "kUc" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -15656,7 +15656,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -15694,7 +15694,7 @@ /turf/simulated/floor/plating, /area/maintenance/lower/atmos) "lbj" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -15716,7 +15716,7 @@ /area/tether/surfacebase/medical/centralhall) "lbl" = ( /obj/structure/catwalk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/plating, @@ -15805,7 +15805,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor, @@ -15886,7 +15886,7 @@ /obj/item/stack/cable_coil/pink, /obj/item/stack/cable_coil/pink, /obj/item/stack/cable_coil/pink, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -16011,7 +16011,7 @@ /obj/structure/railing{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -16093,7 +16093,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -16138,7 +16138,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -16166,7 +16166,7 @@ /turf/simulated/floor/plating, /area/tether/surfacebase/reading_room) "lxt" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -16405,7 +16405,7 @@ /turf/simulated/floor/plating, /area/tether/surfacebase/emergency_storage/atmos) "lGe" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -16434,7 +16434,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/bluegrid{ initial_gas_mix = "n2=100;TEMP=80"; @@ -16459,7 +16459,7 @@ /turf/simulated/floor/tiled, /area/rnd/rdoffice) "lHZ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/catwalk, @@ -16594,7 +16594,7 @@ /turf/simulated/floor/tiled/dark, /area/maintenance/lower/south) "lOh" = ( -/obj/machinery/alarm/monitor/isolation{ +/obj/machinery/air_alarm/monitor/isolation{ alarm_id = "slime_pens"; dir = 4; pixel_x = -22 @@ -17027,7 +17027,7 @@ /turf/simulated/floor/tiled/monotile, /area/engineering/atmos) "meI" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -17393,7 +17393,7 @@ dir = 8; layer = 2.6 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -17442,7 +17442,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ breach_detection = 0; dir = 1; pixel_y = -22 @@ -17474,7 +17474,7 @@ pixel_x = -25; req_access = list(55) }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -35 }, @@ -17603,7 +17603,7 @@ /obj/structure/cable/green{ icon_state = "2-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/borderfloor{ @@ -17623,7 +17623,7 @@ name = "Station Intercom (General)"; pixel_y = 21 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 30 }, /obj/machinery/computer/security/xenobio, @@ -17996,7 +17996,7 @@ /obj/structure/closet{ name = "Evidence Closet" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -18136,7 +18136,7 @@ /obj/machinery/vending/wallmed1{ pixel_x = 30 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/table/standard, @@ -18369,7 +18369,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -18495,7 +18495,7 @@ /turf/simulated/floor/carpet, /area/tether/surfacebase/medical/cmo) "nfc" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/disposalpipe/segment{ @@ -18590,7 +18590,7 @@ /obj/effect/floor_decal/corner/paleblue/bordercorner2{ dir = 10 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -18799,7 +18799,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on, /obj/structure/table/standard, /obj/random/soap, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/white, @@ -18861,7 +18861,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/techmaint, @@ -19039,7 +19039,7 @@ /turf/simulated/floor/wood, /area/rnd/breakroom) "nvq" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -19155,7 +19155,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 5 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -19701,7 +19701,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/security/middlehall) "nWU" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -19968,7 +19968,7 @@ /turf/simulated/floor/tiled, /area/engineering/lower/atmos_lockers) "ofl" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -20330,7 +20330,7 @@ icon_state = "map_vent_out"; pressure_checks = 0; pressure_checks_default = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/bluegrid{ initial_gas_mix = "n2=100;TEMP=80"; @@ -20909,7 +20909,7 @@ "oRe" = ( /obj/effect/floor_decal/industrial/outline, /obj/structure/closet/wardrobe/robotics_black, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -21050,7 +21050,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -21276,7 +21276,7 @@ "pel" = ( /obj/machinery/washing_machine, /obj/machinery/atmospherics/component/unary/vent_scrubber/on, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/white, @@ -21484,7 +21484,7 @@ }, /area/tcommsat/chamber) "poo" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 28 }, @@ -21661,7 +21661,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -21785,7 +21785,7 @@ /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/bathroom) "pzC" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/dark, @@ -22413,7 +22413,7 @@ /turf/simulated/floor/tiled/techfloor, /area/chapel/main) "pXi" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -22805,7 +22805,7 @@ /area/janitor) "qmG" = ( /obj/structure/catwalk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -22978,7 +22978,7 @@ /area/maintenance/asmaint2) "qsf" = ( /obj/structure/railing, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -23010,7 +23010,7 @@ /turf/simulated/floor/reinforced, /area/rnd/outpost/xenobiology/outpost_slimepens) "qtq" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -23050,7 +23050,7 @@ /area/tether/surfacebase/medical/centralstairwell) "qut" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -23268,7 +23268,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_two) "qDL" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/corner_techfloor_grid{ @@ -23342,7 +23342,7 @@ /turf/simulated/floor/tiled, /area/engineering/atmos) "qFQ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -23428,7 +23428,7 @@ /area/maintenance/lower/atmos) "qLl" = ( /obj/structure/filingcabinet/chestdrawer, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -23439,7 +23439,7 @@ dir = 4 }, /obj/machinery/portable_atmospherics/powered/pump/filled, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -23551,7 +23551,7 @@ /turf/simulated/floor/tiled/white, /area/tether/surfacebase/security/detective) "qNZ" = ( -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, /turf/simulated/mineral/floor/virgo3b, /area/tether/surfacebase/outside/outside2) "qOo" = ( @@ -23562,7 +23562,7 @@ /turf/simulated/open, /area/tether/surfacebase/surface_two_hall) "qOy" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -23616,7 +23616,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/security/middlehall) "qQc" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -23643,7 +23643,7 @@ pixel_x = -1; pixel_y = -2 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/borderfloorblack{ @@ -24113,7 +24113,7 @@ /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/surface_two_hall) "rkP" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/borderfloor{ @@ -24958,10 +24958,10 @@ "rUA" = ( /obj/machinery/atmospherics/component/unary/vent_pump{ icon_state = "map_vent_out"; - use_power = 1 + on = 1 }, /turf/simulated/floor/bluegrid{ - initial_gas_mix = "nitrogen=500;TEMP=80"; + initial_gas_mix = "n2=500;TEMP=80"; name = "Server Base" }, /area/server) @@ -25220,7 +25220,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/security/middlehall) "seT" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -25368,7 +25368,7 @@ dir = 1 }, /obj/effect/floor_decal/rust/steel_decals_rusted2, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/railing, @@ -25727,7 +25727,7 @@ /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/tether/surfacebase/old_tram) "sss" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -25806,7 +25806,7 @@ /area/maintenance/lower/north) "sve" = ( /obj/structure/catwalk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -26067,7 +26067,7 @@ /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/north) "sCG" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/techfloor{ @@ -26076,7 +26076,7 @@ /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/bar) "sCV" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -26894,7 +26894,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/steeldecal/steel_decals4, @@ -27377,7 +27377,7 @@ /obj/effect/floor_decal/corner_techfloor_grid/full{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/techfloor, @@ -27416,7 +27416,7 @@ /turf/simulated/floor/plating, /area/maintenance/commandmaint) "tJL" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/carpet, @@ -27896,7 +27896,7 @@ /turf/simulated/floor/plating, /area/maintenance/lower/atmos) "uhO" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -28 }, @@ -28178,7 +28178,7 @@ /turf/simulated/floor/plating, /area/maintenance/lower/atmos) "uva" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/item/bananapeel, @@ -28403,7 +28403,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -28667,7 +28667,7 @@ /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/centralhall) "uGH" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/techfloor{ @@ -28805,7 +28805,7 @@ "uOu" = ( /obj/structure/catwalk, /obj/structure/table/steel, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -29282,7 +29282,7 @@ /obj/effect/floor_decal/techfloor{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -29426,7 +29426,7 @@ /obj/structure/cable/green{ icon_state = "1-4" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -29596,7 +29596,7 @@ /turf/simulated/floor/plating, /area/maintenance/lower/south) "vpQ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -29754,7 +29754,7 @@ /turf/simulated/floor/plating, /area/maintenance/lower/mining) "vuJ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -29933,7 +29933,7 @@ /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/centralhall) "vCg" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/white, @@ -30077,7 +30077,7 @@ /obj/effect/floor_decal/corner/paleblue/bordercorner2{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/white, @@ -30165,7 +30165,7 @@ /obj/structure/table/standard, /obj/item/hand_tele, /obj/machinery/atmospherics/component/unary/vent_scrubber/on, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/dark, @@ -30600,7 +30600,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on, /obj/structure/table/standard, /obj/random/soap, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/white, @@ -30716,7 +30716,7 @@ /turf/simulated/floor/plating, /area/maintenance/lower/public_garden_maintenance/upper) "whe" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -30989,7 +30989,7 @@ /turf/simulated/floor/tiled, /area/janitor) "wtE" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -31080,7 +31080,7 @@ "wvN" = ( /obj/structure/table/steel, /obj/random/medical/lite, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -32115,7 +32115,7 @@ /obj/effect/floor_decal/corner/yellow/border{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -32324,7 +32324,7 @@ /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/mining) "xpn" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -32775,7 +32775,7 @@ /turf/simulated/floor/tiled/white, /area/tether/surfacebase/security/detective) "xHt" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -32952,7 +32952,7 @@ }, /area/tcommsat/chamber) "xMO" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -33387,7 +33387,7 @@ /turf/simulated/floor/tiled, /area/engineering/atmos/monitoring) "yaX" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/wood, @@ -33470,7 +33470,7 @@ /obj/machinery/atmospherics/pipe/zpipe/down/scrubbers{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/open, @@ -33592,7 +33592,7 @@ /area/tether/surfacebase/north_stairs_two) "yjH" = ( /obj/structure/table/glass, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, diff --git a/maps/tether/levels/surface3.dmm b/maps/tether/levels/surface3.dmm index 0e30b3a38bb..2dba3b7fdbe 100644 --- a/maps/tether/levels/surface3.dmm +++ b/maps/tether/levels/surface3.dmm @@ -882,7 +882,7 @@ /area/tether/surfacebase/security/iaa) "atO" = ( /mob/living/simple_mob/animal/passive/cow, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -1299,7 +1299,7 @@ /turf/simulated/floor/grass, /area/hydroponics) "aFp" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -1657,7 +1657,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -1930,7 +1930,7 @@ req_access = list(); req_one_access = list(5) }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 25 }, /obj/effect/floor_decal/corner/paleblue{ @@ -2644,7 +2644,7 @@ /turf/simulated/floor/tiled, /area/rnd/outpost/xenobiology/outpost_hallway) "bpU" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -3308,7 +3308,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_three_hall) "bFm" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 28 }, /obj/machinery/atmospherics/component/unary/vent_pump/on, @@ -3724,7 +3724,7 @@ /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "anomaly_testing"; breach_detection = 0; dir = 8; @@ -4646,8 +4646,8 @@ /obj/structure/table/woodentable, /obj/item/material/minihoe, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/item/analyzer/plant_analyzer, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, +/obj/item/plant_analyzer, /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 8 }, @@ -4902,7 +4902,7 @@ /turf/simulated/floor/tiled/dark, /area/shuttle/tourbus/general) "czU" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22; target_temperature = 312.15 @@ -5027,7 +5027,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/security/lobby) "cCP" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -5141,7 +5141,7 @@ "cFC" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/lightgrey/border, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -5222,7 +5222,7 @@ /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/chemistry) "cKh" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -5485,7 +5485,7 @@ /turf/simulated/floor/wood, /area/tether/surfacebase/entertainment) "cVM" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 20 }, /obj/effect/floor_decal/borderfloorblack{ @@ -6129,7 +6129,7 @@ /turf/simulated/floor/tiled, /area/rnd/research) "dqC" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -6218,7 +6218,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -6293,7 +6293,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/security/briefingroom) "dwk" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -7034,7 +7034,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_three_hall) "dRa" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -8075,7 +8075,7 @@ }, /obj/effect/floor_decal/borderfloorwhite, /obj/effect/floor_decal/corner/paleblue/border, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -8326,7 +8326,7 @@ /area/crew_quarters/bar) "eEd" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -8599,7 +8599,7 @@ /turf/simulated/open/virgo3b, /area/tether/surfacebase/outside/outside3) "eMd" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25; target_temperature = 270 @@ -8607,7 +8607,7 @@ /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/uppersouthstairwell) "eMD" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/borderfloor{ @@ -8649,7 +8649,7 @@ /turf/simulated/floor/tiled, /area/rnd/xenobiology/xenoflora) "eNU" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -8843,7 +8843,7 @@ /obj/effect/floor_decal/industrial/danger{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -9761,7 +9761,7 @@ /obj/structure/bed/chair/wood{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -9804,7 +9804,7 @@ /obj/structure/cable/green{ icon_state = "1-2" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -9877,7 +9877,7 @@ /obj/structure/bed/chair/bay/chair{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -10099,7 +10099,7 @@ /obj/random/maintenance/clean, /obj/random/maintenance/clean, /obj/random/drinkbottle, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -11087,7 +11087,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_three_hall) "gjP" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -11123,7 +11123,7 @@ /turf/simulated/floor/wood, /area/tether/surfacebase/security/hos) "glf" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -11164,7 +11164,7 @@ /obj/item/folder/red, /obj/item/folder/blue, /obj/item/pen, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/dark, @@ -11484,14 +11484,14 @@ pixel_y = -24 }, /obj/structure/cable/orange, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 28 }, /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/topairlock) "gvI" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/component/unary/vent_scrubber/on, @@ -11592,7 +11592,7 @@ /turf/simulated/floor/tiled, /area/rnd/staircase/thirdfloor) "gxn" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/table/woodentable, @@ -11613,8 +11613,8 @@ /obj/effect/floor_decal/corner/lime/full{ dir = 1 }, -/obj/item/analyzer/plant_analyzer, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/material/minihoe, /obj/item/material/minihoe, /turf/simulated/floor/tiled, @@ -12277,7 +12277,7 @@ /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/surface_three_hall) "gUM" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -13018,7 +13018,7 @@ /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/chemistry) "htH" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -13456,7 +13456,7 @@ /obj/structure/cable/green{ icon_state = "1-4" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -13495,7 +13495,7 @@ /turf/simulated/floor/tiled/dark, /area/rnd/research/testingrange) "hLT" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -13627,7 +13627,7 @@ /turf/simulated/floor/tiled/techmaint, /area/crew_quarters/barrestroom) "hPW" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -28 }, @@ -13714,7 +13714,7 @@ /obj/structure/cable/green{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -13868,7 +13868,7 @@ /obj/machinery/atmospherics/component/unary/vent_pump/on{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -13891,7 +13891,7 @@ /obj/effect/floor_decal/borderfloorwhite{ dir = 9 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 28 }, /obj/effect/floor_decal/corner/orange/border{ @@ -14206,7 +14206,7 @@ /obj/effect/floor_decal/corner/mauve/bordercorner2{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -14402,7 +14402,7 @@ /obj/machinery/atmospherics/component/unary/vent_pump/on{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -14552,7 +14552,7 @@ dir = 4 }, /obj/structure/closet/firecloset, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -14798,7 +14798,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/security/upperhall) "iwu" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 25 }, /turf/simulated/floor/tiled, @@ -14815,7 +14815,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -14971,7 +14971,7 @@ dir = 1 }, /obj/machinery/light, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -15141,7 +15141,7 @@ /area/tether/surfacebase/surface_three_hall) "iHG" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -15172,7 +15172,7 @@ pixel_y = 4 }, /obj/item/storage/box/masks, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -15983,7 +15983,7 @@ pixel_y = 26 }, /obj/machinery/vending/loadout/accessory, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -16030,7 +16030,7 @@ /obj/effect/floor_decal/spline/plain{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -17145,7 +17145,7 @@ icon_state = "1-2" }, /obj/effect/floor_decal/steeldecal/steel_decals6, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "anomaly_testing"; breach_detection = 0; dir = 8; @@ -17857,7 +17857,7 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -18009,7 +18009,7 @@ /area/tether/surfacebase/security/hos) "kqq" = ( /obj/structure/kitchenspike, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -18408,7 +18408,7 @@ /turf/simulated/floor/outdoors/grass/sif/virgo3b, /area/tether/surfacebase/outside/outside3) "kFH" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/closet, @@ -18916,7 +18916,7 @@ /turf/simulated/floor/tiled/dark, /area/rnd/outpost/xenobiology/outpost_main) "kZj" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -19263,7 +19263,7 @@ /turf/simulated/floor/wood, /area/tether/surfacebase/security/hos) "liW" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/borderfloor{ @@ -19368,7 +19368,7 @@ /turf/simulated/floor/tiled/techfloor, /area/crew_quarters/panic_shelter) "lmG" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 25 }, /turf/simulated/floor/grass, @@ -20436,7 +20436,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_three) "lUD" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "anomaly_testing"; breach_detection = 0; dir = 8; @@ -20554,7 +20554,7 @@ /obj/machinery/atmospherics/component/unary/vent_pump/on{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -21123,7 +21123,7 @@ /turf/simulated/floor/carpet, /area/crew_quarters/heads/hop) "mqP" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -21301,7 +21301,7 @@ dir = 1 }, /obj/structure/closet/firecloset, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/techfloor, @@ -21389,7 +21389,7 @@ /obj/effect/floor_decal/techfloor{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/techfloor, @@ -22420,7 +22420,7 @@ /obj/structure/cable/orange{ icon_state = "1-2" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -22474,7 +22474,7 @@ dir = 4; pixel_x = 11 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -23248,7 +23248,7 @@ /obj/item/roller{ pixel_y = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -23641,7 +23641,7 @@ name = "west bump"; pixel_x = -28 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -23742,7 +23742,7 @@ /turf/simulated/floor/tiled/white, /area/crew_quarters/kitchen) "nJl" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -24724,7 +24724,7 @@ /turf/simulated/floor/tiled/steel_grid, /area/rnd/robotics) "okn" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "pen_nine"; breach_detection = 0; dir = 1; @@ -24766,7 +24766,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/borderfloor{ @@ -25448,7 +25448,7 @@ /obj/effect/floor_decal/spline/plain{ dir = 9 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/dark, @@ -25861,7 +25861,7 @@ /turf/simulated/floor/bluegrid, /area/rnd/robotics/mechbay) "oRr" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "pen_nine"; breach_detection = 0; dir = 1; @@ -26020,7 +26020,7 @@ /turf/simulated/wall, /area/tether/surfacebase/shuttle_pad) "oVJ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 25 }, /turf/simulated/floor/tiled, @@ -26029,7 +26029,7 @@ /obj/effect/floor_decal/industrial/warning{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -26189,7 +26189,7 @@ /obj/effect/floor_decal/spline/plain{ dir = 5 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/dark, @@ -26317,7 +26317,7 @@ pixel_y = 2 }, /obj/item/healthanalyzer, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 32 }, /obj/item/surgical/bioregen, @@ -26348,7 +26348,7 @@ /area/rnd/xenobiology/xenoflora) "pek" = ( /obj/structure/bed/chair, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/carpet/blue, @@ -26987,7 +26987,7 @@ "ptc" = ( /obj/item/bedsheet/captain, /obj/structure/bed/padded, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -27153,7 +27153,7 @@ /obj/effect/floor_decal/corner/red/border{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -27487,7 +27487,7 @@ /obj/effect/floor_decal/techfloor{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -28817,7 +28817,7 @@ /turf/simulated/floor/plating, /area/rnd/outpost/xenobiology/outpost_hallway) "qty" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25; target_temperature = 270 @@ -29376,7 +29376,7 @@ /obj/machinery/photocopier/faxmachine{ department = "Internal Affairs" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -29480,7 +29480,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 20 }, /obj/machinery/atmospherics/component/unary/vent_pump/on{ @@ -29575,7 +29575,7 @@ /turf/simulated/open/virgo3b, /area/tether/surfacebase/outside/outside3) "qUf" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -29825,7 +29825,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_three_hall) "rcn" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -30033,7 +30033,7 @@ /obj/structure/cable/green{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/techfloor/grid, @@ -30231,7 +30231,7 @@ /turf/simulated/floor/tiled/dark, /area/shuttle/tourbus/general) "roN" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -30478,7 +30478,7 @@ /obj/machinery/vending/coffee{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -30994,7 +30994,7 @@ "rOz" = ( /obj/effect/floor_decal/borderfloorwhite, /obj/effect/floor_decal/corner/paleblue/border, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -24 }, @@ -31519,7 +31519,7 @@ /area/triumph/surfacebase/sauna) "sbl" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -31616,7 +31616,7 @@ /obj/structure/cable/green{ icon_state = "1-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -31711,7 +31711,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/shuttle_pad) "shK" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 28 }, @@ -31777,7 +31777,7 @@ /obj/structure/cable/green{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_x = 30; pixel_y = -22 @@ -32090,7 +32090,7 @@ /turf/simulated/floor/tiled/white, /area/crew_quarters/kitchen) "ssc" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -32266,7 +32266,7 @@ /obj/structure/disposalpipe/segment, /obj/structure/table/steel, /obj/item/storage/bag/circuits/basic, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -32736,7 +32736,7 @@ /obj/effect/floor_decal/industrial/warning{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -32750,7 +32750,7 @@ /obj/item/surgical/scalpel, /obj/item/surgical/cautery, /obj/item/autopsy_scanner, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -33165,7 +33165,7 @@ /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/triage) "sZZ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/borderfloor{ @@ -33630,7 +33630,7 @@ /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/triage) "tpC" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ @@ -33664,7 +33664,7 @@ /turf/simulated/floor/grass, /area/hydroponics) "tqA" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 28 }, @@ -33790,7 +33790,7 @@ /turf/simulated/floor/tiled/steel_dirty/virgo3b, /area/tether/surfacebase/outside/outside3) "tvl" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 28 }, /turf/simulated/floor/tiled, @@ -33850,7 +33850,7 @@ /obj/machinery/atmospherics/component/unary/vent_pump/on{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -33870,7 +33870,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/security/briefingroom) "txz" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -33895,7 +33895,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/shuttle_pad) "txP" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 30 }, /turf/simulated/floor/tiled/steel_grid, @@ -34270,7 +34270,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -34508,7 +34508,7 @@ /turf/simulated/floor/tiled/steel_grid, /area/rnd/robotics) "tPc" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 28 }, @@ -34828,7 +34828,7 @@ /turf/simulated/floor/tiled, /area/hallway/lower/third_south) "tWt" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/disposalpipe/segment{ @@ -35236,7 +35236,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_three_hall) "ugQ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "pen_nine"; breach_detection = 0; dir = 1; @@ -35524,7 +35524,7 @@ /area/tether/surfacebase/security/briefingroom) "unZ" = ( /obj/random/junk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/plating, @@ -35796,7 +35796,7 @@ /obj/item/reagent_containers/food/snacks/monkeycube/wrapped, /obj/item/reagent_containers/food/snacks/monkeycube/wrapped, /obj/item/reagent_containers/food/snacks/monkeycube/wrapped, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -36101,7 +36101,7 @@ "uCB" = ( /obj/structure/table/steel, /obj/machinery/recharger, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -36307,7 +36307,7 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/borderfloor{ @@ -36351,7 +36351,7 @@ /obj/structure/disposalpipe/trunk{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 32 }, /obj/machinery/camera/network/medbay{ @@ -36535,7 +36535,7 @@ /turf/simulated/open/virgo3b, /area/tether/surfacebase/outside/outside3) "uQn" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -36585,7 +36585,7 @@ /obj/effect/floor_decal/techfloor{ dir = 6 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -37180,7 +37180,7 @@ /obj/effect/floor_decal/corner/red{ dir = 9 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -37253,7 +37253,7 @@ /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/lobby) "vnr" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/borderfloor{ @@ -37649,7 +37649,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -37714,7 +37714,7 @@ /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/security/iaa/officea) "vEE" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 25 }, /obj/effect/floor_decal/borderfloor{ @@ -37770,7 +37770,7 @@ /obj/structure/cable/green{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 25 }, /obj/item/tool/wrench, @@ -38047,7 +38047,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 10 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -38381,7 +38381,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -40464,7 +40464,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_three_hall) "xcn" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 20 }, /obj/effect/floor_decal/borderfloorblack{ @@ -40501,7 +40501,7 @@ /obj/machinery/atmospherics/component/unary/vent_pump/on{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -41069,7 +41069,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_three_hall) "xuK" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -41136,7 +41136,7 @@ /obj/effect/floor_decal/corner/paleblue/border{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ alarm_id = "anomaly_testing"; breach_detection = 0; dir = 8; @@ -41643,7 +41643,7 @@ name = "north bump"; pixel_y = 28 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -41651,7 +41651,7 @@ /turf/simulated/floor/plating, /area/maintenance/substation/bar) "xIK" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -42179,7 +42179,7 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_three_hall) "xVK" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -42253,7 +42253,7 @@ /area/hydroponics) "xXz" = ( /obj/machinery/papershredder, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -42467,7 +42467,7 @@ /turf/simulated/floor/plating, /area/tether/surfacebase/medical/surgery1) "yeM" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, diff --git a/maps/triumph/engines/burn.dmm b/maps/triumph/engines/burn.dmm index d85344952ae..829ab3a5913 100644 --- a/maps/triumph/engines/burn.dmm +++ b/maps/triumph/engines/burn.dmm @@ -288,7 +288,7 @@ /turf/simulated/floor/tiled/techmaint, /area/engineering/engine_room) "jD" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -422,7 +422,7 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/engineering/engine_room) "pF" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -1099,7 +1099,7 @@ /turf/simulated/floor/reinforced/airless, /area/engineering/engine_room) "Qm" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/window/reinforced{ @@ -1273,7 +1273,7 @@ /area/engineering/engine_room) "UK" = ( /obj/effect/floor_decal/industrial/warning, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/pipe/simple/visible/green{ diff --git a/maps/triumph/engines/fission.dmm b/maps/triumph/engines/fission.dmm index e477013b775..1dd958b5f87 100644 --- a/maps/triumph/engines/fission.dmm +++ b/maps/triumph/engines/fission.dmm @@ -23,7 +23,7 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/engineering/engine_room) "ad" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -494,7 +494,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/techmaint, @@ -739,7 +739,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /obj/machinery/light/small{ dir = 8 diff --git a/maps/triumph/engines/rust.dmm b/maps/triumph/engines/rust.dmm index e8795297c64..0e13e984d9e 100644 --- a/maps/triumph/engines/rust.dmm +++ b/maps/triumph/engines/rust.dmm @@ -306,7 +306,7 @@ frequency = 1438; id_tag = "cooling_out"; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced, /area/engineering/engine_room) @@ -350,7 +350,7 @@ /turf/simulated/floor/reinforced, /area/engineering/engine_room) "eD" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/pipe/simple/visible/green{ @@ -629,7 +629,7 @@ /turf/simulated/floor/plating, /area/engineering/engine_room) "oV" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -1102,7 +1102,7 @@ /turf/simulated/floor/plating, /area/engineering/engine_room) "OF" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -1214,7 +1214,7 @@ frequency = 1438; id_tag = "cooling_out"; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced, /area/engineering/engine_room) diff --git a/maps/triumph/engines/sme.dmm b/maps/triumph/engines/sme.dmm index dcb2adc1a57..f827e010d3c 100644 --- a/maps/triumph/engines/sme.dmm +++ b/maps/triumph/engines/sme.dmm @@ -128,7 +128,7 @@ /turf/simulated/floor, /area/engineering/engine_room) "gC" = ( -/obj/machinery/atmospherics/component/trinary/atmos_filter, +/obj/machinery/atmospherics/component/trinary/filter, /turf/simulated/floor/plating, /area/engineering/engine_room) "hh" = ( @@ -492,7 +492,7 @@ id_tag = "cooling_out"; initialize_directions = 4; pump_direction = 0; - use_power = 1 + on = 1 }, /obj/effect/floor_decal/industrial/warning/cee{ dir = 8 @@ -1086,7 +1086,7 @@ /obj/machinery/atmospherics/pipe/simple/visible/black{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -1420,7 +1420,7 @@ /turf/simulated/floor/plating, /area/engineering/engine_room) "YK" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, diff --git a/maps/triumph/levels/deck1.dmm b/maps/triumph/levels/deck1.dmm index 31060cd94b2..5d2f248e3b6 100644 --- a/maps/triumph/levels/deck1.dmm +++ b/maps/triumph/levels/deck1.dmm @@ -46,7 +46,7 @@ dir = 6 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -551,7 +551,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced/oxygen, /area/engineering/atmos/gas_storage) @@ -584,7 +584,7 @@ /turf/simulated/floor/plating, /area/maintenance/engi_engine) "bH" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/plating, @@ -1395,7 +1395,7 @@ pixel_x = 6; pixel_y = 8 }, -/obj/item/analyzer{ +/obj/item/atmos_analyzer{ pixel_x = -5; pixel_y = 8 }, @@ -1481,7 +1481,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced/phoron, /area/engineering/atmos/gas_storage) @@ -1569,7 +1569,7 @@ /turf/simulated/floor/carpet/blucarpet, /area/engineering/break_room) "fi" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -1833,7 +1833,7 @@ icon_state = "map_vent_out"; pressure_checks = 0; pressure_checks_default = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/bluegrid{ initial_gas_mix = "n2=100;TEMP=80"; @@ -2179,7 +2179,7 @@ "hi" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -2586,7 +2586,7 @@ /obj/item/flash, /obj/item/flash, /obj/structure/table/steel, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -2668,7 +2668,7 @@ /turf/simulated/floor/plating, /area/maintenance/trash_pit) "iO" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -2956,7 +2956,7 @@ /turf/simulated/floor/tiled/white, /area/engineering/foyer_mezzenine) "jP" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/component/unary/freezer{ @@ -3620,7 +3620,7 @@ /obj/effect/floor_decal/techfloor/orange{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -4582,7 +4582,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -4757,7 +4757,7 @@ /turf/simulated/floor/airless/ceiling, /area/engineering/portnacelle) "qp" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -5293,7 +5293,7 @@ /turf/simulated/floor/tiled/techmaint, /area/engineering/atmos) "rU" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -5411,7 +5411,7 @@ "sk" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -5585,7 +5585,7 @@ /area/engineering/atmos/gas_storage) "sS" = ( /obj/structure/catwalk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -5609,8 +5609,7 @@ dir = 8 }, /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ - dir = 8; - scrubbing_gas = list(/datum/gas/carbon_dioxide) + dir = 8 }, /turf/simulated/floor/tiled/techfloor, /area/tcommsat/computer) @@ -5935,7 +5934,7 @@ /turf/simulated/floor/tiled, /area/engineering/hallway/lower) "tP" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -6015,7 +6014,7 @@ /obj/structure/cable/green{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -6254,7 +6253,7 @@ /obj/effect/floor_decal/techfloor/orange{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -6516,7 +6515,7 @@ /obj/effect/floor_decal/techfloor/orange{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -6805,7 +6804,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced/n20, /area/engineering/atmos/gas_storage) @@ -6978,7 +6977,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/bluegrid{ initial_gas_mix = "n2=100;TEMP=80"; @@ -7101,7 +7100,7 @@ }, /area/tcommsat/chamber) "xU" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -7332,7 +7331,7 @@ /turf/simulated/floor/plating, /area/maintenance/engineering) "yM" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/techfloor/orange{ @@ -7463,7 +7462,7 @@ /turf/simulated/floor/tiled/techmaint, /area/engineering/atmos) "zi" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -7679,7 +7678,7 @@ /obj/effect/floor_decal/techfloor/orange{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -8020,7 +8019,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/power/apc{ @@ -8181,7 +8180,7 @@ /turf/simulated/floor/tiled/techmaint, /area/engineering/locker_room) "BG" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/pipe/simple/visible/yellow, @@ -8374,7 +8373,7 @@ /turf/simulated/floor/plating, /area/station/stairs_one) "Co" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/light{ @@ -9304,7 +9303,7 @@ /turf/simulated/floor/tiled/steel_dirty, /area/engineering/atmos/storage) "Fu" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -9506,7 +9505,7 @@ /turf/simulated/floor/tiled/techmaint, /area/engineering/atmos/storage) "Gd" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -9715,8 +9714,7 @@ /area/engineering/foyer_mezzenine) "GS" = ( /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ - dir = 8; - scrubbing_gas = list(/datum/gas/carbon_dioxide) + dir = 8 }, /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 6 @@ -9862,7 +9860,7 @@ /obj/effect/floor_decal/techfloor/orange{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -9953,10 +9951,10 @@ dir = 8; layer = 2.9 }, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/healthanalyzer, -/obj/item/analyzer, -/obj/item/analyzer, +/obj/item/atmos_analyzer, +/obj/item/atmos_analyzer, /obj/machinery/light/small{ dir = 1 }, @@ -10268,7 +10266,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/white, @@ -11163,7 +11161,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced/airmix, /area/engineering/atmos/gas_storage) @@ -11181,7 +11179,7 @@ /turf/simulated/floor/tiled/techmaint, /area/engineering/atmos) "LL" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -11446,7 +11444,7 @@ /turf/simulated/floor/tiled/techmaint, /area/engineering/storage) "MK" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -11858,7 +11856,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced/carbon_dioxide, /area/engineering/atmos/gas_storage) @@ -11906,7 +11904,7 @@ /turf/simulated/floor/plating, /area/maintenance/engi_engine) "On" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -12715,7 +12713,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/reinforced/nitrogen, /area/engineering/atmos/gas_storage) @@ -12766,8 +12764,7 @@ /area/engineering/atmos) "Rf" = ( /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ - dir = 8; - scrubbing_gas = list(/datum/gas/carbon_dioxide) + dir = 8 }, /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 5 @@ -13704,7 +13701,7 @@ /area/crew_quarters/heads/chief) "Un" = ( /obj/structure/catwalk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -14015,7 +14012,7 @@ /obj/structure/cable/green{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -14215,7 +14212,7 @@ /turf/simulated/floor/tiled, /area/engineering/hallway/lower) "VX" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -14385,7 +14382,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -14480,7 +14477,7 @@ /turf/simulated/floor/tiled, /area/engineering/hallway/lower) "WM" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/techfloor/orange{ @@ -14673,7 +14670,7 @@ /obj/effect/floor_decal/techfloor/orange{ dir = 6 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -15320,7 +15317,7 @@ /turf/simulated/floor/plating, /area/tcommsat/entrance) "Zx" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -15454,7 +15451,7 @@ /turf/simulated/floor/tiled/techmaint, /area/engineering/atmos) "ZP" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, diff --git a/maps/triumph/levels/deck2.dmm b/maps/triumph/levels/deck2.dmm index 29261a186cd..84d913e9bef 100644 --- a/maps/triumph/levels/deck2.dmm +++ b/maps/triumph/levels/deck2.dmm @@ -146,7 +146,7 @@ /obj/structure/table/standard, /obj/item/coin/silver, /obj/item/coin/silver, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -436,7 +436,7 @@ /turf/simulated/floor/tiled/freezer, /area/crew_quarters/freezer) "bi" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -762,7 +762,7 @@ /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_2) "cc" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/techfloor{ @@ -951,7 +951,7 @@ pixel_x = -4; pixel_y = 12 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/cable/green{ @@ -963,7 +963,7 @@ /turf/simulated/floor/lino, /area/crew_quarters/coffee_shop) "cD" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/cable/green{ @@ -1006,7 +1006,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/catwalk, @@ -1409,7 +1409,7 @@ /turf/simulated/floor/tiled, /area/hallway/primary/starboard) "dU" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -1521,7 +1521,7 @@ /turf/simulated/floor/plating, /area/maintenance/bar/lower) "ek" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -1562,7 +1562,7 @@ /turf/simulated/floor/tiled, /area/hallway/primary/port) "eq" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -1885,7 +1885,7 @@ /turf/simulated/floor/carpet/purcarpet, /area/crew_quarters/sleep/Dorm_8) "ft" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/techfloor{ @@ -1926,7 +1926,7 @@ /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_5) "fy" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -1934,7 +1934,7 @@ /turf/simulated/floor/tiled/white, /area/crew_quarters/sleep/Dorm_10) "fz" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/borderfloor{ @@ -2308,7 +2308,7 @@ /turf/simulated/floor/plating, /area/maintenance/bar/lower) "gN" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -2357,7 +2357,7 @@ /obj/structure/cable{ icon_state = "1-4" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -2576,7 +2576,7 @@ /obj/machinery/atmospherics/component/unary/vent_pump/on{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -2640,7 +2640,7 @@ /turf/simulated/floor/tiled/monotile, /area/hallway/primary/port) "hR" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -2757,7 +2757,7 @@ /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_5) "io" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -3036,7 +3036,7 @@ /turf/simulated/floor/tiled, /area/hallway/primary/starboard) "iZ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/vending/loadout/costume, @@ -3371,7 +3371,7 @@ /obj/effect/floor_decal/techfloor{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -3525,7 +3525,7 @@ /turf/simulated/floor/wood, /area/crew_quarters/recreation_area_hallway) "kB" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -3600,7 +3600,7 @@ /turf/simulated/floor/tiled, /area/triumph/surfacebase/mining_main/refinery) "kL" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -3681,7 +3681,7 @@ /obj/effect/floor_decal/corner/lime/border{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -3864,7 +3864,7 @@ /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_2) "lD" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/techfloor{ @@ -3932,7 +3932,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 27 }, /turf/simulated/floor/tiled, @@ -4553,7 +4553,7 @@ desc = "There's a tag on this pengiun that says Skipper. You're not even sure where the chef found them."; name = "Skipper" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -4702,7 +4702,7 @@ /turf/simulated/floor/plating, /area/maintenance/bar/lower) "oq" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -5903,7 +5903,7 @@ /turf/simulated/floor/wood, /area/crew_quarters/recreation_area) "rN" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/component/unary/vent_pump/on, @@ -5915,7 +5915,7 @@ /turf/simulated/floor/wood, /area/crew_quarters/recreation_area_hallway) "rP" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -5943,7 +5943,7 @@ /turf/simulated/floor/tiled, /area/crew_quarters/bar) "rT" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -6004,7 +6004,7 @@ /turf/simulated/floor/airless, /area/space) "sd" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -6153,7 +6153,7 @@ /turf/simulated/floor/tiled, /area/quartermaster/foyer) "sA" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -6665,7 +6665,7 @@ /turf/simulated/floor/wood, /area/crew_quarters/recreation_area_hallway) "ue" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/white, @@ -6753,7 +6753,7 @@ /turf/simulated/floor/wood, /area/quartermaster/foyer) "up" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/light{ @@ -7691,7 +7691,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -7903,7 +7903,7 @@ dir = 4 }, /obj/structure/catwalk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/disposalpipe/segment{ @@ -7961,7 +7961,7 @@ /turf/simulated/floor/tiled/white, /area/station/stairs_two) "xy" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -8087,7 +8087,7 @@ /turf/simulated/floor/crystal, /area/station/stairs_two) "xR" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -8172,7 +8172,7 @@ /turf/simulated/floor/plating, /area/maintenance/dormitory) "yi" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -8194,7 +8194,7 @@ /obj/structure/cable/green{ icon_state = "1-2" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -8911,7 +8911,7 @@ /turf/simulated/floor/tiled, /area/crew_quarters/lounge/kitchen_freezer) "Ac" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -8990,7 +8990,7 @@ /turf/simulated/floor/carpet/purcarpet, /area/crew_quarters/sleep/Dorm_5) "An" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -9007,7 +9007,7 @@ /turf/simulated/floor/tiled/dark, /area/vacant/vacant_shop) "Ap" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/cable{ @@ -9267,7 +9267,7 @@ /turf/simulated/floor/plating, /area/triumph/surfacebase/bar_backroom) "Bg" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -10204,7 +10204,7 @@ /turf/simulated/floor/tiled/dark, /area/crew_quarters/kitchen) "Eo" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/appliance/cooker/oven, @@ -10369,7 +10369,7 @@ /turf/simulated/floor/airless/ceiling, /area/space) "EN" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -10669,7 +10669,7 @@ /turf/simulated/floor/tiled, /area/triumph/surfacebase/mining_main/storage) "FK" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -10962,7 +10962,7 @@ /turf/simulated/floor/plating, /area/maintenance/dormitory) "GI" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/bed/chair/comfy/black, @@ -11278,7 +11278,7 @@ /turf/simulated/floor/wood, /area/crew_quarters/recreation_area_hallway) "HF" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -11519,7 +11519,7 @@ /turf/simulated/floor/tiled, /area/triumph/surfacebase/mining_main/storage) "Iw" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/wall/prepainted/cargo, @@ -11585,7 +11585,7 @@ /turf/simulated/floor/tiled, /area/hallway/primary/port) "II" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/techfloor{ @@ -11849,7 +11849,7 @@ "Jz" = ( /obj/machinery/atmospherics/pipe/simple/hidden, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -12165,7 +12165,7 @@ /turf/simulated/floor/wood, /area/triumph/surfacebase/bar_backroom) "Kq" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/camera/network/civilian, @@ -12349,7 +12349,7 @@ /turf/simulated/floor/tiled/dark, /area/vacant/vacant_shop) "KR" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -12369,7 +12369,7 @@ /turf/simulated/floor/tiled/freezer, /area/crew_quarters/freezer) "KV" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/camera/network/civilian, @@ -12771,7 +12771,7 @@ "Mk" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -13194,7 +13194,7 @@ /turf/simulated/floor/wood, /area/crew_quarters/recreation_area_hallway) "Nw" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -13202,7 +13202,7 @@ /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_2) "Nx" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -13317,7 +13317,7 @@ /turf/simulated/floor/wood, /area/crew_quarters/coffee_shop) "NS" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/closet/jcloset, @@ -13791,7 +13791,7 @@ /turf/simulated/floor/tiled/dark, /area/crew_quarters/bar) "Pm" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -14122,7 +14122,7 @@ /turf/simulated/floor/airless, /area/space) "Qk" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -14283,7 +14283,7 @@ /turf/simulated/floor/tiled, /area/crew_quarters/bar) "QS" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/plating, @@ -14295,7 +14295,7 @@ /turf/simulated/floor/tiled/white, /area/crew_quarters/sleep/Dorm_1) "QU" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/ore_box, @@ -14632,7 +14632,7 @@ dir = 4 }, /obj/structure/catwalk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/disposalpipe/segment{ @@ -14672,7 +14672,7 @@ name = "Distribution Loop" }, /obj/machinery/atmospherics/pipe/manifold/hidden, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -14943,7 +14943,7 @@ /turf/simulated/floor/tiled/dark, /area/crew_quarters/bar) "SJ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -15128,7 +15128,7 @@ /turf/simulated/floor/plating, /area/hydroponics) "Tl" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -15251,7 +15251,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/table/fancyblack, @@ -15383,7 +15383,7 @@ /turf/simulated/floor/tiled, /area/hallway/primary/port) "Ue" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -15429,7 +15429,7 @@ /turf/simulated/floor/tiled/techfloor, /area/crew_quarters/sleep/cryo) "Um" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -15652,7 +15652,7 @@ /turf/simulated/floor/carpet/purcarpet, /area/crew_quarters/coffee_shop) "UR" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -15710,7 +15710,7 @@ /turf/simulated/floor/tiled, /area/crew_quarters/lounge/kitchen_freezer) "UY" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/cable{ @@ -15995,7 +15995,7 @@ /turf/simulated/floor/tiled/white, /area/crew_quarters/showers) "VQ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -16219,7 +16219,7 @@ /turf/simulated/floor/wood, /area/crew_quarters/recreation_area_hallway) "Wy" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/plating, @@ -16451,7 +16451,7 @@ /turf/simulated/floor/tiled, /area/quartermaster/warehouse) "Xk" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/pipe/simple/hidden{ @@ -17220,7 +17220,7 @@ /turf/simulated/floor/tiled/white, /area/crew_quarters/showers) "ZI" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, diff --git a/maps/triumph/levels/deck3.dmm b/maps/triumph/levels/deck3.dmm index bada889d3b6..ab9a0919425 100644 --- a/maps/triumph/levels/deck3.dmm +++ b/maps/triumph/levels/deck3.dmm @@ -253,7 +253,7 @@ dir = 1 }, /obj/effect/floor_decal/steeldecal/steel_decals_central6, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -552,7 +552,7 @@ /turf/simulated/floor/tiled/white, /area/medical/psych_ward) "azy" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/borderfloor{ @@ -1060,7 +1060,7 @@ /turf/simulated/floor/tiled/white, /area/medical/psych_ward) "aTQ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -1159,7 +1159,7 @@ /turf/simulated/floor/tiled/techfloor, /area/rnd/workshop) "aZk" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/closet, @@ -1575,7 +1575,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals10{ dir = 9 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -1630,7 +1630,7 @@ }, /obj/effect/floor_decal/borderfloorwhite, /obj/effect/floor_decal/corner/blue/border, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -2014,7 +2014,7 @@ /area/rnd/hallway) "bOw" = ( /obj/structure/closet/secure_closet/personal/patient, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -2052,7 +2052,7 @@ /turf/simulated/floor/airless, /area/rnd/test_area) "bQa" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -2204,7 +2204,7 @@ /turf/simulated/floor/wood, /area/medical/medbay4) "bXJ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/light{ @@ -2372,7 +2372,7 @@ "ccN" = ( /obj/machinery/atmospherics/component/unary/vent_pump{ icon_state = "map_vent_out"; - use_power = 1 + on = 1 }, /turf/simulated/floor/bluegrid{ initial_gas_mix = "n2=500;TEMP=80"; @@ -2647,7 +2647,7 @@ /obj/machinery/atmospherics/component/unary/vent_pump/on{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -2755,7 +2755,7 @@ /obj/effect/floor_decal/corner/mauve/border{ dir = 9 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -2869,7 +2869,7 @@ /turf/simulated/floor/tiled, /area/rnd/test_area) "cyP" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -3520,7 +3520,7 @@ /obj/machinery/atmospherics/component/unary/vent_pump/on{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -3756,7 +3756,7 @@ /turf/simulated/floor/tiled, /area/rnd/test_area) "djF" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -3881,7 +3881,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/borderfloorwhite{ @@ -4048,7 +4048,7 @@ /obj/machinery/portable_atmospherics/canister/carbon_dioxide{ start_pressure = 8500 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -4164,7 +4164,7 @@ /turf/simulated/floor/tiled/white, /area/medical/exam_room/exam_1) "dEU" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/closet/emcloset, @@ -4194,7 +4194,7 @@ /turf/simulated/floor/tiled, /area/rnd/research_foyer_auxiliary) "dFm" = ( -/obj/machinery/alarm/monitor/isolation{ +/obj/machinery/air_alarm/monitor/isolation{ alarm_id = "isolation_one"; dir = 8; pixel_x = 22 @@ -4287,7 +4287,7 @@ /turf/simulated/wall/prepainted/medical, /area/medical/surgery) "dIx" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/white, @@ -4336,7 +4336,7 @@ /area/medical/morgue) "dKT" = ( /obj/structure/closet/secure_closet/personal/patient, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -4631,7 +4631,7 @@ /turf/simulated/shuttle/wall/voidcraft/blue, /area/shuttle/emt/general) "dUp" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/vending/coffee, @@ -4657,7 +4657,7 @@ /area/rnd/breakroom) "dXW" = ( /obj/machinery/atmospherics/component/unary/vent_scrubber/on, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/closet/secure_closet/medical3{ @@ -5330,7 +5330,7 @@ /obj/effect/floor_decal/techfloor{ dir = 10 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -5415,7 +5415,7 @@ /obj/effect/floor_decal/industrial/danger{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -5496,7 +5496,7 @@ /turf/simulated/floor/tiled/techfloor, /area/rnd/xenobiology/xenoflora_storage) "eLe" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/computer/crew, @@ -5540,7 +5540,7 @@ /obj/effect/floor_decal/corner/blue/border{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -5932,7 +5932,7 @@ /obj/effect/floor_decal/industrial/warning/dust{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/light{ @@ -6006,7 +6006,7 @@ /turf/simulated/floor/tiled, /area/rnd/research_foyer_auxiliary) "fcw" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/plating, @@ -6193,7 +6193,7 @@ /turf/simulated/wall/prepainted/science, /area/rnd/xenobiology/xenoflora_storage) "fmp" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -6308,7 +6308,7 @@ /turf/simulated/floor/tiled/white, /area/shuttle/emt/general) "frz" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -6747,7 +6747,7 @@ /area/hallway/primary/port) "fJj" = ( /obj/machinery/optable, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -6851,7 +6851,7 @@ /area/assembly/robotics) "fNX" = ( /obj/structure/catwalk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/plating, @@ -7397,7 +7397,7 @@ /turf/simulated/floor/tiled/white, /area/crew_quarters/medbreak/surgery) "gkq" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/organ_printer/flesh, @@ -7733,7 +7733,7 @@ /turf/simulated/floor/plating, /area/medical/chemistry) "gxm" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/borderfloor{ @@ -8017,7 +8017,7 @@ /turf/simulated/floor/airless, /area/space) "gMn" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -8200,7 +8200,7 @@ /obj/structure/cable/green{ icon_state = "1-2" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -8503,7 +8503,7 @@ /turf/simulated/floor/tiled, /area/rnd/rdoffice) "hjT" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -8810,7 +8810,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/corner/beige/full{ @@ -9530,7 +9530,7 @@ /turf/simulated/floor/tiled/old_cargo/purple, /area/assembly/robotics/surgery) "hUa" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -10001,7 +10001,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/corner/blue{ @@ -10512,7 +10512,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /obj/structure/window/reinforced, /turf/simulated/floor/bluegrid{ @@ -10602,7 +10602,7 @@ /obj/item/defib_kit/loaded{ pixel_y = 3 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -10839,7 +10839,7 @@ /turf/simulated/floor/tiled, /area/rnd/research_foyer_auxiliary) "iUD" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -10964,7 +10964,7 @@ /turf/simulated/floor/tiled, /area/hallway/primary/aft) "iXI" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -11142,7 +11142,7 @@ /turf/simulated/floor/tiled, /area/hallway/primary/port) "jgb" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -11194,7 +11194,7 @@ /area/medical/patient_wing) "jin" = ( /obj/structure/closet/secure_closet/personal/patient, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -11842,7 +11842,7 @@ /turf/simulated/floor/tiled/white, /area/medical/virologyisolation) "jFD" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -11880,7 +11880,7 @@ /obj/effect/floor_decal/corner/blue{ dir = 10 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -11898,7 +11898,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -12225,7 +12225,7 @@ /turf/simulated/floor/tiled, /area/hallway/primary/port) "jYw" = ( -/obj/machinery/alarm/monitor/isolation{ +/obj/machinery/air_alarm/monitor/isolation{ alarm_id = "isolation_two"; dir = 8; pixel_x = 22 @@ -12368,7 +12368,7 @@ /turf/simulated/floor/tiled, /area/medical/sleeper) "kfs" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -12430,7 +12430,7 @@ /turf/simulated/floor/tiled/white, /area/rnd/research_restroom) "kjr" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -12754,7 +12754,7 @@ /turf/simulated/floor/plating, /area/maintenance/fpmaint2) "kzM" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/techfloor{ @@ -12777,7 +12777,7 @@ /turf/simulated/floor/airless, /area/rnd/xenobiology/xenoflora/lab_atmos) "kBS" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -12828,7 +12828,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/white, @@ -13152,7 +13152,7 @@ /obj/structure/cable/green{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/light{ @@ -13191,7 +13191,7 @@ /obj/structure/window/reinforced{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -13440,7 +13440,7 @@ /turf/simulated/floor/tiled, /area/triumph/station/stairs_three) "lcH" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -13550,7 +13550,7 @@ /turf/simulated/floor/plating, /area/maintenance/medbay/aft) "ljT" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -13636,7 +13636,7 @@ /turf/simulated/floor/tiled/white, /area/medical/medbay4) "log" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/item/clothing/suit/straight_jacket, @@ -13868,7 +13868,7 @@ /obj/effect/floor_decal/techfloor{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -14189,7 +14189,7 @@ /turf/simulated/floor/carpet/blue, /area/crew_quarters/medbreak/surgery) "lIJ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -14638,7 +14638,7 @@ /turf/simulated/floor/tiled/white, /area/shuttle/emt/general) "mgX" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -14793,7 +14793,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -14883,7 +14883,7 @@ /area/rnd/research_foyer_auxiliary) "mts" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/black, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -14938,7 +14938,7 @@ /area/maintenance/fpmaint2) "mwF" = ( /obj/machinery/door/firedoor, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -14997,7 +14997,7 @@ /area/medical/psych_ward) "mzm" = ( /obj/structure/reagent_dispensers/fueltank, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -15174,7 +15174,7 @@ /turf/simulated/floor/grass, /area/medical/psych_ward) "mGe" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -15323,7 +15323,7 @@ /obj/machinery/atmospherics/pipe/manifold/visible/red{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -15493,7 +15493,7 @@ /obj/effect/floor_decal/techfloor{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/techfloor, @@ -15709,7 +15709,7 @@ /turf/simulated/floor/plating, /area/maintenance/fpmaint2) "nbe" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -15980,7 +15980,7 @@ /turf/simulated/floor/tiled, /area/holodeck_control) "npY" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/camera/network/research, @@ -16249,7 +16249,7 @@ /turf/simulated/floor/plating, /area/rnd/test_area) "nBw" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -16599,7 +16599,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -16819,7 +16819,7 @@ /turf/simulated/floor/plating, /area/rnd/misc_lab) "nYo" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/table/reinforced, @@ -17832,7 +17832,7 @@ /area/medical/surgeryprep) "oOE" = ( /obj/structure/closet/secure_closet/personal/patient, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -18170,7 +18170,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/black{ dir = 4 }, -/obj/machinery/alarm/monitor/isolation{ +/obj/machinery/air_alarm/monitor/isolation{ alarm_id = "xenopenvent"; pixel_y = 24 }, @@ -18337,7 +18337,7 @@ /area/rnd/xenobiology) "pgV" = ( /obj/machinery/computer/rdconsole/robotics, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -19946,7 +19946,7 @@ /turf/simulated/floor/carpet/tealcarpet, /area/medical/patient_a) "qrK" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -20440,7 +20440,7 @@ /obj/structure/toilet{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/corner/blue{ @@ -20731,7 +20731,7 @@ "qSo" = ( /obj/machinery/iv_drip, /obj/effect/floor_decal/industrial/outline/blue, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -20874,7 +20874,7 @@ /turf/simulated/floor/tiled/white, /area/medical/chemistry) "qYG" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -21133,7 +21133,7 @@ /turf/simulated/floor/tiled, /area/rnd/storage) "rfH" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/table/steel_reinforced, @@ -21155,7 +21155,7 @@ /obj/effect/floor_decal/corner/mauve/border{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/item/storage/box/botanydisk, @@ -21345,7 +21345,7 @@ /turf/simulated/floor/tiled, /area/hallway/primary/aft) "rsn" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -21459,7 +21459,7 @@ /obj/structure/flora/pottedplant{ icon_state = "plant-10" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -22640,7 +22640,7 @@ /area/medical/medbay4) "syC" = ( /obj/machinery/atmospherics/component/unary/vent_scrubber/on, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/white, @@ -23119,7 +23119,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/yellow{ dir = 10 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -23467,9 +23467,9 @@ /obj/item/clothing/gloves/botanic_leather, /obj/item/clothing/gloves/botanic_leather, /obj/item/clothing/gloves/botanic_leather, -/obj/item/analyzer/plant_analyzer, -/obj/item/analyzer/plant_analyzer, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, +/obj/item/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/tool/wirecutters/clippers/trimmers, /obj/item/tool/wirecutters/clippers/trimmers, /obj/item/material/knife/machete/hatchet, @@ -23499,7 +23499,7 @@ /turf/simulated/floor/tiled/white, /area/medical/medbay4) "thZ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -23755,7 +23755,7 @@ /turf/simulated/floor/plating, /area/maintenance/research) "tut" = ( -/obj/machinery/alarm/monitor/isolation{ +/obj/machinery/air_alarm/monitor/isolation{ alarm_id = "isolation_two"; dir = 8; pixel_x = 22 @@ -23816,7 +23816,7 @@ /area/rnd/storage) "tys" = ( /obj/structure/catwalk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -24074,7 +24074,7 @@ /turf/simulated/floor/tiled, /area/medical/reception) "tIG" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/bed/chair/office/dark{ @@ -24339,7 +24339,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -24842,7 +24842,7 @@ "ukZ" = ( /obj/effect/floor_decal/borderfloorwhite, /obj/effect/floor_decal/corner/blue/border, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -24925,7 +24925,7 @@ dir = 4 }, /obj/machinery/atmospherics/component/unary/vent_pump/on, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -25101,7 +25101,7 @@ /turf/simulated/floor/tiled, /area/hallway/primary/aft) "uxG" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -25210,7 +25210,7 @@ /obj/item/folder/red{ pixel_y = 3 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -25596,7 +25596,7 @@ /turf/simulated/floor/tiled, /area/rnd/reception_desk) "uWQ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -25620,7 +25620,7 @@ /turf/simulated/floor/plating, /area/maintenance/fpmaint2) "uXW" = ( -/obj/machinery/alarm/monitor/isolation{ +/obj/machinery/air_alarm/monitor/isolation{ alarm_id = "isolation_one"; dir = 8; pixel_x = 22 @@ -25746,7 +25746,7 @@ /turf/simulated/floor/plating, /area/maintenance/medbay/fore) "vdg" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/plating, @@ -26028,7 +26028,7 @@ /turf/simulated/floor/tiled, /area/medical/medbay_primary_storage) "vrn" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -26880,7 +26880,7 @@ /turf/simulated/floor/tiled/white, /area/medical/exam_room/exam_1) "waa" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -26993,7 +26993,7 @@ /obj/effect/floor_decal/borderfloorwhite{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -27142,14 +27142,14 @@ /turf/simulated/floor/tiled, /area/hallway/primary/aft) "wgC" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, /turf/simulated/floor/tiled, /area/medical/resleeving) "wgF" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -27474,7 +27474,7 @@ /turf/simulated/floor/tiled/white, /area/medical/psych_ward) "wzf" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -28093,7 +28093,7 @@ pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; - use_power = 1 + on = 1 }, /turf/simulated/floor/bluegrid, /area/rnd/xenobiology) @@ -28153,7 +28153,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/borderfloorwhite{ @@ -28570,7 +28570,7 @@ "xvK" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /obj/machinery/light/small, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -28891,7 +28891,7 @@ /area/rnd/anomaly_lab/containment_one) "xID" = ( /obj/machinery/papershredder, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -28965,7 +28965,7 @@ /turf/simulated/floor/tiled/white, /area/medical/surgeryprep) "xLu" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -29177,7 +29177,7 @@ /turf/simulated/floor/plating, /area/maintenance/substation/medical) "xUb" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -29284,7 +29284,7 @@ /turf/simulated/floor/tiled, /area/teleporter/departing) "xYz" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -29302,8 +29302,8 @@ /obj/item/material/minihoe, /obj/item/shovel/spade, /obj/item/shovel/spade, -/obj/item/analyzer/plant_analyzer, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/tool/wirecutters/clippers/trimmers, /obj/structure/catwalk, /turf/simulated/floor/plating, @@ -29445,7 +29445,7 @@ /turf/simulated/floor/tiled, /area/rnd/hallway) "yjy" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, diff --git a/maps/triumph/levels/deck4.dmm b/maps/triumph/levels/deck4.dmm index 6b13172895a..7c5114140f5 100644 --- a/maps/triumph/levels/deck4.dmm +++ b/maps/triumph/levels/deck4.dmm @@ -397,7 +397,7 @@ /area/hydroponics/garden) "aqH" = ( /obj/random/maintenance/security, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -25 }, @@ -728,7 +728,7 @@ /obj/effect/floor_decal/techfloor/orange{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -740,7 +740,7 @@ /obj/item/book/manual/standard_operating_procedure, /obj/item/book/manual/command_guide, /obj/item/book/manual/standard_operating_procedure, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/carpet, @@ -777,7 +777,7 @@ /obj/effect/floor_decal/corner/red/border{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/dark, @@ -847,7 +847,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -1149,7 +1149,7 @@ /turf/simulated/floor/plating, /area/maintenance/security/starboard) "aKC" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -1906,7 +1906,7 @@ /area/shuttle/courser/cockpit) "bnc" = ( /obj/machinery/light, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -23 }, @@ -1996,7 +1996,7 @@ }, /obj/effect/floor_decal/steeldecal/steel_decals5, /obj/machinery/light/small, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -2467,8 +2467,8 @@ /obj/item/material/minihoe, /obj/item/shovel/spade, /obj/item/shovel/spade, -/obj/item/analyzer/plant_analyzer, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/tool/wirecutters/clippers/trimmers, /turf/simulated/floor/grass, /area/hydroponics/garden) @@ -2559,7 +2559,7 @@ /obj/machinery/camera/network/security{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -2778,7 +2778,7 @@ /area/lawoffice) "bSd" = ( /obj/effect/floor_decal/techfloor, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -3027,7 +3027,7 @@ }, /obj/item/clothing/under/swimsuit/stripper/cowbikini, /obj/item/reagent_containers/food/drinks/cans/waterbottle, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -3177,7 +3177,7 @@ dir = 9 }, /obj/structure/closet/lawcloset, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/power/apc{ @@ -3506,7 +3506,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -3665,7 +3665,7 @@ /obj/structure/toilet{ pixel_y = 10 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -3683,7 +3683,7 @@ "cCd" = ( /obj/machinery/portable_atmospherics/canister/air/airlock, /obj/machinery/atmospherics/portables_connector, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -3850,7 +3850,7 @@ /obj/machinery/door/window/northleft{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled, @@ -3943,7 +3943,7 @@ "cPP" = ( /obj/structure/table/steel, /obj/item/storage/box/donut, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -4044,7 +4044,7 @@ /turf/simulated/floor/tiled/dark, /area/security/brig) "cTV" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -4349,7 +4349,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals9{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -4560,8 +4560,8 @@ /obj/item/material/minihoe, /obj/item/shovel/spade, /obj/item/shovel/spade, -/obj/item/analyzer/plant_analyzer, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/tool/wirecutters/clippers/trimmers, /turf/simulated/floor/grass, /area/hydroponics/garden) @@ -4974,7 +4974,7 @@ dir = 8 }, /obj/effect/floor_decal/industrial/outline, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -5231,7 +5231,7 @@ /turf/simulated/floor/grass, /area/hydroponics/garden) "dvz" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -5289,7 +5289,7 @@ /area/hydroponics/garden) "dyP" = ( /obj/machinery/light, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -23 }, @@ -5307,7 +5307,7 @@ /turf/simulated/floor/plating, /area/maintenance/security/starboard) "dzM" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -5873,7 +5873,7 @@ /area/library) "dRO" = ( /obj/structure/catwalk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/plating, @@ -6290,7 +6290,7 @@ /turf/simulated/floor/tiled/dark, /area/hallway/secondary/civilian_hallway_mid) "eeY" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -6583,7 +6583,7 @@ /turf/simulated/floor/grass, /area/hydroponics/garden) "evm" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -6854,7 +6854,7 @@ /turf/simulated/floor/plating, /area/maintenance/security/starboard) "eCd" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/light{ @@ -7433,7 +7433,7 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/exploration/excursion_dock) "eUo" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -7775,7 +7775,7 @@ /obj/effect/floor_decal/techfloor{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/steeldecal/steel_decals9, @@ -7785,7 +7785,7 @@ /turf/simulated/floor/tiled, /area/security/lobby) "fjs" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -7894,7 +7894,7 @@ /turf/simulated/floor/tiled, /area/shuttle/excursion/general) "fmh" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -8361,7 +8361,7 @@ /turf/simulated/floor/wood, /area/hallway/secondary/docking_hallway) "fBI" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -8635,7 +8635,7 @@ /turf/simulated/floor/tiled/old_tile/red, /area/maintenance/security/starboard) "fNW" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -9013,7 +9013,7 @@ /area/security/nuke_storage) "fZF" = ( /obj/structure/catwalk, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -10054,7 +10054,7 @@ /turf/simulated/floor/tiled/dark, /area/hallway/secondary/docking_hallway) "gLP" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/monotile, @@ -10434,7 +10434,7 @@ "gYT" = ( /obj/structure/table/woodentable, /obj/machinery/recharger, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -10750,7 +10750,7 @@ /turf/simulated/floor/tiled/monotile, /area/security/lobby) "hik" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -10965,7 +10965,7 @@ /turf/simulated/floor/plating, /area/maintenance/chapel) "hoc" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -11168,7 +11168,7 @@ "hvx" = ( /obj/effect/floor_decal/borderfloorblack, /obj/effect/floor_decal/corner/red/border, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -11769,7 +11769,7 @@ /obj/structure/cable/green{ icon_state = "0-4" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -12104,7 +12104,7 @@ /turf/simulated/floor/tiled, /area/hallway/primary/aft) "ihG" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -12259,7 +12259,7 @@ /area/security/brig) "ilO" = ( /obj/machinery/atmospherics/component/unary/vent_pump/on, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -12665,7 +12665,7 @@ /turf/simulated/floor/wood, /area/triumph/surfacebase/sauna) "izz" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22; target_temperature = 312.15 @@ -13015,7 +13015,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -13214,7 +13214,7 @@ /turf/simulated/floor/tiled/monotile, /area/security/lobby) "iTu" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/atmospherics/component/unary/vent_scrubber/on, @@ -13646,7 +13646,7 @@ /turf/simulated/floor/tiled, /area/maintenance/tool_storage) "jkE" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -14274,7 +14274,7 @@ pixel_x = -3; pixel_y = 7 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -14285,7 +14285,7 @@ "jIp" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; frequency = 1441; pixel_x = -23 @@ -14443,7 +14443,7 @@ /area/exploration/excursion_dock) "jMN" = ( /obj/structure/closet/l3closet/security, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -15326,7 +15326,7 @@ /turf/simulated/floor/tiled/old_cargo/gray, /area/prison/cell_block) "kot" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/lino, @@ -15429,7 +15429,7 @@ /turf/simulated/floor/plating, /area/maintenance/security/starboard) "ksB" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -15700,7 +15700,7 @@ /turf/simulated/floor/plating, /area/maintenance/security/starboard) "kBX" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/light{ @@ -15748,7 +15748,7 @@ /turf/simulated/floor/tiled, /area/exploration/explorer_prep) "kEh" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -16426,7 +16426,7 @@ /turf/simulated/floor/tiled, /area/triumph/surfacebase/sauna) "kXy" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -16448,7 +16448,7 @@ "kXH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -16984,7 +16984,7 @@ /turf/simulated/floor/tiled/dark, /area/security/hallway) "lus" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -17020,7 +17020,7 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/shuttle/excursion/general) "lwn" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -17046,7 +17046,7 @@ /turf/simulated/floor/tiled/techfloor, /area/security/lobby) "lyU" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -17269,7 +17269,7 @@ /turf/simulated/floor/wood, /area/security/breakroom) "lIw" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/structure/table/wooden_reinforced, @@ -17444,7 +17444,7 @@ /turf/simulated/floor/plating, /area/shuttle/excursion/cargo) "lOX" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/wood, @@ -17519,7 +17519,7 @@ /turf/simulated/floor/tiled/old_cargo/white, /area/security/forensics) "lQC" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -17672,7 +17672,7 @@ /turf/simulated/floor/plating, /area/exploration/explorer_prep) "lYL" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -17780,7 +17780,7 @@ /area/exploration/courser_dock) "mcY" = ( /obj/structure/table/reinforced, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 27 }, @@ -17878,7 +17878,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -18059,7 +18059,7 @@ /turf/simulated/floor/tiled, /area/crew_quarters/sleep/CE_quarters) "mme" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/effect/floor_decal/borderfloor{ @@ -19209,7 +19209,7 @@ /turf/simulated/floor/tiled/techmaint, /area/security/prison) "nfJ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -19757,7 +19757,7 @@ /turf/simulated/floor/bluegrid, /area/ai) "nBa" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -19991,7 +19991,7 @@ /turf/simulated/floor/tiled/dark, /area/crew_quarters/heads/hop) "nHX" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -20007,7 +20007,7 @@ /obj/structure/cable/green{ icon_state = "4-8" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/old_cargo/white, @@ -20279,7 +20279,7 @@ /turf/simulated/wall/prepainted, /area/vacant/vacant_bar) "nRe" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -20309,7 +20309,7 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/hallway/primary/aft) "nRY" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/random/junk, @@ -21256,7 +21256,7 @@ /obj/effect/floor_decal/techfloor{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -21422,7 +21422,7 @@ /turf/simulated/floor/plating, /area/maintenance/security/starboard) "oHz" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -21835,7 +21835,7 @@ /turf/simulated/floor/plating, /area/maintenance/substation/exploration) "oVm" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -21922,7 +21922,7 @@ /turf/simulated/floor/tiled/dark, /area/chapel/main) "oYJ" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22; target_temperature = 275.15 @@ -21951,7 +21951,7 @@ /turf/simulated/floor/plating, /area/maintenance/substation/command) "oZE" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/floodlight, @@ -22255,7 +22255,7 @@ /area/maintenance/security/starboard) "plb" = ( /obj/structure/closet/firecloset, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -22330,7 +22330,7 @@ /area/security/eva) "pnx" = ( /obj/structure/closet/wardrobe/red, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -23177,7 +23177,7 @@ /turf/simulated/floor/tiled/dark, /area/security/riot_control) "pNr" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -23559,7 +23559,7 @@ /obj/structure/cable/green{ icon_state = "1-2" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -23686,7 +23686,7 @@ /area/maintenance/chapel) "qhj" = ( /obj/machinery/media/jukebox, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -23737,7 +23737,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -24177,7 +24177,7 @@ /turf/simulated/floor/tiled/dark, /area/hallway/secondary/civilian_hallway_mid) "qzP" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -24265,7 +24265,7 @@ /obj/effect/floor_decal/industrial/danger{ dir = 9 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -25020,7 +25020,7 @@ /turf/simulated/floor/tiled/dark, /area/security/armoury) "rdn" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -25033,7 +25033,7 @@ /turf/simulated/floor/tiled, /area/exploration/explorer_prep) "rdF" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -25498,7 +25498,7 @@ /turf/simulated/floor/tiled/monotile, /area/security/hallway) "rwD" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -26541,7 +26541,7 @@ /area/triumph/surfacebase/tram) "sfh" = ( /obj/structure/table/reinforced, -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 8; pixel_x = 27 }, @@ -26857,7 +26857,7 @@ /obj/effect/floor_decal/techfloor/orange{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ frequency = 1441; pixel_y = 22 }, @@ -27429,7 +27429,7 @@ /obj/structure/cable/green{ icon_state = "1-2" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 22 }, @@ -27712,7 +27712,7 @@ /turf/simulated/floor/grass, /area/hydroponics/garden) "teS" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/plating, @@ -27738,7 +27738,7 @@ /area/gateway/prep_room) "tfY" = ( /obj/effect/floor_decal/techfloor, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -27915,7 +27915,7 @@ /obj/effect/floor_decal/corner/blue/bordercorner2{ dir = 10 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -28335,7 +28335,7 @@ "tCW" = ( /obj/structure/table/woodentable, /obj/machinery/chemical_dispenser/catering/bar_alc, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -28898,7 +28898,7 @@ /turf/simulated/floor/tiled/old_cargo/red, /area/security/security_processing) "tWE" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 25 }, @@ -29615,7 +29615,7 @@ /turf/simulated/floor/plating, /area/crew_quarters/heads/hos) "utu" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -29927,7 +29927,7 @@ /turf/simulated/floor/tiled/dark, /area/hallway/secondary/docking_hallway) "uCX" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -30055,7 +30055,7 @@ /turf/simulated/floor/wood, /area/library) "uFy" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -23 }, @@ -30223,7 +30223,7 @@ /turf/simulated/floor/carpet/tealcarpet, /area/shuttle/civvie/general) "uJU" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/plating, @@ -31117,7 +31117,7 @@ /obj/effect/floor_decal/techfloor{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/dark, @@ -31618,7 +31618,7 @@ /area/security/lobby) "vMW" = ( /obj/machinery/light/small, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -31732,7 +31732,7 @@ /turf/simulated/wall/prepainted, /area/triumph/station/stairs_four) "vRP" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 4; pixel_x = -27 }, @@ -32108,7 +32108,7 @@ /turf/simulated/floor/plating, /area/maintenance/security/starboard) "wbx" = ( -/obj/machinery/alarm/alarms_hidden{ +/obj/machinery/air_alarm/alarms_hidden{ dir = 1; pixel_y = -23 }, @@ -32118,7 +32118,7 @@ /obj/machinery/camera/network/civilian{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -32886,7 +32886,7 @@ /obj/effect/floor_decal/corner/beige/border{ dir = 8 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -33003,7 +33003,7 @@ /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 1 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -33231,7 +33231,7 @@ /obj/effect/floor_decal/techfloor{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -33247,7 +33247,7 @@ /obj/effect/floor_decal/techfloor/hole/right{ dir = 4 }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 8; pixel_x = 24 }, @@ -33440,7 +33440,7 @@ "xdJ" = ( /obj/structure/table/reinforced, /obj/machinery/microscope, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /turf/simulated/floor/tiled/old_cargo/white, @@ -33716,7 +33716,7 @@ }, /obj/effect/floor_decal/corner/black/full, /obj/effect/floor_decal/industrial/outline/grey, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -33906,7 +33906,7 @@ /turf/simulated/floor/wood, /area/library) "xoY" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -33917,7 +33917,7 @@ /turf/simulated/floor/tiled, /area/hallway/primary/aft) "xpv" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 4; pixel_x = -22 }, @@ -34165,7 +34165,7 @@ /turf/simulated/floor/plating, /area/maintenance/chapel) "xxd" = ( -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ dir = 1; pixel_y = -22 }, @@ -34752,7 +34752,7 @@ /obj/structure/closet{ name = "Evidence Closet" }, -/obj/machinery/alarm{ +/obj/machinery/air_alarm{ pixel_y = 22 }, /obj/machinery/camera/network/security, diff --git a/maps/triumph/levels/flagship.dmm b/maps/triumph/levels/flagship.dmm index 09b8e056837..d29bb54bbe4 100644 --- a/maps/triumph/levels/flagship.dmm +++ b/maps/triumph/levels/flagship.dmm @@ -10372,7 +10372,7 @@ "Is" = ( /obj/structure/table/reinforced, /obj/item/material/minihoe, -/obj/item/analyzer/plant_analyzer, +/obj/item/plant_analyzer, /obj/effect/floor_decal/borderfloorblack{ dir = 1 }, diff --git a/nano/templates/air_alarm.tmpl b/nano/templates/air_alarm.tmpl deleted file mode 100644 index b239536d670..00000000000 --- a/nano/templates/air_alarm.tmpl +++ /dev/null @@ -1,220 +0,0 @@ - -

Air Status

-{{if data.has_environment}} - {{for data.environment}} - {{:value.name}}: - {{if value.danger_level == 2}} - - {{else value.danger_level == 1}} - - {{else}} - - {{/if}} - {{:helper.fixed(value.value, 1)}} - {{:value.unit}}
- {{/for}} - Local Status: {{if data.total_danger == 2}} - DANGER: Internals Required - {{else data.total_danger == 1}} - Caution - {{else}} - Optimal - {{/if}} -
- Area Status: {{if data.atmos_alarm}}Atmosphere alert in area{{else data.fire_alarm}}Fire alarm in area{{else}}No alerts{{/if}} -{{else}} - Warning: Cannot obtain air sample for analysis. -{{/if}} -
- - - - - - - - - - - - - -
-
-

Remote Control

-
-

Thermostat

-
-
-
-
- {{:helper.link('Off', null, { 'rcon' : 1}, data.remote_connection && !data.remote_access ? (data.rcon == 1 ? 'yellowButton' : 'disabled') : null, data.rcon == 1 ? 'selected' : null)}} - {{:helper.link('Auto', null, { 'rcon' : 2}, data.remote_connection && !data.remote_access ? (data.rcon == 2 ? 'yellowButton' : 'disabled') : null, data.rcon == 2 ? 'selected' : null)}} - {{:helper.link('On', null, { 'rcon' : 3}, data.remote_connection && !data.remote_access ? (data.rcon == 3 ? 'yellowButton' : 'disabled') : null, data.rcon == 3 ? 'selected' : null)}} -
-
-
- {{:helper.link(data.target_temperature, null, { 'temperature' : 1})}} -
-
-{{if (data.locked && !data.remote_connection) || (data.remote_connection && ! data.remote_access)}} - {{if data.remote_connection}} - (Current remote control settings and alarm status restricts access.) - {{else}} - (Swipe ID card to unlock interface.) - {{/if}} -{{else}} - {{if data.screen != 1}} -
{{:helper.link('Main Menu', null, { 'screen' : 1})}}
- {{/if}} - {{if data.screen == 1}} -
- {{if data.atmos_alarm}} - {{:helper.link('Reset - Area Atmospheric Alarm', null, { 'atmos_reset' : 1})}} - {{else}} - {{:helper.link('Activate - Area Atmospheric Alarm', null, { 'atmos_alarm' : 1})}} - {{/if}} -
-
-
- {{:helper.link('Scrubbers Control', null, { 'screen' : 3})}} -
-
- {{:helper.link('Vents Control', null, { 'screen' : 2})}} -
-
- {{:helper.link('Set Environmental Mode', null, { 'screen' : 4})}} -
-
- {{:helper.link('Sensor Settings', null, { 'screen' : 5})}} -
-
- {{if data.mode==3}} - {{:helper.link('PANIC SIPHON ACTIVE - Turn siphoning off', null, { 'mode' : 1}, null, 'redButton')}} - {{else}} - {{:helper.link('ACTIVATE PANIC SIPHON IN AREA', null, { 'mode' : 3}, null, 'yellowButton')}} - {{/if}} - {{else data.screen == 2}} - {{for data.vents}} -
- {{:value.long_name}}
-
-
- Operating: -
-
- {{:helper.link(value.power ? 'On' : 'Off', null, { 'id_tag' : value.id_tag, 'command' : 'power', 'val' : value.power ? 0 : 1}, null, value.power ? null : 'redButton')}} -
-
-
-
- Operation Mode: -
-
- {{:helper.link(value.direction == "siphon" ? 'Siphoning' : 'Pressurizing', null, { 'id_tag' : value.id_tag, 'command' : 'direction', 'val' : value.direction == "siphon" ? 1 : 0}, null, value.direction == "siphon" ? 'redButton' : null)}} -
-
-
-
- Pressure Checks: -
-
- {{:helper.link('External', null, { 'id_tag' : value.id_tag, 'command' : 'checks', 'val' : value.checks^1}, null, value.checks&1 ? 'selected' : null)}} - {{:helper.link('Internal', null, { 'id_tag' : value.id_tag, 'command' : 'checks', 'val' : value.checks^2}, null, value.checks&2 ? 'selected' : null)}} -
-
-
-
- External Pressure Bound: -
-
- {{:helper.link(helper.fixed(value.external,2), null, { 'id_tag' : value.id_tag, 'command' : 'set_external_pressure'})}} - {{:helper.link('Reset', null, { 'id_tag' : value.id_tag, 'command' : 'reset_external_pressure'})}} -
-
-
- {{empty}} - No vents connected. - {{/for}} - {{else data.screen == 3}} - {{for data.scrubbers}} -
- {{:value.long_name}}
-
-
- Operating: -
-
- {{:helper.link(value.power ? 'On' : 'Off', null, { 'id_tag' : value.id_tag, 'command' : 'power', 'val' : value.power ? 0 : 1}, null, value.power ? null : 'redButton')}} -
-
-
-
- Operation Mode: -
-
- {{:helper.link(value.scrubbing ? 'Scrubbing' : 'Siphoning', null, { 'id_tag' : value.id_tag, 'command' : 'scrubbing', 'val' : value.scrubbing ? 0 : 1}, null, value.scrubbing ? null : 'redButton')}} -
-
-
-
- Filters: -
-
- {{for value.filters :filterValue:filterIndex}} - {{:helper.link(filterValue.name, null, { 'id_tag' : value.id_tag, 'command' : filterValue.command, 'val' : filterValue.val ? 0 : 1}, null, filterValue.val ? 'selected' : null)}} - {{/for}} -
-
-
- {{empty}} - No scrubbers connected. - {{/for}} - {{else data.screen == 4}} -

Environmental Modes

- {{for data.modes}} -
- {{:helper.link(value.name, null, { 'mode' : value.mode }, null, value.selected ? (value.danger ? 'redButton' : 'selected') : null)}} -
- {{/for}} - {{else data.screen == 5}} -

Alarm Threshold

- Partial pressure for gases. - - - - - {{for data.thresholds}} - - - {{for value.settings :settingsValue:settingsIndex}} - - {{/for}} - - {{/for}} -
min2min1max1max2
{{:value.name}} - {{:helper.link(settingsValue.selected >= 0 ? helper.fixed(settingsValue.selected, 2) : "Off", null, { 'command' : 'set_threshold', 'env' : settingsValue.env, 'var' : settingsValue.val })}} -
- {{/if}} -{{/if}} diff --git a/tgui/docs/component-reference.md b/tgui/docs/component-reference.md index 61ce829a88c..14647182d63 100644 --- a/tgui/docs/component-reference.md +++ b/tgui/docs/component-reference.md @@ -327,6 +327,8 @@ toggle, closed by default. - `title: string` - Text to display on the button for collapsing - `color: string` - Color of the button; see [Button](#button) - `buttons: any` - Buttons or other content to render inline with the button +- `more: boolean` - Makes this collapsible render its button on the right, with fixed size. + This effectively makes it a Box with a button to display its children. ### `ColorBox` diff --git a/tgui/packages/common/math.ts b/tgui/packages/common/math.ts index 97e6b60b2ed..4c2104ce057 100644 --- a/tgui/packages/common/math.ts +++ b/tgui/packages/common/math.ts @@ -98,3 +98,29 @@ export const numberOfDecimalDigits = value => { } return 0; }; + +/** + * Get array of bits from a bitfield + */ +export const bitfieldToBits = (field: number) => { + let got: number[] = []; + for (let bit = 0; bit < 24; bit++) { + if (field & (1< { + let got: number[] = []; + for (let bit = 0; bit < limit; bit++) { + if (field & (1< { color={iconColor} rotation={iconRotation} spin={iconSpin} + {...props.iconProps} /> )} {content} @@ -135,6 +137,7 @@ export const Button = (props: ButtonProps) => { color={iconColor} rotation={iconRotation} spin={iconSpin} + {...props.iconProps} /> )} diff --git a/tgui/packages/tgui/components/Collapsible.tsx b/tgui/packages/tgui/components/Collapsible.tsx index 91f411e65c5..41003faf9ac 100644 --- a/tgui/packages/tgui/components/Collapsible.tsx +++ b/tgui/packages/tgui/components/Collapsible.tsx @@ -7,14 +7,18 @@ import { BooleanLike } from 'common/react'; import { Component, InfernoNode } from 'inferno'; import { Box, BoxProps } from './Box'; -import { Button } from './Button'; +import { Button, ButtonProps } from './Button'; +import { ComponentProps } from './Component'; -interface CollapsibleProps extends BoxProps { +interface CollapsibleProps extends ComponentProps{ buttons?: InfernoNode; color?: string; title?: string | InfernoNode; open?: BooleanLike; captureKeys?: BooleanLike; + more?: InfernoNode; + boxProps?: BoxProps; + headerProps?: ButtonProps; } interface CollapsibleState { @@ -44,8 +48,40 @@ export class Collapsible extends Component { buttons, ...rest } = props; - return ( - + return props.more? ( + +
+
+ {props.more} +
+
+
+ +
+ {buttons && ( +
+ {buttons} +
+ )} +
+
+ {open && ( +
+ {children} +
+ )} +
+ ): ( +
@@ -55,7 +91,7 @@ export class Collapsible extends Component { color={color} icon={open ? 'chevron-down' : 'chevron-right'} onClick={() => this.setState({ open: !open })} - {...rest}> + {...props.headerProps}> {title}
diff --git a/tgui/packages/tgui/components/Component.tsx b/tgui/packages/tgui/components/Component.tsx index dd1c90b1436..d6fb54551a9 100644 --- a/tgui/packages/tgui/components/Component.tsx +++ b/tgui/packages/tgui/components/Component.tsx @@ -8,5 +8,5 @@ import { InfernoNode } from "inferno"; export type ComponentProps = { - chlidren?: InfernoNode; + children?: InfernoNode; } diff --git a/tgui/packages/tgui/components/LabeledList.tsx b/tgui/packages/tgui/components/LabeledList.tsx index 938dc9c1d0c..d81a25a4218 100644 --- a/tgui/packages/tgui/components/LabeledList.tsx +++ b/tgui/packages/tgui/components/LabeledList.tsx @@ -7,11 +7,12 @@ import { BooleanLike, classes, pureComponentHooks } from 'common/react'; import { InfernoNode } from 'inferno'; import { Box, unit } from './Box'; +import { ComponentProps } from './Component'; import { Divider } from './Divider'; -type LabeledListProps = { - children?: any; -}; +interface LabeledListProps extends ComponentProps { + +} export const LabeledList = (props: LabeledListProps) => { const { children } = props; diff --git a/tgui/packages/tgui/interfaces/ATM.tsx b/tgui/packages/tgui/interfaces/ATM.tsx index 7b0333db858..98d9845b3fd 100644 --- a/tgui/packages/tgui/interfaces/ATM.tsx +++ b/tgui/packages/tgui/interfaces/ATM.tsx @@ -176,7 +176,7 @@ const ATMElement = (props, context) => { - + { - + { Object.entries(data.transaction_log).map(([numString, logEntry]) => { @@ -234,7 +234,7 @@ const ATMElement = (props, context) => { - + setTransferTarget(value)} /> @@ -249,7 +249,7 @@ const ATMElement = (props, context) => { - + setWithdrawAmount(value)} /> diff --git a/tgui/packages/tgui/interfaces/AirAlarm.js b/tgui/packages/tgui/interfaces/AirAlarm.js deleted file mode 100644 index 9a0183f91cd..00000000000 --- a/tgui/packages/tgui/interfaces/AirAlarm.js +++ /dev/null @@ -1,323 +0,0 @@ -import { toFixed } from 'common/math'; -import { Fragment } from 'inferno'; -import { useBackend, useLocalState } from '../backend'; -import { Box, Button, LabeledList, Section } from '../components'; -import { getGasLabel, getGasColor } from '../constants'; -import { Window } from '../layouts'; -import { Scrubber, Vent } from './common/AtmosControls'; -import { InterfaceLockNoticeBox } from './common/InterfaceLockNoticeBox'; - -export const AirAlarm = (props, context) => { - const { act, data } = useBackend(context); - const locked = data.locked && !data.siliconUser && !data.remoteUser; - return ( - - - - - - {!locked && ( - - )} - - - ); -}; - -const AirAlarmStatus = (props, context) => { - const { data } = useBackend(context); - const entries = (data.environment_data || []) - .filter(entry => entry.value >= 0.01); - const dangerMap = { - 0: { - color: 'good', - localStatusText: 'Optimal', - }, - 1: { - color: 'average', - localStatusText: 'Caution', - }, - 2: { - color: 'bad', - localStatusText: 'Danger (Internals Required)', - }, - }; - const localStatus = dangerMap[data.danger_level] || dangerMap[0]; - return ( -
- - {entries.length > 0 && ( - <> - {entries.map(entry => { - const status = dangerMap[entry.danger_level] || dangerMap[0]; - return ( - - {toFixed(entry.value, 2)}{entry.unit} - - ); - })} - - {localStatus.localStatusText} - - - {data.atmos_alarm && 'Atmosphere Alarm' - || data.fire_alarm && 'Fire Alarm' - || 'Nominal'} - - - ) || ( - - Cannot obtain air sample for analysis. - - )} - {!!data.emagged && ( - - Safety measures offline. Device may exhibit abnormal behavior. - - )} - -
- ); -}; - -const AirAlarmUnlockedControl = (props, context) => { - const { act, data } = useBackend(context); - const { - target_temperature, - rcon, - } = data; - return ( -
- - -
- ); -}; - -const AIR_ALARM_ROUTES = { - home: { - title: 'Air Controls', - component: () => AirAlarmControlHome, - }, - vents: { - title: 'Vent Controls', - component: () => AirAlarmControlVents, - }, - scrubbers: { - title: 'Scrubber Controls', - component: () => AirAlarmControlScrubbers, - }, - modes: { - title: 'Operating Mode', - component: () => AirAlarmControlModes, - }, - thresholds: { - title: 'Alarm Thresholds', - component: () => AirAlarmControlThresholds, - }, -}; - -const AirAlarmControl = (props, context) => { - const [screen, setScreen] = useLocalState(context, 'screen'); - const route = AIR_ALARM_ROUTES[screen] || AIR_ALARM_ROUTES.home; - const Component = route.component(); - return ( -
setScreen()} /> - )}> - -
- ); -}; - - -// Home screen -// -------------------------------------------------------- - -const AirAlarmControlHome = (props, context) => { - const { act, data } = useBackend(context); - const [screen, setScreen] = useLocalState(context, 'screen'); - const { - mode, - atmos_alarm, - } = data; - return ( - <> -
- - - - - - - - - - {thresholds.map(threshold => ( - - - {threshold.settings.map(setting => ( - - ))} - - ))} - -
- min2min1max1max2
- - {getGasLabel(threshold.name)} - - -
- ); -}; diff --git a/tgui/packages/tgui/interfaces/AtmosControlConsole.tsx b/tgui/packages/tgui/interfaces/AtmosControlConsole.tsx deleted file mode 100644 index 3322705d090..00000000000 --- a/tgui/packages/tgui/interfaces/AtmosControlConsole.tsx +++ /dev/null @@ -1,178 +0,0 @@ -import { useBackend, useLocalState } from '../backend'; -import { - Box, - Button, - LabeledList, - NumberInput, - Dropdown, - Section, - Stack, -} from '../components'; -import { Window } from '../layouts'; -import { - AtmosHandbookContent, - atmosHandbookHooks, -} from './common/AtmosHandbook'; -import { Gasmix, GasmixParser } from './common/GasmixParser'; - -type Chamber = { - id: string; - name: string; - gasmix?: Gasmix; - input_info?: { active: boolean; amount: number }; - output_info?: { active: boolean; amount: number }; -}; - -export const AtmosControlConsole = (props, context) => { - const { act, data } = useBackend<{ - chambers: Chamber[]; - maxInput: number; - maxOutput: number; - reconnecting: boolean; - control: boolean; - }>(context); - const chambers = data.chambers || []; - const [chamberId, setChamberId] = useLocalState( - context, - 'chamberId', - chambers[0]?.id - ); - const selectedChamber - = chambers.length === 1 - ? chambers[0] - : chambers.find((chamber) => chamber.id === chamberId); - const [setActiveGasId, setActiveReactionId] = atmosHandbookHooks(context); - return ( - - - {chambers.length > 1 && ( -
- chamber.name)} - selected={selectedChamber?.name} - onSelected={(value) => - setChamberId( - chambers.find((chamber) => chamber.name === value)?.id - || chambers[0].id)} - /> -
- )} -
act('reconnect')} - />) - }> - {!!selectedChamber && !!selectedChamber.gasmix ? ( - - ) : ( - {'No Sensors Detected!'} - )} -
- {!!selectedChamber && !!data.control && ( -
- - - {selectedChamber.input_info ? ( - - -
- )} - -
-
- ); -}; diff --git a/tgui/packages/tgui/interfaces/AtmosFilter.tsx b/tgui/packages/tgui/interfaces/AtmosFilter.tsx deleted file mode 100644 index 591a21496b3..00000000000 --- a/tgui/packages/tgui/interfaces/AtmosFilter.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import { BooleanLike } from '../../common/react'; -import { useBackend } from '../backend'; -import { Button, LabeledList, NumberInput, Section } from '../components'; -import { Window } from '../layouts'; - -type Data = { - filter_types: Filter[]; - on: BooleanLike; - rate: number; - max_rate: number; -}; - -type Filter = { - f_type: number; - selected: BooleanLike; - name: string; - gas_id: number; -}; - -export const AtmosFilter = (props, context) => { - const { act, data } = useBackend(context); - const { filter_types = [], on, rate, max_rate } = data; - - return ( - - -
- - -
-
-
- ); -}; diff --git a/tgui/packages/tgui/interfaces/common/AtmosHandbook.tsx b/tgui/packages/tgui/interfaces/AtmosHandbook.tsx similarity index 87% rename from tgui/packages/tgui/interfaces/common/AtmosHandbook.tsx rename to tgui/packages/tgui/interfaces/AtmosHandbook.tsx index a423fae5078..14acb864ed6 100644 --- a/tgui/packages/tgui/interfaces/common/AtmosHandbook.tsx +++ b/tgui/packages/tgui/interfaces/AtmosHandbook.tsx @@ -1,5 +1,42 @@ +// todo: this here is a reminder that we need a popup atmos guide that you can pull up. + +import { Modal, Section } from "../components"; +import { FullGasContext } from "./common/Atmos"; + +interface AtmosGuideProps { + // gas context to pull from - must be full + gasContext: FullGasContext + // should we render as a section or modal? true for section. + embedded?: boolean; +} + +export const AtmosGuide = (props: AtmosGuideProps) => { + return props.embedded? ( +
+ +
+ ) : ( + + + + ); +}; + +const AtmosGuideInternal = (props: AtmosGuideProps) => { + // make the linter shut up + const { gasContext, embedded } = props; + // --- + + return ( + <> + Unimplemented + + ); +}; + +/* import { InfernoNode } from 'inferno'; -import { useBackend, useLocalState } from '../../backend'; +import { useBackend, useLocalState } from '../backend'; import { Box, Button, @@ -9,7 +46,8 @@ import { Section, Stack, Tooltip, -} from '../../components'; +} from '../components'; +*/ /** * This describes something that influences a particular reaction @@ -21,6 +59,7 @@ import { * desc = 'Influences the burn rate and consumption ratio.' */ +/* type Factor = { factor_id?: string; factor_type: 'gas' | 'misc'; @@ -242,3 +281,4 @@ export const atmosHandbookHooks = (context) => { ); return [setActiveGasId, setActiveReactionId]; }; +*/ diff --git a/tgui/packages/tgui/interfaces/GasAnalyzer.tsx b/tgui/packages/tgui/interfaces/GasAnalyzer.tsx deleted file mode 100644 index 96695edc2c5..00000000000 --- a/tgui/packages/tgui/interfaces/GasAnalyzer.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import { useBackend } from '../backend'; -import { GasmixParser } from './common/GasmixParser'; -import type { Gasmix } from './common/GasmixParser'; -import { - AtmosHandbookContent, - atmosHandbookHooks, -} from './common/AtmosHandbook'; -import { Window } from '../layouts'; -import { Section } from '../components'; - -export const GasAnalyzerContent = (props, context) => { - const { act, data } = useBackend<{ gasmixes: Gasmix[] }>(context); - const { gasmixes } = data; - const [setActiveGasId, setActiveReactionId] = atmosHandbookHooks(context); - return ( - <> - {gasmixes.map((gasmix) => ( -
- -
- ))} - - - ); -}; - -export const GasAnalyzer = (props, context) => { - return ( - - - - - - ); -}; - \ No newline at end of file diff --git a/tgui/packages/tgui/interfaces/Hypertorus/Controls.js b/tgui/packages/tgui/interfaces/Hypertorus/Controls.js deleted file mode 100644 index 210dc379183..00000000000 --- a/tgui/packages/tgui/interfaces/Hypertorus/Controls.js +++ /dev/null @@ -1,207 +0,0 @@ -import { useBackend } from '../../backend'; -import { Box, Button, Icon, Knob, LabeledControls, LabeledList, NumberInput, Section, Tooltip } from '../../components'; -import { getGasLabel } from '../../constants'; -import { HelpDummy, HoverHelp } from './helpers'; - -/* - * This module holds user interactable controls. Some may be good candidates - * for generalizing and refactoring. - */ - -const ComboKnob = (props, context) => { - const { - color=false, - defaultValue, - icon, - flipIcon, - help, - minValue, - maxValue, - parameter, - step=5, - value, - ...rest - } = props; - - const { act, data } = useBackend(context); - - const iconProps = {}; - if (flipIcon) { - iconProps.rotation = 180; - } - - const icon_element = icon && (); - - return ( - - {help - ? ({icon_element}) - : icon_element} - act(parameter, { [parameter]: v })} - {...rest} - /> -