Skip to content

Commit

Permalink
initial
Browse files Browse the repository at this point in the history
  • Loading branch information
BeagleGaming1 committed Sep 5, 2023
1 parent 8a6ce6b commit 1a50750
Show file tree
Hide file tree
Showing 30 changed files with 699 additions and 19 deletions.
1 change: 1 addition & 0 deletions code/__DEFINES/job.dm
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#define SQUAD_MARINE_5 "Echo"
#define SQUAD_MARINE_CRYO "Foxtrot"
#define SQUAD_SOF "SOF"
#define SQUAD_CBRN "CBRN"

// Job name defines
#define JOB_SQUAD_MARINE "Rifleman"
Expand Down
3 changes: 3 additions & 0 deletions code/controllers/subsystem/communications.dm
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ var/const/MAX_FREQ = 1468 // ---------------------------------------------------
//USCM High Command (USCM 1470-1499)
var/const/HC_FREQ = 1471
var/const/SOF_FREQ = 1472
var/const/CBRN_FREQ = 1473

//Ship department channels
var/const/SENTRY_FREQ = 1480
Expand Down Expand Up @@ -158,6 +159,7 @@ var/list/radiochannels = list(
SQUAD_MARINE_5 = ECHO_FREQ,
SQUAD_MARINE_CRYO = CRYO_FREQ,
SQUAD_SOF = SOF_FREQ,
SQUAD_CBRN = CBRN_FREQ,

RADIO_CHANNEL_ALAMO = DS1_FREQ,
RADIO_CHANNEL_NORMANDY = DS2_FREQ,
Expand Down Expand Up @@ -257,6 +259,7 @@ SUBSYSTEM_DEF(radio)
"[DELTA_FREQ]" = "deltaradio",
"[ECHO_FREQ]" = "echoradio",
"[CRYO_FREQ]" = "cryoradio",
"[CBRN_FREQ]" = "hcradio",
"[SOF_FREQ]" = "hcradio",
"[HC_FREQ]" = "hcradio",
"[COLONY_FREQ]" = "deptradio",
Expand Down
9 changes: 9 additions & 0 deletions code/datums/diseases/black_goo.dm
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,15 @@
. = ..()
reagents.add_reagent("antiZed", 30)

/obj/item/reagent_container/glass/bottle/labeled_black_goo_cure
name = "\"Pathogen\" cure bottle"
desc = "The bottle has a biohazard symbol on the front, and has a label, designating its use against Agent A0-3959X.91–15, colloquially known as the \"Black Goo\"."
icon_state = "bottle20"

/obj/item/reagent_container/glass/bottle/labeled_black_goo_cure/Initialize()
. = ..()
reagents.add_reagent("antiZed", 60)

/datum/language/zombie
name = "Zombie"
desc = "A growling, guttural method of communication, only Zombies seem to be capable of producing these sounds."
Expand Down
81 changes: 81 additions & 0 deletions code/datums/emergency_calls/cbrn.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
/datum/emergency_call/cbrn
name = "CBRN (Squad)"
arrival_message = "A CBRN squad has been dispatched to your ship. Stand by."
objectives = "Handle the chemical, biological, radiological, or nuclear threat. Further orders may be provided."
mob_min = 4
mob_max = 7
max_heavies = 0
max_smartgunners = 0

/datum/emergency_call/cbrn/create_member(datum/mind/new_mind, turf/override_spawn_loc)
var/turf/spawn_loc = override_spawn_loc ? override_spawn_loc : get_spawn_point()

if(!istype(spawn_loc))
return //Didn't find a useable spawn point.

var/mob/living/carbon/human/mob = new(spawn_loc)
new_mind.transfer_to(mob, TRUE)

if(!leader && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(mob.client, JOB_SQUAD_LEADER, time_required_for_job))
leader = mob
arm_equipment(mob, /datum/equipment_preset/uscm/cbrn/leader, TRUE, TRUE)
to_chat(mob, SPAN_ROLE_HEADER("You are the CBRN Squad Leader!"))

else if(medics < max_medics && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_MEDIC) && check_timelock(mob.client, JOB_SQUAD_MEDIC, time_required_for_job))
medics++
arm_equipment(mob, /datum/equipment_preset/uscm/cbrn/medic, TRUE, TRUE)
to_chat(mob, SPAN_ROLE_HEADER("You are the CBRN Squad Medic!"))

else if(engineers < engineers && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_ENGINEER) && check_timelock(mob.client, JOB_SQUAD_ENGI, time_required_for_job))
engineers++
arm_equipment(mob, /datum/equipment_preset/uscm/cbrn/engineer, TRUE, TRUE)
to_chat(mob, SPAN_ROLE_HEADER("You are the CBRN Squad Engineer!"))

else
arm_equipment(mob, /datum/equipment_preset/uscm/cbrn/standard, TRUE, TRUE)
to_chat(mob, SPAN_ROLE_HEADER("You are a CBRN Squad Rifleman!"))

to_chat(mob, SPAN_ROLE_BODY("You are a member of the USCM's CBRN. The CBRN is a force that specializes in handling chemical, biological, radiological, and nuclear threats."))
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), mob, SPAN_BOLD("Objectives:</b> [objectives]")), 1 SECONDS)

/datum/emergency_call/cbrn/ert
name = "CBRN (Distress)"
arrival_message = "Your distress signal has been received and we are dispatching the nearest CBRN squad to board with you now. Stand by."
probability = 10

/datum/emergency_call/cbrn/ert/New()
..()
objectives = "Investigate the distress signal aboard the [MAIN_SHIP_NAME]."

/datum/emergency_call/cbrn/specialists
name = "CBRN (Specialists)"
mob_min = 2
mob_max = 5
max_engineers = 0
max_medics = 0

/datum/emergency_call/cbrn/specialists/New()
var/cbrn_ship_name = "Unit [pick(nato_phonetic_alphabet)]-[rand(1, 99)]"
arrival_message = "[MAIN_SHIP_NAME], CBRN [cbrn_ship_name] has been dispatched. Follow all orders provided by [cbrn_ship_name]."
objectives = "You are a specialist team in [cbrn_ship_name] dispatched to quell a threat to [MAIN_SHIP_NAME]. Further orders may be provided."

/datum/emergency_call/cbrn/specialists/create_member(datum/mind/new_mind, turf/override_spawn_loc)
var/turf/spawn_loc = override_spawn_loc ? override_spawn_loc : get_spawn_point()

if(!istype(spawn_loc))
return //Didn't find a useable spawn point.

var/mob/living/carbon/human/mob = new(spawn_loc)
new_mind.transfer_to(mob, TRUE)

if(!leader && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(mob.client, JOB_SQUAD_LEADER, time_required_for_job))
leader = mob
arm_equipment(mob, /datum/equipment_preset/uscm/cbrn/specialist/lead, TRUE, TRUE)
to_chat(mob, SPAN_ROLE_HEADER("You are the CBRN Specialist Squad Leader!"))

else
arm_equipment(mob, /datum/equipment_preset/uscm/cbrn/specialist, TRUE, TRUE)
to_chat(mob, SPAN_ROLE_HEADER("You are a CBRN Specialist!"))

to_chat(mob, SPAN_ROLE_BODY("You are a member of the USCM's CBRN. The CBRN is a force that specializes in handling chemical, biological, radiological, and nuclear threats."))
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), mob, SPAN_BOLD("Objectives:</b> [objectives]")), 1 SECONDS)
2 changes: 1 addition & 1 deletion code/datums/emergency_calls/emergency_call.dm
Original file line number Diff line number Diff line change
Expand Up @@ -306,7 +306,7 @@

candidates = list()
if(arrival_message && announce)
marine_announcement(arrival_message, "Intercepted Tranmission:")
marine_announcement(arrival_message, "Intercepted Transmission:")

/datum/emergency_call/proc/add_candidate(mob/M)
if(!M.client || (M.mind && (M.mind in candidates)) || istype(M, /mob/living/carbon/xenomorph))
Expand Down
11 changes: 11 additions & 0 deletions code/game/jobs/job/marine/squads.dm
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,17 @@
roundstart = FALSE
locked = TRUE

/datum/squad/marine/cbrn
name = SQUAD_CBRN
equipment_color = "#400000"
chat_color = "#FFFFFF"
radio_freq = CBRN_FREQ
minimap_color = MINIMAP_SQUAD_SOF

active = FALSE
roundstart = FALSE
locked = TRUE

//############################### UPP Squads
/datum/squad/upp
name = "Root"
Expand Down
10 changes: 5 additions & 5 deletions code/game/machinery/telecomms/presets.dm
Original file line number Diff line number Diff line change
Expand Up @@ -433,7 +433,7 @@ GLOBAL_LIST_EMPTY(all_static_telecomms_towers)
id = "CentComm Receiver"
network = "tcommsat"
autolinkers = list("receiverCent")
freq_listening = list(WY_WO_FREQ, PMC_FREQ, DUT_FREQ, YAUT_FREQ, HC_FREQ, SOF_FREQ)
freq_listening = list(WY_WO_FREQ, PMC_FREQ, DUT_FREQ, YAUT_FREQ, HC_FREQ, SOF_FREQ, CBRN_FREQ)


//Buses
Expand All @@ -453,7 +453,7 @@ GLOBAL_LIST_EMPTY(all_static_telecomms_towers)
/obj/structure/machinery/telecomms/bus/preset_three
id = "Bus 3"
network = "tcommsat"
freq_listening = list(SEC_FREQ, COMM_FREQ, WY_WO_FREQ, PMC_FREQ, DUT_FREQ, YAUT_FREQ, JTAC_FREQ, INTEL_FREQ, WY_FREQ, HC_FREQ, SOF_FREQ)
freq_listening = list(SEC_FREQ, COMM_FREQ, WY_WO_FREQ, PMC_FREQ, DUT_FREQ, YAUT_FREQ, JTAC_FREQ, INTEL_FREQ, WY_FREQ, HC_FREQ, SOF_FREQ, CBRN_FREQ)
autolinkers = list("processor3", "security", "command", "JTAC")

/obj/structure/machinery/telecomms/bus/preset_four
Expand All @@ -469,7 +469,7 @@ GLOBAL_LIST_EMPTY(all_static_telecomms_towers)
/obj/structure/machinery/telecomms/bus/preset_cent
id = "CentComm Bus"
network = "tcommsat"
freq_listening = list(WY_WO_FREQ, PMC_FREQ, DUT_FREQ, YAUT_FREQ, HC_FREQ, SOF_FREQ)
freq_listening = list(WY_WO_FREQ, PMC_FREQ, DUT_FREQ, YAUT_FREQ, HC_FREQ, SOF_FREQ, CBRN_FREQ)
autolinkers = list("processorCent", "centcomm")

//Processors
Expand Down Expand Up @@ -534,7 +534,7 @@ GLOBAL_LIST_EMPTY(all_static_telecomms_towers)

/obj/structure/machinery/telecomms/server/presets/command
id = "Command Server"
freq_listening = list(COMM_FREQ, WY_WO_FREQ, PMC_FREQ, DUT_FREQ, YAUT_FREQ, JTAC_FREQ, INTEL_FREQ, WY_FREQ, HC_FREQ, SOF_FREQ)
freq_listening = list(COMM_FREQ, WY_WO_FREQ, PMC_FREQ, DUT_FREQ, YAUT_FREQ, JTAC_FREQ, INTEL_FREQ, WY_FREQ, HC_FREQ, SOF_FREQ, CBRN_FREQ)
autolinkers = list("command")

/obj/structure/machinery/telecomms/server/presets/engineering
Expand All @@ -549,7 +549,7 @@ GLOBAL_LIST_EMPTY(all_static_telecomms_towers)

/obj/structure/machinery/telecomms/server/presets/centcomm
id = "CentComm Server"
freq_listening = list(WY_WO_FREQ, PMC_FREQ, DUT_FREQ, YAUT_FREQ, HC_FREQ, SOF_FREQ)
freq_listening = list(WY_WO_FREQ, PMC_FREQ, DUT_FREQ, YAUT_FREQ, HC_FREQ, SOF_FREQ, CBRN_FREQ)
autolinkers = list("centcomm")


Expand Down
2 changes: 1 addition & 1 deletion code/game/machinery/vending/vendor_types/crew/synthetic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_synth, list(
list("Webbing", 0, /obj/item/clothing/accessory/storage/webbing, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR),
list("Surgical Webbing Vest", 0, /obj/item/clothing/accessory/storage/surg_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR),
list("Surgical Webbing Vest (Blue)", 0, /obj/item/clothing/accessory/storage/surg_vest/blue, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR),
list("Tool Webbing", 0, /obj/item/clothing/accessory/storage/black_vest/tool_webbing, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR),
list("Tool Webbing", 0, /obj/item/clothing/accessory/storage/tool_webbing/equipped, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR),
list("Drop Pouch", 0, /obj/item/clothing/accessory/storage/droppouch, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR),

list("SHOES (CHOOSE 1)", 0, null, null, null),
Expand Down
7 changes: 7 additions & 0 deletions code/game/objects/items/devices/radio/headset.dm
Original file line number Diff line number Diff line change
Expand Up @@ -848,6 +848,13 @@
"Corporate Liaison" = TRACKER_CL
)

/obj/item/device/radio/headset/distress/cbrn
name = "CBRN headset"
desc = "A head given to CBRN marines. Channels are as follows: :g - public, :v - marine command, :a - alpha squad, :b - bravo squad, :c - charlie squad, :d - delta squad, :n - engineering, :m - medbay, :u - requisitions, :j - JTAC, :t - intel"
frequency = CBRN_FREQ
initial_keys = list(/obj/item/device/encryptionkey/public, /obj/item/device/encryptionkey/mcom)
ignore_z = TRUE

/obj/item/device/radio/headset/distress/pmc/hvh
desc = "A special headset used by corporate personnel. Channels are as follows: :o - colony."
initial_keys = list(/obj/item/device/encryptionkey/colony, /obj/item/device/encryptionkey/WY)
Expand Down
3 changes: 3 additions & 0 deletions code/game/objects/items/storage/pouch.dm
Original file line number Diff line number Diff line change
Expand Up @@ -813,6 +813,9 @@
new /obj/item/storage/firstaid/adv(src)


/obj/item/storage/pouch/medkit/full/toxin/fill_preset_inventory()
new /obj/item/storage/firstaid/toxin(src)

/obj/item/storage/pouch/pressurized_reagent_canister
name = "Pressurized Reagent Canister Pouch"
max_w_class = SIZE_SMALL
Expand Down
8 changes: 8 additions & 0 deletions code/game/objects/prop.dm
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,14 @@
w_class = SIZE_SMALL
garbage = TRUE

/obj/item/prop/geiger_counter
name = "geiger counter"
desc = "Useful for measuring ionizing radiation."
icon = 'icons/obj/items/devices.dmi'
icon_state = "geiger"
item_state = ""
w_class = SIZE_SMALL

/obj/item/prop/tableflag
name = "United Americas table flag"
icon = 'icons/obj/items/items.dmi'
Expand Down
7 changes: 7 additions & 0 deletions code/modules/clothing/clothing.dm
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,13 @@
flags_armor_protection = BODY_FLAG_HEAD|BODY_FLAG_FACE|BODY_FLAG_EYES
blood_overlay_type = "mask"
var/anti_hug = 0
var/has_camo = FALSE

/obj/item/clothing/mask/Initialize(mapload)
. = ..()
if(has_camo)
select_gamemode_skin(type)
update_icon()

/obj/item/clothing/mask/update_clothing_icon()
if (ismob(src.loc))
Expand Down
6 changes: 6 additions & 0 deletions code/modules/clothing/glasses/glasses.dm
Original file line number Diff line number Diff line change
Expand Up @@ -537,6 +537,12 @@
vision_impair_on = VISION_IMPAIR_WEAK
vision_impair_off = VISION_IMPAIR_NONE

/obj/item/clothing/glasses/welding/superior/alt
desc = "Welding goggles made from more expensive materials."

/obj/item/clothing/glasses/welding/superior/prescription
desc = "Welding goggles made from more expensive materials. There are barely visible prescription lenses connected to the frame, allowing vision even when the goggles are raised.."
prescription = TRUE
//sunglasses

/obj/item/clothing/glasses/sunglasses
Expand Down
30 changes: 30 additions & 0 deletions code/modules/clothing/head/helmet.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1365,4 +1365,34 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list(

built_in_visors = list()

/obj/item/clothing/head/helmet/marine/cbrn_hood
name = "\improper M3CR hood"
desc = "A hood woven from nomex and kevlar that comes with a built in gasmask. Typically worn by CBRN marines."
icon_state = "cbrn_hood"
item_state = "cbrn_hood"
min_cold_protection_temperature = ICE_PLANET_MIN_COLD_PROT
max_heat_protection_temperature = ARMOR_MAX_HEAT_PROT
flags_cold_protection = BODY_FLAG_HEAD
flags_heat_protection = BODY_FLAG_HEAD
armor_melee = CLOTHING_ARMOR_MEDIUMLOW
armor_bullet = CLOTHING_ARMOR_MEDIUMLOW
armor_bomb = CLOTHING_ARMOR_MEDIUM
armor_bio = CLOTHING_ARMOR_HIGH
armor_rad = CLOTHING_ARMOR_HIGHPLUS
flags_inventory = BLOCKSHARPOBJ
flags_marine_helmet = NO_FLAGS
flags_atom = NO_NAME_OVERRIDE
flags_inv_hide = HIDEEARS|HIDEALLHAIR
built_in_visors = list()

/obj/item/clothing/head/helmet/marine/cbrn_hood/advanced
name = "advanced M3CR hood"
desc = "A hood typically worn by CBRN marines. This variant is a prototype, further reinforced with experimental materials."
armor_melee = CLOTHING_ARMOR_HIGH
armor_bullet = CLOTHING_ARMOR_MEDIUMHIGH
armor_bomb = CLOTHING_ARMOR_ULTRAHIGH
armor_bio = CLOTHING_ARMOR_GIGAHIGHPLUS
armor_rad = CLOTHING_ARMOR_GIGAHIGHPLUS


#undef HELMET_GARB_RELAY_ICON_STATE
74 changes: 74 additions & 0 deletions code/modules/clothing/masks/gasmask.dm
Original file line number Diff line number Diff line change
Expand Up @@ -145,3 +145,77 @@
unacidable = TRUE
// flags_item = NODROP|DELONDROP
flags_inventory = CANTSTRIP|COVEREYES|COVERMOUTH|ALLOWINTERNALS|ALLOWREBREATH|BLOCKGASEFFECT|ALLOWCPR|BLOCKSHARPOBJ

/obj/item/clothing/mask/gas/cbrn
name = "\improper M3CR gasmask"
desc = "A gasmask typically used by CBRN marines, this one is sewn into a hood."
icon_state = "cbrn_mask"
var/base_item_state = "cbrn_mask"
item_state = "cbrn_mask"
has_camo = TRUE
vision_impair = VISION_IMPAIR_NONE
flags_inventory = COVEREYES|COVERMOUTH|ALLOWINTERNALS|ALLOWREBREATH|BLOCKGASEFFECT|ALLOWCPR|BLOCKSHARPOBJ
flags_inv_hide = HIDEFACE
flags_equip_slot = SLOT_FACE
flags_cold_protection = BODY_FLAG_HEAD
flags_heat_protection = BODY_FLAG_HEAD
min_cold_protection_temperature = ICE_PLANET_MIN_COLD_PROT
max_heat_protection_temperature = ARMOR_MAX_HEAT_PROT
armor_melee = CLOTHING_ARMOR_NONE
armor_bullet = CLOTHING_ARMOR_NONE
armor_bomb = CLOTHING_ARMOR_NONE
armor_bio = CLOTHING_ARMOR_HIGH
armor_rad = CLOTHING_ARMOR_HIGHPLUS
///Whether the mask is covering the face
var/mask_raised = TRUE
///Override the default camo it has to not reset when changing states
var/camo_override

/obj/item/clothing/mask/gas/cbrn/verb/mask_toggle()
set name = "Toggle Mask"
set desc = "Toggle whether your gasmask is raised or lowered."
set src in usr
if(!usr || usr.is_mob_incapacitated(TRUE))
return
if(!ishuman(usr))
return
var/mob/living/carbon/human/user = usr

if(user.wear_mask != src)
to_chat(user, SPAN_WARNING("You must be wearing [src] to toggle the gasmask!"))
return

to_chat(user, SPAN_NOTICE("You [mask_raised ? "release" : "attach"] the [src]."))
if(mask_raised)
icon_state = "[base_item_state]_off" //Sets icon state to have it not get messed up by the gamemode skin
item_state = "[base_item_state]_off"
if(camo_override)
icon_state = "[camo_override]_[icon_state]"
item_state = "[camo_override]_[item_state]"
else
select_gamemode_skin(type)
update_icon()
user.regenerate_icons()
flags_inv_hide &= ~HIDEFACE
mask_raised = FALSE
return
icon_state = base_item_state
item_state = base_item_state
if(camo_override)
icon_state = "[camo_override]_[icon_state]"
item_state = "[camo_override]_[item_state]"
else
select_gamemode_skin(type)
update_icon()
user.regenerate_icons()
flags_inv_hide &= HIDEFACE
mask_raised = TRUE

/obj/item/clothing/mask/gas/cbrn/advanced
name = "advanced M3CR gasmask"
desc = "A gasmask typically used by CBRN marines. This variant is a prototype, further reinforced with experimental material."
armor_melee = CLOTHING_ARMOR_MEDIUM
armor_bullet = CLOTHING_ARMOR_MEDIUMHIGH
armor_bomb = CLOTHING_ARMOR_HIGH
armor_bio = CLOTHING_ARMOR_GIGAHIGHPLUS
armor_rad = CLOTHING_ARMOR_GIGAHIGHPLUS
Loading

0 comments on commit 1a50750

Please sign in to comment.