diff --git a/aurorastation.dme b/aurorastation.dme index 7637a5ccc7a..5201d8961ba 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -2975,6 +2975,7 @@ #include "code\modules\modular_computers\file_system\programs\command\teleporter.dm" #include "code\modules\modular_computers\file_system\programs\engineering\_engineering.dm" #include "code\modules\modular_computers\file_system\programs\engineering\atmoscontrol.dm" +#include "code\modules\modular_computers\file_system\programs\engineering\fusion_codex.dm" #include "code\modules\modular_computers\file_system\programs\engineering\lightingcontrol.dm" #include "code\modules\modular_computers\file_system\programs\engineering\powermonitor.dm" #include "code\modules\modular_computers\file_system\programs\engineering\rcon.dm" diff --git a/code/__DEFINES/atmos.dm b/code/__DEFINES/atmos.dm index a95de10357c..2e37835ad17 100644 --- a/code/__DEFINES/atmos.dm +++ b/code/__DEFINES/atmos.dm @@ -77,9 +77,13 @@ #define LIQUIDFUEL_AMOUNT_TO_MOL 0.45 //mol/volume unit // XGM gas flags. +/// Used by combustion reactions. #define XGM_GAS_FUEL 1 +/// Used by combustion reactions. #define XGM_GAS_OXIDIZER 2 +/// Attaches itself to certain objects/atoms. #define XGM_GAS_CONTAMINANT 4 +/// Used by nuclear fusion reactions. #define XGM_GAS_FUSION_FUEL 8 #define TANK_LEAK_PRESSURE (30.*ONE_ATMOSPHERE) // Tank starts leaking. @@ -118,13 +122,13 @@ #define GAS_PHORON "phoron" #define GAS_HYDROGEN "hydrogen" #define GAS_ALIEN "aliether" -#define GAS_STEAM "water" +#define GAS_WATERVAPOR "water_vapor" #define GAS_SULFUR "sulfur_dioxide" #define GAS_CHLORINE "chlorine" #define GAS_HELIUM "helium" +#define GAS_HELIUMFUEL "helium-3" #define GAS_DEUTERIUM "deuterium" #define GAS_TRITIUM "tritium" -#define GAS_BORON "boron" #define GAS_HEAT "heat" //Not a real gas, used for visual effects #define GAS_COLD "cold" //Not a real gas, used for visual effects diff --git a/code/__DEFINES/machinery.dm b/code/__DEFINES/machinery.dm index ab24920d62f..dae9b61f55c 100644 --- a/code/__DEFINES/machinery.dm +++ b/code/__DEFINES/machinery.dm @@ -24,6 +24,8 @@ #define POWER_USE_ACTIVE 2 // Bitflags for machine stat variable. +// These definitions are copypasted in the dmdocs in 'code/game/machinery.dm' so they can be easily referenced by checking the 'stat' variable. +// SO THAT MEANS IF YOU UPDATE THEM HERE, UPDATE THEM THERE FOR VISIBILITY! #define BROKEN 0x1 #define NOPOWER 0x2 #define POWEROFF 0x4 // TBD. diff --git a/code/__DEFINES/materials.dm b/code/__DEFINES/materials.dm index cbcf58270d8..68d6d99bd46 100644 --- a/code/__DEFINES/materials.dm +++ b/code/__DEFINES/materials.dm @@ -27,7 +27,7 @@ #define MATERIAL_DIONA "biomass" #define MATERIAL_VAURCA "alien biomass" #define MATERIAL_TRITIUM "tritium" -#define MATERIAL_HYDROGEN_METALLIC "mhydrogen" +#define MATERIAL_HYDROGEN_METALLIC "metallic hydrogen" #define MATERIAL_ELEVATOR "elevatorium" #define MATERIAL_SHUTTLE "shuttle" #define MATERIAL_SHUTTLE_SKRELL "skrell" @@ -38,6 +38,7 @@ #define MATERIAL_SUPERMATTER "supermatter" #define MATERIAL_ALUMINIUM "aluminium" #define MATERIAL_LEAD "lead" +#define MATERIAL_BORON "boron" // Leathers and related. #define MATERIAL_RESIN "resin" diff --git a/code/__DEFINES/mining.dm b/code/__DEFINES/mining.dm index 3edb4a932db..18dc61c67a9 100644 --- a/code/__DEFINES/mining.dm +++ b/code/__DEFINES/mining.dm @@ -7,6 +7,6 @@ #define ORE_GOLD "gold" #define ORE_DIAMOND "diamond" #define ORE_PLATINUM "platinum" -#define ORE_HYDROGEN "mhydrogen" +#define ORE_HYDROGEN "metallic hydrogen" #define ORE_BAUXITE "aluminium" #define ORE_GALENA "lead" diff --git a/code/controllers/subsystems/initialization/codex.dm b/code/controllers/subsystems/initialization/codex.dm index e1043efb0c5..ab014562b0b 100644 --- a/code/controllers/subsystems/initialization/codex.dm +++ b/code/controllers/subsystems/initialization/codex.dm @@ -4,13 +4,17 @@ SUBSYSTEM_DEF(codex) flags = SS_NO_FIRE init_order = INIT_ORDER_CODEX - /// List of cooking recipes, their result and ingredients. + /// List of cooking recipes and associated data. var/list/cooking_codex_data = list() + /// List of chemistry/reagent reactions and associated data. var/list/chemistry_codex_data = list() var/list/chemistry_codex_ignored_reaction_path = list(/datum/chemical_reaction/slime) var/list/chemistry_codex_ignored_result_path = list(/singleton/reagent/drink, /singleton/reagent/alcohol) + /// List of fusion reactions and associated data. + var/list/fusion_codex_data = list() + /datum/controller/subsystem/codex/Initialize() //We don't build the codex in fastboot, it's slow and kind of pointless for tests if(GLOB.config.fastboot) @@ -19,19 +23,20 @@ SUBSYSTEM_DEF(codex) else generate_cooking_codex() generate_chemistry_codex() - log_subsystem_codex("SScodex: [length(cooking_codex_data)] cooking recipes; [length(chemistry_codex_data)] chemistry recipes.") + generate_fusion_codex() + log_subsystem_codex("SScodex: [length(cooking_codex_data)] cooking recipes; [length(chemistry_codex_data)] chemistry recipes; [length(fusion_codex_data)] fusion recipes;") return SS_INIT_SUCCESS /datum/controller/subsystem/codex/proc/generate_cooking_codex() var/list/available_recipes = GET_SINGLETON_SUBTYPE_MAP(/singleton/recipe) - for (var/recipe_path in available_recipes) - var/singleton/recipe/recipe = GET_SINGLETON(recipe_path) - var/list/recipe_data = list() + for (var/reaction_path in available_recipes) + var/singleton/recipe/recipe = GET_SINGLETON(reaction_path) + var/list/cookingRecipeData = list() // result var/obj/item/recipe_result = recipe.result - recipe_data["result"] = initial(recipe_result.name) + cookingRecipeData["result"] = initial(recipe_result.name) // result image var/icon/result_icon = icon( @@ -39,42 +44,42 @@ SUBSYSTEM_DEF(codex) icon_state=initial(recipe_result.icon_state), frame=1, ) - recipe_data["result_image"] = icon2base64(result_icon) + cookingRecipeData["result_image"] = icon2base64(result_icon) // ingredients - recipe_data["ingredients"] = list() + cookingRecipeData["ingredients"] = list() // ingredients, items if(recipe.items) for(var/ingredient_path in recipe.items) var/obj/item/ingredient = ingredient_path - recipe_data["ingredients"] += initial(ingredient.name) + cookingRecipeData["ingredients"] += initial(ingredient.name) // ingredients, fruits if(recipe.fruit) for(var/fruit_name in recipe.fruit) var/count = recipe.fruit[fruit_name] - recipe_data["ingredients"] += "[count]x [fruit_name]" + cookingRecipeData["ingredients"] += "[count]x [fruit_name]" // ingredients, reagents if(recipe.reagents) for(var/reagent_path in recipe.reagents) var/count = recipe.reagents[reagent_path] var/singleton/reagent/reagent = GET_SINGLETON(reagent_path) - recipe_data["ingredients"] += "[count]u [reagent.name]" + cookingRecipeData["ingredients"] += "[count]u [reagent.name]" // coating if(recipe.coating) var/singleton/reagent/reagent = GET_SINGLETON(recipe.coating) - recipe_data["ingredients"] += "[reagent.name] coating" + cookingRecipeData["ingredients"] += "[reagent.name] coating" // kitchen appliance if(recipe.appliance) - recipe_data["appliances"] = recipe.get_appliance_names() + cookingRecipeData["appliances"] = recipe.get_appliance_names() // fin - recipe_data["ingredients"] = english_list(recipe_data["ingredients"]) - cooking_codex_data += list(recipe_data) + cookingRecipeData["ingredients"] = english_list(cookingRecipeData["ingredients"]) + cooking_codex_data += list(cookingRecipeData) /datum/controller/subsystem/codex/proc/generate_chemistry_codex() chemistry_codex_data = list() @@ -87,40 +92,89 @@ SUBSYSTEM_DEF(codex) if(chemistry_codex_ignored_result_path && is_path_in_list(CR.result, chemistry_codex_ignored_result_path)) continue var/singleton/reagent/R = GET_SINGLETON(CR.result) - var/reactionData = list(id = CR.id) - reactionData["result"] = list( + var/chemistryReactionData = list(id = CR.id) + chemistryReactionData["result"] = list( name = R.name, description = R.description, amount = CR.result_amount ) - reactionData["reagents"] = list() + chemistryReactionData["reagents"] = list() for(var/reagent in CR.required_reagents) var/singleton/reagent/required_reagent = reagent - reactionData["reagents"] += list(list( + chemistryReactionData["reagents"] += list(list( name = initial(required_reagent.name), amount = CR.required_reagents[reagent] )) - reactionData["catalysts"] = list() + chemistryReactionData["catalysts"] = list() for(var/reagent_path in CR.catalysts) var/singleton/reagent/required_reagent = reagent_path - reactionData["catalysts"] += list(list( + chemistryReactionData["catalysts"] += list(list( name = initial(required_reagent.name), amount = CR.catalysts[reagent_path] )) - reactionData["inhibitors"] = list() + chemistryReactionData["inhibitors"] = list() for(var/reagent_path in CR.inhibitors) var/singleton/reagent/required_reagent = reagent_path var/inhibitor_amount = CR.inhibitors[reagent_path] ? CR.inhibitors[reagent_path] : "Any" - reactionData["inhibitors"] += list(list( + chemistryReactionData["inhibitors"] += list(list( name = initial(required_reagent.name), amount = inhibitor_amount )) - reactionData["temp_min"] = CR.required_temperature_min + chemistryReactionData["temp_min"] = CR.required_temperature_min - reactionData["temp_max"] = CR.required_temperature_max + chemistryReactionData["temp_max"] = CR.required_temperature_max - chemistry_codex_data += list(reactionData) + chemistry_codex_data += list(chemistryReactionData) + +/// Generate a list of all fusion reaction fusion_reactions, then populate the codex from that list. +/datum/controller/subsystem/codex/proc/generate_fusion_codex() + fusion_codex_data = list() + var/list/available_fusion_reactions = GET_SINGLETON_SUBTYPE_MAP(/singleton/fusion_reaction) + for (var/reaction_path in available_fusion_reactions) + var/singleton/fusion_reaction/fusion_reaction = GET_SINGLETON(reaction_path) + var/list/fusionReactionData = list() + + var/reaction_name = fusion_reaction.name + if(!reaction_name) + reaction_name = capitalize_first_letters(fusion_reaction.p_react) + "-" + capitalize_first_letters(fusion_reaction.s_react) + + fusionReactionData["name"] = reaction_name + + fusionReactionData["reactants"] = list() + + if(fusion_reaction.p_react == fusion_reaction.s_react) + fusionReactionData["reactants"] += list(list( + name = capitalize_first_letters(fusion_reaction.p_react), + amount = 2 + )) + + else + fusionReactionData["reactants"] += list(list( + name = capitalize_first_letters(fusion_reaction.p_react), + amount = 1 + )) + fusionReactionData["reactants"] += list(list( + name = capitalize_first_letters(fusion_reaction.s_react), + amount = 1 + )) + + fusionReactionData["minimum_temp"] += fusion_reaction.minimum_energy_level + + fusionReactionData["energy_consumption"] += fusion_reaction.energy_consumption + fusionReactionData["energy_production"] += fusion_reaction.energy_production + + fusionReactionData["radiation"] += fusion_reaction.radiation + fusionReactionData["instability"] += fusion_reaction.instability + + fusionReactionData["products"] = list() + for(var/product in fusion_reaction.products) + fusionReactionData["products"] += list(list( + name = capitalize_first_letters(product), + amount = fusion_reaction.products[product] + )) + + fusion_codex_data += list(fusionReactionData) diff --git a/code/defines/gases.dm b/code/defines/gases.dm index 3d62ffca155..2bb324645b8 100644 --- a/code/defines/gases.dm +++ b/code/defines/gases.dm @@ -1,6 +1,7 @@ /singleton/xgm_gas/oxygen id = GAS_OXYGEN name = "Oxygen" + desc = "The gas most life forms need to be able to survive. The most famous oxidizer." specific_heat = 20 // J/(mol*K) molar_mass = 0.032 // kg/mol @@ -9,19 +10,21 @@ /singleton/xgm_gas/nitrogen id = GAS_NITROGEN name = "Nitrogen" + desc = "A very common, largely inert gas commonly used as a buffer gas to pad artificial atmospheres to habitable pressures." specific_heat = 20 // J/(mol*K) molar_mass = 0.028 // kg/mol /singleton/xgm_gas/carbon_dioxide id = GAS_CO2 name = "Carbon Dioxide" + desc = "What the fuck is carbon dioxide?" specific_heat = 30 // J/(mol*K) molar_mass = 0.044 // kg/mol /singleton/xgm_gas/phoron id = GAS_PHORON name = "Phoron" - + desc = "A highly toxic, highly flammable, and extremely rare substance with curious, nigh-miraculous properties. More precious and more deadly than even time." //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) @@ -39,6 +42,7 @@ /singleton/xgm_gas/hydrogen id = GAS_HYDROGEN name = "Hydrogen" + desc = "A highly flammable gas. Starstuff. 75% of the universe is made of this." specific_heat = 100 molar_mass = 0.002 flags = XGM_GAS_FUEL|XGM_GAS_FUSION_FUEL @@ -46,6 +50,7 @@ /singleton/xgm_gas/sleeping_agent id = GAS_N2O name = "Nitrous Oxide" + desc = "Causes drowsiness, euphoria, and eventually unconsciousness." specific_heat = 40 // J/(mol*K) molar_mass = 0.044 // kg/mol. N2O tile_overlay = "sleeping_agent" @@ -55,22 +60,67 @@ /singleton/xgm_gas/hydrogen/deuterium id = GAS_DEUTERIUM name = "Deuterium" + desc = "A stable isotope of hydrogen. That extra neutron is damned handy for low-temperature fusion reactions." specific_heat = 80 molar_mass = 0.004 /singleton/xgm_gas/hydrogen/tritium id = GAS_TRITIUM name = "Tritium" + desc = "An unstable (radioactive), short-lived isotope of hydrogen. Supremely useful as a fuel source for nuclear fusion. Don't breathe this." molar_mass = 0.006 specific_heat = 60 /singleton/xgm_gas/helium id = GAS_HELIUM name = "Helium" + desc = "An inert gas that makes your voice squeaky. This is Helium-4, the commonplace stuff. Its lightweight cousin, Helium-3, is ten-thousand times rarer." specific_heat = 80 // J/(mol*K) molar_mass = 0.004 // kg/mol flags = XGM_GAS_FUSION_FUEL +/singleton/xgm_gas/heliumfuel + id = GAS_HELIUMFUEL + name = "Helium-3" + desc = "Helium-3 is a stable helium isotope valued for its use in fusion power; it fuses without dangerous neutron radiation and at much lower temperatures. Insanely valuable." + specific_heat = 80 // J/(mol*K) + molar_mass = 0.003 // kg/mol + flags = XGM_GAS_FUSION_FUEL + +/singleton/xgm_gas/vapor + id = GAS_WATERVAPOR + name = "Water Vapor" + desc = "Water, in gas form. Slippery when it condenses on the floor. Hurts a LOT if its hot steam." + tile_overlay = "generic" + overlay_limit = 0.5 + specific_heat = 30 // J/(mol*K) + molar_mass = 0.020 // kg/mol + +/singleton/xgm_gas/sulfurdioxide + id = GAS_SULFUR + name = "Sulfur Dioxide" + desc = "Volcano breath. Also the smell of burnt matches. Venus' atmosphere is full of this stuff." + specific_heat = 30 // J/(mol*K) + molar_mass = 0.044 // kg/mol + +/singleton/xgm_gas/chlorine + id = GAS_CHLORINE + name = "Chlorine" + desc = "Fucks up your lungs AND your eyes AND your skin. Maybe try to avoid it." + tile_color = "#c5f72d" + tile_overlay = "chlorine" + overlay_limit = 0.5 + specific_heat = 5 // J/(mol*K) + molar_mass = 0.017 // kg/mol + flags = XGM_GAS_CONTAMINANT + +/singleton/xgm_gas/nitrogendioxide + id = GAS_NO2 + name = "Nitrogen Dioxide" + desc = "A byproduct of a dozen and more critical chemical industrial processes. Pollution." + specific_heat = 33 // J/(mol*K) + molar_mass = 0.046 // kg/mol + /singleton/xgm_gas/alium id = GAS_ALIEN name = "Aliether" @@ -90,41 +140,3 @@ if(prob(50)) tile_color = RANDOM_RGB overlay_limit = 0.5 - -/singleton/xgm_gas/vapor - id = GAS_STEAM - name = "Steam" - tile_overlay = "generic" - overlay_limit = 0.5 - specific_heat = 30 // J/(mol*K) - molar_mass = 0.020 // kg/mol - -/singleton/xgm_gas/sulfurdioxide - id = GAS_SULFUR - name = "Sulfur Dioxide" - - specific_heat = 30 // J/(mol*K) - molar_mass = 0.044 // kg/mol - -/singleton/xgm_gas/chlorine - id = GAS_CHLORINE - name = "Chlorine" - tile_color = "#c5f72d" - tile_overlay = "chlorine" - overlay_limit = 0.5 - specific_heat = 5 // J/(mol*K) - molar_mass = 0.017 // kg/mol - flags = XGM_GAS_CONTAMINANT - -/singleton/xgm_gas/boron - id = GAS_BORON - name = "Boron" - specific_heat = 11 - molar_mass = 0.011 - flags = XGM_GAS_FUSION_FUEL - -/singleton/xgm_gas/nitrogendioxide - id = GAS_NO2 - name = "Nitrogen Dioxide" - specific_heat = 33 // J/(mol*K) - molar_mass = 0.046 // kg/mol diff --git a/code/game/machinery/atmo_control.dm b/code/game/machinery/atmo_control.dm index 2d8656e00fb..c7426ccc243 100644 --- a/code/game/machinery/atmo_control.dm +++ b/code/game/machinery/atmo_control.dm @@ -7,11 +7,11 @@ #define SIGNAL_HELIUM 64 #define SIGNAL_DEUTERIUM 128 #define SIGNAL_TRITIUM 256 -#define SIGNAL_BORON 512 +#define SIGNAL_HELIUMFUEL 512 #define SIGNAL_SULFUR_DIOXIDE 1024 #define SIGNAL_NITROGEN_DIOXIDE 2048 #define SIGNAL_CHLORINE 4096 -#define SIGNAL_STEAM 8192 +#define SIGNAL_WATERVAPOR 8192 /obj/machinery/air_sensor name = "gas sensor" @@ -39,11 +39,11 @@ // 64 for helium concentration // 128 for deuterium concentration // 256 for tritium concentration - // 512 for boron concentration + // 512 for helium-3 concentration // 1024 for sulfur dioxide concentration // 2048 for nitrogen dioxide concentration // 4096 for chlorine concentration - // 8192 for steam concentration + // 8192 for water vapor concentration var/datum/radio_frequency/radio_connection @@ -85,16 +85,16 @@ signal.data[GAS_DEUTERIUM] = round(100*air_sample.gas[GAS_DEUTERIUM]/total_moles,0.1) if(output&SIGNAL_TRITIUM) signal.data[GAS_TRITIUM] = round(100*air_sample.gas[GAS_TRITIUM]/total_moles,0.1) - if(output&SIGNAL_BORON) - signal.data[GAS_BORON] = round(100*air_sample.gas[GAS_BORON]/total_moles,0.1) + if(output&SIGNAL_HELIUMFUEL) + signal.data[GAS_HELIUMFUEL] = round(100*air_sample.gas[GAS_HELIUMFUEL]/total_moles,0.1) if(output&SIGNAL_SULFUR_DIOXIDE) signal.data[GAS_SULFUR] = round(100*air_sample.gas[GAS_SULFUR]/total_moles,0.1) if(output&SIGNAL_NITROGEN_DIOXIDE) signal.data[GAS_NO2] = round(100*air_sample.gas[GAS_NO2]/total_moles,0.1) if(output&SIGNAL_CHLORINE) signal.data[GAS_CHLORINE] = round(100*air_sample.gas[GAS_CHLORINE]/total_moles,0.1) - if(output&SIGNAL_STEAM) - signal.data[GAS_STEAM] = round(100*air_sample.gas[GAS_STEAM]/total_moles,0.1) + if(output&SIGNAL_WATERVAPOR) + signal.data[GAS_WATERVAPOR] = round(100*air_sample.gas[GAS_WATERVAPOR]/total_moles,0.1) else signal.data[GAS_OXYGEN] = 0 signal.data[GAS_PHORON] = 0 @@ -105,11 +105,11 @@ signal.data[GAS_HELIUM] = 0 signal.data[GAS_DEUTERIUM] = 0 signal.data[GAS_TRITIUM] = 0 - signal.data[GAS_BORON] = 0 + signal.data[GAS_HELIUMFUEL] = 0 signal.data[GAS_SULFUR] = 0 signal.data[GAS_NO2] = 0 signal.data[GAS_CHLORINE] = 0 - signal.data[GAS_STEAM]= 0 + signal.data[GAS_WATERVAPOR]= 0 signal.data["sigtype"]="status" radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) @@ -157,7 +157,7 @@ var/list/sdata = sensor_information[id_tag] var/list/sensor_data = list("id_tag" = id_tag, "name" = long_name) sensor_data["datapoints"] = list() - for(var/datapoint in list("pressure", "temperature", GAS_OXYGEN, GAS_NITROGEN, GAS_CO2, GAS_PHORON, GAS_HYDROGEN, GAS_N2O, GAS_HELIUM, GAS_DEUTERIUM, GAS_TRITIUM, GAS_BORON, GAS_SULFUR, GAS_NO2, GAS_CHLORINE, GAS_STEAM)) + for(var/datapoint in list("pressure", "temperature", GAS_OXYGEN, GAS_NITROGEN, GAS_CO2, GAS_PHORON, GAS_HYDROGEN, GAS_N2O, GAS_HELIUM, GAS_DEUTERIUM, GAS_TRITIUM, GAS_HELIUMFUEL, GAS_SULFUR, GAS_NO2, GAS_CHLORINE, GAS_WATERVAPOR)) var/unit if(datapoint == "pressure") unit = "kPa" @@ -551,8 +551,8 @@ #undef SIGNAL_HELIUM #undef SIGNAL_DEUTERIUM #undef SIGNAL_TRITIUM -#undef SIGNAL_BORON +#undef SIGNAL_HELIUMFUEL #undef SIGNAL_SULFUR_DIOXIDE #undef SIGNAL_NITROGEN_DIOXIDE #undef SIGNAL_CHLORINE -#undef SIGNAL_STEAM +#undef SIGNAL_WATERVAPOR diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index 3ded489fa4c..dc06bd597ca 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -38,7 +38,7 @@ return -1 /obj/machinery/portable_atmospherics/canister/sleeping_agent - name = "Canister: \[N2O\]" + name = "\improper Nitrous Oxide \[N2O\]" icon_state = "redws" canister_color = "redws" can_label = 0 @@ -47,15 +47,15 @@ air_contents.adjust_gas(GAS_N2O, MolesForPressure()) /obj/machinery/portable_atmospherics/canister/nitrogen - name = "Canister: \[N2\]" + name = "\improper Nitrogen \[N2\]" icon_state = "red" canister_color = "red" can_label = 0 /obj/machinery/portable_atmospherics/canister/nitrogen/prechilled - name = "Canister: \[N2 (Cooling)\]" + name = "\improper Nitrogen (Liquid) \[N2 (Cryo)\]" /obj/machinery/portable_atmospherics/canister/oxygen - name = "Canister: \[O2\]" + name = "\improper Oxygen \[O2\]" icon_state = "blue" canister_color = "blue" can_label = 0 @@ -64,14 +64,14 @@ src.air_contents.adjust_gas(GAS_OXYGEN, MolesForPressure()) /obj/machinery/portable_atmospherics/canister/oxygen/prechilled - name = "Canister: \[O2 (Cryo)\]" + name = "\improper Oxygen (Liquid) \[O2 (Cryo)\]" /obj/machinery/portable_atmospherics/canister/oxygen/prechilled/Initialize() . = ..() src.air_contents.temperature = 80 /obj/machinery/portable_atmospherics/canister/phoron - name = "Canister \[Phoron\]" + name = "\improper Phoron \[Phoron\]" icon_state = "orange" canister_color = "orange" can_label = 0 @@ -80,7 +80,7 @@ src.air_contents.adjust_gas(GAS_PHORON, MolesForPressure()) /obj/machinery/portable_atmospherics/canister/phoron_scarce // replacing on-station canisters with this for scarcity - full-capacity canisters are staying to avoid mapping errors in future - name = "Canister \[Phoron\]" + name = "\improper Phoron \[Phoron\]" icon_state = "orange" canister_color = "orange" can_label = 0 @@ -89,13 +89,13 @@ src.air_contents.adjust_gas(GAS_PHORON, MolesForPressure()/2) // half of the default value /obj/machinery/portable_atmospherics/canister/carbon_dioxide - name = "Canister \[CO2\]" + name = "\improper Carbon Dioxide \[CO2\]" icon_state = "black" canister_color = "black" can_label = 0 /obj/machinery/portable_atmospherics/canister/hydrogen - name = "Canister \[H\]" + name = "\improper Hydrogen \[H\]" icon_state = "purple" canister_color = "purple" can_label = 0 @@ -103,26 +103,26 @@ . = ..() air_contents.adjust_gas(GAS_HYDROGEN, MolesForPressure()) -/obj/machinery/portable_atmospherics/canister/hydrogen/deuterium - name = "Canister \[2H\]" +/obj/machinery/portable_atmospherics/canister/deuterium + name = "\improper Deuterium \[2H\]" icon_state = "teal" canister_color = "teal" can_label = 0 -/obj/machinery/portable_atmospherics/canister/hydrogen/deuterium/Initialize() +/obj/machinery/portable_atmospherics/canister/deuterium/Initialize() . = ..() air_contents.adjust_gas(GAS_DEUTERIUM, MolesForPressure()) -/obj/machinery/portable_atmospherics/canister/hydrogen/tritium - name = "Canister \[3H\]" +/obj/machinery/portable_atmospherics/canister/tritium + name = "\improper Tritium \[3H\]" icon_state = "pink" canister_color = "pink" can_label = 0 -/obj/machinery/portable_atmospherics/canister/hydrogen/tritium/Initialize() +/obj/machinery/portable_atmospherics/canister/tritium/Initialize() . = ..() air_contents.adjust_gas(GAS_TRITIUM, MolesForPressure()) /obj/machinery/portable_atmospherics/canister/helium - name = "\improper Canister \[He\]" + name = "\improper Helium \[He\]" icon_state = "green" canister_color = "green" can_label = 0 @@ -130,20 +130,29 @@ . = ..() air_contents.adjust_gas(GAS_HELIUM, MolesForPressure()) -/obj/machinery/portable_atmospherics/canister/boron - name = "\improper Boron \[B\]" - icon_state = "lightblue" - canister_color = "lightblue" +/obj/machinery/portable_atmospherics/canister/heliumfuel + name = "\improper Helium-3 \[3He\]" + icon_state = "helium3" + canister_color = "helium3" can_label = 0 -/obj/machinery/portable_atmospherics/canister/boron/Initialize() +/obj/machinery/portable_atmospherics/canister/heliumfuel/Initialize() . = ..() - air_contents.adjust_gas(GAS_BORON, MolesForPressure()) + air_contents.adjust_gas(GAS_HELIUMFUEL, MolesForPressure()) /obj/machinery/portable_atmospherics/canister/chlorine name = "\improper Chlorine \[Cl2\]" icon_state = "darkyellow" canister_color = "darkyellow" can_label = 0 + +/// Keeping the chlorine canister with the skull on it seems fun for antags. +/obj/machinery/portable_atmospherics/canister/chlorine/antag + name = "\improper Chlorine \[Cl2\]" + icon_state = "poisonous" + canister_color = "poisonous" + desc = "A canister of Chlorine, with a warning label for poisonous gases." + can_label = 0 + /obj/machinery/portable_atmospherics/canister/chlorine/Initialize() . = ..() air_contents.adjust_gas(GAS_CHLORINE, MolesForPressure()) @@ -166,17 +175,17 @@ . = ..() air_contents.adjust_gas(GAS_NO2, MolesForPressure()) -/obj/machinery/portable_atmospherics/canister/steam - name = "\improper Steam \[H2O\]" +/obj/machinery/portable_atmospherics/canister/watervapor + name = "\improper Water Vapor \[H2O\]" icon_state = "whitebrs" canister_color = "whitebrs" can_label = 0 -/obj/machinery/portable_atmospherics/canister/steam/Initialize() +/obj/machinery/portable_atmospherics/canister/watervapor/Initialize() . = ..() - air_contents.adjust_gas(GAS_STEAM, MolesForPressure()) + air_contents.adjust_gas(GAS_WATERVAPOR, MolesForPressure()) /obj/machinery/portable_atmospherics/canister/air - name = "Canister \[Air\]" + name = "\improper Air \[Air\]" icon_state = "grey" canister_color = "grey" can_label = 0 @@ -188,63 +197,68 @@ start_pressure = 0 can_label = 1 /obj/machinery/portable_atmospherics/canister/empty/air - name = "Canister: \[Air\]" + name = "\improper Air \[Air\]" icon_state = "grey" canister_color = "grey" /obj/machinery/portable_atmospherics/canister/empty/oxygen - name = "Canister: \[O2\]" + name = "\improper Oxygen \[O2\]" icon_state = "blue" canister_color = "blue" /obj/machinery/portable_atmospherics/canister/empty/phoron - name = "Canister \[Phoron\]" + name = "\improper Phoron \[Phoron\]" icon_state = "orange" canister_color = "orange" /obj/machinery/portable_atmospherics/canister/empty/nitrogen - name = "Canister \[N2\]" + name = "\improper Nitrogen \[N2\]" icon_state = "red" canister_color = "red" /obj/machinery/portable_atmospherics/canister/empty/carbon_dioxide - name = "Canister \[CO2\]" + name = "\improper Carbon Dioxide \[CO2\]" icon_state = "black" canister_color = "black" /obj/machinery/portable_atmospherics/canister/empty/sleeping_agent - name = "Canister \[N2O\]" + name = "\improper Nitrous Oxide \[N2O\]" icon_state = "redws" canister_color = "redws" /obj/machinery/portable_atmospherics/canister/empty/hydrogen - name = "Canister \[H\]" + name = "\improper Hydrogen \[H\]" icon_state = "purple" canister_color = "purple" /obj/machinery/portable_atmospherics/canister/empty/hydrogen/deuterium - name = "Canister \[2H\]" + name = "\improper Deuterium \[2H\]" icon_state = "teal" canister_color = "teal" /obj/machinery/portable_atmospherics/canister/empty/hydrogen/tritium - name = "Canister \[3H\]" + name = "\improper Tritium \[3H\]" icon_state = "pink" canister_color = "pink" /obj/machinery/portable_atmospherics/canister/empty/helium - name = "Canister \[He\]" + name = "\improper Helium \[He\]" icon_state = "green" canister_color = "green" -/obj/machinery/portable_atmospherics/canister/empty/boron - name = "Canister \[B\]" - icon_state = "lightblue" - canister_color = "lightblue" +/obj/machinery/portable_atmospherics/canister/empty/heliumfuel + name = "\improper Helium-3 \[3He\]" + icon_state = "helium3" + canister_color = "helium3" /obj/machinery/portable_atmospherics/canister/empty/sulfur_dioxide - name = "Canister \[SO2\]" + name = "\improper Sulfur Dioxide \[SO2\]" icon_state = "lightgreen" canister_color = "lightgreen" /obj/machinery/portable_atmospherics/canister/empty/nitrogen_dioxide - name = "Canister \[NO2\]" + name = "\improper Nitrogen Dioxide \[NO2\]" icon_state = "brown" canister_color = "brown" /obj/machinery/portable_atmospherics/canister/empty/chlorine - name = "Canister \[Cl2\]" + name = "\improper Chlorine \[Cl2\]" icon_state = "darkyellow" canister_color = "darkyellow" -/obj/machinery/portable_atmospherics/canister/empty/steam - name = "Canister \[H2O\]" +/obj/machinery/portable_atmospherics/canister/empty/watervapor + name = "\improper Water Vapor \[H2O\]" + icon_state = "whitebrs" + canister_color = "whitebrs" + +/obj/machinery/portable_atmospherics/canister/deuttrit + name = "\improper Fusion Reactor Cold Ignition Mix \[2H-3H\]" icon_state = "whitebrs" canister_color = "whitebrs" @@ -549,11 +563,11 @@ update_flag "\[Deuterium\]" = "teal", "\[Tritium\]" = "pink", "\[Helium\]" = "green", - "\[Boron\]" = "lightblue", + "\[Helium-3\]" = "helium3", "\[Sulfur Dioxide\]" = "lightgreen", "\[Nitrogen Dioxide\]" = "brown", "\[Chlorine\]" = "darkyellow", - "\[Steam\]" = "whitebrs", + "\[Water Vapor\]" = "whitebrs", "\[CAUTION\]" = "yellow" ) var/label = tgui_input_list(usr, "Choose canister label.", "Gas Canister", colors) @@ -612,10 +626,7 @@ update_flag . = ..() src.air_contents.temperature = 303.15 -/// Keeping the chlorine canister with the skull on it seems fun for antags. -/obj/machinery/portable_atmospherics/canister/chlorine/antag - name = "Canister: \[Cl2\]" - icon_state = "poisonous" - canister_color = "poisonous" - desc = "A canister of Chlorine, with a warning label for poisonous gasses." - can_label = 0 +/obj/machinery/portable_atmospherics/canister/deuttrit/Initialize() + . = ..() + src.air_contents.adjust_gas(GAS_DEUTERIUM, MolesForPressure()) + src.air_contents.adjust_gas(GAS_TRITIUM, MolesForPressure()/3) diff --git a/code/game/machinery/atmoalter/scrubber.dm b/code/game/machinery/atmoalter/scrubber.dm index b8816d2c787..692b1080330 100644 --- a/code/game/machinery/atmoalter/scrubber.dm +++ b/code/game/machinery/atmoalter/scrubber.dm @@ -17,7 +17,7 @@ var/minrate = 0 var/maxrate = PRESSURE_ONE_THOUSAND - var/list/scrubbing_gas = list(GAS_PHORON, GAS_CO2, GAS_N2O, GAS_HYDROGEN, GAS_HELIUM, GAS_DEUTERIUM, GAS_TRITIUM, GAS_BORON, GAS_SULFUR, GAS_NO2, GAS_CHLORINE, GAS_STEAM) + var/list/scrubbing_gas = list(GAS_PHORON, GAS_CO2, GAS_N2O, GAS_HYDROGEN, GAS_HELIUM, GAS_DEUTERIUM, GAS_TRITIUM, GAS_HELIUMFUEL, GAS_SULFUR, GAS_NO2, GAS_CHLORINE, GAS_WATERVAPOR) /obj/machinery/portable_atmospherics/powered/scrubber/mechanics_hints(mob/user, distance, is_adjacent) . += ..() diff --git a/code/game/machinery/bluespace_drive.dm b/code/game/machinery/bluespace_drive.dm index 45ca4a9e052..026493f660a 100644 --- a/code/game/machinery/bluespace_drive.dm +++ b/code/game/machinery/bluespace_drive.dm @@ -21,16 +21,16 @@ density = TRUE // opacity = TRUE - ///The atmospherics interface used to give gasses to the drive + /// The atmospherics interface used to give gasses to the drive var/obj/machinery/atmospherics/portables_connector/atmos_interface - ///The interface used to give fuel (phoron) to the drive + /// The interface used to give fuel (phoron) to the drive var/obj/machinery/atmospherics/portables_connector/fuel_interface - ///The internal gas that the drive uses, fed by the `atmos_interface` + /// The internal gas that the drive uses, fed by the `atmos_interface` var/datum/gas_mixture/internal_gas = new() - ///The fuel gas that the drive uses, fed by the `fuel_interface` + /// The fuel gas that the drive uses, fed by the `fuel_interface` var/datum/gas_mixture/fuel_gas = new() /** @@ -45,20 +45,17 @@ var/static/list/gas_mole_to_power_factor = list( GAS_PHORON = 1, - /* Common gasses */ - GAS_HYDROGEN = 0.7, - GAS_OXYGEN = 0.9, - GAS_NITROGEN = 0.3, GAS_CO2 = 0.24, - GAS_N2O = 0.5, - - /* Uncommon gasses, if you work out to get them, you deserve better power */ + GAS_NITROGEN = 0.3, + GAS_N2O = 0.32, + GAS_HELIUM = 0.4, + GAS_HYDROGEN = 0.8, + GAS_OXYGEN = 0.85, GAS_SULFUR = 1.2, - GAS_CHLORINE = 1, - GAS_HELIUM = 1.6, - GAS_DEUTERIUM = 1.67, - GAS_TRITIUM = 1.68, - GAS_BORON = 1.69 + GAS_CHLORINE = 2.75, + GAS_DEUTERIUM = 3, + GAS_TRITIUM = 4, + GAS_HELIUMFUEL = 6 ) /** @@ -68,28 +65,28 @@ */ var/static/minimum_phoron_moles_per_jump = 1000 //About half of a full canister - ///The power given to the drive, due to gasses + /// The power given to the drive, due to gases var/power_from_gas - ///The rotation we'll be using to jump + /// The rotation we'll be using to jump var/rotation = 0 - ///The angle we'll be using to jump + /// The angle we'll be using to jump var/angle = 60 - ///If the drive is energized + /// If the drive is energized var/energized = FALSE - ///The looping sound that plays when the drive is energized + /// The looping sound that plays when the drive is energized var/datum/looping_sound/bluespace_drive/energized_looping_sound - ///The timer id for the initiate jump sequence + /// The timer id for the initiate jump sequence var/initiate_jump_timer_id - ///The singularity that this drive made + /// The singularity that this drive made var/obj/singularity/bluespace_drive/our_singularity - ///Our bluespace jump event + /// Our bluespace jump event var/datum/event/bluespace_jump/bluespace_jump_event diff --git a/code/game/machinery/doors/blast_door.dm b/code/game/machinery/doors/blast_door.dm index 606aa53ed27..d99e5d2cbd8 100644 --- a/code/game/machinery/doors/blast_door.dm +++ b/code/game/machinery/doors/blast_door.dm @@ -18,6 +18,7 @@ closed_layer = ABOVE_DOOR_LAYER explosion_resistance = 25 pass_flags_self = PASSDOORS + rad_resistance_modifier = 6 /// Most blast doors are infrequently toggled and sometimes used with regular doors anyways. /// Turning this off prevents awkward zone geometry in places like medbay lobby, for example. diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index df21a1aeca1..7330f37b507 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -88,8 +88,20 @@ Class Procs: init_flags = INIT_MACHINERY_PROCESS_SELF pass_flags_self = PASSMACHINE | LETPASSCLICKS - /// Controlled by a bitflag, differentiates between a few different possible states including the machine being broken or unpowered. - /// See code/__defines/machinery.dm for the possible states. + /** + * 'stat' = 'state'. Controlled by a bitflag, differentiates between a few different possible states including the machine being broken or unpowered. + * These definitions are copypasted from 'code/__DEFINES/machinery.dm' so they can be easily referenced in code. + * SO THAT MEANS IF THEY'VE BEEN UPDATED THERE, MAKE SURE THEY'RE UPDATED HERE! + * + * #define BROKEN 0x1 + * #define NOPOWER 0x2 + * #define POWEROFF 0x4 // TBD. + * #define MAINT 0x8 // Under maintenance. + * #define EMPED 0x10 // Temporary broken by EMP pulse. + * + * #define INOPERABLE(machine) (machine.stat & (BROKEN|NOPOWER|MAINT|EMPED)) + * #define OPERABLE(machine) !INOPERABLE(machine) + */ var/stat = 0 /// Is this machine emagged? var/emagged = 0 diff --git a/code/game/machinery/telecomms/telecommunications.dm b/code/game/machinery/telecomms/telecommunications.dm index 37c9357fb6c..19006b1d349 100644 --- a/code/game/machinery/telecomms/telecommunications.dm +++ b/code/game/machinery/telecomms/telecommunications.dm @@ -21,7 +21,7 @@ density = TRUE anchored = TRUE idle_power_usage = 600 // WATTS - active_power_usage = 2 KILO WATTS + active_power_usage = 15 KILO WATTS /// List of machines this machine is linked to var/list/links = list() diff --git a/code/game/objects/items/weapons/manuals.dm b/code/game/objects/items/weapons/manuals.dm index 4ddfb0a8c39..d8fd0cb0c32 100644 --- a/code/game/objects/items/weapons/manuals.dm +++ b/code/game/objects/items/weapons/manuals.dm @@ -86,11 +86,11 @@ /obj/item/book/manual/supermatter_engine - name = "Supermatter Engine Operating Manual" + name = "Supermatter Reactor Operating Manual" icon_state = "bookSupermatter" item_state = "book1" author = "Engineering Encyclopedia" - title = "Supermatter Engine Operating Manual" + title = "Supermatter Reactor Operating Manual" /obj/item/book/manual/supermatter_engine/Initialize() . = ..() @@ -106,17 +106,17 @@ -

OPERATING MANUAL FOR MK 1 PROTOTYPE THERMOELECTRIC SUPERMATTER ENGINE 'TOMBOLA'

+

OPERATING MANUAL FOR MK 1 PROTOTYPE THERMOELECTRIC SUPERMATTER REACTOR 'TOMBOLA'


OPERATING PRINCIPLES


-
  • The supermatter crystal serves as the fundamental power source of the engine. Upon being charged, it begins to emit large amounts of heat and radiation, as well and oxygen and phoron gas. As oxygen accelerates the reaction, and phoron carries the risk of fire, these must be filtered out.
  • +
  • The supermatter crystal serves as the fundamental power source of the reactor. Upon being charged, it begins to emit large amounts of heat and radiation, as well and oxygen and phoron gas. As oxygen accelerates the reaction, and phoron carries the risk of fire, these must be filtered out.

  • Air in the reactor chamber housing the supermatter is circulated through the reactor loop, which passes through the filters and thermoelectric generators. The thermoelectric generators transfer heat from the reactor loop to the colder radiator loop, thereby generating power. Additional power is generated from internal turbines in the circulators.

  • Air in the radiator loop is circulated through the radiator bank, located in space. This rapidly cools the air, preserving the temperature differential needed for power generation.

  • -
  • The MK 1 Prototype Thermoelectric Supermatter Engine is designed to operate at reactor temperatures of 3000K to 4000K and generate up to 1MW of power. Beyond 1MW, the thermoelectric generators will begin to lose power through electrical discharge, reducing efficiency, but additional power generation remains feasible.
  • +
  • The MK 1 Prototype Thermoelectric Supermatter Reactor is designed to operate at reactor temperatures of 3000K to 4000K and generate up to 5MW of power. Beyond 5MW, the thermoelectric generators will begin to lose power through electrical discharge, reducing efficiency, but additional power generation remains feasible.

  • The crystal structure of the supermatter will begin to liquefy if its temperature exceeds 5000K. This eventually results in a massive release of light, heat and radiation, disintegration of both the supermatter crystal and most of the surrounding area, and as as-of-yet poorly documented psychological effects on all animals within a 2km radius. Appropriate action should be taken to stabilize or eject the supermatter before such occurs.

  • @@ -128,26 +128,26 @@

    STARTUP PROCEDURE

      -
    1. Don radiation hood, radiation suit and meson goggles, without these PPE, you will become irradiated.
    2. +
    3. Don radiation hood, radiation suit and safety goggles, without these PPE, you will become irradiated.
    4. Fill the hot loop's (northernmost) port with ONE canister of phoron.
    5. Fill the cold loop's (southernmost) port with TWO canisters of phoron.
    6. -
    7. Ensure that ALL pumps and filters in the engine and waste room are on and operating at maximum power.
    8. +
    9. Ensure that ALL pumps and filters in the reactor and waste room are on and operating at maximum power.
    10. Ensure the both the emergency coolant valves (located to the west and east of the TEGs) are NOT active.
    11. Set the two waste loop filters to filter PHORON.
    12. -
    13. Set all three of the northernmost coolers to ON keep their temperature setting at its default of 293k.
    14. -
    15. Fire twenty-one to twenty-five pulses from the emitter at supermatter crystal. Reactor blast doors MUST be open for this procedure.
    16. -
    17. Set the SMES in the adjacent room (not the one in the engine bay) to NO input and MAXIMUM output until the power is drained completely.
    18. +
    19. Set all three of the northernmost coolers to ON keep their temperature setting at its default of 273 K.
    20. +
    21. Fire forty to sixty pulses from the emitter at supermatter crystal. Reactor blast doors MUST be open for this procedure.
    22. +
    23. Set the SMES in the adjacent room (not the one in the reactor bay) to NO input and MAXIMUM output until the power is drained completely.
    24. Go to hard storage and retrieve two coils, Transmission and Capacitance.
    25. Open the SMES unit's maintenance panel with your screwdriver and insert both coils, close panel once finished.
    26. -
    27. Set input to maximum, and output to 1400000 (1.4 MW).
    28. +
    29. Set input to maximum, and output to 5900000 (5.9 MW).

    OPERATION AND MAINTENANCE

      -
    1. Ensure that radiation protection and meson goggles are worn at ALL times while working in the engine room.
    2. +
    3. Ensure that radiation protection and safety goggles are worn at ALL times while working in the reactor room.
    4. Ensure that reactor and radiator loops are undamaged and unobstructed.
    5. Ensure that phoron and oxygen gas exhaust from filters is properly contained or disposed. Do not allow exhaust pressure to exceed 4500 kPa.
    6. -
    7. Ensure that engine room Area Power Controller (APC) and engine Superconducting Magnetic Energy Storage unit (SMES) are properly charged.
    8. +
    9. Ensure that reactor room Area Power Controller (APC) and reactor Superconducting Magnetic Energy Storage unit (SMES) are properly charged.
    10. Ensure that reactor temperature does not exceed 5000K. In event of reactor temperature exceeding 5000K, see EMERGENCY COOLING PROCEDURE.
    11. In event of imminent and/or unavoidable delamination, see EJECTION PROCEDURE.
    @@ -156,14 +156,14 @@
    1. Open Emergency Cooling Valve 1 and Emergency Cooling Valve 2.
    2. When reactor temperature returns to safe operating levels, close Emergency Cooling Valve 1 and Emergency Cooling Valve 2.
    3. -
    4. Add additional phoron canister to the COLD LOOP.
    5. -
    6. If reactor temperature does not return to safe operating levels, see EJECTION PROCEDURE.
    7. +
    8. If reactor temperature does not return to safe operating levels, add emergency liquid nitrogen canisters to the hot AND cold loops.
    9. +
    10. If reactor temperature still does not return to safe operating levels, see EJECTION PROCEDURE.

    EJECTION PROCEDURE

      -
    1. Press Engine Ventilatory Control button to open engine core vent to space.
    2. -
    3. Press Emergency Core Eject button to eject supermatter crystal. NOTE: Attempting crystal ejection while engine core vent is closed will result in ejection failure.
    4. +
    5. Press Reactor Ventilatory Control button to open reactor core vent to space.
    6. +
    7. Press Emergency Core Eject button to eject supermatter crystal. NOTE: Attempting crystal ejection while reactor core vent is closed will result in ejection failure.
    8. In event of ejection failure, evacuate the area immediately, inform medical and prepare anti-radiation medicine.
    9. Start work on repairing telecommunications and setting up an alternate method of power generation (Solars, Tesla).
    @@ -187,11 +187,11 @@
  • Q: I accidentally put way too many emitter shots into the crystal! What do I do!?

  • -
  • A: The supermatter will heat up more, so all you do is place more coolant (likely phoron) into the cold loop. Once the situation settles, check if you're producing too little power, and emitter it some more.
  • +
  • A: The supermatter will heat up more, so all you do is place more coolant (likely hydrogen or phoron) into the cold loop. Once the situation settles, check if you're producing too little power, and emitter it some more.

  • Q: Are other gasses safe to use in the loops?

  • -
  • A: Mostly, yes. More skilled engineers will likely teach you new methods of using other gasses. Our recommendation is to use phoron if you're unsure. The best idea is to ask your co-workers for help, especially if they set up the engine.
  • +
  • A: Mostly, yes. More skilled engineers will likely teach you new methods of using other gasses. Our recommendation is to use phoron if you're unsure. The best idea is to ask your co-workers for help, especially if they set up the reactor.

  • Q: What do the emergency valves actually do?

  • @@ -199,11 +199,99 @@
  • Q: An engineer walked into the room with no PPE, why did they do that?

  • -
  • A: If the supermatter engine hasn't been started yet, it will not output radiation. Our recommendation is to be safe instead of sorry, however. If the engine has started, call medical and security, they may be attempting to do an emergency fix, or they are mentally unwell. Remember that non-organics do not suffer from radiation poisoning.
  • +
  • A: If the supermatter reactor hasn't been started yet, it will not output radiation. Our recommendation is to be safe instead of sorry, however. If the reactor has started, call medical and security, they may be attempting to do an emergency fix, or they are mentally unwell. Remember that non-organics do not suffer from radiation poisoning.

  • "} +/obj/item/book/manual/fusion_reactor + name = "INDRA Fusion Reactor Operating Manual" + icon_state = "bookFusionReactor" + item_state = "book1" + author = "Engineering Encyclopedia" + title = "INDRA Fusion Reactor Operating Manual" + +/obj/item/book/manual/fusion_reactor/Initialize() + . = ..() + dat = {" + + + + +

    OPERATING MANUAL FOR INDRA MK VIII FUSION REACTOR

    +
    +

    OPERATING PRINCIPLES

    +
    + The INDRA Mk VIII fusion reactor is the secondary source of power for the SCCV Horizon, intended to be operated with primary power already available. Reactants are introduced to the reactor core via gas connection and/or solid fuel injection and contained within a toroidal magnetic field, generated by a central Tokamak. High-energy pulses are fired at this magnetic bottle using a Gyrotron to ignite the fusion mix, and the reactor machinery converts the resultant thermal energy to electricity. +
    + Interactions between different types of particles have unique properties. For example, the easiest initial fusion reaction, Deuterium-Tritium, requires very low temperatures to achieve, but is very ‘dirty,’ producing large amounts of radiation and internal instability in the core. The Fusion Codex, available Engineering terminals or PDA, is an exhaustive list of all reactions that can be sustained by the INDRA Mk VIII. +
    + The Gyrotron, in addition to providing energy, also serves to moderate and stabilize the core field. All fusion reactions induce some amount of core instability, and the Gyrotron must be fired continuously in order to keep instability at a minimum. Any object placed within the plasma torus will cause significant instability, as can running it at large sizes with volatile reaction chains active. +
    + In the event that instability reaches 100%, the reactor core will violently rupture, causing several cascading negative effects. The collapse of the magnetic field will result in the uncontrolled release of the superheated plasma, followed by a massive explosion due to the thermal shock. Additionally, widespread EMP effects will be encountered, scalar with plasma temperatures at the time of rupture. +
    + Because the Gyrotron requires a very high power outlay, and the Gyrotron is required to maintain core stability, it is strongly recommended to only run the INDRA when the primary power source is already online. If no external power is available, a portable generator can be employed temporarily to provide an initial boost to begin fusion. +
    + The INDRA Mk VIII Fusion Reactor is designed to operate at reactor temperatures up to ten million K, and generate up to 12MW of power. +
    +

    HARDWARE CONFIGURATION

    + In the event that any machinery comprising the INDRA Mk VIII Fusion Reactor is rendered inoperable, circuit boards for each part can be fabricated and installed in new machine frames alongside requisite components (detailed with each board). On construction, these replacement parts can then be linked to the primary reactor network using a multitool. +

    STARTUP PROCEDURE

    +
      +
    1. Set the SMES in the adjacent room (not the one in the reactor bay) to NO input and MAXIMUM output.
    2. +
    3. Don radiation suit and radiation hood whenever entering the reactor bay. When the reactor is running, without PPE, you will become irradiated.
    4. +
    5. Retrieve canister labeled ‘Fusion Reactor Cold Ignition Mix (2H-3H)’ from reactor bay storage, and wrench it onto one of the available gas connectors.
    6. +
    7. Enable the gas connector's pump at 10 kPa output pressure.
    8. +
    9. Go to the Reactor Control Room.
    10. +
    11. On the Core Control Console, set Field Strength to 40, then hit Initiate Fusion.
    12. +
    13. On the Gyrotron Control Console, set Gyrotron Strength to 25 and Fire Delay to 3, then hit Activate.
    14. +
    15. Go to hard storage and retrieve two Transmission coils.
    16. +
    17. Ensure that the SMES is fully discharged. +
    18. If the SMES unit is fully discharged, open the unit's maintenance panel with your screwdriver and insert both coils; close panel once finished.
    19. +
    20. Set input to maximum, and output to 5900000 (5.9 MW).
    21. +
    +
    +

    OPERATION AND MAINTENANCE

    +
      +
    1. Ensure that radiation protection are worn at ALL times while working in the reactor bay.
    2. +
    3. Ensure that the gyrotron has a stable supply of power; keeping the Containment Grid breaker open is recommended at all times.
    4. +
    5. Ensure that fuel supply remains available throughout the entirety of the shift.
    6. +
    7. Ensure that reactor bay Area Power Controller (APC) and reactor Superconducting Magnetic Energy Storage unit (SMES) are properly charged.
    8. +
    9. Ensure that reactor instability does not exceed 50%. In event of reactor instability exceeding 50%, see EMERGENCY STABILIZATION PROCEDURE.
    10. +
    11. In event of imminent and/or unavoidable rupture, see DISASTER CONTROL PROCEDURE.
    12. +
    +
    +

    EMERGENCY STABILIZATION PROCEDURE

    +
      +
    1. Reduce core Field Strength to 20.
    2. +
    3. Cut all fuel sources; disable both gas pumps and fuel injectors.
    4. +
    5. Hit the INDRA Core Vent buttons, located on either side of the aft wall of the reactor bay.
    6. +
    7. Ensure Gyrotron has sufficient power and is firing regularly.
    8. +
    9. Increase Gyrotron power and/or reduce Gyrotron fire delay.
    10. +
    +
    +

    DISASTER CONTROL PROCEDURE

    +
    + Ensure that you have performed all steps in EMERGENCY STABILIZATION PROCEDURE. In the event that the reactor is rapidly approaching 100% instability in spite of all preventative measures, a rupture event is highly likely. In this event: +
      +
    1. Evacuate the reactor bay, control room, and any adjoining compartments immediately.
    2. +
    3. Alert command frequencies, and/or sound general call to move away from all compartments near or adjoining the reactor bay.
    4. +
    5. Brace for release of superheated plasma, explosion and immediate explosive decompression, and powerful EMP (which may encompass much of the ship, dependent on temperature at time of rupture event.
    6. +
    7. Ensure immediate integrity of affected area, assist with evacuation of any wounded crew, etc.
    8. +
    9. Ensure power remains available for the rest of the ship; triage power allocation as appropriate.
    10. +
    11. Commence with repairs and reconstruction of reactor bay and any other damaged ship areas.
    12. +
    13. Report to your nearest Chief Engineer for evaluation.
    14. +
    + + "} + /obj/item/book/manual/wiki/engineering_hacking name = "Hacking" icon_state ="bookHacking" diff --git a/code/game/objects/items/weapons/power_cells.dm b/code/game/objects/items/weapons/power_cells.dm index f70ed825858..af886d9f04b 100644 --- a/code/game/objects/items/weapons/power_cells.dm +++ b/code/game/objects/items/weapons/power_cells.dm @@ -13,7 +13,7 @@ w_class = WEIGHT_CLASS_NORMAL /// Note %age converted to actual charge in New() var/charge = 0 - var/maxcharge = 1000 + var/maxcharge = 2500 /// True if rigged to explode var/rigged = FALSE /// If not 100% reliable, it will build up faults. @@ -33,14 +33,14 @@ force = 0 throw_speed = 5 throw_range = 7 - maxcharge = 100 + maxcharge = 250 matter = list(MATERIAL_STEEL = 70, MATERIAL_GLASS = 5) /obj/item/cell/device/high name = "advanced power cell" desc = "A small, advanced power cell designed to power more energy demanding handheld devices." icon_state = "hdevice" - maxcharge = 250 + maxcharge = 500 matter = list(MATERIAL_STEEL = 150, MATERIAL_GLASS = 10) /obj/item/cell/device/variable/New(newloc, charge_amount) @@ -52,7 +52,7 @@ name = "old power cell" desc = "A cheap, old power cell. It's probably been in use for quite some time now." origin_tech = list(TECH_POWER = 0) - maxcharge = 500 + maxcharge = 1500 matter = list(DEFAULT_WALL_MATERIAL = 700, MATERIAL_GLASS = 40) /obj/item/cell/crap/empty/Initialize() @@ -79,14 +79,14 @@ /obj/item/cell/apc name = "heavy-duty power cell" origin_tech = list(TECH_POWER = 1) - maxcharge = 5000 + maxcharge = 15000 matter = list(DEFAULT_WALL_MATERIAL = 700, MATERIAL_GLASS = 50) /obj/item/cell/high name = "high-capacity power cell" origin_tech = list(TECH_POWER = 2) icon_state = "hcell" - maxcharge = 10000 + maxcharge = 30000 matter = list(DEFAULT_WALL_MATERIAL = 700, MATERIAL_GLASS = 60) /obj/item/cell/high/empty/Initialize() @@ -98,7 +98,7 @@ name = "super-capacity power cell" origin_tech = list(TECH_POWER = 5) icon_state = "scell" - maxcharge = 20000 + maxcharge = 60000 matter = list(DEFAULT_WALL_MATERIAL = 700, MATERIAL_GLASS = 70) /obj/item/cell/super/empty/Initialize() @@ -110,7 +110,7 @@ name = "hyper-capacity power cell" origin_tech = list(TECH_POWER = 6) icon_state = "hpcell" - maxcharge = 30000 + maxcharge = 90000 matter = list(DEFAULT_WALL_MATERIAL = 200, MATERIAL_GOLD = 50, MATERIAL_SILVER = 50, MATERIAL_GLASS = 40) /obj/item/cell/hyper/empty/Initialize() @@ -122,7 +122,7 @@ name = "infinite-capacity power cell!" icon_state = "icell" origin_tech = null - maxcharge = 30000 //determines how badly mobs get shocked + maxcharge = 180000 //determines how badly mobs get shocked matter = list(DEFAULT_WALL_MATERIAL = 700, MATERIAL_GLASS = 80) /obj/item/cell/infinite/check_charge() @@ -148,7 +148,7 @@ origin_tech = list(TECH_POWER = 2, TECH_BIO = 4) icon = 'icons/mob/npc/slimes.dmi' icon_state = "yellow slime extract" - maxcharge = 15000 + maxcharge = 45000 matter = null /// Slime cores recharges 10% every one minute. @@ -177,7 +177,7 @@ name = "miniature power cell" desc = "A small power cell intended for use with emergency lighting." /// Emergency lights use 0.2 W per tick, meaning ~10 minutes of emergency power from a cell - maxcharge = 120 + maxcharge = 500 w_class = WEIGHT_CLASS_TINY matter = list(MATERIAL_GLASS = 20) diff --git a/code/game/objects/random/tech.dm b/code/game/objects/random/tech.dm index 83734eaaa78..66e49a72b28 100644 --- a/code/game/objects/random/tech.dm +++ b/code/game/objects/random/tech.dm @@ -281,7 +281,7 @@ /obj/machinery/portable_atmospherics/canister/empty/oxygen = 1, /obj/machinery/portable_atmospherics/canister/empty/sleeping_agent = 1, // rare: - /obj/machinery/portable_atmospherics/canister/empty/boron = 0.1, + /obj/machinery/portable_atmospherics/canister/empty/heliumfuel = 0.1, /obj/machinery/portable_atmospherics/canister/empty/chlorine = 0.1, /obj/machinery/portable_atmospherics/canister/empty/helium = 0.1, /obj/machinery/portable_atmospherics/canister/empty/nitrogen_dioxide = 0.1, @@ -302,7 +302,7 @@ /obj/machinery/portable_atmospherics/canister/oxygen = 1, /obj/machinery/portable_atmospherics/canister/sleeping_agent = 1, // rare: - /obj/machinery/portable_atmospherics/canister/boron = 0.1, + /obj/machinery/portable_atmospherics/canister/heliumfuel = 0.1, /obj/machinery/portable_atmospherics/canister/chlorine = 0.1, /obj/machinery/portable_atmospherics/canister/helium = 0.1, /obj/machinery/portable_atmospherics/canister/nitrogen_dioxide = 0.1, diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 32ea921107f..3f40814e3ac 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -536,6 +536,8 @@ maximal_heat = T0C + 2000 damage_per_fire_tick = 1 // This should last for 80 fire ticks if the window is not damaged at all. The idea is that borosilicate windows have something like ablative layer that protects them for a while. maxhealth = 40 + /// Phoron-infused silicate + rad_resistance_modifier = 4 /obj/structure/window/borosilicate/reinforced name = "reinforced borosilicate glass pane" @@ -567,6 +569,7 @@ smoothing_flags = SMOOTH_TRUE can_be_unanchored = TRUE layer = FULL_WINDOW_LAYER + rad_resistance_modifier = 4 /obj/structure/window/shuttle/legion name = "reinforced cockpit window" @@ -900,6 +903,7 @@ maxhealth = 160 // Two reinforced borosilicate glass panes worth of health, since that's the minimum you need to break through to get to the other side. reinf = TRUE maximal_heat = T0C + 4000 + rad_resistance_modifier = 4 #undef FULL_REINFORCED_WINDOW_DAMAGE_FORCE #undef REINFORCED_WINDOW_DAMAGE_FORCE diff --git a/code/modules/atmospherics/components/omni_devices/_omni_extras.dm b/code/modules/atmospherics/components/omni_devices/_omni_extras.dm index 8afeeb6f032..2e8c0283939 100644 --- a/code/modules/atmospherics/components/omni_devices/_omni_extras.dm +++ b/code/modules/atmospherics/components/omni_devices/_omni_extras.dm @@ -14,11 +14,11 @@ #define ATM_2H 9 //Deuterium #define ATM_3H 10 //Tritium #define ATM_HE 11 //Helium -#define ATM_B 12 //Boron +#define ATM_3HE 12 //Helium-3 #define ATM_SO2 13 //Sulfur Dioxide #define ATM_NO2 14 //Nitrogen Dioxide #define ATM_CL2 15 //Chlorine -#define ATM_H2O 16 //Steam +#define ATM_H2O 16 //Water vapor //-------------------------------------------- // Omni port datum @@ -121,8 +121,8 @@ return GAS_TRITIUM if(ATM_HE) return GAS_HELIUM - if(ATM_B) - return GAS_BORON + if(ATM_3HE) + return GAS_HELIUMFUEL if(ATM_SO2) return GAS_SULFUR if(ATM_NO2) @@ -130,6 +130,6 @@ if(ATM_CL2) return GAS_CHLORINE if(ATM_H2O) - return GAS_STEAM + return GAS_WATERVAPOR else return null diff --git a/code/modules/atmospherics/components/omni_devices/filter.dm b/code/modules/atmospherics/components/omni_devices/filter.dm index c60f1ec0fb9..1b566d39637 100644 --- a/code/modules/atmospherics/components/omni_devices/filter.dm +++ b/code/modules/atmospherics/components/omni_devices/filter.dm @@ -166,8 +166,8 @@ return "Tritium" if(ATM_HE) return "Helium" - if(ATM_B) - return "Boron" + if(ATM_3HE) + return "Helium-3" if(ATM_SO2) return "Sulfur Dioxide" if(ATM_NO2) @@ -175,7 +175,7 @@ if(ATM_CL2) return "Chlorine" if(ATM_H2O) - return "Steam" + return "Water Vapor" else return null @@ -201,7 +201,7 @@ if("switch_mode") switch_mode(dir_flag(href_list["dir"]), mode_return_switch(href_list["mode"])) if("switch_filter") - var/new_filter = input(usr,"Select filter mode:","Change filter",href_list["mode"]) in list("None", "Oxygen", "Nitrogen", "Carbon Dioxide", "Phoron", "Nitrous Oxide", "Hydrogen", "Deuterium", "Tritium", "Helium", "Boron", "Sulfur Dioxide", "Nitrogen Dioxide", "Chlorine", "Steam") + var/new_filter = input(usr,"Select filter mode:","Change filter",href_list["mode"]) in list("None", "Oxygen", "Nitrogen", "Carbon Dioxide", "Phoron", "Nitrous Oxide", "Hydrogen", "Deuterium", "Tritium", "Helium", "Helium-3", "Sulfur Dioxide", "Nitrogen Dioxide", "Chlorine", "Water Vapor") switch_filter(dir_flag(href_list["dir"]), mode_return_switch(new_filter)) update_icon() @@ -228,15 +228,15 @@ return ATM_3H if("Helium") return ATM_HE - if("Boron") - return ATM_B + if("Helium-3") + return ATM_3HE if("Sulfur Dioxide") return ATM_SO2 if("Nitrogen Dioxide") return ATM_NO2 if("Chlorine") return ATM_CL2 - if("Steam") + if("Water Vapor") return ATM_H2O if("in") return ATM_INPUT diff --git a/code/modules/atmospherics/components/unary/vent_scrubber.dm b/code/modules/atmospherics/components/unary/vent_scrubber.dm index 72a93e413dc..1992f40adb2 100644 --- a/code/modules/atmospherics/components/unary/vent_scrubber.dm +++ b/code/modules/atmospherics/components/unary/vent_scrubber.dm @@ -163,11 +163,11 @@ "filter_2h" = (GAS_DEUTERIUM in scrubbing_gas), "filter_3h" = (GAS_TRITIUM in scrubbing_gas), "filter_he" = (GAS_HELIUM in scrubbing_gas), - "filter_b" = (GAS_BORON in scrubbing_gas), + "filter_b" = (GAS_HELIUMFUEL in scrubbing_gas), "filter_so2" = (GAS_SULFUR in scrubbing_gas), "filter_no2" = (GAS_NO2 in scrubbing_gas), "filter_cl" = (GAS_CHLORINE in scrubbing_gas), - "filter_h2o" = (GAS_STEAM in scrubbing_gas), + "filter_h2o" = (GAS_WATERVAPOR in scrubbing_gas), "sigtype" = "status" ) @@ -312,10 +312,10 @@ else if(signal.data["toggle_he_scrub"]) toggle += GAS_HELIUM - if(!isnull(signal.data["b_scrub"]) && text2num(signal.data["b_scrub"]) != (GAS_BORON in scrubbing_gas)) - toggle += GAS_BORON + if(!isnull(signal.data["b_scrub"]) && text2num(signal.data["b_scrub"]) != (GAS_HELIUMFUEL in scrubbing_gas)) + toggle += GAS_HELIUMFUEL else if(signal.data["toggle_b_scrub"]) - toggle += GAS_BORON + toggle += GAS_HELIUMFUEL if(!isnull(signal.data["so2_scrub"]) && text2num(signal.data["so2_scrub"]) != (GAS_SULFUR in scrubbing_gas)) toggle += GAS_SULFUR @@ -332,10 +332,10 @@ else if(signal.data["toggle_cl_scrub"]) toggle += GAS_CHLORINE - if(!isnull(signal.data["h2o_scrub"]) && text2num(signal.data["h2o_scrub"]) != (GAS_STEAM in scrubbing_gas)) - toggle += GAS_STEAM + if(!isnull(signal.data["h2o_scrub"]) && text2num(signal.data["h2o_scrub"]) != (GAS_WATERVAPOR in scrubbing_gas)) + toggle += GAS_WATERVAPOR else if(signal.data["toggle_h2o_scrub"]) - toggle += GAS_STEAM + toggle += GAS_WATERVAPOR scrubbing_gas ^= toggle diff --git a/code/modules/cargo/exports/materials.dm b/code/modules/cargo/exports/materials.dm index 69c622b0dd0..634e785bc0d 100644 --- a/code/modules/cargo/exports/materials.dm +++ b/code/modules/cargo/exports/materials.dm @@ -97,7 +97,7 @@ /datum/export/material/mhydrogen cost = 10 - material_id = "mhydrogen" + material_id = "metallic hydrogen" message = "metallic hydrogen sheets" /datum/export/material/aluminium diff --git a/code/modules/cargo/items/atmos.dm b/code/modules/cargo/items/atmos.dm index ae6dd022312..40a5b1725db 100644 --- a/code/modules/cargo/items/atmos.dm +++ b/code/modules/cargo/items/atmos.dm @@ -72,7 +72,7 @@ category = "atmos" name = "Canister (Air)" supplier = "hephaestus" - description = "Holds nitrogen-oxygen breatheable air. Has a built-in valve to allow for filling portable tanks." + description = "Holds a nitrogen-oxygen mixture of breathable air. Has a built-in valve to allow for filling portable tanks." price = 180 items = list( /obj/machinery/portable_atmospherics/canister/air @@ -82,14 +82,14 @@ groupable = FALSE spawn_amount = 1 -/singleton/cargo_item/canister_bo +/singleton/cargo_item/canister_3he category = "atmos" - name = "Canister (Boron)" + name = "Canister (Helium-3)" supplier = "hephaestus" - description = "Holds boron gas. Has a built-in valve to allow for filling portable tanks." - price = 380 + description = "Holds Helium-3 gas, a valuable fusion fuel. Has a built-in valve to allow for filling portable tanks." + price = 3800 items = list( - /obj/machinery/portable_atmospherics/canister/boron + /obj/machinery/portable_atmospherics/canister/heliumfuel ) access = ACCESS_ENGINE container_type = "box" @@ -100,7 +100,7 @@ category = "atmos" name = "Canister (CO2)" supplier = "hephaestus" - description = "Holds heavy CO2 gas. Has a built-in valve to allow for filling portable tanks." + description = "Holds heavy CO2 gas, whatever that is. Has a built-in valve to allow for filling portable tanks." price = 300 items = list( /obj/machinery/portable_atmospherics/canister/carbon_dioxide diff --git a/code/modules/custom_ka/cells.dm b/code/modules/custom_ka/cells.dm index 73ce5b7d33b..7d11c9e3731 100644 --- a/code/modules/custom_ka/cells.dm +++ b/code/modules/custom_ka/cells.dm @@ -292,5 +292,5 @@ origin_tech = list(TECH_MATERIAL = 4,TECH_ENGINEERING = 5,TECH_MAGNET = 4,TECH_POWER = 4) - type_to_take = "mhydrogen" + type_to_take = "metallic hydrogen" charge_per_sheet = 90 diff --git a/code/modules/integrated_electronics/subtypes/input.dm b/code/modules/integrated_electronics/subtypes/input.dm index fee57d813aa..5c2c0fb3aff 100644 --- a/code/modules/integrated_electronics/subtypes/input.dm +++ b/code/modules/integrated_electronics/subtypes/input.dm @@ -521,23 +521,23 @@ complexity = 9 inputs = list() outputs = list( - "pressure" = IC_PINTYPE_NUMBER, - "temperature" = IC_PINTYPE_NUMBER, - GAS_OXYGEN = IC_PINTYPE_NUMBER, - GAS_NITROGEN = IC_PINTYPE_NUMBER, - GAS_CO2 = IC_PINTYPE_NUMBER, - GAS_PHORON = IC_PINTYPE_NUMBER, - GAS_N2O = IC_PINTYPE_NUMBER, - GAS_HYDROGEN = IC_PINTYPE_NUMBER, - GAS_DEUTERIUM = IC_PINTYPE_NUMBER, - GAS_TRITIUM = IC_PINTYPE_NUMBER, - GAS_HELIUM = IC_PINTYPE_NUMBER, - GAS_BORON = IC_PINTYPE_NUMBER, - GAS_SULFUR = IC_PINTYPE_NUMBER, - GAS_NO2 = IC_PINTYPE_NUMBER, - GAS_CHLORINE = IC_PINTYPE_NUMBER, - GAS_STEAM = IC_PINTYPE_NUMBER, - "other" = IC_PINTYPE_NUMBER + "pressure" = IC_PINTYPE_NUMBER, + "temperature" = IC_PINTYPE_NUMBER, + GAS_OXYGEN = IC_PINTYPE_NUMBER, + GAS_NITROGEN = IC_PINTYPE_NUMBER, + GAS_CO2 = IC_PINTYPE_NUMBER, + GAS_PHORON = IC_PINTYPE_NUMBER, + GAS_N2O = IC_PINTYPE_NUMBER, + GAS_HYDROGEN = IC_PINTYPE_NUMBER, + GAS_DEUTERIUM = IC_PINTYPE_NUMBER, + GAS_TRITIUM = IC_PINTYPE_NUMBER, + GAS_HELIUM = IC_PINTYPE_NUMBER, + GAS_HELIUMFUE = IC_PINTYPE_NUMBER, + GAS_SULFUR = IC_PINTYPE_NUMBER, + GAS_NO2 = IC_PINTYPE_NUMBER, + GAS_CHLORINE = IC_PINTYPE_NUMBER, + GAS_WATERVAPOR = IC_PINTYPE_NUMBER, + "other" = IC_PINTYPE_NUMBER ) activators = list("scan" = IC_PINTYPE_PULSE_IN, "on scanned" = IC_PINTYPE_PULSE_OUT) spawn_flags = IC_SPAWN_RESEARCH @@ -642,11 +642,11 @@ var/deuterium_level = environment.gas[GAS_DEUTERIUM]/total_moles var/tritium_level = environment.gas[GAS_TRITIUM]/total_moles var/helium_level = environment.gas[GAS_HELIUM]/total_moles - var/boron_level = environment.gas[GAS_BORON]/total_moles + var/helium3_level = environment.gas[GAS_HELIUMFUEL]/total_moles var/sulfurdioxide_level = environment.gas[GAS_SULFUR]/total_moles var/nitrogendioxide_level = environment.gas[GAS_NO2]/total_moles var/chlorine_level = environment.gas[GAS_CHLORINE]/total_moles - var/steam_level = environment.gas[GAS_STEAM]/total_moles + var/watervapor_level = environment.gas[GAS_WATERVAPOR]/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)) @@ -659,11 +659,11 @@ set_pin_data(IC_OUTPUT, 8, round(deuterium_level*100,0.01)) set_pin_data(IC_OUTPUT, 9, round(tritium_level*100,0.01)) set_pin_data(IC_OUTPUT, 10, round(helium_level*100,0.01)) - set_pin_data(IC_OUTPUT, 11, round(boron_level*100,0.01)) + set_pin_data(IC_OUTPUT, 11, round(helium3_level*100,0.01)) set_pin_data(IC_OUTPUT, 12, round(sulfurdioxide_level*100,0.01)) set_pin_data(IC_OUTPUT, 13, round(nitrogendioxide_level*100,0.01)) set_pin_data(IC_OUTPUT, 14, round(chlorine_level*100,0.01)) - set_pin_data(IC_OUTPUT, 15, round(steam_level*100,0.01)) + set_pin_data(IC_OUTPUT, 15, round(watervapor_level*100,0.01)) set_pin_data(IC_OUTPUT, 16, round(unknown_level, 0.01)) set_pin_data(IC_OUTPUT, 17, round(unknown_level, 0.01)) else @@ -812,9 +812,9 @@ gas_name = GAS_HELIUM gas_display_name = GAS_HELIUM -/obj/item/integrated_circuit/input/gas_sensor/boron_level - gas_name = GAS_BORON - gas_display_name = GAS_BORON +/obj/item/integrated_circuit/input/gas_sensor/helium3_level + gas_name = GAS_HELIUMFUEL + gas_display_name = GAS_HELIUMFUEL /obj/item/integrated_circuit/input/gas_sensor/sulfurdioxide_level gas_name = GAS_SULFUR @@ -828,9 +828,9 @@ gas_name = GAS_CHLORINE gas_display_name = GAS_CHLORINE -/obj/item/integrated_circuit/input/gas_sensor/steam_level - gas_name = GAS_STEAM - gas_display_name = GAS_STEAM +/obj/item/integrated_circuit/input/gas_sensor/watervapor_level + gas_name = GAS_WATERVAPOR + gas_display_name = GAS_WATERVAPOR /obj/item/integrated_circuit/input/turfpoint name = "tile pointer" diff --git a/code/modules/materials/material_sheets.dm b/code/modules/materials/material_sheets.dm index b3b86e77ad7..801dca6a16a 100644 --- a/code/modules/materials/material_sheets.dm +++ b/code/modules/materials/material_sheets.dm @@ -616,3 +616,14 @@ . = ..() amount = max_amount update_icon() + +// Fusion fuel. +/obj/item/stack/material/boron + name = "boron" + icon_state = "puck" + default_type = MATERIAL_BORON + +/obj/item/stack/material/boron/full/Initialize() + . = ..() + amount = max_amount + update_icon() diff --git a/code/modules/materials/materials.dm b/code/modules/materials/materials.dm index 4b4996bd6c5..f1cbd3645b4 100644 --- a/code/modules/materials/materials.dm +++ b/code/modules/materials/materials.dm @@ -1222,3 +1222,12 @@ sheet_singular_name = "ingot" sheet_plural_name = "ingots" is_fusion_fuel = TRUE + +/material/boron + name = MATERIAL_BORON + stack_type = /obj/item/stack/material/boron + icon_colour = "#bbbbbb" + stack_origin_tech = list(TECH_MATERIAL = 3) + sheet_singular_name = "ingot" + sheet_plural_name = "ingots" + is_fusion_fuel = TRUE diff --git a/code/modules/mob/living/silicon/robot/items/gripper.dm b/code/modules/mob/living/silicon/robot/items/gripper.dm index ef7b8425d1d..b284c42db16 100644 --- a/code/modules/mob/living/silicon/robot/items/gripper.dm +++ b/code/modules/mob/living/silicon/robot/items/gripper.dm @@ -26,7 +26,8 @@ /obj/item/computer_hardware, /obj/item/pipe, /obj/item/smallDelivery, - /obj/item/gift + /obj/item/gift, + /obj/item/fuel_assembly ) var/list/cant_hold diff --git a/code/modules/modular_computers/file_system/programs/app_presets_.dm b/code/modules/modular_computers/file_system/programs/app_presets_.dm index 26f8c7586f4..63cac179b97 100644 --- a/code/modules/modular_computers/file_system/programs/app_presets_.dm +++ b/code/modules/modular_computers/file_system/programs/app_presets_.dm @@ -54,6 +54,7 @@ ABSTRACT_TYPE(/datum/modular_computer_app_presets) /datum/computer_file/program/rcon_console,\ /datum/computer_file/program/camera_monitor,\ /datum/computer_file/program/lighting_control,\ + /datum/computer_file/program/fusion_codex,\ ) #define COMPUTER_APP_PRESET_HORIZON_MEDICAL list(\ diff --git a/code/modules/modular_computers/file_system/programs/engineering/fusion_codex.dm b/code/modules/modular_computers/file_system/programs/engineering/fusion_codex.dm new file mode 100644 index 00000000000..f987b424c0c --- /dev/null +++ b/code/modules/modular_computers/file_system/programs/engineering/fusion_codex.dm @@ -0,0 +1,26 @@ +/datum/computer_file/program/fusion_codex + filename = "fusioncodex" + filedesc = "Fusion Codex" + program_icon_state = "medcomp" + program_key_icon_state = "teal_key" + extended_desc = "Useful program to reference reaction chains for nuclear fusion reactors." + size = 14 + requires_access_to_run = PROGRAM_ACCESS_LIST_ONE + required_access_run = list(ACCESS_ENGINE) + required_access_download = list(ACCESS_ENGINE) + available_on_ntnet = TRUE + tgui_id = "FusionCodex" + +/datum/computer_file/program/fusion_codex/ui_data(mob/user) + var/list/data = list() + // Gather data for computer header + var/headerdata = get_header_data(data["_PC"]) + if(headerdata) + data["_PC"] = headerdata + . = data + + // Here goes listification + if(!data["reactions"]) + data["reactions"] = SScodex.fusion_codex_data + + return data diff --git a/code/modules/overmap/exoplanets/exoplanet.dm b/code/modules/overmap/exoplanets/exoplanet.dm index 127f1cfa22b..5adcd1b527c 100644 --- a/code/modules/overmap/exoplanets/exoplanet.dm +++ b/code/modules/overmap/exoplanets/exoplanet.dm @@ -443,7 +443,7 @@ newgases -= GAS_PHORON if(prob(50)) //alium gas should be slightly less common than mundane shit newgases -= GAS_ALIEN - newgases -= GAS_STEAM + newgases -= GAS_WATERVAPOR var/total_moles = MOLES_CELLSTANDARD * rand(80,120)/100 var/badflag = 0 diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 81430cd710a..513abd87d3b 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -85,7 +85,7 @@ ABSTRACT_TYPE(/obj/machinery/power/apc) var/areastring = null var/obj/item/cell/cell /// Cap for how fast APC cells charge, as a percentage-per-tick (0.01 means cellcharge is capped to 1% per second) - var/chargelevel = 0.0005 + var/chargelevel = 0.005 var/cellused = 0 /// Initial cell charge % var/start_charge = 90 @@ -936,8 +936,8 @@ ABSTRACT_TYPE(/obj/machinery/power/apc) data["fail_time"] = failure_timer * 2 data["silicon_user"] = isAdmin || issilicon(user) data["is_AI_or_robot"] = isAI(user) || isrobot(user) - data["total_load"] = round(lastused_total) - data["total_charging"] = round(lastused_charging) + data["total_load"] = power_wattage_readable(lastused_total) + data["total_charging"] = power_wattage_readable(lastused_charging) data["is_operating"] = operating data["charge_mode"] = chargemode data["external_power"] = main_status @@ -947,9 +947,9 @@ ABSTRACT_TYPE(/obj/machinery/power/apc) data["emergency_mode"] = !emergency_lights data["time"] = time data["power_channels"] = list( - list("name" = "Equipment", "power_load" = lastused_equip, "status" = equipment), - list("name" = "Lighting", "power_load" = round(lastused_light), "status" = lighting), - list("name" = "Environment", "power_load" = round(lastused_environ), "status" = environ) + list("name" = "Equipment", "power_load" = power_wattage_readable(lastused_equip), "status" = equipment), + list("name" = "Lighting", "power_load" = power_wattage_readable(lastused_light), "status" = lighting), + list("name" = "Environment", "power_load" = power_wattage_readable(lastused_environ), "status" = environ) ) return data diff --git a/code/modules/power/fusion/consoles/_consoles.dm b/code/modules/power/fusion/consoles/_consoles.dm index e84b6be1c63..1685b903e21 100644 --- a/code/modules/power/fusion/consoles/_consoles.dm +++ b/code/modules/power/fusion/consoles/_consoles.dm @@ -3,8 +3,8 @@ icon_keyboard_emis = "yellow_key_mask" icon_screen = "solar" light_color = COLOR_ORANGE - idle_power_usage = 250 - active_power_usage = 500 + idle_power_usage = 2500 + active_power_usage = 10000 manufacturer = "hephaestus" var/ui_template var/initial_id_tag @@ -45,5 +45,5 @@ /obj/machinery/computer/fusion/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if (!ui) - ui = new(user, src, ui_template, name, 400, 500) + ui = new(user, src, ui_template, name) ui.open() diff --git a/code/modules/power/fusion/consoles/core_control.dm b/code/modules/power/fusion/consoles/core_control.dm index 9c2281e302a..04670bcc202 100644 --- a/code/modules/power/fusion/consoles/core_control.dm +++ b/code/modules/power/fusion/consoles/core_control.dm @@ -53,15 +53,25 @@ for(var/i = 1 to LAZYLEN(fusion_cores)) var/list/core = list() var/obj/machinery/power/fusion_core/C = fusion_cores[i] + var/power_available = C.avail() + var/power_usage = C.active_power_usage + var/power_generated = C.owned_field?.output_avg + core["id"] = "#[i]" core["ref"] = "[REF(C)]" core["field"] = !isnull(C.owned_field) core["power"] = "[C.field_strength / 10]" core["field_strength"] = C.field_strength + core["field_strength_max"] = C.field_strength_max + core["entropy_multiplier"] = C.owned_field ? round(C.owned_field.field_strength_entropy_multiplier, 0.01) : 1 + core["instability_multiplier"] = C.owned_field ? round(C.owned_field.field_strength_instability_multiplier, 0.01) : 1 + core["power_multiplier"] = C.owned_field ? round(C.owned_field.field_strength_power_multiplier, 0.01) : 1 core["size"] = C.owned_field ? C.owned_field.size : 0 core["instability"] = C.owned_field ? C.owned_field.percent_unstable * 100 : -1 //% core["temperature"] = C.owned_field ? C.owned_field.plasma_temperature + 295 : -1 //K - core["power_status"] = "[C.avail()]/[C.active_power_usage]" + core["power_available"] = "[power_wattage_readable(power_available)]" + core["power_usage"] = "[power_wattage_readable(power_usage)]" + core["power_generated"] = "[power_wattage_readable(power_generated)]" core["shutdown_safe"] = C.owned_field ? C.owned_field.is_shutdown_safe() : TRUE var/list/reactants = list() diff --git a/code/modules/power/fusion/consoles/gyrotron_control.dm b/code/modules/power/fusion/consoles/gyrotron_control.dm index 3d997133297..9bcd1b61c85 100644 --- a/code/modules/power/fusion/consoles/gyrotron_control.dm +++ b/code/modules/power/fusion/consoles/gyrotron_control.dm @@ -34,7 +34,7 @@ switch(action) if("modifypower") - G.mega_energy = clamp(params["modifypower"], 1, 50) + G.mega_energy = clamp(params["modifypower"], 1, 250) G.change_power_consumption(G.mega_energy * GYRO_POWER, POWER_USE_ACTIVE) return TRUE @@ -62,7 +62,7 @@ gyrotron["active"] = G.active gyrotron["firedelay"] = G.rate gyrotron["energy"] = G.mega_energy + gyrotron["power_status"] = power_wattage_readable(G.mega_energy * GYRO_POWER) gyrotrons += list(gyrotron) - data["gyro_power_constant"] = GYRO_POWER data["gyrotrons"] = gyrotrons return data diff --git a/code/modules/power/fusion/core/_core.dm b/code/modules/power/fusion/core/_core.dm index e5ee7cab865..dcca80f2633 100644 --- a/code/modules/power/fusion/core/_core.dm +++ b/code/modules/power/fusion/core/_core.dm @@ -9,13 +9,16 @@ layer = ABOVE_HUMAN_LAYER density = TRUE use_power = POWER_USE_IDLE - idle_power_usage = 50 + idle_power_usage = 10000 /// Gets multiplied by field strength - active_power_usage = 500 + active_power_usage = 50000 anchored = FALSE var/obj/effect/fusion_em_field/owned_field - var/field_strength = 1//0.01 + /// The currently configured Field Strength (1 = 100 Tesla). + var/field_strength = 1 + /// This is for the INDRA, allowing a maximum 5-radius field. Change this for larger/smaller reactors. + var/field_strength_max = 1.2 var/initial_id_tag /obj/machinery/power/fusion_core/mapped @@ -26,6 +29,13 @@ connect_to_network() AddComponent(/datum/component/local_network_member, initial_id_tag) +/obj/machinery/power/fusion_core/Destroy() + if(owned_field) + qdel(owned_field) + owned_field = null + set_light(0) + return ..() + /** * If there's no powernet or no owned field, shutdown() in those cases too. */ @@ -44,6 +54,7 @@ owned_field.ChangeFieldStrength(field_strength) icon_state = "core1" update_use_power(POWER_USE_ACTIVE) + set_light(3, 0.7, COLOR_PALE_BLUE_GRAY) . = 1 /** @@ -52,13 +63,16 @@ /obj/machinery/power/fusion_core/proc/Shutdown(force_rupture) if(owned_field) icon_state = "core0" - if(force_rupture || owned_field.plasma_temperature > 1000) + // Blow the whole fucking thing up. + if(force_rupture || owned_field.plasma_temperature > 720000) owned_field.Rupture() + // Just radiate all that temperature into the environment. Unless you're under 1000 K, its still a big 'fuck you,' but admittedly better than EMP/explosion. else owned_field.RadiateAll() qdel(owned_field) owned_field = null update_use_power(POWER_USE_IDLE) + set_light(0) /obj/machinery/power/fusion_core/proc/AddParticles(name, quantity = 1) if(owned_field) @@ -76,7 +90,7 @@ /obj/machinery/power/fusion_core/proc/set_strength(value) value = clamp(value, MIN_FIELD_STR, MAX_FIELD_STR) field_strength = value - change_power_consumption(5 * value, POWER_USE_ACTIVE) + change_power_consumption(1500 * (value ** 1.5), POWER_USE_ACTIVE) if(owned_field) owned_field.ChangeFieldStrength(value) @@ -115,7 +129,7 @@ return ..() /obj/machinery/power/fusion_core/proc/jumpstart(field_temperature) - field_strength = 501 // Generally a good size. + field_strength = 120 // Generally a good size. Startup() if(!owned_field) return FALSE diff --git a/code/modules/power/fusion/core/core_field.dm b/code/modules/power/fusion/core/core_field.dm index 3c460e99eef..ec27c75e017 100644 --- a/code/modules/power/fusion/core/core_field.dm +++ b/code/modules/power/fusion/core/core_field.dm @@ -1,24 +1,53 @@ -#define FUSION_ENERGY_PER_K 20 -#define FUSION_INSTABILITY_DIVISOR 50000 -#define FUSION_RUPTURE_THRESHOLD 10000 -#define FUSION_REACTANT_CAP 10000 -#define FUSION_WARNING_DELAY 20 +#define FUSION_INSTABILITY_DIVISOR 100000 +#define FUSION_RUPTURE_THRESHOLD 25000 +#define FUSION_REACTANT_CAP 10000 +#define FUSION_WARNING_DELAY 20 +#define FUSION_BLACKBODY_MULTIPLIER 28 +#define FUSION_INTEGRITY_RATE_LIMIT 0.11 +#define FUSION_TICK_MAX_TEMP_CHANGE 0.2 /obj/effect/fusion_em_field name = "electromagnetic field" desc = "A coruscating, barely visible field of energy. It is shaped like a slightly flattened torus." alpha = 30 - layer = 4 + layer = ABOVE_ABOVE_HUMAN_LAYER light_color = COLOR_RED mouse_opacity = MOUSE_OPACITY_ICON + /// Temporary pool for energy being added to the field from a Gyrotron. var/energy = 0 + /// Actual core field energy (temperature). var/plasma_temperature = 0 + /// Effective core field energy (temperature) as modified by field magnitude constriction or relaxation. + // var/plasma_temperature_effective + /// Current excess radiation from ongoing reactions. var/radiation = 0 - /// The currently configured Field Strength (0.01 = 1 Tesla). - var/field_strength = 0.01 + /// Radiation of the previous three ticks averaged out (if != 0). + var/radiation_avg = 0 + /// Archived radiation. Used for averaging out new SSradiation.radiate() source creation. + var/radiation_archive_1 = 0 + var/radiation_archive_2 = 0 + var/radiation_archive_3 = 0 + var/radiation_archive_4 = 0 + var/radiation_archive_5 = 0 + /** + * The currently configured Field Strength (0.2 = 20 Tesla). Capped by TGUI at 1.2 (120 Tesla). + * + * Field Strength scales plasma temperature entropy. With higher field strength, each tick will lose more temp and produce more radiation. + * Field Strength scales power output per temperature. With higher field strength, each degree Kelvin will produce more electricity. + * Field Strength scales instability increase. With higher field strength, more instability for a given reaction will be produced each tick. + */ + var/field_strength = 20 + /// Current field strength multiplier applied to entropy. + var/field_strength_entropy_multiplier = 1.0 + /// Current field strength multiplier applied to instability. + var/field_strength_instability_multiplier = 1.0 + /// Current field strength multiplier applied to power output. + var/field_strength_power_multiplier = 1.0 /// Radius of the EM field. Scales with Field Strength. var/size = 1 + + /// Instability generated on this current tick. var/tick_instability = 0 /// Ranges from 0-1. At or over 1, boom. var/percent_unstable = 0 @@ -33,7 +62,8 @@ /obj/effect, /obj/structure/cable, /obj/machinery/atmospherics, - /obj/machinery/air_sensor + /obj/machinery/air_sensor, + /obj/machinery/camera ) var/light_min_range = 2 @@ -58,27 +88,51 @@ var/emergency_alert = "DANGER: INDRA REACTOR MELTDOWN IMMINENT!" var/lastwarning = 0 + /// Power output this tick. We average this like we do radiation for player-presenting data. + var/power_output + /// Power of the previous five ticks averaged out (if != 0). + var/output_avg = 0 + /// Archived power. Used for averaging out the power dumped into the powernet for players to see. + var/output_archive_1 = 0 + var/output_archive_2 = 0 + var/output_archive_3 = 0 + var/output_archive_4 = 0 + var/output_archive_5 = 0 + + var/vfx_radius_actual + //var/vfx_radius_visual + var/pause_rupture = TRUE + + var/power_log_base = 1.4 + var/power_multiplier = 3 + var/power_power = 3.2 + + var/aaa_minimum_energy_level_multiplier = 1.0 + /obj/effect/fusion_em_field/proc/UpdateVisuals() //Take the particle system and edit it //size - var/radius = ((size-1) / 2) * WORLD_ICON_SIZE - - particles.position = generator("circle", radius - size, radius + size, NORMAL_RAND) + vfx_radius_actual = ((size-1) / 2) * WORLD_ICON_SIZE + /* + var/vfx_radius_next = ((size+1) / 2) * WORLD_ICON_SIZE + var/percent_to_next_size = round(((field_strength + (size * 50)) - (size * 50)) / (((size + 1) / 2) * 50),0.01) + var/radius_add = round(percent_to_next_size * WORLD_ICON_SIZE, 1) + vfx_radius_visual = min(max(vfx_radius_actual + radius_add, vfx_radius_actual), vfx_radius_next) + */ + particles.position = generator("circle", vfx_radius_actual - size, vfx_radius_actual, NORMAL_RAND) //Radiation affects drift - var/radiationfactor = clamp((radiation * 0.001), 0, 0.5) + var/radiationfactor = clamp((radiation_avg * 0.001), 0, 0.75) particles.drift = generator("circle", (0.2 + radiationfactor), NORMAL_RAND) - particles.spawning = last_reactants * 0.9 + Interpolate(0, 200, clamp(plasma_temperature / 70000, 0, 1)) - /obj/effect/fusion_em_field/New(loc, obj/machinery/power/fusion_core/new_owned_core) ..() filters = list(filter(type = "ripple", size = 4, "radius" = 1, "falloff" = 1) , filter(type="outline", size = 2, color = COLOR_RED) - , filter(type="bloom", size=3, offset = 0.5, alpha = 235)) + , filter(type="bloom", size = 3, offset = 0.5, alpha = 235)) set_light(light_min_power, light_min_range / 10, light_min_range) last_range = light_min_range @@ -127,49 +181,6 @@ addtimer(CALLBACK(src, PROC_REF(update_light_colors)), 10 SECONDS, TIMER_LOOP) radio = new /obj/item/device/radio{channels=list("Engineering")}(src) -/** - * Not blackbody radiation- with these colors, is some sort of space magic? - */ -/obj/effect/fusion_em_field/proc/update_light_colors() - var/use_range - var/use_power = 0 - var/temp_mod = ((plasma_temperature-5000)/20000) - use_range = light_min_range + Ceil((light_max_range-light_min_range)*temp_mod) - use_power = light_min_power + Ceil((light_max_power-light_min_power)*temp_mod) - switch (plasma_temperature) - if (-INFINITY to 1000) - light_color = COLOR_RED - alpha = 30 - if (1000 to 6000) - light_color = COLOR_ORANGE - alpha = 50 - if (6000 to 20000) - light_color = COLOR_YELLOW - alpha = 80 - if (20000 to 50000) - light_color = COLOR_GREEN - alpha = 120 - if (50000 to 70000) - light_color = COLOR_CYAN - alpha = 160 - if (70000 to 100000) - light_color = COLOR_BLUE - alpha = 200 - if (100000 to INFINITY) - light_color = COLOR_VIOLET - alpha = 230 - - if (last_range != use_range || last_power != use_power || color != light_color) - set_light(use_range / 6, use_power ? 6 : 0, light_color) - last_range = use_range - last_power = use_power - //Temperature based color - particles.gradient = list(0, COLOR_WHITE, 0.85, light_color) - UNLINT(var/dm_filter/outline = filters[2]) - UNLINT(outline.color = light_color) - UNLINT(var/dm_filter/bloom = filters[3]) - UNLINT(bloom.alpha = alpha) - /** * What are we doing every tick? A lot. * * Grab some gas from the env and convert it to reactants for the pool. @@ -203,14 +214,27 @@ // Let the particles inside the field react. React() + field_strength_power_multiplier = max((owned_core.field_strength ** 1.2) / 100, 1) // Dump power to our powernet. - owned_core.add_avail(FUSION_ENERGY_PER_K * plasma_temperature) + power_output = ((log(power_log_base, plasma_temperature) * power_multiplier) ** power_power) * field_strength_power_multiplier + output_archive_5 = output_archive_4 + output_archive_4 = output_archive_3 + output_archive_3 = output_archive_2 + output_archive_2 = output_archive_1 + output_archive_1 = power_output + output_avg = ((output_archive_1 + output_archive_2 + output_archive_3 + output_archive_4 + output_archive_5 ) / 5) + owned_core.add_avail(power_output) + // Roundstart update + if(field_strength < 20) + field_strength = 20 + field_strength_entropy_multiplier = clamp((owned_core.field_strength ** 1.075) / 40, 0.8, 2.0) // Energy decay (entropy tax). if(plasma_temperature >= 1) - var/lost = plasma_temperature*0.01 + var/lost = plasma_temperature * 0.0045 radiation += lost - plasma_temperature -= lost + var/temp_change = 0 - (lost * field_strength_entropy_multiplier) + adjust_temperature(temp_change, cause = "Containment Entropy") // Handle some reactants formatting. for(var/reactant in reactants) @@ -218,7 +242,7 @@ if(amount < 1) reactants.Remove(reactant) else if(amount >= FUSION_REACTANT_CAP) - var/radiate = rand(3 * amount / 4, amount / 4) + var/radiate = rand(amount / 16, 3 * amount / 16) reactants[reactant] -= radiate radiation += radiate @@ -229,8 +253,6 @@ warning() Radiate() - if(radiation) - SSradiation.radiate(src, round(radiation*0.001)) return 1 /** @@ -247,9 +269,12 @@ * document details later. */ /obj/effect/fusion_em_field/proc/check_instability() + field_strength_instability_multiplier = max((owned_core.field_strength ** 1.1)/20, 1) if(tick_instability > 0) percent_unstable_archive = percent_unstable - percent_unstable += (tick_instability*size)/FUSION_INSTABILITY_DIVISOR + // Apply any modifiers to instability imparted by current field strength, but only apply up to FUSION_INTEGRITY_RATE_LIMIT additional instability. + var/new_instability = min((tick_instability * field_strength_instability_multiplier)/FUSION_INSTABILITY_DIVISOR, FUSION_INTEGRITY_RATE_LIMIT) + percent_unstable += new_instability tick_instability = 0 UpdateVisuals() else @@ -259,14 +284,14 @@ if(percent_unstable > 1) percent_unstable = 1 if(percent_unstable > 0) - percent_unstable = max(0, percent_unstable-rand(0.01,0.03)) + percent_unstable = max(0, percent_unstable-rand(0.02,0.08)) UpdateVisuals() if(percent_unstable >= 1) owned_core.Shutdown(force_rupture=1) else if(percent_unstable > 0.5 && prob(percent_unstable*100)) - var/ripple_radius = (((size-1) / 2) * WORLD_ICON_SIZE) + WORLD_ICON_SIZE + var/ripple_radius = ((size-1) / 2) + WORLD_ICON_SIZE var/wave_size = 4 if(plasma_temperature < FUSION_RUPTURE_THRESHOLD) visible_message(SPAN_DANGER("\The [src] ripples uneasily, like a disturbed pond.")) @@ -291,7 +316,7 @@ rupture = prob(25) wave_size += 4 - if(rupture) + if(rupture && !pause_rupture) owned_core.Shutdown(force_rupture=1) else var/lost_plasma = (plasma_temperature*percent_unstable) @@ -299,7 +324,8 @@ if(flare) radiation += plasma_temperature/2 wave_size += 6 - plasma_temperature -= lost_plasma + var/temp_change = 0 - lost_plasma + adjust_temperature(temp_change, cause = "Instability Bleed-off") if(fuel_loss) for(var/particle in reactants) @@ -375,13 +401,17 @@ * EMP, rads, and a big fuckoff explosion. */ /obj/effect/fusion_em_field/proc/Rupture() - visible_message(SPAN_DANGER("\The [src] shudders like a dying animal before flaring to eye-searing brightness and rupturing!")) - set_light(1, 0.1, 15, 2, "#ccccff") - empulse(get_turf(src), Ceil(plasma_temperature/1000), Ceil(plasma_temperature/300)) - sleep(5) + if(pause_rupture) + return + visible_message(SPAN_DANGER("\The [src] convulses violently as gouts of plasma spill forth!")) + set_light(1, 0.1, "#ccccff", 15, 2) + empulse(get_turf(src), Ceil(plasma_temperature/1000000), Ceil(plasma_temperature/300000)) RadiateAll() - explosion(get_turf(owned_core), 8, 8) - return + addtimer(CALLBACK(src, PROC_REF(RuptureExplosion)), 45 SECONDS) + +/obj/effect/fusion_em_field/proc/RuptureExplosion() + visible_message(SPAN_DANGER("\The [src] shudders like a dying animal before flaring to eye-searing brightness and rupturing!")) + explosion(get_turf(owned_core), 6, 8) /** * Sets field strength in Tesla, and corresponding field size. @@ -389,17 +419,18 @@ */ /obj/effect/fusion_em_field/proc/ChangeFieldStrength(new_strength) var/calc_size = 1 - if(new_strength <= 50) + if(new_strength < 40) calc_size = 1 - else if(new_strength <= 200) + else if(new_strength < 80) calc_size = 3 - else if(new_strength <= 500) + // Right now the max value allowed by the interface is 120. Change this from 121->120 if we want to allow bigger reactors. + else if(new_strength < 121) calc_size = 5 - else if(new_strength <= 1000) + else if(new_strength < 160) calc_size = 7 - else if(new_strength <= 2000) + else if(new_strength < 200) calc_size = 9 - else if(new_strength <= 5000) + else if(new_strength < 240) calc_size = 11 else calc_size = 13 @@ -407,8 +438,17 @@ change_size(calc_size) /obj/effect/fusion_em_field/proc/AddEnergy(a_energy, a_plasma_temperature) - energy += a_energy + // Boost gyro effects at low temperatures for faster startup + if(plasma_temperature <= 75000) + a_energy = a_energy * 32 + else if(plasma_temperature <= 250000) + a_energy = a_energy * 8 + else if(plasma_temperature <= 1000000) + a_energy = a_energy * 2 + energy += a_energy / 2 + plasma_temperature += a_plasma_temperature + if(a_energy && percent_unstable > 0) percent_unstable = max(percent_unstable - (a_energy/10000), 0) while(energy >= 100) @@ -450,10 +490,10 @@ for(var/particle in reactants) radiation += reactants[particle] reactants.Remove(particle) - radiation += plasma_temperature/2 + radiation += plasma_temperature/8 plasma_temperature = 0 - SSradiation.radiate(src, round(radiation*0.001)) + SSradiation.radiate(src, radiation) Radiate() /** @@ -465,14 +505,8 @@ * * After that, it'll return the air it stole this tick, just heated up. * The max temperature is capped so it can't be used for TEGs or shit. - * - * I don't know why radiation is set to 0 after that, because it means - * that the INDRA is COMPLETELY radiation-free short of exploding it. - * - * Probably need to delete radiation = 0 after testing it doesn't generate - * unreasonable amounts of rads with current values. */ -/obj/effect/fusion_em_field/proc/Radiate() +/obj/effect/fusion_em_field/proc/Radiate(safe = TRUE) if(istype(loc, /turf)) for(var/atom/movable/AM in range(max(1,FLOOR(size/2, 1)), loc)) @@ -488,7 +522,7 @@ continue AM.visible_message(SPAN_DANGER("The field buckles visibly around \the [AM]!")) - tick_instability += rand(30,50) + tick_instability += rand(10,25) AM.emp_act(EMP_LIGHT) if(owned_core && owned_core.loc) @@ -496,6 +530,19 @@ // Putting an upper bound on it to stop it being used in a TEG. if(environment && environment.temperature < (T0C+1000)) environment.add_thermal_energy(plasma_temperature*20000) + + // Radiation levels can spike unpredictably based on how many reagents we're throwing out, which reactions ran this cycle, etc. + // And while we like some unpredictability, it gets a little excessive with the INDRA. Use these vars to balance out actual rad output. + radiation_archive_5 = radiation_archive_4 + radiation_archive_4 = radiation_archive_3 + radiation_archive_3 = radiation_archive_2 + radiation_archive_2 = radiation_archive_1 + radiation_archive_1 = radiation + + if(radiation >= 1000) + radiation_avg = ((radiation_archive_1 + radiation_archive_2 + radiation_archive_3 + radiation_archive_4 + radiation_archive_5 ) / 5) + SSradiation.radiate(src, radiation_avg * 0.01) + radiation = 0 /obj/effect/fusion_em_field/proc/change_size(newsize = 1) @@ -519,63 +566,66 @@ * * */ /obj/effect/fusion_em_field/proc/React() - // Loop through the reactants in random order + // Loop through the reactants in random order. var/list/react_pool = reactants.Copy() last_reactants = 0 - // Can't have any reactions if there aren't any reactants present + // Can't have any reactions if there aren't any reactants present. if(length(react_pool)) - //determine a random amount to actually react this cycle, and remove it from the standard pool - //this is a hack, and quite nonrealistic :( + // Determine a random amount to actually react this cycle, and remove it from the standard pool. + // This is a hack, and quite nonrealistic :( for(var/reactant in react_pool) react_pool[reactant] = rand(FLOOR(react_pool[reactant]/2, 1),react_pool[reactant]) reactants[reactant] -= react_pool[reactant] if(!react_pool[reactant]) react_pool -= reactant - //loop through all the reacting reagents, picking out random reactions for them + // Loop through all the reacting reagents, picking out random reactions for them. var/list/produced_reactants = new/list var/list/p_react_pool = react_pool.Copy() while(length(p_react_pool)) - //pick one of the unprocessed reacting reagents randomly + // Pick one of the unprocessed reacting reagents randomly. var/cur_p_react = pick(p_react_pool) p_react_pool.Remove(cur_p_react) - //grab all the possible reactants to have a reaction with + // Grab all the possible reactants to have a reaction with. var/list/possible_s_reacts = react_pool.Copy() - //if there is only one of a particular reactant, then it can not react with itself so remove it + // If there is only one of a particular reactant, then it can not react with itself so remove it. possible_s_reacts[cur_p_react] -= 1 if(possible_s_reacts[cur_p_react] < 1) possible_s_reacts.Remove(cur_p_react) - //loop through and work out all the possible reactions + // Loop through and work out all the possible reactions. var/list/possible_reactions for(var/cur_s_react in possible_s_reacts) if(possible_s_reacts[cur_s_react] < 1) continue var/singleton/fusion_reaction/cur_reaction = get_fusion_reaction(cur_p_react, cur_s_react) - if(cur_reaction && plasma_temperature >= cur_reaction.minimum_energy_level) + if(cur_reaction && plasma_temperature >= (cur_reaction.minimum_energy_level * aaa_minimum_energy_level_multiplier)&& possible_s_reacts[cur_p_react] >= cur_reaction.minimum_p_react) LAZYDISTINCTADD(possible_reactions, cur_reaction) - //if there are no possible reactions here, abandon this primary reactant and move on + // If there are no possible reactions here, abandon this primary reactant and move on. if(!LAZYLEN(possible_reactions)) continue - /// Sort based on reaction priority to avoid deut-deut eating all the deut before deut-trit can run etc. + // Sort based on reaction priority to avoid deut-deut eating all the deut before deut-trit can run etc. sortTim(possible_reactions, /proc/cmp_fusion_reaction_des) - //split up the reacting atoms between the possible reactions + // Split up the reacting atoms between the possible reactions. while(length(possible_reactions)) var/singleton/fusion_reaction/cur_reaction = possible_reactions[1] possible_reactions.Remove(cur_reaction) - //set the randmax to be the lower of the two involved reactants + // Set the randmax to be the lower of the two involved reactants. var/max_num_reactants = react_pool[cur_reaction.p_react] > react_pool[cur_reaction.s_react] ? \ react_pool[cur_reaction.s_react] : react_pool[cur_reaction.p_react] if(max_num_reactants < 1) continue - //make sure we have enough energy + // Make sure we have enough energy. + // First, if minimum_reaction_temperature not set, make it the same as minimum_energy_level. + if(!cur_reaction.minimum_reaction_temperature) + cur_reaction.minimum_reaction_temperature = (cur_reaction.minimum_energy_level * 0.8 * aaa_minimum_energy_level_multiplier) if(plasma_temperature < cur_reaction.minimum_reaction_temperature) continue @@ -584,17 +634,19 @@ if(max_num_reactants < 1) continue - //randomly determined amount to react - var/amount_reacting = rand(1, max_num_reactants) + // Randomly determined amount to react. Starts at up to 1/20th, scales to up to 2/3rd at 20x min temp + var/temp_over_min = plasma_temperature / (cur_reaction.minimum_energy_level * 20 * aaa_minimum_energy_level_multiplier) + var/max_react_percent = clamp(temp_over_min, (1/20), (2/3)) + var/amount_reacting = rand(1, (max_num_reactants * max_react_percent)) - //removing the reacting substances from the list of substances that are primed to react this cycle - //if there aren't enough of that substance (there should be) then modify the reactant amounts accordingly + // Removing the reacting substances from the list of substances that are primed to react this cycle. + // If there aren't enough of that substance (there should be) then modify the reactant amounts accordingly. if( react_pool[cur_reaction.p_react] - amount_reacting >= 0 ) react_pool[cur_reaction.p_react] -= amount_reacting else amount_reacting = react_pool[cur_reaction.p_react] react_pool[cur_reaction.p_react] = 0 - //same again for secondary reactant + // Same again for secondary reactant if(react_pool[cur_reaction.s_react] - amount_reacting >= 0 ) react_pool[cur_reaction.s_react] -= amount_reacting else @@ -602,9 +654,18 @@ amount_reacting = react_pool[cur_reaction.s_react] react_pool[cur_reaction.s_react] = 0 - plasma_temperature -= max_num_reactants * cur_reaction.energy_consumption // Remove the consumed energy. - plasma_temperature += max_num_reactants * cur_reaction.energy_production // Add any produced energy. - radiation += max_num_reactants * cur_reaction.radiation // Add any produced radiation. + // Attempt to run temperature changes in isolation to prevent weird drops + var/plasma_temperature_change + var/current_reaction_energy_production = cur_reaction.energy_production + if(cur_reaction.maximum_effective_temperature && plasma_temperature > cur_reaction.maximum_effective_temperature) + current_reaction_energy_production = current_reaction_energy_production * 0.4 + plasma_temperature_change -= max_num_reactants * cur_reaction.energy_consumption + plasma_temperature_change += max_num_reactants * current_reaction_energy_production + + adjust_temperature(plasma_temperature_change, cur_reaction.max_temp_change_rate, cur_reaction.name) + + // Add any produced radiation. + radiation += max_num_reactants * cur_reaction.radiation tick_instability += max_num_reactants * cur_reaction.instability last_reactants += amount_reacting @@ -658,6 +719,118 @@ /obj/effect/fusion_em_field/add_point_filter() return +/** + * Handles clamping temperature changes to the core field to prevent excessive second-by-second shifts. + * Lives in its own function to ensure consistent behavior across all potential core field temperature interactions. + * + * * var/temperature : The amount temperature is being changed by. Can be positive or negative. + * * var/max_percentage : Limiting value on how much temp can change per tick. Only overriden by specific fusion reactions. + * * var/cause : For debugging only. + */ +/obj/effect/fusion_em_field/proc/adjust_temperature(var/temp_change, var/max_percentage = FUSION_TICK_MAX_TEMP_CHANGE, var/cause) + var/adjusted_plasma_temperature_change = min(temp_change, temp_change * FUSION_TICK_MAX_TEMP_CHANGE) + plasma_temperature += adjusted_plasma_temperature_change + +/** + * Accurate(ish***) black-body radiation colors. Fuck you purple light; save it for a phoronics update! + */ +/obj/effect/fusion_em_field/proc/update_light_colors() + var/use_range + var/use_power = 0 + var/temp_mod = ((plasma_temperature-5000)/28000) + + // Using real values for black-body radiation means the fusion reactor will almost always zip to top temp color. + // This multiplier scales the below temperatures to better match intended range of temps in gameplay. + var/effective_plasma_temperature = plasma_temperature / FUSION_BLACKBODY_MULTIPLIER + + use_range = light_min_range + Ceil((light_max_range-light_min_range)*temp_mod) + use_power = light_min_power + Ceil((light_max_power-light_min_power)*temp_mod) + switch (effective_plasma_temperature) + if (-INFINITY to 1000) + light_color = "#ff5800" + alpha = 30 + if (1000 to 1400) + light_color = "#ff6500" + alpha = 40 + if (1400 to 1800) + light_color = "#ff7e00" + alpha = 50 + if (1800 to 2200) + light_color = "#ff932c" + alpha = 60 + if (2200 to 2600) + light_color = "#ffa54f" + alpha = 70 + if (2600 to 3000) + light_color = "#ffb46b" + alpha = 80 + if (3000 to 4000) + light_color = "#ffd1a3" + alpha = 90 + if (4000 to 5400) + light_color = "#ffebdc" + alpha = 100 + if (5400 to 6200) + light_color = "#fff5f5" + alpha = 110 + if (6200 to 7000) + light_color = "#f5f3ff" + alpha = 120 + if (7000 to 8000) + light_color = "#e3e9ff" + alpha = 130 + if (8000 to 9000) + light_color = "#d6e1ff" + alpha = 140 + if (9000 to 10000) + light_color = "#ccdbff" + alpha = 150 + if (1000 to 11000) + light_color = "#c4d7ff" + alpha = 160 + if (11000 to 12000) + light_color = "#bfd3ff" + alpha = 170 + if (12000 to 13000) + light_color = "#bad0ff" + alpha = 180 + if (13000 to 14000) + light_color = "#b6ceff" + alpha = 190 + if (14000 to 15000) + light_color = "#b3ccff" + alpha = 200 + if (15000 to 16000) + light_color = "#b0caff" + alpha = 210 + if (16000 to 17000) + light_color = "#aec8ff" + alpha = 220 + if (17000 to 18000) + light_color = "#acc7ff" + alpha = 230 + if (18000 to 20000) + light_color = "#a8c5ff" + alpha = 230 + if (20000 to 23000) + light_color = "#94c2ff" + alpha = 230 + if (23000 to INFINITY) + light_color = "#74a2ff" + alpha = 240 + + if (last_range != use_range || last_power != use_power || color != light_color) + set_light(use_range / 6, use_power ? 6 : 0, light_color) + last_range = use_range + last_power = use_power + //Temperature based color + + particles.gradient = list(0, COLOR_WHITE, 0.85, light_color) + UNLINT(var/dm_filter/outline = filters[2]) + UNLINT(outline.color = light_color) + UNLINT(var/dm_filter/bloom = filters[3]) + UNLINT(bloom.alpha = alpha) + /particles/fusion width = 500 height = 500 @@ -673,7 +846,10 @@ color = 0 drift = generator("circle", 0.2, NORMAL_RAND) -#undef FUSION_ENERGY_PER_K #undef FUSION_INSTABILITY_DIVISOR #undef FUSION_RUPTURE_THRESHOLD #undef FUSION_REACTANT_CAP +#undef FUSION_WARNING_DELAY +#undef FUSION_BLACKBODY_MULTIPLIER +#undef FUSION_INTEGRITY_RATE_LIMIT +#undef FUSION_TICK_MAX_TEMP_CHANGE diff --git a/code/modules/power/fusion/fuel_assembly/fuel_assembly.dm b/code/modules/power/fusion/fuel_assembly/fuel_assembly.dm index 246d9e70fe1..664e547370c 100644 --- a/code/modules/power/fusion/fuel_assembly/fuel_assembly.dm +++ b/code/modules/power/fusion/fuel_assembly/fuel_assembly.dm @@ -77,3 +77,9 @@ /obj/item/fuel_assembly/hydrogen/New(newloc) ..(newloc, MATERIAL_HYDROGEN_METALLIC) + +/obj/item/fuel_assembly/iron/New(newloc) + ..(newloc, MATERIAL_IRON) + +/obj/item/fuel_assembly/boron/New(newloc) + ..(newloc, MATERIAL_BORON) diff --git a/code/modules/power/fusion/fusion_reactions.dm b/code/modules/power/fusion/fusion_reactions.dm index 79249cf4dd7..9ef6d473e1e 100644 --- a/code/modules/power/fusion/fusion_reactions.dm +++ b/code/modules/power/fusion/fusion_reactions.dm @@ -1,16 +1,30 @@ GLOBAL_LIST(fusion_reactions) /singleton/fusion_reaction - var/p_react = "" // Primary reactant. - var/s_react = "" // Secondary reactant. - var/minimum_energy_level = 1 + /// Used in Fusion Codex. The name will default to "[p_react]-[s_react]" unless set. + var/name + /// Primary reactant. + var/p_react = "" + /// Minimum # of p required to react. + var/minimum_p_react = 0 + /// Secondary reactant. + var/s_react = "" + /// This is the minimum energy to initiate a given reaction. + var/minimum_energy_level = 250000 + /// This is the minimum energy to continue a given reaction, once started. Used for halting energy-consuming reactions. + /// When not set, it will default to (minimum_energy_level * 0.8) to avoid tanking plasma temp in a single tick. + var/minimum_reaction_temperature + /// Gameplay balancing. If set, this reaction will produce less power when above the given temperature level. + var/maximum_effective_temperature var/energy_consumption = 0 var/energy_production = 0 var/radiation = 0 var/instability = 0 var/list/products = list() - var/minimum_reaction_temperature = 100 + /// In what order will reactions be carried out? Default 100, less important reactions have priority reduced. var/priority = 100 + /// Cap on what % of current plasma temperature the reaction is allowed to increase or reduce in a single tick. Higher values for more volatile reactions. + var/max_temp_change_rate = 0.2 /singleton/fusion_reaction/proc/handle_reaction_special(obj/effect/fusion_em_field/holder) return 0 @@ -32,100 +46,267 @@ GLOBAL_LIST(fusion_reactions) if(secondary_reactions.Find(s_react)) return GLOB.fusion_reactions[p_react][s_react] -// Material fuels -// deuterium -// tritium -// phoron -// supermatter - -// Gaseous/reagent fuels -// hydrogen -// helium -// lithium -// boron - -// Basic power production reactions. -// This is not necessarily realistic, but it makes a basic failure more spectacular. -/singleton/fusion_reaction/hydrogen_hydrogen - p_react = GAS_HYDROGEN - s_react = GAS_HYDROGEN - energy_consumption = 1 - energy_production = 2 - products = list(GAS_HELIUM = 1) - priority = 10 - -/singleton/fusion_reaction/deuterium_deuterium - p_react = GAS_DEUTERIUM - s_react = GAS_DEUTERIUM - energy_consumption = 1 - energy_production = 2 - priority = 0 - -// Advanced production reactions (todo) -/singleton/fusion_reaction/deuterium_helium - p_react = GAS_DEUTERIUM - s_react = GAS_HELIUM - energy_consumption = 1 - energy_production = 5 - radiation = 2 - /singleton/fusion_reaction/deuterium_tritium p_react = GAS_DEUTERIUM s_react = GAS_TRITIUM energy_consumption = 1 - energy_production = 1 + energy_production = 32 products = list(GAS_HELIUM = 1) - instability = 0.5 - radiation = 3 + instability = 3.5 + // deut-trit bad!!! + radiation = 280 + minimum_energy_level = 500 + maximum_effective_temperature = 350000 + priority = 1 -/singleton/fusion_reaction/deuterium_lithium +/singleton/fusion_reaction/deuterium_deuterium + name = "Deuterium Burning" p_react = GAS_DEUTERIUM - s_react = "lithium" - energy_consumption = 2 - energy_production = 0 - radiation = 3 - products = list(GAS_TRITIUM= 1) - instability = 1 + s_react = GAS_DEUTERIUM + energy_consumption = 6 + energy_production = 24 + products = list(GAS_HELIUM = 1) + radiation = 8 + minimum_energy_level = 200000 + priority = 0 -// Unideal/material production reactions +/singleton/fusion_reaction/hydrogen_hydrogen + name = "Hydrogen Burning" + p_react = GAS_HYDROGEN + s_react = GAS_HYDROGEN + energy_consumption = 4 + energy_production = 19 + products = list(GAS_DEUTERIUM = 1) + radiation = 3 + minimum_energy_level = 400000 + priority = 1 + +/singleton/fusion_reaction/hydrogen_deuterium + p_react = GAS_HYDROGEN + s_react = GAS_DEUTERIUM + energy_consumption = 7 + energy_production = 12 + products = list(GAS_HELIUMFUEL = 1) + radiation = 16 + minimum_energy_level = 300000 + priority = 2 + +/singleton/fusion_reaction/hydrogen_helium3 + p_react = GAS_HYDROGEN + s_react = GAS_HELIUMFUEL + energy_consumption = 2 + energy_production = 12 + products = list(GAS_HYDROGEN = 2) + radiation = 32 + instability = 1.8 + minimum_energy_level = 450000 + priority = 10 + +/singleton/fusion_reaction/hydrogen_helium + p_react = GAS_HYDROGEN + s_react = GAS_HELIUM + energy_consumption = 6 + energy_production = 18 + products = list(GAS_DEUTERIUM = 1) + radiation = 48 + instability = 2.8 + minimum_energy_level = 200000 + priority = 9 + +/singleton/fusion_reaction/helium_helium + name = "Helium Burning" + p_react = GAS_HELIUM + s_react = GAS_HELIUM + energy_consumption = 3 + energy_production = 20 + products = list(GAS_DEUTERIUM = 2, GAS_HYDROGEN = 1) + radiation = 6 + instability = 0.75 + minimum_energy_level = 800000 + priority = 12 + +/singleton/fusion_reaction/helium3_helium + p_react = GAS_HELIUM + s_react = GAS_HELIUMFUEL + energy_consumption = 3 + energy_production = 18 + products = list("beryllium-7" = 1) + radiation = 6 + minimum_energy_level = 850000 + priority = 13 + +/singleton/fusion_reaction/beryllium7_decay + name = "Beryllium-7 Decay" + p_react = "beryllium-7" + s_react = "beryllium-7" + energy_consumption = 2 + energy_production = 7 + products = list("lithium" = 2) + radiation = 54 + instability = 2.25 + minimum_energy_level = 1000 + priority = 15 + +/singleton/fusion_reaction/lithium_hydrogen + p_react = "lithium" + s_react = GAS_HYDROGEN + energy_consumption = 3 + energy_production = 5 + products = list(GAS_DEUTERIUM = 1, GAS_HELIUM = 1) + radiation = 22 + instability = 0.35 + minimum_energy_level = 1480000 + priority = 16 + +/singleton/fusion_reaction/lithium_deuterium + p_react = "lithium" + minimum_p_react = 2000 + s_react = GAS_DEUTERIUM + energy_consumption = 1 + energy_production = 40 + radiation = 18 + instability = 2.8 + products = list(GAS_TRITIUM = 2) + minimum_energy_level = 2000000 + priority = 30 + +/singleton/fusion_reaction/beryllium7_hydrogen + p_react = GAS_HYDROGEN + s_react = "beryllium-7" + energy_consumption = 4 + energy_production = 12 + products = list("boron-8" = 1) + radiation = 3 + instability = 0.5 + minimum_energy_level = 1720000 + priority = 17 + +/singleton/fusion_reaction/boron8_decay + name = "Boron-8 Decay" + p_react = "boron-8" + s_react = "boron-8" + energy_consumption = 4 + energy_production = 6 + products = list("beryllium-8" = 2) + radiation = 64 + instability = 2.5 + minimum_energy_level = 1000 + priority = 18 + +/singleton/fusion_reaction/beryllium8_fission + name = "Beryllium-8 Fission Branch A" + p_react = "beryllium-8" + s_react = "beryllium-8" + energy_consumption = 14 + energy_production = 10 + products = list(GAS_HELIUM = 2) + radiation = 36 + instability = 5 + minimum_energy_level = 25000 + priority = 19 + +// This is just to delete lone beryllium-8 reactants that might get left over somehow +/singleton/fusion_reaction/beryllium8_hydrogen + name = "Beryllium-8 Fission Branch B" + p_react = "beryllium-8" + s_react = GAS_HYDROGEN + energy_consumption = 18 + energy_production = 10 + products = list(GAS_HELIUM = 2) + radiation = 72 + minimum_energy_level = 400000 + priority = 18 + +/singleton/fusion_reaction/helium3_helium3 + name = "Helium-3 Burning" + p_react = GAS_HELIUMFUEL + s_react = GAS_HELIUMFUEL + energy_consumption = 2 + energy_production = 96 + products = list(GAS_HELIUM = 1, GAS_HYDROGEN = 2) + radiation = 1 + minimum_energy_level = 3200000 + priority = 30 + +// bad!!! /singleton/fusion_reaction/oxygen_oxygen + name = "Oxygen Burning" p_react = GAS_OXYGEN s_react = GAS_OXYGEN energy_consumption = 10 energy_production = 0 - instability = 5 - radiation = 5 + instability = 8 + radiation = 250 products = list("silicon"= 1) -/singleton/fusion_reaction/iron_iron +// Iron poisoning +/singleton/fusion_reaction/iron_poison + name = "Iron Poisoning" p_react = "iron" s_react = "iron" - products = list("silver" = 10, "gold" = 10, "platinum" = 10) // Not realistic but w/e - energy_consumption = 10 + energy_consumption = 32 + energy_production = 0 + radiation = 48 + minimum_energy_level = 1000 + priority = 35 + +// Gold poisoning +/singleton/fusion_reaction/gold_poison + name = "Gold Poisoning" + p_react = "gold" + s_react = "gold" + energy_consumption = 48 energy_production = 0 instability = 2 - minimum_reaction_temperature = 10000 + minimum_energy_level = 1000 + radiation = 96 -/singleton/fusion_reaction/phoron_hydrogen - p_react = GAS_HYDROGEN - s_react = GAS_PHORON - energy_consumption = 10 +/singleton/fusion_reaction/iron_iron + name = "Iron Burning" + p_react = "iron" + s_react = "iron" + // Much of the gold is going to be consumed to poison the reactor. + products = list("silver" = 12, "gold" = 32, "platinum" = 12, "lead" = 12, ) // Not realistic but w/e + energy_consumption = 32 energy_production = 0 - instability = 5 - products = list("mhydrogen" = 1) - minimum_reaction_temperature = 8000 + instability = 0.5 + radiation = 49 + minimum_energy_level = 2800000 + priority = 40 + +/singleton/fusion_reaction/mhydrogen + name = "Metallic Hydrogen Stabilization" + p_react = "metallic hydrogen" + s_react = "metallic hydrogen" + energy_consumption = 0 + energy_production = 50 + instability = -8 + radiation = 10 + products = list("deuterium" = 1, "metallic hydrogen" = 1) + minimum_energy_level = 800000 + +/singleton/fusion_reaction/iron_phoron + name = "Phoron Shot" + p_react = "iron" + s_react = GAS_PHORON + energy_consumption = 64 + energy_production = 18 + radiation = 64 + instability = 6.5 + products = list("uranium" = 30, "borosilicate glass" = 80, "osmium" = 20) // Psuedoscience but here we are + minimum_energy_level = 4000000 + priority = 40 // VERY UNIDEAL REACTIONS. /singleton/fusion_reaction/phoron_supermatter p_react = "supermatter" s_react = GAS_PHORON energy_consumption = 0 - energy_production = 5 - radiation = 40 - instability = 20 + energy_production = 800 + radiation = 4000 + instability = 30 /singleton/fusion_reaction/phoron_supermatter/handle_reaction_special(obj/effect/fusion_em_field/holder) - wormhole_event(GetConnectedZlevels(holder)) var/turf/origin = get_turf(holder) @@ -153,26 +334,3 @@ GLOBAL_LIST(fusion_reactions) explosion(origin, 8) return 1 - - -// High end reactions. -/singleton/fusion_reaction/boron_hydrogen - p_react = GAS_BORON - s_react = GAS_HYDROGEN - minimum_energy_level = 15000 - energy_consumption = 3 - energy_production = 12 - radiation = 3 - instability = 2.5 - products = list(GAS_HELIUM = 1) - -// Any now we go even further beyond!!!! -/singleton/fusion_reaction/iron_phoron - p_react = "iron" - s_react = GAS_PHORON - minimum_energy_level = 100000 - energy_consumption = 10 - energy_production = 4 - radiation = 30 - instability = 5 - products = list("uranium" = 10, "lead" = 10, "borosilicate glass" = 10) // Psuedoscience but here we are diff --git a/code/modules/power/fusion/kinetic_harvester.dm b/code/modules/power/fusion/kinetic_harvester.dm index eb99d8eb4d0..28a0bf8bafb 100644 --- a/code/modules/power/fusion/kinetic_harvester.dm +++ b/code/modules/power/fusion/kinetic_harvester.dm @@ -69,7 +69,7 @@ for(var/mat in stored) var/material/material = SSmaterials.get_material_by_name(mat) if(material) - var/sheets = FLOOR(stored[mat]/(SHEET_MATERIAL_AMOUNT * 1.5), 1) + var/sheets = FLOOR(stored[mat]/(SHEET_MATERIAL_AMOUNT * 2), 1) data["materials"] += list(list("material" = mat, "rawamount" = stored[mat], "amount" = sheets, "harvest" = harvesting[mat])) return data @@ -87,7 +87,8 @@ harvesting -= mat else var/harvest = min(harvest_from.owned_field.reactants[mat], rand(100,200)) - harvest_from.owned_field.reactants[mat] -= harvest + // Leave a few counts of the reactant to avoid deactivating harvest mode + harvest_from.owned_field.reactants[mat] -= (harvest - rand(0,5)) if(harvest_from.owned_field.reactants[mat] <= 0) harvest_from.owned_field.reactants -= mat stored[mat] += harvest @@ -112,7 +113,7 @@ var/material/material = SSmaterials.get_material_by_name(mat) if(material) var/sheet_cost = (SHEET_MATERIAL_AMOUNT * 1.5) - var/sheets = FLOOR(stored[mat]/sheet_cost, 1) + var/sheets = min(FLOOR(stored[mat]/sheet_cost, 1), 50) if(sheets > 0) var/obj/item/stack/material/M = new material.stack_type(get_turf(src), sheets) M.update_icon() diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm index de35aafe73c..d338f0a8d60 100644 --- a/code/modules/power/generator.dm +++ b/code/modules/power/generator.dm @@ -7,9 +7,9 @@ obj_flags = OBJ_FLAG_ROTATABLE use_power = POWER_USE_OFF - idle_power_usage = 100 //Watts, I hope. Just enough to do the computer and display things. + idle_power_usage = 1000 - var/max_power = 500000 + var/max_power = 2500000 var/thermal_efficiency = 0.65 var/obj/machinery/atmospherics/binary/circulator/circ1 @@ -146,7 +146,7 @@ //Exceeding maximum power leads to some power loss if(effective_gen > max_power && prob(5)) spark_system.queue() - stored_energy *= 0.5 + stored_energy *= 0.67 //Power last_circ1_gen = circ1.return_stored_energy() diff --git a/code/modules/power/portgen.dm b/code/modules/power/portgen.dm index 41b2c4f76dc..4674576f3cd 100644 --- a/code/modules/power/portgen.dm +++ b/code/modules/power/portgen.dm @@ -120,7 +120,7 @@ temperature_gain and max_temperature are set so that the max safe power level is 4. Setting to 5 or higher can only be done temporarily before the generator overheats. */ - power_gen = 25000 //Watts output per power_output level + power_gen = 50000 //Watts output per power_output level var/max_power_output = 5 //The maximum power setting without emagging. var/max_safe_output = 4 // For UI use, maximal output that won't cause overheat. var/time_per_sheet = 576 //fuel efficiency - how long 1 sheet lasts at power level 1 @@ -416,7 +416,7 @@ sheet_path = /obj/item/stack/material/uranium board_path = "/obj/item/circuitboard/portgen/advanced" - power_gen = 50000 // 200 kW = safe max, 250 kW = unsafe max. + power_gen = 100000 // 400 kW = safe max, 500 kW = unsafe max. max_temperature = 340 temperature_gain = 60 @@ -448,7 +448,7 @@ sheet_path = /obj/item/stack/material/tritium board_path = "/obj/item/circuitboard/portgen/super" - power_gen = 80000 // 400 kW = safe max, 640 kW = unsafe max + power_gen = 160000 // 800 kW = safe max, 960 kW = unsafe max max_power_output = 8 max_safe_output = 5 time_per_sheet = 576 @@ -462,7 +462,7 @@ /obj/machinery/power/portgen/basic/fusion name = "minature fusion reactor" desc = "The RT7-0, an industrial all-in-one nuclear fusion power plant created by Hephaestus. It uses tritium as a fuel source and relies on coolant to keep the reactor cool. Rated for 500 kW max safe output." - power_gen = 100000 + power_gen = 200000 icon_state = "reactor" base_icon = "reactor" portgen_lightcolour = "#458943" diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index 8b7cc465235..1c5e7fc19ae 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -57,6 +57,27 @@ else return 0 +// Proc: power_wattage_readable() +// Parameters: 1 (amount - Power in Watts to be converted to W, kW or MW) +// Description: Helper proc that converts reading in Watts to kW or MW (returns string version of amount parameter) +/obj/machinery/proc/power_wattage_readable(var/amount = 0) + var/units = "" + // 10kW and less - Watts + if(amount < 10000) + units = "W" + // 10MW and less - KiloWatts + else if(amount < 10000000) + units = "kW" + amount = (round(amount/100) / 10) + // More than 10MW - MegaWatts + else + units = "MW" + amount = (round(amount/10000) / 100) + if (units == "W") + return "[amount] W" + else + return "[amount] [units]" + /obj/machinery/power/proc/disconnect_terminal() // machines without a terminal will just return, no harm no fowl. return diff --git a/code/modules/power/rtg.dm b/code/modules/power/rtg.dm index 8ca18dcc68a..5a7ec10e658 100644 --- a/code/modules/power/rtg.dm +++ b/code/modules/power/rtg.dm @@ -15,7 +15,7 @@ buckle_lying = FALSE buckle_require_restraints = TRUE - var/power_gen = 1000 // Enough to power a single APC. 4000 output with T4 capacitor. + var/power_gen = 4000 // Enough to power a single APC. 16000 output with T4 capacitor. var/irradiate = TRUE // RTGs irradiate surroundings, but only when panel is open. @@ -70,7 +70,7 @@ /obj/machinery/power/rtg/advanced desc = "An advanced RTG capable of moderating isotope decay, increasing power output but reducing lifetime. It uses phoron-fueled radiation collectors to increase output even further." - power_gen = 1250 // 2500 on T1, 10000 on T4. + power_gen = 5000 // 10000 on T1, 20000 on T4. component_types = list( /obj/item/stack/cable_coil{amount = 5}, diff --git a/code/modules/power/sensors/powernet_sensor.dm b/code/modules/power/sensors/powernet_sensor.dm index 28804cb3817..916d4716f52 100644 --- a/code/modules/power/sensors/powernet_sensor.dm +++ b/code/modules/power/sensors/powernet_sensor.dm @@ -47,27 +47,6 @@ return 1 return 0 -// Proc: reading_to_text() -// Parameters: 1 (amount - Power in Watts to be converted to W, kW or MW) -// Description: Helper proc that converts reading in Watts to kW or MW (returns string version of amount parameter) -/obj/machinery/power/sensor/proc/reading_to_text(var/amount = 0) - var/units = "" - // 10kW and less - Watts - if(amount < 10000) - units = "W" - // 10MW and less - KiloWatts - else if(amount < 10000000) - units = "kW" - amount = (round(amount/100) / 10) - // More than 10MW - MegaWatts - else - units = "MW" - amount = (round(amount/10000) / 100) - if (units == "W") - return "[amount] W" - else - return "~[amount] [units]" //kW and MW are only approximate readings, therefore add "~" - // Proc: find_apcs() // Parameters: None // Description: Searches powernet for APCs and returns them in a list. @@ -119,13 +98,13 @@ out += "NO CELL" var/load = A.lastused_total // Load. total_apc_load += load - load = reading_to_text(load) + load = power_wattage_readable(load) out += "[load]" - out += "
    AREA_USAGE_TOTAL AVAILABLE: [reading_to_text(powernet.avail)]" - out += "
    APC LOAD: [reading_to_text(total_apc_load)]" - out += "
    OTHER LOAD: [reading_to_text(max(powernet.load - total_apc_load, 0))]" - out += "
    AREA_USAGE_TOTAL GRID LOAD: [reading_to_text(powernet.viewload)] ([round((powernet.load / powernet.avail) * 100)]%)" + out += "
    AREA_USAGE_TOTAL AVAILABLE: [power_wattage_readable(powernet.avail)]" + out += "
    APC LOAD: [power_wattage_readable(total_apc_load)]" + out += "
    OTHER LOAD: [power_wattage_readable(max(powernet.load - total_apc_load, 0))]" + out += "
    AREA_USAGE_TOTAL GRID LOAD: [power_wattage_readable(powernet.viewload)] ([round((powernet.load / powernet.avail) * 100)]%)" if(powernet.problem) out += "
    WARNING: Abnormal grid activity detected!" @@ -163,7 +142,7 @@ APC_entry["cell_charge"] = A.cell ? round(A.cell.percent()) : 0 APC_entry["cell_status"] = A.cell ? chg[A.charging+1] : 0 // Other info - APC_entry["total_load"] = reading_to_text(A.lastused_total) + APC_entry["total_load"] = power_wattage_readable(A.lastused_total) var/area_display_name = get_area_display_name(A.area) APC_entry["name"] = area_display_name // Add data into main list of APC data. @@ -171,10 +150,10 @@ // Add load of this APC to total APC load calculation total_apc_load += A.lastused_total data["apc_data"] = APC_data - data["total_avail"] = reading_to_text(max(powernet.avail, 0)) - data["total_used_apc"] = reading_to_text(max(total_apc_load, 0)) - data["total_used_other"] = reading_to_text(max(powernet.viewload - total_apc_load, 0)) - data["total_used_all"] = reading_to_text(max(powernet.viewload, 0)) + data["total_avail"] = power_wattage_readable(max(powernet.avail, 0)) + data["total_used_apc"] = power_wattage_readable(max(total_apc_load, 0)) + data["total_used_other"] = power_wattage_readable(max(powernet.viewload - total_apc_load, 0)) + data["total_used_all"] = power_wattage_readable(max(powernet.viewload, 0)) // Prevents runtimes when avail is 0 (division by zero) if(powernet.avail) data["load_percentage"] = round((powernet.viewload / powernet.avail) * 100) diff --git a/code/modules/power/singularity/particle_accelerator/particle.dm b/code/modules/power/singularity/particle_accelerator/particle.dm index e74844b84d4..8b5c149c123 100644 --- a/code/modules/power/singularity/particle_accelerator/particle.dm +++ b/code/modules/power/singularity/particle_accelerator/particle.dm @@ -52,14 +52,14 @@ else if(istype(A, /obj/machinery/power/fusion_core)) var/obj/machinery/power/fusion_core/collided_core = A if(particle_type && particle_type != "neutron") - if(collided_core.AddParticles(particle_type, 1 + additional_particles)) + if(collided_core.AddParticles(particle_type, 12 + additional_particles)) collided_core.owned_field.plasma_temperature += mega_energy collided_core.owned_field.energy += energy qdel(src) else if(istype(A, /obj/effect/fusion_particle_catcher)) var/obj/effect/fusion_particle_catcher/PC = A if(particle_type && particle_type != "neutron") - if(PC.parent.owned_core.AddParticles(particle_type, 1 + additional_particles)) + if(PC.parent.owned_core.AddParticles(particle_type, 12 + additional_particles)) PC.parent.plasma_temperature += mega_energy PC.parent.energy += energy qdel(src) diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index fe36f72f0fd..c81314dc4c9 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -1,5 +1,14 @@ -// the SMES -// stores power +/** + * BUILDABLE SMES (Superconducting Magnetic Energy Storage) UNIT + * AKA PSUs- both 'SMES unit' and 'PSU' will be used interchangeably in documentation and in-game. + * + * PSUs are linked by the RCON System, allowing for remote management of all linked + * It also supports RCON System which allows you to operate it remotely, if properly set. + * + * This file contains the main code and definition information for SMES units. + * For instantiation of buildable SMES units (the ones you'll see 99% of the time), + * please refer to 'code/modules/power/smes_construction.dm' + */ #define SMESRATE 0.05 #define SMESMAXCHARGELEVEL 250000 @@ -28,30 +37,41 @@ clicksound = /singleton/sound_category/switch_sound var/health = 500 - var/busted = FALSE // this it to prevent the damage text from playing repeatedly - - var/capacity = 5e6 // maximum charge - var/charge = 1e6 // actual charge + /// this it to prevent the damage text from playing repeatedly + var/busted = FALSE + /// maximum charge + var/capacity = 5e6 + var/charge = 1e6 /// actual charge var/max_coils = 0 - var/input_attempt = 0 // 1 = attempting to charge, 0 = not attempting to charge - var/inputting = 0 // 1 = actually inputting, 0 = not inputting - var/input_level = 50000 // amount of power the SMES attempts to charge by - var/input_level_max = 200000 // cap on input_level - var/input_taken = 0 // amount that we received from powernet last tick + /// 1 = attempting to charge, 0 = not attempting to charge + var/input_attempt = 0 + /// 1 = actually inputting, 0 = not inputting + var/inputting = 0 + /// amount of power the SMES attempts to charge by + var/input_level = 250000 + /// cap on input_level + var/input_level_max = 2000000 + /// amount that we received from powernet last tick + var/input_taken = 0 - var/output_attempt = 0 // 1 = attempting to output, 0 = not attempting to output - var/outputting = 0 // 1 = actually outputting, 0 = not outputting - var/output_level = 50000 // amount of power the SMES attempts to output - var/output_level_max = 200000 // cap on output_level - var/output_used = 0 // amount of power actually outputted. may be less than output_level if the powernet returns excess power + /// 1 = attempting to output, 0 = not attempting to output + var/output_attempt = 0 + /// 1 = actually outputting, 0 = not outputting + var/outputting = 0 + /// amount of power the SMES attempts to output + var/output_level = 250000 + /// cap on output_level + var/output_level_max = 2000000 + /// amount of power actually outputted. may be less than output_level if the powernet returns excess power + var/output_used = 0 - //Holders for powerout event. - //var/last_output_attempt = 0 - //var/last_input_attempt = 0 - //var/last_charge = 0 + ///Holders for powerout event. + ///var/last_output_attempt = 0 + ///var/last_input_attempt = 0 + ///var/last_charge = 0 - //For icon overlay updates + ///For icon overlay updates var/last_disp var/last_chrg var/last_onln @@ -60,14 +80,18 @@ var/input_pulsed = 0 var/output_cut = 0 var/output_pulsed = 0 - var/is_critical = FALSE // Use by gridcheck event, if set to true we do not disable it - var/failure_timer = 0 // Set by gridcheck event, temporarily disables the SMES. + /// Use by gridcheck event, if set to true we do not disable it + var/is_critical = FALSE + /// Set by gridcheck event, temporarily disables the SMES. + var/failure_timer = 0 var/target_load = 0 var/open_hatch = 0 var/name_tag = null - var/building_terminal = 0 //Suggestions about how to avoid clickspam building several terminals accepted! + ///Suggestions about how to avoid clickspam building several terminals accepted! + var/building_terminal = 0 var/obj/machinery/power/terminal/terminal = null - var/should_be_mapped = 0 // If this is set to 0 it will send out warning on New() + /// If this is set to 0 it will send out warning on New() + var/should_be_mapped = 0 var/datum/effect_system/sparks/big_spark var/datum/effect_system/sparks/small_spark diff --git a/code/modules/power/smes_construction.dm b/code/modules/power/smes_construction.dm index f0631994876..596524c7d3a 100644 --- a/code/modules/power/smes_construction.dm +++ b/code/modules/power/smes_construction.dm @@ -1,22 +1,26 @@ -// BUILDABLE SMES(Superconducting Magnetic Energy Storage) UNIT -// -// Last Change 1.1.2015 by Atlantis - Happy New Year! -// -// This is subtype of SMES that should be normally used. It can be constructed, deconstructed and hacked. -// It also supports RCON System which allows you to operate it remotely, if properly set. +/** + * BUILDABLE SMES (Superconducting Magnetic Energy Storage) UNIT + * AKA PSUs- both 'SMES unit' and 'PSU' will be used interchangeably in documentation and in-game. + * + * PSUs are linked by the RCON System, allowing for remote management of all linked + * It also supports RCON System which allows you to operate it remotely, if properly set. + * + * This is subtype of SMES that should be normally used. It can be constructed, deconstructed and hacked. + */ -//MAGNETIC COILS - These things actually store and transmit power within the SMES. Different types have different +/// MAGNETIC COILS - These things actually store and transmit power within the SMES. Different types have different properties /obj/item/smes_coil name = "superconductive magnetic coil" desc = "Standard superconductive magnetic coil with balanced capacity and I/O rating." icon = 'icons/obj/stock_parts.dmi' icon_state = "smes_coil" - w_class = WEIGHT_CLASS_BULKY // It's LARGE (backpack size) - var/ChargeCapacity = 5000000 - var/IOCapacity = 250000 + /// It's LARGE (backpack sized) + w_class = WEIGHT_CLASS_BULKY + var/ChargeCapacity = 2500000 + var/IOCapacity = 500000 -/obj/item/smes_coil/get_examine_text(mob/user, distance, is_adjacent, infix, suffix) - . = ..() +/obj/item/smes_coil/feedback_hints(mob/user, distance, is_adjacent) + . += ..() if(is_adjacent) . += "The label reads: Only certified professionals are allowed to handle and install this component." . += "Charge capacity: [ChargeCapacity/1000000] MJ." @@ -27,25 +31,24 @@ name = "basic superconductive magnetic coil" desc = "Cheaper model of the standard superconductive magnetic coil. Its capacity and I/O rating are considerably lower." icon_state = "smes_coil_weak" - ChargeCapacity = 1000000 - IOCapacity = 150000 + ChargeCapacity = 500000 + IOCapacity = 300000 // 1000% Charge Capacity, 20% I/O Capacity /obj/item/smes_coil/super_capacity name = "superconductive capacitance coil" desc = "Specialised version of the standard superconductive magnetic coil. It has significantly stronger containment field, allowing for immense power storage. However its I/O rating is much lower." icon_state = "smes_coil_capacitance" - ChargeCapacity = 50000000 - IOCapacity = 50000 + ChargeCapacity = 25000000 + IOCapacity = 100000 // 10% Charge Capacity, 400% I/O Capacity. Technically turns SMES into large super capacitor.Ideal for shields. /obj/item/smes_coil/super_io name = "superconductive transmission coil" desc = "Specialised version of the standard superconductive magnetic coil. While it's almost useless for power storage it can rapidly transfer power, making it useful in systems that require large throughput." icon_state = "smes_coil_transmission" - ChargeCapacity = 500000 - IOCapacity = 1000000 - + ChargeCapacity = 250000 + IOCapacity = 2000000 // SMES SUBTYPES - THESE ARE MAPPED IN AND CONTAIN DIFFERENT TYPES OF COILS @@ -66,63 +69,85 @@ /obj/machinery/power/smes/buildable/main_engine cur_coils = 4 input_attempt = TRUE - input_level = 500000 + input_level = 1000000 output_attempt = TRUE - output_level = 500000 + output_level = 1000000 charge =1.5e+7 -// For the substation SMES around the Horizon. +/// For the substation SMES around the Horizon. /obj/machinery/power/smes/buildable/substation - input_level = 150000 - output_level = 140000 + input_level = 250000 + output_level = 240000 + +// Telecomms substation. Based on shuttle settings; those boxes are power-hungry. +/obj/machinery/power/smes/buildable/telecomms/Initialize() + . = ..() + component_parts += new /obj/item/smes_coil/super_io(src) + input_attempt = TRUE + output_attempt = TRUE + input_level = 2000000 + output_level = 2000000 + charge = 5.55e+007 // The Horizon's shuttles want something with decent capacity to sustain themselves and enough transmission to meet their energy needs. /obj/machinery/power/smes/buildable/horizon_shuttle/Initialize() . = ..() component_parts += new /obj/item/smes_coil/super_io(src) component_parts += new /obj/item/smes_coil/super_capacity(src) - input_attempt = TRUE - output_attempt = TRUE - input_level = 1300000 - output_level = 1300000 - charge = 5.55e+007 - -/obj/machinery/power/smes/buildable/third_party_shuttle/Initialize() //Identical to the horizon_shuttle for now as we try to work out specifics - . = ..() - component_parts += new /obj/item/smes_coil/super_io(src) component_parts += new /obj/item/smes_coil/super_capacity(src) input_attempt = TRUE output_attempt = TRUE - input_level = 1300000 - output_level = 1300000 + input_level = 2700000 + output_level = 2700000 + charge = 5.55e+007 + +//Identical to the horizon_shuttle for now as we try to work out specifics +/obj/machinery/power/smes/buildable/third_party_shuttle/Initialize() + . = ..() + component_parts += new /obj/item/smes_coil/super_io(src) + component_parts += new /obj/item/smes_coil/super_capacity(src) + component_parts += new /obj/item/smes_coil/super_capacity(src) + input_attempt = TRUE + output_attempt = TRUE + input_level = 2700000 + output_level = 2700000 charge = 5.55e+007 /obj/machinery/power/smes/buildable/third_party_shuttle/empty/Initialize() . = ..() charge = 0 -/obj/machinery/power/smes/buildable/autosolars/Initialize() //for third parties that have their solars autostart, It's slightly upgraded for them +//for third parties that have their solars autostart, It's slightly upgraded for them +/obj/machinery/power/smes/buildable/autosolars/Initialize() . = ..() - component_parts += new /obj/item/smes_coil/super_capacity(src) component_parts += new /obj/item/smes_coil/super_io(src) + component_parts += new /obj/item/smes_coil/super_capacity(src) + component_parts += new /obj/item/smes_coil/super_capacity(src) input_attempt = TRUE output_attempt = TRUE - input_level = 1000000 - output_level = 1000000 + input_level = 2700000 + output_level = 2700000 charge = 3.02024e+006 // END SMES SUBTYPES // SMES itself /obj/machinery/power/smes/buildable - max_coils = 6 // 30M capacity, 1.5MW input/output when fully upgraded /w default coils - var/cur_coils = 1 // Current amount of installed coils - var/safeties_enabled = 1 // If 0 modifications can be done without discharging the SMES, at risk of critical failure. - var/failing = 0 // If 1 critical failure has occured and SMES explosion is imminent. + /// 20 MJ capacity, 8 MW input/output when fully upgraded /w default coils + max_coils = 8 + /// Current amount of installed coils + var/cur_coils = 1 + /// If 0 modifications can be done without discharging the SMES, at risk of critical failure. + var/safeties_enabled = 1 + /// If 1 critical failure has occured and SMES explosion is imminent. + var/failing = 0 var/datum/wires/smes/wires - var/grounding = 1 // Cut to quickly discharge, at cost of "minor" electrical issues in output powernet. - var/RCon = 1 // Cut to disable AI and remote control. - var/RCon_tag = "NO_TAG" // RCON tag, change to show it on SMES Remote control console. + /// Cut to quickly discharge, at cost of "minor" electrical issues in output powernet. + var/grounding = 1 + /// Cut to disable AI and remote control. + var/RCon = 1 + /// RCON tag, change to show it on SMES Remote control console. + var/RCon_tag = "NO_TAG" charge = 0 should_be_mapped = 1 component_types = list( @@ -348,8 +373,6 @@ // Not sure if this is necessary, but just in case the SMES *somehow* survived.. qdel(src) - - // Proc: apcs_overload() // Parameters: 3 (failure_chance - chance to actually break the APC, overload_chance - Chance of breaking lights, reboot_chance - Chance of temporarily disabling the APC) // Description: Damages output powernet by power surge. Destroys few APCs and lights, depending on parameters. diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm index db40428533c..6d6e7e1cfec 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm @@ -78,6 +78,23 @@ to_chat(M, SPAN_WARNING(pick("Your skin burns!", "The chemical is melting your skin!", "Wash it off, wash it off!"))) remove_self(REAGENT_VOLUME(holder, type), holder) +/singleton/reagent/boron + name = "Boron" + description = "A dark, silvery metalloid with a small handful of industrial applications." + reagent_state = SOLID + color = "#888888" + taste_description = "metal" + taste_mult = 1.1 + fallback_specific_heat = 0.811 + value = 0.02 + +/** + * Boron has very little affect on mammals, but is moderately toxic to arthopods and commonly used in insecticides. Hi Vaurca. + */ +/singleton/reagent/boron/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + if (alien == IS_VAURCA) + M.adjustToxLoss(2 * removed) + /singleton/reagent/carbon name = "Carbon" description = "A chemical element, the building block of life." diff --git a/code/modules/shieldgen/shield_capacitor.dm b/code/modules/shieldgen/shield_capacitor.dm index ec6a0d6112a..cfba64f8f38 100644 --- a/code/modules/shieldgen/shield_capacitor.dm +++ b/code/modules/shieldgen/shield_capacitor.dm @@ -138,4 +138,4 @@ ..() /obj/machinery/shield_capacitor/multiz - max_charge_rate = 1250000 //1250 kW + max_charge_rate = 1250000 diff --git a/code/modules/xgm/xgm_gas_data.dm b/code/modules/xgm/xgm_gas_data.dm index eb650b4ae61..9ba6c0d8632 100644 --- a/code/modules/xgm/xgm_gas_data.dm +++ b/code/modules/xgm/xgm_gas_data.dm @@ -1,26 +1,27 @@ var/global/datum/xgm_gas_data/gas_data /datum/xgm_gas_data - //Simple list of all the gas IDs. + /// Simple list of all the gas IDs. var/list/gases = list() - //The friendly, human-readable name for the gas. + /// The friendly, human-readable name for the gas. var/list/name = list() - //Specific heat of the gas. Used for calculating heat capacity. + /// Specific heat of the gas. Used for calculating heat capacity. var/list/specific_heat = list() - //Molar mass of the gas. Used for calculating specific entropy. + /// Molar mass of the gas. Used for calculating specific entropy. var/list/molar_mass = list() - //Tile overlays. /obj/gas_overlay, created from references to 'icons/effects/tile_effects.dmi' + /// Tile overlays. /obj/gas_overlay, created from references to 'icons/effects/tile_effects.dmi' var/list/tile_overlay = list() - //Optional color for tile overlay + /// Optional color for tile overlay var/list/tile_overlay_color = list() - //Overlay limits. There must be at least this many moles for the overlay to appear. + /// Overlay limits. There must be at least this many moles for the overlay to appear. var/list/overlay_limit = list() - //Flags. + /// Flags. var/list/flags = list() /singleton/xgm_gas var/id = "" var/name = "Unnamed Gas" + var/desc var/specific_heat = 20 // J/(mol*K) var/molar_mass = 0.032 // kg/mol diff --git a/html/changelogs/bat-indraupdate.yml b/html/changelogs/bat-indraupdate.yml new file mode 100644 index 00000000000..3aef39f9629 --- /dev/null +++ b/html/changelogs/bat-indraupdate.yml @@ -0,0 +1,36 @@ +# Your name. +author: Batrachophrenoboocosmomachia + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. +# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. +changes: + - balance: "Fusion reaction modifications. Higher radiation and temperature output, comparable power output." + - balance: "Increased rad resistance modifier of Borosilicate Windows from 1 -> 4 and (closed) Blast Doors from 1 -> 6." + - balance: "INDRA Field Strength minima/maxima changed from 1-100 -> 20-120. Power costs increased significantly." + - balance: "INDRA instability increase per tick now limited, similar to Supermatter (prevents sudden instability spike from instantly nuking it)." + - balance: "APC cell charge rate increased 10x." + - balance: "Rebalanced contents of INDRA hard storage compartment." + - balance: "SMES coils capacities halved, throughputs doubled." + - balance: "SMES unit maximum coil capacity increased from 6 -> 8." + - balance: "TEG maximum power output increased from 500000 -> 2500000." + - balance: "Power wasted from exceeding TEG maximum power output decreased from 50% to 33%." + - balance: "Portable generators of all types have had their power generation capacity doubled." + - rscadd: "New 'Fusion Codex' app added for all crew with ACCESS_ENGINE that details all available nuclear fusion chains." + - rscadd: "Boron added as a singleton/reagent. Poisonous to vaurca, still usable in nuclear fusion as fuel assembly rods." + - rscadd: "INDRA Field Strength now scales plasma temperature entropy, power output from temperature multiplier, and instability increase per tick." + - refactor: "'Boron' gas renamed to 'Helium-3'. Boron is not a gas. Deal with it." + - refactor: "'Steam' gas renamed to 'Water Vapor'." + - code_imp: "Descriptions added to gas singletons for future use." + - qol: "Minor remap of INDRA control room for usability." + - qol: "Standardized gas canister naming conventions." + - qol: "INDRA and APC TGUI interfaces now use use kW, MW abbreviations for high wattages." + - bugfix: "INDRA Kinetic Harvester no longer rapidly deselects materials for harvest when too many are being generated at once." + - bugfix: "INDRA EM Field effect no longer considers the camera within its reactor chamber a destabilizing influence." + - bugfix: "INDRA reactor core now produces radiation as intended." + - bugfix: "Deuterium and Tritium canisters no longer contain 50% standard hydrogen (inheritance issue)." diff --git a/icons/obj/atmos.dmi b/icons/obj/atmos.dmi index 9de6eb7bbba..2c32bb0d990 100644 Binary files a/icons/obj/atmos.dmi and b/icons/obj/atmos.dmi differ diff --git a/icons/obj/library.dmi b/icons/obj/library.dmi index 4a344f8d4bb..5c3ec227705 100644 Binary files a/icons/obj/library.dmi and b/icons/obj/library.dmi differ diff --git a/maps/away/away_site/hivebot_hub/hivebot_hub.dmm b/maps/away/away_site/hivebot_hub/hivebot_hub.dmm index 78896f2c050..d4ffdb29a44 100644 --- a/maps/away/away_site/hivebot_hub/hivebot_hub.dmm +++ b/maps/away/away_site/hivebot_hub/hivebot_hub.dmm @@ -658,16 +658,6 @@ /obj/structure/girder, /turf/simulated/floor/airless, /area/hivebothub/dorm1) -"dK" = ( -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cart/storage/janitorialcart{ - dir = 4 - }, -/turf/simulated/floor/airless, -/area/hivebothub/atmos) "dY" = ( /obj/effect/landmark/entry_point/east{ name = "east, secure storage" @@ -839,6 +829,16 @@ }, /turf/simulated/floor/tiled/dark/airless, /area/hivebothub/portdocks) +"eU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cart/storage/janitorialcart{ + dir = 4 + }, +/turf/simulated/floor/airless, +/area/hivebothub/atmos) "eX" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -3958,6 +3958,12 @@ }, /turf/simulated/floor/tiled/dark/full/airless, /area/hivebothub/portdocks) +"AA" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/portable_atmospherics/canister/tritium, +/turf/simulated/floor/tiled/dark/full/airless, +/area/hivebothub/secure) "AF" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -6663,12 +6669,6 @@ }, /turf/simulated/floor/carpet, /area/hivebothub/dorm2) -"SI" = ( -/obj/effect/floor_decal/industrial/outline/yellow, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/portable_atmospherics/canister/hydrogen/tritium, -/turf/simulated/floor/tiled/dark/full/airless, -/area/hivebothub/secure) "SY" = ( /obj/item/ore/glass{ pixel_y = 7; @@ -6951,12 +6951,6 @@ /obj/structure/cable/yellow, /turf/simulated/floor/airless, /area/hivebothub/portdocks) -"UY" = ( -/obj/effect/floor_decal/industrial/outline/yellow, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/portable_atmospherics/canister/hydrogen/deuterium, -/turf/simulated/floor/tiled/dark/full/airless, -/area/hivebothub/secure) "Va" = ( /obj/effect/floor_decal/industrial/outline/yellow, /obj/effect/decal/cleanable/dirt, @@ -7552,6 +7546,12 @@ /obj/effect/map_effect/map_helper/ruler_tiles_3, /turf/space/dynamic, /area/hivebothub/exterior) +"Zi" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/portable_atmospherics/canister/deuterium, +/turf/simulated/floor/tiled/dark/full/airless, +/area/hivebothub/secure) "Zj" = ( /obj/effect/map_effect/window_spawner/full/reinforced/grille, /obj/effect/landmark/entry_point/west{ @@ -38373,7 +38373,7 @@ NV aK FS mH -dK +eU Zf aK aK @@ -41468,8 +41468,8 @@ KX jR UL lT -UY -SI +Zi +AA UL UL UL diff --git a/maps/away/ships/tirakqi_smuggler/tirakqi_smuggler.dmm b/maps/away/ships/tirakqi_smuggler/tirakqi_smuggler.dmm index f79829c34ed..e3bd78a5a3d 100644 --- a/maps/away/ships/tirakqi_smuggler/tirakqi_smuggler.dmm +++ b/maps/away/ships/tirakqi_smuggler/tirakqi_smuggler.dmm @@ -357,10 +357,7 @@ /turf/simulated/floor/shuttle/skrell/blue, /area/ship/tirakqi_smuggler/starboard_hall) "cr" = ( -/obj/machinery/power/smes/buildable/main_engine{ - input_level = 1000000; - output_level = 1000000 - }, +/obj/machinery/power/smes/buildable/main_engine, /obj/structure/cable{ icon_state = "0-8" }, diff --git a/maps/random_ruins/exoplanets/biesel/abandoned_warehouse_2.dmm b/maps/random_ruins/exoplanets/biesel/abandoned_warehouse_2.dmm index c19f634cfa6..d96556f3aa0 100644 --- a/maps/random_ruins/exoplanets/biesel/abandoned_warehouse_2.dmm +++ b/maps/random_ruins/exoplanets/biesel/abandoned_warehouse_2.dmm @@ -188,7 +188,7 @@ "GK" = ( /obj/effect/floor_decal/industrial/outline/yellow, /obj/random/dirt_75, -/obj/machinery/portable_atmospherics/canister/empty/boron, +/obj/machinery/portable_atmospherics/canister/empty/heliumfuel, /turf/simulated/floor/exoplanet/concrete, /area/template_noop) "GS" = ( diff --git a/maps/sccv_horizon/areas/horizon_areas_engineering.dm b/maps/sccv_horizon/areas/horizon_areas_engineering.dm index f530077d434..071d990d166 100644 --- a/maps/sccv_horizon/areas/horizon_areas_engineering.dm +++ b/maps/sccv_horizon/areas/horizon_areas_engineering.dm @@ -187,12 +187,12 @@ /area/horizon/engineering/reactor/indra/mainchamber name = "INDRA Reactor Chamber" ambience = AMBIENCE_SINGULARITY - area_blurb = "The product of over four-hundred years' iteration and refinement: the INDRA Mk.II Tokamak Fusion bottle and its vast supporting machineries dominate the entire compartment" + area_blurb = "The product of over four-hundred years' iteration and refinement: the INDRA Mk.II Tokamak fusion bottle and its vast supporting machineries dominate the entire compartment" /area/horizon/engineering/reactor/indra/smes name = "INDRA Reactor SMES" icon_state = "engine_smes" - area_blurb = "A quiet hum suffuses this compartment from grid balancing hardware and power banks fitted beneath the floor." + area_blurb = "A quiet hum suffuses this compartment from grid-balancing hardware and power banks fitted beneath the floor." /area/horizon/engineering/reactor/indra/monitoring name = "INDRA Reactor Monitoring" @@ -202,7 +202,7 @@ /area/horizon/engineering/reactor/indra/office name = "INDRA Reactor Office" - area_blurb = "A dingy, forgotten compartment a year or three away from looking about as well-kept as the Maints'." + area_blurb = "A dingy, forgotten compartment a year or three away from looking about as well-kept as the maints." // The engineering stairwell /area/horizon/stairwell/engineering/* are defined in './horizon_areas_crew.dm'. Bat put them there originally because they felt that made sense. If you don't, migrate them here I guess, everything's cool. diff --git a/maps/sccv_horizon/sccv_horizon.dmm b/maps/sccv_horizon/sccv_horizon.dmm index 198c5e2a87f..c14c2daac97 100644 --- a/maps/sccv_horizon/sccv_horizon.dmm +++ b/maps/sccv_horizon/sccv_horizon.dmm @@ -259,19 +259,6 @@ /obj/structure/grille, /turf/simulated/floor/plating, /area/horizon/engineering/atmos/propulsion) -"abz" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, -/turf/simulated/floor/tiled/full, -/area/horizon/hallway/primary/deck_2/central) "abC" = ( /obj/item/device/healthanalyzer, /obj/effect/floor_decal/corner/mauve/diagonal, @@ -651,6 +638,16 @@ }, /turf/simulated/floor/plating, /area/horizon/maintenance/deck_2/cargo_compartment) +"adW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/effect/floor_decal/spline/plain/corner/black, +/turf/simulated/floor/carpet/rubber, +/area/horizon/engineering/reactor/indra/monitoring) "adY" = ( /obj/structure/cable{ icon_state = "4-8" @@ -771,6 +768,19 @@ /obj/effect/floor_decal/industrial/hatch/operations, /turf/simulated/floor/tiled/dark/full, /area/supply/dock) +"aeo" = ( +/obj/effect/floor_decal/corner_wide/yellow{ + dir = 6 + }, +/obj/machinery/button/remote/blast_door{ + dir = 4; + id = "r-ust_north"; + name = "INDRA Reactor Storage Shutters"; + pixel_x = 24; + pixel_y = 7 + }, +/turf/simulated/floor/tiled, +/area/horizon/engineering/reactor/indra/mainchamber) "aes" = ( /obj/item/tank/oxygen, /obj/item/clothing/shoes/magboots, @@ -1998,18 +2008,6 @@ }, /turf/simulated/floor/wood, /area/horizon/security/meeting_room) -"alB" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/floor_decal/spline/plain/corner{ - dir = 1 - }, -/turf/simulated/floor/carpet/rubber, -/area/horizon/engineering/reactor/indra/monitoring) "alH" = ( /obj/machinery/light{ dir = 4 @@ -2891,17 +2889,6 @@ }, /turf/unsimulated/floor, /area/centcom/distress_prep) -"arO" = ( -/obj/effect/map_effect/window_spawner/full/borosilicate/reinforced, -/obj/machinery/door/blast/regular/open{ - id = "r_ust_core_blast"; - name = "INDRA Reactor Blast Doors" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/mainchamber) "arR" = ( /obj/structure/railing/mapped, /obj/structure/platform/ledge{ @@ -3318,6 +3305,15 @@ /obj/structure/lattice/catwalk/indoor/grate/dark, /turf/simulated/floor/plating, /area/horizon/engineering/atmos/propulsion) +"auh" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/horizon/engineering/reactor/indra/mainchamber) "aui" = ( /obj/effect/floor_decal/corner{ dir = 5 @@ -3575,6 +3571,14 @@ /obj/structure/table/reinforced/steel, /turf/unsimulated/floor/plating, /area/centcom/specops) +"avA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc/north, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_1/wing/starboard) "avC" = ( /obj/effect/floor_decal/industrial/warning{ dir = 8 @@ -4002,6 +4006,20 @@ }, /turf/simulated/floor/tiled, /area/horizon/crew/chargebay) +"ayM" = ( +/obj/effect/map_effect/window_spawner/full/borosilicate/reinforced, +/obj/structure/railing/mapped{ + icon_state = "railing0-0"; + rad_resistance_modifier = 6 + }, +/obj/machinery/door/blast/regular/open{ + dir = 4; + id = "r-ust_monitoring_blast"; + name = "INDRA Monitoring Blast Doors"; + rad_resistance_modifier = 24 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/monitoring) "ayS" = ( /obj/machinery/atmospherics/pipe/simple/visible/universal{ dir = 4 @@ -4516,18 +4534,6 @@ }, /turf/simulated/floor/tiled/dark, /area/shuttle/mercenary) -"aDr" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/sign/directions/prop{ - pixel_y = -22 - }, -/obj/effect/floor_decal/spline/plain/yellow{ - dir = 8 - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/smes) "aDC" = ( /obj/structure/disposalpipe/up, /obj/effect/floor_decal/industrial/warning/cee{ @@ -4605,14 +4611,6 @@ }, /turf/simulated/floor/tiled/white, /area/horizon/medical/surgery) -"aEh" = ( -/obj/structure/table/standard, -/obj/item/device/flashlight/lamp/off{ - pixel_x = -5; - pixel_y = 5 - }, -/turf/simulated/floor/plating, -/area/horizon/engineering/reactor/indra/office) "aEz" = ( /obj/effect/floor_decal/corner/dark_green{ dir = 1 @@ -4669,12 +4667,6 @@ /obj/effect/floor_decal/industrial/hatch/yellow, /turf/simulated/floor/tiled/dark/full, /area/horizon/rnd/lab) -"aFc" = ( -/obj/structure/bed/stool/chair/office/light{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/horizon/engineering/reactor/indra/office) "aFi" = ( /obj/machinery/disposal/small/east{ pixel_x = -6 @@ -4715,6 +4707,15 @@ }, /turf/simulated/floor/tiled/dark, /area/horizon/engineering/break_room) +"aFB" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/corner/yellow/full{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/horizon/engineering/storage_eva) "aFJ" = ( /obj/effect/floor_decal/corner/brown{ dir = 5 @@ -5989,6 +5990,12 @@ }, /turf/simulated/floor/wood, /area/horizon/command/heads/rd) +"aOj" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/smes) "aOl" = ( /obj/structure/bed/stool/chair/office/bridge{ dir = 4 @@ -6359,6 +6366,18 @@ }, /turf/simulated/floor, /area/horizon/command/bridge/bridge_crew) +"aRg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/spline/plain/corner/black{ + dir = 4 + }, +/turf/simulated/floor/carpet/rubber, +/area/horizon/engineering/reactor/indra/monitoring) "aRj" = ( /turf/simulated/wall/r_wall, /area/horizon/command/heads/xo) @@ -7395,17 +7414,21 @@ icon_state = "white" }, /area/centcom/holding) -"aYU" = ( -/obj/structure/table/reinforced/steel, -/obj/item/folder/yellow{ - pixel_x = -7; - pixel_y = 8 - }, -/obj/machinery/light{ - dir = 1 +"aYV" = ( +/obj/item/circuitboard/smes, +/obj/item/circuitboard/smes, +/obj/item/smes_coil, +/obj/item/smes_coil, +/obj/item/smes_coil/super_capacity, +/obj/item/smes_coil/super_capacity, +/obj/item/smes_coil/super_io, +/obj/item/smes_coil/super_io, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/structure/closet/crate/elec{ + name = "SMES supplies crate" }, /turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/monitoring) +/area/horizon/engineering/storage_hard) "aZd" = ( /obj/machinery/atmospherics/pipe/simple/visible/green{ dir = 4 @@ -7627,6 +7650,14 @@ /obj/machinery/light, /turf/simulated/floor/plating, /area/horizon/engineering/reactor/supermatter/mainchamber) +"baX" = ( +/obj/structure/lattice/catwalk/indoor/grate/dark, +/obj/machinery/alarm/east, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_2/wing/starboard/far) "bbh" = ( /obj/effect/map_effect/door_helper/unres{ dir = 1 @@ -7899,21 +7930,6 @@ /obj/structure/closet/crate, /turf/simulated/floor/tiled/dark/full, /area/horizon/operations/commissary) -"bda" = ( -/obj/effect/floor_decal/corner/black/full{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable/green{ - icon_state = "1-2" - }, -/obj/machinery/power/apc/east, -/obj/structure/cable/green{ - icon_state = "0-2" - }, -/turf/simulated/floor/tiled, -/area/horizon/operations/machinist) "bdb" = ( /obj/effect/floor_decal/corner_wide/blue{ dir = 5 @@ -8152,6 +8168,18 @@ /obj/effect/floor_decal/industrial/hatch/yellow, /turf/simulated/floor/tiled/white, /area/horizon/rnd/xenobiology/hazardous) +"bfm" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/obj/machinery/light, +/obj/structure/closet/crate/rad, +/obj/item/stack/material/deuterium/full, +/obj/item/stack/material/tritium{ + amount = 20 + }, +/turf/simulated/floor/carpet/rubber, +/area/horizon/engineering/reactor/indra/mainchamber) "bfn" = ( /obj/structure/cable/green{ icon_state = "0-2" @@ -9666,6 +9694,16 @@ /obj/effect/floor_decal/corner/dark_blue/full, /turf/simulated/floor/tiled, /area/horizon/security/brig) +"boZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/dark, +/area/horizon/engineering/aft_airlock) "bpd" = ( /obj/effect/floor_decal/corner/dark_green/full{ dir = 8 @@ -9751,22 +9789,6 @@ /obj/structure/window/shuttle/scc_space_ship, /turf/simulated/floor/plating, /area/horizon/shuttle/escape_pod/pod4) -"bpX" = ( -/obj/structure/cable/green{ - icon_state = "2-4" - }, -/obj/effect/floor_decal/corner/yellow{ - dir = 5 - }, -/obj/effect/floor_decal/corner/yellow{ - dir = 5 - }, -/obj/machinery/alarm/north, -/obj/structure/cable/green{ - icon_state = "2-8" - }, -/turf/simulated/floor/tiled/dark, -/area/horizon/engineering/aft_airlock) "bqe" = ( /obj/effect/map_effect/window_spawner/full/reinforced/grille/firedoor, /obj/structure/cable/green{ @@ -9833,6 +9855,15 @@ }, /turf/simulated/floor/tiled, /area/horizon/service/hydroponics/lower) +"bqw" = ( +/obj/machinery/light, +/obj/structure/sign/radiation{ + pixel_y = -32 + }, +/obj/effect/floor_decal/spline/plain/black, +/obj/structure/reagent_dispensers/water_cooler, +/turf/simulated/floor/carpet/rubber, +/area/horizon/engineering/reactor/indra/monitoring) "bqz" = ( /obj/machinery/papershredder, /turf/unsimulated/floor{ @@ -10277,6 +10308,12 @@ /obj/machinery/portable_atmospherics/canister/empty, /turf/simulated/floor/plating, /area/horizon/maintenance/deck_1/auxatmos) +"btm" = ( +/obj/effect/floor_decal/spline/plain/black{ + dir = 1 + }, +/turf/simulated/floor/carpet/rubber, +/area/horizon/engineering/reactor/indra/monitoring) "btn" = ( /obj/effect/floor_decal/corner_wide/green{ dir = 9 @@ -10332,15 +10369,6 @@ }, /turf/simulated/floor/plating, /area/horizon/command/heads/captain) -"btM" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 - }, -/turf/simulated/floor/carpet/rubber, -/area/horizon/engineering/reactor/indra/monitoring) "btO" = ( /turf/simulated/floor/holofloor/beach/sand{ dir = 1; @@ -11572,12 +11600,6 @@ }, /turf/simulated/floor/tiled/white, /area/horizon/security/forensic_laboratory) -"bCW" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/lattice/catwalk/indoor/grate, -/turf/simulated/floor/plating, -/area/horizon/hallway/primary/deck_2/central) "bDa" = ( /turf/unsimulated/floor/wood, /area/antag/burglar) @@ -12041,6 +12063,12 @@ /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled, /area/horizon/security/investigations_hallway) +"bHB" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/horizon/engineering/reactor/indra/mainchamber) "bHC" = ( /obj/structure/bed/stool/chair/office/light{ dir = 8 @@ -12177,12 +12205,6 @@ }, /turf/simulated/floor/reinforced/n20, /area/horizon/engineering/atmos/air) -"bIE" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - dir = 4 - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/mainchamber) "bIG" = ( /obj/structure/disposaloutlet{ dir = 4 @@ -12863,6 +12885,12 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /turf/simulated/floor/tiled, /area/horizon/engineering/atmos/storage) +"bOg" = ( +/obj/machinery/porta_turret, +/obj/effect/floor_decal/industrial/warning/full, +/obj/machinery/alarm/cold/west, +/turf/simulated/floor/tiled/dark/cooled, +/area/horizon/ai/upload) "bOj" = ( /obj/structure/cable/green{ icon_state = "1-8" @@ -13092,6 +13120,17 @@ }, /turf/unsimulated/floor/plating, /area/shuttle/specops) +"bPF" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2" + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/smes) "bPH" = ( /obj/effect/floor_decal/corner/green{ dir = 5 @@ -13523,17 +13562,6 @@ }, /turf/unsimulated/floor, /area/centcom/evac) -"bTq" = ( -/obj/structure/cable/green{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 9 - }, -/obj/machinery/firealarm/south, -/obj/effect/floor_decal/corner/yellow/full, -/turf/simulated/floor/tiled/dark, -/area/horizon/engineering/aft_airlock) "bTv" = ( /obj/structure/shuttle_part/scc_space_ship{ icon_state = "d3-6" @@ -14354,6 +14382,18 @@ }, /turf/simulated/floor/tiled/dark, /area/horizon/security/checkpoint) +"bZY" = ( +/obj/effect/floor_decal/corner_wide/yellow{ + dir = 6 + }, +/obj/structure/sign/radiation{ + pixel_x = 32 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/horizon/engineering/reactor/indra/mainchamber) "cac" = ( /obj/effect/floor_decal/corner/dark_blue{ dir = 6 @@ -14806,6 +14846,13 @@ /obj/structure/lattice/catwalk/indoor, /turf/simulated/floor/plating, /area/horizon/engineering/atmos/air) +"cdH" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled/full, +/area/horizon/engineering/reactor/indra/office) "cdO" = ( /obj/effect/floor_decal/spline/fancy/wood{ dir = 9 @@ -15696,6 +15743,18 @@ /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled/dark, /area/horizon/maintenance/deck_2/wing/starboard/near) +"cjY" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/structure/sign/nosmoking_1{ + pixel_y = 32 + }, +/obj/machinery/camera/network/reactor{ + c_tag = "Engineering - INDRA Room 2" + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "ckd" = ( /obj/machinery/atmospherics/pipe/simple/visible/red{ dir = 4 @@ -15772,15 +15831,6 @@ /obj/structure/lattice, /turf/simulated/open/airless, /area/horizon/exterior) -"ckq" = ( -/obj/effect/floor_decal/corner_wide/yellow{ - dir = 6 - }, -/obj/structure/cable/orange{ - icon_state = "4-8" - }, -/turf/simulated/floor/tiled, -/area/horizon/engineering/reactor/indra/mainchamber) "ckr" = ( /obj/structure/bed/stool/chair/sofa/corner/concave/brown, /obj/machinery/light{ @@ -16670,6 +16720,14 @@ /obj/machinery/alarm/east, /turf/simulated/floor/tiled/dark, /area/horizon/engineering/atmos/propulsion/starboard) +"crA" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/full, +/area/horizon/hallway/primary/deck_2/central) "crB" = ( /obj/structure/table/standard{ no_cargo = 1 @@ -17693,6 +17751,16 @@ /obj/machinery/alarm/east, /turf/simulated/floor/wood, /area/horizon/crew/lounge) +"cxF" = ( +/obj/machinery/computer/general_air_control/large_tank_control/terminal{ + input_tag = "fusion_injector_air"; + name = "INDRA Chamber Monitor"; + sensors = list("fusion_sensor"="INDRA Chamber"); + dir = 4 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/monitoring) "cxH" = ( /obj/effect/floor_decal/spline/plain{ dir = 8 @@ -17997,22 +18065,6 @@ "czE" = ( /turf/simulated/wall/r_wall, /area/horizon/command/bridge/bridge_crew) -"czG" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/effect/floor_decal/industrial/warning/corner{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/smes) "czI" = ( /obj/machinery/light{ dir = 4 @@ -18554,13 +18606,6 @@ }, /turf/simulated/floor/carpet, /area/shuttle/skipjack) -"cDd" = ( -/obj/effect/floor_decal/spline/plain{ - dir = 6 - }, -/obj/structure/reagent_dispensers/water_cooler, -/turf/simulated/floor/carpet/rubber, -/area/horizon/engineering/reactor/indra/monitoring) "cDe" = ( /obj/structure/bed/stool/padded/brown{ dir = 4 @@ -18720,6 +18765,18 @@ "cEg" = ( /turf/simulated/floor/wood, /area/horizon/service/dining_hall) +"cEh" = ( +/obj/effect/floor_decal/corner_wide/yellow{ + dir = 6 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/cable/orange{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled, +/area/horizon/engineering/reactor/indra/mainchamber) "cEt" = ( /obj/effect/floor_decal/corner_wide/yellow/full{ dir = 4 @@ -19509,12 +19566,6 @@ }, /turf/simulated/floor/plating, /area/horizon/maintenance/deck_2/wing/starboard/far) -"cJR" = ( -/obj/machinery/camera/network/reactor{ - c_tag = "Engineering - INDRA Room 3" - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/mainchamber) "cJV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -20070,6 +20121,19 @@ }, /turf/simulated/floor/holofloor/wood, /area/horizon/holodeck/source_theatre) +"cOK" = ( +/obj/structure/table/rack, +/obj/machinery/light/small/emergency{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/maintenance/deck_2/aft) +"cOO" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/smes) "cOY" = ( /obj/structure/table/wood, /obj/machinery/atmospherics/unary/vent_scrubber/on{ @@ -22129,19 +22193,6 @@ /obj/structure/flora/bush, /turf/simulated/floor/exoplanet/snow, /area/centcom/shared_dream) -"ddl" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 5 - }, -/obj/machinery/power/portgen/basic{ - anchored = 1 - }, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/obj/machinery/light/spot, -/turf/simulated/floor/carpet/rubber, -/area/horizon/engineering/reactor/indra/mainchamber) "ddm" = ( /obj/structure/cable{ icon_state = "4-8" @@ -22366,23 +22417,6 @@ }, /turf/simulated/floor/plating, /area/horizon/maintenance/deck_2/wing/starboard) -"deX" = ( -/obj/structure/cable/yellow, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/power/smes/buildable{ - RCon_tag = "INDRA - Grid"; - charge = 10000000; - cur_coils = 4; - input_attempt = 1; - input_level = 500000; - output_attempt = 1; - output_level = 500000 - }, -/obj/structure/lattice/catwalk/indoor, -/turf/simulated/floor/plating, -/area/horizon/engineering/reactor/indra/smes) "deZ" = ( /obj/structure/table/reinforced/glass, /obj/effect/floor_decal/spline/fancy/wood{ @@ -22550,6 +22584,13 @@ }, /turf/simulated/floor/tiled/dark, /area/horizon/service/kitchen) +"dfM" = ( +/obj/structure/engineer_maintenance/electric/wall, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "dfN" = ( /obj/machinery/floodlight, /obj/effect/floor_decal/industrial/warning, @@ -23046,6 +23087,19 @@ }, /turf/simulated/floor/tiled/white, /area/horizon/rnd/chemistry) +"diR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/lattice/catwalk/indoor/grate/dark, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_1/wing/starboard) "diU" = ( /obj/structure/table/reinforced/wood, /obj/structure/window/reinforced/crescent{ @@ -24314,6 +24368,11 @@ /obj/structure/railing/mapped, /turf/simulated/open, /area/horizon/operations/office) +"dqW" = ( +/obj/effect/floor_decal/industrial/warning, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/maintenance/deck_2/aft) "dqX" = ( /obj/structure/table/reinforced/steel, /obj/structure/window/reinforced/crescent, @@ -25082,6 +25141,10 @@ }, /turf/simulated/floor/tiled/dark, /area/horizon/rnd/xenoarch/storage) +"dwz" = ( +/obj/machinery/atmospherics/pipe/simple/visible, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "dwA" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -26491,6 +26554,16 @@ }, /turf/simulated/floor/tiled/dark, /area/horizon/maintenance/deck_2/wing/port) +"dGd" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/maintenance_hatch{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_2/wing/starboard/far) "dGi" = ( /obj/effect/floor_decal/corner/dark_blue{ dir = 10 @@ -26597,24 +26670,6 @@ }, /turf/simulated/floor/reinforced, /area/horizon/rnd/xenobiology) -"dGU" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/effect/floor_decal/industrial/warning{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/smes) "dGV" = ( /obj/effect/landmark/entry_point/aft{ name = "aft engines, starboard 2" @@ -27035,6 +27090,17 @@ }, /turf/simulated/floor/wood, /area/horizon/command/heads/om) +"dJC" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/structure/table/rack, +/obj/structure/closet/crate/rad, +/obj/item/stack/material/uranium{ + amount = 10 + }, +/turf/simulated/floor/carpet/rubber, +/area/horizon/engineering/reactor/indra/mainchamber) "dJF" = ( /obj/effect/floor_decal/corner/paleblue{ dir = 5 @@ -27474,6 +27540,13 @@ /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled/dark, /area/horizon/medical/icu) +"dNt" = ( +/obj/machinery/atmospherics/binary/pump{ + dir = 1; + target_pressure = 10 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "dNx" = ( /turf/simulated/floor/holofloor/grass, /area/horizon/holodeck/source_picnicarea) @@ -27621,17 +27694,22 @@ }, /turf/simulated/floor/lino, /area/merchant_station) +"dOx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/spline/plain/black{ + dir = 5 + }, +/turf/simulated/floor/carpet/rubber, +/area/horizon/engineering/reactor/indra/monitoring) "dOy" = ( /obj/effect/decal/cleanable/liquid_fuel, /turf/simulated/floor/carpet/rubber, /area/horizon/maintenance/deck_1/workshop) -"dOz" = ( -/obj/structure/table/steel, -/obj/random/tool{ - pixel_y = -4 - }, -/turf/simulated/floor/plating, -/area/horizon/engineering/reactor/indra/office) "dOB" = ( /obj/machinery/computer/telecomms/traffic, /turf/simulated/floor/tiled/dark/full, @@ -27810,6 +27888,10 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/wood, /area/horizon/command/heads/captain) +"dPK" = ( +/obj/machinery/portable_atmospherics/canister/chlorine, +/turf/simulated/floor/plating, +/area/horizon/engineering/reactor/indra/office) "dPM" = ( /obj/effect/floor_decal/industrial/warning{ dir = 10 @@ -28063,22 +28145,6 @@ icon_state = "seashallow" }, /area/centcom/shared_dream) -"dRG" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable/orange{ - icon_state = "4-8" - }, -/obj/structure/cable/orange{ - icon_state = "1-4" - }, -/obj/structure/lattice/catwalk/indoor/grate, -/turf/simulated/floor/plating, -/area/horizon/engineering/reactor/indra/mainchamber) "dRI" = ( /obj/machinery/light{ dir = 4 @@ -28156,6 +28222,12 @@ }, /turf/simulated/floor/reinforced/hydrogen, /area/horizon/engineering/atmos) +"dSi" = ( +/obj/structure/cable/orange{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "dSk" = ( /obj/structure/cable/green{ icon_state = "1-8" @@ -28708,6 +28780,11 @@ /obj/effect/map_effect/window_spawner/full/reinforced/indestructible, /turf/unsimulated/floor/plating, /area/antag/burglar) +"dXd" = ( +/obj/effect/floor_decal/corner_wide/yellow/full, +/obj/structure/closet/crate/rad, +/turf/simulated/floor/tiled, +/area/horizon/engineering/reactor/indra/office) "dXi" = ( /obj/structure/cable/green{ icon_state = "4-8" @@ -28873,6 +28950,14 @@ }, /turf/simulated/floor/tiled/dark/full, /area/horizon/hangar/operations) +"dYs" = ( +/obj/structure/lattice/catwalk/indoor/grate/dark, +/obj/random/junk, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_2/wing/starboard/far) "dYC" = ( /obj/machinery/conveyor{ dir = 1; @@ -29129,24 +29214,6 @@ /obj/effect/floor_decal/industrial/warning/full, /turf/simulated/floor/tiled/dark/full, /area/horizon/ai/upload_foyer) -"dZZ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/floor_decal/spline/plain{ - dir = 9 - }, -/obj/structure/disposalpipe/segment{ - icon_state = "pipe-c" - }, -/turf/simulated/floor/carpet/rubber, -/area/horizon/engineering/reactor/indra/monitoring) "eai" = ( /turf/simulated/wall, /area/horizon/medical/ward/isolation) @@ -29457,6 +29524,15 @@ }, /turf/simulated/floor/tiled/dark, /area/shuttle/skipjack) +"ebX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/full, +/area/horizon/hallway/primary/deck_2/central) "ecg" = ( /turf/simulated/wall/r_wall, /area/horizon/hallway/primary/deck_2/central) @@ -30854,6 +30930,20 @@ /obj/item/stack/packageWrap, /turf/simulated/floor/tiled, /area/horizon/operations/warehouse) +"elE" = ( +/obj/structure/table/wood, +/obj/effect/floor_decal/corner/dark_green{ + dir = 5 + }, +/obj/random/pottedplant_small{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/horizon/engineering/hallway/fore) "elG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable/green{ @@ -30947,14 +31037,6 @@ /obj/structure/table/standard, /turf/unsimulated/floor, /area/centcom/legion) -"emu" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/floor_decal/spline/plain/yellow{ - dir = 1 - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/smes) "emv" = ( /obj/effect/map_effect/window_spawner/full/reinforced/firedoor, /turf/simulated/floor/tiled/dark/full, @@ -31628,6 +31710,15 @@ /obj/structure/lattice/catwalk/indoor/grate, /turf/simulated/floor/plating, /area/horizon/hallway/primary/deck_2/fore) +"eri" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/full, +/area/horizon/hallway/primary/deck_2/central) "erq" = ( /obj/structure/foamedmetal, /obj/structure/shuttle_part/scc_space_ship{ @@ -31845,6 +31936,18 @@ "etv" = ( /turf/simulated/floor/tiled, /area/horizon/hangar/intrepid) +"etx" = ( +/obj/machinery/disposal/small/east, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/effect/floor_decal/spline/plain/black{ + dir = 10 + }, +/obj/machinery/power/apc/super/critical/south, +/obj/structure/cable, +/turf/simulated/floor/carpet/rubber, +/area/horizon/engineering/reactor/indra/monitoring) "etO" = ( /obj/structure/bed/stool/chair/holochair, /turf/simulated/floor/holofloor/carpet, @@ -32391,15 +32494,6 @@ /obj/structure/lattice/catwalk/indoor, /turf/simulated/floor/plating, /area/horizon/shuttle/mining) -"exP" = ( -/obj/effect/floor_decal/corner_wide/yellow{ - dir = 9 - }, -/obj/structure/cable/orange{ - icon_state = "1-4" - }, -/turf/simulated/floor/tiled, -/area/horizon/engineering/reactor/indra/mainchamber) "exT" = ( /obj/effect/floor_decal/corner/brown{ dir = 6 @@ -32584,12 +32678,6 @@ temperature = 278.15 }, /area/horizon/medical/morgue) -"ezg" = ( -/obj/structure/lattice/catwalk/indoor/grate/damaged{ - color = "#4c535b" - }, -/turf/simulated/floor/plating, -/area/horizon/maintenance/deck_2/wing/starboard/far) "ezj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -32670,19 +32758,6 @@ "eAa" = ( /turf/simulated/wall, /area/horizon/stairwell/starboard/deck_3) -"eAb" = ( -/obj/structure/closet/crate, -/obj/item/circuitboard/smes, -/obj/item/circuitboard/smes, -/obj/item/smes_coil, -/obj/item/smes_coil, -/obj/item/smes_coil/super_capacity, -/obj/item/smes_coil/super_capacity, -/obj/item/smes_coil/super_io, -/obj/item/smes_coil/super_io, -/obj/effect/floor_decal/industrial/outline/yellow, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/storage_hard) "eAj" = ( /obj/machinery/firealarm/east, /obj/effect/floor_decal/corner/dark_green/full{ @@ -33118,13 +33193,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden, /turf/simulated/wall/r_wall, /area/horizon/security/brig) -"eDz" = ( -/obj/effect/map_effect/window_spawner/full/borosilicate/reinforced/firedoor, -/obj/structure/cable/orange{ - icon_state = "4-8" - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/mainchamber) "eDB" = ( /obj/machinery/alarm/east, /obj/machinery/papershredder, @@ -33830,6 +33898,13 @@ /obj/structure/lattice/catwalk, /turf/simulated/floor/airless, /area/horizon/exterior) +"eIi" = ( +/obj/structure/lattice/catwalk/indoor/grate/dark, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_2/wing/starboard) "eIj" = ( /obj/structure/lattice/catwalk/indoor/grate/dark, /obj/structure/railing/mapped{ @@ -34185,16 +34260,6 @@ /obj/effect/map_effect/door_helper/unres, /turf/simulated/floor/tiled/full, /area/horizon/storage/eva) -"eMh" = ( -/obj/effect/floor_decal/spline/plain{ - dir = 10 - }, -/obj/machinery/disposal/small/east, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/turf/simulated/floor/carpet/rubber, -/area/horizon/engineering/reactor/indra/monitoring) "eMo" = ( /obj/structure/railing/mapped{ dir = 4 @@ -35076,6 +35141,20 @@ }, /turf/simulated/floor/tiled/dark/full, /area/horizon/service/hydroponics/lower) +"eSQ" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning, +/obj/effect/map_effect/window_spawner/full/borosilicate/reinforced, +/obj/machinery/door/blast/regular/open{ + id = "r_ust_core_blast"; + name = "INDRA Reactor Blast Doors"; + rad_resistance_modifier = 12 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "eST" = ( /obj/effect/floor_decal/corner/full{ dir = 8 @@ -35467,17 +35546,6 @@ /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/plating, /area/horizon/maintenance/deck_2/wing/port/far) -"eVK" = ( -/obj/effect/floor_decal/corner/yellow{ - dir = 5 - }, -/obj/structure/cable/green{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/dark, -/area/horizon/engineering/aft_airlock) "eVL" = ( /obj/structure/cable{ icon_state = "1-2" @@ -36665,6 +36733,13 @@ temperature = 278 }, /area/horizon/ai/chamber) +"feV" = ( +/obj/machinery/camera/network/reactor{ + c_tag = "Engineering - INDRA Reactor Office" + }, +/obj/machinery/portable_atmospherics/canister/chlorine, +/turf/simulated/floor/plating, +/area/horizon/engineering/reactor/indra/office) "ffb" = ( /obj/structure/morgue{ dir = 2; @@ -36673,17 +36748,6 @@ /obj/effect/floor_decal/industrial/outline/grey, /turf/simulated/floor/tiled/dark, /area/horizon/security/evidence_storage) -"ffd" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 1 - }, -/obj/structure/lattice/catwalk/indoor/grate/dark, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/simulated/floor, -/area/horizon/maintenance/deck_3/aft/port/far) "ffl" = ( /obj/machinery/disposal/small/south, /obj/structure/disposalpipe/trunk, @@ -36709,6 +36773,18 @@ icon_state = "2,2" }, /area/shuttle/syndicate_elite) +"ffn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/spline/plain/corner/black{ + dir = 1 + }, +/turf/simulated/floor/carpet/rubber, +/area/horizon/engineering/reactor/indra/monitoring) "ffo" = ( /obj/structure/flora/bush/grove, /obj/effect/floor_decal/spline/plain{ @@ -37620,6 +37696,13 @@ }, /turf/simulated/floor/tiled, /area/horizon/hallway/primary/deck_3/central) +"flZ" = ( +/obj/effect/floor_decal/industrial/warning/corner, +/obj/structure/sign/radiation{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "fmd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -38046,6 +38129,16 @@ }, /turf/simulated/floor/tiled, /area/horizon/medical/paramedic) +"fpm" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/structure/railing/mapped{ + dir = 4 + }, +/obj/structure/railing/mapped, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "fpn" = ( /obj/structure/shuttle_part/ert{ icon_state = "3,0"; @@ -38194,6 +38287,14 @@ }, /turf/simulated/floor/plating, /area/horizon/service/bar) +"fqg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/lattice/catwalk/indoor/grate/dark, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_2/wing/starboard) "fqk" = ( /obj/effect/floor_decal/spline/plain{ dir = 8 @@ -38576,14 +38677,6 @@ /obj/machinery/door/firedoor, /turf/simulated/floor/plating, /area/horizon/maintenance/deck_2/wing/starboard/near) -"fsE" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 9 - }, -/obj/machinery/fusion_fuel_compressor, -/obj/machinery/light/spot, -/turf/simulated/floor/carpet/rubber, -/area/horizon/engineering/reactor/indra/mainchamber) "fsF" = ( /obj/effect/floor_decal/corner/white{ dir = 5 @@ -39143,6 +39236,13 @@ }, /turf/simulated/floor/wood, /area/horizon/command/heads/om) +"fxN" = ( +/obj/machinery/computer/fusion/gyrotron/terminal{ + initial_id_tag = "horizon_fusion" + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/monitoring) "fxO" = ( /obj/effect/floor_decal/spline/fancy/wood{ dir = 6 @@ -39283,6 +39383,16 @@ }, /turf/simulated/floor/plating, /area/horizon/command/heads/captain) +"fzg" = ( +/obj/structure/sign/radiation{ + pixel_x = 32 + }, +/obj/structure/closet/walllocker/medical/firstaid{ + pixel_y = 32 + }, +/obj/structure/lattice/catwalk/indoor, +/turf/simulated/floor/plating, +/area/horizon/engineering/reactor/indra/smes) "fzj" = ( /obj/effect/floor_decal/industrial/warning{ dir = 1 @@ -39793,21 +39903,6 @@ }, /turf/unsimulated/floor, /area/centcom/legion) -"fCI" = ( -/obj/structure/lattice/catwalk/indoor/grate/dark, -/obj/effect/decal/cleanable/cobweb, -/turf/simulated/floor/plating, -/area/horizon/maintenance/deck_1/wing/starboard) -"fCJ" = ( -/obj/machinery/power/apc/north, -/obj/structure/cable/green{ - icon_state = "0-8" - }, -/obj/effect/floor_decal/corner/yellow/full{ - dir = 1 - }, -/turf/simulated/floor/tiled/dark, -/area/horizon/engineering/aft_airlock) "fCO" = ( /obj/effect/landmark/entry_point/fore{ name = "fore, main hangar" @@ -39885,24 +39980,6 @@ /obj/item/device/radio/intercom/north, /turf/simulated/floor/tiled, /area/horizon/security/checkpoint2) -"fDq" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 - }, -/obj/structure/disposalpipe/junction{ - icon_state = "pipe-j2" - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/smes) "fDv" = ( /obj/structure/cable{ icon_state = "4-8" @@ -40171,14 +40248,6 @@ }, /turf/simulated/floor/tiled/full, /area/horizon/engineering/reactor/supermatter/waste) -"fFB" = ( -/obj/machinery/firealarm/south, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/effect/floor_decal/spline/plain, -/turf/simulated/floor/carpet/rubber, -/area/horizon/engineering/reactor/indra/monitoring) "fFD" = ( /obj/machinery/door/firedoor, /obj/structure/table/stone/marble, @@ -40260,6 +40329,27 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/dark/full, /area/horizon/stairwell/bridge/deck_2) +"fGf" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/decal/cleanable/blood/oil, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/lattice/catwalk/indoor/grate/dark, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_1/wing/starboard) "fGg" = ( /obj/effect/floor_decal/industrial/warning{ dir = 8 @@ -40436,14 +40526,6 @@ /obj/machinery/alarm/shuttle/intrepid/south, /turf/simulated/floor/tiled/white, /area/horizon/shuttle/intrepid/buffet) -"fHT" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/table/standard, -/obj/structure/lattice/catwalk/indoor/grate/dark, -/turf/simulated/floor/plating, -/area/horizon/engineering/reactor/indra/smes) "fHU" = ( /obj/structure/cable{ icon_state = "1-2" @@ -40567,6 +40649,12 @@ "fJc" = ( /turf/simulated/floor/shuttle/tan, /area/centcom/bar) +"fJe" = ( +/obj/random/junk, +/obj/effect/floor_decal/industrial/warning, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/maintenance/deck_2/aft) "fJj" = ( /obj/structure/flora/grass/jungle, /obj/effect/floor_decal/spline/plain/corner{ @@ -40794,6 +40882,23 @@ /obj/random/dirt_75, /turf/simulated/floor/tiled/dark, /area/horizon/maintenance/deck_2/wing/port/nacelle) +"fKE" = ( +/obj/machinery/camera/network/command{ + c_tag = "AI Core - Foyer"; + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/turretid/stun{ + check_synth = 1; + name = "\improper AI Chamber Turret Control Console"; + pixel_y = 1; + pixel_x = -31; + dir = 4 + }, +/turf/simulated/floor/tiled/dark/cooled, +/area/horizon/ai/chamber) "fKK" = ( /obj/machinery/power/radial_floodlight, /obj/effect/floor_decal/industrial/outline/yellow, @@ -41369,6 +41474,13 @@ /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled, /area/horizon/engineering/storage_eva) +"fOt" = ( +/obj/structure/table/rack, +/obj/random/loot, +/obj/random/loot, +/obj/random/contraband, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/maintenance/deck_2/aft) "fOx" = ( /obj/structure/flora/ausbushes/ywflowers, /obj/effect/floor_decal/spline/fancy/wood/cee, @@ -41685,6 +41797,15 @@ }, /turf/simulated/floor/tiled/white, /area/horizon/medical/icu) +"fQJ" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "fQO" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -42918,16 +43039,6 @@ "fYO" = ( /turf/simulated/floor/tiled, /area/horizon/rnd/xenobiology/xenoflora) -"fYR" = ( -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/structure/lattice/catwalk/indoor/grate, -/turf/simulated/floor/plating, -/area/horizon/hallway/primary/deck_2/central) "fYU" = ( /turf/simulated/floor/wood, /area/horizon/command/bridge/meeting_room) @@ -43824,18 +43935,13 @@ /obj/machinery/portable_atmospherics/canister/nitrogen/prechilled, /turf/simulated/floor/plating, /area/horizon/engineering/reactor/supermatter/mainchamber) -"gfB" = ( -/obj/structure/railing/mapped, -/obj/effect/floor_decal/industrial/outline/emergency_closet, -/obj/structure/closet/emcloset{ - anchored = 1; - canbemoved = 1 +"gfz" = ( +/obj/machinery/alarm/north, +/obj/effect/floor_decal/corner/yellow/full{ + dir = 1 }, -/obj/machinery/light/spot{ - dir = 4 - }, -/turf/simulated/floor/carpet/rubber, -/area/horizon/engineering/reactor/indra/mainchamber) +/turf/simulated/floor/tiled/dark, +/area/horizon/engineering/aft_airlock) "gfC" = ( /obj/random/vendor{ scan_id = 0 @@ -44038,6 +44144,23 @@ }, /turf/simulated/floor/plating, /area/horizon/maintenance/deck_2/wing/port) +"ghv" = ( +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/monitoring) +"ghD" = ( +/obj/structure/lattice/catwalk/indoor/grate/dark, +/obj/machinery/light/small/emergency, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_1/wing/starboard) "ghI" = ( /turf/unsimulated/wall/fakepdoor{ dir = 1; @@ -44133,19 +44256,32 @@ "gip" = ( /turf/simulated/wall/r_wall, /area/horizon/operations/secure_ammunition_storage) -"git" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" +"giw" = ( +/obj/structure/table/reinforced/steel, +/obj/machinery/button/remote/blast_door{ + dir = 1; + id = "r_ust_core_blast"; + name = "INDRA Reactor Core Blast Doors"; + pixel_x = -6; + pixel_y = 7 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 +/obj/machinery/button/remote/blast_door{ + dir = 1; + id = "r-ust_monitoring_blast"; + name = "INDRA Reactor Monitoring Blast Doors"; + pixel_x = 6; + pixel_y = 7 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 +/obj/item/device/binoculars{ + pixel_x = -3; + pixel_y = -3 }, -/turf/simulated/floor/tiled/full, -/area/horizon/hallway/primary/deck_2/central) +/obj/item/device/binoculars{ + pixel_x = 3; + pixel_y = -2 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/monitoring) "giC" = ( /obj/effect/floor_decal/corner/red{ dir = 6 @@ -44585,6 +44721,19 @@ }, /turf/simulated/wall/shuttle/scc_space_ship/cardinal, /area/horizon/command/bridge/controlroom) +"glp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/lattice/catwalk/indoor/grate, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/horizon/hallway/primary/deck_2/central) "glr" = ( /obj/effect/floor_decal/corner/dark_green{ dir = 10 @@ -44671,6 +44820,13 @@ }, /turf/simulated/floor/marble/dark, /area/horizon/command/bridge/minibar) +"glL" = ( +/obj/structure/railing/mapped{ + icon_state = "railing0-0"; + rad_resistance_modifier = 6 + }, +/turf/simulated/wall/r_wall, +/area/horizon/engineering/reactor/indra/monitoring) "glR" = ( /obj/structure/disposalpipe/segment, /obj/effect/floor_decal/corner/brown{ @@ -45181,6 +45337,24 @@ /obj/effect/floor_decal/corner_wide/yellow/full, /turf/simulated/floor/tiled, /area/horizon/engineering/lobby) +"gqs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/spline/plain/black{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/carpet/rubber, +/area/horizon/engineering/reactor/indra/monitoring) "gqt" = ( /obj/effect/floor_decal/corner/lime/diagonal{ dir = 8 @@ -45333,6 +45507,24 @@ /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/tiled, /area/horizon/hangar/auxiliary) +"grg" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/smes) "grk" = ( /obj/effect/decal/cleanable/dirt, /obj/item/reagent_containers/glass/bucket{ @@ -45357,16 +45549,6 @@ }, /turf/simulated/floor/wood/yew, /area/centcom/shared_dream) -"grq" = ( -/obj/machinery/power/terminal{ - dir = 1 - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/machinery/light, -/turf/simulated/floor/plating, -/area/horizon/engineering/reactor/indra/mainchamber) "grt" = ( /obj/machinery/chem_master/condimaster{ pixel_y = 1 @@ -45426,22 +45608,6 @@ /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled/dark/full, /area/horizon/operations/machinist) -"grA" = ( -/obj/structure/cable/green{ - icon_state = "1-2" - }, -/obj/structure/cable/green{ - icon_state = "2-4" - }, -/obj/effect/floor_decal/corner/dark_blue/full{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/dark, -/area/horizon/ai/upload) "grD" = ( /obj/effect/floor_decal/spline/fancy/wood{ dir = 9 @@ -46270,6 +46436,23 @@ }, /turf/simulated/floor/plating, /area/horizon/maintenance/deck_1/main/port) +"gyb" = ( +/obj/machinery/door/firedoor, +/obj/structure/lattice/catwalk/indoor/grate/dark, +/obj/machinery/door/airlock/maintenance_hatch{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_1/wing/starboard) "gyd" = ( /obj/effect/floor_decal/corner/red{ dir = 8 @@ -46361,11 +46544,6 @@ /obj/machinery/light/small/emergency, /turf/simulated/open, /area/horizon/maintenance/deck_2/wing/starboard) -"gyN" = ( -/obj/effect/floor_decal/industrial/outline/yellow, -/obj/machinery/portable_atmospherics/canister/helium, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/mainchamber) "gyR" = ( /obj/effect/floor_decal/corner/white{ dir = 5 @@ -46432,13 +46610,6 @@ "gzv" = ( /turf/simulated/wall/shuttle/scc_space_ship/cardinal, /area/horizon/service/hydroponics/hazard) -"gzw" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 1 - }, -/obj/structure/grille, -/turf/simulated/floor/reinforced/airless, -/area/horizon/exterior) "gzy" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/drip, @@ -46597,12 +46768,6 @@ }, /turf/simulated/floor/tiled, /area/horizon/security/lobby) -"gAG" = ( -/obj/machinery/camera/network/reactor{ - c_tag = "Engineering - INDRA Reactor Office" - }, -/turf/simulated/floor/plating, -/area/horizon/engineering/reactor/indra/office) "gAJ" = ( /turf/simulated/wall/r_wall, /area/horizon/operations/break_room) @@ -47820,6 +47985,19 @@ }, /turf/simulated/floor/tiled, /area/horizon/hangar/auxiliary) +"gJr" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/lattice/catwalk/indoor/grate, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/horizon/hallway/primary/deck_2/central) "gJE" = ( /obj/structure/table/reinforced/wood, /obj/machinery/chemical_dispenser/coffeemaster/full{ @@ -47836,6 +48014,25 @@ }, /turf/simulated/floor/plating, /area/horizon/operations/mining_main/refinery) +"gJL" = ( +/obj/effect/floor_decal/corner/yellow{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/power/apc/south, +/obj/structure/cable/green{ + icon_state = "0-8" + }, +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/dark, +/area/horizon/engineering/aft_airlock) "gJM" = ( /obj/effect/floor_decal/corner/dark_blue{ dir = 6 @@ -48071,6 +48268,10 @@ /obj/machinery/alarm/south, /turf/simulated/floor/tiled/dark, /area/horizon/engineering/atmos/propulsion) +"gLd" = ( +/obj/structure/foamedmetal, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_2/aft) "gLk" = ( /obj/structure/shuttle_part/ccia{ icon_state = "11,4" @@ -48199,6 +48400,10 @@ }, /turf/simulated/floor/tiled, /area/horizon/engineering/hallway/interior) +"gMf" = ( +/obj/machinery/portable_atmospherics/canister/sulfur_dioxide, +/turf/simulated/floor/plating, +/area/horizon/engineering/reactor/indra/office) "gMg" = ( /obj/structure/window/shuttle/unique/tcfl{ icon_state = "16,4" @@ -48279,12 +48484,6 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/full, /area/horizon/hallway/primary/deck_2/central) -"gMG" = ( -/obj/machinery/computer/fusion/fuel_control/terminal{ - initial_id_tag = "horizon_fusion" - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/monitoring) "gML" = ( /obj/effect/floor_decal/corner_wide/paleblue/diagonal{ dir = 8 @@ -48398,13 +48597,6 @@ }, /turf/simulated/floor/tiled/dark, /area/horizon/rnd/xenoarch/isolation_b) -"gNr" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - dir = 4 - }, -/obj/structure/grille, -/turf/simulated/floor/reinforced/airless, -/area/horizon/exterior) "gNx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 @@ -48580,12 +48772,6 @@ /obj/structure/lattice/catwalk/indoor/grate/dark, /turf/simulated/floor/plating, /area/horizon/maintenance/deck_2/service/port) -"gON" = ( -/obj/structure/lattice/catwalk/indoor/grate/damaged{ - color = "#4c535b" - }, -/turf/simulated/floor/plating, -/area/horizon/maintenance/deck_2/wing/starboard) "gOQ" = ( /obj/structure/cable{ icon_state = "4-8" @@ -50699,6 +50885,15 @@ icon_state = "desert" }, /area/centcom/shared_dream) +"hdq" = ( +/obj/structure/bed/stool/chair/office/dark{ + dir = 1 + }, +/obj/effect/floor_decal/spline/plain/black{ + dir = 1 + }, +/turf/simulated/floor/carpet/rubber, +/area/horizon/engineering/reactor/indra/monitoring) "hdG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/purple, /turf/simulated/wall/shuttle/scc_space_ship/cardinal, @@ -51022,15 +51217,6 @@ /obj/effect/floor_decal/corner_wide/dark_green/diagonal, /turf/simulated/floor/tiled/dark, /area/shuttle/skipjack) -"hgg" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/lattice/catwalk/indoor/grate, -/obj/structure/cable/green{ - icon_state = "2-4" - }, -/turf/simulated/floor/plating, -/area/horizon/hallway/primary/deck_2/central) "hgr" = ( /obj/random/junk, /obj/machinery/light/small{ @@ -51277,14 +51463,6 @@ "hig" = ( /turf/simulated/wall/shuttle/scc_space_ship/cardinal, /area/horizon/hallway/primary/deck_3/starboard/docks) -"hii" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/lattice/catwalk/indoor/grate/dark, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/simulated/floor/plating, -/area/horizon/maintenance/deck_2/wing/starboard/far) "hio" = ( /obj/machinery/atmospherics/unary/vent_pump/siphon/on/atmos{ id_tag = "o2_out" @@ -51417,6 +51595,13 @@ /obj/machinery/atmospherics/portables_connector/scrubber, /turf/simulated/floor/tiled/dark/full, /area/horizon/hangar/airstation) +"hjn" = ( +/obj/structure/lattice/catwalk/indoor/grate/dark, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_2/wing/starboard) "hjo" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/medical{ @@ -51434,11 +51619,6 @@ }, /turf/simulated/floor/tiled/full, /area/horizon/medical/icu) -"hjw" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/turf/simulated/floor/tiled/full, -/area/horizon/hallway/primary/deck_2/central) "hjE" = ( /obj/structure/closet/gimmick{ name = "emergency response team wardrobe" @@ -51922,6 +52102,13 @@ }, /turf/simulated/floor/plating, /area/horizon/maintenance/deck_1/main/port) +"hmP" = ( +/obj/effect/floor_decal/corner/dark_green{ + dir = 10 + }, +/obj/machinery/newscaster/south, +/turf/simulated/floor/tiled, +/area/horizon/engineering/hallway/fore) "hmR" = ( /obj/machinery/light/small/emergency{ brightness_range = 4; @@ -52170,6 +52357,17 @@ icon_state = "wood" }, /area/centcom/legion/hangar5) +"hoq" = ( +/obj/effect/floor_decal/spline/plain/black, +/obj/structure/bed/stool/chair/office/dark{ + dir = 1 + }, +/obj/machinery/light, +/obj/structure/sign/radiation{ + pixel_y = -32 + }, +/turf/simulated/floor/carpet/rubber, +/area/horizon/engineering/reactor/indra/monitoring) "hoE" = ( /obj/effect/floor_decal/industrial/warning{ dir = 10 @@ -54292,6 +54490,16 @@ }, /turf/unsimulated/floor/plating, /area/shuttle/specops) +"hDy" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/spline/plain/black, +/turf/simulated/floor/carpet/rubber, +/area/horizon/engineering/reactor/indra/monitoring) "hDB" = ( /obj/structure/railing/mapped{ dir = 8 @@ -55812,22 +56020,26 @@ "hNy" = ( /turf/simulated/floor/plating, /area/horizon/maintenance/deck_2/research) -"hNB" = ( -/obj/effect/floor_decal/industrial/hatch/red, -/obj/structure/railing/mapped{ - dir = 4 - }, -/obj/structure/railing/mapped{ - dir = 8 - }, -/turf/simulated/floor/carpet/rubber, -/area/horizon/engineering/reactor/indra/mainchamber) "hNH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 }, /turf/simulated/floor/tiled/dark, /area/horizon/security/evidence_storage) +"hNI" = ( +/obj/structure/closet/crate, +/obj/structure/railing/mapped{ + dir = 4 + }, +/obj/random/loot, +/obj/effect/decal/cleanable/cobweb2{ + icon_state = "cobweb1" + }, +/obj/structure/railing/mapped{ + icon_state = "railing0-0" + }, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_1/operations/starboard) "hNL" = ( /obj/effect/floor_decal/corner_wide/yellow/full, /turf/simulated/floor/tiled, @@ -55848,6 +56060,20 @@ }, /turf/unsimulated/floor, /area/centcom/bar) +"hOg" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/structure/disposalpipe/junction{ + dir = 8 + }, +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/full, +/area/horizon/hallway/primary/deck_2/central) "hOh" = ( /obj/effect/floor_decal/corner/dark_blue/full{ dir = 1 @@ -57787,6 +58013,15 @@ }, /turf/simulated/floor/carpet, /area/horizon/repoffice/consular_one) +"idD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/lattice/catwalk/indoor/grate, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/horizon/hallway/primary/deck_2/central) "idJ" = ( /obj/effect/floor_decal/industrial/warning, /obj/machinery/light/small/emergency{ @@ -57801,16 +58036,6 @@ /obj/item/device/flashlight/lantern, /turf/simulated/floor/holofloor/wood, /area/horizon/holodeck/source_sauna) -"idO" = ( -/obj/machinery/camera/network/reactor{ - c_tag = "Engineering - INDRA Room 1"; - dir = 4 - }, -/obj/effect/floor_decal/corner_wide/yellow{ - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/horizon/engineering/reactor/indra/mainchamber) "iea" = ( /obj/effect/floor_decal/corner_wide/yellow/full{ dir = 1 @@ -58161,6 +58386,10 @@ }, /turf/simulated/floor/plating, /area/horizon/maintenance/deck_1/wing/port/far) +"igE" = ( +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/maintenance/deck_2/aft) "igI" = ( /obj/effect/floor_decal/industrial/warning{ dir = 4 @@ -58176,15 +58405,6 @@ }, /turf/simulated/floor/tiled/dark/full, /area/horizon/engineering/bluespace_drive) -"iha" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 1 - }, -/obj/machinery/atmospherics/binary/pump{ - dir = 1 - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/mainchamber) "ihd" = ( /obj/structure/flora/ausbushes/palebush, /obj/effect/overlay/palmtree_r, @@ -58262,17 +58482,6 @@ }, /turf/simulated/floor/tiled, /area/horizon/engineering/hallway/interior) -"ihy" = ( -/obj/machinery/camera/network/reactor{ - c_tag = "Engineering - INDRA Monitoring Room"; - dir = 1 - }, -/obj/effect/floor_decal/spline/plain, -/obj/structure/sign/nosmoking_1{ - pixel_y = -24 - }, -/turf/simulated/floor/carpet/rubber, -/area/horizon/engineering/reactor/indra/monitoring) "ihA" = ( /obj/structure/lattice/catwalk/indoor/grate/dark, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -58423,15 +58632,6 @@ /obj/effect/floor_decal/industrial/hatch/yellow, /turf/simulated/floor/tiled, /area/horizon/operations/lobby) -"iiS" = ( -/obj/effect/floor_decal/corner/yellow{ - dir = 9 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/horizon/engineering/reactor/indra/office) "ijh" = ( /obj/machinery/light/spot{ dir = 8; @@ -59205,13 +59405,6 @@ }, /turf/simulated/floor/tiled, /area/horizon/stairwell/starboard/deck_2) -"inB" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/maintenance_hatch{ - dir = 1 - }, -/turf/simulated/floor/plating, -/area/horizon/maintenance/deck_2/wing/starboard) "inC" = ( /obj/structure/railing/mapped{ dir = 4 @@ -59282,6 +59475,13 @@ /obj/machinery/floodlight, /turf/simulated/floor/tiled/dark/full, /area/shuttle/skipjack) +"ioh" = ( +/obj/structure/railing/mapped{ + dir = 8 + }, +/obj/structure/railing/mapped, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "ioj" = ( /obj/structure/disposalpipe/segment{ icon_state = "pipe-c" @@ -60067,16 +60267,6 @@ dir = 10 }, /area/centcom/legion/hangar5) -"itu" = ( -/obj/effect/floor_decal/corner/yellow{ - dir = 6 - }, -/obj/structure/table/standard, -/obj/random/tool{ - pixel_y = 5 - }, -/turf/simulated/floor/tiled, -/area/horizon/engineering/reactor/indra/office) "itv" = ( /obj/structure/shuttle_part/scc/scout{ icon_state = "1,9" @@ -63002,6 +63192,29 @@ /obj/machinery/light/small, /turf/simulated/floor/tiled/white, /area/horizon/security/washroom) +"iQJ" = ( +/obj/machinery/door/blast/regular/open{ + id = "r_ust_core_blast"; + name = "INDRA Reactor Blast Doors" + }, +/obj/machinery/door/blast/regular/open{ + id = "r_ust_core_blast"; + name = "INDRA Reactor Blast Doors"; + rad_resistance_modifier = 12 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 4 + }, +/obj/machinery/door/airlock/hatch{ + locked = 1; + name = "INDRA Reactor Core Access"; + req_one_access = list(11,24); + rad_resistance_modifier = 2; + dir = 4 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "iQU" = ( /obj/structure/lattice, /obj/structure/ladder{ @@ -63049,6 +63262,19 @@ icon_state = "white" }, /area/tdome/tdomeadmin) +"iRd" = ( +/obj/structure/lattice/catwalk/indoor/grate/dark, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_1/wing/starboard) "iRg" = ( /obj/structure/table/reinforced/wood, /obj/structure/cable/green{ @@ -63122,6 +63348,21 @@ }, /turf/simulated/floor/reinforced/airless, /area/horizon/engineering/atmos/turbine) +"iRI" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance_hatch{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_1/operations/starboard) +"iRU" = ( +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "iRV" = ( /obj/structure/bed/stool/chair/sofa/right/brown, /obj/effect/floor_decal/spline/fancy/wood{ @@ -63565,12 +63806,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/tiled/dark, /area/horizon/maintenance/deck_2/wing/starboard/near) -"iVl" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/lattice/catwalk/indoor/grate, -/turf/simulated/floor/plating, -/area/horizon/hallway/primary/deck_2/central) "iVr" = ( /obj/structure/cable{ icon_state = "1-2" @@ -64539,6 +64774,13 @@ icon_state = "dark_preview" }, /area/centcom/holding) +"jbR" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/visible, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "jbS" = ( /obj/effect/shuttle_landmark/horizon/exterior/deck_1/starboard, /turf/template_noop, @@ -64717,6 +64959,13 @@ /obj/machinery/door/firedoor, /turf/simulated/floor/tiled/full, /area/horizon/stairwell/engineering/deck_2) +"jcW" = ( +/obj/machinery/computer/fusion/fuel_control/terminal{ + initial_id_tag = "horizon_fusion" + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/monitoring) "jda" = ( /obj/effect/floor_decal/industrial/warning{ dir = 4 @@ -64764,16 +65013,6 @@ }, /turf/simulated/floor/plating, /area/horizon/engineering/bluespace_drive) -"jdL" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/lattice/catwalk/indoor/grate, -/turf/simulated/floor/plating, -/area/horizon/hallway/primary/deck_2/central) "jdO" = ( /obj/effect/floor_decal/corner/dark_blue{ dir = 5 @@ -65507,6 +65746,15 @@ /obj/structure/platform/ledge, /turf/simulated/open, /area/horizon/medical/hallway/upper) +"jji" = ( +/obj/structure/railing/mapped, +/obj/effect/floor_decal/industrial/outline/emergency_closet, +/obj/structure/closet/emcloset{ + anchored = 1; + canbemoved = 1 + }, +/turf/simulated/floor/carpet/rubber, +/area/horizon/engineering/reactor/indra/mainchamber) "jjj" = ( /obj/structure/shuttle_part/scc_space_ship{ icon_state = "d2-3" @@ -66193,16 +66441,6 @@ }, /turf/simulated/floor/tiled/full, /area/horizon/hallway/primary/deck_2/fore) -"jnQ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/lattice/catwalk/indoor/grate/dark, -/turf/simulated/floor/plating, -/area/horizon/maintenance/deck_1/wing/starboard) "jnR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 @@ -66959,19 +67197,6 @@ /obj/item/stack/cable_coil/random, /turf/simulated/floor/carpet/rubber, /area/horizon/maintenance/deck_1/workshop) -"juw" = ( -/obj/structure/railing/mapped{ - density = 0; - icon_state = "railing0-0" - }, -/obj/machinery/firealarm/east, -/obj/effect/floor_decal/industrial/outline/yellow, -/obj/machinery/atmospherics/portables_connector{ - dir = 8 - }, -/obj/machinery/portable_atmospherics/canister/empty, -/turf/simulated/floor/plating, -/area/horizon/engineering/storage/lower) "juA" = ( /obj/effect/floor_decal/corner/dark_green{ dir = 5 @@ -67494,19 +67719,6 @@ /obj/machinery/firealarm/west, /turf/simulated/floor/tiled, /area/horizon/engineering/hallway/aft) -"jxD" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 6 - }, -/obj/effect/floor_decal/industrial/outline/red, -/obj/machinery/atmospherics/unary/outlet_injector{ - frequency = 1441; - id = "fusion_injector_air"; - injecting = 1; - use_power = 1 - }, -/turf/simulated/floor/reinforced/airless, -/area/horizon/engineering/reactor/indra/mainchamber) "jxG" = ( /obj/machinery/door/blast/regular{ id = "iso_b_purge"; @@ -67670,6 +67882,13 @@ }, /turf/simulated/floor/tiled/dark, /area/horizon/command/bridge/aibunker) +"jyO" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/smes) "jyR" = ( /obj/effect/floor_decal/spline/fancy/wood/corner{ dir = 8 @@ -67889,6 +68108,15 @@ "jAE" = ( /turf/simulated/floor/tiled/full, /area/horizon/hallway/primary/deck_3/starboard) +"jAG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/lattice/catwalk/indoor/grate, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/horizon/hallway/primary/deck_2/central) "jAJ" = ( /obj/item/device/radio/intercom/east, /obj/structure/disposalpipe/trunk{ @@ -68684,16 +68912,6 @@ }, /turf/simulated/floor/tiled/dark, /area/horizon/rnd/lab) -"jFV" = ( -/obj/machinery/power/apc/low/north, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/effect/floor_decal/spline/plain/yellow{ - dir = 9 - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/smes) "jFW" = ( /obj/effect/floor_decal/industrial/warning{ dir = 4 @@ -68737,6 +68955,21 @@ }, /turf/simulated/open/airless, /area/template_noop) +"jGv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/full, +/area/horizon/hallway/primary/deck_2/central) "jGw" = ( /obj/machinery/button/remote/blast_door{ id = "crescent_checkpoint_access"; @@ -68844,6 +69077,13 @@ }, /turf/simulated/wall/shuttle/scc_space_ship/cardinal, /area/horizon/command/bridge/controlroom) +"jHk" = ( +/obj/structure/cable/orange{ + icon_state = "4-8" + }, +/obj/effect/map_effect/window_spawner/full/borosilicate/reinforced/firedoor, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "jHq" = ( /obj/effect/map_effect/window_spawner/full/reinforced/firedoor, /obj/machinery/door/blast/shutters/open{ @@ -69311,20 +69551,6 @@ /obj/structure/bed/stool/chair/office/bridge/pilot, /turf/simulated/floor/carpet/rubber, /area/horizon/command/bridge/controlroom) -"jKH" = ( -/obj/structure/table/standard, -/obj/item/folder/yellow{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/device/hand_labeler{ - pixel_y = -5 - }, -/obj/effect/floor_decal/corner/yellow{ - dir = 6 - }, -/turf/simulated/floor/tiled, -/area/horizon/engineering/reactor/indra/office) "jKJ" = ( /obj/structure/grille, /obj/machinery/door/firedoor, @@ -71245,21 +71471,6 @@ }, /turf/unsimulated/floor/plating, /area/shuttle/transport1) -"jYP" = ( -/obj/structure/cable/green{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/corner/yellow{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/turf/simulated/floor/tiled/dark, -/area/horizon/engineering/aft_airlock) "jYR" = ( /obj/effect/landmark{ name = "Revenant" @@ -72028,15 +72239,6 @@ /obj/effect/floor_decal/industrial/hatch/yellow, /turf/simulated/floor/tiled/dark/full, /area/horizon/engineering/storage_hard) -"kdV" = ( -/obj/effect/floor_decal/spline/plain{ - dir = 1 - }, -/obj/structure/bed/stool/chair/office/dark{ - dir = 1 - }, -/turf/simulated/floor/carpet/rubber, -/area/horizon/engineering/reactor/indra/monitoring) "kek" = ( /obj/machinery/door/airlock/centcom{ dir = 1; @@ -72645,18 +72847,6 @@ }, /turf/simulated/floor, /area/horizon/maintenance/deck_3/aft/holodeck) -"kiG" = ( -/obj/structure/cable/orange{ - icon_state = "4-8" - }, -/obj/machinery/camera/network/reactor{ - c_tag = "Engineering - INDRA SMES Room 2" - }, -/obj/effect/floor_decal/industrial/warning{ - dir = 4 - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/mainchamber) "kiI" = ( /obj/structure/cable{ icon_state = "4-8" @@ -72826,6 +73016,16 @@ }, /turf/simulated/floor/tiled/dark/full, /area/horizon/rnd/xenoarch/hallway/hangar) +"kjN" = ( +/obj/machinery/atmospherics/pipe/simple/heat_exchanging{ + dir = 9 + }, +/obj/structure/lattice, +/obj/structure/sign/radiation{ + pixel_y = -32 + }, +/turf/simulated/open/airless, +/area/horizon/exterior) "kjU" = ( /obj/effect/decal/cleanable/dirt, /mob/living/heavy_vehicle/premade/light/legion, @@ -73025,24 +73225,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/white, /area/horizon/rnd/conference) -"klD" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/effect/decal/cleanable/blood/oil, -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 - }, -/obj/structure/lattice/catwalk/indoor/grate/dark, -/turf/simulated/floor/plating, -/area/horizon/maintenance/deck_1/wing/starboard) "klK" = ( /obj/structure/bed/stool/chair/padded/brown{ dir = 8 @@ -73799,6 +73981,13 @@ dir = 4 }, /area/horizon/hangar/auxiliary) +"krb" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/obj/item/hullbeacon/red, +/turf/simulated/floor/reinforced/airless, +/area/horizon/exterior) "krc" = ( /obj/structure/railing/mapped{ dir = 8 @@ -73926,6 +74115,20 @@ /obj/effect/floor_decal/industrial/hatch/yellow, /turf/unsimulated/floor, /area/centcom/spawning) +"ksb" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/effect/floor_decal/corner/dark_blue/full, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark/cooled, +/area/horizon/ai/upload) "ksh" = ( /obj/machinery/atmospherics/pipe/simple/visible/purple, /obj/effect/floor_decal/corner/dark_blue{ @@ -74117,18 +74320,6 @@ icon_state = "white" }, /area/tdome/tdomeobserve) -"ktd" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled/full, -/area/horizon/hallway/primary/deck_2/central) "ktl" = ( /obj/structure/sink{ dir = 4; @@ -74568,6 +74759,22 @@ }, /turf/simulated/floor/wood, /area/merchant_station) +"kwB" = ( +/obj/machinery/light, +/obj/structure/cable/green{ + icon_state = "0-8" + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/power/smes/buildable/telecomms{ + RCon_tag = "Substation - Deck 3 Telecommunications"; + input_attempt = 1; + input_level = 2500000; + output_attempt = 1; + output_level = 2400000; + charge = 5000000 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/tcommsat/entrance) "kwH" = ( /obj/machinery/keycard_auth{ dir = 4; @@ -74662,6 +74869,30 @@ /obj/effect/floor_decal/industrial/outline/operations, /turf/simulated/floor/tiled/dark/full, /area/horizon/engineering/atmos/propulsion) +"kwZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/lattice/catwalk/indoor/grate/dark, +/turf/simulated/floor, +/area/horizon/maintenance/deck_3/aft/port/far) +"kxc" = ( +/obj/structure/bed/stool/chair/padded/black, +/obj/effect/floor_decal/spline/plain{ + dir = 1 + }, +/obj/effect/landmark/start{ + name = "Chief Engineer" + }, +/turf/simulated/floor/tiled/dark, +/area/horizon/engineering/break_room) "kxd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 @@ -75377,14 +75608,6 @@ }, /turf/simulated/floor/tiled, /area/horizon/security/investigations_hallway) -"kBp" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 1 - }, -/obj/structure/closet/crate, -/obj/item/stack/material/graphite/full, -/turf/simulated/floor/carpet/rubber, -/area/horizon/engineering/reactor/indra/mainchamber) "kBs" = ( /obj/machinery/light{ dir = 4 @@ -76048,6 +76271,20 @@ }, /turf/simulated/floor/tiled/dark, /area/horizon/security/checkpoint) +"kGf" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/smes) "kGh" = ( /obj/effect/floor_decal/corner/black{ dir = 6 @@ -76553,14 +76790,6 @@ }, /turf/unsimulated/floor, /area/centcom/specops) -"kJO" = ( -/obj/effect/floor_decal/industrial/outline/yellow, -/obj/machinery/light/small/emergency{ - dir = 4 - }, -/obj/machinery/portable_atmospherics/canister/helium, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/mainchamber) "kJP" = ( /obj/effect/floor_decal/industrial/arrow/red{ dir = 8 @@ -76578,9 +76807,6 @@ /obj/effect/floor_decal/industrial/outline/firefighting_closet, /turf/simulated/floor/tiled, /area/horizon/hallway/primary/deck_3/starboard) -"kKc" = ( -/turf/simulated/wall, -/area/horizon/engineering/break_room) "kKd" = ( /obj/effect/floor_decal/corner_wide/orange{ dir = 10 @@ -76782,6 +77008,18 @@ }, /turf/simulated/floor/lino, /area/horizon/service/cafeteria) +"kLR" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "kMa" = ( /obj/structure/cable/green{ icon_state = "4-8" @@ -77157,13 +77395,6 @@ }, /turf/simulated/floor/tiled, /area/horizon/command/bridge/upperdeck) -"kPt" = ( -/obj/structure/table/rack, -/obj/random/loot, -/obj/random/loot, -/obj/random/loot, -/turf/simulated/floor/plating, -/area/horizon/maintenance/deck_2/aft) "kPv" = ( /obj/structure/lattice/catwalk/indoor/grate/dark, /obj/structure/cable, @@ -77895,6 +78126,17 @@ /obj/effect/decal/cleanable/dirt, /turf/unsimulated/floor, /area/antag/raider) +"kUZ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/lattice/catwalk/indoor/grate/dark, +/obj/random/junk, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_2/aft) "kVd" = ( /turf/simulated/floor/holofloor/wood, /area/horizon/holodeck/source_chapel) @@ -78191,14 +78433,6 @@ temperature = 278.15 }, /area/horizon/medical/morgue) -"kWK" = ( -/obj/machinery/light/small/emergency{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/lattice/catwalk/indoor/grate/dark, -/turf/simulated/floor/plating, -/area/horizon/maintenance/deck_2/wing/starboard/far) "kWN" = ( /obj/effect/landmark/entry_point/starboard{ name = "starboard, ballast fore" @@ -78285,6 +78519,12 @@ }, /turf/simulated/floor/plating, /area/horizon/maintenance/deck_1/wing/starboard/far) +"kXR" = ( +/obj/structure/cable/orange{ + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "kYg" = ( /obj/effect/floor_decal/spline/fancy/wood{ dir = 4 @@ -78391,6 +78631,18 @@ }, /turf/simulated/floor/wood, /area/horizon/command/heads/xo) +"kYM" = ( +/obj/effect/floor_decal/spline/plain/yellow{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/smes) "kYP" = ( /obj/structure/table/standard, /obj/item/paper_scanner{ @@ -78707,6 +78959,16 @@ }, /turf/unsimulated/floor, /area/centcom/spawning) +"laM" = ( +/obj/effect/floor_decal/corner/dark_blue/full{ + dir = 4 + }, +/obj/machinery/power/apc/critical/south, +/obj/structure/cable/green{ + icon_state = "0-8" + }, +/turf/simulated/floor/tiled/dark/cooled, +/area/horizon/ai/upload) "laQ" = ( /obj/effect/floor_decal/industrial/hatch/yellow, /obj/machinery/door/blast/odin/open{ @@ -78850,6 +79112,11 @@ /obj/machinery/firealarm/south, /turf/simulated/floor/tiled/white, /area/horizon/crew/washroom/deck_2) +"lbW" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/portable_atmospherics/canister/heliumfuel, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "lcf" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -80183,15 +80450,12 @@ }, /turf/simulated/floor/tiled, /area/horizon/hallway/primary/deck_2/fore) -"lld" = ( -/obj/structure/cable/green{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/simulated/floor/tiled/dark, -/area/horizon/engineering/aft_airlock) +"llm" = ( +/obj/structure/lattice/catwalk/indoor/grate/dark, +/obj/structure/table/standard, +/obj/item/device/geiger, +/turf/simulated/floor/plating, +/area/horizon/engineering/reactor/indra/smes) "llo" = ( /obj/machinery/door/airlock/glass{ dir = 1; @@ -80858,6 +81122,21 @@ }, /turf/simulated/floor/tiled/white, /area/horizon/medical/main_storage) +"lpL" = ( +/obj/machinery/alarm/west, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/closet/radiation, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/obj/structure/sign/radiation{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled/full, +/area/horizon/engineering/reactor/supermatter/airlock) "lqb" = ( /obj/structure/flora/stump/log, /obj/effect/floor_decal/spline/plain{ @@ -81285,11 +81564,6 @@ icon_state = "dark_preview" }, /area/centcom/holding) -"lsG" = ( -/obj/effect/floor_decal/industrial/outline/yellow, -/obj/machinery/portable_atmospherics/canister/boron, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/mainchamber) "lsM" = ( /obj/effect/floor_decal/corner/red/diagonal, /obj/effect/floor_decal/spline/fancy, @@ -81956,6 +82230,16 @@ }, /turf/simulated/floor/plating, /area/horizon/hallway/primary/deck_3/port/docks) +"lxn" = ( +/obj/effect/floor_decal/corner_wide/yellow{ + dir = 9 + }, +/obj/machinery/camera/network/reactor{ + c_tag = "Engineering - INDRA Room 1"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/horizon/engineering/reactor/indra/mainchamber) "lxu" = ( /obj/effect/floor_decal/industrial/warning, /obj/machinery/atmospherics/binary/pump{ @@ -82784,15 +83068,6 @@ /obj/structure/lattice/catwalk/indoor/grate/dark, /turf/unsimulated/floor/plating, /area/centcom/holding) -"lCY" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/smes) "lDb" = ( /obj/machinery/door/window/westleft{ name = "Auxillary Cryogenics" @@ -83063,6 +83338,14 @@ /obj/effect/floor_decal/spline/fancy/wood/cee, /turf/simulated/floor/holofloor/wood, /area/horizon/holodeck/source_theatre) +"lED" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/light/small/emergency{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/hydrogen, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "lEE" = ( /turf/simulated/floor/lino/diamond, /area/horizon/service/library) @@ -83426,12 +83709,6 @@ }, /turf/simulated/floor/tiled/dark, /area/horizon/ai/upload) -"lHA" = ( -/obj/machinery/camera/network/reactor{ - c_tag = "Engineering - INDRA Room 2" - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/mainchamber) "lHC" = ( /turf/simulated/floor/holofloor/beach/sand{ icon_state = "desert2" @@ -83870,25 +84147,6 @@ /obj/item/device/flashlight/lamp/stage, /turf/simulated/floor/holofloor/wood, /area/horizon/holodeck/source_theatre) -"lJZ" = ( -/obj/item/reagent_containers/glass/beaker/cryoxadone{ - pixel_x = 5; - pixel_y = 5 - }, -/obj/item/reagent_containers/glass/beaker/cryoxadone{ - pixel_x = -6; - pixel_y = 5 - }, -/obj/structure/table/steel, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/power/apc/north, -/obj/structure/cable/green{ - icon_state = "0-2" - }, -/turf/simulated/floor/tiled, -/area/horizon/medical/gen_treatment) "lKd" = ( /obj/structure/table/rack/holorack, /obj/effect/floor_decal/spline/fancy/wood/cee{ @@ -84366,6 +84624,15 @@ }, /turf/simulated/floor/tiled, /area/horizon/crew/fitness/gym) +"lNo" = ( +/obj/effect/floor_decal/corner_wide/yellow{ + dir = 6 + }, +/obj/structure/cable/orange{ + icon_state = "2-4" + }, +/turf/simulated/floor/tiled, +/area/horizon/engineering/reactor/indra/mainchamber) "lNs" = ( /obj/structure/table/rack, /obj/random/melee, @@ -84438,14 +84705,6 @@ /obj/structure/lattice/catwalk/indoor, /turf/unsimulated/floor, /area/centcom/checkpoint/fore) -"lOm" = ( -/obj/effect/floor_decal/industrial/outline/yellow, -/obj/machinery/portable_atmospherics/canister/hydrogen, -/obj/machinery/light/small/emergency{ - dir = 4 - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/mainchamber) "lOo" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/unary/vent_pump/on, @@ -84624,20 +84883,22 @@ /obj/structure/platform_stairs/full/east_west_cap, /turf/simulated/floor/tiled/dark, /area/horizon/command/bridge/controlroom) +"lPE" = ( +/obj/effect/map_effect/window_spawner/full/borosilicate/reinforced, +/obj/machinery/door/blast/regular/open{ + id = "r_ust_core_blast"; + name = "INDRA Reactor Blast Doors"; + rad_resistance_modifier = 12 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "lPN" = ( /obj/machinery/telecomms/allinone, /turf/simulated/floor/plating, /area/shuttle/skipjack) -"lPX" = ( -/obj/effect/floor_decal/industrial/warning/corner, -/obj/structure/sign/radiation{ - pixel_y = 32 - }, -/obj/machinery/light/spot{ - dir = 1 - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/mainchamber) "lPZ" = ( /obj/machinery/vending/coffee/free{ pixel_x = -1 @@ -85015,11 +85276,6 @@ }, /turf/simulated/floor/tiled/dark/full, /area/horizon/rnd/xenobiology/xenoflora) -"lTD" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled/full, -/area/horizon/hallway/primary/deck_2/central) "lTG" = ( /obj/effect/decal/fake_object{ density = 1; @@ -85178,15 +85434,6 @@ }, /turf/simulated/wall/shuttle/scc_space_ship/cardinal, /area/horizon/engineering/atmos/propulsion/starboard) -"lUB" = ( -/obj/effect/floor_decal/corner/dark_blue/full{ - dir = 4 - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/simulated/floor/tiled/dark, -/area/horizon/ai/upload) "lUD" = ( /obj/effect/floor_decal/corner/dark_green{ dir = 6 @@ -85359,6 +85606,13 @@ }, /turf/simulated/floor/carpet, /area/horizon/repoffice/representative_two) +"lWk" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "lWm" = ( /obj/machinery/light, /obj/effect/floor_decal/corner_wide/green{ @@ -86016,17 +86270,6 @@ }, /turf/unsimulated/floor/dark_monotile, /area/antag/actor) -"mbl" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/obj/structure/lattice/catwalk/indoor/grate/dark, -/obj/machinery/power/apc/low/north, -/obj/structure/cable/green{ - icon_state = "0-2" - }, -/turf/simulated/floor/plating, -/area/horizon/hangar/airstation) "mbo" = ( /obj/effect/floor_decal/corner_wide/dark_green{ dir = 10 @@ -86170,6 +86413,29 @@ /obj/machinery/alarm/shuttle/intrepid/east, /turf/simulated/floor/tiled/dark/full, /area/horizon/shuttle/intrepid/port_storage) +"mcv" = ( +/obj/machinery/camera/network/reactor{ + c_tag = "Engineering - INDRA SMES Room 2" + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/structure/cable/orange{ + icon_state = "0-8" + }, +/obj/machinery/power/smes/buildable{ + RCon_tag = "INDRA - Containment"; + charge = 2000000; + input_attempt = 1; + input_level = 150000; + input_level_max = 350000; + is_critical = 1; + output_attempt = 1; + output_level = 150000; + output_level_max = 350000 + }, +/turf/simulated/floor/plating, +/area/horizon/engineering/reactor/indra/mainchamber) "mcA" = ( /obj/machinery/atmospherics/pipe/simple/visible/red{ dir = 10 @@ -86258,6 +86524,19 @@ "mdy" = ( /turf/simulated/floor/tiled/dark, /area/horizon/rnd/test_range) +"mdB" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/machinery/light, +/obj/machinery/power/portgen/basic/advanced{ + anchored = 1 + }, +/turf/simulated/floor/carpet/rubber, +/area/horizon/engineering/reactor/indra/mainchamber) "mdD" = ( /obj/effect/floor_decal/spline/plain/cee{ dir = 8 @@ -86356,15 +86635,6 @@ }, /turf/simulated/floor/holofloor/tiled, /area/horizon/holodeck/source_emptycourt) -"mex" = ( -/obj/effect/floor_decal/corner/yellow{ - dir = 10 - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/horizon/engineering/reactor/indra/office) "meC" = ( /obj/effect/floor_decal/industrial/warning, /obj/structure/filingcabinet/filingcabinet{ @@ -86500,11 +86770,6 @@ }, /turf/unsimulated/floor, /area/centcom/control) -"mfr" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/effect/floor_decal/industrial/hatch/yellow, -/turf/simulated/floor/plating, -/area/horizon/maintenance/deck_2/aft) "mfA" = ( /turf/simulated/wall/r_wall, /area/horizon/command/heads/captain) @@ -86912,25 +87177,6 @@ /obj/structure/reagent_dispensers/fueltank, /turf/simulated/floor/tiled, /area/merchant_station/warehouse) -"miB" = ( -/obj/machinery/power/emitter/gyrotron/anchored{ - dir = 1; - initial_id_tag = "horizon_fusion"; - state = 2 - }, -/obj/structure/cable/orange{ - icon_state = "0-2" - }, -/obj/effect/floor_decal/industrial/hatch/red, -/obj/structure/railing/mapped{ - dir = 4 - }, -/obj/structure/railing/mapped{ - dir = 8 - }, -/obj/structure/railing/mapped, -/turf/simulated/floor/carpet/rubber, -/area/horizon/engineering/reactor/indra/mainchamber) "miC" = ( /obj/structure/bed/stool/chair, /obj/effect/floor_decal/spline/fancy/wood{ @@ -86956,6 +87202,14 @@ }, /turf/simulated/floor/tiled, /area/horizon/security/hallway) +"miN" = ( +/obj/machinery/fusion_fuel_compressor, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/carpet/rubber, +/area/horizon/engineering/reactor/indra/mainchamber) "miO" = ( /turf/simulated/wall/shuttle/unique/tcfl{ icon_state = "13,6" @@ -88072,6 +88326,12 @@ }, /turf/unsimulated/floor, /area/antag/mercenary) +"msd" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/smes) "msi" = ( /obj/structure/railing/mapped, /turf/simulated/floor/tiled/dark, @@ -88461,6 +88721,23 @@ }, /turf/simulated/floor/tiled/dark, /area/horizon/security/interrogation/monitoring) +"mvc" = ( +/obj/structure/cable/yellow, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/lattice/catwalk/indoor, +/obj/machinery/power/smes/buildable{ + RCon_tag = "INDRA - Grid"; + charge = 4e+006; + cur_coils = 4; + input_attempt = 1; + input_level = 1e+006; + output_attempt = 1; + output_level = 1e+006 + }, +/turf/simulated/floor/plating, +/area/horizon/engineering/reactor/indra/smes) "mvi" = ( /obj/structure/platform/ledge{ dir = 4 @@ -88502,6 +88779,13 @@ }, /turf/simulated/floor/tiled/white, /area/horizon/rnd/xenoarch/atrium) +"mvn" = ( +/obj/structure/lattice/catwalk/indoor/grate/dark, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_1/wing/starboard) "mvs" = ( /obj/machinery/alarm/east, /obj/structure/closet/secure_closet/package_courier, @@ -88695,19 +88979,6 @@ }, /turf/simulated/floor/tiled/white, /area/horizon/medical/icu) -"mxt" = ( -/obj/effect/floor_decal/industrial/outline/yellow, -/obj/structure/closet/crate, -/obj/item/circuitboard/smes, -/obj/item/circuitboard/smes, -/obj/item/smes_coil, -/obj/item/smes_coil, -/obj/item/smes_coil/super_capacity, -/obj/item/smes_coil/super_capacity, -/obj/item/smes_coil/super_io, -/obj/item/smes_coil/super_io, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/mainchamber) "mxv" = ( /obj/structure/bed/stool/chair/shuttle{ dir = 8 @@ -89302,6 +89573,17 @@ }, /turf/simulated/floor/tiled/full, /area/horizon/engineering/lobby) +"mCO" = ( +/obj/machinery/light/small/emergency{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/lattice/catwalk/indoor/grate/dark, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_2/wing/starboard/far) "mCP" = ( /obj/effect/floor_decal/corner/grey{ dir = 5 @@ -89309,6 +89591,16 @@ /obj/effect/floor_decal/sign/a, /turf/unsimulated/floor, /area/centcom/control) +"mCQ" = ( +/obj/machinery/light, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "mCS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -89334,14 +89626,6 @@ }, /turf/simulated/floor/tiled/dark, /area/horizon/holodeck_control) -"mDb" = ( -/obj/machinery/computer/general_air_control/large_tank_control/terminal{ - input_tag = "fusion_injector_air"; - name = "INDRA Chamber Monitor"; - sensors = list("fusion_sensor"="INDRA Chamber") - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/monitoring) "mDc" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 @@ -89360,15 +89644,10 @@ /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled/dark, /area/horizon/hangar/intrepid) -"mDn" = ( -/obj/effect/floor_decal/corner/yellow{ - dir = 6 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/horizon/engineering/reactor/indra/office) +"mDs" = ( +/obj/structure/foamedmetal, +/turf/simulated/floor/plating, +/area/horizon/engineering/reactor/indra/monitoring) "mDv" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 @@ -89407,18 +89686,6 @@ }, /turf/simulated/floor/tiled, /area/horizon/operations/lobby) -"mDC" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled/full, -/area/horizon/hallway/primary/deck_2/central) "mDG" = ( /obj/structure/cable/green{ icon_state = "1-2" @@ -89870,6 +90137,20 @@ }, /turf/simulated/wall/shuttle/scc, /area/horizon/shuttle/quark/cargo_hold) +"mGW" = ( +/obj/machinery/door/blast/regular/open{ + dir = 4; + id = "r-ust_monitoring_blast"; + name = "INDRA Monitoring Blast Doors"; + rad_resistance_modifier = 24 + }, +/obj/effect/map_effect/window_spawner/full/borosilicate/reinforced, +/obj/structure/railing/mapped{ + icon_state = "railing0-0"; + rad_resistance_modifier = 6 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/monitoring) "mGZ" = ( /obj/effect/floor_decal/spline/fancy/wood{ dir = 10 @@ -90011,6 +90292,12 @@ "mHN" = ( /turf/simulated/wall/walnutwood, /area/centcom/shared_dream) +"mHP" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "mHT" = ( /obj/structure/cable/green{ icon_state = "1-2" @@ -90068,9 +90355,39 @@ }, /turf/simulated/floor/tiled/dark, /area/horizon/operations/loading) +"mIk" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/kinetic_harvester{ + initial_id_tag = "horizon_fusion" + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "mIl" = ( /turf/simulated/floor/holofloor/snow, /area/horizon/holodeck/source_snowfield) +"mIp" = ( +/obj/machinery/firealarm/north, +/obj/effect/floor_decal/spline/plain/yellow{ + dir = 1 + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/smes) "mIw" = ( /turf/unsimulated/wall/steel, /area/antag/actor) @@ -90269,13 +90586,6 @@ /obj/effect/map_effect/window_spawner/full/reinforced/firedoor, /turf/simulated/floor/tiled/dark/full, /area/horizon/medical/paramedic) -"mKl" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 5 - }, -/obj/structure/grille, -/turf/simulated/floor/reinforced/airless, -/area/horizon/exterior) "mKn" = ( /obj/effect/floor_decal/corner_wide/green{ dir = 9 @@ -90311,6 +90621,15 @@ }, /turf/simulated/open, /area/horizon/maintenance/deck_2/wing/starboard) +"mKB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + icon_state = "1-4" + }, +/obj/structure/lattice/catwalk/indoor/grate, +/turf/simulated/floor/plating, +/area/horizon/hallway/primary/deck_2/central) "mKE" = ( /obj/effect/floor_decal/spline/fancy/wood{ dir = 1 @@ -90707,18 +91026,6 @@ }, /turf/unsimulated/floor, /area/centcom/bar) -"mNk" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/floor_decal/spline/plain{ - dir = 5 - }, -/turf/simulated/floor/carpet/rubber, -/area/horizon/engineering/reactor/indra/monitoring) "mNo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -91300,16 +91607,6 @@ }, /turf/simulated/floor/reinforced/airless, /area/horizon/engineering/atmos/turbine) -"mSF" = ( -/obj/structure/bed/stool/chair/padded/black, -/obj/effect/landmark/start{ - name = "Chief Engineer" - }, -/obj/effect/floor_decal/spline/plain{ - dir = 1 - }, -/turf/simulated/floor/tiled/dark, -/area/horizon/engineering/break_room) "mSI" = ( /obj/structure/lattice/catwalk/indoor/grate/dark, /obj/structure/cable/green{ @@ -91810,6 +92107,10 @@ "mWv" = ( /turf/simulated/wall/shuttle/scc_space_ship/cardinal, /area/horizon/stairwell/bridge/deck_3) +"mWB" = ( +/obj/structure/closet/crate/rad, +/turf/simulated/floor/plating, +/area/horizon/engineering/reactor/indra/office) "mWD" = ( /obj/machinery/atmospherics/pipe/simple/visible/supply, /turf/simulated/floor/plating, @@ -91911,6 +92212,28 @@ /obj/machinery/alarm/east, /turf/simulated/floor/tiled, /area/horizon/security/equipment) +"mXF" = ( +/obj/machinery/door/blast/regular/open{ + id = "r_ust_core_blast"; + name = "INDRA Reactor Blast Doors" + }, +/obj/machinery/door/blast/regular/open{ + id = "r_ust_core_blast"; + name = "INDRA Reactor Blast Doors" + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 4 + }, +/obj/machinery/door/airlock/hatch{ + locked = 1; + name = "INDRA Reactor Core Access"; + req_one_access = list(11,24); + rad_resistance_modifier = 2; + dir = 4 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "mXG" = ( /obj/machinery/camera/network/first_deck{ c_tag = "First Deck - Hangar 4"; @@ -93602,11 +93925,6 @@ /obj/structure/railing/mapped, /turf/simulated/floor/tiled, /area/horizon/hallway/primary/deck_2/central) -"njV" = ( -/obj/effect/floor_decal/industrial/hatch/red, -/obj/machinery/portable_atmospherics/canister/boron, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/bluespace_drive) "nkb" = ( /obj/effect/floor_decal/corner/dark_blue{ dir = 9 @@ -94057,6 +94375,13 @@ }, /turf/simulated/floor/tiled/dark, /area/horizon/shuttle/intrepid/port_storage) +"nmJ" = ( +/obj/structure/lattice/catwalk/indoor/grate/dark, +/obj/machinery/light/small/emergency{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_2/aft) "nmM" = ( /obj/machinery/light, /turf/simulated/floor/tiled, @@ -94147,6 +94472,18 @@ }, /turf/simulated/floor/tiled/white, /area/horizon/medical/reception) +"noi" = ( +/obj/structure/railing/mapped{ + icon_state = "railing0-0" + }, +/obj/machinery/firealarm/east, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/portables_connector{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/empty, +/turf/simulated/floor/plating, +/area/horizon/engineering/storage/lower) "nok" = ( /obj/structure/railing/mapped, /obj/effect/floor_decal/corner/black{ @@ -94555,6 +94892,23 @@ }, /turf/simulated/floor/carpet, /area/horizon/command/heads/captain) +"nqT" = ( +/obj/structure/table/steel, +/obj/random/tool{ + pixel_y = -4 + }, +/obj/random/tool{ + pixel_y = -4 + }, +/obj/random/tool{ + pixel_y = -4 + }, +/obj/random/maintenance_junk_or_loot, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/horizon/engineering/reactor/indra/office) "nrf" = ( /obj/effect/floor_decal/industrial/warning, /obj/random/dirt_75, @@ -94570,17 +94924,6 @@ }, /turf/simulated/floor/tiled/dark/full, /area/horizon/operations/secure_ammunition_storage) -"nrr" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 1 - }, -/obj/effect/map_effect/window_spawner/full/borosilicate/reinforced, -/obj/machinery/door/blast/regular/open{ - id = "r_ust_core_blast"; - name = "INDRA Reactor Blast Doors" - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/mainchamber) "nrt" = ( /obj/effect/map_effect/window_spawner/full/reinforced/indestructible, /turf/unsimulated/floor/plating, @@ -94775,6 +95118,12 @@ }, /turf/simulated/floor, /area/horizon/maintenance/deck_2/wing/port/far) +"ntd" = ( +/obj/structure/lattice/catwalk/indoor/grate/dark, +/obj/structure/cable, +/obj/machinery/power/apc/south, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_2/wing/starboard) "ntk" = ( /obj/structure/cable/green{ icon_state = "4-8" @@ -95002,6 +95351,18 @@ }, /turf/simulated/floor/tiled, /area/horizon/security/brig) +"nuu" = ( +/obj/effect/floor_decal/corner_wide/yellow{ + dir = 9 + }, +/obj/structure/cable/orange{ + icon_state = "1-4" + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/horizon/engineering/reactor/indra/mainchamber) "nuv" = ( /obj/effect/floor_decal/industrial/warning{ dir = 1 @@ -95254,6 +95615,22 @@ }, /turf/simulated/floor/reinforced, /area/horizon/service/chapel/office) +"nwb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable/green{ + icon_state = "2-4" + }, +/turf/simulated/floor/tiled/full, +/area/horizon/hallway/primary/deck_2/central) "nwj" = ( /turf/simulated/wall, /area/horizon/operations/break_room) @@ -95548,6 +95925,19 @@ /obj/machinery/door/window/westright, /turf/simulated/floor/tiled/dark/full, /area/shuttle/hapt) +"nyd" = ( +/obj/effect/floor_decal/corner/yellow{ + dir = 10 + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/horizon/engineering/reactor/indra/office) "nyf" = ( /obj/effect/floor_decal/spline/fancy/wood/cee, /turf/simulated/floor/holofloor/grass, @@ -96513,6 +96903,12 @@ }, /turf/unsimulated/floor, /area/centcom/spawning) +"nFv" = ( +/obj/machinery/power/breakerbox/activated{ + RCon_tag = "INDRA Containment Bypass" + }, +/turf/simulated/floor/plating, +/area/horizon/engineering/reactor/indra/mainchamber) "nFx" = ( /obj/machinery/door/window/northleft{ base_state = "right"; @@ -96661,28 +97057,6 @@ }, /turf/unsimulated/floor, /area/antag/raider) -"nGj" = ( -/obj/machinery/power/apc/super/critical/west, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/structure/table/reinforced/steel, -/obj/machinery/button/remote/blast_door{ - dir = 1; - id = "r_ust_core_blast"; - name = "INDRA Reactor Core Blast Doors"; - pixel_x = -6; - pixel_y = 7 - }, -/obj/machinery/button/remote/blast_door{ - dir = 1; - id = "r-ust_monitoring_blast"; - name = "INDRA Reactor Monitoring Blast Doors"; - pixel_x = 6; - pixel_y = 7 - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/monitoring) "nGp" = ( /obj/structure/tank_wall/air{ density = 0; @@ -97323,16 +97697,6 @@ /obj/structure/lattice/catwalk/indoor/grate/dark, /turf/simulated/floor/plating, /area/horizon/maintenance/deck_1/operations/starboard/far) -"nKN" = ( -/obj/structure/lattice/catwalk/indoor, -/obj/structure/sign/radiation{ - pixel_x = 32 - }, -/obj/structure/closet/walllocker/medical/firstaid{ - pixel_y = 32 - }, -/turf/simulated/floor/plating, -/area/horizon/engineering/reactor/indra/smes) "nKP" = ( /obj/machinery/door/airlock/hatch{ dir = 1; @@ -97405,12 +97769,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/full, /area/horizon/engineering/storage_hard) -"nLD" = ( -/obj/effect/floor_decal/spline/plain{ - dir = 9 - }, -/turf/simulated/floor/carpet/rubber, -/area/horizon/engineering/reactor/indra/monitoring) "nLE" = ( /obj/machinery/space_heater, /obj/effect/floor_decal/industrial/outline/yellow, @@ -97787,6 +98145,16 @@ /obj/structure/lattice/catwalk/indoor/grate/dark, /turf/simulated/floor/plating, /area/horizon/maintenance/deck_1/hangar/starboard) +"nOj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/lattice/catwalk/indoor/grate, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/horizon/hallway/primary/deck_2/central) "nOq" = ( /obj/machinery/light/floor{ dir = 4 @@ -97914,6 +98282,18 @@ }, /turf/simulated/floor/tiled/white, /area/horizon/storage/eva/expedition) +"nPF" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/horizon/engineering/aft_airlock) "nPH" = ( /turf/simulated/wall/r_wall, /area/horizon/rnd/test_range) @@ -99238,6 +99618,18 @@ name = "staircase" }, /area/antag/mercenary) +"oaS" = ( +/obj/effect/floor_decal/corner_wide/yellow{ + dir = 9 + }, +/obj/structure/sign/radiation{ + pixel_x = -32 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/horizon/engineering/reactor/indra/mainchamber) "oaU" = ( /obj/effect/floor_decal/spline/fancy/wood{ dir = 8 @@ -99507,41 +99899,12 @@ /obj/machinery/disposal/small/east, /turf/simulated/floor/tiled/dark/full, /area/horizon/operations/machinist) -"ocF" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/hatch{ - locked = 1; - name = "INDRA Reactor Core Access"; - req_one_access = list(11,24) - }, -/obj/effect/floor_decal/industrial/hatch/yellow, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/mainchamber) "ocL" = ( /obj/structure/shuttle_part/tcfl{ icon_state = "15,1" }, /turf/unsimulated/floor/plating, /area/shuttle/legion) -"odf" = ( -/obj/structure/disposalpipe/segment{ - icon_state = "pipe-c" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable/green{ - icon_state = "2-8" - }, -/obj/structure/lattice/catwalk/indoor/grate, -/obj/structure/cable/green{ - icon_state = "4-8" - }, -/turf/simulated/floor/plating, -/area/horizon/hallway/primary/deck_2/central) "odg" = ( /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/plating, @@ -99604,21 +99967,6 @@ }, /turf/simulated/floor/tiled/white, /area/horizon/rnd/xenobiology/hazardous) -"odv" = ( -/obj/structure/closet/crate, -/obj/structure/railing/mapped{ - dir = 4 - }, -/obj/random/loot, -/obj/effect/decal/cleanable/cobweb2{ - icon_state = "cobweb1" - }, -/obj/structure/railing/mapped{ - density = 0; - icon_state = "railing0-0" - }, -/turf/simulated/floor/plating, -/area/horizon/maintenance/deck_1/operations/starboard) "odw" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -99850,12 +100198,6 @@ }, /turf/simulated/floor/tiled/dark/full, /area/horizon/engineering/atmos/turbine) -"ofi" = ( -/obj/effect/floor_decal/spline/plain{ - dir = 5 - }, -/turf/simulated/floor/carpet/rubber, -/area/horizon/engineering/reactor/indra/monitoring) "ofj" = ( /obj/machinery/door/airlock/glass_research{ dir = 1; @@ -100440,6 +100782,12 @@ /obj/structure/bed/stool/chair, /turf/simulated/floor/plating, /area/horizon/maintenance/deck_2/wing/starboard) +"oif" = ( +/obj/structure/sign/radiation{ + pixel_y = -32 + }, +/turf/template_noop, +/area/template_noop) "oik" = ( /obj/structure/window/shuttle/unique/ccia{ icon_state = "0,2" @@ -100596,6 +100944,25 @@ "ojb" = ( /turf/simulated/wall, /area/horizon/maintenance/deck_2/wing/starboard/nacelle) +"ojc" = ( +/obj/structure/cable/orange{ + icon_state = "0-2" + }, +/obj/effect/floor_decal/industrial/hatch/red, +/obj/structure/railing/mapped{ + dir = 4 + }, +/obj/structure/railing/mapped{ + dir = 8 + }, +/obj/structure/railing/mapped, +/obj/machinery/power/emitter/gyrotron/anchored{ + dir = 1; + initial_id_tag = "horizon_fusion"; + state = 2 + }, +/turf/simulated/floor/carpet/rubber, +/area/horizon/engineering/reactor/indra/mainchamber) "oje" = ( /obj/structure/cable/green{ icon_state = "4-8" @@ -103102,6 +103469,13 @@ /obj/structure/table/wood, /turf/unsimulated/floor/wood, /area/centcom/specops) +"oAm" = ( +/obj/machinery/power/apc/low/south, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/smes) "oAn" = ( /obj/effect/floor_decal/corner/dark_blue/full, /obj/effect/floor_decal/industrial/outline/security, @@ -103625,6 +103999,15 @@ }, /turf/simulated/floor/wood, /area/horizon/command/bridge/minibar) +"oEp" = ( +/obj/structure/lattice/catwalk/indoor/grate/damaged{ + color = "#4c535b" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_2/wing/starboard) "oEq" = ( /turf/simulated/wall/shuttle/unique/ccia{ icon_state = "10,2" @@ -104723,6 +105106,17 @@ }, /turf/simulated/floor/tiled, /area/horizon/engineering/hallway/fore) +"oMF" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9 + }, +/obj/effect/floor_decal/corner/yellow/full, +/obj/machinery/light, +/turf/simulated/floor/tiled/dark, +/area/horizon/engineering/aft_airlock) "oMG" = ( /obj/machinery/atmospherics/binary/pump/high_power{ dir = 8; @@ -105006,20 +105400,6 @@ }, /turf/simulated/floor/lino, /area/horizon/service/cafeteria) -"oOU" = ( -/obj/structure/cable/green{ - icon_state = "1-2" - }, -/obj/effect/floor_decal/corner/dark_blue/full, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 - }, -/obj/structure/cable/green{ - icon_state = "1-8" - }, -/turf/simulated/floor/tiled/dark, -/area/horizon/ai/upload) "oOW" = ( /obj/item/paper_bin{ pixel_x = -3; @@ -105449,17 +105829,6 @@ name = "shallow water" }, /area/horizon/holodeck/source_konyang) -"oSl" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/structure/cable/green{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/turf/simulated/floor/tiled/full, -/area/horizon/hallway/primary/deck_2/central) "oSn" = ( /obj/effect/floor_decal/corner/dark_green{ dir = 5 @@ -105740,6 +106109,13 @@ }, /turf/unsimulated/floor/blue_circuit, /area/centcom/control) +"oUm" = ( +/obj/machinery/computer/security/engineering/terminal{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/monitoring) "oUq" = ( /obj/structure/cable{ icon_state = "4-8" @@ -106053,6 +106429,25 @@ }, /turf/simulated/floor/tiled, /area/horizon/hangar/operations) +"oWo" = ( +/obj/structure/table/reinforced/steel, +/obj/machinery/button/remote/blast_door{ + dir = 1; + id = "r_ust_core_blast"; + name = "INDRA Reactor Core Blast Doors"; + pixel_x = -6; + pixel_y = 7 + }, +/obj/machinery/button/remote/blast_door{ + dir = 1; + id = "r-ust_monitoring_blast"; + name = "INDRA Reactor Monitoring Blast Doors"; + pixel_x = 6; + pixel_y = 7 + }, +/obj/item/device/geiger, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/monitoring) "oWt" = ( /obj/effect/landmark/entry_point/starboard{ name = "starboard, warehouse" @@ -106606,10 +107001,6 @@ }, /turf/simulated/floor/tiled/white, /area/horizon/medical/hallway/upper) -"paw" = ( -/obj/machinery/computer/security/engineering/terminal, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/monitoring) "paI" = ( /obj/structure/disposalpipe/junction{ dir = 1 @@ -106672,6 +107063,21 @@ /obj/item/storage/box/donkpockets, /turf/simulated/floor/carpet/rubber, /area/horizon/engineering/bluespace_drive/monitoring) +"pbg" = ( +/obj/effect/floor_decal/spline/plain/yellow{ + dir = 9 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/smes) "pbn" = ( /obj/effect/floor_decal/corner/red{ dir = 5 @@ -106687,12 +107093,6 @@ /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled/dark/full, /area/horizon/rnd/xenobiology/xenoflora) -"pbq" = ( -/obj/machinery/computer/fusion/core_control/terminal{ - initial_id_tag = "horizon_fusion" - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/monitoring) "pbt" = ( /obj/machinery/door/airlock/medical{ dir = 1; @@ -107328,22 +107728,6 @@ }, /turf/simulated/floor/reinforced, /area/horizon/rnd/xenobiology) -"pgr" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable/green{ - icon_state = "1-8" - }, -/turf/simulated/floor/tiled/full, -/area/horizon/hallway/primary/deck_2/central) -"pgv" = ( -/obj/machinery/computer/fusion/gyrotron/terminal{ - initial_id_tag = "horizon_fusion" - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/monitoring) "pgw" = ( /obj/random/pottedplant, /obj/structure/railing/mapped, @@ -107604,15 +107988,6 @@ }, /turf/simulated/floor/tiled/dark, /area/horizon/service/bar) -"pjb" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 1 - }, -/obj/structure/table/rack, -/obj/item/stack/material/deuterium/full, -/obj/item/stack/material/deuterium/full, -/turf/simulated/floor/carpet/rubber, -/area/horizon/engineering/reactor/indra/mainchamber) "pjd" = ( /obj/machinery/embedded_controller/radio/simple_docking_controller{ frequency = 1337; @@ -107811,6 +108186,13 @@ }, /turf/simulated/floor/plating, /area/horizon/maintenance/deck_1/main/starboard) +"pkL" = ( +/obj/structure/lattice/catwalk/indoor/grate/dark, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_2/wing/starboard) "pkN" = ( /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 4 @@ -108714,6 +109096,15 @@ }, /turf/simulated/floor/tiled/dark, /area/horizon/operations/office) +"pst" = ( +/obj/effect/map_effect/window_spawner/full/borosilicate/reinforced, +/obj/machinery/door/blast/regular/open{ + id = "r_ust_core_blast"; + name = "INDRA Reactor Blast Doors"; + rad_resistance_modifier = 12 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "psx" = ( /obj/structure/lattice/catwalk/indoor, /obj/machinery/light{ @@ -109727,6 +110118,18 @@ /obj/random/junk, /turf/simulated/floor/plating, /area/horizon/maintenance/deck_2/wing/port/far) +"pAW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/effect/floor_decal/spline/plain/corner/black{ + dir = 8 + }, +/turf/simulated/floor/carpet/rubber, +/area/horizon/engineering/reactor/indra/monitoring) "pAX" = ( /obj/effect/map_effect/window_spawner/full/reinforced/indestructible, /obj/structure/sign/greencross{ @@ -110738,24 +111141,6 @@ icon_state = "dark_preview" }, /area/centcom/holding) -"pHz" = ( -/obj/structure/table/reinforced/steel, -/obj/machinery/button/remote/blast_door{ - dir = 1; - id = "r_ust_core_blast"; - name = "INDRA Reactor Core Blast Doors"; - pixel_x = -6; - pixel_y = 7 - }, -/obj/machinery/button/remote/blast_door{ - dir = 1; - id = "r-ust_monitoring_blast"; - name = "INDRA Reactor Monitoring Blast Doors"; - pixel_x = 6; - pixel_y = 7 - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/monitoring) "pHE" = ( /obj/effect/floor_decal/spline/plain, /obj/structure/table/reinforced/steel, @@ -111002,6 +111387,16 @@ }, /turf/simulated/floor, /area/horizon/maintenance/deck_3/aft/starboard/far) +"pJH" = ( +/obj/effect/floor_decal/industrial/hatch/red, +/obj/structure/railing/mapped{ + dir = 8 + }, +/obj/structure/railing/mapped{ + dir = 4 + }, +/turf/simulated/floor/carpet/rubber, +/area/horizon/engineering/reactor/indra/mainchamber) "pJI" = ( /obj/effect/floor_decal/corner/red{ dir = 9 @@ -111184,15 +111579,6 @@ }, /turf/simulated/floor/tiled, /area/horizon/engineering/lobby) -"pLa" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/industrial/warning{ - dir = 4 - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/mainchamber) "pLk" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -111744,16 +112130,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled/white, /area/horizon/shuttle/intrepid/medical) -"pQf" = ( -/obj/machinery/firealarm/north, -/obj/effect/floor_decal/spline/plain/yellow{ - dir = 1 - }, -/obj/effect/floor_decal/industrial/warning{ - dir = 4 - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/smes) "pQh" = ( /obj/effect/floor_decal/industrial/warning{ dir = 4 @@ -111868,6 +112244,12 @@ }, /turf/simulated/floor/tiled/dark, /area/horizon/rnd/xenoarch/isolation_c) +"pRp" = ( +/obj/structure/closet/crate, +/obj/random/loot, +/obj/random/contraband, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_2/aft) "pRv" = ( /obj/structure/table/steel, /obj/effect/floor_decal/corner/dark_blue{ @@ -112348,6 +112730,17 @@ }, /turf/simulated/floor/lino, /area/horizon/service/bar) +"pVa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/lattice/catwalk/indoor/grate/dark, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_2/wing/starboard/far) "pVw" = ( /obj/structure/bed/stool/chair/office/dark{ dir = 1 @@ -112380,6 +112773,25 @@ }, /turf/simulated/floor/tiled/full, /area/horizon/hallway/primary/deck_2/central) +"pVJ" = ( +/obj/item/reagent_containers/glass/beaker/cryoxadone{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/reagent_containers/glass/beaker/cryoxadone{ + pixel_x = -6; + pixel_y = 5 + }, +/obj/structure/table/steel, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/cable/green{ + icon_state = "0-2" + }, +/obj/machinery/power/apc/high/north, +/turf/simulated/floor/tiled, +/area/horizon/medical/gen_treatment) "pVS" = ( /obj/structure/table/reinforced/steel, /obj/machinery/light{ @@ -112664,15 +113076,6 @@ }, /turf/simulated/floor/tiled/dark/full, /area/shuttle/skipjack) -"pYg" = ( -/obj/effect/map_effect/window_spawner/full/borosilicate/reinforced, -/obj/machinery/door/blast/regular/open{ - dir = 4; - id = "r_ust_core_blast"; - name = "INDRA Reactor Blast Doors" - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/mainchamber) "pYr" = ( /obj/effect/floor_decal/industrial/warning{ dir = 4 @@ -112892,16 +113295,6 @@ "qaA" = ( /turf/simulated/floor/tiled/white, /area/horizon/rnd/chemistry) -"qaF" = ( -/obj/effect/floor_decal/corner/dark_green{ - dir = 10 - }, -/obj/machinery/power/apc/south{ - is_critical = 1 - }, -/obj/structure/cable/green, -/turf/simulated/floor/tiled, -/area/horizon/hallway/primary/deck_2/central) "qaG" = ( /obj/effect/floor_decal/spline/plain/corner{ dir = 8 @@ -113583,6 +113976,20 @@ /obj/item/storage/slide_projector, /turf/simulated/floor/wood, /area/horizon/security/meeting_room) +"qeW" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/effect/floor_decal/industrial/outline/red, +/obj/machinery/atmospherics/unary/outlet_injector{ + frequency = 1441; + id = "fusion_injector_air"; + injecting = 1; + use_power = 1; + dir = 4 + }, +/turf/simulated/floor/reinforced/airless, +/area/horizon/engineering/reactor/indra/mainchamber) "qfc" = ( /obj/effect/floor_decal/industrial/outline/yellow, /obj/machinery/light/small{ @@ -114726,15 +115133,6 @@ /obj/effect/map_effect/window_spawner/full/borosilicate/reinforced/firedoor, /turf/simulated/floor/tiled/dark/full, /area/horizon/engineering/reactor/supermatter/monitoring) -"qoz" = ( -/obj/structure/cable/green{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 - }, -/turf/simulated/floor/tiled/dark, -/area/horizon/engineering/aft_airlock) "qoA" = ( /obj/machinery/porta_turret/legion, /turf/unsimulated/floor, @@ -115058,6 +115456,24 @@ }, /turf/simulated/floor/plating, /area/horizon/hangar/intrepid) +"qrb" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/smes) "qrz" = ( /obj/effect/floor_decal/corner/dark_green{ dir = 5 @@ -116190,6 +116606,12 @@ }, /turf/simulated/floor/plating, /area/shuttle/skipjack) +"qzX" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/structure/closet/radiation, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/maintenance/deck_2/aft) "qAb" = ( /obj/effect/floor_decal/corner_wide/orange{ dir = 6 @@ -116858,6 +117280,12 @@ "qED" = ( /turf/simulated/floor/plating, /area/horizon/maintenance/deck_1/auxatmos) +"qEE" = ( +/obj/structure/cable/orange{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled, +/area/horizon/engineering/reactor/indra/mainchamber) "qEG" = ( /obj/structure/cable{ icon_state = "4-8" @@ -117603,6 +118031,26 @@ }, /turf/simulated/floor/wood, /area/horizon/hallway/primary/deck_2/starboard) +"qJs" = ( +/obj/effect/floor_decal/spline/plain/black{ + dir = 6 + }, +/obj/structure/table/reinforced/steel, +/obj/item/paper_bin{ + pixel_x = 4; + pixel_y = 8 + }, +/obj/item/folder/yellow{ + pixel_x = -7; + pixel_y = 8 + }, +/obj/item/pen{ + pixel_x = 5; + pixel_y = 9 + }, +/obj/item/book/manual/fusion_reactor, +/turf/simulated/floor/carpet/rubber, +/area/horizon/engineering/reactor/indra/monitoring) "qJv" = ( /obj/effect/decal/rolling_fog, /obj/structure/railing/mapped{ @@ -117774,6 +118222,14 @@ }, /turf/simulated/floor/plating, /area/horizon/hangar/intrepid) +"qKQ" = ( +/obj/effect/floor_decal/corner/dark_green{ + dir = 10 + }, +/obj/structure/cable/green, +/obj/machinery/power/apc/high/south, +/turf/simulated/floor/tiled, +/area/horizon/hallway/primary/deck_2/central) "qKW" = ( /obj/item/clothing/mask/gas/syndicate{ pixel_y = 6 @@ -118157,13 +118613,6 @@ }, /turf/unsimulated/floor/rubber_carpet, /area/centcom/specops) -"qNi" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 1 - }, -/obj/structure/engineer_maintenance/electric/wall, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/mainchamber) "qNl" = ( /obj/structure/closet/wardrobe/mixed, /obj/effect/floor_decal/corner/dark_green{ @@ -118325,19 +118774,6 @@ }, /turf/simulated/floor/tiled/dark, /area/horizon/service/custodial/disposals/deck_1) -"qOr" = ( -/obj/effect/floor_decal/industrial/hatch/yellow, -/obj/effect/floor_decal/industrial/warning{ - dir = 1 - }, -/obj/effect/floor_decal/industrial/warning, -/obj/effect/map_effect/window_spawner/full/borosilicate/reinforced, -/obj/machinery/door/blast/regular/open{ - id = "r_ust_core_blast"; - name = "INDRA Reactor Blast Doors" - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/mainchamber) "qOA" = ( /obj/effect/floor_decal/industrial/warning{ dir = 4 @@ -119131,14 +119567,6 @@ }, /turf/simulated/floor/tiled/dark/full, /area/horizon/engineering/reactor/supermatter/monitoring) -"qVC" = ( -/obj/machinery/light, -/obj/effect/floor_decal/spline/plain, -/obj/structure/sign/radiation{ - pixel_y = -32 - }, -/turf/simulated/floor/carpet/rubber, -/area/horizon/engineering/reactor/indra/monitoring) "qVN" = ( /obj/structure/table/stone/marble, /obj/machinery/door/firedoor, @@ -119966,6 +120394,17 @@ /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled/dark/full, /area/horizon/engineering/atmos) +"rch" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/lattice/catwalk/indoor/grate/dark, +/obj/structure/cable/green{ + icon_state = "0-2" + }, +/obj/machinery/power/apc/north, +/turf/simulated/floor/plating, +/area/horizon/hangar/airstation) "rci" = ( /obj/machinery/hologram/holopad/long_range, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -120339,6 +120778,18 @@ }, /turf/simulated/floor/plating, /area/horizon/shuttle/intrepid/flight_deck) +"reB" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/sign/nosmoking_1{ + pixel_y = 32 + }, +/obj/machinery/camera/network/reactor{ + c_tag = "Engineering - INDRA Room 3" + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "reE" = ( /obj/machinery/lapvend, /obj/effect/floor_decal/spline/fancy/wood{ @@ -120983,12 +121434,6 @@ /obj/structure/flora/ausbushes/sunnybush, /turf/simulated/floor/grass/no_edge, /area/horizon/hallway/primary/deck_3/port) -"rkb" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/tiled/full, -/area/horizon/hallway/primary/deck_2/central) "rkd" = ( /obj/effect/decal/fake_object{ desc = "A button. It's unpowered. Typical."; @@ -121019,15 +121464,6 @@ /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/tiled/dark, /area/horizon/engineering/gravity_gen) -"rkp" = ( -/obj/effect/floor_decal/corner_wide/yellow{ - dir = 9 - }, -/obj/structure/sign/radiation{ - pixel_x = -32 - }, -/turf/simulated/floor/tiled, -/area/horizon/engineering/reactor/indra/mainchamber) "rks" = ( /obj/structure/table/standard, /obj/item/device/binoculars, @@ -121210,6 +121646,22 @@ /obj/structure/trash_pile, /turf/simulated/floor/plating, /area/horizon/maintenance/deck_1/wing/port/far) +"rlM" = ( +/obj/structure/cable/orange{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 8 + }, +/obj/structure/lattice/catwalk/indoor/grate, +/obj/structure/cable/orange{ + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/horizon/engineering/reactor/indra/mainchamber) "rlQ" = ( /obj/machinery/vending/security, /obj/machinery/light{ @@ -121714,18 +122166,6 @@ /obj/machinery/atmospherics/pipe/manifold/visible/red, /turf/simulated/floor/tiled/dark, /area/horizon/engineering/atmos/turbine) -"roi" = ( -/obj/structure/railing/mapped, -/obj/effect/floor_decal/industrial/outline/emergency_closet, -/obj/structure/closet/emcloset{ - anchored = 1; - canbemoved = 1 - }, -/obj/machinery/light/spot{ - dir = 8 - }, -/turf/simulated/floor/carpet/rubber, -/area/horizon/engineering/reactor/indra/mainchamber) "ron" = ( /obj/structure/cable{ icon_state = "4-8" @@ -121997,13 +122437,6 @@ }, /turf/unsimulated/floor/freezer, /area/antag/mercenary) -"rqx" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 - }, -/turf/simulated/floor/tiled/dark, -/area/horizon/engineering/aft_airlock) "rqA" = ( /obj/effect/floor_decal/industrial/outline/yellow, /turf/unsimulated/floor, @@ -122744,6 +123177,21 @@ }, /turf/simulated/floor/carpet/rubber, /area/horizon/engineering/reactor/supermatter/monitoring) +"rvO" = ( +/obj/effect/floor_decal/corner/black/full{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/structure/cable/green{ + icon_state = "0-2" + }, +/obj/machinery/power/apc/high/east, +/turf/simulated/floor/tiled, +/area/horizon/operations/machinist) "rvW" = ( /obj/structure/platform/ledge, /obj/structure/platform/ledge{ @@ -123643,6 +124091,9 @@ /obj/effect/floor_decal/industrial/hatch/grey, /turf/simulated/floor/tiled/full, /area/horizon/hallway/primary/deck_3/starboard) +"rBJ" = ( +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/smes) "rBT" = ( /obj/structure/cable{ icon_state = "1-2" @@ -125662,18 +126113,6 @@ }, /turf/simulated/floor/plating, /area/horizon/maintenance/deck_2/wing/starboard/nacelle) -"rRD" = ( -/obj/structure/cable/green{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/corner/dark_blue/full{ - dir = 1 - }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 - }, -/turf/simulated/floor/tiled/dark, -/area/horizon/ai/upload) "rRQ" = ( /obj/effect/floor_decal/corner/dark_green{ dir = 10 @@ -125936,6 +126375,10 @@ }, /turf/simulated/floor/tiled, /area/horizon/maintenance/deck_2/wing/starboard/auxatmos) +"rTp" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_2/aft) "rTq" = ( /obj/effect/map_effect/window_spawner/full/borosilicate/reinforced/firedoor, /obj/machinery/door/blast/shutters/open{ @@ -126458,6 +126901,10 @@ /obj/machinery/photocopier, /turf/simulated/floor/carpet, /area/horizon/repoffice/representative_two) +"rWV" = ( +/obj/structure/foamedmetal, +/turf/simulated/floor/plating, +/area/horizon/engineering/reactor/indra/mainchamber) "rXm" = ( /obj/structure/lattice/catwalk/indoor/grate/dark, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -126624,18 +127071,6 @@ }, /turf/simulated/floor/tiled/dark, /area/horizon/security/evidence_storage) -"rYE" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/effect/floor_decal/spline/plain/corner{ - dir = 4 - }, -/turf/simulated/floor/carpet/rubber, -/area/horizon/engineering/reactor/indra/monitoring) "rYK" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 @@ -126741,22 +127176,6 @@ }, /turf/simulated/floor/reinforced/airless, /area/horizon/engineering/atmos/propulsion/starboard) -"rZs" = ( -/obj/structure/cable/green{ - icon_state = "1-8" - }, -/obj/effect/floor_decal/corner/yellow{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/light, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/tiled/dark, -/area/horizon/engineering/aft_airlock) "rZt" = ( /obj/machinery/atmospherics/unary/vent_pump/high_volume{ dir = 8 @@ -126948,6 +127367,15 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/wood, /area/horizon/command/bridge/upperdeck) +"sbK" = ( +/obj/structure/sign/radiation{ + pixel_x = 32 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/horizon/engineering/reactor/indra/office) "sbR" = ( /obj/effect/decal/cleanable/cobweb2, /obj/effect/floor_decal/corner/red/diagonal, @@ -127006,18 +127434,6 @@ /obj/structure/lattice/catwalk/indoor/grate/dark, /turf/simulated/floor/plating, /area/horizon/maintenance/deck_1/wing/port/far) -"scu" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/maintenance_hatch{ - dir = 4 - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plating, -/area/horizon/maintenance/deck_1/operations/starboard) "scv" = ( /obj/effect/decal/fake_object{ dir = 4; @@ -127199,6 +127615,20 @@ /obj/effect/floor_decal/industrial/outline/red, /turf/simulated/floor/tiled/dark/full, /area/shuttle/burglar) +"sdu" = ( +/obj/effect/floor_decal/spline/plain/yellow{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/smes) "sdx" = ( /obj/machinery/atmospherics/pipe/simple/visible/black, /obj/machinery/atmospherics/binary/pump{ @@ -127797,15 +128227,6 @@ /obj/effect/floor_decal/industrial/hatch/operations, /turf/simulated/floor/tiled/dark/full, /area/supply/dock) -"shh" = ( -/obj/effect/floor_decal/corner/yellow{ - dir = 6 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor/tiled/dark, -/area/horizon/engineering/aft_airlock) "shl" = ( /obj/machinery/door/airlock/centcom{ name = "Green Access"; @@ -127835,13 +128256,6 @@ }, /turf/unsimulated/floor/plating, /area/centcom/legion/hangar5) -"shr" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/effect/floor_decal/industrial/warning{ - dir = 4 - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/smes) "sht" = ( /obj/effect/floor_decal/corner/dark_green{ dir = 5 @@ -129110,6 +129524,16 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plating, /area/horizon/engineering/reactor/supermatter/mainchamber) +"sqk" = ( +/obj/machinery/firealarm/south, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/floor_decal/spline/plain/black{ + dir = 10 + }, +/turf/simulated/floor/carpet/rubber, +/area/horizon/engineering/reactor/indra/monitoring) "sqr" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -129134,6 +129558,16 @@ }, /turf/simulated/floor/wood, /area/horizon/command/bridge/minibar) +"sqz" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/lattice/catwalk/indoor/grate, +/turf/simulated/floor/plating, +/area/horizon/hallway/primary/deck_2/central) "sqA" = ( /obj/effect/floor_decal/spline/plain{ dir = 1 @@ -130209,15 +130643,6 @@ "sxY" = ( /turf/space/transit/east, /area/template_noop) -"sxZ" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 4 - }, -/obj/structure/sign/nosmoking_1{ - pixel_y = 32 - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/mainchamber) "sya" = ( /obj/effect/floor_decal/corner/dark_blue{ dir = 9 @@ -130347,6 +130772,18 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled, /area/horizon/security/investigations_hallway) +"syX" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/effect/floor_decal/corner/dark_blue/full{ + dir = 1 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark/cooled, +/area/horizon/ai/upload) "syZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -130367,6 +130804,12 @@ /obj/structure/foamedmetal, /turf/simulated/floor/plating, /area/horizon/engineering/atmos/propulsion/starboard) +"sze" = ( +/obj/structure/sign/radiation{ + pixel_x = -32 + }, +/turf/template_noop, +/area/template_noop) "szj" = ( /obj/structure/cable/green{ icon_state = "4-8" @@ -130696,20 +131139,6 @@ /obj/structure/sign/staff_only, /turf/unsimulated/wall/darkshuttlewall, /area/centcom/bar) -"sBr" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/effect/floor_decal/industrial/warning{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/smes) "sBw" = ( /obj/structure/cable{ icon_state = "4-8" @@ -131139,6 +131568,15 @@ }, /turf/simulated/floor/tiled/white, /area/horizon/rnd/xenobiology) +"sEl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/structure/lattice/catwalk/indoor/grate, +/turf/simulated/floor/plating, +/area/horizon/hallway/primary/deck_2/central) "sEm" = ( /obj/structure/window/shuttle/unique/scc/mining, /obj/machinery/door/firedoor, @@ -132086,14 +132524,6 @@ }, /turf/simulated/floor/marble/dark, /area/horizon/holodeck/source_tribunal) -"sKV" = ( -/obj/effect/map_effect/window_spawner/full/borosilicate/reinforced, -/obj/machinery/door/blast/regular/open{ - id = "r_ust_core_blast"; - name = "INDRA Reactor Blast Doors" - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/mainchamber) "sKZ" = ( /obj/item/paper_bin{ pixel_x = -8; @@ -132419,6 +132849,16 @@ /obj/structure/lattice/catwalk/indoor/grate/dark, /turf/unsimulated/floor/plating, /area/centcom/legion) +"sNs" = ( +/obj/random/tool{ + pixel_y = 5 + }, +/obj/structure/table/standard, +/obj/effect/floor_decal/corner/yellow{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/horizon/engineering/reactor/indra/office) "sNt" = ( /obj/structure/table/reinforced/wood, /obj/item/storage/box/fancy/donut, @@ -132718,6 +133158,13 @@ }, /turf/simulated/floor/tiled/dark, /area/centcom/bar) +"sPa" = ( +/obj/structure/lattice/catwalk/indoor/grate, +/obj/structure/cable/orange{ + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/horizon/engineering/reactor/indra/mainchamber) "sPd" = ( /obj/structure/cable/green{ d2 = 2; @@ -132805,6 +133252,15 @@ /obj/structure/table/wood, /turf/simulated/floor/tiled, /area/horizon/hangar/intrepid) +"sPG" = ( +/obj/structure/lattice/catwalk/indoor/grate/damaged{ + color = "#4c535b" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_2/wing/starboard/far) "sPI" = ( /obj/effect/floor_decal/corner/red/full{ dir = 1 @@ -132818,6 +133274,16 @@ temperature = 278.15 }, /area/horizon/medical/morgue) +"sPO" = ( +/obj/machinery/alarm/south, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/floor_decal/spline/plain/black{ + dir = 6 + }, +/turf/simulated/floor/carpet/rubber, +/area/horizon/engineering/reactor/indra/monitoring) "sQa" = ( /obj/structure/lattice/catwalk/indoor/grate/dark, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -133218,12 +133684,6 @@ }, /turf/simulated/floor/tiled/dark, /area/horizon/storage/eva) -"sSd" = ( -/obj/effect/floor_decal/corner_wide/yellow/full{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/horizon/engineering/reactor/indra/office) "sSi" = ( /obj/structure/platform{ dir = 1 @@ -133303,6 +133763,16 @@ /obj/structure/lattice/catwalk/indoor/grate/dark, /turf/simulated/floor/plating, /area/shuttle/legion) +"sSG" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/item/stack/material/iron{ + amount = 5 + }, +/obj/structure/closet/crate/elec, +/turf/simulated/floor/carpet/rubber, +/area/horizon/engineering/reactor/indra/mainchamber) "sSJ" = ( /obj/structure/cable/green{ icon_state = "1-2" @@ -133315,16 +133785,6 @@ /obj/machinery/alarm/east, /turf/simulated/floor/plating, /area/horizon/maintenance/deck_2/wing/starboard/near) -"sSN" = ( -/obj/machinery/door/blast/regular/open{ - dir = 4; - id = "r_ust_core_blast"; - name = "INDRA Reactor Blast Doors" - }, -/obj/effect/map_effect/window_spawner/full/borosilicate/reinforced, -/obj/machinery/atmospherics/pipe/simple/visible, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/mainchamber) "sSO" = ( /obj/effect/floor_decal/corner/blue, /turf/simulated/floor/holofloor/tiled, @@ -133514,10 +133974,6 @@ }, /turf/simulated/floor/tiled/dark/full/airless, /area/horizon/command/bridge/controlroom) -"sUV" = ( -/obj/machinery/portable_atmospherics/canister/empty, -/turf/simulated/floor/plating, -/area/horizon/engineering/reactor/indra/office) "sUZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/yellow{ dir = 4 @@ -135128,6 +135584,18 @@ }, /turf/simulated/floor/tiled/dark, /area/horizon/hallway/primary/deck_3/port) +"thB" = ( +/obj/structure/sign/directions/prop{ + pixel_y = -22 + }, +/obj/effect/floor_decal/spline/plain/yellow{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/smes) "thD" = ( /obj/effect/floor_decal/industrial/warning{ dir = 4 @@ -135785,16 +136253,6 @@ /obj/structure/engineer_maintenance/electric/wall, /turf/simulated/floor/wood, /area/horizon/medical/psych) -"tlM" = ( -/obj/structure/lattice/catwalk/indoor/grate/dark, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/horizon/maintenance/deck_1/wing/starboard) "tlN" = ( /obj/random/junk, /turf/simulated/floor/tiled/dark/full, @@ -135868,6 +136326,13 @@ opacity = 1 }, /area/horizon/shuttle/canary) +"tmH" = ( +/obj/structure/lattice/catwalk/indoor/grate/dark, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_2/wing/starboard/far) "tmI" = ( /obj/effect/floor_decal/industrial/warning{ dir = 6 @@ -135980,6 +136445,12 @@ "tnl" = ( /turf/simulated/wall, /area/horizon/crew/lounge) +"tno" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "tnt" = ( /obj/effect/floor_decal/corner/dark_blue{ dir = 9 @@ -136465,6 +136936,20 @@ /obj/structure/table/reinforced/wood, /turf/unsimulated/floor, /area/antag/raider) +"tqw" = ( +/obj/machinery/camera/network/reactor{ + c_tag = "Engineering - INDRA Monitoring Room"; + dir = 1 + }, +/obj/structure/sign/nosmoking_1{ + pixel_y = -24 + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/item/modular_computer/console/preset/engineering{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/monitoring) "tqz" = ( /obj/effect/floor_decal/industrial/outline/grey, /obj/structure/closet/crate{ @@ -136979,19 +137464,6 @@ /obj/machinery/meter, /turf/simulated/floor/tiled/dark, /area/horizon/engineering/atmos) -"ttJ" = ( -/obj/machinery/button/remote/blast_door{ - dir = 4; - id = "r-ust_north"; - name = "INDRA Reactor Storage Shutters"; - pixel_x = 24; - pixel_y = 7 - }, -/obj/effect/floor_decal/corner_wide/yellow{ - dir = 6 - }, -/turf/simulated/floor/tiled, -/area/horizon/engineering/reactor/indra/mainchamber) "ttT" = ( /obj/structure/cable/green{ icon_state = "4-8" @@ -137036,12 +137508,6 @@ }, /turf/unsimulated/floor, /area/centcom/bar) -"tuf" = ( -/obj/machinery/porta_turret, -/obj/effect/floor_decal/industrial/warning/full, -/obj/machinery/alarm/west, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/ai/upload) "tuh" = ( /obj/item/storage/box/drinkingglasses{ pixel_x = -7; @@ -137102,13 +137568,6 @@ }, /turf/simulated/floor/tiled/dark, /area/horizon/engineering/break_room) -"tuQ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/lattice/catwalk/indoor/grate, -/turf/simulated/floor/plating, -/area/horizon/hallway/primary/deck_2/central) "tuS" = ( /obj/structure/table/reinforced/wood, /obj/machinery/chemical_dispenser/coffee/full{ @@ -137201,23 +137660,6 @@ /obj/machinery/alarm/west, /turf/simulated/floor/tiled/dark/full, /area/horizon/storage/secure) -"tvG" = ( -/obj/machinery/power/smes/buildable{ - RCon_tag = "INDRA - Containment"; - charge = 2000000; - input_attempt = 1; - input_level = 150000; - input_level_max = 350000; - is_critical = 1; - output_attempt = 1; - output_level = 150000; - output_level_max = 350000 - }, -/obj/structure/cable/orange{ - icon_state = "0-8" - }, -/turf/simulated/floor/plating, -/area/horizon/engineering/reactor/indra/mainchamber) "tvI" = ( /obj/item/device/taperecorder{ pixel_x = 3; @@ -137899,6 +138341,13 @@ }, /turf/simulated/floor/plating, /area/horizon/engineering/reactor/supermatter/airlock) +"tAb" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/smes) "tAc" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -138041,6 +138490,9 @@ }, /turf/simulated/floor/lino, /area/horizon/service/cafeteria) +"tBh" = ( +/turf/simulated/floor/tiled, +/area/horizon/engineering/reactor/indra/mainchamber) "tBm" = ( /obj/structure/flora/tree/adhomai, /turf/simulated/floor/holofloor/snow, @@ -140374,6 +140826,11 @@ }, /turf/simulated/floor/plating, /area/horizon/shuttle/quark/cargo_hold) +"tTv" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/full, +/area/horizon/hallway/primary/deck_2/central) "tTy" = ( /obj/machinery/power/portgen/basic, /obj/effect/floor_decal/industrial/outline/yellow, @@ -140872,6 +141329,16 @@ /obj/machinery/door/firedoor, /turf/simulated/floor/tiled/full, /area/horizon/service/chapel/office) +"tXQ" = ( +/obj/effect/floor_decal/corner/yellow{ + dir = 9 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/closet/crate/rad, +/turf/simulated/floor/tiled, +/area/horizon/engineering/reactor/indra/office) "tXV" = ( /obj/effect/floor_decal/industrial/outline/yellow, /obj/structure/closet/secure_closet/miner, @@ -140969,6 +141436,14 @@ /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled/dark/full, /area/shuttle/mercenary) +"tYu" = ( +/obj/item/device/flashlight/lamp/off{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/structure/table/standard, +/turf/simulated/floor/tiled, +/area/horizon/engineering/reactor/indra/office) "tYD" = ( /obj/structure/lattice/catwalk/indoor, /obj/machinery/atmospherics/pipe/simple/visible/green{ @@ -141103,6 +141578,15 @@ }, /turf/simulated/floor/exoplanet/barren/raskara, /area/centcom/shared_dream) +"tZw" = ( +/obj/effect/floor_decal/spline/plain/black{ + dir = 9 + }, +/obj/structure/bed/stool/chair/office/dark{ + dir = 8 + }, +/turf/simulated/floor/carpet/rubber, +/area/horizon/engineering/reactor/indra/monitoring) "tZA" = ( /obj/structure/window/reinforced{ dir = 1; @@ -141776,15 +142260,6 @@ /obj/item/clothing/gloves/black, /turf/simulated/floor, /area/horizon/maintenance/deck_3/aft/starboard/far) -"udR" = ( -/obj/effect/map_effect/window_spawner/full/borosilicate/reinforced/firedoor, -/obj/machinery/door/blast/regular/open{ - dir = 4; - id = "r-ust_monitoring_blast"; - name = "INDRA Monitoring Blast Doors" - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/monitoring) "udY" = ( /obj/machinery/light/small{ must_start_working = 1 @@ -141875,19 +142350,6 @@ /obj/structure/bed/stool/bar/padded/red, /turf/simulated/floor/wood, /area/horizon/maintenance/deck_2/wing/starboard) -"ueJ" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 10 - }, -/obj/machinery/atmospherics/unary/outlet_injector{ - frequency = 1441; - id = "fusion_injector_air"; - injecting = 1; - use_power = 1 - }, -/obj/effect/floor_decal/industrial/outline/red, -/turf/simulated/floor/reinforced/airless, -/area/horizon/engineering/reactor/indra/mainchamber) "ueO" = ( /obj/structure/window/reinforced/holowindow/disappearing{ dir = 4 @@ -142412,6 +142874,14 @@ }, /turf/simulated/floor/plating, /area/horizon/engineering/atmos) +"ujb" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/machinery/light/small/emergency{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/deuttrit, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "ujn" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/floor_decal/corner/grey{ @@ -142700,6 +143170,13 @@ }, /turf/simulated/floor/plating, /area/horizon/maintenance/deck_1/hangar/starboard) +"ulc" = ( +/obj/structure/engineer_maintenance/pipe/wall, +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "ule" = ( /obj/effect/floor_decal/corner_wide/yellow{ dir = 5 @@ -142755,12 +143232,6 @@ }, /turf/simulated/floor/tiled, /area/horizon/engineering/break_room) -"ulz" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - dir = 1 - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/mainchamber) "ulI" = ( /obj/effect/floor_decal/industrial/hatch/yellow, /obj/machinery/door/firedoor{ @@ -142808,15 +143279,6 @@ }, /turf/simulated/floor/wood, /area/merchant_station) -"umg" = ( -/obj/effect/floor_decal/corner_wide/yellow{ - dir = 6 - }, -/obj/structure/sign/radiation{ - pixel_x = 32 - }, -/turf/simulated/floor/tiled, -/area/horizon/engineering/reactor/indra/mainchamber) "umh" = ( /obj/machinery/light{ dir = 1 @@ -143373,21 +143835,6 @@ }, /turf/unsimulated/floor, /area/centcom/holding) -"uqm" = ( -/obj/structure/table/wood, -/obj/effect/floor_decal/corner/dark_green{ - dir = 5 - }, -/obj/random/pottedplant_small{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/machinery/newscaster/north, -/obj/structure/cable/green{ - icon_state = "4-8" - }, -/turf/simulated/floor/tiled, -/area/horizon/engineering/hallway/fore) "uqx" = ( /obj/effect/floor_decal/corner/dark_blue/diagonal, /obj/structure/bed/stool/chair/office/bridge, @@ -144006,15 +144453,6 @@ /obj/item/device/radio/intercom/south, /turf/simulated/floor/wood/walnut, /area/horizon/medical/smoking) -"uuu" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/carpet/rubber, -/area/horizon/engineering/reactor/indra/monitoring) "uuJ" = ( /obj/structure/cable{ icon_state = "1-2" @@ -144283,27 +144721,6 @@ "uwY" = ( /turf/simulated/wall/r_wall, /area/horizon/rnd/xenobiology) -"uxg" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/effect/floor_decal/spline/plain/yellow{ - dir = 8 - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/smes) "uxj" = ( /obj/structure/closet/secure_closet/engineering_chief, /obj/item/device/radio/intercom/south, @@ -145241,15 +145658,6 @@ }, /turf/simulated/floor/tiled/white, /area/horizon/medical/icu) -"uDE" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/turf/simulated/floor/carpet/rubber, -/area/horizon/engineering/reactor/indra/monitoring) "uDI" = ( /obj/effect/decal/fake_object/light_source{ icon = 'icons/effects/props/holodeck/konyang/32x96.dmi'; @@ -145593,18 +146001,6 @@ /obj/item/device/radio/intercom/expedition/north, /turf/simulated/floor/tiled/dark/full, /area/horizon/shuttle/intrepid/main_compartment) -"uFB" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable/green{ - icon_state = "4-8" - }, -/turf/simulated/floor/tiled/full, -/area/horizon/hallway/primary/deck_2/central) "uFJ" = ( /obj/effect/floor_decal/corner/dark_blue{ dir = 1 @@ -145974,6 +146370,22 @@ }, /turf/unsimulated/floor, /area/centcom/spawning) +"uIr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/simulated/floor/tiled/full, +/area/horizon/hallway/primary/deck_2/central) "uIs" = ( /obj/structure/table/standard, /obj/machinery/vending/wallmed1{ @@ -146560,27 +146972,6 @@ }, /turf/simulated/floor/holofloor/tiled, /area/horizon/holodeck/source_lasertag) -"uMu" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/effect/floor_decal/industrial/warning{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/smes) "uMz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -146734,14 +147125,6 @@ }, /turf/simulated/floor/tiled/white, /area/horizon/medical/hallway/upper) -"uOm" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable/green{ - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/full, -/area/horizon/hallway/primary/deck_2/central) "uOo" = ( /obj/machinery/alarm/west, /obj/effect/floor_decal/corner/red/diagonal, @@ -146976,19 +147359,6 @@ }, /turf/simulated/floor/lino, /area/horizon/service/dining_hall) -"uPJ" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, -/obj/structure/lattice/catwalk/indoor/grate, -/obj/structure/cable/green{ - icon_state = "1-2" - }, -/turf/simulated/floor/plating, -/area/horizon/hallway/primary/deck_2/central) "uPK" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -147563,6 +147933,16 @@ }, /turf/simulated/floor/tiled, /area/horizon/engineering/bluespace_drive) +"uUa" = ( +/obj/structure/lattice/catwalk/indoor/grate/dark, +/obj/effect/floor_decal/industrial/loading/yellow{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_2/wing/starboard/far) "uUg" = ( /obj/structure/table/standard, /obj/item/storage/box/fancy/tray{ @@ -147766,6 +148146,18 @@ }, /turf/simulated/floor/tiled/dark, /area/shuttle/legion) +"uVs" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/smes) "uVt" = ( /obj/effect/floor_decal/corner/brown{ dir = 6 @@ -148819,21 +149211,6 @@ }, /turf/simulated/open/airless, /area/horizon/exterior) -"vcm" = ( -/obj/structure/cable/green{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/disposalpipe/segment, -/obj/effect/floor_decal/corner/brown/full{ - dir = 8 - }, -/obj/effect/landmark/start{ - name = "Hangar Technician" - }, -/turf/simulated/floor/tiled, -/area/horizon/operations/office) "vco" = ( /obj/structure/closet/secure_closet/refrigerator/standard, /obj/item/storage/box/fancy/egg_box, @@ -149791,6 +150168,22 @@ }, /turf/simulated/floor/plating, /area/horizon/maintenance/deck_2/wing/starboard) +"vje" = ( +/obj/structure/disposalpipe/segment{ + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/obj/structure/lattice/catwalk/indoor/grate, +/turf/simulated/floor/plating, +/area/horizon/hallway/primary/deck_2/central) "vjh" = ( /obj/machinery/light{ dir = 4 @@ -150144,17 +150537,6 @@ /obj/item/modular_computer/console/preset/command/teleporter/ninja, /turf/unsimulated/floor, /area/antag/ninja) -"vlo" = ( -/obj/structure/lattice/catwalk/indoor/grate/dark, -/obj/machinery/light/small/emergency, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/turf/simulated/floor/plating, -/area/horizon/maintenance/deck_1/wing/starboard) "vlp" = ( /obj/machinery/door/airlock/highsecurity{ dir = 1; @@ -151672,12 +152054,6 @@ }, /turf/simulated/floor/plating, /area/horizon/maintenance/deck_1/main/port) -"vwy" = ( -/obj/effect/floor_decal/corner/yellow{ - dir = 6 - }, -/turf/simulated/floor/tiled, -/area/horizon/engineering/reactor/indra/office) "vwA" = ( /turf/unsimulated/wall/fakepdoor{ dir = 8; @@ -151786,6 +152162,15 @@ icon_state = "0,3" }, /area/shuttle/specops) +"vxq" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/floor_decal/corner/yellow{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/horizon/engineering/aft_airlock) "vxz" = ( /obj/machinery/light/small/emergency{ dir = 4 @@ -152172,6 +152557,16 @@ icon_state = "dark_preview" }, /area/centcom/specops) +"vAl" = ( +/obj/machinery/door/blast/regular/open{ + dir = 4; + id = "r_ust_core_blast"; + name = "INDRA Reactor Blast Doors"; + rad_resistance_modifier = 12 + }, +/obj/effect/map_effect/window_spawner/full/borosilicate/reinforced, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "vAn" = ( /turf/simulated/wall, /area/horizon/service/chapel/office) @@ -152447,6 +152842,16 @@ /obj/effect/floor_decal/corner/brown, /turf/simulated/floor/tiled, /area/horizon/operations/office) +"vCy" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/maintenance_hatch{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_2/wing/starboard) "vCI" = ( /obj/structure/sign/poster{ pixel_y = 32 @@ -152668,19 +153073,6 @@ "vDX" = ( /turf/simulated/wall, /area/horizon/stairwell/starboard/deck_1) -"vEc" = ( -/obj/structure/closet/crate, -/obj/item/circuitboard/smes, -/obj/item/circuitboard/smes, -/obj/item/smes_coil, -/obj/item/smes_coil, -/obj/item/smes_coil/super_capacity, -/obj/item/smes_coil/super_capacity, -/obj/item/smes_coil/super_io, -/obj/item/smes_coil/super_io, -/obj/effect/floor_decal/industrial/warning, -/turf/simulated/floor/plating, -/area/horizon/engineering/storage/lower) "vEe" = ( /obj/structure/bed/stool/chair/padded/brown, /obj/effect/floor_decal/spline/fancy/wood/cee{ @@ -153512,6 +153904,13 @@ /obj/machinery/firealarm/west, /turf/simulated/floor/tiled/full, /area/horizon/command/bridge/cciaroom) +"vKD" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled/full, +/area/horizon/hallway/primary/deck_2/central) "vKF" = ( /obj/structure/closet/emcloset, /obj/effect/floor_decal/corner/dark_green{ @@ -154283,6 +154682,14 @@ }, /turf/simulated/floor/holofloor/tiled, /area/horizon/holodeck/source_gym) +"vQt" = ( +/obj/structure/lattice/catwalk/indoor/grate/dark, +/obj/effect/decal/cleanable/cobweb, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_1/wing/starboard) "vQu" = ( /obj/effect/floor_decal/corner/dark_blue/full{ dir = 8 @@ -154804,6 +155211,12 @@ icon_state = "6,0" }, /area/centcom/specops) +"vUz" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "vUE" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -155203,6 +155616,14 @@ }, /turf/unsimulated/floor, /area/centcom/legion) +"vWn" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/reagent_dispensers/extinguisher, +/obj/machinery/light/small/emergency{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/maintenance/deck_2/aft) "vWv" = ( /obj/effect/floor_decal/industrial/outline/security, /turf/simulated/floor/tiled/dark/full, @@ -155304,18 +155725,6 @@ }, /turf/simulated/floor/plating, /area/horizon/hangar/auxiliary) -"vXy" = ( -/obj/structure/disposalpipe/segment{ - icon_state = "pipe-c" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/smes) "vXz" = ( /obj/structure/closet/secure_closet/personal, /turf/unsimulated/floor, @@ -155859,6 +156268,13 @@ }, /turf/simulated/floor/tiled/dark, /area/horizon/storage/eva) +"wbc" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/visible, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "wbh" = ( /obj/structure/railing/mapped{ dir = 8 @@ -156228,6 +156644,12 @@ /obj/machinery/light/small/emergency, /turf/simulated/floor/tiled/dark/full, /area/horizon/operations/secure_ammunition_storage) +"wdK" = ( +/obj/structure/sign/radiation{ + pixel_x = 32 + }, +/turf/template_noop, +/area/template_noop) "wdO" = ( /obj/effect/floor_decal/corner/white/diagonal, /obj/effect/floor_decal/spline/plain{ @@ -157250,6 +157672,13 @@ "wkW" = ( /turf/simulated/wall/r_wall, /area/horizon/service/hydroponics) +"wkZ" = ( +/obj/structure/closet/crate/elec, +/obj/effect/floor_decal/corner_wide/yellow/full{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/horizon/engineering/reactor/indra/office) "wlb" = ( /obj/random/junk, /obj/effect/floor_decal/industrial/outline/grey, @@ -159137,6 +159566,21 @@ /obj/effect/floor_decal/spline/plain/corner, /turf/simulated/floor/exoplanet/barren, /area/centcom/shared_dream) +"wwk" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/turf/simulated/floor/tiled/full, +/area/horizon/hallway/primary/deck_2/central) "wwn" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 @@ -159353,14 +159797,6 @@ icon_state = "11,17" }, /area/horizon/shuttle/mining) -"wxr" = ( -/obj/structure/closet/crate/rad, -/obj/item/stack/material/tritium/full, -/obj/effect/floor_decal/industrial/warning{ - dir = 1 - }, -/turf/simulated/floor/carpet/rubber, -/area/horizon/engineering/reactor/indra/mainchamber) "wxu" = ( /obj/structure/cable{ icon_state = "0-2" @@ -159377,6 +159813,21 @@ }, /turf/simulated/floor/plating, /area/horizon/maintenance/substation/engineering/lower) +"wxw" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/corner/brown/full{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Hangar Technician" + }, +/turf/simulated/floor/tiled, +/area/horizon/operations/office) "wxA" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -159537,6 +159988,10 @@ /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/plating, /area/horizon/engineering/reactor/supermatter/mainchamber) +"wyE" = ( +/obj/structure/bed/stool/chair/office/dark, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/monitoring) "wyI" = ( /turf/simulated/wall/shuttle/unique/tcfl{ icon_state = "14,1" @@ -159825,22 +160280,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/aux, /turf/simulated/floor/plating, /area/horizon/maintenance/deck_1/auxatmos) -"wAL" = ( -/obj/machinery/light, -/obj/machinery/power/smes/buildable/substation{ - RCon_tag = "Substation - Deck 3 Telecommunications"; - charge = 5000000; - input_attempt = 1; - input_level = 200000; - output_attempt = 1; - output_level = 200000 - }, -/obj/structure/cable/green{ - icon_state = "0-8" - }, -/obj/effect/floor_decal/industrial/outline/yellow, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/tcommsat/entrance) "wAO" = ( /obj/effect/floor_decal/spline/fancy/wood, /obj/effect/floor_decal/spline/fancy/wood/corner{ @@ -160460,12 +160899,6 @@ /obj/effect/floor_decal/industrial/hatch/yellow, /turf/simulated/floor/tiled, /area/horizon/command/bridge/meeting_room) -"wFv" = ( -/obj/structure/cable/green{ - icon_state = "1-2" - }, -/turf/simulated/floor/tiled/full, -/area/horizon/engineering/reactor/indra/office) "wFx" = ( /obj/structure/lattice/catwalk, /obj/structure/disposalpipe/segment, @@ -160588,21 +161021,6 @@ }, /turf/unsimulated/floor/dark_monotile, /area/antag/actor) -"wGN" = ( -/obj/effect/floor_decal/corner/yellow{ - dir = 10 - }, -/obj/structure/cable/green{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6 - }, -/turf/simulated/floor/tiled, -/area/horizon/engineering/reactor/indra/office) "wGP" = ( /obj/structure/tank_wall/nitrogen{ density = 0; @@ -160739,10 +161157,6 @@ }, /turf/simulated/floor/tiled/dark, /area/horizon/maintenance/deck_2/wing/port/nacelle) -"wHC" = ( -/obj/effect/floor_decal/corner_wide/yellow/full, -/turf/simulated/floor/tiled, -/area/horizon/engineering/reactor/indra/office) "wHF" = ( /obj/effect/floor_decal/corner/brown{ dir = 5 @@ -160912,15 +161326,6 @@ /obj/machinery/firealarm/north, /turf/simulated/floor/tiled, /area/horizon/engineering/hallway/interior) -"wJv" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 8 - }, -/obj/structure/sign/nosmoking_1{ - pixel_y = 32 - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/mainchamber) "wJy" = ( /turf/simulated/wall, /area/horizon/rnd/xenobiology) @@ -161139,6 +161544,21 @@ /obj/item/net_container, /turf/simulated/floor/tiled/white, /area/horizon/rnd/xenobiology) +"wLT" = ( +/obj/random/hardhat, +/obj/item/device/hand_labeler{ + pixel_y = -5 + }, +/obj/item/folder/yellow{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/structure/table/standard, +/obj/effect/floor_decal/corner/yellow{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/horizon/engineering/reactor/indra/office) "wLV" = ( /obj/structure/cable/green{ icon_state = "4-8" @@ -161381,16 +161801,6 @@ icon_state = "white" }, /area/centcom/legion) -"wOf" = ( -/obj/machinery/camera/network/reactor{ - c_tag = "Engineering - INDRA SMES Room 1"; - dir = 1 - }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/smes) "wOl" = ( /obj/machinery/light{ name = "adjusted light fixture"; @@ -161689,6 +162099,15 @@ name = "shallow water" }, /area/horizon/holodeck/source_konyang) +"wPK" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 10 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "wPS" = ( /obj/structure/lattice, /obj/structure/grille/broken, @@ -162154,21 +162573,6 @@ /obj/structure/disposalpipe/trunk, /turf/simulated/floor/tiled/white, /area/horizon/crew/fitness/changing) -"wSL" = ( -/obj/structure/table/reinforced/steel, -/obj/item/paper_bin{ - pixel_x = 4; - pixel_y = 8 - }, -/obj/item/pen{ - pixel_x = 5; - pixel_y = 9 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/monitoring) "wSP" = ( /obj/effect/map_effect/window_spawner/full/reinforced/indestructible, /obj/machinery/door/blast/odin{ @@ -162892,6 +163296,16 @@ icon_state = "dark_preview" }, /area/centcom/specops) +"wWK" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/dark, +/area/horizon/engineering/aft_airlock) "wWM" = ( /obj/effect/floor_decal/corner/grey/diagonal, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -163127,6 +163541,11 @@ }, /turf/unsimulated/floor, /area/centcom/control) +"wYA" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/maintenance/deck_2/aft) "wYB" = ( /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/plating, @@ -163519,6 +163938,27 @@ /obj/structure/table/wood, /turf/simulated/floor/holofloor/wood, /area/horizon/holodeck/source_dininghall) +"xaE" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/smes) "xaL" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -164022,20 +164462,6 @@ }, /turf/unsimulated/floor, /area/centcom/control) -"xer" = ( -/obj/machinery/door/firedoor, -/obj/structure/lattice/catwalk/indoor/grate/dark, -/obj/machinery/door/airlock/maintenance_hatch{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/horizon/maintenance/deck_1/wing/starboard) "xes" = ( /obj/effect/floor_decal/industrial/warning{ dir = 5 @@ -164305,13 +164731,6 @@ /obj/structure/cable, /turf/simulated/floor/plating, /area/horizon/maintenance/substation/hangar) -"xgw" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, -/turf/simulated/floor/tiled/dark, -/area/horizon/engineering/aft_airlock) "xgx" = ( /obj/effect/floor_decal/corner/beige/full{ dir = 4 @@ -164551,16 +164970,6 @@ "xiE" = ( /turf/simulated/wall/r_wall, /area/horizon/command/bridge/cciaroom) -"xiG" = ( -/obj/machinery/kinetic_harvester{ - initial_id_tag = "horizon_fusion" - }, -/obj/effect/floor_decal/industrial/outline/yellow, -/obj/effect/floor_decal/industrial/warning{ - dir = 1 - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/mainchamber) "xiJ" = ( /obj/structure/flora/grass/jungle, /obj/effect/floor_decal/spline/plain{ @@ -164961,6 +165370,17 @@ /obj/machinery/firealarm/north, /turf/simulated/floor/carpet/rubber, /area/horizon/rnd/server) +"xmD" = ( +/obj/effect/floor_decal/corner/yellow{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/dark, +/area/horizon/engineering/aft_airlock) "xmF" = ( /obj/structure/shuttle_part/scc/mining{ icon_state = "6,1"; @@ -164977,11 +165397,6 @@ }, /turf/simulated/floor/wood, /area/horizon/command/heads/om) -"xmI" = ( -/obj/structure/lattice/catwalk/indoor/grate/dark, -/obj/machinery/alarm/east, -/turf/simulated/floor/plating, -/area/horizon/maintenance/deck_2/wing/starboard/far) "xmM" = ( /turf/simulated/floor/tiled/white, /area/horizon/storage/eva/expedition) @@ -165062,16 +165477,6 @@ /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled, /area/horizon/operations/mining_main/refinery) -"xnx" = ( -/obj/machinery/portable_atmospherics/canister/empty/air, -/turf/simulated/floor/plating, -/area/horizon/engineering/reactor/indra/office) -"xnE" = ( -/obj/effect/floor_decal/corner/yellow{ - dir = 6 - }, -/turf/simulated/floor/tiled/dark, -/area/horizon/engineering/aft_airlock) "xnL" = ( /obj/machinery/light/small/emergency{ dir = 8 @@ -165283,6 +165688,21 @@ /obj/machinery/meter, /turf/simulated/floor/tiled, /area/horizon/security/brig) +"xpa" = ( +/obj/item/circuitboard/smes, +/obj/item/circuitboard/smes, +/obj/item/smes_coil, +/obj/item/smes_coil, +/obj/item/smes_coil/super_capacity, +/obj/item/smes_coil/super_capacity, +/obj/item/smes_coil/super_io, +/obj/item/smes_coil/super_io, +/obj/effect/floor_decal/industrial/warning, +/obj/structure/closet/crate/elec{ + name = "SMES supplies crate" + }, +/turf/simulated/floor/plating, +/area/horizon/engineering/storage/lower) "xpf" = ( /obj/structure/table/stone/marble, /obj/machinery/door/firedoor{ @@ -165407,6 +165827,15 @@ }, /turf/simulated/floor/tiled/dark, /area/horizon/security/evidence_storage) +"xpZ" = ( +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/obj/structure/bed/stool/chair/office/light{ + dir = 4 + }, +/turf/simulated/floor/tiled/full, +/area/horizon/engineering/reactor/indra/office) "xqc" = ( /obj/structure/cable/green{ icon_state = "4-8" @@ -166404,6 +166833,12 @@ /obj/machinery/door/firedoor, /turf/simulated/floor/tiled/full, /area/horizon/maintenance/deck_2/wing/starboard/far) +"xxO" = ( +/obj/effect/floor_decal/spline/plain/black{ + dir = 5 + }, +/turf/simulated/floor/carpet/rubber, +/area/horizon/engineering/reactor/indra/monitoring) "xxS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -166433,14 +166868,6 @@ /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled/dark, /area/horizon/engineering/reactor/supermatter/waste) -"xyj" = ( -/obj/machinery/alarm/south, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/obj/effect/floor_decal/spline/plain, -/turf/simulated/floor/carpet/rubber, -/area/horizon/engineering/reactor/indra/monitoring) "xyl" = ( /obj/structure/cable/green{ icon_state = "4-8" @@ -166677,6 +167104,14 @@ }, /turf/simulated/floor/plating, /area/horizon/maintenance/deck_1/wing/starboard/far) +"xzE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/full, +/area/horizon/hallway/primary/deck_2/central) "xzF" = ( /turf/simulated/wall, /area/horizon/maintenance/deck_1/main/port) @@ -166911,21 +167346,6 @@ /obj/effect/floor_decal/industrial/outline_door/yellow, /turf/simulated/floor/tiled, /area/horizon/hangar/intrepid) -"xBR" = ( -/obj/structure/sign/radiation{ - pixel_y = 32 - }, -/obj/machinery/alarm/west, -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/closet/radiation, -/obj/effect/floor_decal/industrial/outline/yellow, -/obj/effect/floor_decal/industrial/warning{ - dir = 9 - }, -/turf/simulated/floor/tiled/full, -/area/horizon/engineering/reactor/supermatter/airlock) "xBV" = ( /obj/structure/cable/green{ icon_state = "4-8" @@ -167009,13 +167429,6 @@ }, /turf/unsimulated/floor, /area/centcom/legion/hangar5) -"xCw" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 1 - }, -/obj/structure/engineer_maintenance/pipe/wall, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/mainchamber) "xCC" = ( /obj/structure/lattice, /turf/space/dynamic, @@ -167605,16 +168018,6 @@ /obj/item/hullbeacon/red, /turf/simulated/floor/reinforced/airless, /area/horizon/exterior) -"xGY" = ( -/obj/structure/cable/green{ - icon_state = "4-8" - }, -/obj/effect/floor_decal/corner/yellow/full{ - dir = 4 - }, -/obj/machinery/newscaster/south, -/turf/simulated/floor/tiled, -/area/horizon/engineering/storage_eva) "xHg" = ( /obj/structure/cable/green{ icon_state = "1-2" @@ -167726,6 +168129,17 @@ }, /turf/simulated/floor/tiled/full, /area/horizon/hallway/primary/deck_2/central) +"xHJ" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/obj/structure/cable{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/apc/west, +/turf/simulated/floor, +/area/horizon/maintenance/deck_3/aft/port/far) "xHO" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -167952,6 +168366,22 @@ /obj/effect/floor_decal/industrial/outline/yellow, /turf/unsimulated/floor, /area/antag/mercenary) +"xIV" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/structure/cable/green{ + icon_state = "2-4" + }, +/obj/effect/floor_decal/corner/dark_blue/full{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/dark/cooled, +/area/horizon/ai/upload) "xIY" = ( /obj/structure/bed/stool/chair/office/light{ dir = 8 @@ -168062,24 +168492,6 @@ }, /turf/unsimulated/floor, /area/antag/raider) -"xJD" = ( -/obj/machinery/camera/network/command{ - c_tag = "AI Core - Foyer"; - dir = 4 - }, -/obj/machinery/power/apc/critical/south, -/obj/structure/cable/green{ - icon_state = "0-4" - }, -/obj/machinery/turretid/stun{ - check_synth = 1; - name = "\improper AI Chamber Turret Control Console"; - pixel_y = 1; - pixel_x = -31; - dir = 4 - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/ai/upload) "xJF" = ( /obj/structure/railing/mapped, /obj/structure/lattice/catwalk/indoor/grate/dark, @@ -168164,6 +168576,14 @@ "xKr" = ( /turf/simulated/lava, /area/antag/ninja) +"xKs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/lattice/catwalk/indoor/grate/dark, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_2/wing/starboard) "xKv" = ( /obj/effect/floor_decal/corner/paleblue{ dir = 1 @@ -168676,6 +169096,15 @@ }, /turf/simulated/floor/tiled/dark, /area/horizon/command/bridge/controlroom) +"xND" = ( +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/structure/sign/radiation{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "xNF" = ( /obj/machinery/atmospherics/pipe/manifold/visible/yellow{ dir = 4 @@ -169080,9 +169509,6 @@ }, /turf/simulated/floor/tiled/full, /area/horizon/hallway/primary/deck_2/starboard) -"xRT" = ( -/turf/simulated/wall, -/area/horizon/engineering/shields) "xRV" = ( /obj/effect/floor_decal/corner/mauve{ dir = 9 @@ -169129,6 +169555,13 @@ }, /turf/simulated/floor/tiled/full, /area/horizon/service/hydroponics/garden) +"xSl" = ( +/obj/machinery/computer/fusion/core_control/terminal{ + initial_id_tag = "horizon_fusion" + }, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/monitoring) "xSt" = ( /obj/effect/floor_decal/industrial/warning{ dir = 4 @@ -169579,6 +170012,13 @@ /obj/machinery/atmospherics/pipe/simple/visible/green, /turf/simulated/floor/plating, /area/horizon/engineering/reactor/supermatter/mainchamber) +"xVO" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 5 + }, +/obj/item/hullbeacon/red, +/turf/simulated/floor/reinforced/airless, +/area/horizon/exterior) "xVV" = ( /obj/effect/floor_decal/corner/dark_blue{ dir = 8 @@ -169635,6 +170075,18 @@ }, /turf/simulated/floor/plating, /area/horizon/hangar/intrepid) +"xWz" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/floor_decal/corner/yellow{ + dir = 6 + }, +/obj/structure/sign/radiation{ + pixel_x = 32 + }, +/turf/simulated/floor/tiled, +/area/horizon/engineering/reactor/indra/office) "xWO" = ( /obj/effect/floor_decal/corner/dark_green{ dir = 9 @@ -169725,6 +170177,20 @@ /obj/structure/table/steel, /turf/simulated/floor/tiled/dark, /area/horizon/maintenance/deck_2/wing/port) +"xXm" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/atmospherics/unary/outlet_injector{ + frequency = 1441; + id = "fusion_injector_air"; + injecting = 1; + use_power = 1; + dir = 8 + }, +/obj/effect/floor_decal/industrial/outline/red, +/turf/simulated/floor/reinforced/airless, +/area/horizon/engineering/reactor/indra/mainchamber) "xXn" = ( /obj/effect/floor_decal/spline/plain/cee, /obj/structure/flora/ausbushes/lavendergrass, @@ -170093,15 +170559,6 @@ /obj/random/loot, /turf/simulated/floor/plating, /area/horizon/maintenance/deck_2/wing/port) -"xZT" = ( -/obj/structure/bed/stool/chair/office/dark{ - dir = 1 - }, -/obj/effect/floor_decal/spline/plain{ - dir = 1 - }, -/turf/simulated/floor/carpet/rubber, -/area/horizon/engineering/reactor/indra/monitoring) "xZU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -170614,15 +171071,6 @@ }, /turf/simulated/floor/tiled/white, /area/centcom/shared_dream) -"ydK" = ( -/obj/effect/floor_decal/industrial/warning, -/obj/structure/railing/mapped, -/obj/machinery/atmospherics/portables_connector{ - dir = 1 - }, -/obj/effect/floor_decal/industrial/outline/yellow, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/mainchamber) "ydL" = ( /obj/effect/map_effect/window_spawner/full/shuttle/scc{ spawn_firedoor = 1; @@ -170772,24 +171220,6 @@ }, /turf/simulated/floor, /area/horizon/maintenance/substation/command) -"yeu" = ( -/obj/structure/cable/green{ - icon_state = "2-8" - }, -/turf/simulated/floor/tiled/full, -/area/horizon/engineering/reactor/indra/office) -"yev" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - dir = 8 - }, -/obj/structure/sign/radiation{ - pixel_y = 32 - }, -/obj/machinery/light/spot{ - dir = 1 - }, -/turf/simulated/floor/tiled/dark/full, -/area/horizon/engineering/reactor/indra/mainchamber) "yew" = ( /obj/machinery/sleeper, /obj/machinery/camera/network/medbay{ @@ -170988,6 +171418,13 @@ }, /turf/simulated/floor/lino, /area/horizon/service/cafeteria) +"yfg" = ( +/obj/structure/lattice/catwalk/indoor/grate/dark, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/horizon/maintenance/deck_2/wing/starboard/far) "yfk" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/carpet/rubber, @@ -171221,6 +171658,13 @@ icon_state = "dark_preview" }, /area/centcom/control) +"ygw" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/mainchamber) "ygz" = ( /obj/item/flame/lighter/zippo/gold{ pixel_x = -3; @@ -171730,6 +172174,25 @@ }, /turf/simulated/floor/tiled/dark, /area/horizon/medical/ward/isolation) +"yko" = ( +/obj/item/smes_coil/super_io, +/obj/item/smes_coil/super_io, +/obj/item/smes_coil/super_capacity, +/obj/item/smes_coil/super_capacity, +/obj/item/smes_coil, +/obj/item/smes_coil, +/obj/item/circuitboard/smes, +/obj/item/circuitboard/smes, +/obj/structure/closet/crate/elec{ + name = "SMES supplies crate" + }, +/obj/machinery/light, +/obj/machinery/camera/network/reactor{ + c_tag = "Engineering - INDRA SMES Room 1"; + dir = 1 + }, +/turf/simulated/floor/tiled/dark/full, +/area/horizon/engineering/reactor/indra/smes) "ykp" = ( /obj/machinery/light, /turf/unsimulated/floor{ @@ -193913,7 +194376,7 @@ scN aoJ hLA hFg -rHt +avA uvv rHt egt @@ -194170,7 +194633,7 @@ mHc iZD mUl hFg -fCI +vQt egt egt egt @@ -194416,7 +194879,7 @@ mOM byv fch aYN -njV +scN dfe bOB cBN @@ -194427,7 +194890,7 @@ rCL aoJ lnz xZm -egt +mvn coA coA coA @@ -194684,7 +195147,7 @@ ydf fkx qmT uCE -vlo +ghD coA iDt rsg @@ -194941,7 +195404,7 @@ fSm wWg oBr xZm -tlM +iRd coA snZ tnT @@ -195198,7 +195661,7 @@ mHc qXH bFW hFg -jnQ +diR coA nfv xDw @@ -195455,7 +195918,7 @@ scN wWg ycV hFg -xer +gyb coA coA xqy @@ -195712,7 +196175,7 @@ bKf wWg oBr xZm -klD +fGf rXC hRJ bYO @@ -196240,7 +196703,7 @@ tEd uOT uOT tJW -odv +hNI hWT hWT jgx @@ -198011,7 +198474,7 @@ wEQ jbi tJJ tJJ -vEc +xpa vYR epp jse @@ -198530,7 +198993,7 @@ dHN mMB juh qBu -juw +noi nzx nIK hnE @@ -200092,7 +200555,7 @@ hoK hoK gRK gRK -scu +iRI gRK wZA vhH @@ -208069,7 +208532,7 @@ hTy aoG vTq eFB -mbl +rch ori jfA rvG @@ -252262,7 +252725,7 @@ okw vha fmx sGu -hii +pVa srI fjk ncE @@ -252519,7 +252982,7 @@ okw peq lFZ okw -kWK +mCO srI fjk iPx @@ -252776,8 +253239,8 @@ okw oxM xrs okw -xmI -mwi +baX +uUa rGA srI srI @@ -253034,7 +253497,7 @@ eOt okw okw fjk -udd +dGd fjk fjk udd @@ -253291,7 +253754,7 @@ jNB ghY kHs srI -srI +tmH ixJ ixJ srI @@ -253548,7 +254011,7 @@ jNB wEm fJX srI -ezg +sPG loS rWx ffJ @@ -253801,11 +254264,11 @@ lRA lkX fJX aYB -jNB -jNB -inB -srI -cNA +hjn +eIi +vCy +yfg +dYs rSV oSN cNA @@ -254058,7 +254521,7 @@ xnV vjc fJX kCO -jNB +pkL gHT fJX srI @@ -254315,7 +254778,7 @@ mHE fJX fJX jNB -jNB +pkL xsL fJX fjk @@ -254572,7 +255035,7 @@ lkX fJX wYS jxg -gON +oEp wEm fJX srI @@ -254829,7 +255292,7 @@ njK fJX yhD jxg -jNB +pkL jNB min waX @@ -255086,7 +255549,7 @@ fJX fJX tNX jxg -jNB +pkL jNB fJX srI @@ -255343,7 +255806,7 @@ kaE deU pEd jxg -jNB +pkL jNB fJX qLq @@ -255600,7 +256063,7 @@ lGL qYa pEd jxg -iDn +fqg jNB fJX gmn @@ -255857,8 +256320,8 @@ qrB esh pEd jxg -iDn -jNB +xKs +ntd fJX srI mYt @@ -260232,7 +260695,7 @@ osJ qTK xJs iEp -vcm +wxw fCw jUG fCw @@ -261755,7 +262218,7 @@ poM poM lto xFP -eAb +aYV vFR vUV ybT @@ -262249,7 +262712,7 @@ eVT eVT dqC wpL -hsj +kjN cdp gjV gjV @@ -263291,7 +263754,7 @@ cWx uIh fSw xZQ -xBR +lpL mxA gKL xZQ @@ -266130,7 +266593,7 @@ sFO jxT ede gIA -xGY +aFB tcG wVZ oPY @@ -266646,7 +267109,7 @@ ebm bxz gqq pIx -uqm +elE aOw gYT xlm @@ -267131,7 +267594,7 @@ eVT eVT xel ckp -dqC +jUA bVK bsx tRS @@ -267938,7 +268401,7 @@ rrG bnP esg rrG -lJZ +pVJ adI vlW hCf @@ -268447,7 +268910,7 @@ ddc tCa jDJ lQY -fJT +hmP stI jHa jHa @@ -271279,17 +271742,17 @@ wKJ aQv kBx ucf -git -rkb -tuQ -tuQ -tuQ -tuQ -tuQ -tuQ -tuQ -rkb -oSl +nwb +ebX +nOj +nOj +nOj +nOj +nOj +nOj +nOj +ebX +hOg mQb vGI pfa @@ -271536,7 +271999,7 @@ frH gQf mlB uDY -abz +uIr rZN snv snv @@ -271793,7 +272256,7 @@ xYh rsN pdR oax -hjw +crA gst ufZ kBh @@ -272050,7 +272513,7 @@ snv fkE oUY dvo -jdL +glp jrj jhy vpB @@ -272272,12 +272735,12 @@ eSV eSV dxi dxi -xnx -dOz +gMf +nqT bjx isZ -iiS -wHC +tXQ +dXd gmq tHh deu @@ -272307,7 +272770,7 @@ dXW dXW nqF fOI -jdL +glp jrj fru teh @@ -272564,7 +273027,7 @@ oFD sJn rTg vsP -jdL +glp jrj uXG lft @@ -272796,7 +273259,7 @@ iDH ohs eus sEs -bTq +oMF deu pNO ezx @@ -272821,7 +273284,7 @@ vxO lVC rTg vsP -jdL +glp gst dFW sVT @@ -272832,7 +273295,7 @@ iEK guh dvo sOs -qaF +qKQ qZz qZz qZz @@ -273042,18 +273505,18 @@ eSV eSV eSV dxi -gAG +feV tCq tCq -cLl -yeu -wFv -wGN +tYu +xpZ +cdH +nyd yeY -eVK -xgw -rqx -jYP +xmD +boZ +wWK +gJL deu dmZ ddm @@ -273078,7 +273541,7 @@ wck ddE rTg vsP -kaK +ovn jrj cXG lft @@ -273088,7 +273551,7 @@ dBz jWS hTg fNg -odf +vje edn xHI uWA @@ -273296,25 +273759,25 @@ eSV eSV eSV eSV -eSV +wdK eSV dxi -sUV -tCq -tCq -aEh -aFc -cLl -mex +dPK +sbK +mWB +wLT +sNs +xWz +wkZ iDH -bpX -qoz -lld -rZs -vkw -jFV -uxg -aDr +gfz +nPF +vxq +bzP +bmq +pbg +sdu +thB uVH uVH uVH @@ -273335,7 +273798,7 @@ fWh vIE nqF kpl -jdL +glp jrj aJs qaG @@ -273345,7 +273808,7 @@ kBK nir hTg fNg -ovn +kaK agC icP icP @@ -273552,27 +274015,27 @@ eSV eSV eSV eSV -eSV -eSV -eSV +dST +dST +dST dxi -sUV -tCq -vwy -jKH -itu -mDn -sSd -iDH -fCJ -shh -xnE -bzP -bmq -emu -vXy -fDq -lCY +dxi +dxi +dxi +dxi +dxi +dxi +dxi +dxi +tsJ +tsJ +tsJ +tsJ +deu +kYM +grg +bPF +uVs fiX lar uVH @@ -273592,7 +274055,7 @@ nRI hbe tjO rzh -fYR +gJr jrj mlB uan @@ -273602,7 +274065,7 @@ hIS rRV mlB fNg -ovn +kaK gst glY qIo @@ -273808,33 +274271,33 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV -dxi -gmq -gmq -gmq -gmq -gmq -gmq -gmq -gmq -deu -deu -deu -deu +dST +dST +sPz +sPz +sPz +sPz +sPz +sPz +sPz +sPz +sPz +sPz +sPz +sPz +sPz vkw -pQf -shr -czG -wOf +vkw +vkw +mIp +tAb +jyO +oAm vkw uLJ +gxe gcb -gxe -gxe +kUZ fHU fDY wUj @@ -273849,7 +274312,7 @@ eLM xoG nqF oRL -ktd +jGv upa eaw eaw @@ -273859,7 +274322,7 @@ eaw eaw eaw iKu -uFB +eri gst glY aVS @@ -274065,28 +274528,28 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV dST sPz sPz eTI -roi -rkp +jji +oaS evT qpX -idO +evT +lxn +evT ekk rHM -exP +nuu hNL vkw yfO -deX -uMu -hmK +mvc +xaE +aOj +rBJ +yko vkw opI ylV @@ -274106,17 +274569,17 @@ vQS uih oxs iZV -mDC -lTD -bCW -iVl -bCW -bCW -iVl -hgg -uPJ -uOm -pgr +wwk +xzE +jAG +idD +jAG +jAG +sEl +mKB +sqz +tTv +vKD muw ukN ldf @@ -274321,20 +274784,18 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV dST dST sPz sPz -wJv +cjY pRA sVs pGf aKG vds +vds +vds gcv bfS rfx @@ -274342,8 +274803,10 @@ czv tiK cHC gbr -sBr -hmK +kGf +rBJ +rBJ +llm vkw jOO mjY @@ -274578,32 +275041,32 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV dST sPz sPz -lHA +tno iYR aol ebG aol lhg edk +edk +edk qyo wCp rxU mQG vkw -nKN +fzg bTV -dGU -fHT +qrb +cOO +msd +hmK vkw jOO -mfr +ino vwP ycF cXf @@ -274834,33 +275297,33 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV -eSV +oif dST sPz -lPX +flZ igI cIJ iOC xEs iOC -gYW -igI -bIE -dyE +fQJ +ygw +lWk +dwz +dNt +gqX bio -fsE +bfm ovm ovm ovm jdX ovm ovm -jOO -ino +tAI +tAI +nmJ +pRp vwP cRG ewd @@ -275092,32 +275555,32 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV dST sPz eDS sPz -sKV -sKV -arO -qOr -nrr +pst +pst +lPE +eSQ +mXF sPz -qNi -dyE +dfM +iYR +igI +fpm vqr -pjb -ovm -aYU -nGj -dZZ -eMh +miN +glL +giw +cxF +gqs +etx ovm +qzX +dqW fDg -kPt +rTp vwP vAw pBk @@ -275127,7 +275590,7 @@ aKb dRL gho cFp -bda +rvO daI tBr eAO @@ -275349,10 +275812,6 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV dST sPz krr @@ -275361,18 +275820,22 @@ hIc shy qTh shy -ueJ -sSN -iha -ydK +xXm +vAl +vUz +dyE +iRU +iRU bio -wxr -udR -mDb -nLD -rYE -qVC +sSG +mGW +ghv +tZw +aRg +hoq ovm +vWn +igE jOO gPX tyb @@ -275606,10 +276069,6 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV hbF pDx hKo @@ -275619,17 +276078,21 @@ cVs cXS iGl koM -ocF +vAl gYW cIJ +tBh +tBh gdX cgY -udR -gMG -xZT -uDE -xyj +mGW +jcW +btm +adW +sPO ovm +wYA +igE jOO dYY dYY @@ -275863,10 +276326,6 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV ePH vKX ngj @@ -275876,17 +276335,21 @@ koM urO tXi qdS -pYg -hNB -miB -dRG -xiG -udR -pbq -kdV -uuu -ihy +vAl +pJH +ojc +sPa +mIk +vqr +vUz +mGW +xSl +hdq +hDy +tqw ovm +cOK +dqW jOO dYY oOR @@ -276120,10 +276583,6 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV eAB gtz iWk @@ -276133,17 +276592,21 @@ hnm qTh nPb koM -ocF +vAl cgY cbA +qEE +tBh ojo gYW -udR -pgv -xZT -btM -fFB +mGW +fxN +hdq +pAW +sqk ovm +fOt +fJe jOO dYY pUg @@ -276377,10 +276840,6 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV dST sPz krr @@ -276389,18 +276848,22 @@ cui lgD cXS lgD -jxD -sSN -iha -gqX -bha +qeW +vAl +vUz +dyE +kXR +dSi +rlM mbt -udR -paw -ofi -alB -qVC +ayM +wyE +xxO +ffn +bqw ovm +tAI +tAI ubG cIN xxi @@ -276634,30 +277097,30 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV dST sPz eDS sPz -sKV -sKV -arO -qOr -nrr +pst +pst +lPE +eSQ +iQJ sPz -xCw -dyE +ulc +vcJ +pRA +ioh bha -kBp -ovm -wSL -pHz -mNk -cDd +dJC +glL +oWo +oUm +dOx +qJs ovm +gLd +tAI yak dYY jFU @@ -276890,29 +277353,29 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV -eSV +oif dST sPz -yev +xND pRA cbA qjQ uxx qjQ -cgY -pRA -ulz -dyE +wPK +wbc +jbR +dwz +dNt +gqX bha -ddl +mdB ovm ovm ovm qqW +ovm +ovm afY afY afY @@ -277148,20 +277611,18 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV dST sPz sPz -cJR +mHP vcJ cgu qsd cgu wXb jsu +jsu +jsu pWa uPg aCD @@ -277170,6 +277631,8 @@ ovm anu dIQ hDp +ovm +mDs afY hoc xRV @@ -277405,20 +277868,18 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV dST dST sPz sPz -sxZ +reB igI xzd jda eoT vds +vds +vds gNN iqb oqU @@ -277427,6 +277888,8 @@ gOp lKR lKk pOt +ovm +mDs wSq fqw tlo @@ -277663,27 +278126,27 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV -dST dST sPz +sPz iaF -gfB -umg +jji +bZY yeW yeW yeW yeW -ttJ -ckq +yeW +aeo +lNo +cEh okB ovm vMr myF vew +ovm +mDs afY qRL deZ @@ -277920,12 +278383,10 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV -eSV dST +dST +sPz +sPz sPz sPz sPz @@ -277933,10 +278394,12 @@ sPz aWj aWj gNR -aWj sPz -eDz +jHk +sPz cvG +sPz +sPz ejO ejO ejO @@ -278178,22 +278641,22 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV +dST +dST dST dST dST dST sPz -gyN dLV -lsG +dLV aVz sPz -kiG -pLa +mcv +auh +kLR +sPz +rWV ejO fYm bvv @@ -278437,20 +278900,20 @@ eSV eSV eSV eSV -eSV -eSV -eSV +sze eSV eSV dST sPz -kJO -mxt -lsG -lOm +ujb +lbW +lED sPz -tvG -grq +nFv +bHB +mCQ +sPz +rWV ejO wUi lqD @@ -278697,8 +279160,6 @@ eSV eSV eSV eSV -eSV -eSV dST sPz sPz @@ -278708,6 +279169,8 @@ sPz sPz sPz sPz +sPz +rWV ejO xmB tuz @@ -278954,8 +279417,8 @@ eSV eSV eSV eSV -eSV -eSV +dST +dST dST dST dST @@ -332686,7 +333149,7 @@ lWW aQx pCv exe -wAL +kwB fLk gqA vvr @@ -335510,7 +335973,7 @@ wTc lly ijw cyl -xRT +jGE fmD nMj lvO @@ -335763,14 +336226,14 @@ nGb nGb bcN jQk -xRT +jGE xHv -xRT -xRT -xRT -kKc +jGE +jGE +jGE +bMq uSB -kKc +bMq hlT dUz lSW @@ -337048,7 +337511,7 @@ qfo qfo rVj pXI -mSF +kxc fdS xIk fwN @@ -339088,10 +339551,10 @@ eSV eSV eSV eSV -eSV -eSV -eSV -rVj +krb +dbd +dbd +gFJ cKu cKu jkB @@ -339344,11 +339807,11 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV -rVj +iJX +gFJ +cKu +cKu +cKu cKu cKu jkB @@ -339601,13 +340064,13 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV rVj cKu cKu +cKu +cKu +cKu +cKu tml cKu cKu @@ -339857,14 +340320,14 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV iJX gFJ cKu cKu +cKu +cKu +cKu +cKu jkB cKu rWq @@ -340114,11 +340577,11 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV rVj +cKu +cKu +cKu +cKu xLZ xLZ xLZ @@ -340141,7 +340604,7 @@ brM wNN wNN nAO -xkn +xHJ gPO hUv wkl @@ -340371,11 +340834,11 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV rVj +cKu +cKu +cKu +cKu gkW qWk qWk @@ -340398,7 +340861,7 @@ jhc sHc fUQ vFr -ffd +kwZ fzC hUv hIb @@ -340628,11 +341091,11 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV rVj +cKu +cKu +cKu +cKu xLZ qWk qGv @@ -340885,19 +341348,19 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV rVj +cKu +cKu +cKu +cKu xLZ qWk qGv tOi wQG lLC -tuf -xJD +bOg +fKE qGv rSA grv @@ -341142,19 +341605,19 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV rVj +cKu +cKu +cKu +cKu xLZ qWk qGv wfY sqc izC -grA -oOU +xIV +ksb kmC fLv kGR @@ -341399,19 +341862,19 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV rVj +cKu +cKu +cKu +cKu xLZ qWk qGv tOi fUk lHy -rRD -lUB +syX +laM qGv rAr uRi @@ -341656,11 +342119,11 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV rVj +cKu +cKu +cKu +cKu xLZ qWk qGv @@ -341913,11 +342376,11 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV rVj +cKu +cKu +cKu +cKu xLZ miS uyp @@ -342170,11 +342633,11 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV rVj +cKu +cKu +cKu +cKu xLZ miS uyp @@ -342427,11 +342890,11 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV rVj +cKu +cKu +cKu +cKu xLZ miS uyp @@ -342684,11 +343147,11 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV rVj +cKu +cKu +cKu +cKu xLZ miS uyp @@ -342941,12 +343404,12 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV sIA -gNr +ryE +cKu +cKu +cKu +xLZ miS uyp uyp @@ -343199,11 +343662,11 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV -mKl +rVj +cKu +cKu +cKu +xLZ miS miS miS @@ -343456,12 +343919,12 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV -eSV -gzw +sIA +ryE +cKu +cKu +xLZ +xLZ xLZ xLZ xLZ @@ -343714,16 +344177,16 @@ eSV eSV eSV eSV -eSV -eSV -eSV -eSV -sIA +xVO +hCm +hCm hCm hCm ryE cKu cKu +cKu +xLZ xLZ eAC wmT @@ -343976,11 +344439,11 @@ eSV eSV eSV eSV -eSV -eSV rVj cKu cKu +cKu +cKu xLZ xLZ xLZ @@ -344233,8 +344696,6 @@ eSV eSV eSV eSV -eSV -eSV rVj cKu cKu @@ -344242,6 +344703,8 @@ cKu cKu cKu cKu +cKu +cKu xLZ xut xut @@ -344490,14 +344953,14 @@ eSV eSV eSV eSV -eSV -eSV sIA hCm hCm hCm hCm hCm +hCm +hCm ryE xLZ xLZ diff --git a/maps/sccv_horizon/submaps/ops_warehouse_small_storage.dmm b/maps/sccv_horizon/submaps/ops_warehouse_small_storage.dmm index 13f47ec77f0..c233b4ea927 100644 --- a/maps/sccv_horizon/submaps/ops_warehouse_small_storage.dmm +++ b/maps/sccv_horizon/submaps/ops_warehouse_small_storage.dmm @@ -80,6 +80,10 @@ /obj/item/stack/cable_coil, /turf/template_noop, /area/template_noop) +"bv" = ( +/obj/structure/cart/storage/janitorialcart, +/turf/template_noop, +/area/template_noop) "bw" = ( /obj/structure/table/rack/no_cargo, /obj/item/rfd/piping, @@ -295,10 +299,6 @@ /obj/random/booze, /turf/template_noop, /area/template_noop) -"hs" = ( -/obj/structure/cart/storage/janitorialcart, -/turf/template_noop, -/area/template_noop) "ht" = ( /obj/structure/table/rack/no_cargo, /obj/machinery/chemical_dispenser/coffee/full, @@ -954,6 +954,10 @@ /obj/random/coin, /turf/template_noop, /area/template_noop) +"vG" = ( +/obj/structure/cart/storage/janitorialcart/full, +/turf/template_noop, +/area/template_noop) "wa" = ( /obj/effect/map_effect/marker/mapmanip/submap/extract/sccv_horizon/ops_warehouse_small_storage, /obj/structure/closet/emcloset, @@ -1119,10 +1123,6 @@ /obj/random/dirt_75, /turf/template_noop, /area/template_noop) -"AK" = ( -/obj/machinery/portable_atmospherics/canister/hydrogen/deuterium, -/turf/template_noop, -/area/template_noop) "AW" = ( /obj/machinery/portable_atmospherics/hydroponics, /obj/random/dirt_75, @@ -1196,10 +1196,6 @@ }, /turf/template_noop, /area/template_noop) -"Dl" = ( -/obj/machinery/portable_atmospherics/canister/boron, -/turf/template_noop, -/area/template_noop) "Dv" = ( /obj/machinery/computer/arcade/orion_trail, /turf/template_noop, @@ -1475,6 +1471,10 @@ /obj/random/loot, /turf/template_noop, /area/template_noop) +"LX" = ( +/obj/machinery/portable_atmospherics/canister/deuterium, +/turf/template_noop, +/area/template_noop) "LZ" = ( /obj/effect/map_effect/marker_helper/mapmanip/submap/edge{ dir = 4 @@ -1486,6 +1486,10 @@ /obj/effect/decal/cleanable/greenglow, /turf/template_noop, /area/template_noop) +"Ms" = ( +/obj/machinery/portable_atmospherics/canister/heliumfuel, +/turf/template_noop, +/area/template_noop) "MH" = ( /obj/random/junk, /obj/random/maintenance_junk_or_loot, @@ -1528,10 +1532,6 @@ /obj/random/dirt_75, /turf/template_noop, /area/template_noop) -"NJ" = ( -/obj/structure/cart/storage/janitorialcart/full, -/turf/template_noop, -/area/template_noop) "NR" = ( /obj/effect/map_effect/marker/mapmanip/submap/extract/sccv_horizon/ops_warehouse_small_storage, /obj/random/dirt_75, @@ -3597,7 +3597,7 @@ Gz Gz Gz Gz -hs +bv Gz Gz Gz @@ -3643,7 +3643,7 @@ zw Gz Gz Gz -NJ +vG nn Gz Gz @@ -4158,7 +4158,7 @@ Gz Gz Gz sW -AK +LX Gz Gz Gz @@ -4191,7 +4191,7 @@ nC nC nn sW -Dl +Ms Gz Gz Gz diff --git a/tgui/packages/tgui/interfaces/Apc.tsx b/tgui/packages/tgui/interfaces/Apc.tsx index b374ebbfc88..e285ad28705 100644 --- a/tgui/packages/tgui/interfaces/Apc.tsx +++ b/tgui/packages/tgui/interfaces/Apc.tsx @@ -10,8 +10,8 @@ export type APCData = { fail_time: number; silicon_user: BooleanLike; is_AI_or_robot: BooleanLike; - total_load: number; - total_charging: number; + total_load: string; + total_charging: string; is_operating: BooleanLike; external_power: number; charge_mode: BooleanLike; @@ -26,7 +26,7 @@ export type APCData = { type PowerChannel = { name: string; - power_load: number; + power_load: string; status: number; }; @@ -169,7 +169,7 @@ export const APCWindow = (props, context) => { [{channelStatus(channel.status)}] | [ - {channelPower(channel.status)}] | {channel.power_load} W + {channelPower(channel.status)}] | {channel.power_load} {(!data.locked && !data.silicon_user) || data.is_AI_or_robot ? (
    @@ -200,9 +200,9 @@ export const APCWindow = (props, context) => { ))} - {data.total_load}W + {data.total_load} {data.total_charging - ? ` (+ ${data.total_charging}W Charging)` + ? ` (+ ${data.total_charging} Charging)` : null} diff --git a/tgui/packages/tgui/interfaces/FusionCodex.tsx b/tgui/packages/tgui/interfaces/FusionCodex.tsx new file mode 100644 index 00000000000..b6a3765410a --- /dev/null +++ b/tgui/packages/tgui/interfaces/FusionCodex.tsx @@ -0,0 +1,137 @@ +import { useBackend, useLocalState } from '../backend'; +import { Box, Flex, Input, LabeledList, Section } from '../components'; +import { NtosWindow } from '../layouts'; + +export type CodexData = { + reactions: Reaction[]; +}; + +type Reaction = { + name: string; + reactants: Reactant[]; + products: Product[]; + minimum_temp: number; + energy_consumption: number; + energy_production: number; + radiation: number; + instability: number; +}; + +type Reactant = { + name: string; + amount: number; +}; + +type Product = { + name: string; + amount: number; +}; + +export const FusionCodex = (props, context) => { + const { act, data } = useBackend(context); + const [searchTerm, setSearchTerm] = useLocalState( + context, + `searchTerm`, + `` + ); + + return ( + + +
    { + setSearchTerm(value); + }} + value={searchTerm} + /> + }> + +
    + {data.reactions + .filter( + (reaction) => + reaction.name + .toLowerCase() + .indexOf(searchTerm.toLowerCase()) > -1 + ) + .map((reaction) => ( +
    + + + +
    + + {reaction.reactants.map((Reactant) => ( + + {Reactant.amount ? Reactant.amount : 'None'} + + ))} + +
    +
    + +
    + + {reaction.products.map((Product) => ( + + {Product.amount} + + ))} + +
    +
    +
    +
    + + + {reaction.minimum_temp} K + + + + {reaction.energy_production} {' / '} + {reaction.energy_consumption} + + + + {reaction.radiation ? reaction.radiation : 'None'} + + + + {reaction.instability + ? reaction.instability + : 'None'} + + + +
    +
    +
    + ))} +
    +
    +
    +
    +
    + ); +}; diff --git a/tgui/packages/tgui/interfaces/FusionCoreControl.tsx b/tgui/packages/tgui/interfaces/FusionCoreControl.tsx index 838a82b25bf..00bef325631 100644 --- a/tgui/packages/tgui/interfaces/FusionCoreControl.tsx +++ b/tgui/packages/tgui/interfaces/FusionCoreControl.tsx @@ -2,7 +2,7 @@ import { round } from '../../common/math'; import { BooleanLike } from '../../common/react'; import { capitalize } from '../../common/string'; import { useBackend, useSharedState } from '../backend'; -import { Box, Button, Dimmer, Divider, LabeledList, NoticeBox, NumberInput, ProgressBar, Section } from '../components'; +import { Box, Button, Dimmer, Divider, Flex, LabeledList, NoticeBox, NumberInput, ProgressBar, Section } from '../components'; import { Window } from '../layouts'; export type FusionCoreData = { @@ -14,12 +14,18 @@ type Core = { id: number; ref: string; field: BooleanLike; - field_strength: number; // backend only, user facing value is power + field_strength: number; + field_strength_max: number; + entropy_multiplier: number; + instability_multiplier: number; + power_multiplier: number; power: number; size: number; instability: number; temperature: number; - power_status: string; + power_available: string; + power_usage: string; + power_generated: string; shutdown_safe: BooleanLike; reactants: Reactant[]; }; @@ -36,9 +42,8 @@ export const FusionCoreControl = (props, context) => { 'override', false ); - return ( - + {data.cores && data.cores.length ? ( data.cores.map((core) => ( @@ -82,78 +87,108 @@ export const FusionCoreControl = (props, context) => { ) : ( '' )} - - Field status:{' '} - - {core.field ? 'Online' : 'Offline'}. - - + + + + + {core.power_available} + + + + + + + {core.power_usage} + + + + + + + {core.power_generated} + + + + - - - {core.power_status} W - - - - act('strength', { - strength: value, - machine: core.ref, - }) - } - /> - - - {core.size}{' '} - {core.size > 1 || core.size < 1 ? 'meters' : 'meter'} - - - {core.instability < 0 ? ( - - Core offline. + + + + + Field status:{' '} + + {core.field ? 'Online' : 'Offline'}. + - ) : ( - - )} - - - {core.temperature < 0 ? ( - - Core offline. - - ) : ( - round(core.temperature, 0.1) + ' kelvin' - )} - - -
    - {core.reactants && core.reactants.length ? ( - core.reactants.map((reactant) => ( -
    - - {capitalize(reactant.name)} ( - {round(reactant.amount, 0.1)} cubic units) - -
    - )) - ) : ( - No reactants detected. - )} -
    + + + + + act('strength', { + strength: value, + machine: core.ref, + }) + } + /> + + + {core.size}{' '} + {core.size > 1 || core.size < 1 ? 'meters' : 'meter'} + + + {core.instability < 0 ? ( + + Core offline. + + ) : ( + + )} + + + {core.temperature < 0 ? ( + + Core offline. + + ) : ( + round(core.temperature, 0.1) + ' kelvin' + )} + + + + + + + Reactants + {core.reactants && core.reactants.length ? ( + core.reactants.map((reactant) => ( +
    + + {capitalize(reactant.name)} ( + {round(reactant.amount, 0.1)}) + +
    + )) + ) : ( + No reactants detected. + )} +
    +
    +
    )) ) : ( diff --git a/tgui/packages/tgui/interfaces/FusionGyrotronControl.tsx b/tgui/packages/tgui/interfaces/FusionGyrotronControl.tsx index d894e495da7..8c41be48e9e 100644 --- a/tgui/packages/tgui/interfaces/FusionGyrotronControl.tsx +++ b/tgui/packages/tgui/interfaces/FusionGyrotronControl.tsx @@ -15,13 +15,14 @@ type Gyrotron = { active: BooleanLike; firedelay: number; energy: number; + power_status: string; }; export const FusionGyrotronControl = (props, context) => { const { act, data } = useBackend(context); return ( - + {data.gyrotrons && data.gyrotrons.length ? ( data.gyrotrons.map((gyrotron) => ( @@ -37,15 +38,14 @@ export const FusionGyrotronControl = (props, context) => { /> }> - Power consumption per shot:{' '} - {gyrotron.energy * data.gyro_power_constant} watts. + Power consumption per shot: {gyrotron.power_status} diff --git a/tgui/packages/tgui/interfaces/FusionInjectorControl.tsx b/tgui/packages/tgui/interfaces/FusionInjectorControl.tsx index d040395c55d..05537b059f1 100644 --- a/tgui/packages/tgui/interfaces/FusionInjectorControl.tsx +++ b/tgui/packages/tgui/interfaces/FusionInjectorControl.tsx @@ -23,7 +23,7 @@ export const FusionInjectorControl = (props, context) => { const { act, data } = useBackend(context); return ( - + {data.injectors && data.injectors.length ? ( <> diff --git a/tgui/public/tgui.bundle.js b/tgui/public/tgui.bundle.js index 1d7d68e90d8..acab924822b 100644 --- a/tgui/public/tgui.bundle.js +++ b/tgui/public/tgui.bundle.js @@ -1 +1 @@ -!function(){var e={36997:function(e,t,n){"use strict";t.__esModule=!0,t.popperGenerator=h,t.createPopper=void 0;var o=p(n(65811)),r=p(n(62408)),a=p(n(39662)),i=p(n(95111)),c=(p(n(25462)),p(n(23967))),l=p(n(17850)),u=(p(n(23849)),p(n(6559)),p(n(91561)),p(n(13043))),d=p(n(63308));t.detectOverflow=d["default"];var s=n(1316);n(61797);function p(e){return e&&e.__esModule?e:{"default":e}}var m={placement:"bottom",modifiers:[],strategy:"absolute"};function f(){for(var e=arguments.length,t=new Array(e),n=0;n=0&&(0,d.isHTMLElement)(e)?(0,c["default"])(e):e;if(!(0,d.isElement)(n))return[];return t.filter((function(e){return(0,d.isElement)(e)&&(0,m["default"])(e,n)&&"body"!==(0,f["default"])(e)}))}(e):[].concat(t),r=[].concat(o,[n]),a=r[0],l=r.reduce((function(t,n){var o=b(e,n);return t.top=(0,C.max)(o.top,t.top),t.right=(0,C.min)(o.right,t.right),t.bottom=(0,C.min)(o.bottom,t.bottom),t.left=(0,C.max)(o.left,t.left),t}),b(e,a));return l.width=l.right-l.left,l.height=l.bottom-l.top,l.x=l.left,l.y=l.top,l};var o=n(61797),r=g(n(68056)),a=g(n(52779)),i=g(n(39662)),c=g(n(95111)),l=g(n(67977)),u=g(n(25462)),d=n(1316),s=g(n(93529)),p=g(n(62576)),m=g(n(63171)),f=g(n(22999)),h=g(n(24955)),C=n(36083);function g(e){return e&&e.__esModule?e:{"default":e}}function b(e,t){return t===o.viewport?(0,h["default"])((0,r["default"])(e)):(0,d.isHTMLElement)(t)?function(e){var t=(0,s["default"])(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}(t):(0,h["default"])((0,a["default"])((0,l["default"])(e)))}},65811:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t,n){void 0===n&&(n=!1);var d=(0,i.isHTMLElement)(t),s=(0,i.isHTMLElement)(t)&&function(e){var t=e.getBoundingClientRect(),n=t.width/e.offsetWidth||1,o=t.height/e.offsetHeight||1;return 1!==n||1!==o}(t),p=(0,l["default"])(t),m=(0,o["default"])(e,s),f={scrollLeft:0,scrollTop:0},h={x:0,y:0};(d||!d&&!n)&&(("body"!==(0,a["default"])(t)||(0,u["default"])(p))&&(f=(0,r["default"])(t)),(0,i.isHTMLElement)(t)?((h=(0,o["default"])(t,!0)).x+=t.clientLeft,h.y+=t.clientTop):p&&(h.x=(0,c["default"])(p)));return{x:m.left+f.scrollLeft-h.x,y:m.top+f.scrollTop-h.y,width:m.width,height:m.height}};var o=d(n(93529)),r=d(n(62317)),a=d(n(22999)),i=n(1316),c=d(n(54418)),l=d(n(67977)),u=d(n(63383));function d(e){return e&&e.__esModule?e:{"default":e}}},25462:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return(0,r["default"])(e).getComputedStyle(e)};var o,r=(o=n(83808))&&o.__esModule?o:{"default":o}},67977:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return(((0,o.isElement)(e)?e.ownerDocument:e.document)||window.document).documentElement};var o=n(1316)},52779:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t,n=(0,o["default"])(e),l=(0,i["default"])(e),u=null==(t=e.ownerDocument)?void 0:t.body,d=(0,c.max)(n.scrollWidth,n.clientWidth,u?u.scrollWidth:0,u?u.clientWidth:0),s=(0,c.max)(n.scrollHeight,n.clientHeight,u?u.scrollHeight:0,u?u.clientHeight:0),p=-l.scrollLeft+(0,a["default"])(e),m=-l.scrollTop;"rtl"===(0,r["default"])(u||n).direction&&(p+=(0,c.max)(n.clientWidth,u?u.clientWidth:0)-d);return{width:d,height:s,x:p,y:m}};var o=l(n(67977)),r=l(n(25462)),a=l(n(54418)),i=l(n(43581)),c=n(36083);function l(e){return e&&e.__esModule?e:{"default":e}}},66860:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}},62408:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,r["default"])(e),n=e.offsetWidth,o=e.offsetHeight;Math.abs(t.width-n)<=1&&(n=t.width);Math.abs(t.height-o)<=1&&(o=t.height);return{x:e.offsetLeft,y:e.offsetTop,width:n,height:o}};var o,r=(o=n(93529))&&o.__esModule?o:{"default":o}},22999:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return e?(e.nodeName||"").toLowerCase():null}},62317:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return e!==(0,r["default"])(e)&&(0,a.isHTMLElement)(e)?(0,i["default"])(e):(0,o["default"])(e)};var o=c(n(43581)),r=c(n(83808)),a=n(1316),i=c(n(66860));function c(e){return e&&e.__esModule?e:{"default":e}}},95111:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,o["default"])(e),n=d(e);for(;n&&(0,c["default"])(n)&&"static"===(0,a["default"])(n).position;)n=d(n);if(n&&("html"===(0,r["default"])(n)||"body"===(0,r["default"])(n)&&"static"===(0,a["default"])(n).position))return t;return n||function(e){var t=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&(0,i.isHTMLElement)(e)){if("fixed"===(0,a["default"])(e).position)return null}var n=(0,l["default"])(e);for(;(0,i.isHTMLElement)(n)&&["html","body"].indexOf((0,r["default"])(n))<0;){var o=(0,a["default"])(n);if("none"!==o.transform||"none"!==o.perspective||"paint"===o.contain||-1!==["transform","perspective"].indexOf(o.willChange)||t&&"filter"===o.willChange||t&&o.filter&&"none"!==o.filter)return n;n=n.parentNode}return null}(e)||t};var o=u(n(83808)),r=u(n(22999)),a=u(n(25462)),i=n(1316),c=u(n(45574)),l=u(n(62576));function u(e){return e&&e.__esModule?e:{"default":e}}function d(e){return(0,i.isHTMLElement)(e)&&"fixed"!==(0,a["default"])(e).position?e.offsetParent:null}},62576:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){if("html"===(0,o["default"])(e))return e;return e.assignedSlot||e.parentNode||((0,a.isShadowRoot)(e)?e.host:null)||(0,r["default"])(e)};var o=i(n(22999)),r=i(n(67977)),a=n(1316);function i(e){return e&&e.__esModule?e:{"default":e}}},99597:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function l(e){if(["html","body","#document"].indexOf((0,a["default"])(e))>=0)return e.ownerDocument.body;if((0,i.isHTMLElement)(e)&&(0,r["default"])(e))return e;return l((0,o["default"])(e))};var o=c(n(62576)),r=c(n(63383)),a=c(n(22999)),i=n(1316);function c(e){return e&&e.__esModule?e:{"default":e}}},68056:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,o["default"])(e),n=(0,r["default"])(e),i=t.visualViewport,c=n.clientWidth,l=n.clientHeight,u=0,d=0;i&&(c=i.width,l=i.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(u=i.offsetLeft,d=i.offsetTop));return{width:c,height:l,x:u+(0,a["default"])(e),y:d}};var o=i(n(83808)),r=i(n(67977)),a=i(n(54418));function i(e){return e&&e.__esModule?e:{"default":e}}},83808:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}},43581:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,r["default"])(e),n=t.pageXOffset,o=t.pageYOffset;return{scrollLeft:n,scrollTop:o}};var o,r=(o=n(83808))&&o.__esModule?o:{"default":o}},54418:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return(0,o["default"])((0,r["default"])(e)).left+(0,a["default"])(e).scrollLeft};var o=i(n(93529)),r=i(n(67977)),a=i(n(43581));function i(e){return e&&e.__esModule?e:{"default":e}}},1316:function(e,t,n){"use strict";t.__esModule=!0,t.isElement=function(e){var t=(0,r["default"])(e).Element;return e instanceof t||e instanceof Element},t.isHTMLElement=function(e){var t=(0,r["default"])(e).HTMLElement;return e instanceof t||e instanceof HTMLElement},t.isShadowRoot=function(e){if("undefined"==typeof ShadowRoot)return!1;var t=(0,r["default"])(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot};var o,r=(o=n(83808))&&o.__esModule?o:{"default":o}},63383:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,r["default"])(e),n=t.overflow,o=t.overflowX,a=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+a+o)};var o,r=(o=n(25462))&&o.__esModule?o:{"default":o}},45574:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return["table","td","th"].indexOf((0,r["default"])(e))>=0};var o,r=(o=n(22999))&&o.__esModule?o:{"default":o}},39662:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function l(e,t){var n;void 0===t&&(t=[]);var c=(0,o["default"])(e),u=c===(null==(n=e.ownerDocument)?void 0:n.body),d=(0,a["default"])(c),s=u?[d].concat(d.visualViewport||[],(0,i["default"])(c)?c:[]):c,p=t.concat(s);return u?p:p.concat(l((0,r["default"])(s)))};var o=c(n(99597)),r=c(n(62576)),a=c(n(83808)),i=c(n(63383));function c(e){return e&&e.__esModule?e:{"default":e}}},61797:function(e,t){"use strict";t.__esModule=!0,t.modifierPhases=t.afterWrite=t.write=t.beforeWrite=t.afterMain=t.main=t.beforeMain=t.afterRead=t.read=t.beforeRead=t.placements=t.variationPlacements=t.reference=t.popper=t.viewport=t.clippingParents=t.end=t.start=t.basePlacements=t.auto=t.left=t.right=t.bottom=t.top=void 0;t.top="top";var n="bottom";t.bottom=n;var o="right";t.right=o;var r="left";t.left=r;var a="auto";t.auto=a;var i=["top",n,o,r];t.basePlacements=i;var c="start";t.start=c;var l="end";t.end=l;t.clippingParents="clippingParents";t.viewport="viewport";t.popper="popper";t.reference="reference";var u=i.reduce((function(e,t){return e.concat([t+"-"+c,t+"-"+l])}),[]);t.variationPlacements=u;var d=[].concat(i,[a]).reduce((function(e,t){return e.concat([t,t+"-"+c,t+"-"+l])}),[]);t.placements=d;var s="beforeRead";t.beforeRead=s;var p="read";t.read=p;var m="afterRead";t.afterRead=m;var f="beforeMain";t.beforeMain=f;var h="main";t.main=h;var C="afterMain";t.afterMain=C;var g="beforeWrite";t.beforeWrite=g;var b="write";t.write=b;var v="afterWrite";t.afterWrite=v;var N=[s,p,m,f,h,C,g,b,v];t.modifierPhases=N},84195:function(e,t,n){"use strict";t.__esModule=!0;var o={popperGenerator:!0,detectOverflow:!0,createPopperBase:!0,createPopper:!0,createPopperLite:!0};t.createPopperLite=t.createPopper=t.createPopperBase=t.detectOverflow=t.popperGenerator=void 0;var r=n(61797);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(o,e)||e in t&&t[e]===r[e]||(t[e]=r[e]))}));var a=n(16850);Object.keys(a).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(o,e)||e in t&&t[e]===a[e]||(t[e]=a[e]))}));var i=n(36997);t.popperGenerator=i.popperGenerator,t.detectOverflow=i.detectOverflow,t.createPopperBase=i.createPopper;var c=n(38385);t.createPopper=c.createPopper;var l=n(97126);t.createPopperLite=l.createPopper},59028:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var o,r=(o=n(22999))&&o.__esModule?o:{"default":o},a=n(1316);var i={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},o=t.attributes[e]||{},i=t.elements[e];(0,a.isHTMLElement)(i)&&(0,r["default"])(i)&&(Object.assign(i.style,n),Object.keys(o).forEach((function(e){var t=o[e];!1===t?i.removeAttribute(e):i.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var o=t.elements[e],i=t.attributes[e]||{},c=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});(0,a.isHTMLElement)(o)&&(0,r["default"])(o)&&(Object.assign(o.style,c),Object.keys(i).forEach((function(e){o.removeAttribute(e)})))}))}},requires:["computeStyles"]};t["default"]=i},25615:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var o=p(n(91561)),r=p(n(62408)),a=p(n(63171)),i=p(n(95111)),c=p(n(19398)),l=p(n(83158)),u=p(n(2595)),d=p(n(1724)),s=n(61797);n(1316);function p(e){return e&&e.__esModule?e:{"default":e}}var m=function(e,t){return e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e,(0,u["default"])("number"!=typeof e?e:(0,d["default"])(e,s.basePlacements))};var f={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,a=e.name,u=e.options,d=n.elements.arrow,p=n.modifiersData.popperOffsets,f=(0,o["default"])(n.placement),h=(0,c["default"])(f),C=[s.left,s.right].indexOf(f)>=0?"height":"width";if(d&&p){var g=m(u.padding,n),b=(0,r["default"])(d),v="y"===h?s.top:s.left,N="y"===h?s.bottom:s.right,V=n.rects.reference[C]+n.rects.reference[h]-p[h]-n.rects.popper[C],y=p[h]-n.rects.reference[h],_=(0,i["default"])(d),w=_?"y"===h?_.clientHeight||0:_.clientWidth||0:0,k=V/2-y/2,S=g[v],B=w-b[C]-g[N],x=w/2-b[C]/2+k,A=(0,l["default"])(S,x,B),D=h;n.modifiersData[a]=((t={})[D]=A,t.centerOffset=A-x,t)}},effect:function(e){var t=e.state,n=e.options.element,o=void 0===n?"[data-popper-arrow]":n;null!=o&&("string"!=typeof o||(o=t.elements.popper.querySelector(o)))&&(0,a["default"])(t.elements.popper,o)&&(t.elements.arrow=o)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};t["default"]=f},21481:function(e,t,n){"use strict";t.__esModule=!0,t.mapToStyles=p,t["default"]=void 0;var o=n(61797),r=d(n(95111)),a=d(n(83808)),i=d(n(67977)),c=d(n(25462)),l=d(n(91561)),u=n(36083);function d(e){return e&&e.__esModule?e:{"default":e}}var s={top:"auto",right:"auto",bottom:"auto",left:"auto"};function p(e){var t,n=e.popper,l=e.popperRect,d=e.placement,p=e.offsets,m=e.position,f=e.gpuAcceleration,h=e.adaptive,C=e.roundOffsets,g=!0===C?function(e){var t=e.x,n=e.y,o=window.devicePixelRatio||1;return{x:(0,u.round)((0,u.round)(t*o)/o)||0,y:(0,u.round)((0,u.round)(n*o)/o)||0}}(p):"function"==typeof C?C(p):p,b=g.x,v=void 0===b?0:b,N=g.y,V=void 0===N?0:N,y=p.hasOwnProperty("x"),_=p.hasOwnProperty("y"),w=o.left,k=o.top,S=window;if(h){var B=(0,r["default"])(n),x="clientHeight",A="clientWidth";B===(0,a["default"])(n)&&(B=(0,i["default"])(n),"static"!==(0,c["default"])(B).position&&(x="scrollHeight",A="scrollWidth")),d===o.top&&(k=o.bottom,V-=B[x]-l.height,V*=f?1:-1),d===o.left&&(w=o.right,v-=B[A]-l.width,v*=f?1:-1)}var D,L=Object.assign({position:m},h&&s);return f?Object.assign({},L,((D={})[k]=_?"0":"",D[w]=y?"0":"",D.transform=(S.devicePixelRatio||1)<2?"translate("+v+"px, "+V+"px)":"translate3d("+v+"px, "+V+"px, 0)",D)):Object.assign({},L,((t={})[k]=_?V+"px":"",t[w]=y?v+"px":"",t.transform="",t))}var m={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,o=n.gpuAcceleration,r=void 0===o||o,a=n.adaptive,i=void 0===a||a,c=n.roundOffsets,u=void 0===c||c,d={placement:(0,l["default"])(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:r};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,p(Object.assign({},d,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:i,roundOffsets:u})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,p(Object.assign({},d,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:u})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}};t["default"]=m},42325:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var o,r=(o=n(83808))&&o.__esModule?o:{"default":o};var a={passive:!0};var i={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,o=e.options,i=o.scroll,c=void 0===i||i,l=o.resize,u=void 0===l||l,d=(0,r["default"])(t.elements.popper),s=[].concat(t.scrollParents.reference,t.scrollParents.popper);return c&&s.forEach((function(e){e.addEventListener("scroll",n.update,a)})),u&&d.addEventListener("resize",n.update,a),function(){c&&s.forEach((function(e){e.removeEventListener("scroll",n.update,a)})),u&&d.removeEventListener("resize",n.update,a)}},data:{}};t["default"]=i},56159:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var o=d(n(86141)),r=d(n(91561)),a=d(n(10404)),i=d(n(63308)),c=d(n(97396)),l=n(61797),u=d(n(26992));function d(e){return e&&e.__esModule?e:{"default":e}}var s={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,d=e.name;if(!t.modifiersData[d]._skip){for(var s=n.mainAxis,p=void 0===s||s,m=n.altAxis,f=void 0===m||m,h=n.fallbackPlacements,C=n.padding,g=n.boundary,b=n.rootBoundary,v=n.altBoundary,N=n.flipVariations,V=void 0===N||N,y=n.allowedAutoPlacements,_=t.options.placement,w=(0,r["default"])(_),k=h||(w===_||!V?[(0,o["default"])(_)]:function(e){if((0,r["default"])(e)===l.auto)return[];var t=(0,o["default"])(e);return[(0,a["default"])(e),t,(0,a["default"])(t)]}(_)),S=[_].concat(k).reduce((function(e,n){return e.concat((0,r["default"])(n)===l.auto?(0,c["default"])(t,{placement:n,boundary:g,rootBoundary:b,padding:C,flipVariations:V,allowedAutoPlacements:y}):n)}),[]),B=t.rects.reference,x=t.rects.popper,A=new Map,D=!0,L=S[0],E=0;E=0,M=O?"width":"height",P=(0,i["default"])(t,{placement:T,boundary:g,rootBoundary:b,altBoundary:v,padding:C}),R=O?F?l.right:l.left:F?l.bottom:l.top;B[M]>x[M]&&(R=(0,o["default"])(R));var j=(0,o["default"])(R),W=[];if(p&&W.push(P[I]<=0),f&&W.push(P[R]<=0,P[j]<=0),W.every((function(e){return e}))){L=T,D=!1;break}A.set(T,W)}if(D)for(var z=function(e){var t=S.find((function(t){var n=A.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return L=t,"break"},U=V?3:1;U>0;U--){if("break"===z(U))break}t.placement!==L&&(t.modifiersData[d]._skip=!0,t.placement=L,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};t["default"]=s},408:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var o,r=n(61797),a=(o=n(63308))&&o.__esModule?o:{"default":o};function i(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function c(e){return[r.top,r.right,r.bottom,r.left].some((function(t){return e[t]>=0}))}var l={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,o=t.rects.reference,r=t.rects.popper,l=t.modifiersData.preventOverflow,u=(0,a["default"])(t,{elementContext:"reference"}),d=(0,a["default"])(t,{altBoundary:!0}),s=i(u,o),p=i(d,r,l),m=c(s),f=c(p);t.modifiersData[n]={referenceClippingOffsets:s,popperEscapeOffsets:p,isReferenceHidden:m,hasPopperEscaped:f},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":m,"data-popper-escaped":f})}};t["default"]=l},16850:function(e,t,n){"use strict";t.__esModule=!0,t.preventOverflow=t.popperOffsets=t.offset=t.hide=t.flip=t.eventListeners=t.computeStyles=t.arrow=t.applyStyles=void 0;var o=p(n(59028));t.applyStyles=o["default"];var r=p(n(25615));t.arrow=r["default"];var a=p(n(21481));t.computeStyles=a["default"];var i=p(n(42325));t.eventListeners=i["default"];var c=p(n(56159));t.flip=c["default"];var l=p(n(408));t.hide=l["default"];var u=p(n(62167));t.offset=u["default"];var d=p(n(56496));t.popperOffsets=d["default"];var s=p(n(458));function p(e){return e&&e.__esModule?e:{"default":e}}t.preventOverflow=s["default"]},62167:function(e,t,n){"use strict";t.__esModule=!0,t.distanceAndSkiddingToXY=i,t["default"]=void 0;var o,r=(o=n(91561))&&o.__esModule?o:{"default":o},a=n(61797);function i(e,t,n){var o=(0,r["default"])(e),i=[a.left,a.top].indexOf(o)>=0?-1:1,c="function"==typeof n?n(Object.assign({},t,{placement:e})):n,l=c[0],u=c[1];return l=l||0,u=(u||0)*i,[a.left,a.right].indexOf(o)>=0?{x:u,y:l}:{x:l,y:u}}var c={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,o=e.name,r=n.offset,c=void 0===r?[0,0]:r,l=a.placements.reduce((function(e,n){return e[n]=i(n,t.rects,c),e}),{}),u=l[t.placement],d=u.x,s=u.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=d,t.modifiersData.popperOffsets.y+=s),t.modifiersData[o]=l}};t["default"]=c},56496:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var o,r=(o=n(38138))&&o.__esModule?o:{"default":o};var a={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=(0,r["default"])({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}};t["default"]=a},458:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var o=n(61797),r=f(n(91561)),a=f(n(19398)),i=f(n(81367)),c=f(n(83158)),l=f(n(62408)),u=f(n(95111)),d=f(n(63308)),s=f(n(26992)),p=f(n(15565)),m=n(36083);function f(e){return e&&e.__esModule?e:{"default":e}}var h={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,f=e.name,h=n.mainAxis,C=void 0===h||h,g=n.altAxis,b=void 0!==g&&g,v=n.boundary,N=n.rootBoundary,V=n.altBoundary,y=n.padding,_=n.tether,w=void 0===_||_,k=n.tetherOffset,S=void 0===k?0:k,B=(0,d["default"])(t,{boundary:v,rootBoundary:N,padding:y,altBoundary:V}),x=(0,r["default"])(t.placement),A=(0,s["default"])(t.placement),D=!A,L=(0,a["default"])(x),E=(0,i["default"])(L),T=t.modifiersData.popperOffsets,I=t.rects.reference,F=t.rects.popper,O="function"==typeof S?S(Object.assign({},t.rects,{placement:t.placement})):S,M={x:0,y:0};if(T){if(C||b){var P="y"===L?o.top:o.left,R="y"===L?o.bottom:o.right,j="y"===L?"height":"width",W=T[L],z=T[L]+B[P],U=T[L]-B[R],K=w?-F[j]/2:0,H=A===o.start?I[j]:F[j],G=A===o.start?-F[j]:-I[j],Y=t.elements.arrow,q=w&&Y?(0,l["default"])(Y):{width:0,height:0},$=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:(0,p["default"])(),Q=$[P],J=$[R],Z=(0,c["default"])(0,I[j],q[j]),X=D?I[j]/2-K-Z-Q-O:H-Z-Q-O,ee=D?-I[j]/2+K+Z+J+O:G+Z+J+O,te=t.elements.arrow&&(0,u["default"])(t.elements.arrow),ne=te?"y"===L?te.clientTop||0:te.clientLeft||0:0,oe=t.modifiersData.offset?t.modifiersData.offset[t.placement][L]:0,re=T[L]+X-oe-ne,ae=T[L]+ee-oe;if(C){var ie=(0,c["default"])(w?(0,m.min)(z,re):z,W,w?(0,m.max)(U,ae):U);T[L]=ie,M[L]=ie-W}if(b){var ce="x"===L?o.top:o.left,le="x"===L?o.bottom:o.right,ue=T[E],de=ue+B[ce],se=ue-B[le],pe=(0,c["default"])(w?(0,m.min)(de,re):de,ue,w?(0,m.max)(se,ae):se);T[E]=pe,M[E]=pe-ue}}t.modifiersData[f]=M}},requiresIfExists:["offset"]};t["default"]=h},97126:function(e,t,n){"use strict";t.__esModule=!0,t.defaultModifiers=t.createPopper=void 0;var o=n(36997);t.popperGenerator=o.popperGenerator,t.detectOverflow=o.detectOverflow;var r=l(n(42325)),a=l(n(56496)),i=l(n(21481)),c=l(n(59028));function l(e){return e&&e.__esModule?e:{"default":e}}var u=[r["default"],a["default"],i["default"],c["default"]];t.defaultModifiers=u;var d=(0,o.popperGenerator)({defaultModifiers:u});t.createPopper=d},38385:function(e,t,n){"use strict";t.__esModule=!0;var o={createPopper:!0,createPopperLite:!0,defaultModifiers:!0,popperGenerator:!0,detectOverflow:!0};t.defaultModifiers=t.createPopperLite=t.createPopper=void 0;var r=n(36997);t.popperGenerator=r.popperGenerator,t.detectOverflow=r.detectOverflow;var a=C(n(42325)),i=C(n(56496)),c=C(n(21481)),l=C(n(59028)),u=C(n(62167)),d=C(n(56159)),s=C(n(458)),p=C(n(25615)),m=C(n(408)),f=n(97126);t.createPopperLite=f.createPopper;var h=n(16850);function C(e){return e&&e.__esModule?e:{"default":e}}Object.keys(h).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(o,e)||e in t&&t[e]===h[e]||(t[e]=h[e]))}));var g=[a["default"],i["default"],c["default"],l["default"],u["default"],d["default"],s["default"],p["default"],m["default"]];t.defaultModifiers=g;var b=(0,r.popperGenerator)({defaultModifiers:g});t.createPopperLite=t.createPopper=b},97396:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t){void 0===t&&(t={});var n=t,c=n.placement,l=n.boundary,u=n.rootBoundary,d=n.padding,s=n.flipVariations,p=n.allowedAutoPlacements,m=void 0===p?r.placements:p,f=(0,o["default"])(c),h=f?s?r.variationPlacements:r.variationPlacements.filter((function(e){return(0,o["default"])(e)===f})):r.basePlacements,C=h.filter((function(e){return m.indexOf(e)>=0}));0===C.length&&(C=h);var g=C.reduce((function(t,n){return t[n]=(0,a["default"])(e,{placement:n,boundary:l,rootBoundary:u,padding:d})[(0,i["default"])(n)],t}),{});return Object.keys(g).sort((function(e,t){return g[e]-g[t]}))};var o=c(n(26992)),r=n(61797),a=c(n(63308)),i=c(n(91561));function c(e){return e&&e.__esModule?e:{"default":e}}},38138:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t,n=e.reference,c=e.element,l=e.placement,u=l?(0,o["default"])(l):null,d=l?(0,r["default"])(l):null,s=n.x+n.width/2-c.width/2,p=n.y+n.height/2-c.height/2;switch(u){case i.top:t={x:s,y:n.y-c.height};break;case i.bottom:t={x:s,y:n.y+n.height};break;case i.right:t={x:n.x+n.width,y:p};break;case i.left:t={x:n.x-c.width,y:p};break;default:t={x:n.x,y:n.y}}var m=u?(0,a["default"])(u):null;if(null!=m){var f="y"===m?"height":"width";switch(d){case i.start:t[m]=t[m]-(n[f]/2-c[f]/2);break;case i.end:t[m]=t[m]+(n[f]/2-c[f]/2)}}return t};var o=c(n(91561)),r=c(n(26992)),a=c(n(19398)),i=n(61797);function c(e){return e&&e.__esModule?e:{"default":e}}},17850:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){var t;return function(){return t||(t=new Promise((function(n){Promise.resolve().then((function(){t=undefined,n(e())}))}))),t}}},63308:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t){void 0===t&&(t={});var n=t,p=n.placement,m=void 0===p?e.placement:p,f=n.boundary,h=void 0===f?l.clippingParents:f,C=n.rootBoundary,g=void 0===C?l.viewport:C,b=n.elementContext,v=void 0===b?l.popper:b,N=n.altBoundary,V=void 0!==N&&N,y=n.padding,_=void 0===y?0:y,w=(0,d["default"])("number"!=typeof _?_:(0,s["default"])(_,l.basePlacements)),k=v===l.popper?l.reference:l.popper,S=e.elements.reference,B=e.rects.popper,x=e.elements[V?k:v],A=(0,r["default"])((0,u.isElement)(x)?x:x.contextElement||(0,a["default"])(e.elements.popper),h,g),D=(0,o["default"])(S),L=(0,i["default"])({reference:D,element:B,strategy:"absolute",placement:m}),E=(0,c["default"])(Object.assign({},B,L)),T=v===l.popper?E:D,I={top:A.top-T.top+w.top,bottom:T.bottom-A.bottom+w.bottom,left:A.left-T.left+w.left,right:T.right-A.right+w.right},F=e.modifiersData.offset;if(v===l.popper&&F){var O=F[m];Object.keys(I).forEach((function(e){var t=[l.right,l.bottom].indexOf(e)>=0?1:-1,n=[l.top,l.bottom].indexOf(e)>=0?"y":"x";I[e]+=O[n]*t}))}return I};var o=p(n(93529)),r=p(n(76416)),a=p(n(67977)),i=p(n(38138)),c=p(n(24955)),l=n(61797),u=n(1316),d=p(n(2595)),s=p(n(1724));function p(e){return e&&e.__esModule?e:{"default":e}}},1724:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}},62630:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o=0?"x":"y"}},86141:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return e.replace(/left|right|bottom|top/g,(function(e){return n[e]}))};var n={left:"right",right:"left",bottom:"top",top:"bottom"}},10404:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return e.replace(/start|end/g,(function(e){return n[e]}))};var n={start:"end",end:"start"}},26992:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return e.split("-")[1]}},36083:function(e,t){"use strict";t.__esModule=!0,t.round=t.min=t.max=void 0;var n=Math.max;t.max=n;var o=Math.min;t.min=o;var r=Math.round;t.round=r},13043:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){var t=e.reduce((function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e}),{});return Object.keys(t).map((function(e){return t[e]}))}},2595:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return Object.assign({},(0,r["default"])(),e)};var o,r=(o=n(15565))&&o.__esModule?o:{"default":o}},23967:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=function(e){var t=new Map,n=new Set,o=[];function r(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var o=t.get(e);o&&r(o)}})),o.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||r(e)})),o}(e);return o.modifierPhases.reduce((function(e,n){return e.concat(t.filter((function(e){return e.phase===n})))}),[])};var o=n(61797)},24955:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}},6559:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e,t){var n=new Set;return e.filter((function(e){var o=t(e);if(!n.has(o))return n.add(o),!0}))}},23849:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){e.forEach((function(t){Object.keys(t).forEach((function(n){switch(n){case"name":t.name;break;case"enabled":t.enabled;case"phase":r.modifierPhases.indexOf(t.phase);break;case"fn":t.fn;break;case"effect":t.effect;break;case"requires":Array.isArray(t.requires);break;case"requiresIfExists":Array.isArray(t.requiresIfExists)}t.requires&&t.requires.forEach((function(t){e.find((function(e){return e.name===t}))}))}))}))};(o=n(62630))&&o.__esModule;var o,r=n(61797)},83158:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t,n){return(0,o.max)(e,(0,o.min)(t,n))};var o=n(36083)},52726:function(e){"use strict";e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},91254:function(e,t,n){"use strict";var o=n(81662);e.exports=function(e){if(!o(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},26817:function(e,t,n){"use strict";var o=n(20839),r=n(49500),a=n(81965),i=o("unscopables"),c=Array.prototype;c[i]==undefined&&a.f(c,i,{configurable:!0,value:r(null)}),e.exports=function(e){c[i][e]=!0}},84249:function(e,t,n){"use strict";var o=n(70219).charAt;e.exports=function(e,t,n){return t+(n?o(e,t).length:1)}},62147:function(e){"use strict";e.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},90155:function(e,t,n){"use strict";var o=n(81662);e.exports=function(e){if(!o(e))throw TypeError(String(e)+" is not an object");return e}},38536:function(e){"use strict";e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},46024:function(e,t,n){"use strict";var o,r,a,i=n(38536),c=n(54408),l=n(29071),u=n(81662),d=n(83122),s=n(42287),p=n(95479),m=n(51414),f=n(81965).f,h=n(87263),C=n(99099),g=n(20839),b=n(58060),v=l.Int8Array,N=v&&v.prototype,V=l.Uint8ClampedArray,y=V&&V.prototype,_=v&&h(v),w=N&&h(N),k=Object.prototype,S=k.isPrototypeOf,B=g("toStringTag"),x=b("TYPED_ARRAY_TAG"),A=b("TYPED_ARRAY_CONSTRUCTOR"),D=i&&!!C&&"Opera"!==s(l.opera),L=!1,E={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},T={BigInt64Array:8,BigUint64Array:8},I=function(e){if(!u(e))return!1;var t=s(e);return"DataView"===t||d(E,t)||d(T,t)},F=function(e){if(!u(e))return!1;var t=s(e);return d(E,t)||d(T,t)};for(o in E)(a=(r=l[o])&&r.prototype)?p(a,A,r):D=!1;for(o in T)(a=(r=l[o])&&r.prototype)&&p(a,A,r);if((!D||"function"!=typeof _||_===Function.prototype)&&(_=function(){throw TypeError("Incorrect invocation")},D))for(o in E)l[o]&&C(l[o],_);if((!D||!w||w===k)&&(w=_.prototype,D))for(o in E)l[o]&&C(l[o].prototype,w);if(D&&h(y)!==w&&C(y,w),c&&!d(w,B))for(o in L=!0,f(w,B,{get:function(){return u(this)?this[x]:undefined}}),E)l[o]&&p(l[o],x,o);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:D,TYPED_ARRAY_CONSTRUCTOR:A,TYPED_ARRAY_TAG:L&&x,aTypedArray:function(e){if(F(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(C&&!S.call(_,e))throw TypeError("Target is not a typed array constructor");return e},exportTypedArrayMethod:function(e,t,n){if(c){if(n)for(var o in E){var r=l[o];if(r&&d(r.prototype,e))try{delete r.prototype[e]}catch(a){}}w[e]&&!n||m(w,e,n?t:D&&N[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var o,r;if(c){if(C){if(n)for(o in E)if((r=l[o])&&d(r,e))try{delete r[e]}catch(a){}if(_[e]&&!n)return;try{return m(_,e,n?t:D&&_[e]||t)}catch(a){}}for(o in E)!(r=l[o])||r[e]&&!n||m(r,e,t)}},isView:I,isTypedArray:F,TypedArray:_,TypedArrayPrototype:w}},14374:function(e,t,n){"use strict";var o=n(29071),r=n(54408),a=n(38536),i=n(95479),c=n(46360),l=n(46203),u=n(62147),d=n(54026),s=n(46330),p=n(21332),m=n(33830),f=n(87263),h=n(99099),C=n(6628).f,g=n(81965).f,b=n(21657),v=n(72843),N=n(48441),V=N.get,y=N.set,_="ArrayBuffer",w="DataView",k="Wrong index",S=o.ArrayBuffer,B=S,x=o.DataView,A=x&&x.prototype,D=Object.prototype,L=o.RangeError,E=m.pack,T=m.unpack,I=function(e){return[255&e]},F=function(e){return[255&e,e>>8&255]},O=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},M=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},P=function(e){return E(e,23,4)},R=function(e){return E(e,52,8)},j=function(e,t){g(e.prototype,t,{get:function(){return V(this)[t]}})},W=function(e,t,n,o){var r=p(n),a=V(e);if(r+t>a.byteLength)throw L(k);var i=V(a.buffer).bytes,c=r+a.byteOffset,l=i.slice(c,c+t);return o?l:l.reverse()},z=function(e,t,n,o,r,a){var i=p(n),c=V(e);if(i+t>c.byteLength)throw L(k);for(var l=V(c.buffer).bytes,u=i+c.byteOffset,d=o(+r),s=0;sG;)(U=H[G++])in B||i(B,U,S[U]);K.constructor=B}h&&f(A)!==D&&h(A,D);var Y=new x(new B(2)),q=A.setInt8;Y.setInt8(0,2147483648),Y.setInt8(1,2147483649),!Y.getInt8(0)&&Y.getInt8(1)||c(A,{setInt8:function(e,t){q.call(this,e,t<<24>>24)},setUint8:function(e,t){q.call(this,e,t<<24>>24)}},{unsafe:!0})}else B=function(e){u(this,B,_);var t=p(e);y(this,{bytes:b.call(new Array(t),0),byteLength:t}),r||(this.byteLength=t)},x=function(e,t,n){u(this,x,w),u(e,B,w);var o=V(e).byteLength,a=d(t);if(a<0||a>o)throw L("Wrong offset");if(a+(n=n===undefined?o-a:s(n))>o)throw L("Wrong length");y(this,{buffer:e,byteLength:n,byteOffset:a}),r||(this.buffer=e,this.byteLength=n,this.byteOffset=a)},r&&(j(B,"byteLength"),j(x,"buffer"),j(x,"byteLength"),j(x,"byteOffset")),c(x.prototype,{getInt8:function(e){return W(this,1,e)[0]<<24>>24},getUint8:function(e){return W(this,1,e)[0]},getInt16:function(e){var t=W(this,2,e,arguments.length>1?arguments[1]:undefined);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=W(this,2,e,arguments.length>1?arguments[1]:undefined);return t[1]<<8|t[0]},getInt32:function(e){return M(W(this,4,e,arguments.length>1?arguments[1]:undefined))},getUint32:function(e){return M(W(this,4,e,arguments.length>1?arguments[1]:undefined))>>>0},getFloat32:function(e){return T(W(this,4,e,arguments.length>1?arguments[1]:undefined),23)},getFloat64:function(e){return T(W(this,8,e,arguments.length>1?arguments[1]:undefined),52)},setInt8:function(e,t){z(this,1,e,I,t)},setUint8:function(e,t){z(this,1,e,I,t)},setInt16:function(e,t){z(this,2,e,F,t,arguments.length>2?arguments[2]:undefined)},setUint16:function(e,t){z(this,2,e,F,t,arguments.length>2?arguments[2]:undefined)},setInt32:function(e,t){z(this,4,e,O,t,arguments.length>2?arguments[2]:undefined)},setUint32:function(e,t){z(this,4,e,O,t,arguments.length>2?arguments[2]:undefined)},setFloat32:function(e,t){z(this,4,e,P,t,arguments.length>2?arguments[2]:undefined)},setFloat64:function(e,t){z(this,8,e,R,t,arguments.length>2?arguments[2]:undefined)}});v(B,_),v(x,w),e.exports={ArrayBuffer:B,DataView:x}},84705:function(e,t,n){"use strict";var o=n(45009),r=n(97094),a=n(46330),i=Math.min;e.exports=[].copyWithin||function(e,t){var n=o(this),c=a(n.length),l=r(e,c),u=r(t,c),d=arguments.length>2?arguments[2]:undefined,s=i((d===undefined?c:r(d,c))-u,c-l),p=1;for(u0;)u in n?n[l]=n[u]:delete n[l],l+=p,u+=p;return n}},21657:function(e,t,n){"use strict";var o=n(45009),r=n(97094),a=n(46330);e.exports=function(e){for(var t=o(this),n=a(t.length),i=arguments.length,c=r(i>1?arguments[1]:undefined,n),l=i>2?arguments[2]:undefined,u=l===undefined?n:r(l,n);u>c;)t[c++]=e;return t}},49751:function(e,t,n){"use strict";var o=n(78969).forEach,r=n(57978)("forEach");e.exports=r?[].forEach:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}},15886:function(e){"use strict";e.exports=function(e,t){for(var n=0,o=t.length,r=new e(o);o>n;)r[n]=t[n++];return r}},34192:function(e,t,n){"use strict";var o=n(77348),r=n(45009),a=n(32603),i=n(64453),c=n(46330),l=n(18996),u=n(39423);e.exports=function(e){var t,n,d,s,p,m,f=r(e),h="function"==typeof this?this:Array,C=arguments.length,g=C>1?arguments[1]:undefined,b=g!==undefined,v=u(f),N=0;if(b&&(g=o(g,C>2?arguments[2]:undefined,2)),v==undefined||h==Array&&i(v))for(n=new h(t=c(f.length));t>N;N++)m=b?g(f[N],N):f[N],l(n,N,m);else for(p=(s=v.call(f)).next,n=new h;!(d=p.call(s)).done;N++)m=b?a(s,g,[d.value,N],!0):d.value,l(n,N,m);return n.length=N,n}},35957:function(e,t,n){"use strict";var o=n(10961),r=n(46330),a=n(97094),i=function(e){return function(t,n,i){var c,l=o(t),u=r(l.length),d=a(i,u);if(e&&n!=n){for(;u>d;)if((c=l[d++])!=c)return!0}else for(;u>d;d++)if((e||d in l)&&l[d]===n)return e||d||0;return!e&&-1}};e.exports={includes:i(!0),indexOf:i(!1)}},78969:function(e,t,n){"use strict";var o=n(77348),r=n(27371),a=n(45009),i=n(46330),c=n(87257),l=[].push,u=function(e){var t=1==e,n=2==e,u=3==e,d=4==e,s=6==e,p=7==e,m=5==e||s;return function(f,h,C,g){for(var b,v,N=a(f),V=r(N),y=o(h,C,3),_=i(V.length),w=0,k=g||c,S=t?k(f,_):n||p?k(f,0):undefined;_>w;w++)if((m||w in V)&&(v=y(b=V[w],w,N),e))if(t)S[w]=v;else if(v)switch(e){case 3:return!0;case 5:return b;case 6:return w;case 2:l.call(S,b)}else switch(e){case 4:return!1;case 7:l.call(S,b)}return s?-1:u||d?d:S}};e.exports={forEach:u(0),map:u(1),filter:u(2),some:u(3),every:u(4),find:u(5),findIndex:u(6),filterReject:u(7)}},65975:function(e,t,n){"use strict";var o=n(10961),r=n(54026),a=n(46330),i=n(57978),c=Math.min,l=[].lastIndexOf,u=!!l&&1/[1].lastIndexOf(1,-0)<0,d=i("lastIndexOf"),s=u||!d;e.exports=s?function(e){if(u)return l.apply(this,arguments)||0;var t=o(this),n=a(t.length),i=n-1;for(arguments.length>1&&(i=c(i,r(arguments[1]))),i<0&&(i=n+i);i>=0;i--)if(i in t&&t[i]===e)return i||0;return-1}:l},71721:function(e,t,n){"use strict";var o=n(46203),r=n(20839),a=n(95336),i=r("species");e.exports=function(e){return a>=51||!o((function(){var t=[];return(t.constructor={})[i]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},57978:function(e,t,n){"use strict";var o=n(46203);e.exports=function(e,t){var n=[][e];return!!n&&o((function(){n.call(null,t||function(){throw 1},1)}))}},97402:function(e,t,n){"use strict";var o=n(52726),r=n(45009),a=n(27371),i=n(46330),c=function(e){return function(t,n,c,l){o(n);var u=r(t),d=a(u),s=i(u.length),p=e?s-1:0,m=e?-1:1;if(c<2)for(;;){if(p in d){l=d[p],p+=m;break}if(p+=m,e?p<0:s<=p)throw TypeError("Reduce of empty array with no initial value")}for(;e?p>=0:s>p;p+=m)p in d&&(l=n(l,d[p],p,u));return l}};e.exports={left:c(!1),right:c(!0)}},85492:function(e){"use strict";var t=Math.floor,n=function(e,t){for(var n,o,r=e.length,a=1;a0;)e[o]=e[--o];o!==a++&&(e[o]=n)}return e},o=function(e,t,n){for(var o=e.length,r=t.length,a=0,i=0,c=[];a1?arguments[1]:undefined,3);t=t?t.next:n.first;)for(o(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!g(this,e)}}),a(d.prototype,n?{get:function(e){var t=g(this,e);return t&&t.value},set:function(e,t){return C(this,0===e?0:e,t)}}:{add:function(e){return C(this,e=0===e?0:e,e)}}),s&&o(d.prototype,"size",{get:function(){return m(this).size}}),d},setStrong:function(e,t,n){var o=t+" Iterator",r=h(t),a=h(o);u(e,t,(function(e,t){f(this,{type:o,target:e,state:r(e),kind:t,last:undefined})}),(function(){for(var e=a(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?"keys"==t?{value:n.key,done:!1}:"values"==t?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(e.target=undefined,{value:undefined,done:!0})}),n?"entries":"values",!n,!0),d(t)}}},6789:function(e,t,n){"use strict";var o=n(46360),r=n(88511).getWeakData,a=n(90155),i=n(81662),c=n(62147),l=n(1464),u=n(78969),d=n(83122),s=n(48441),p=s.set,m=s.getterFor,f=u.find,h=u.findIndex,C=0,g=function(e){return e.frozen||(e.frozen=new b)},b=function(){this.entries=[]},v=function(e,t){return f(e.entries,(function(e){return e[0]===t}))};b.prototype={get:function(e){var t=v(this,e);if(t)return t[1]},has:function(e){return!!v(this,e)},set:function(e,t){var n=v(this,e);n?n[1]=t:this.entries.push([e,t])},"delete":function(e){var t=h(this.entries,(function(t){return t[0]===e}));return~t&&this.entries.splice(t,1),!!~t}},e.exports={getConstructor:function(e,t,n,u){var s=e((function(e,o){c(e,s,t),p(e,{type:t,id:C++,frozen:undefined}),o!=undefined&&l(o,e[u],{that:e,AS_ENTRIES:n})})),f=m(t),h=function(e,t,n){var o=f(e),i=r(a(t),!0);return!0===i?g(o).set(t,n):i[o.id]=n,e};return o(s.prototype,{"delete":function(e){var t=f(this);if(!i(e))return!1;var n=r(e);return!0===n?g(t)["delete"](e):n&&d(n,t.id)&&delete n[t.id]},has:function(e){var t=f(this);if(!i(e))return!1;var n=r(e);return!0===n?g(t).has(e):n&&d(n,t.id)}}),o(s.prototype,n?{get:function(e){var t=f(this);if(i(e)){var n=r(e);return!0===n?g(t).get(e):n?n[t.id]:undefined}},set:function(e,t){return h(this,e,t)}}:{add:function(e){return h(this,e,!0)}}),s}}},37488:function(e,t,n){"use strict";var o=n(70850),r=n(29071),a=n(17600),i=n(51414),c=n(88511),l=n(1464),u=n(62147),d=n(81662),s=n(46203),p=n(61504),m=n(72843),f=n(50843);e.exports=function(e,t,n){var h=-1!==e.indexOf("Map"),C=-1!==e.indexOf("Weak"),g=h?"set":"add",b=r[e],v=b&&b.prototype,N=b,V={},y=function(e){var t=v[e];i(v,e,"add"==e?function(e){return t.call(this,0===e?0:e),this}:"delete"==e?function(e){return!(C&&!d(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return C&&!d(e)?undefined:t.call(this,0===e?0:e)}:"has"==e?function(e){return!(C&&!d(e))&&t.call(this,0===e?0:e)}:function(e,n){return t.call(this,0===e?0:e,n),this})};if(a(e,"function"!=typeof b||!(C||v.forEach&&!s((function(){(new b).entries().next()})))))N=n.getConstructor(t,e,h,g),c.enable();else if(a(e,!0)){var _=new N,w=_[g](C?{}:-0,1)!=_,k=s((function(){_.has(1)})),S=p((function(e){new b(e)})),B=!C&&s((function(){for(var e=new b,t=5;t--;)e[g](t,t);return!e.has(-0)}));S||((N=t((function(t,n){u(t,N,e);var o=f(new b,t,N);return n!=undefined&&l(n,o[g],{that:o,AS_ENTRIES:h}),o}))).prototype=v,v.constructor=N),(k||B)&&(y("delete"),y("has"),h&&y("get")),(B||w)&&y(g),C&&v.clear&&delete v.clear}return V[e]=N,o({global:!0,forced:N!=b},V),m(N,e),C||n.setStrong(N,e,h),N}},9088:function(e,t,n){"use strict";var o=n(83122),r=n(11475),a=n(77415),i=n(81965);e.exports=function(e,t){for(var n=r(t),c=i.f,l=a.f,u=0;u"+c+""}},89750:function(e,t,n){"use strict";var o=n(53637).IteratorPrototype,r=n(49500),a=n(66856),i=n(72843),c=n(63913),l=function(){return this};e.exports=function(e,t,n){var u=t+" Iterator";return e.prototype=r(o,{next:a(1,n)}),i(e,u,!1,!0),c[u]=l,e}},95479:function(e,t,n){"use strict";var o=n(54408),r=n(81965),a=n(66856);e.exports=o?function(e,t,n){return r.f(e,t,a(1,n))}:function(e,t,n){return e[t]=n,e}},66856:function(e){"use strict";e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},18996:function(e,t,n){"use strict";var o=n(86997),r=n(81965),a=n(66856);e.exports=function(e,t,n){var i=o(t);i in e?r.f(e,i,a(0,n)):e[i]=n}},11216:function(e,t,n){"use strict";var o=n(46203),r=n(77169).start,a=Math.abs,i=Date.prototype,c=i.getTime,l=i.toISOString;e.exports=o((function(){return"0385-07-25T07:06:39.999Z"!=l.call(new Date(-50000000000001))}))||!o((function(){l.call(new Date(NaN))}))?function(){if(!isFinite(c.call(this)))throw RangeError("Invalid time value");var e=this,t=e.getUTCFullYear(),n=e.getUTCMilliseconds(),o=t<0?"-":t>9999?"+":"";return o+r(a(t),o?6:4,0)+"-"+r(e.getUTCMonth()+1,2,0)+"-"+r(e.getUTCDate(),2,0)+"T"+r(e.getUTCHours(),2,0)+":"+r(e.getUTCMinutes(),2,0)+":"+r(e.getUTCSeconds(),2,0)+"."+r(n,3,0)+"Z"}:l},62812:function(e,t,n){"use strict";var o=n(90155),r=n(17762);e.exports=function(e){if(o(this),"string"===e||"default"===e)e="string";else if("number"!==e)throw TypeError("Incorrect hint");return r(this,e)}},54934:function(e,t,n){"use strict";var o=n(70850),r=n(89750),a=n(87263),i=n(99099),c=n(72843),l=n(95479),u=n(51414),d=n(20839),s=n(80591),p=n(63913),m=n(53637),f=m.IteratorPrototype,h=m.BUGGY_SAFARI_ITERATORS,C=d("iterator"),g="keys",b="values",v="entries",N=function(){return this};e.exports=function(e,t,n,d,m,V,y){r(n,t,d);var _,w,k,S=function(e){if(e===m&&L)return L;if(!h&&e in A)return A[e];switch(e){case g:case b:case v:return function(){return new n(this,e)}}return function(){return new n(this)}},B=t+" Iterator",x=!1,A=e.prototype,D=A[C]||A["@@iterator"]||m&&A[m],L=!h&&D||S(m),E="Array"==t&&A.entries||D;if(E&&(_=a(E.call(new e)),f!==Object.prototype&&_.next&&(s||a(_)===f||(i?i(_,f):"function"!=typeof _[C]&&l(_,C,N)),c(_,B,!0,!0),s&&(p[B]=N))),m==b&&D&&D.name!==b&&(x=!0,L=function(){return D.call(this)}),s&&!y||A[C]===L||l(A,C,L),p[t]=L,m)if(w={values:S(b),keys:V?L:S(g),entries:S(v)},y)for(k in w)(h||x||!(k in A))&&u(A,k,w[k]);else o({target:t,proto:!0,forced:h||x},w);return w}},34899:function(e,t,n){"use strict";var o=n(82155),r=n(83122),a=n(78131),i=n(81965).f;e.exports=function(e){var t=o.Symbol||(o.Symbol={});r(t,e)||i(t,e,{value:a.f(e)})}},54408:function(e,t,n){"use strict";var o=n(46203);e.exports=!o((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},939:function(e,t,n){"use strict";var o=n(29071),r=n(81662),a=o.document,i=r(a)&&r(a.createElement);e.exports=function(e){return i?a.createElement(e):{}}},69238:function(e,t,n){"use strict";var o=n(68548).match(/firefox\/(\d+)/i);e.exports=!!o&&+o[1]},45158:function(e){"use strict";e.exports="object"==typeof window},85342:function(e,t,n){"use strict";var o=n(68548);e.exports=/MSIE|Trident/.test(o)},10064:function(e,t,n){"use strict";var o=n(68548),r=n(29071);e.exports=/iphone|ipod|ipad/i.test(o)&&r.Pebble!==undefined},33459:function(e,t,n){"use strict";var o=n(68548);e.exports=/(?:iphone|ipod|ipad).*applewebkit/i.test(o)},12396:function(e,t,n){"use strict";var o=n(87684),r=n(29071);e.exports="process"==o(r.process)},45521:function(e,t,n){"use strict";var o=n(68548);e.exports=/web0s(?!.*chrome)/i.test(o)},68548:function(e,t,n){"use strict";var o=n(54883);e.exports=o("navigator","userAgent")||""},95336:function(e,t,n){"use strict";var o,r,a=n(29071),i=n(68548),c=a.process,l=a.Deno,u=c&&c.versions||l&&l.version,d=u&&u.v8;d?r=(o=d.split("."))[0]<4?1:o[0]+o[1]:i&&(!(o=i.match(/Edge\/(\d+)/))||o[1]>=74)&&(o=i.match(/Chrome\/(\d+)/))&&(r=o[1]),e.exports=r&&+r},5556:function(e,t,n){"use strict";var o=n(68548).match(/AppleWebKit\/(\d+)\./);e.exports=!!o&&+o[1]},17195:function(e){"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},70850:function(e,t,n){"use strict";var o=n(29071),r=n(77415).f,a=n(95479),i=n(51414),c=n(97952),l=n(9088),u=n(17600);e.exports=function(e,t){var n,d,s,p,m,f=e.target,h=e.global,C=e.stat;if(n=h?o:C?o[f]||c(f,{}):(o[f]||{}).prototype)for(d in t){if(p=t[d],s=e.noTargetGet?(m=r(n,d))&&m.value:n[d],!u(h?d:f+(C?".":"#")+d,e.forced)&&s!==undefined){if(typeof p==typeof s)continue;l(p,s)}(e.sham||s&&s.sham)&&a(p,"sham",!0),i(n,d,p,e)}}},46203:function(e){"use strict";e.exports=function(e){try{return!!e()}catch(t){return!0}}},96504:function(e,t,n){"use strict";n(69811);var o=n(51414),r=n(10199),a=n(46203),i=n(20839),c=n(95479),l=i("species"),u=RegExp.prototype;e.exports=function(e,t,n,d){var s=i(e),p=!a((function(){var t={};return t[s]=function(){return 7},7!=""[e](t)})),m=p&&!a((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[l]=function(){return n},n.flags="",n[s]=/./[s]),n.exec=function(){return t=!0,null},n[s](""),!t}));if(!p||!m||n){var f=/./[s],h=t(s,""[e],(function(e,t,n,o,a){var i=t.exec;return i===r||i===u.exec?p&&!a?{done:!0,value:f.call(t,n,o)}:{done:!0,value:e.call(n,t,o)}:{done:!1}}));o(String.prototype,e,h[0]),o(u,s,h[1])}d&&c(u[s],"sham",!0)}},46927:function(e,t,n){"use strict";var o=n(32420),r=n(46330),a=n(77348);e.exports=function i(e,t,n,c,l,u,d,s){for(var p,m=l,f=0,h=!!d&&a(d,s,3);f0&&o(p))m=i(e,t,p,r(p.length),m,u-1)-1;else{if(m>=9007199254740991)throw TypeError("Exceed the acceptable array length");e[m]=p}m++}f++}return m}},90452:function(e,t,n){"use strict";var o=n(46203);e.exports=!o((function(){return Object.isExtensible(Object.preventExtensions({}))}))},77348:function(e,t,n){"use strict";var o=n(52726);e.exports=function(e,t,n){if(o(e),t===undefined)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,o){return e.call(t,n,o)};case 3:return function(n,o,r){return e.call(t,n,o,r)}}return function(){return e.apply(t,arguments)}}},18602:function(e,t,n){"use strict";var o=n(52726),r=n(81662),a=[].slice,i={},c=function(e,t,n){if(!(t in i)){for(var o=[],r=0;r]*>)/g,c=/\$([$&'`]|\d{1,2})/g;e.exports=function(e,t,n,l,u,d){var s=n+e.length,p=l.length,m=c;return u!==undefined&&(u=o(u),m=i),a.call(d,m,(function(o,a){var i;switch(a.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(s);case"<":i=u[a.slice(1,-1)];break;default:var c=+a;if(0===c)return o;if(c>p){var d=r(c/10);return 0===d?o:d<=p?l[d-1]===undefined?a.charAt(1):l[d-1]+a.charAt(1):o}i=l[c-1]}return i===undefined?"":i}))}},29071:function(e,t,n){"use strict";var o=function(e){return e&&e.Math==Math&&e};e.exports=o("object"==typeof globalThis&&globalThis)||o("object"==typeof window&&window)||o("object"==typeof self&&self)||o("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},83122:function(e,t,n){"use strict";var o=n(45009),r={}.hasOwnProperty;e.exports=Object.hasOwn||function(e,t){return r.call(o(e),t)}},18609:function(e){"use strict";e.exports={}},40753:function(e,t,n){"use strict";var o=n(29071);e.exports=function(e,t){var n=o.console;n&&n.error&&(1===arguments.length?n.error(e):n.error(e,t))}},21929:function(e,t,n){"use strict";var o=n(54883);e.exports=o("document","documentElement")},72825:function(e,t,n){"use strict";var o=n(54408),r=n(46203),a=n(939);e.exports=!o&&!r((function(){return 7!=Object.defineProperty(a("div"),"a",{get:function(){return 7}}).a}))},33830:function(e){"use strict";var t=Math.abs,n=Math.pow,o=Math.floor,r=Math.log,a=Math.LN2;e.exports={pack:function(e,i,c){var l,u,d,s=new Array(c),p=8*c-i-1,m=(1<>1,h=23===i?n(2,-24)-n(2,-77):0,C=e<0||0===e&&1/e<0?1:0,g=0;for((e=t(e))!=e||e===Infinity?(u=e!=e?1:0,l=m):(l=o(r(e)/a),e*(d=n(2,-l))<1&&(l--,d*=2),(e+=l+f>=1?h/d:h*n(2,1-f))*d>=2&&(l++,d/=2),l+f>=m?(u=0,l=m):l+f>=1?(u=(e*d-1)*n(2,i),l+=f):(u=e*n(2,f-1)*n(2,i),l=0));i>=8;s[g++]=255&u,u/=256,i-=8);for(l=l<0;s[g++]=255&l,l/=256,p-=8);return s[--g]|=128*C,s},unpack:function(e,t){var o,r=e.length,a=8*r-t-1,i=(1<>1,l=a-7,u=r-1,d=e[u--],s=127&d;for(d>>=7;l>0;s=256*s+e[u],u--,l-=8);for(o=s&(1<<-l)-1,s>>=-l,l+=t;l>0;o=256*o+e[u],u--,l-=8);if(0===s)s=1-c;else{if(s===i)return o?NaN:d?-Infinity:Infinity;o+=n(2,t),s-=c}return(d?-1:1)*o*n(2,s-t)}}},27371:function(e,t,n){"use strict";var o=n(46203),r=n(87684),a="".split;e.exports=o((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==r(e)?a.call(e,""):Object(e)}:Object},50843:function(e,t,n){"use strict";var o=n(81662),r=n(99099);e.exports=function(e,t,n){var a,i;return r&&"function"==typeof(a=t.constructor)&&a!==n&&o(i=a.prototype)&&i!==n.prototype&&r(e,i),e}},69718:function(e,t,n){"use strict";var o=n(41537),r=Function.toString;"function"!=typeof o.inspectSource&&(o.inspectSource=function(e){return r.call(e)}),e.exports=o.inspectSource},88511:function(e,t,n){"use strict";var o=n(70850),r=n(18609),a=n(81662),i=n(83122),c=n(81965).f,l=n(6628),u=n(18118),d=n(58060),s=n(90452),p=!1,m=d("meta"),f=0,h=Object.isExtensible||function(){return!0},C=function(e){c(e,m,{value:{objectID:"O"+f++,weakData:{}}})},g=e.exports={enable:function(){g.enable=function(){},p=!0;var e=l.f,t=[].splice,n={};n[m]=1,e(n).length&&(l.f=function(n){for(var o=e(n),r=0,a=o.length;rp;p++)if((f=_(e[p]))&&f instanceof u)return f;return new u(!1)}d=s.call(e)}for(h=d.next;!(C=h.call(d)).done;){try{f=_(C.value)}catch(w){throw l(d),w}if("object"==typeof f&&f&&f instanceof u)return f}return new u(!1)}},151:function(e,t,n){"use strict";var o=n(90155);e.exports=function(e){var t=e["return"];if(t!==undefined)return o(t.call(e)).value}},53637:function(e,t,n){"use strict";var o,r,a,i=n(46203),c=n(87263),l=n(95479),u=n(83122),d=n(20839),s=n(80591),p=d("iterator"),m=!1;[].keys&&("next"in(a=[].keys())?(r=c(c(a)))!==Object.prototype&&(o=r):m=!0);var f=o==undefined||i((function(){var e={};return o[p].call(e)!==e}));f&&(o={}),s&&!f||u(o,p)||l(o,p,(function(){return this})),e.exports={IteratorPrototype:o,BUGGY_SAFARI_ITERATORS:m}},63913:function(e){"use strict";e.exports={}},49294:function(e){"use strict";var t=Math.expm1,n=Math.exp;e.exports=!t||t(10)>22025.465794806718||t(10)<22025.465794806718||-2e-17!=t(-2e-17)?function(e){return 0==(e=+e)?e:e>-1e-6&&e<1e-6?e+e*e/2:n(e)-1}:t},23965:function(e,t,n){"use strict";var o=n(84250),r=Math.abs,a=Math.pow,i=a(2,-52),c=a(2,-23),l=a(2,127)*(2-c),u=a(2,-126);e.exports=Math.fround||function(e){var t,n,a=r(e),d=o(e);return al||n!=n?d*Infinity:d*n}},82544:function(e){"use strict";var t=Math.log;e.exports=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:t(1+e)}},84250:function(e){"use strict";e.exports=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1}},83639:function(e,t,n){"use strict";var o,r,a,i,c,l,u,d,s=n(29071),p=n(77415).f,m=n(37189).set,f=n(33459),h=n(10064),C=n(45521),g=n(12396),b=s.MutationObserver||s.WebKitMutationObserver,v=s.document,N=s.process,V=s.Promise,y=p(s,"queueMicrotask"),_=y&&y.value;_||(o=function(){var e,t;for(g&&(e=N.domain)&&e.exit();r;){t=r.fn,r=r.next;try{t()}catch(n){throw r?i():a=undefined,n}}a=undefined,e&&e.enter()},f||g||C||!b||!v?!h&&V&&V.resolve?((u=V.resolve(undefined)).constructor=V,d=u.then,i=function(){d.call(u,o)}):i=g?function(){N.nextTick(o)}:function(){m.call(s,o)}:(c=!0,l=v.createTextNode(""),new b(o).observe(l,{characterData:!0}),i=function(){l.data=c=!c})),e.exports=_||function(e){var t={fn:e,next:undefined};a&&(a.next=t),r||(r=t,i()),a=t}},86514:function(e,t,n){"use strict";var o=n(29071);e.exports=o.Promise},82156:function(e,t,n){"use strict";var o=n(95336),r=n(46203);e.exports=!!Object.getOwnPropertySymbols&&!r((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&o&&o<41}))},63059:function(e,t,n){"use strict";var o=n(29071),r=n(69718),a=o.WeakMap;e.exports="function"==typeof a&&/native code/.test(r(a))},24735:function(e,t,n){"use strict";var o=n(52726),r=function(e){var t,n;this.promise=new e((function(e,o){if(t!==undefined||n!==undefined)throw TypeError("Bad Promise constructor");t=e,n=o})),this.resolve=o(t),this.reject=o(n)};e.exports.f=function(e){return new r(e)}},2019:function(e,t,n){"use strict";var o=n(94384);e.exports=function(e){if(o(e))throw TypeError("The method doesn't accept regular expressions");return e}},19548:function(e,t,n){"use strict";var o=n(29071).isFinite;e.exports=Number.isFinite||function(e){return"number"==typeof e&&o(e)}},14236:function(e,t,n){"use strict";var o=n(29071),r=n(1435),a=n(8182).trim,i=n(89384),c=o.parseFloat,l=1/c(i+"-0")!=-Infinity;e.exports=l?function(e){var t=a(r(e)),n=c(t);return 0===n&&"-"==t.charAt(0)?-0:n}:c},40731:function(e,t,n){"use strict";var o=n(29071),r=n(1435),a=n(8182).trim,i=n(89384),c=o.parseInt,l=/^[+-]?0[Xx]/,u=8!==c(i+"08")||22!==c(i+"0x16");e.exports=u?function(e,t){var n=a(r(e));return c(n,t>>>0||(l.test(n)?16:10))}:c},81217:function(e,t,n){"use strict";var o=n(54408),r=n(46203),a=n(45044),i=n(37881),c=n(96177),l=n(45009),u=n(27371),d=Object.assign,s=Object.defineProperty;e.exports=!d||r((function(){if(o&&1!==d({b:1},d(s({},"a",{enumerable:!0,get:function(){s(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach((function(e){t[e]=e})),7!=d({},e)[n]||a(d({},t)).join("")!=r}))?function(e,t){for(var n=l(e),r=arguments.length,d=1,s=i.f,p=c.f;r>d;)for(var m,f=u(arguments[d++]),h=s?a(f).concat(s(f)):a(f),C=h.length,g=0;C>g;)m=h[g++],o&&!p.call(f,m)||(n[m]=f[m]);return n}:d},49500:function(e,t,n){"use strict";var o,r=n(90155),a=n(61685),i=n(17195),c=n(18609),l=n(21929),u=n(939),d=n(15595),s=d("IE_PROTO"),p=function(){},m=function(e){return"