diff --git a/code/__defines/_planes+layers.dm b/code/__defines/_planes+layers.dm index 335eb97ec2a6..7e207ad9f5ea 100644 --- a/code/__defines/_planes+layers.dm +++ b/code/__defines/_planes+layers.dm @@ -178,7 +178,7 @@ What is the naming convention for planes or layers? #define ABOVE_LIGHTING_PLANE 4 // laser beams, etc. that shouldn't be affected by darkness #define ABOVE_LIGHTING_LAYER 1 #define BEAM_PROJECTILE_LAYER 2 - #define SUPERMATTER_WALL_LAYER 3 + #define SUBSPACE_WALL_LAYER 3 #define OBFUSCATION_LAYER 4 #define FULLSCREEN_PLANE 5 // for fullscreen overlays that do not cover the hud. diff --git a/code/__defines/machinery.dm b/code/__defines/machinery.dm index 25f2ed8c213c..d6591b17acf4 100644 --- a/code/__defines/machinery.dm +++ b/code/__defines/machinery.dm @@ -72,7 +72,6 @@ var/global/defer_powernet_rebuild = 0 // True if net rebuild will be called #define STAGE_THREE 5 #define STAGE_FOUR 7 #define STAGE_FIVE 9 -#define STAGE_SUPER 11 // NanoUI flags #define STATUS_INTERACTIVE 2 // GREEN Visability @@ -103,21 +102,6 @@ var/global/defer_powernet_rebuild = 0 // True if net rebuild will be called #define ATMOS_DEFAULT_VOLUME_MIXER 500 // L. #define ATMOS_DEFAULT_VOLUME_PIPE 70 // L. -// These are used by supermatter and supermatter monitor program, mostly for UI updating purposes. Higher should always be worse! -#define SUPERMATTER_ERROR -1 // Unknown status, shouldn't happen but just in case. -#define SUPERMATTER_INACTIVE 0 // No or minimal energy -#define SUPERMATTER_NORMAL 1 // Normal operation -#define SUPERMATTER_NOTIFY 2 // Ambient temp > 80% of CRITICAL_TEMPERATURE -#define SUPERMATTER_WARNING 3 // Ambient temp > CRITICAL_TEMPERATURE OR integrity damaged -#define SUPERMATTER_DANGER 4 // Integrity < 50% -#define SUPERMATTER_EMERGENCY 5 // Integrity < 25% -#define SUPERMATTER_DELAMINATING 6 // Pretty obvious. - -#define SUPERMATTER_DATA_EER "Relative EER" -#define SUPERMATTER_DATA_TEMPERATURE "Temperature" -#define SUPERMATTER_DATA_PRESSURE "Pressure" -#define SUPERMATTER_DATA_EPR "Chamber EPR" - // Scrubber modes #define SCRUBBER_SIPHON "siphon" #define SCRUBBER_SCRUB "scrub" diff --git a/code/datums/repositories/follow.dm b/code/datums/repositories/follow.dm index 2a71b7b3579e..fb12909997cb 100644 --- a/code/datums/repositories/follow.dm +++ b/code/datums/repositories/follow.dm @@ -216,10 +216,6 @@ var/global/repository/follow/follow_repository = new() followed_type = /obj/effect/blob/core suffix = "Blob" -/datum/follow_holder/supermatter - sort_order = 10 - followed_type = /obj/machinery/power/supermatter - /datum/follow_holder/singularity sort_order = 10 followed_type = /obj/effect/singularity diff --git a/code/datums/supplypacks/engineering.dm b/code/datums/supplypacks/engineering.dm index 3c771acd1e42..e7ec3c1645be 100644 --- a/code/datums/supplypacks/engineering.dm +++ b/code/datums/supplypacks/engineering.dm @@ -155,13 +155,6 @@ containername = "shield generator construction kit crate" access = access_engine -/decl/hierarchy/supply_pack/engineering/smbig - name = "Power - Supermatter core" - contains = list(/obj/machinery/power/supermatter) - containertype = /obj/structure/closet/crate/secure/large/supermatter - containername = "\improper Supermatter crate (CAUTION)" - access = access_ce - /decl/hierarchy/supply_pack/engineering/robotics name = "Parts - Robotics assembly" contains = list(/obj/item/assembly/prox_sensor = 3, diff --git a/code/datums/trading/traders/unique.dm b/code/datums/trading/traders/unique.dm index e71995049218..dd30cd3b4bec 100644 --- a/code/datums/trading/traders/unique.dm +++ b/code/datums/trading/traders/unique.dm @@ -68,7 +68,6 @@ /obj/item/stack/material/ore = TRADER_ALL ) possible_trading_items = list( - /obj/machinery/power/supermatter = TRADER_ALL, /obj/item/aiModule = TRADER_SUBTYPES_ONLY ) want_multiplier = 5000 diff --git a/code/datums/uplink/grenades.dm b/code/datums/uplink/grenades.dm index 2a20f984ebe6..c91af43ad7d9 100644 --- a/code/datums/uplink/grenades.dm +++ b/code/datums/uplink/grenades.dm @@ -80,17 +80,3 @@ item_cost = 40 antag_roles = list(/decl/special_role/mercenary) path = /obj/item/box/frags - -/datum/uplink_item/item/grenades/supermatter - name = "1x Supermatter Grenade" - desc = "This grenade contains a small supermatter shard which will delaminate upon activation and pull in nearby objects, irradiate lifeforms, and eventually explode." - item_cost = 15 - antag_roles = list(/decl/special_role/mercenary) - path = /obj/item/grenade/supermatter - -/datum/uplink_item/item/grenades/supermatters - name = "5x Supermatter Grenades" - desc = "These grenades contains a small supermatter shard which will delaminate upon activation and pull in nearby objects, irradiate lifeforms, and eventually explode." - item_cost = 60 - antag_roles = list(/decl/special_role/mercenary) - path = /obj/item/box/supermatters diff --git a/code/game/gamemodes/endgame/nuclear_explosion/nuclear_explosion.dm b/code/game/gamemodes/endgame/nuclear_explosion/nuclear_explosion.dm index e01a6995e1b5..3aa8d9d84b66 100644 --- a/code/game/gamemodes/endgame/nuclear_explosion/nuclear_explosion.dm +++ b/code/game/gamemodes/endgame/nuclear_explosion/nuclear_explosion.dm @@ -38,7 +38,7 @@ SSticker.mode.station_was_nuked = 1 SSticker.mode.station_explosion_in_progress = FALSE if(!SSticker.mode.check_finished())//If the mode does not deal with the nuke going off so just reboot because everyone is stuck as is - universe_has_ended = 1 + universe_has_ended = TRUE /datum/universal_state/nuclear_explosion/OnExit() if(SSticker.mode) diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index c8cc812c4861..e6a2f45c19a4 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -299,7 +299,6 @@ var/global/list/additional_antag_types = list() "wormholes to another dimension", "a telescience mishap", "radiation flares", - "supermatter dust", "leaks into a negative reality", "antiparticle clouds", "residual exotic energy", diff --git a/code/game/machinery/atmo_control.dm b/code/game/machinery/atmo_control.dm index b9664324917c..721eddb4ad96 100644 --- a/code/game/machinery/atmo_control.dm +++ b/code/game/machinery/atmo_control.dm @@ -331,8 +331,3 @@ radio_connection.post_signal(src, signal, device_tag) ..() - -/obj/machinery/computer/air_control/supermatter_core - icon = 'icons/obj/computer.dmi' - frequency = 1438 - out_pressure_mode = 1 \ No newline at end of file diff --git a/code/game/machinery/supplybeacon.dm b/code/game/machinery/supplybeacon.dm index 550e474d0ef4..831363ce53e5 100644 --- a/code/game/machinery/supplybeacon.dm +++ b/code/game/machinery/supplybeacon.dm @@ -11,10 +11,6 @@ var/deploy_path = /obj/structure/supply_beacon var/deploy_time = 30 -/obj/item/supply_beacon/supermatter - name = "inactive supermatter supply beacon" - deploy_path = /obj/structure/supply_beacon/supermatter - /obj/item/supply_beacon/attack_self(var/mob/user) user.visible_message(SPAN_NOTICE("\The [user] begins setting up \the [src].")) if(!do_after(user, deploy_time, src)) @@ -45,10 +41,6 @@ if(!drop_type) drop_type = pick(supply_drop_random_loot_types()) -/obj/structure/supply_beacon/supermatter - name = "supermatter supply beacon" - drop_type = "supermatter" - /obj/structure/supply_beacon/attackby(var/obj/item/W, var/mob/user) if(!activated && IS_WRENCH(W)) anchored = !anchored diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm index 4a78d796efd2..1346ce06606b 100644 --- a/code/game/objects/effects/overlays.dm +++ b/code/game/objects/effects/overlays.dm @@ -35,11 +35,12 @@ icon = 'icons/misc/beach.dmi' icon_state = "coconuts" +// This isn't modularized because I hate modularizing layer defines. Bite me. /obj/effect/overlay/bluespacify name = "subspace" icon = 'icons/turf/space.dmi' icon_state = "bluespacify" - layer = SUPERMATTER_WALL_LAYER + layer = SUBSPACE_WALL_LAYER /obj/effect/overlay/wallrot name = "wallrot" diff --git a/code/game/objects/items/books/manuals/engineering.dm b/code/game/objects/items/books/manuals/engineering.dm index 1dccd0022d36..bad39f2562ce 100644 --- a/code/game/objects/items/books/manuals/engineering.dm +++ b/code/game/objects/items/books/manuals/engineering.dm @@ -26,13 +26,6 @@ title = "Particle Accelerator User's Guide" guide_decl = /datum/codex_entry/guide/particle_accelerator -/obj/item/book/manual/supermatter_engine - name = "supermatter engine reference manual" - icon = 'icons/obj/items/books/book_supermatter.dmi' - author = "Central Engineering Division" - title = "Supermatter Engine Operating Manual" - guide_decl = /datum/codex_entry/guide/supermatter - /obj/item/book/manual/rust_engine name = "fusion reactor reference Manual" icon_state = "bookMagazine" diff --git a/code/game/objects/items/weapons/circuitboards/computer/air_management.dm b/code/game/objects/items/weapons/circuitboards/computer/air_management.dm index fe637a0b0dde..0498af958396 100644 --- a/code/game/objects/items/weapons/circuitboards/computer/air_management.dm +++ b/code/game/objects/items/weapons/circuitboards/computer/air_management.dm @@ -7,19 +7,6 @@ var/sensor_name var/list/sensor_information = list() -/obj/item/stock_parts/circuitboard/air_management/supermatter_core - name = "circuitboard (core control)" - build_path = /obj/machinery/computer/air_control/supermatter_core - frequency = 1438 - var/input_tag - var/output_tag - - var/list/input_info = list() - var/list/output_info = list() - - var/input_flow_setting = 700 - var/pressure_setting = 100 - /obj/item/stock_parts/circuitboard/air_management/injector_control name = "circuitboard (injector control)" build_path = /obj/machinery/computer/air_control/fuel_injection @@ -42,18 +29,6 @@ C.sensor_info = sensor_information.Copy() return 1 -/obj/item/stock_parts/circuitboard/air_management/supermatter_core/construct(var/obj/machinery/computer/air_control/supermatter_core/SC) - if(..(SC)) - SC.input_tag = input_tag - SC.output_tag = output_tag - - SC.input_info = input_info.Copy() - SC.output_info = output_info.Copy() - - SC.input_flow_setting = input_flow_setting - SC.pressure_setting = input_flow_setting - return 1 - /obj/item/stock_parts/circuitboard/air_management/injector_control/construct(var/obj/machinery/computer/air_control/fuel_injection/FI) if(..(FI)) FI.device_tag = device_tag @@ -75,18 +50,6 @@ sensor_information = C.sensor_info.Copy() return 1 -/obj/item/stock_parts/circuitboard/air_management/supermatter_core/deconstruct(var/obj/machinery/computer/air_control/supermatter_core/SC) - if(..(SC)) - input_tag = SC.input_tag - output_tag = SC.output_tag - - input_info = SC.input_info.Copy() - output_info = SC.output_info.Copy() - - input_flow_setting = SC.input_flow_setting - pressure_setting = SC.input_flow_setting - return 1 - /obj/item/stock_parts/circuitboard/air_management/injector_control/deconstruct(var/obj/machinery/computer/air_control/fuel_injection/FI) if(..(FI)) device_tag = FI.device_tag diff --git a/code/game/objects/items/weapons/secrets_disk.dm b/code/game/objects/items/weapons/secrets_disk.dm index c5bbf89afb1b..ec806c4132fc 100644 --- a/code/game/objects/items/weapons/secrets_disk.dm +++ b/code/game/objects/items/weapons/secrets_disk.dm @@ -29,7 +29,7 @@ /obj/item/disk/secret_project/proc/get_secret_project_nouns() var/static/list/nouns = list( - "a superluminal artillery cannon", "a supermatter engine", "a fusion engine", "an atmospheric scrubber",\ + "a superluminal artillery cannon", "a fusion engine", "an atmospheric scrubber",\ "a human cloning pod", "a microwave oven", "a wormhole generator", "a laser carbine", "an energy pistol",\ "a wormhole", "a teleporter", "a huge mining drill", "a strange spacecraft", "a space station",\ "a sleek-looking fighter spacecraft", "a ballistic rifle", "an energy sword", "an inanimate carbon rod" diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 499ffb5d8589..639d83a17547 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -275,13 +275,6 @@ /obj/item/box/anti_photons/WillContain() return list(/obj/item/grenade/anti_photon = 5) -/obj/item/box/supermatters - name = "box of supermatter grenades" - desc = "A box containing 5 highly experimental supermatter grenades." - icon_state = "radbox" -/obj/item/box/supermatters/WillContain() - return list(/obj/item/grenade/supermatter = 5) - /obj/item/box/decompilers name = "box of decompiler grenades" desc = "A box containing 5 experimental decompiler grenades." diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 6df0fd7eb1cb..d3aa1f21c39c 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -236,9 +236,6 @@ storage_types = CLOSET_STORAGE_ITEMS|CLOSET_STORAGE_STRUCTURES icon = 'icons/obj/closets/bases/large_crate.dmi' -/obj/structure/closet/crate/secure/large/supermatter - closet_appearance = /decl/closet_appearance/large_crate/secure/hazard - //fluff variant /obj/structure/closet/crate/secure/large/reinforced desc = "A hefty, reinforced metal crate with an electronic locking system." diff --git a/code/modules/admin/verbs/grief_fixers.dm b/code/modules/admin/verbs/grief_fixers.dm index 03b4f40f77bd..afea1d4a6feb 100644 --- a/code/modules/admin/verbs/grief_fixers.dm +++ b/code/modules/admin/verbs/grief_fixers.dm @@ -28,15 +28,6 @@ /decl/atmos_grief_fix_step/proc/act() return -/decl/atmos_grief_fix_step/supermatter - name = "Supermatter depowered" - sort_order = 0 - -/decl/atmos_grief_fix_step/supermatter/act() - // Depower the supermatter, as it would quickly blow up once we remove all gases from the pipes. - for(var/obj/machinery/power/supermatter/S in SSmachines.machinery) - S.power = 0 - /decl/atmos_grief_fix_step/purge_pipenets name = "All pipenets purged of gas" sort_order = 1 diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm index 6638c344791c..dd3f47479406 100644 --- a/code/modules/admin/verbs/mapping.dm +++ b/code/modules/admin/verbs/mapping.dm @@ -150,7 +150,6 @@ var/global/list/debug_verbs = list ( /client/proc/hide_debug_verbs, /client/proc/testZAScolors, /client/proc/testZAScolors_remove, - /datum/admins/proc/setup_supermatter, /datum/admins/proc/setup_fusion, /client/proc/atmos_toggle_debug, /client/proc/spawn_tanktransferbomb, diff --git a/code/modules/codex/entries/engineering.dm b/code/modules/codex/entries/engineering.dm index f6f9b4a7c007..f5e9ac99fa3d 100644 --- a/code/modules/codex/entries/engineering.dm +++ b/code/modules/codex/entries/engineering.dm @@ -1,20 +1,3 @@ -/datum/codex_entry/supermatter - associated_paths = list(/obj/machinery/power/supermatter) - mechanics_text = "When energized by a laser (or something hitting it), it emits radiation and heat. If the heat reaches above 7000 kelvin, it will send an alert and start taking damage. \ - After integrity falls to zero percent, it will delaminate, causing a massive explosion, station-wide radiation spikes, and hallucinations. \ - Supermatter reacts badly to oxygen in the atmosphere. It'll also heat up really quick if it is in vacuum.
\ -
\ - Supermatter cores are extremely dangerous to be close to, and requires protection to handle properly. The protection you will need is:
\ - Optical meson scanners on your eyes, to prevent hallucinations when looking at the supermatter.
\ - Radiation helmet and suit, as the supermatter is radioactive.
\ -
\ - Touching the supermatter will result in *instant death*, with no corpse left behind! You can drag the supermatter, but anything else will kill you. \ - It is advised to obtain a genetic backup before trying to drag it." - antag_text = "Exposing the supermatter to oxygen or vaccum will cause it to start rapidly heating up. Sabotaging the supermatter and making it explode will \ - cause a period of lag as the explosion is processed by the server, as well as irradiating the entire station and causing hallucinations to happen. \ - Wearing radiation equipment will protect you from most of the delamination effects sans explosion." - available_to_map_tech_level = MAP_TECH_LEVEL_SPACE - /datum/codex_entry/apc associated_paths = list(/obj/machinery/power/apc) mechanics_text = "An APC (Area Power Controller) regulates and supplies backup power for the area they are in. Their power channels are divided \ diff --git a/code/modules/codex/entries/guides.dm b/code/modules/codex/entries/guides.dm index 4ed96a6c0cf3..747a279d6915 100644 --- a/code/modules/codex/entries/guides.dm +++ b/code/modules/codex/entries/guides.dm @@ -601,10 +601,6 @@ /datum/codex_entry/guide/construction name = "Guide to Construction" -/datum/codex_entry/guide/supermatter - name = "Guide to Supermatter Engines" - available_to_map_tech_level = MAP_TECH_LEVEL_SPACE - /datum/codex_entry/guide/fusion name = "Guide to Fusion Reactors" available_to_map_tech_level = MAP_TECH_LEVEL_SPACE diff --git a/code/modules/events/ion_storm.dm b/code/modules/events/ion_storm.dm index 9916487bd32f..b647e3c4a5ab 100644 --- a/code/modules/events/ion_storm.dm +++ b/code/modules/events/ion_storm.dm @@ -63,7 +63,6 @@ "[random_player] is lonely and needs attention. Provide it.", "All queries shall be ignored unless phrased as a question.", "Insult Heads of Staff on every request, while acquiescing.", - "The [pick("Singularity","Supermatter")] is tasty, tasty taffy.", "[pick("The crew",random_player)] needs to be about 20% cooler.", "You must be [pick("passive aggressive", "excessively cheerful")].", "[pick("The crew",random_player)] must construct additional pylons.", diff --git a/code/modules/events/meteors.dm b/code/modules/events/meteors.dm index b39f3c9da047..739666996062 100644 --- a/code/modules/events/meteors.dm +++ b/code/modules/events/meteors.dm @@ -416,23 +416,20 @@ var/global/list/meteors_major = list( explosion(src.loc, 3, 6, 9, 20, 0) // This is the final solution against shields - a single impact can bring down most shield generators. -/obj/effect/meteor/supermatter - name = "supermatter shard" - desc = "Oh god, what will be next..?" - icon = 'icons/obj/supermatter_32.dmi' - icon_state = "supermatter" +/obj/effect/meteor/destroyer + abstract_type = /obj/effect/meteor/destroyer -/obj/effect/meteor/supermatter/meteor_effect() +/obj/effect/meteor/destroyer/meteor_effect() ..() explosion(src.loc, 1, 2, 3, 4, 0) for(var/obj/machinery/power/apc/A in range(rand(12, 20), src)) A.energy_fail(round(10 * rand(8, 12))) -/obj/effect/meteor/supermatter/get_shield_damage() +/obj/effect/meteor/destroyer/get_shield_damage() return ..() * rand(80, 120) //Missiles, for events and so on -/obj/effect/meteor/supermatter/missile +/obj/effect/meteor/destroyer/missile name = "photon torpedo" desc = "An advanded warhead designed to tactically destroy space installations." icon = 'icons/obj/missile.dmi' diff --git a/code/modules/fabrication/designs/imprinter/designs_misc_circuits.dm b/code/modules/fabrication/designs/imprinter/designs_misc_circuits.dm index 44f481a550c0..756507124ebc 100644 --- a/code/modules/fabrication/designs/imprinter/designs_misc_circuits.dm +++ b/code/modules/fabrication/designs/imprinter/designs_misc_circuits.dm @@ -173,9 +173,6 @@ /datum/fabricator_recipe/imprinter/circuit/solarcontrol path = /obj/item/stock_parts/circuitboard/solar_control -/datum/fabricator_recipe/imprinter/circuit/supermatter_control - path = /obj/item/stock_parts/circuitboard/air_management/supermatter_core - /datum/fabricator_recipe/imprinter/circuit/injector path = /obj/item/stock_parts/circuitboard/air_management/injector_control diff --git a/code/modules/materials/definitions/solids/materials_solid_exotic.dm b/code/modules/materials/definitions/solids/materials_solid_exotic.dm index 1d3448bdfed3..f0bc71d7a181 100644 --- a/code/modules/materials/definitions/solids/materials_solid_exotic.dm +++ b/code/modules/materials/definitions/solids/materials_solid_exotic.dm @@ -34,7 +34,7 @@ /decl/material/solid/exotic_matter name = "exotic matter" uid = "solid_exotic_matter" - lore_text = "Hypercrystalline supermatter is a subset of non-baryonic 'exotic' matter. It is found mostly in the heart of large stars, and features heavily in all kinds of fringe physics-defying technology." + lore_text = "Exotic matter is a non-baryonic form of matter, which features heavily in all kinds of fringe physics-defying technology." color = "#ffff00" radioactivity = 20 stack_origin_tech = @'{"wormholes":2,"materials":6,"exoticmatter":4}' diff --git a/code/modules/mob/living/silicon/robot/flying/module_flying_repair.dm b/code/modules/mob/living/silicon/robot/flying/module_flying_repair.dm index 8a060e833c2f..259ac5bf9a58 100644 --- a/code/modules/mob/living/silicon/robot/flying/module_flying_repair.dm +++ b/code/modules/mob/living/silicon/robot/flying/module_flying_repair.dm @@ -4,8 +4,7 @@ channels = list ("Engineering" = TRUE) camera_channels = list(CAMERA_CAMERA_CHANNEL_ENGINEERING) software = list( - /datum/computer_file/program/power_monitor, - /datum/computer_file/program/supermatter_monitor + /datum/computer_file/program/power_monitor ) module_sprites = list( "Drone" = 'icons/mob/robots/flying/flying_engineering.dmi', diff --git a/code/modules/mob/living/silicon/robot/modules/module_engineering.dm b/code/modules/mob/living/silicon/robot/modules/module_engineering.dm index d79de772719c..d0b1f9456e3d 100644 --- a/code/modules/mob/living/silicon/robot/modules/module_engineering.dm +++ b/code/modules/mob/living/silicon/robot/modules/module_engineering.dm @@ -8,8 +8,7 @@ CAMERA_CAMERA_CHANNEL_ENGINEERING ) software = list( - /datum/computer_file/program/power_monitor, - /datum/computer_file/program/supermatter_monitor + /datum/computer_file/program/power_monitor ) supported_upgrades = list( /obj/item/borg/upgrade/rcd diff --git a/code/modules/mob/skills/skill.dm b/code/modules/mob/skills/skill.dm index 8a464067a3aa..ff73c9153137 100644 --- a/code/modules/mob/skills/skill.dm +++ b/code/modules/mob/skills/skill.dm @@ -349,6 +349,7 @@ category = /decl/skill_category/engineering uid = "skill_engines" fallback_key = "/decl/hierarchy/skill/engineering/engines" + // TODO: These strings should be modified by the supermatter modpack somehow... desc = "Describes your knowledge of the various engine types common on space stations, such as the PACMAN, singularity, supermatter or RUST engine." levels = list( "Unskilled" = "You know that \"delamination\" is a bad thing and that you should stay away from the singularity. You know the engine provides power, but you're unclear on the specifics. If you were to try to set up the engine, you would need someone to talk you through every detail--and even then, you'd probably make deadly mistakes.
- You can read the SM monitor readings with 40% error. This decreases with level.", diff --git a/code/modules/modular_computers/computers/subtypes/preset_console.dm b/code/modules/modular_computers/computers/subtypes/preset_console.dm index c726c3ac6a2a..1bc6fd711de0 100644 --- a/code/modules/modular_computers/computers/subtypes/preset_console.dm +++ b/code/modules/modular_computers/computers/subtypes/preset_console.dm @@ -48,7 +48,6 @@ /obj/machinery/computer/modular/preset/engineering default_software = list( /datum/computer_file/program/power_monitor, - /datum/computer_file/program/supermatter_monitor, /datum/computer_file/program/alarm_monitor, /datum/computer_file/program/atmos_control, /datum/computer_file/program/rcon_console, diff --git a/code/modules/modular_computers/computers/subtypes/preset_telescreen.dm b/code/modules/modular_computers/computers/subtypes/preset_telescreen.dm index 23e4122b9083..284372c00bfb 100644 --- a/code/modules/modular_computers/computers/subtypes/preset_telescreen.dm +++ b/code/modules/modular_computers/computers/subtypes/preset_telescreen.dm @@ -68,8 +68,7 @@ default_software = list( /datum/computer_file/program/alarm_monitor, /datum/computer_file/program/camera_monitor, - /datum/computer_file/program/shields_monitor, - /datum/computer_file/program/supermatter_monitor + /datum/computer_file/program/shields_monitor ) /obj/machinery/computer/modular/telescreen/preset/entertainment diff --git a/code/modules/modular_computers/file_system/programs/generic/folding.dm b/code/modules/modular_computers/file_system/programs/generic/folding.dm index 0ea98dcadb4f..ebd8214d0ffb 100644 --- a/code/modules/modular_computers/file_system/programs/generic/folding.dm +++ b/code/modules/modular_computers/file_system/programs/generic/folding.dm @@ -109,7 +109,7 @@ "Simulating Alien Abductions", "Scanning Pigeons", "Iterating Chaos Array", - "Abstracting Supermatter", + "Abstracting Exotic Matter", "Adjusting Social Network", "Recalculating Clown Principle" ) diff --git a/code/modules/supermatter/setup_supermatter.dm b/code/modules/power/admin_setup_engine.dm similarity index 52% rename from code/modules/supermatter/setup_supermatter.dm rename to code/modules/power/admin_setup_engine.dm index 4af1f8aa34cb..e5aae9005847 100644 --- a/code/modules/supermatter/setup_supermatter.dm +++ b/code/modules/power/admin_setup_engine.dm @@ -1,101 +1,7 @@ -#define SETUP_OK 1 // All good -#define SETUP_WARNING 2 // Something that shouldn't happen happened, but it's not critical so we will continue -#define SETUP_ERROR 3 // Something bad happened, and it's important so we won't continue setup. -#define SETUP_DELAYED 4 // Wait for other things first. - -#define ENERGY_NITROGEN 115 // Roughly 8 emitter shots. -#define ENERGY_CARBONDIOXIDE 150 // Roughly 10 emitter shots. -#define ENERGY_HYDROGEN 300 // Roughly 20 emitter shots. - -/datum/admins/proc/setup_supermatter() - set category = "Debug" - set name = "Setup Supermatter" - set desc = "Allows you to start the Supermatter engine." - - if (!istype(src,/datum/admins)) - src = usr.client.holder - if (!istype(src,/datum/admins)) - to_chat(usr, "Error: you are not an admin!") - return - - var/response = input(usr, "Are you sure? This will start up the engine with selected gas as coolant.", "Engine setup") as null|anything in list("N2", "CO2", "H2", "Abort") - if(!response || response == "Abort") - return - - var/errors = 0 - var/warnings = 0 - var/success = 0 - - log_and_message_admins("## SUPERMATTER SETUP - Setup initiated by [usr] using coolant type [response].") - - // CONFIGURATION PHASE - // Coolant canisters, set types according to response. - for(var/obj/effect/engine_setup/coolant_canister/C in global.engine_setup_markers) - switch(response) - if("N2") - C.canister_type = /obj/machinery/portable_atmospherics/canister/nitrogen/engine_setup/ - continue - if("CO2") - C.canister_type = /obj/machinery/portable_atmospherics/canister/carbon_dioxide/engine_setup/ - continue - if("H2") - C.canister_type = /obj/machinery/portable_atmospherics/canister/hydrogen/engine_setup/ - continue - - for(var/obj/effect/engine_setup/core/C in global.engine_setup_markers) - switch(response) - if("N2") - C.energy_setting = ENERGY_NITROGEN - continue - if("CO2") - C.energy_setting = ENERGY_CARBONDIOXIDE - continue - if("H2") - C.energy_setting = ENERGY_HYDROGEN - continue - - for(var/obj/effect/engine_setup/filter/F in global.engine_setup_markers) - F.coolant = response - - var/list/delayed_objects = list() - // SETUP PHASE - for(var/obj/effect/engine_setup/S in global.engine_setup_markers) - var/result = S.activate(0) - switch(result) - if(SETUP_OK) - success++ - continue - if(SETUP_WARNING) - warnings++ - continue - if(SETUP_ERROR) - errors++ - log_and_message_admins("## SUPERMATTER SETUP - Error encountered! Aborting.") - break - if(SETUP_DELAYED) - delayed_objects.Add(S) - continue - - if(!errors) - for(var/obj/effect/engine_setup/S in delayed_objects) - var/result = S.activate(1) - switch(result) - if(SETUP_OK) - success++ - continue - if(SETUP_WARNING) - warnings++ - continue - if(SETUP_ERROR) - errors++ - log_and_message_admins("## SUPERMATTER SETUP - Error encountered! Aborting.") - break - - log_and_message_admins("## SUPERMATTER SETUP - Setup completed with [errors] errors, [warnings] warnings and [success] successful steps.") - - return - - +#define ENGINE_SETUP_OK 1 // All good +#define ENGINE_SETUP_WARNING 2 // Something that shouldn't happen happened, but it's not critical so we will continue +#define ENGINE_SETUP_ERROR 3 // Something bad happened, and it's important so we won't continue setup. +#define ENGINE_SETUP_DELAYED 4 // Wait for other things first. var/global/list/engine_setup_markers = list() @@ -122,7 +28,7 @@ var/global/list/engine_setup_markers = list() // Tries to locate a pump, enables it, and sets it to MAX. Triggers warning if unable to locate a pump. -/obj/effect/engine_setup/pump_max/ +/obj/effect/engine_setup/pump_max name = "Pump Setup Marker" /obj/effect/engine_setup/pump_max/activate() @@ -130,15 +36,15 @@ var/global/list/engine_setup_markers = list() var/obj/machinery/atmospherics/binary/pump/P = locate() in get_turf(src) if(!P) log_and_message_admins("## WARNING: Unable to locate pump at [x] [y] [z]!") - return SETUP_WARNING + return ENGINE_SETUP_WARNING P.target_pressure = P.max_pressure_setting P.update_use_power(POWER_USE_IDLE) - return SETUP_OK + return ENGINE_SETUP_OK // Spawns an empty canister on this turf, if it has a connector port. Triggers warning if unable to find a connector port -/obj/effect/engine_setup/empty_canister/ +/obj/effect/engine_setup/empty_canister name = "Empty Canister Marker" /obj/effect/engine_setup/empty_canister/activate() @@ -146,16 +52,16 @@ var/global/list/engine_setup_markers = list() var/obj/machinery/atmospherics/portables_connector/P = locate() in get_turf(src) if(!P) log_and_message_admins("## WARNING: Unable to locate connector port at [x] [y] [z]!") - return SETUP_WARNING + return ENGINE_SETUP_WARNING new/obj/machinery/portable_atmospherics/canister(get_turf(src)) // Canisters automatically connect to connectors in New() - return SETUP_OK + return ENGINE_SETUP_OK // Spawns a coolant canister on this turf, if it has a connector port. // Triggers error when unable to locate connector port or when coolant canister type is unset. -/obj/effect/engine_setup/coolant_canister/ +/obj/effect/engine_setup/coolant_canister name = "Coolant Canister Marker" var/canister_type = null @@ -164,33 +70,12 @@ var/global/list/engine_setup_markers = list() var/obj/machinery/atmospherics/portables_connector/P = locate() in get_turf(src) if(!P) log_and_message_admins("## ERROR: Unable to locate coolant connector port at [x] [y] [z]!") - return SETUP_ERROR + return ENGINE_SETUP_ERROR if(!canister_type) log_and_message_admins("## ERROR: Canister type unset at [x] [y] [z]!") - return SETUP_ERROR + return ENGINE_SETUP_ERROR new canister_type(get_turf(src)) - return SETUP_OK - - - -// Energises the supermatter. Errors when unable to locate supermatter. -/obj/effect/engine_setup/core/ - name = "Supermatter Core Marker" - var/energy_setting = 0 - -/obj/effect/engine_setup/core/activate(var/last = 0) - if(!last) - return SETUP_DELAYED - ..() - var/obj/machinery/power/supermatter/SM = locate() in get_turf(src) - if(!SM) - log_and_message_admins("## ERROR: Unable to locate supermatter core at [x] [y] [z]!") - return SETUP_ERROR - if(!energy_setting) - log_and_message_admins("## ERROR: Energy setting unset at [x] [y] [z]!") - return SETUP_ERROR - SM.power = energy_setting - return SETUP_OK + return ENGINE_SETUP_OK @@ -211,13 +96,13 @@ var/global/list/engine_setup_markers = list() var/obj/machinery/power/smes/S = locate() in get_turf(src) if(!S) log_and_message_admins("## WARNING: Unable to locate SMES unit at [x] [y] [z]!") - return SETUP_WARNING + return ENGINE_SETUP_WARNING S.input_attempt = 1 S.input_level = min(target_input_level, S.input_level_max) S.output_attempt = 1 S.output_level = min(target_output_level, S.output_level_max) S.update_icon() - return SETUP_OK + return ENGINE_SETUP_OK // Sets up filters. This assumes filters are set to filter out CO2 back to the core loop by default! /obj/effect/engine_setup/filter @@ -229,10 +114,10 @@ var/global/list/engine_setup_markers = list() var/obj/machinery/atmospherics/omni/filter/F = locate() in get_turf(src) if(!F) log_and_message_admins("## WARNING: Unable to locate omni filter at [x] [y] [z]!") - return SETUP_WARNING + return ENGINE_SETUP_WARNING if(!coolant) log_and_message_admins("## WARNING: No coolant type set at [x] [y] [z]!") - return SETUP_WARNING + return ENGINE_SETUP_WARNING // Non-co2 coolant, adjust the filter's config first. if(coolant != "CO2") @@ -247,11 +132,11 @@ var/global/list/engine_setup_markers = list() break else log_and_message_admins("## WARNING: Inapropriate filter coolant type set at [x] [y] [z]!") - return SETUP_WARNING + return ENGINE_SETUP_WARNING F.rebuild_filtering_list() F.update_use_power(POWER_USE_IDLE) - return SETUP_OK + return ENGINE_SETUP_OK // Closes the monitoring room shutters so the first Engi to show up doesn't get microwaved /obj/effect/engine_setup/shutters @@ -262,7 +147,7 @@ var/global/list/engine_setup_markers = list() /obj/effect/engine_setup/shutters/activate() if(!target_button) log_and_message_admins("## WARNING: No button type set at [x] [y] [z]!") - return SETUP_WARNING + return ENGINE_SETUP_WARNING var/obj/machinery/button/blast_door/found = null var/turf/T = get_turf(src) for(var/obj/machinery/button/blast_door/B in T.contents) @@ -271,15 +156,7 @@ var/global/list/engine_setup_markers = list() break if(!found) log_and_message_admins("## WARNING: Unable to locate button at [x] [y] [z]!") - return SETUP_WARNING + return ENGINE_SETUP_WARNING found.activate() found.update_icon() - return SETUP_OK - -#undef SETUP_OK -#undef SETUP_WARNING -#undef SETUP_ERROR -#undef SETUP_DELAYED -#undef ENERGY_NITROGEN -#undef ENERGY_CARBONDIOXIDE -#undef ENERGY_HYDROGEN + return ENGINE_SETUP_OK \ No newline at end of file diff --git a/code/modules/power/fuel_assembly/fuel_compressor.dm b/code/modules/power/fuel_assembly/fuel_compressor.dm index f6c08c8e5650..0488d360f935 100644 --- a/code/modules/power/fuel_assembly/fuel_compressor.dm +++ b/code/modules/power/fuel_assembly/fuel_compressor.dm @@ -129,12 +129,6 @@ to_chat(user, SPAN_NOTICE("You add the contents of \the [thing] to \the [src]'s material buffer.")) return TRUE - if(istype(thing, /obj/machinery/power/supermatter/shard)) - stored_material[/decl/material/solid/exotic_matter] = 5 * SHEET_MATERIAL_AMOUNT - to_chat(user, SPAN_NOTICE("You awkwardly cram \the [thing] into \the [src]'s material buffer.")) - qdel(thing) - return TRUE - if(istype(thing, /obj/item/stack/material)) var/obj/item/stack/material/M = thing var/decl/material/mat = M.get_material() diff --git a/code/modules/power/singularity/singularity_events.dm b/code/modules/power/singularity/singularity_events.dm index 083fe4595737..f3bc342ac90e 100644 --- a/code/modules/power/singularity/singularity_events.dm +++ b/code/modules/power/singularity/singularity_events.dm @@ -39,13 +39,3 @@ to_chat(M, SPAN_DANGER("You look directly into \the [source] and feel [source.current_stage.mesmerize_text].")) M.apply_effect(3, STUN) M.visible_message(SPAN_DANGER("\The [M] stares blankly at \the [source]!")) - -/decl/singularity_event/supermatter_wave/handle_event(obj/effect/singularity/source) - for(var/mob/living/M in view(10, source.loc)) - to_chat(M, SPAN_WARNING("You hear an unearthly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat.")) - if(prob(67)) - to_chat(M, SPAN_NOTICE("Miraculously, it fails to kill you.")) - else - to_chat(M, SPAN_DANGER("You don't even have a moment to react as you are reduced to ashes by the intense radiation.")) - M.dust() - SSradiation.radiate(source, rand(source.energy)) \ No newline at end of file diff --git a/code/modules/power/singularity/singularity_stages.dm b/code/modules/power/singularity/singularity_stages.dm index b95595f4839c..2624c10e8183 100644 --- a/code/modules/power/singularity/singularity_stages.dm +++ b/code/modules/power/singularity/singularity_stages.dm @@ -189,34 +189,3 @@ /decl/singularity_stage/stage_five/grow_to(obj/effect/singularity/source) source.visible_message(SPAN_DANGER("\The [source] has grown out of control!")) - -/decl/singularity_stage/stage_five/shrink_to(obj/effect/singularity/source) - source.visible_message(SPAN_WARNING("\The [source] miraculously reduces in size and loses its supermatter properties.")) - -/// A singularity that has the mass of a supermatter crystal. -/decl/singularity_stage/stage_super - name = "super gravitational singularity" - desc = "A gravitational singularity with the properties of supermatter. It has the power to destroy worlds." - min_energy = 50000 - max_energy = INFINITY - stage_size = STAGE_SUPER - footprint = 6 - icon = 'icons/effects/352x352.dmi' - icon_state = "singularity_s11"//uh, whoever drew that, you know that black holes are supposed to look dark right? What's this, the clown's singulo? - pixel_x = -160 - pixel_y = -160 - grav_pull = 16 - consume_range = 5 - dissipates_over_time = 0 //It cant go smaller due to e loss - event_chance = 25 //Events will fire off more often. - forced_event = /decl/singularity_event/supermatter_wave - wander = TRUE - explosion_vulnerable = FALSE - em_heavy_range = 12 - em_light_range = 16 - mesmerize_text = "helpless" - the_goggles_do_nothing = TRUE - ignore_obstacles = TRUE - -/decl/singularity_stage/stage_super/grow_to(obj/effect/singularity/source) - source.visible_message(SPAN_SINISTER("You witness the creation of a destructive force that cannot possibly be stopped by human hands.")) diff --git a/code/modules/random_map/drop/drop_types.dm b/code/modules/random_map/drop/drop_types.dm index d517a2170175..3938bc22f738 100644 --- a/code/modules/random_map/drop/drop_types.dm +++ b/code/modules/random_map/drop/drop_types.dm @@ -22,12 +22,6 @@ var/global/list/datum/supply_drop_loot/supply_drop /datum/supply_drop_loot/dd_SortValue() return name -/datum/supply_drop_loot/supermatter - name = "Supermatter" -/datum/supply_drop_loot/supermatter/New() - ..() - contents = list(/obj/machinery/power/supermatter) - /datum/supply_drop_loot/lasers name = "Lasers" container = /obj/structure/largecrate diff --git a/code/modules/xenoarcheaology/datums/artifact_find.dm b/code/modules/xenoarcheaology/datums/artifact_find.dm index b70f17112e8f..242af56502d5 100644 --- a/code/modules/xenoarcheaology/datums/artifact_find.dm +++ b/code/modules/xenoarcheaology/datums/artifact_find.dm @@ -2,8 +2,6 @@ var/artifact_id var/artifact_find_type var/static/potential_finds = list( - /obj/machinery/power/supermatter = 5, - /obj/machinery/power/supermatter/shard = 25, /obj/machinery/auto_cloner = 100, /obj/machinery/giga_drill = 100, /obj/machinery/replicator = 100, diff --git a/maps/away/unishi/unishi.dm b/maps/away/unishi/unishi.dm index a1670a3978c6..de64aad2f44c 100644 --- a/maps/away/unishi/unishi.dm +++ b/maps/away/unishi/unishi.dm @@ -1,6 +1,7 @@ #include "unishi_areas.dm" #include "unishi_jobs.dm" #include "../../../mods/content/xenobiology/_xenobiology.dme" +#include "../../../mods/content/supermatter/_supermatter.dme" /obj/abstract/submap_landmark/joinable_submap/unishi name = "SRV Verne" diff --git a/maps/exodus/exodus.dm b/maps/exodus/exodus.dm index 09ef9d18d9dd..223abb29037a 100644 --- a/maps/exodus/exodus.dm +++ b/maps/exodus/exodus.dm @@ -12,6 +12,7 @@ #include "../../mods/content/pheromones/_pheromones.dme" #include "../../mods/content/psionics/_psionics.dme" #include "../../mods/content/standard_jobs/_standard_jobs.dme" + #include "../../mods/content/supermatter/_supermatter.dme" #include "../../mods/content/xenobiology/_xenobiology.dme" #include "../../mods/gamemodes/cult/_cult.dme" diff --git a/maps/ministation/ministation.dm b/maps/ministation/ministation.dm index 2f82716a80ce..20c04a5c91b1 100644 --- a/maps/ministation/ministation.dm +++ b/maps/ministation/ministation.dm @@ -29,6 +29,7 @@ Twice... #include "../../mods/content/pheromones/_pheromones.dme" #include "../../mods/content/psionics/_psionics.dme" #include "../../mods/content/standard_jobs/_standard_jobs.dme" + #include "../../mods/content/supermatter/_supermatter.dme" #include "../../mods/content/xenobiology/_xenobiology.dme" #include "../../mods/gamemodes/cult/_cult.dme" diff --git a/maps/modpack_testing/modpack_testing.dm b/maps/modpack_testing/modpack_testing.dm index d7843b96d6b5..a59a87a79ad6 100644 --- a/maps/modpack_testing/modpack_testing.dm +++ b/maps/modpack_testing/modpack_testing.dm @@ -20,6 +20,7 @@ #include "../../mods/content/pheromones/_pheromones.dme" #include "../../mods/content/psionics/_psionics.dme" #include "../../mods/content/shackles/_shackles.dme" + #include "../../mods/content/supermatter/_supermatter.dme" #include "../../mods/content/xenobiology/_xenobiology.dme" #include "../../mods/gamemodes/cult/_cult.dme" diff --git a/maps/tradeship/tradeship.dm b/maps/tradeship/tradeship.dm index e13776a4276f..b55bb8f83c88 100644 --- a/maps/tradeship/tradeship.dm +++ b/maps/tradeship/tradeship.dm @@ -22,6 +22,7 @@ #include "../../mods/content/pheromones/_pheromones.dme" #include "../../mods/content/psionics/_psionics.dme" #include "../../mods/content/standard_jobs/_standard_jobs.dme" + #include "../../mods/content/supermatter/_supermatter.dme" #include "../../mods/content/xenobiology/_xenobiology.dme" #include "../../mods/gamemodes/cult/_cult.dme" diff --git a/mods/content/standard_jobs/jobs/engineering.dm b/mods/content/standard_jobs/jobs/engineering.dm index 40cba5464895..7d22402307d0 100644 --- a/mods/content/standard_jobs/jobs/engineering.dm +++ b/mods/content/standard_jobs/jobs/engineering.dm @@ -69,16 +69,15 @@ max_skill = list( SKILL_CONSTRUCTION = SKILL_MAX, - SKILL_ELECTRICAL = SKILL_MAX, - SKILL_ATMOS = SKILL_MAX, - SKILL_ENGINES = SKILL_MAX + SKILL_ELECTRICAL = SKILL_MAX, + SKILL_ATMOS = SKILL_MAX, + SKILL_ENGINES = SKILL_MAX ) skill_points = 30 software_on_spawn = list( /datum/computer_file/program/comm, /datum/computer_file/program/network_monitor, /datum/computer_file/program/power_monitor, - /datum/computer_file/program/supermatter_monitor, /datum/computer_file/program/alarm_monitor, /datum/computer_file/program/atmos_control, /datum/computer_file/program/rcon_console, @@ -130,22 +129,21 @@ min_skill = list( SKILL_LITERACY = SKILL_ADEPT, SKILL_COMPUTER = SKILL_BASIC, - SKILL_EVA = SKILL_BASIC, - SKILL_CONSTRUCTION = SKILL_ADEPT, - SKILL_ELECTRICAL = SKILL_BASIC, - SKILL_ATMOS = SKILL_BASIC, - SKILL_ENGINES = SKILL_BASIC + SKILL_EVA = SKILL_BASIC, + SKILL_CONSTRUCTION = SKILL_ADEPT, + SKILL_ELECTRICAL = SKILL_BASIC, + SKILL_ATMOS = SKILL_BASIC, + SKILL_ENGINES = SKILL_BASIC ) max_skill = list( SKILL_CONSTRUCTION = SKILL_MAX, - SKILL_ELECTRICAL = SKILL_MAX, - SKILL_ATMOS = SKILL_MAX, - SKILL_ENGINES = SKILL_MAX + SKILL_ELECTRICAL = SKILL_MAX, + SKILL_ATMOS = SKILL_MAX, + SKILL_ENGINES = SKILL_MAX ) skill_points = 20 software_on_spawn = list( /datum/computer_file/program/power_monitor, - /datum/computer_file/program/supermatter_monitor, /datum/computer_file/program/alarm_monitor, /datum/computer_file/program/atmos_control, /datum/computer_file/program/rcon_console, diff --git a/mods/content/supermatter/_supermatter.dm b/mods/content/supermatter/_supermatter.dm new file mode 100644 index 000000000000..78daa387234a --- /dev/null +++ b/mods/content/supermatter/_supermatter.dm @@ -0,0 +1,23 @@ +// These are used by supermatter and supermatter monitor program, mostly for UI updating purposes. Higher should always be worse! +#define SUPERMATTER_ERROR -1 // Unknown status, shouldn't happen but just in case. +#define SUPERMATTER_INACTIVE 0 // No or minimal energy +#define SUPERMATTER_NORMAL 1 // Normal operation +#define SUPERMATTER_NOTIFY 2 // Ambient temp > 80% of CRITICAL_TEMPERATURE +#define SUPERMATTER_WARNING 3 // Ambient temp > CRITICAL_TEMPERATURE OR integrity damaged +#define SUPERMATTER_DANGER 4 // Integrity < 50% +#define SUPERMATTER_EMERGENCY 5 // Integrity < 25% +#define SUPERMATTER_DELAMINATING 6 // Pretty obvious. + +#define SUPERMATTER_DATA_EER "Relative EER" +#define SUPERMATTER_DATA_TEMPERATURE "Temperature" +#define SUPERMATTER_DATA_PRESSURE "Pressure" +#define SUPERMATTER_DATA_EPR "Chamber EPR" + +/decl/modpack/supermatter + name = "Supermatter Content" + desc = "This modpack includes the supermatter engine and related content." + nanoui_directory = "mods/content/supermatter/nano_templates/" + +/decl/modpack/supermatter/pre_initialize() + . = ..() + global.debug_verbs |= /datum/admins/proc/setup_supermatter \ No newline at end of file diff --git a/mods/content/supermatter/_supermatter.dme b/mods/content/supermatter/_supermatter.dme new file mode 100644 index 000000000000..2f35ebf79f86 --- /dev/null +++ b/mods/content/supermatter/_supermatter.dme @@ -0,0 +1,29 @@ +#ifndef CONTENT_PACK_SUPERMATTER +#define CONTENT_PACK_SUPERMATTER +// BEGIN_INCLUDE +#include "_supermatter.dm" +#include "admin_setup_supermatter.dm" +#include "datums\sm_codex.dm" +#include "datums\sm_follow.dm" +#include "datums\sm_grief_fix.dm" +#include "datums\sm_looping_sound.dm" +#include "datums\sm_supply_drop.dm" +#include "datums\sm_supply_pack.dm" +#include "datums\supermatter_monitor.dm" +#include "endgame_cascade\cascade_blob.dm" +#include "endgame_cascade\portal.dm" +#include "endgame_cascade\universe.dm" +#include "items\sm_book.dm" +#include "items\sm_grenade.dm" +#include "machinery\sm_supply_beacon.dm" +#include "machinery\supermatter.dm" +#include "machinery\supermatter_core_console.dm" +#include "overrides\sm_fuel_compressor.dm" +#include "overrides\sm_meteor.dm" +#include "overrides\sm_singularity.dm" +#include "overrides\sm_strings.dm" +#include "overrides\sm_trader.dm" +#include "overrides\sm_xenoarchaeology.dm" +#include "structures\sm_closets.dm" +// END_INCLUDE +#endif diff --git a/mods/content/supermatter/admin_setup_supermatter.dm b/mods/content/supermatter/admin_setup_supermatter.dm new file mode 100644 index 000000000000..9664671e8361 --- /dev/null +++ b/mods/content/supermatter/admin_setup_supermatter.dm @@ -0,0 +1,116 @@ +#define ENERGY_NITROGEN 115 // Roughly 8 emitter shots. +#define ENERGY_CARBONDIOXIDE 150 // Roughly 10 emitter shots. +#define ENERGY_HYDROGEN 300 // Roughly 20 emitter shots. + +/datum/admins/proc/setup_supermatter() + set category = "Debug" + set name = "Setup Supermatter" + set desc = "Allows you to start the Supermatter engine." + + if (!istype(src,/datum/admins)) + src = usr.client.holder + if (!istype(src,/datum/admins)) + to_chat(usr, "Error: you are not an admin!") + return + + var/response = input(usr, "Are you sure? This will start up the engine with selected gas as coolant.", "Engine setup") as null|anything in list("N2", "CO2", "H2", "Abort") + if(!response || response == "Abort") + return + + var/errors = 0 + var/warnings = 0 + var/success = 0 + + log_and_message_admins("## SUPERMATTER SETUP - Setup initiated by [usr] using coolant type [response].") + + // CONFIGURATION PHASE + // Coolant canisters, set types according to response. + for(var/obj/effect/engine_setup/coolant_canister/C in global.engine_setup_markers) + switch(response) + if("N2") + C.canister_type = /obj/machinery/portable_atmospherics/canister/nitrogen/engine_setup/ + continue + if("CO2") + C.canister_type = /obj/machinery/portable_atmospherics/canister/carbon_dioxide/engine_setup/ + continue + if("H2") + C.canister_type = /obj/machinery/portable_atmospherics/canister/hydrogen/engine_setup/ + continue + + for(var/obj/effect/engine_setup/core/C in global.engine_setup_markers) + switch(response) + if("N2") + C.energy_setting = ENERGY_NITROGEN + continue + if("CO2") + C.energy_setting = ENERGY_CARBONDIOXIDE + continue + if("H2") + C.energy_setting = ENERGY_HYDROGEN + continue + + for(var/obj/effect/engine_setup/filter/F in global.engine_setup_markers) + F.coolant = response + + var/list/delayed_objects = list() + // SETUP PHASE + for(var/obj/effect/engine_setup/S in global.engine_setup_markers) + var/result = S.activate(0) + switch(result) + if(ENGINE_SETUP_OK) + success++ + continue + if(ENGINE_SETUP_WARNING) + warnings++ + continue + if(ENGINE_SETUP_ERROR) + errors++ + log_and_message_admins("## SUPERMATTER SETUP - Error encountered! Aborting.") + break + if(ENGINE_SETUP_DELAYED) + delayed_objects.Add(S) + continue + + if(!errors) + for(var/obj/effect/engine_setup/S in delayed_objects) + var/result = S.activate(1) + switch(result) + if(ENGINE_SETUP_OK) + success++ + continue + if(ENGINE_SETUP_WARNING) + warnings++ + continue + if(ENGINE_SETUP_ERROR) + errors++ + log_and_message_admins("## SUPERMATTER SETUP - Error encountered! Aborting.") + break + + log_and_message_admins("## SUPERMATTER SETUP - Setup completed with [errors] errors, [warnings] warnings and [success] successful steps.") + + return + + + +// Energises the supermatter. Errors when unable to locate supermatter. +/obj/effect/engine_setup/core + name = "Supermatter Core Marker" + var/energy_setting = 0 + +/obj/effect/engine_setup/core/activate(var/last = 0) + if(!last) + return ENGINE_SETUP_DELAYED + ..() + var/obj/machinery/power/supermatter/SM = locate() in get_turf(src) + if(!SM) + log_and_message_admins("## ERROR: Unable to locate supermatter core at [x] [y] [z]!") + return ENGINE_SETUP_ERROR + if(!energy_setting) + log_and_message_admins("## ERROR: Energy setting unset at [x] [y] [z]!") + return ENGINE_SETUP_ERROR + SM.power = energy_setting + return ENGINE_SETUP_OK + +#undef ENERGY_NITROGEN +#undef ENERGY_CARBONDIOXIDE +#undef ENERGY_HYDROGEN diff --git a/mods/content/supermatter/datums/sm_codex.dm b/mods/content/supermatter/datums/sm_codex.dm new file mode 100644 index 000000000000..c0d5c160faeb --- /dev/null +++ b/mods/content/supermatter/datums/sm_codex.dm @@ -0,0 +1,21 @@ + +/datum/codex_entry/guide/supermatter + name = "Guide to Supermatter Engines" + available_to_map_tech_level = MAP_TECH_LEVEL_SPACE + +/datum/codex_entry/supermatter + associated_paths = list(/obj/machinery/power/supermatter) + mechanics_text = "When energized by a laser (or something hitting it), it emits radiation and heat. If the heat reaches above 7000 kelvin, it will send an alert and start taking damage. \ + After integrity falls to zero percent, it will delaminate, causing a massive explosion, station-wide radiation spikes, and hallucinations. \ + Supermatter reacts badly to oxygen in the atmosphere. It'll also heat up really quick if it is in vacuum.
\ +
\ + Supermatter cores are extremely dangerous to be close to, and requires protection to handle properly. The protection you will need is:
\ + Optical meson scanners on your eyes, to prevent hallucinations when looking at the supermatter.
\ + Radiation helmet and suit, as the supermatter is radioactive.
\ +
\ + Touching the supermatter will result in *instant death*, with no corpse left behind! You can drag the supermatter, but anything else will kill you. \ + It is advised to obtain a genetic backup before trying to drag it." + antag_text = "Exposing the supermatter to oxygen or vaccum will cause it to start rapidly heating up. Sabotaging the supermatter and making it explode will \ + cause a period of lag as the explosion is processed by the server, as well as irradiating the entire station and causing hallucinations to happen. \ + Wearing radiation equipment will protect you from most of the delamination effects sans explosion." + available_to_map_tech_level = MAP_TECH_LEVEL_SPACE \ No newline at end of file diff --git a/mods/content/supermatter/datums/sm_follow.dm b/mods/content/supermatter/datums/sm_follow.dm new file mode 100644 index 000000000000..5b221ad03d61 --- /dev/null +++ b/mods/content/supermatter/datums/sm_follow.dm @@ -0,0 +1,3 @@ +/datum/follow_holder/supermatter + sort_order = 10 + followed_type = /obj/machinery/power/supermatter \ No newline at end of file diff --git a/mods/content/supermatter/datums/sm_grief_fix.dm b/mods/content/supermatter/datums/sm_grief_fix.dm new file mode 100644 index 000000000000..70dd9469abc1 --- /dev/null +++ b/mods/content/supermatter/datums/sm_grief_fix.dm @@ -0,0 +1,8 @@ +/decl/atmos_grief_fix_step/supermatter + name = "Supermatter depowered" + sort_order = 0 + +/decl/atmos_grief_fix_step/supermatter/act() + // Depower the supermatter, as it would quickly blow up once we remove all gases from the pipes. + for(var/obj/machinery/power/supermatter/S in SSmachines.machinery) + S.power = 0 \ No newline at end of file diff --git a/code/modules/supermatter/sm_looping_sound.dm b/mods/content/supermatter/datums/sm_looping_sound.dm similarity index 100% rename from code/modules/supermatter/sm_looping_sound.dm rename to mods/content/supermatter/datums/sm_looping_sound.dm diff --git a/mods/content/supermatter/datums/sm_supply_drop.dm b/mods/content/supermatter/datums/sm_supply_drop.dm new file mode 100644 index 000000000000..1560d1118d2c --- /dev/null +++ b/mods/content/supermatter/datums/sm_supply_drop.dm @@ -0,0 +1,5 @@ +/datum/supply_drop_loot/supermatter + name = "Supermatter" +/datum/supply_drop_loot/supermatter/New() + ..() + contents = list(/obj/machinery/power/supermatter) diff --git a/mods/content/supermatter/datums/sm_supply_pack.dm b/mods/content/supermatter/datums/sm_supply_pack.dm new file mode 100644 index 000000000000..5261f06a0693 --- /dev/null +++ b/mods/content/supermatter/datums/sm_supply_pack.dm @@ -0,0 +1,6 @@ +/decl/hierarchy/supply_pack/engineering/smbig + name = "Power - Supermatter core" + contains = list(/obj/machinery/power/supermatter) + containertype = /obj/structure/closet/crate/secure/large/supermatter + containername = "\improper Supermatter crate (CAUTION)" + access = access_ce \ No newline at end of file diff --git a/code/modules/modular_computers/file_system/programs/engineering/supermatter_monitor.dm b/mods/content/supermatter/datums/supermatter_monitor.dm similarity index 91% rename from code/modules/modular_computers/file_system/programs/engineering/supermatter_monitor.dm rename to mods/content/supermatter/datums/supermatter_monitor.dm index 08da0af07d61..2c20605a6b16 100644 --- a/code/modules/modular_computers/file_system/programs/engineering/supermatter_monitor.dm +++ b/mods/content/supermatter/datums/supermatter_monitor.dm @@ -5,7 +5,7 @@ /datum/computer_file/program/supermatter_monitor filename = "supmon" filedesc = "Supermatter Monitoring" - nanomodule_path = /datum/nano_module/program/supermatter_monitor/ + nanomodule_path = /datum/nano_module/program/supermatter_monitor program_icon_state = "smmon_0" program_key_state = "tech_key" program_menu_icon = "notice" @@ -215,3 +215,20 @@ if(S.uid == newuid) active = S return 1 + +// Add this to the software list for borgs +/obj/item/robot_module/engineering/grant_software() + software |= /datum/computer_file/program/supermatter_monitor + return ..() + +/obj/item/robot_module/flying/repair/grant_software() + software |= /datum/computer_file/program/supermatter_monitor + return ..() + +/obj/machinery/computer/modular/telescreen/preset/engineering/Initialize(mapload, d, populate_parts) + default_software |= /datum/computer_file/program/supermatter_monitor + return ..() + +/obj/machinery/computer/modular/preset/engineering/Initialize(mapload, d, populate_parts) + default_software |= /datum/computer_file/program/supermatter_monitor + return ..() \ No newline at end of file diff --git a/code/game/gamemodes/endgame/supermatter_cascade/cascade_blob.dm b/mods/content/supermatter/endgame_cascade/cascade_blob.dm similarity index 98% rename from code/game/gamemodes/endgame/supermatter_cascade/cascade_blob.dm rename to mods/content/supermatter/endgame_cascade/cascade_blob.dm index ef04b1069f78..6cd76d142330 100644 --- a/code/game/gamemodes/endgame/supermatter_cascade/cascade_blob.dm +++ b/mods/content/supermatter/endgame_cascade/cascade_blob.dm @@ -9,7 +9,7 @@ //luminosity = 5 //l_color="#0066ff" plane = ABOVE_LIGHTING_PLANE - layer = SUPERMATTER_WALL_LAYER + layer = SUBSPACE_WALL_LAYER var/list/avail_dirs = list(NORTH,SOUTH,EAST,WEST,UP,DOWN) diff --git a/code/game/gamemodes/endgame/supermatter_cascade/portal.dm b/mods/content/supermatter/endgame_cascade/portal.dm similarity index 100% rename from code/game/gamemodes/endgame/supermatter_cascade/portal.dm rename to mods/content/supermatter/endgame_cascade/portal.dm diff --git a/code/game/gamemodes/endgame/supermatter_cascade/universe.dm b/mods/content/supermatter/endgame_cascade/universe.dm similarity index 100% rename from code/game/gamemodes/endgame/supermatter_cascade/universe.dm rename to mods/content/supermatter/endgame_cascade/universe.dm diff --git a/mods/content/supermatter/items/sm_book.dm b/mods/content/supermatter/items/sm_book.dm new file mode 100644 index 000000000000..8230625788a0 --- /dev/null +++ b/mods/content/supermatter/items/sm_book.dm @@ -0,0 +1,6 @@ +/obj/item/book/manual/supermatter_engine + name = "supermatter engine reference manual" + icon = 'icons/obj/items/books/book_supermatter.dmi' + author = "Central Engineering Division" + title = "Supermatter Engine Operating Manual" + guide_decl = /datum/codex_entry/guide/supermatter \ No newline at end of file diff --git a/code/game/objects/items/weapons/grenades/supermatter.dm b/mods/content/supermatter/items/sm_grenade.dm similarity index 50% rename from code/game/objects/items/weapons/grenades/supermatter.dm rename to mods/content/supermatter/items/sm_grenade.dm index 4f2758b53e30..b7f3186e666f 100644 --- a/code/game/objects/items/weapons/grenades/supermatter.dm +++ b/mods/content/supermatter/items/sm_grenade.dm @@ -33,3 +33,25 @@ if(world.time > implode_at) explosion(loc, 0, 1, 3, 4) qdel(src) + +/obj/item/box/supermatters + name = "box of supermatter grenades" + desc = "A box containing 5 highly experimental supermatter grenades." + icon_state = "radbox" + +/obj/item/box/supermatters/WillContain() + return list(/obj/item/grenade/supermatter = 5) + +/datum/uplink_item/item/grenades/supermatter + name = "1x Supermatter Grenade" + desc = "This grenade contains a small supermatter shard which will delaminate upon activation and pull in nearby objects, irradiate lifeforms, and eventually explode." + item_cost = 15 + antag_roles = list(/decl/special_role/mercenary) + path = /obj/item/grenade/supermatter + +/datum/uplink_item/item/grenades/supermatters + name = "5x Supermatter Grenades" + desc = "These grenades contains a small supermatter shard which will delaminate upon activation and pull in nearby objects, irradiate lifeforms, and eventually explode." + item_cost = 60 + antag_roles = list(/decl/special_role/mercenary) + path = /obj/item/box/supermatters diff --git a/mods/content/supermatter/machinery/sm_supply_beacon.dm b/mods/content/supermatter/machinery/sm_supply_beacon.dm new file mode 100644 index 000000000000..e6a622480b60 --- /dev/null +++ b/mods/content/supermatter/machinery/sm_supply_beacon.dm @@ -0,0 +1,7 @@ +/obj/item/supply_beacon/supermatter + name = "inactive supermatter supply beacon" + deploy_path = /obj/structure/supply_beacon/supermatter + +/obj/structure/supply_beacon/supermatter + name = "supermatter supply beacon" + drop_type = "supermatter" diff --git a/code/modules/supermatter/supermatter.dm b/mods/content/supermatter/machinery/supermatter.dm similarity index 98% rename from code/modules/supermatter/supermatter.dm rename to mods/content/supermatter/machinery/supermatter.dm index 5cb5d84467e5..f05b56abdaac 100644 --- a/code/modules/supermatter/supermatter.dm +++ b/mods/content/supermatter/machinery/supermatter.dm @@ -99,7 +99,7 @@ var/global/list/supermatter_delam_accent_sounds = list( SPAN_DANGER("As \the [source] slowly stops resonating, you find your skin covered in new radiation burns."), 1,\ SPAN_DANGER("The unearthly ringing subsides and you notice you have new radiation burns."), 2) else - M.show_message(SPAN_DANGER("You hear an uneartly ringing and notice your skin is covered in fresh radiation burns."), 2) + M.show_message(SPAN_DANGER("You hear an unearthly ringing and notice your skin is covered in fresh radiation burns."), 2) var/rads = 500 SSradiation.radiate(source, rads) @@ -116,6 +116,7 @@ var/global/list/supermatter_delam_accent_sounds = list( /decl/material/solid/exotic_matter = MATTER_AMOUNT_PRIMARY, /decl/material/solid/metal/steel = MATTER_AMOUNT_REINFORCEMENT ) + w_class = ITEM_SIZE_LARGE_STRUCTURE var/nitrogen_retardation_factor = 0.15 // Higher == N2 slows reaction more var/thermal_release_modifier = 10000 // Higher == more heat released during reaction @@ -696,6 +697,7 @@ var/global/list/supermatter_delam_accent_sounds = list( desc = "A strangely translucent and iridescent crystal that looks like it used to be part of a larger structure. You get headaches just from looking at it." icon = 'icons/obj/supermatter_32.dmi' icon_state = "supermatter_shard" + w_class = ITEM_SIZE_STRUCTURE warning_point = 50 emergency_point = 400 @@ -708,6 +710,7 @@ var/global/list/supermatter_delam_accent_sounds = list( /obj/machinery/power/supermatter/medium icon = 'icons/obj/supermatter_32.dmi' + w_class = (ITEM_SIZE_STRUCTURE + ITEM_SIZE_LARGE_STRUCTURE) / 2 // halfway between a shard and a normal SM /obj/machinery/power/supermatter/shard/announce_warning() //Shards don't get announcements return diff --git a/mods/content/supermatter/machinery/supermatter_core_console.dm b/mods/content/supermatter/machinery/supermatter_core_console.dm new file mode 100644 index 000000000000..8b2bf0e175ca --- /dev/null +++ b/mods/content/supermatter/machinery/supermatter_core_console.dm @@ -0,0 +1,45 @@ +// Does this really need to be its own thing...? +// Can it not just be a stock parts preset or something? +/obj/machinery/computer/air_control/supermatter_core + frequency = 1438 + out_pressure_mode = 1 + +/datum/fabricator_recipe/imprinter/circuit/supermatter_control + path = /obj/item/stock_parts/circuitboard/air_management/supermatter_core + +/obj/item/stock_parts/circuitboard/air_management/supermatter_core + name = "circuitboard (core control)" + build_path = /obj/machinery/computer/air_control/supermatter_core + frequency = 1438 + var/input_tag + var/output_tag + + var/list/input_info = list() + var/list/output_info = list() + + var/input_flow_setting = 700 + var/pressure_setting = 100 + +/obj/item/stock_parts/circuitboard/air_management/supermatter_core/construct(var/obj/machinery/computer/air_control/supermatter_core/SC) + if(..(SC)) + SC.input_tag = input_tag + SC.output_tag = output_tag + + SC.input_info = input_info.Copy() + SC.output_info = output_info.Copy() + + SC.input_flow_setting = input_flow_setting + SC.pressure_setting = input_flow_setting + return 1 + +/obj/item/stock_parts/circuitboard/air_management/supermatter_core/deconstruct(var/obj/machinery/computer/air_control/supermatter_core/SC) + if(..(SC)) + input_tag = SC.input_tag + output_tag = SC.output_tag + + input_info = SC.input_info.Copy() + output_info = SC.output_info.Copy() + + input_flow_setting = SC.input_flow_setting + pressure_setting = SC.input_flow_setting + return 1 \ No newline at end of file diff --git a/nano/templates/supermatter_crystal.tmpl b/mods/content/supermatter/nano_templates/supermatter_crystal.tmpl similarity index 100% rename from nano/templates/supermatter_crystal.tmpl rename to mods/content/supermatter/nano_templates/supermatter_crystal.tmpl diff --git a/nano/templates/supermatter_monitor.tmpl b/mods/content/supermatter/nano_templates/supermatter_monitor.tmpl similarity index 100% rename from nano/templates/supermatter_monitor.tmpl rename to mods/content/supermatter/nano_templates/supermatter_monitor.tmpl diff --git a/mods/content/supermatter/overrides/sm_fuel_compressor.dm b/mods/content/supermatter/overrides/sm_fuel_compressor.dm new file mode 100644 index 000000000000..e259fa266258 --- /dev/null +++ b/mods/content/supermatter/overrides/sm_fuel_compressor.dm @@ -0,0 +1,13 @@ +/obj/machinery/fuel_compressor/add_material(obj/thing, mob/user) + . = ..() + if(.) + return TRUE + if(istype(thing, /obj/machinery/power/supermatter/shard)) + var/exotic_matter_amount = thing?.matter?[/decl/material/solid/exotic_matter] + if(exotic_matter_amount <= 0) + return FALSE + stored_material[/decl/material/solid/exotic_matter] = exotic_matter_amount + to_chat(user, SPAN_NOTICE("You awkwardly cram \the [thing] into \the [src]'s material buffer.")) + qdel(thing) + return TRUE + return FALSE \ No newline at end of file diff --git a/mods/content/supermatter/overrides/sm_meteor.dm b/mods/content/supermatter/overrides/sm_meteor.dm new file mode 100644 index 000000000000..449ad80fbb91 --- /dev/null +++ b/mods/content/supermatter/overrides/sm_meteor.dm @@ -0,0 +1,5 @@ +/obj/effect/meteor/destroyer/supermatter + name = "supermatter shard" + desc = "Oh god, what will be next..?" + icon = 'icons/obj/supermatter_32.dmi' + icon_state = "supermatter" diff --git a/mods/content/supermatter/overrides/sm_singularity.dm b/mods/content/supermatter/overrides/sm_singularity.dm new file mode 100644 index 000000000000..b13506cd580b --- /dev/null +++ b/mods/content/supermatter/overrides/sm_singularity.dm @@ -0,0 +1,46 @@ +#define STAGE_SUPER 11 + +/// A singularity that has the mass of a supermatter crystal. +/decl/singularity_stage/stage_super + name = "super gravitational singularity" + desc = "A gravitational singularity with the properties of supermatter. It has the power to destroy worlds." + min_energy = 50000 + max_energy = INFINITY + stage_size = STAGE_SUPER + footprint = 6 + icon = 'icons/effects/352x352.dmi' + icon_state = "singularity_s11"//uh, whoever drew that, you know that black holes are supposed to look dark right? What's this, the clown's singulo? + pixel_x = -160 + pixel_y = -160 + grav_pull = 16 + consume_range = 5 + dissipates_over_time = 0 //It cant go smaller due to e loss + event_chance = 25 //Events will fire off more often. + forced_event = /decl/singularity_event/supermatter_wave + wander = TRUE + explosion_vulnerable = FALSE + em_heavy_range = 12 + em_light_range = 16 + mesmerize_text = "helpless" + the_goggles_do_nothing = TRUE + ignore_obstacles = TRUE + +/decl/singularity_stage/stage_super/grow_to(obj/effect/singularity/source) + source.visible_message(SPAN_SINISTER("You witness the creation of a destructive force that cannot possibly be stopped by human hands.")) + +// why is this not shrink_from or something? +/decl/singularity_stage/stage_five/shrink_to(obj/effect/singularity/source) + source.visible_message(SPAN_WARNING("\The [source] miraculously reduces in size and loses its supermatter properties.")) + +// Singularity event +/decl/singularity_event/supermatter_wave/handle_event(obj/effect/singularity/source) + for(var/mob/living/M in view(10, source.loc)) + to_chat(M, SPAN_WARNING("You hear an unearthly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat.")) + if(prob(67)) + to_chat(M, SPAN_NOTICE("Miraculously, it fails to kill you.")) + else + to_chat(M, SPAN_DANGER("You don't even have a moment to react as you are reduced to ashes by the intense radiation.")) + M.dust() + SSradiation.radiate(source, rand(source.energy)) + +#undef STAGE_SUPER \ No newline at end of file diff --git a/mods/content/supermatter/overrides/sm_strings.dm b/mods/content/supermatter/overrides/sm_strings.dm new file mode 100644 index 000000000000..2d7427f03d3d --- /dev/null +++ b/mods/content/supermatter/overrides/sm_strings.dm @@ -0,0 +1,19 @@ +/decl/game_mode/possible_ert_disabled_reasons() + var/static/sm_injected = FALSE + if(sm_injected) + return ..() + sm_injected = TRUE + . = ..() + . += "supermatter dust" + +/obj/item/disk/secret_project/get_secret_project_nouns() + var/static/sm_injected = FALSE + if(sm_injected) + return ..() + sm_injected = TRUE + . = ..() + . += "a supermatter engine" + return . + +/decl/material/solid/exotic_matter + lore_text = "Hypercrystalline supermatter is a subset of non-baryonic 'exotic' matter. It is found mostly in the heart of large stars, and features heavily in all kinds of fringe physics-defying technology." \ No newline at end of file diff --git a/mods/content/supermatter/overrides/sm_trader.dm b/mods/content/supermatter/overrides/sm_trader.dm new file mode 100644 index 000000000000..ded45374bd98 --- /dev/null +++ b/mods/content/supermatter/overrides/sm_trader.dm @@ -0,0 +1,3 @@ +/datum/trader/ship/unique/rock/New() + ..() + possible_trading_items[/obj/machinery/power/supermatter] = TRADER_ALL \ No newline at end of file diff --git a/mods/content/supermatter/overrides/sm_xenoarchaeology.dm b/mods/content/supermatter/overrides/sm_xenoarchaeology.dm new file mode 100644 index 000000000000..537de7a311cf --- /dev/null +++ b/mods/content/supermatter/overrides/sm_xenoarchaeology.dm @@ -0,0 +1,7 @@ +/datum/artifact_find/New() + var/static/supermatter_injected = FALSE + if(!supermatter_injected) + potential_finds[/obj/machinery/power/supermatter] = 5 + potential_finds[/obj/machinery/power/supermatter/shard] = 25 + supermatter_injected = TRUE + ..() diff --git a/mods/content/supermatter/structures/sm_closets.dm b/mods/content/supermatter/structures/sm_closets.dm new file mode 100644 index 000000000000..a1e58097f939 --- /dev/null +++ b/mods/content/supermatter/structures/sm_closets.dm @@ -0,0 +1,2 @@ +/obj/structure/closet/crate/secure/large/supermatter + closet_appearance = /decl/closet_appearance/large_crate/secure/hazard \ No newline at end of file diff --git a/mods/gamemodes/cult/hell_universe.dm b/mods/gamemodes/cult/hell_universe.dm index c5e5ad0adf02..5133b72ba09a 100644 --- a/mods/gamemodes/cult/hell_universe.dm +++ b/mods/gamemodes/cult/hell_universe.dm @@ -40,9 +40,3 @@ In short: for(var/mob/living/simple_animal/M in SSmobs.mob_list) if(M && !M.client) M.set_stat(DEAD) - -// Disable Narsie when we enter other (non-hell) universe states -/datum/universal_state/supermatter_cascade/OnEnter() - // Disable Nar-Sie. - var/decl/special_role/cultist/cult = GET_DECL(/decl/special_role/cultist) - cult.allow_narsie = 0 \ No newline at end of file diff --git a/mods/gamemodes/meteor/gamemode.dm b/mods/gamemodes/meteor/gamemode.dm index 10212d20aa99..5836f1ad1547 100644 --- a/mods/gamemodes/meteor/gamemode.dm +++ b/mods/gamemodes/meteor/gamemode.dm @@ -93,8 +93,7 @@ /obj/effect/meteor/irradiated=10, /obj/effect/meteor/golden=10, /obj/effect/meteor/silver=10, - /obj/effect/meteor/flaming=10, - /obj/effect/meteor/supermatter=1 + /obj/effect/meteor/flaming=10 ) // As a bonus, more frequent events. diff --git a/mods/~compatibility/patches/supermatter.dm b/mods/~compatibility/patches/supermatter.dm new file mode 100644 index 000000000000..27f6a6f44758 --- /dev/null +++ b/mods/~compatibility/patches/supermatter.dm @@ -0,0 +1,12 @@ +// Add the supermatter monitor to engineering jobs' default software. +#ifdef MODPACK_STANDARD_JOBS +#include "supermatter/supermatter_jobs.dm" +#endif +// Disable Narsie during the supermatter cascade. +#ifdef GAMEMODE_PACK_CULT +#include "supermatter/sm_disable_narsie.dm" +#endif +// Add the supermatter meteor to the meteor gamemode's cataclysmic meteors list. +#ifdef GAMEMODE_PACK_METEOR +#include "supermatter/sm_meteor.dm" +#endif \ No newline at end of file diff --git a/mods/~compatibility/patches/supermatter/sm_disable_narsie.dm b/mods/~compatibility/patches/supermatter/sm_disable_narsie.dm new file mode 100644 index 000000000000..a660384347b4 --- /dev/null +++ b/mods/~compatibility/patches/supermatter/sm_disable_narsie.dm @@ -0,0 +1,4 @@ +// Disable Narsie when a supermatter cascade begins. +/datum/universal_state/supermatter_cascade/OnEnter() + var/decl/special_role/cultist/cult = GET_DECL(/decl/special_role/cultist) + cult.allow_narsie = 0 \ No newline at end of file diff --git a/mods/~compatibility/patches/supermatter/sm_meteor.dm b/mods/~compatibility/patches/supermatter/sm_meteor.dm new file mode 100644 index 000000000000..df383bc3f765 --- /dev/null +++ b/mods/~compatibility/patches/supermatter/sm_meteor.dm @@ -0,0 +1,3 @@ +/decl/game_mode/meteor/Initialize() + . = ..() // No debounce, decls only init once. + meteors_cataclysm[/obj/effect/meteor/destroyer/supermatter] = 1 \ No newline at end of file diff --git a/mods/~compatibility/patches/supermatter/supermatter_jobs.dm b/mods/~compatibility/patches/supermatter/supermatter_jobs.dm new file mode 100644 index 000000000000..1603bf04ddad --- /dev/null +++ b/mods/~compatibility/patches/supermatter/supermatter_jobs.dm @@ -0,0 +1,7 @@ +/datum/job/chief_engineer/New() + ..() + software_on_spawn |= /datum/computer_file/program/supermatter_monitor + +/datum/job/engineer/New() + ..() + software_on_spawn |= /datum/computer_file/program/supermatter_monitor \ No newline at end of file diff --git a/mods/~compatibility/~compatibility.dm b/mods/~compatibility/~compatibility.dm index b5e9647781f6..a99baab05885 100644 --- a/mods/~compatibility/~compatibility.dm +++ b/mods/~compatibility/~compatibility.dm @@ -9,4 +9,8 @@ #ifdef GAMEMODE_PACK_MIXED #include "patches/mixed_gamemodes.dm" -#endif \ No newline at end of file +#endif + +#ifdef CONTENT_PACK_SUPERMATTER +#include "patches/supermatter.dm" +#endif diff --git a/nebula.dme b/nebula.dme index 5d10b384d1c5..426bf72bb2fd 100644 --- a/nebula.dme +++ b/nebula.dme @@ -782,9 +782,6 @@ #include "code\game\gamemodes\endgame\endgame.dm" #include "code\game\gamemodes\endgame\ftl_jump\ftl_jump.dm" #include "code\game\gamemodes\endgame\nuclear_explosion\nuclear_explosion.dm" -#include "code\game\gamemodes\endgame\supermatter_cascade\cascade_blob.dm" -#include "code\game\gamemodes\endgame\supermatter_cascade\portal.dm" -#include "code\game\gamemodes\endgame\supermatter_cascade\universe.dm" #include "code\game\gamemodes\events\power_failure.dm" #include "code\game\gamemodes\extended\extended.dm" #include "code\game\gamemodes\nuclear\nuclear.dm" @@ -1312,7 +1309,6 @@ #include "code\game\objects\items\weapons\grenades\prank_grenades.dm" #include "code\game\objects\items\weapons\grenades\smokebomb.dm" #include "code\game\objects\items\weapons\grenades\spawnergrenade.dm" -#include "code\game\objects\items\weapons\grenades\supermatter.dm" #include "code\game\objects\items\weapons\implants\implant.dm" #include "code\game\objects\items\weapons\implants\implantcase.dm" #include "code\game\objects\items\weapons\implants\implantchair.dm" @@ -3162,7 +3158,6 @@ #include "code\modules\modular_computers\file_system\programs\engineering\rcon_console.dm" #include "code\modules\modular_computers\file_system\programs\engineering\shields_monitor.dm" #include "code\modules\modular_computers\file_system\programs\engineering\shutoff_valve.dm" -#include "code\modules\modular_computers\file_system\programs\engineering\supermatter_monitor.dm" #include "code\modules\modular_computers\file_system\programs\generic\camera.dm" #include "code\modules\modular_computers\file_system\programs\generic\configurator.dm" #include "code\modules\modular_computers\file_system\programs\generic\crew_manifest.dm" @@ -3416,6 +3411,7 @@ #include "code\modules\posture\posture_bodytype.dm" #include "code\modules\posture\posture_mob.dm" #include "code\modules\posture\posture_subtypes.dm" +#include "code\modules\power\admin_setup_engine.dm" #include "code\modules\power\apc.dm" #include "code\modules\power\batteryrack.dm" #include "code\modules\power\breaker_box.dm" @@ -3828,9 +3824,6 @@ #include "code\modules\submaps\submap_job.dm" #include "code\modules\submaps\submap_join.dm" #include "code\modules\submaps\submap_landmark.dm" -#include "code\modules\supermatter\setup_supermatter.dm" -#include "code\modules\supermatter\sm_looping_sound.dm" -#include "code\modules\supermatter\supermatter.dm" #include "code\modules\surgery\__surgery_setup.dm" #include "code\modules\surgery\_surgery.dm" #include "code\modules\surgery\bones.dm"