Coronal Mass Ejection Event (#3280)

* a

* Update cme.dm

* Update _cme_defines.dm

* Update cme.dm

* Update cme.dm

* Update cme.dm

* a

* Update cme.dm

* a

* random!

* TEMP DEBUG STATS, UNDO ONCE READY TO MERGE!

* a

* Update cme.dm

* better sfx

* Update cme.dm

* Update cme.dm

* Update cme.dm

* Neutralize!

* Update cme.dm

* Update cme.dm

* a

* Update cme.dm

* Update cme.dm

* Update cme.dm

* CME changes

* Update anomaly_neutralizer.dm

* aa

* Update cme.dm

* a

* Update admin_verbs.dm

* Fix gamma loop

* Update cme.dm

* Update set_security_level.dm

* Update code/controllers/subsystem/events.dm
This commit is contained in:
Gandalf
2021-02-15 20:18:57 +00:00
committed by GitHub
parent 9fc4da0f05
commit c0b99ccfef
11 changed files with 414 additions and 8 deletions
+6 -1
View File
@@ -3,6 +3,8 @@ SUBSYSTEM_DEF(events)
init_order = INIT_ORDER_EVENTS
runlevels = RUNLEVEL_GAME
var/manual_mode = FALSE //SKYRAT EDIT ADDITION: Is this subsystem being manually operated by the admins?
var/list/control = list() //list of all datum/round_event_control. Used for selecting events based on weight and occurrences.
var/list/running = list() //list of all existing /datum/round_event
var/list/currentrun = list()
@@ -60,7 +62,10 @@ SUBSYSTEM_DEF(events)
set waitfor = FALSE //for the admin prompt
if(!CONFIG_GET(flag/allow_random_events))
return
//SKYRAT EDIT ADDITION
if(manual_mode)
return
//SKYRAT EDIT END
var/gamemode = SSticker.mode.config_tag
var/players_amt = get_active_player_count(alive_check = 1, afk_check = 1, human_check = 1)
// Only alive, non-AFK human players count towards this.
@@ -11,7 +11,7 @@
slot_flags = ITEM_SLOT_BELT
item_flags = NOBLUDGEON
/obj/item/anomaly_neutralizer/afterattack(atom/target, mob/user, proximity)
/obj/item/anomaly_neutralizer/afterattack(atom/target, mob/living/user, proximity) //SKYRAT EDIT - MOB/LIVING
..()
if(!proximity || !target)
return
@@ -20,3 +20,14 @@
to_chat(user, "<span class='notice'>The circuitry of [src] fries from the strain of neutralizing [A]!</span>")
A.anomalyNeutralize()
qdel(src)
//SKYRAT EDIT ADDITON START - CME
if(istype(target, /obj/effect/cme))
var/obj/effect/cme/C = target
to_chat(user, "<span class='danger'>The circuitry of [src] fries from the strain of neutralizing [C] causing you to absorb the shock!</span>")
do_sparks(5, FALSE, src)
electrocute_mob(user, get_area(src), src, 1, TRUE)
user.adjust_fire_stacks(5)
user.IgniteMob()
C.anomalyNeutralize()
qdel(src)
//SKYRAT EDIT END
+2
View File
@@ -4,6 +4,7 @@ GLOBAL_LIST_INIT(admin_verbs_default, world.AVerbsDefault())
GLOBAL_PROTECT(admin_verbs_default)
/world/proc/AVerbsDefault()
return list(
/client/proc/manual_events_mode, //SKYRAT EDIT, ENABLES MANUAL EVENT MODE!
/client/proc/deadmin, /*destroys our own admin datum so we can play as a regular player*/
/client/proc/cmd_admin_say, /*admin-only ooc chat*/
/client/proc/cmd_loud_admin_say, /*ditto except its annoying - SKYRAT EDIT ADDITION - ADMIN*/
@@ -11,6 +12,7 @@ GLOBAL_PROTECT(admin_verbs_default)
/client/proc/debug_variables, /*allows us to -see- the variables of any instance in the game. +VAREDIT needed to modify*/
/client/proc/dsay, /*talk in deadchat using our ckey/fakekey*/
/client/proc/investigate_show, /*various admintools for investigation. Such as a singulo grief-log*/
/client/proc/secrets,
/client/proc/toggle_hear_radio, /*allows admins to hide all radio output*/
/client/proc/reload_admins,
@@ -156,7 +156,8 @@ GLOBAL_VAR_INIT(gamma_looping, FALSE) //This is so we know if the gamma sound ef
if(SEC_LEVEL_DELTA)
alert_sound_to_playing('modular_skyrat/modules/alerts/sound/misc/deltaklaxon.ogg')
if(SEC_LEVEL_GAMMA)
gamma_loop() //Gamma has a looping sound effect
if(!GLOB.gamma_looping)
gamma_loop() //Gamma has a looping sound effect
/proc/alert_sound_to_playing(soundin, volume = 100, vary = FALSE, frequency = 0, falloff = FALSE, channel = 0, pressure_affected = FALSE, sound/S)
if(!S)
@@ -169,12 +170,11 @@ GLOBAL_VAR_INIT(gamma_looping, FALSE) //This is so we know if the gamma sound ef
//ALERT ALERT ALERT SHITCODE
/proc/gamma_loop() //Loops gamma sound
if(GLOB.gamma_looping)
if(GLOB.security_level != SEC_LEVEL_GAMMA)
GLOB.gamma_looping = FALSE
return
GLOB.gamma_looping = TRUE
while(GLOB.security_level == SEC_LEVEL_GAMMA)
alert_sound_to_playing('modular_skyrat/modules/alerts/sound/misc/gamma_alert.ogg')
sleep(GAMMA_LOOP_LENGTH)
GLOB.gamma_looping = FALSE
alert_sound_to_playing('modular_skyrat/modules/alerts/sound/misc/gamma_alert.ogg')
addtimer(CALLBACK(.proc/gamma_loop), GAMMA_LOOP_LENGTH)
#undef GAMMA_LOOP_LENGTH
@@ -0,0 +1,55 @@
////////////////////////
//CME DEFINES FILE!
///////////////////////
#define CME_RANDOM "random"
#define CME_MINIMAL "minimal"
#define CME_MODERATE "moderate"
#define CME_EXTREME "extreme"
#define CME_ARMAGEDDON "armageddon"
//Times are SECONDS, they're devided by 2 because that's how long the controller takes to process. 20 deciseconds = 2 seconds. I know, it's dumb as fuck.
#define CME_MINIMAL_LIGHT_RANGE_LOWER 7 //The lowest range for the emp pulse light range.
#define CME_MINIMAL_LIGHT_RANGE_UPPER 10 //The highest range for the emp pulse light range.
#define CME_MINIMAL_HEAVY_RANGE_LOWER 5 //The lowest range for the emp pulse heavy range.
#define CME_MINIMAL_HEAVY_RANGE_UPPER 7 //The highest range for the emp pulse heavy range.
#define CME_MINIMAL_FREQUENCY_LOWER 25 / 2 //The lower time range for cme bubbles to appear.
#define CME_MINIMAL_FREQUENCY_UPPER 30 / 2 //The higher time range for cme bubbles to appear.
#define CME_MINIMAL_BUBBLE_BURST_TIME 40 SECONDS //The time taken for a cme bubble to pop.
#define CME_MINIMAL_START_LOWER 180 / 2 //The lowest amount of time for the event to start from the announcement. - Prep time
#define CME_MINIMAL_START_UPPER 240 / 2 //The highest amount of time for the event to start from the announcement. - Prep time
#define CME_MINIMAL_END 240 / 2 //The amount of time starting from THE MINIMAL START TIME for the event to end. - How long it actually lasts.
#define CME_MODERATE_LIGHT_RANGE_LOWER 10
#define CME_MODERATE_LIGHT_RANGE_UPPER 15
#define CME_MODERATE_HEAVY_RANGE_LOWER 7
#define CME_MODERATE_HEAVY_RANGE_UPPER 10
#define CME_MODERATE_FREQUENCY_LOWER 20 / 2
#define CME_MODERATE_FREQUENCY_UPPER 25 / 2
#define CME_MODERATE_BUBBLE_BURST_TIME 30 SECONDS
#define CME_MODERATE_START_LOWER 120 / 2
#define CME_MODERATE_START_UPPER 180 / 2
#define CME_MODERATE_END 300 / 2
#define CME_EXTREME_LIGHT_RANGE_LOWER 15
#define CME_EXTREME_LIGHT_RANGE_UPPER 20
#define CME_EXTREME_HEAVY_RANGE_LOWER 10
#define CME_EXTREME_HEAVY_RANGE_UPPER 13
#define CME_EXTREME_FREQUENCY_LOWER 15 / 2
#define CME_EXTREME_FREQUENCY_UPPER 20 / 2
#define CME_EXTREME_BUBBLE_BURST_TIME 20 SECONDS
#define CME_EXTREME_START_LOWER 60 /2
#define CME_EXTREME_START_UPPER 120 / 2
#define CME_EXTREME_END 360 / 2
#define CME_ARMAGEDDON_LIGHT_RANGE_LOWER 25
#define CME_ARMAGEDDON_LIGHT_RANGE_UPPER 30
#define CME_ARMAGEDDON_HEAVY_RANGE_LOWER 20
#define CME_ARMAGEDDON_HEAVY_RANGE_UPPER 25
#define CME_ARMAGEDDON_FREQUENCY_LOWER 5 / 2
#define CME_ARMAGEDDON_FREQUENCY_UPPER 7 / 2
#define CME_ARMAGEDDON_BUBBLE_BURST_TIME 10 SECONDS
#define CME_ARMAGEDDON_START_LOWER 60 / 2
#define CME_ARMAGEDDON_START_UPPER 70 / 2
#define CME_ARMAGEDDON_END 1200 / 2
+307
View File
@@ -0,0 +1,307 @@
////////////////////////////////////
//CME EVENT SYSTEM
//SEE _CME_DEFINES.DM FOR SETTINGS.
////////////////////////////////////
/* Welcome to the CME control system.
This controls the CME event, or coronal mass ejection event, which causes multiple EMP bubbles to form around the station
depending on conditons and time. There are currently 4 settings of CME, all of which have settings defined in the
cme defines DM file. See that for more info
Armageddon is truly going to fuck the station, use it sparingly.
*/
/datum/round_event_control/cme
name = "Coronal Mass Ejection: Minimal"
typepath = /datum/round_event/cme
weight = 7
min_players = 15
max_occurrences = 2
earliest_start = 20 MINUTES
/datum/round_event/cme
startWhen = 6
endWhen = 66
announceWhen = 10
var/cme_intensity = CME_MINIMAL
var/cme_frequency_lower
var/cme_frequency_upper
var/list/cme_start_locs = list()
/datum/round_event_control/cme/random
name = "Coronal Mass Ejection: Random"
typepath = /datum/round_event/cme/random
weight = 10
min_players = 15
max_occurrences = 3
earliest_start = 20 MINUTES
/datum/round_event/cme/random
cme_intensity = CME_RANDOM
/datum/round_event_control/cme/moderate
name = "Coronal Mass Ejection: Moderate"
typepath = /datum/round_event/cme/moderate
weight = 7
min_players = 20
max_occurrences = 1
earliest_start = 35 MINUTES
/datum/round_event/cme/moderate
cme_intensity = CME_MODERATE
/datum/round_event_control/cme/extreme
name = "Coronal Mass Ejection: Extreme"
typepath = /datum/round_event/cme/extreme
weight = 4
min_players = 25
max_occurrences = 1
earliest_start = 45 MINUTES
/datum/round_event/cme/extreme
cme_intensity = CME_EXTREME
/datum/round_event_control/cme/armageddon
name = "Coronal Mass Ejection: Armageddon"
typepath = /datum/round_event/cme/armageddon
weight = 0
max_occurrences = 0
/datum/round_event/cme/armageddon
cme_intensity = CME_ARMAGEDDON
/datum/round_event/cme/setup()
if(!cme_intensity)
cme_intensity = pick(CME_MINIMAL, CME_MODERATE, CME_EXTREME)
switch(cme_intensity)
if(CME_RANDOM)
cme_frequency_lower = CME_MODERATE_FREQUENCY_LOWER
cme_frequency_upper = CME_MODERATE_FREQUENCY_UPPER
startWhen = rand(CME_MODERATE_START_LOWER, CME_MODERATE_START_UPPER)
endWhen = startWhen + rand(CME_MINIMAL_END, CME_EXTREME_END)
if(CME_MINIMAL)
cme_frequency_lower = CME_MINIMAL_FREQUENCY_LOWER
cme_frequency_upper = CME_MINIMAL_FREQUENCY_UPPER
startWhen = rand(CME_MINIMAL_START_LOWER, CME_MINIMAL_START_UPPER)
endWhen = startWhen + CME_MINIMAL_END
if(CME_MODERATE)
cme_frequency_lower = CME_MODERATE_FREQUENCY_LOWER
cme_frequency_upper = CME_MODERATE_FREQUENCY_UPPER
startWhen = rand(CME_MODERATE_START_LOWER, CME_MODERATE_START_UPPER)
endWhen = startWhen + CME_MODERATE_END
if(CME_EXTREME)
cme_frequency_lower = CME_EXTREME_FREQUENCY_LOWER
cme_frequency_upper = CME_EXTREME_FREQUENCY_UPPER
startWhen = rand(CME_EXTREME_START_LOWER, CME_EXTREME_START_UPPER)
endWhen = startWhen + CME_EXTREME_END
if(CME_ARMAGEDDON)
cme_frequency_lower = CME_ARMAGEDDON_FREQUENCY_LOWER
cme_frequency_upper = CME_ARMAGEDDON_FREQUENCY_UPPER
startWhen = rand(CME_ARMAGEDDON_START_LOWER, CME_ARMAGEDDON_START_UPPER)
endWhen = startWhen + CME_ARMAGEDDON_END
else
message_admins("CME setup failure, aborting.")
kill()
for(var/turf/open/floor/T in world)
if(is_station_level(T.z))
cme_start_locs += T
/datum/round_event/cme/announce(fake)
if(fake)
priority_announce("Critical Coronal mass ejection detected! Expected intensity: [uppertext(cme_intensity)]. Impact in: [rand(200, 300)] seconds. \
All synthetic and non-organic lifeforms should seek shelter immediately! \
Ensure all sensitive equipment is shielded.", "Solar Event", sound('modular_skyrat/modules/cme/sound/cme_warning.ogg'))
else
switch(cme_intensity)
if(CME_RANDOM)
priority_announce("Coronal mass ejection detected! Expected intensity: UNKNOWN. Impact in: [round((startWhen * SSevents.wait) / 10, 0.1)] seconds. \
All synthetic and non-organic lifeforms should seek shelter immediately! \
Neutralize magnetic field bubbles at all costs.", "Solar Event", sound('modular_skyrat/modules/cme/sound/cme_warning.ogg'))
if(CME_MINIMAL)
priority_announce("Coronal mass ejection detected! Expected intensity: [uppertext(cme_intensity)]. Impact in: [round((startWhen * SSevents.wait) / 10, 0.1)] seconds. \
All synthetic and non-organic lifeforms should seek shelter immediately! \
Neutralize magnetic field bubbles at all costs.", "Solar Event", sound('modular_skyrat/modules/cme/sound/cme_warning.ogg'))
if(CME_MODERATE)
priority_announce("Coronal mass ejection detected! Expected intensity: [uppertext(cme_intensity)]. Impact in: [round((startWhen * SSevents.wait) / 10, 0.1)] seconds. \
All synthetic and non-organic lifeforms should seek shelter immediately! \
Neutralize magnetic field bubbles at all costs.", "Solar Event", sound('modular_skyrat/modules/cme/sound/cme_warning.ogg'))
if(CME_EXTREME)
set_security_level(SEC_LEVEL_RED)
priority_announce("Critical Coronal mass ejection detected! Expected intensity: [uppertext(cme_intensity)]. Impact in: [round((startWhen * SSevents.wait) / 10, 0.1)] seconds. \
All synthetic and non-organic lifeforms should seek shelter immediately! \
Neutralize magnetic field bubbles at all costs.", "Solar Event", sound('modular_skyrat/modules/cme/sound/cme_warning.ogg'))
if(CME_ARMAGEDDON)
set_security_level(SEC_LEVEL_GAMMA)
priority_announce("Neutron Mass Ejection Detected! Expected intensity: [uppertext(cme_intensity)]. Impact in: [round((startWhen * SSevents.wait) / 10, 0.1)] seconds. \
All personnel should proceed to their nearest warpgate for evacuation, the Solar Federation has issued this mandatory alert.", "Solar Event", sound('modular_skyrat/modules/cme/sound/cme_warning.ogg'))
/datum/round_event/cme/tick()
if(ISMULTIPLE(activeFor, rand(cme_frequency_lower, cme_frequency_upper)))
var/turf/spawnpoint = pick(cme_start_locs)
spawn_cme(spawnpoint, cme_intensity)
/datum/round_event/cme/proc/spawn_cme(spawnpoint, intensity)
if(intensity == CME_RANDOM)
intensity = pick(CME_MINIMAL, CME_MODERATE, CME_EXTREME)
var/area/loc_area_name = get_area(spawnpoint)
minor_announce("WARNING! [uppertext(intensity)] PULSE EXPECTED IN: [loc_area_name.name]", "Solar Flare Log:")
for(var/i in GLOB.mob_list)
var/mob/M = i
if(M.client)
SEND_SOUND(M, sound('modular_skyrat/modules/cme/sound/cme_warning.ogg'))
switch(intensity)
if(CME_MINIMAL)
var/obj/effect/cme/spawnedcme = new(spawnpoint)
announce_to_ghosts(spawnedcme)
if(CME_MODERATE)
var/obj/effect/cme/moderate/spawnedcme = new(spawnpoint)
announce_to_ghosts(spawnedcme)
if(CME_EXTREME)
var/obj/effect/cme/extreme/spawnedcme = new(spawnpoint)
announce_to_ghosts(spawnedcme)
if(CME_ARMAGEDDON)
var/obj/effect/cme/armageddon/spawnedcme = new(spawnpoint)
announce_to_ghosts(spawnedcme)
/datum/round_event/cme/end()
minor_announce("The station has cleared the solar flare, please proceed to repair electronic failures.", "CME cleared:")
////////////////////////
//CME bubbles
///////////////////////
/obj/effect/cme
desc = "A solar ejection projection."
name = "MINIMAL SOLAR EJECTION"
icon = 'modular_skyrat/modules/cme/icons/cme_effect.dmi'
icon_state = "cme_effect"
color = COLOR_BLUE_LIGHT
light_range = 5
light_power = 2
light_color = COLOR_BLUE_LIGHT
pixel_x = -32
pixel_y = -32
anchored = TRUE
opacity = FALSE
density = FALSE
layer = LIGHTING_LAYER
CanAtmosPass = ATMOS_PASS_DENSITY
var/timeleft = CME_MINIMAL_BUBBLE_BURST_TIME
var/cme_light_range_lower = CME_MINIMAL_LIGHT_RANGE_LOWER
var/cme_light_range_upper = CME_MINIMAL_LIGHT_RANGE_UPPER
var/cme_heavy_range_lower = CME_MINIMAL_HEAVY_RANGE_LOWER
var/cme_heavy_range_upper = CME_MINIMAL_HEAVY_RANGE_UPPER
var/neutralized = FALSE
/obj/effect/cme/moderate
name = "MODERATE SOLAR EJECTION"
color = COLOR_VIVID_YELLOW
light_color = COLOR_VIVID_YELLOW
timeleft = CME_MODERATE_BUBBLE_BURST_TIME
cme_light_range_lower = CME_MODERATE_LIGHT_RANGE_LOWER
cme_light_range_upper = CME_MODERATE_LIGHT_RANGE_UPPER
cme_heavy_range_lower = CME_MODERATE_HEAVY_RANGE_LOWER
cme_heavy_range_upper = CME_MODERATE_HEAVY_RANGE_UPPER
/obj/effect/cme/extreme
name = "EXTREME SOLAR EJECTION"
color = COLOR_RED
light_color = COLOR_RED
timeleft = CME_EXTREME_BUBBLE_BURST_TIME
cme_light_range_lower = CME_EXTREME_LIGHT_RANGE_LOWER
cme_light_range_upper = CME_EXTREME_LIGHT_RANGE_UPPER
cme_heavy_range_lower = CME_EXTREME_HEAVY_RANGE_LOWER
cme_heavy_range_upper = CME_EXTREME_HEAVY_RANGE_UPPER
/obj/effect/cme/armageddon
name = "ARMAGEDDON SOLAR EJECTION"
color = COLOR_VIOLET
light_color = COLOR_VIOLET
timeleft = CME_ARMAGEDDON_BUBBLE_BURST_TIME
cme_light_range_lower = CME_ARMAGEDDON_LIGHT_RANGE_LOWER
cme_light_range_upper = CME_ARMAGEDDON_LIGHT_RANGE_UPPER
cme_heavy_range_lower = CME_ARMAGEDDON_HEAVY_RANGE_LOWER
cme_heavy_range_upper = CME_ARMAGEDDON_HEAVY_RANGE_UPPER
/obj/effect/cme/Initialize()
. = ..()
playsound(src,'sound/weapons/resonator_fire.ogg',75,TRUE)
var/turf/open/T = get_turf(src)
if(istype(T))
T.atmos_spawn_air("o2=15;plasma=15;TEMP=5778")
addtimer(CALLBACK(src, .proc/burst), timeleft)
/obj/effect/cme/proc/burst()
if(neutralized)
visible_message("<span class='notice'>[src] fizzles out into nothingness.")
new /obj/effect/particle_effect/smoke/bad(loc)
qdel(src)
return
var/pulse_range_light = rand(cme_light_range_lower, cme_light_range_upper)
var/pulse_range_heavy = rand(cme_heavy_range_lower, cme_heavy_range_upper)
empulse(src, pulse_range_heavy, pulse_range_light)
playsound(src,'sound/weapons/resonator_blast.ogg',100,TRUE)
explosion(src, 0, 0, 2, flame_range = 3)
for(var/i in GLOB.mob_list)
var/mob/M = i
if(M.client)
SEND_SOUND(M, sound('modular_skyrat/modules/cme/sound/cme.ogg'))
shake_camera(M, 15, 1)
qdel(src)
/obj/effect/cme/armageddon/burst()
if(neutralized)
visible_message("<span class='notice'>[src] fizzles out into nothingness.")
new /obj/effect/particle_effect/smoke/bad(loc)
qdel(src)
return
var/pulse_range_light = rand(cme_light_range_lower, cme_light_range_upper)
var/pulse_range_heavy = rand(cme_heavy_range_lower, cme_heavy_range_upper)
empulse(src, pulse_range_heavy, pulse_range_light)
explosion(src, 0, 3, 10, flame_range = 10)
playsound(src,'sound/weapons/resonator_blast.ogg',100,TRUE)
for(var/i in GLOB.mob_list)
var/mob/M = i
if(M.client)
SEND_SOUND(M, sound('modular_skyrat/modules/cme/sound/cme.ogg'))
shake_camera(M, 15, 1)
qdel(src)
/obj/effect/cme/singularity_pull()
return
/obj/effect/cme/proc/anomalyNeutralize()
playsound(src,'sound/weapons/resonator_blast.ogg',100,TRUE)
minor_announce("[src.name] NEUTRALIZED.", "Solar Flare Log:")
new /obj/effect/particle_effect/smoke/bad(loc)
color = COLOR_WHITE
light_color = COLOR_WHITE
neutralized = TRUE
/obj/effect/cme/extreme/anomalyNeutralize()
playsound(src,'sound/weapons/resonator_blast.ogg',100,TRUE)
minor_announce("[src.name] NEUTRALIZED.", "Solar Flare Log:")
new /obj/effect/particle_effect/smoke/bad(loc)
var/turf/open/T = get_turf(src)
if(istype(T))
T.atmos_spawn_air("o2=15;plasma=15;TEMP=5778")
color = COLOR_WHITE
light_color = COLOR_WHITE
neutralized = TRUE
/client/proc/manual_events_mode()
set name = "Manual Event Mode Toggle"
set category = "Admin"
set desc = "Toggle manual event mode."
if(!holder)
return
SSevents.manual_mode = !SSevents.manual_mode
log_admin("EVENT MODE SWITCHED.")
message_admins("EVENT SYSTEM NOW IN [SSevents.manual_mode ? "MANUAL OPERATION" : "AUTOMATIC OPERATION"]. TRIGGERED BY: [src]")
Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

+24
View File
@@ -0,0 +1,24 @@
## Title: Coronal Mass Ejection Event
MODULE ID: CME
### Description:
Adds in a new event called CME, an EMP based event that spawns random EMP's across the station.
### TG Proc Changes:
N/A
### Defines:
N/A
### Included files:
N/A
### Credits:
Gandalf2k15 - OG
CME sound effect - Faster Than Light(FTL)
Binary file not shown.
Binary file not shown.
+2
View File
@@ -3580,6 +3580,8 @@
#include "modular_skyrat\modules\cloning\code\modules\research\designs\machine_designs.dm"
#include "modular_skyrat\modules\cloning\code\modules\research\techweb\all_nodes.dm"
#include "modular_skyrat\modules\cloning\code\modules\ruins\spaceruin_code\cloning_lab.dm"
#include "modular_skyrat\modules\cme\code\_cme_defines.dm"
#include "modular_skyrat\modules\cme\code\cme.dm"
#include "modular_skyrat\modules\combat_indicator\code\combat_indicator.dm"
#include "modular_skyrat\modules\cryosleep\code\ai.dm"
#include "modular_skyrat\modules\cryosleep\code\area.dm"