Skip to content

Commit

Permalink
[SEMI-MODULAR] Advanced engineering response team (Skyrat-SS13#20040)
Browse files Browse the repository at this point in the history
* advanced atmos

* radio defines

* turn radio on

* doc

* security level

* Update modular_skyrat/modules/alerts/code/security_level_procs.dm

Co-authored-by: Pinta <[email protected]>

* Update security_level_procs.dm

* not needed

* Update adv_engineering.dm

* move sec level proc

* Update sol_fed.dm

* Update sol_fed.dm

* charge 15k per tech

* remove armor from jumpsuit

---------

Co-authored-by: Pinta <[email protected]>
  • Loading branch information
lessthnthree and softcerv authored Mar 27, 2023
1 parent e0d6a89 commit b9fe8cc
Show file tree
Hide file tree
Showing 20 changed files with 206 additions and 80 deletions.
5 changes: 5 additions & 0 deletions code/__DEFINES/~skyrat_defines/solfed.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#define RADIO_CHANNEL_SOLFED "SolFed"
#define RADIO_KEY_SOLFED "l"
#define RADIO_TOKEN_SOLFED ":l"

#define FREQ_SOLFED 1377
2 changes: 2 additions & 0 deletions code/game/communications.dm
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ GLOBAL_LIST_INIT(radiochannels, list(
RADIO_CHANNEL_INTERDYNE = FREQ_INTERDYNE, //SKYRAT EDIT ADDITION - MAPPING
RADIO_CHANNEL_GUILD = FREQ_GUILD, //SKYRAT EDIT ADDITION - ASSAULT OPS
RADIO_CHANNEL_TARKON = FREQ_TARKON, //SKYRAT EDIT ADDITION - MAPPING
RADIO_CHANNEL_SOLFED = FREQ_SOLFED, //SKYRAT EDIT ADDITION - SOLFED
RADIO_CHANNEL_SYNDICATE = FREQ_SYNDICATE,
RADIO_CHANNEL_UPLINK = FREQ_UPLINK,
RADIO_CHANNEL_SUPPLY = FREQ_SUPPLY,
Expand All @@ -127,6 +128,7 @@ GLOBAL_LIST_INIT(reverseradiochannels, list(
"[FREQ_CYBERSUN]" = RADIO_CHANNEL_CYBERSUN, //SKYRAT EDIT ADDITION - MAPPING
"[FREQ_INTERDYNE]" = RADIO_CHANNEL_INTERDYNE, //SKYRAT EDIT ADDITION - MAPPING
"[FREQ_TARKON]" = RADIO_CHANNEL_TARKON, //SKYRAT EDIT ADDITION - MAPPING
"[FREQ_SOLFED]" = RADIO_CHANNEL_SOLFED, //SKYRAT EDIT ADDITION - SOLFED
"[FREQ_SYNDICATE]" = RADIO_CHANNEL_SYNDICATE,
"[FREQ_UPLINK]" = RADIO_CHANNEL_UPLINK,
"[FREQ_SUPPLY]" = RADIO_CHANNEL_SUPPLY,
Expand Down
4 changes: 2 additions & 2 deletions code/game/machinery/computer/communications.dm
Original file line number Diff line number Diff line change
Expand Up @@ -468,10 +468,10 @@ GLOBAL_VAR_INIT(cops_arrived, FALSE)
if(!pre_911_check(usr))
return
calling_911(usr, "Marshals", EMERGENCY_RESPONSE_POLICE)
if ("callBreachControl")
if ("callTheCatmos")
if(!pre_911_check(usr))
return
calling_911(usr, "Breach Control", EMERGENCY_RESPONSE_ATMOS)
calling_911(usr, "Advanced Atmospherics", EMERGENCY_RESPONSE_ATMOS)
if ("callTheParameds")
if(!pre_911_check(usr))
return
Expand Down
1 change: 1 addition & 0 deletions code/game/objects/items/devices/radio/headset.dm
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ GLOBAL_LIST_INIT(channel_tokens, list(
RADIO_CHANNEL_INTERDYNE = RADIO_TOKEN_INTERDYNE, //SKYRAT EDIT ADDITION - Mapping
RADIO_CHANNEL_GUILD = RADIO_TOKEN_GUILD, //SKYRAT EDIT ADDITION - Mapping
RADIO_CHANNEL_TARKON = RADIO_TOKEN_TARKON, //SKYRAT EDIT ADDITION - MAPPING
RADIO_CHANNEL_SOLFED = RADIO_TOKEN_SOLFED, //SKYRAT EDIT ADDITION - SOLFED
RADIO_CHANNEL_SYNDICATE = RADIO_TOKEN_SYNDICATE,
RADIO_CHANNEL_SUPPLY = RADIO_TOKEN_SUPPLY,
RADIO_CHANNEL_SERVICE = RADIO_TOKEN_SERVICE,
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/devices/radio/radio.dm
Original file line number Diff line number Diff line change
Expand Up @@ -317,7 +317,7 @@
var/datum/signal/subspace/vocal/signal = new(src, freq, speaker, language, message, spans, message_mods)

// Independent radios, on the CentCom frequency, reach all independent radios
if (independent && (freq == FREQ_CENTCOM || freq == FREQ_CTF_RED || freq == FREQ_CTF_BLUE || freq == FREQ_CTF_GREEN || freq == FREQ_CTF_YELLOW || freq == FREQ_FACTION || freq == FREQ_CYBERSUN || freq == FREQ_INTERDYNE || freq == FREQ_GUILD || freq == FREQ_TARKON)) //SKYRAT EDIT CHANGE - FACTION, MAPPING
if (independent && (freq == FREQ_CENTCOM || freq == FREQ_CTF_RED || freq == FREQ_CTF_BLUE || freq == FREQ_CTF_GREEN || freq == FREQ_CTF_YELLOW || freq == FREQ_FACTION || freq == FREQ_CYBERSUN || freq == FREQ_INTERDYNE || freq == FREQ_GUILD || freq == FREQ_TARKON || freq == FREQ_SOLFED)) //SKYRAT EDIT CHANGE - FACTION, MAPPING, SOLFED
signal.data["compression"] = 0
signal.transmission_method = TRANSMISSION_SUPERSPACE
signal.levels = list(0)
Expand Down
1 change: 1 addition & 0 deletions code/game/say.dm
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ GLOBAL_LIST_INIT(freqtospan, list(
"[FREQ_INTERDYNE]" = "syndradio", //SKYRAT EDIT ADDITION - MAPPING
"[FREQ_GUILD]" = "syndradio", //SKYRAT EDIT ADDITION - MAPPING
"[FREQ_TARKON]" = "engradio", //SKYRAT EDIT ADDITION - MAPPING
"[FREQ_SOLFED]" = "medradio", //SKYRAT EDIT ADDITION - SOLFED
"[FREQ_CTF_RED]" = "redteamradio",
"[FREQ_CTF_BLUE]" = "blueteamradio",
"[FREQ_CTF_GREEN]" = "greenteamradio",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@
icon = 'modular_skyrat/master_files/icons/obj/clothing/under/engineering.dmi'
worn_icon = 'modular_skyrat/master_files/icons/mob/clothing/under/engineering.dmi'

// Add a /obj/item/clothing/under/rank/engineering/atmospheric_technician/skyrat if you add uniforms for it
/obj/item/clothing/under/rank/engineering/atmospheric_technician/skyrat
icon = 'modular_skyrat/master_files/icons/obj/clothing/under/engineering.dmi'
worn_icon = 'modular_skyrat/master_files/icons/mob/clothing/under/engineering.dmi'

/*
* ENGINEER
Expand Down Expand Up @@ -65,3 +67,19 @@
desc = "A gray naval suit with a lead-lined vest and a rank badge denoting the Officer of the Internal Engineering Division. Doesn't come with a death machine building guide."
name = "chief engineer's naval jumpsuit"
icon_state = "impce"

/*
* ATMOS TECH
*/
/datum/armor/atmos_adv
bio = 40
fire = 70
acid = 70

/obj/item/clothing/under/rank/engineering/atmospheric_technician/skyrat/utility/advanced
name = "advanced atmospherics uniform"
desc = "A jumpsuit worn by advanced atmospherics crews."
icon_state = "util_atmos"
armor_type = /datum/armor/atmos_adv
icon_state = "util_eng"
can_adjust = FALSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/obj/item/storage/belt/utility/full/powertools/ircd/PopulateContents()
new /obj/item/screwdriver/power(src)
new /obj/item/crowbar/power(src)
new /obj/item/weldingtool/electric(src)
new /obj/item/construction/rcd/combat(src)
new /obj/item/pipe_dispenser(src)
new /obj/item/wrench/bolter(src)
new /obj/item/analyzer/ranged(src)

/obj/item/mod/control/pre_equipped/advanced/atmos
theme = /datum/mod_theme/advanced/atmos
applied_cell = /obj/item/stock_parts/cell/hyper
applied_modules = list(
/obj/item/mod/module/storage/large_capacity,
/obj/item/mod/module/welding,
/obj/item/mod/module/rad_protection,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/t_ray,
/obj/item/mod/module/jetpack/advanced,
/obj/item/mod/module/visor/meson,
)
default_pins = list(
/obj/item/mod/module/jetpack/advanced,
/obj/item/mod/module/magboot/advanced,
)

/datum/mod_theme/advanced/atmos //Implement a unique skin for this eventually
ui_theme = "neutral"

/obj/item/rcd_ammo/combat
name = "industrial RCD matter cartridge"
desc = "A cartridge with one complete refill for an industrial RCD."
w_class = WEIGHT_CLASS_SMALL
custom_materials = list(/datum/material/iron=120000, /datum/material/glass=80000)
ammoamt = 440

/obj/item/storage/box/rcd_ammo
name = "industrial RCD matter box"
icon = 'modular_skyrat/modules/aesthetics/storage/storage.dmi'
desc = "A durable box with refill cartridges for an industrial RCD."
icon_state = "engibox"
illustration = "rcd"
custom_materials = list(/datum/material/plastic = 1000)

/obj/item/storage/box/rcd_ammo/PopulateContents()
for(var/i in 1 to 4)
new/obj/item/rcd_ammo/combat(src)
20 changes: 20 additions & 0 deletions modular_skyrat/modules/advanced_engineering/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
https://github.com/Skyrat-SS13/Skyrat-tg/pull/20040/

## Title:
MODULE ID: ADVANCED_ENGINEERING

### Description:
Adds some new high tier engineering gear for use by ERTs.

### TG Proc/File Changes:
None

### Defines
#define RADIO_CHANNEL_SOLFED "SolFed"
#define RADIO_KEY_SOLFED "l"
#define RADIO_TOKEN_SOLFED ":l"

#define FREQ_SOLFED 1377

### Credits:
LT3
12 changes: 12 additions & 0 deletions modular_skyrat/modules/aesthetics/storage/storage.dm
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,18 @@
/obj/item/storage/box/silver_sulf
icon_state = "medbox"

/*
// Engineering
*/
/obj/item/storage/box/metalfoam
icon_state = "engibox"

/obj/item/storage/box/smart_metal_foam
icon_state = "engibox"

/obj/item/storage/box/material
icon_state = "engibox"

/*
// Security
*/
Expand Down
Binary file modified modular_skyrat/modules/aesthetics/storage/storage.dmi
Binary file not shown.
16 changes: 16 additions & 0 deletions modular_skyrat/modules/alerts/code/security_level_procs.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
/**
* Called to check/change security level.
* Checks if the station security level is at least minimum_level, and if not, sets it to that level.
* Arguments determine if engineering override or maint access is granted.
* Arguments: min_level: number, eng_access: boolean, maint_access: boolean
*/
/datum/controller/subsystem/security_level/proc/minimum_security_level(min_level = SEC_LEVEL_ORANGE, eng_access = TRUE, maint_access = FALSE)
if(SSsecurity_level.get_current_level_as_number() < min_level)
SSsecurity_level.set_level(min_level)

if(eng_access)
GLOB.force_eng_override = TRUE
SEND_GLOBAL_SIGNAL(COMSIG_GLOB_FORCE_ENG_OVERRIDE, TRUE)

if(maint_access)
make_maint_all_access()
2 changes: 1 addition & 1 deletion modular_skyrat/modules/biohazard_blob/code/mold_event.dm
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@

/datum/round_event/mold/announce(fake)
if(!fake)
event_minimum_security_level(SEC_LEVEL_VIOLET, FALSE, FALSE)
INVOKE_ASYNC(SSsecurity_level, TYPE_PROC_REF(/datum/controller/subsystem/security_level/, minimum_security_level), SEC_LEVEL_VIOLET, FALSE, FALSE)
priority_announce("Confirmed outbreak of level 6 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", ANNOUNCER_OUTBREAK6)

/datum/round_event/mold/start()
Expand Down
9 changes: 6 additions & 3 deletions modular_skyrat/modules/cme/code/cme.dm
Original file line number Diff line number Diff line change
Expand Up @@ -133,12 +133,12 @@
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)
addtimer(CALLBACK(src, PROC_REF(event_minimum_security_level), SEC_LEVEL_ORANGE, TRUE, FALSE), (round((start_when * SSevents.wait) * 0.1, 0.1)) SECONDS)
addtimer(CALLBACK(src, PROC_REF(cme_level_callback), SEC_LEVEL_ORANGE, TRUE, FALSE), (round((start_when * SSevents.wait) * 0.1, 0.1)) SECONDS)
priority_announce("Critical Coronal mass ejection detected! Expected intensity: [uppertext(cme_intensity)]. Impact in: [round((start_when * SSevents.wait) * 0.1, 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)
addtimer(CALLBACK(src, PROC_REF(event_minimum_security_level), SEC_LEVEL_GAMMA, TRUE, TRUE), (round((start_when * SSevents.wait) * 0.1, 0.1)) SECONDS)
addtimer(CALLBACK(src, PROC_REF(cme_level_callback), SEC_LEVEL_GAMMA, TRUE, TRUE), (round((start_when * SSevents.wait) * 0.1, 0.1)) SECONDS)
priority_announce("Neutron Mass Ejection Detected! Expected intensity: [uppertext(cme_intensity)]. Impact in: [round((start_when * SSevents.wait) * 0.1, 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'))

Expand All @@ -147,11 +147,14 @@
var/turf/spawnpoint = pick(cme_start_locs)
spawn_cme(spawnpoint, cme_intensity)

/datum/round_event/cme/proc/cme_level_callback(sec_level = SEC_LEVEL_ORANGE, engi = TRUE, maint = FALSE)
INVOKE_ASYNC(SSsecurity_level, TYPE_PROC_REF(/datum/controller/subsystem/security_level/, minimum_security_level), sec_level, engi, maint)

/datum/round_event/cme/proc/spawn_cme(turf/spawnpoint, intensity)
if(intensity == CME_UNKNOWN)
intensity = pick(CME_MINIMAL, CME_MODERATE, CME_EXTREME)
if(intensity == CME_EXTREME)
event_minimum_security_level(SEC_LEVEL_ORANGE, TRUE, FALSE)
INVOKE_ASYNC(SSsecurity_level, TYPE_PROC_REF(/datum/controller/subsystem/security_level/, minimum_security_level), SEC_LEVEL_ORANGE, TRUE, FALSE)

var/area/loc_area_name = get_area(spawnpoint)
minor_announce("WARNING! [uppertext(intensity)] PULSE EXPECTED IN: [loc_area_name.name]", "Solar Flare Log:")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
/datum/round_event/meteor_wave/announce(fake)
priority_announce("Meteors have been detected on collision course with the station. The energy field generator is disabled or missing. First collision in approximately [start_when * 2] seconds. Ensure all sensitive areas and equipment are shielded.", "Meteor Alert", ANNOUNCER_METEORS)
if(wave_name == "threatening" || wave_name == "spooky")
event_minimum_security_level(SEC_LEVEL_ORANGE, TRUE, FALSE)
INVOKE_ASYNC(SSsecurity_level, TYPE_PROC_REF(/datum/controller/subsystem/security_level/, minimum_security_level), SEC_LEVEL_ORANGE, TRUE, FALSE)

/datum/round_event/meteor_wave/tick()
if(ISMULTIPLE(activeFor, METEOR_TICKS_BETWEEN_WAVES))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,14 @@
icon_state = "gas_clear"
flags_inv = NONE

/obj/item/clothing/mask/gas/atmos/glass
icon = 'modular_skyrat/master_files/icons/obj/clothing/masks.dmi'
worn_icon = 'modular_skyrat/master_files/icons/mob/clothing/mask.dmi'
name = "advanced gas mask"
desc = "A face-covering mask that can be connected to an air supply. This one doesn't obscure your face however."
icon_state = "gas_clear"
flags_inv = NONE

/obj/item/clothing/mask/gas/alt
icon = 'modular_skyrat/master_files/icons/obj/clothing/masks.dmi'
icon_state = "gas_alt2"
Expand Down Expand Up @@ -129,15 +137,15 @@
update_item_action_buttons()
to_chat(user, span_notice("Your Clown Mask has now morphed into [choice], all praise the Honkmother!"))
return TRUE

/obj/item/clothing/mask/gas/mime/vox
desc = "The traditional mime's mask. It has an eerie facial posture. This one's got an easily accessible feeding port to be more suitable for the Vox crewmembers."
icon = 'modular_skyrat/master_files/icons/mob/clothing/species/vox/mask.dmi'
worn_icon = 'modular_skyrat/master_files/icons/mob/clothing/species/vox/mask.dmi'
worn_icon_vox = 'modular_skyrat/master_files/icons/mob/clothing/species/vox/mask.dmi'
worn_icon_better_vox = 'modular_skyrat/master_files/icons/mob/clothing/species/vox/mask.dmi'
starting_filter_type = /obj/item/gas_filter/vox

/obj/item/clothing/mask/gas/mime/vox/Initialize(mapload)
.=..()
mimemask_designs = list(
Expand Down Expand Up @@ -174,7 +182,7 @@
worn_icon = 'modular_skyrat/master_files/icons/mob/clothing/species/vox/mask.dmi'
icon_state = options[choice]
icon_state = options[choice]

user.update_worn_mask()
update_item_action_buttons()
to_chat(user, span_notice("Your Mime Mask has now morphed into [choice]!"))
Expand Down
15 changes: 0 additions & 15 deletions modular_skyrat/modules/events/code/event_seclevel.dm

This file was deleted.

Loading

0 comments on commit b9fe8cc

Please sign in to comment.