diff --git a/code/__DEFINES/job.dm b/code/__DEFINES/job.dm index bedc8234d9c9..79f40c89bb53 100644 --- a/code/__DEFINES/job.dm +++ b/code/__DEFINES/job.dm @@ -12,6 +12,7 @@ #define SQUAD_MARINE_INTEL "Intel" #define SQUAD_SOF "SOF" #define SQUAD_CBRN "CBRN" +#define SQUAD_FORECON "FORECON" // Job name defines #define JOB_SQUAD_MARINE "Rifleman" diff --git a/code/controllers/subsystem/communications.dm b/code/controllers/subsystem/communications.dm index c245b1012900..7397d98a0d52 100644 --- a/code/controllers/subsystem/communications.dm +++ b/code/controllers/subsystem/communications.dm @@ -115,6 +115,7 @@ Radiochat range: 1441 to 1489 (most devices refuse to be tune to other frequency #define SOF_FREQ 1472 #define PVST_FREQ 1473 #define CBRN_FREQ 1474 +#define FORECON_FREQ 1475 //Ship department channels #define SENTRY_FREQ 1480 @@ -171,6 +172,7 @@ GLOBAL_LIST_INIT(radiochannels, list( SQUAD_MARINE_CRYO = CRYO_FREQ, SQUAD_SOF = SOF_FREQ, SQUAD_CBRN = CBRN_FREQ, + SQUAD_FORECON = FORECON_FREQ, RADIO_CHANNEL_ALAMO = DS1_FREQ, RADIO_CHANNEL_NORMANDY = DS2_FREQ, @@ -278,6 +280,7 @@ SUBSYSTEM_DEF(radio) "[ECHO_FREQ]" = "echoradio", "[CRYO_FREQ]" = "cryoradio", "[CBRN_FREQ]" = "hcradio", + "[FORECON_FREQ]" = "hcradio", "[SOF_FREQ]" = "hcradio", "[HC_FREQ]" = "hcradio", "[PVST_FREQ]" = "pvstradio", diff --git a/code/datums/emergency_calls/forecon.dm b/code/datums/emergency_calls/forecon.dm new file mode 100644 index 000000000000..98e6a1c27ec2 --- /dev/null +++ b/code/datums/emergency_calls/forecon.dm @@ -0,0 +1,62 @@ +/datum/emergency_call/forecon + name = "FORECON (Squad)" + arrival_message = "A Force Reconnaissance squad has been dispatched to your ship. Stand by." + objectives = "Handle whatever threat is present. Further orders may be provided." + home_base = /datum/lazy_template/ert/weyland_station + probability = 0 + mob_min = 3 + mob_max = 6 + + max_heavies = 1 + max_medics = 1 + max_smartgunners = 1 + +/datum/emergency_call/forecon/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/forecon/squad_leader, TRUE, TRUE) + to_chat(mob, SPAN_ROLE_HEADER("You are the FORECON 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/forecon/tech, TRUE, TRUE) + to_chat(mob, SPAN_ROLE_HEADER("You are the FORECON Support Technician!")) + + else if(smartgunners < max_smartgunners && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_SMARTGUNNER) && check_timelock(mob.client, JOB_SQUAD_SMARTGUN)) + smartgunners++ + to_chat(mob, SPAN_ROLE_HEADER("You are a FORECON Smartgunner!")) + arm_equipment(mob, /datum/equipment_preset/uscm/forecon/smartgunner, TRUE, TRUE) + + else if(heavies < max_heavies && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_HEAVY) && check_timelock(mob.client, JOB_SQUAD_SPECIALIST)) + heavies++ + to_chat(mob, SPAN_ROLE_HEADER("You are a FORECON Designated Marskman!")) + arm_equipment(mob, /datum/equipment_preset/uscm/forecon/marksman, TRUE, TRUE) + + else + arm_equipment(mob, /datum/equipment_preset/uscm/forecon/standard, TRUE, TRUE) + to_chat(mob, SPAN_ROLE_HEADER("You are a FORECON Rifleman!")) + + to_chat(mob, SPAN_ROLE_BODY("You are a member of the USCM's Force Reconnisance. FORECON is a force that specializes in special operations behind enemy lines, or conducting reconnisance in situations regular Marines are not expected to handle.")) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), mob, SPAN_BOLD("Objectives: [objectives]")), 1 SECONDS) + +/datum/emergency_call/forecon/platoon + name = "FORECON (Platoon)" + mob_min = 6 + mob_max = 30 + probability = 0 + max_medics = 6 + max_heavies = 1 + max_smartgunners = 2 + +/datum/emergency_call/forecon/platoon/New() + ..() + arrival_message = "A Force Reconnaissance squad has been dispatched to your ship. Stand by." + objectives = "Handle whatever threat is present. Further orders may be provided." diff --git a/code/datums/supply_packs/restricted_equipment.dm b/code/datums/supply_packs/restricted_equipment.dm index 7979d21f9743..bc13d0fbd610 100644 --- a/code/datums/supply_packs/restricted_equipment.dm +++ b/code/datums/supply_packs/restricted_equipment.dm @@ -21,3 +21,23 @@ containertype = /obj/structure/closet/crate containername = "M4 pattern marine armor crate" group = "Restricted Equipment" + +/datum/supply_packs/intel_kit + name = "Field Intelligence Support Kit crate (x1 fulton pack, x1 data detector, x1 intel pamphlet, x1 large document pouch, 1x intel radio key)" + contains = list( + /obj/item/storage/box/kit/mini_intel, + ) + cost = 20 + containertype = /obj/structure/closet/crate + containername = "Field Intelligence Support Kit crate" + group = "Restricted Equipment" + +/datum/supply_packs/jtac_kit + name = "JTAC Radio Kit crate (x1 full flare gun belt, x2 M89-S signal flare packs, 1x laser designator, 1x jtac radio key, 1x radiopack)" + contains = list( + /obj/item/storage/box/kit/mini_jtac, + ) + cost = 30 + containertype = /obj/structure/closet/crate + containername = "JTAC Radio Kit crate" + group = "Restricted Equipment" diff --git a/code/game/jobs/job/marine/squads.dm b/code/game/jobs/job/marine/squads.dm index 419f7d545fcf..75f6622506a9 100644 --- a/code/game/jobs/job/marine/squads.dm +++ b/code/game/jobs/job/marine/squads.dm @@ -221,6 +221,18 @@ roundstart = FALSE locked = TRUE +/datum/squad/marine/forecon + name = SQUAD_FORECON + equipment_color = "#32CD32" + chat_color = "#32CD32" + radio_freq = FORECON_FREQ + minimap_color = "#32CD32" + + active = FALSE + roundstart = FALSE + locked = TRUE + + //############################### UPP Squads /datum/squad/upp name = "Root" diff --git a/code/game/machinery/telecomms/presets.dm b/code/game/machinery/telecomms/presets.dm index 3997484f39e7..0c9e875534da 100644 --- a/code/game/machinery/telecomms/presets.dm +++ b/code/game/machinery/telecomms/presets.dm @@ -458,7 +458,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, PVST_FREQ, SOF_FREQ, CBRN_FREQ) + freq_listening = list(WY_WO_FREQ, PMC_FREQ, DUT_FREQ, YAUT_FREQ, HC_FREQ, PVST_FREQ, SOF_FREQ, CBRN_FREQ, FORECON_FREQ) //Buses diff --git a/code/game/machinery/vending/vendor_types/crew/staff_officer_armory.dm b/code/game/machinery/vending/vendor_types/crew/staff_officer_armory.dm index ac7b22b4e0a0..1e21f2f7256d 100644 --- a/code/game/machinery/vending/vendor_types/crew/staff_officer_armory.dm +++ b/code/game/machinery/vending/vendor_types/crew/staff_officer_armory.dm @@ -18,6 +18,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_staff_officer_armory, list( list("Marine Combat Gloves", 0, /obj/item/clothing/gloves/marine, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("MRE", 0, /obj/item/storage/box/MRE, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), list("Aviator Shades", 0, /obj/item/clothing/glasses/sunglasses/aviator, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_REGULAR), + list("Bayonet", 0, /obj/item/attachable/bayonet, null, VENDOR_ITEM_REGULAR), list("SPECIALISATION KIT (CHOOSE 1)", 0, null, null, null), list("Essential Engineer Set", 0, /obj/effect/essentials_set/engi, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_RECOMMENDED), @@ -68,6 +69,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_staff_officer_armory, list( list("OTHER SUPPLIES", 0, null, null, null), list("Medical Helmet Optic", 5, /obj/item/device/helmet_visor/medical, null, VENDOR_ITEM_REGULAR), + list("Welding Visor", 5, /obj/item/device/helmet_visor/welding_visor, null, VENDOR_ITEM_REGULAR), list("Magnetic Harness", 12, /obj/item/attachable/magnetic_harness, null, VENDOR_ITEM_REGULAR), list("Radio Telephone Pack", 15, /obj/item/storage/backpack/marine/satchel/rto, null, VENDOR_ITEM_RECOMMENDED), list("Binoculars", 5,/obj/item/device/binoculars, null, VENDOR_ITEM_REGULAR), @@ -78,6 +80,10 @@ GLOBAL_LIST_INIT(cm_vending_clothing_staff_officer_armory, list( list("Fulton Recovery Device", 5, /obj/item/stack/fulton, null, VENDOR_ITEM_REGULAR), list("Motion Detector", 5, /obj/item/device/motiondetector, null, VENDOR_ITEM_REGULAR), list("Space Cleaner", 2, /obj/item/reagent_container/spray/cleaner, null, VENDOR_ITEM_REGULAR), + list("Blowtorch", 5, /obj/item/tool/weldingtool, null, VENDOR_ITEM_REGULAR), + list("Wrench", 1, /obj/item/tool/wrench, null, VENDOR_ITEM_REGULAR), + list("Crowbar", 1, /obj/item/tool/crowbar, null, VENDOR_ITEM_REGULAR), + list("Entrenching Tool", 1, /obj/item/tool/shovel/etool, null, VENDOR_ITEM_REGULAR), list("Whistle", 5, /obj/item/device/whistle, null, VENDOR_ITEM_REGULAR), list("Machete Scabbard (Full)", 5, /obj/item/storage/large_holster/machete/full, null, VENDOR_ITEM_REGULAR) )) diff --git a/code/game/machinery/vending/vendor_types/intelligence_officer.dm b/code/game/machinery/vending/vendor_types/intelligence_officer.dm index 9baa685032de..73d54cbbffca 100644 --- a/code/game/machinery/vending/vendor_types/intelligence_officer.dm +++ b/code/game/machinery/vending/vendor_types/intelligence_officer.dm @@ -52,6 +52,9 @@ GLOBAL_LIST_INIT(cm_vending_gear_intelligence_officer, list( list("RADIO KEYS", 0, null, null, null), list("Intel Radio Encryption Key", 5, /obj/item/device/encryptionkey/intel, null, VENDOR_ITEM_REGULAR), + + list("SPARE INTEL KIT", 0, null, null, null), + list("Field Intelligence Support Kit (For untrained personnel)", 20, /obj/item/storage/box/kit/mini_intel, null, VENDOR_ITEM_REGULAR), )) /obj/structure/machinery/cm_vending/gear/intelligence_officer diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 320e44f3f503..e414ca3dafdd 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -897,6 +897,14 @@ ignore_z = TRUE has_hud = TRUE +/obj/item/device/radio/headset/distress/forecon + name = "\improper Force Recon headset" + desc = "A headset given to FORECON 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 = FORECON_FREQ + initial_keys = list(/obj/item/device/encryptionkey/public, /obj/item/device/encryptionkey/mcom) + ignore_z = TRUE + has_hud = 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) diff --git a/code/modules/clothing/suits/marine_armor/_marine_armor.dm b/code/modules/clothing/suits/marine_armor/_marine_armor.dm index fe15c4d4be4a..8a8d5934b506 100644 --- a/code/modules/clothing/suits/marine_armor/_marine_armor.dm +++ b/code/modules/clothing/suits/marine_armor/_marine_armor.dm @@ -522,6 +522,19 @@ icon_state = "c_VL_syn_camo" flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE +/obj/item/clothing/suit/storage/marine/light/recon + name = "M3-R pattern light armor" + desc = "Special issue light armor for forward econnaissance Marines. Offers similar protection as M3 armor but none of the slowdown." + armor_melee = CLOTHING_ARMOR_MEDIUM + armor_bullet = CLOTHING_ARMOR_MEDIUM + armor_laser = CLOTHING_ARMOR_MEDIUMLOW + armor_energy = CLOTHING_ARMOR_NONE + armor_bomb = CLOTHING_ARMOR_MEDIUMLOW + armor_bio = CLOTHING_ARMOR_MEDIUM + armor_rad = CLOTHING_ARMOR_MEDIUMLOW + armor_internaldamage = CLOTHING_ARMOR_MEDIUM + movement_compensation = SLOWDOWN_ARMOR_LIGHT + // M3-EOD pattern heavy armor /obj/item/clothing/suit/storage/marine/heavy name = "\improper M3-EOD pattern heavy armor" diff --git a/code/modules/cm_marines/equipment/kit_boxes.dm b/code/modules/cm_marines/equipment/kit_boxes.dm index 8d5a478fa620..5ba670d89bc1 100644 --- a/code/modules/cm_marines/equipment/kit_boxes.dm +++ b/code/modules/cm_marines/equipment/kit_boxes.dm @@ -483,6 +483,7 @@ new /obj/item/storage/box/m94/signal(src) new /obj/item/device/binoculars/range/designator(src) new /obj/item/device/encryptionkey/jtac(src) + new /obj/item/storage/backpack/marine/satchel/rto(src) /obj/item/storage/box/kit/mini_intel name = "\improper Field Intelligence Support Kit" @@ -493,7 +494,7 @@ new /obj/item/device/encryptionkey/intel(src) new /obj/item/pamphlet/skill/intel(src) new /obj/item/device/motiondetector/intel(src) - new /obj/item/storage/pouch/document/small(src) + new /obj/item/storage/pouch/document(src) /obj/item/storage/box/kit/mini_grenadier name = "\improper Frontline M40 Grenadier Kit" diff --git a/code/modules/gear_presets/contractor.dm b/code/modules/gear_presets/contractor.dm index 3f0cdecb9ac2..f49b78609945 100644 --- a/code/modules/gear_presets/contractor.dm +++ b/code/modules/gear_presets/contractor.dm @@ -457,7 +457,7 @@ new_human.equip_to_slot_or_del(new /obj/item/device/binoculars/range, WEAR_IN_JACKET) new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/m1911/socom, WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/covert, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/sof, WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/prop/helmetgarb/helmet_nvg/marsoc, WEAR_IN_HELMET) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/veteran/pmc/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud/tactical, WEAR_EYES) @@ -562,7 +562,7 @@ new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/m1911/socom, WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc, WEAR_FACE) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/covert, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/sof, WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/prop/helmetgarb/helmet_nvg/marsoc, WEAR_IN_HELMET) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud/tactical, WEAR_EYES) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/veteran/pmc/knife, WEAR_FEET) @@ -606,7 +606,7 @@ new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/mar40/carbine/tactical, WEAR_J_STORE) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc, WEAR_FACE) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/covert, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/sof, WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/prop/helmetgarb/helmet_nvg/marsoc, WEAR_IN_HELMET) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/veteran/pmc/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/welding/superior, WEAR_EYES) @@ -653,7 +653,7 @@ new_human.equip_to_slot_or_del(new /obj/item/device/binoculars/range, WEAR_IN_JACKET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc, WEAR_FACE) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/covert, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/sof, WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/prop/helmetgarb/helmet_nvg/marsoc, WEAR_IN_HELMET) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/veteran/pmc/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health, WEAR_EYES) @@ -707,7 +707,7 @@ new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/m1911/socom, WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc, WEAR_FACE) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/covert, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/sof, WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/prop/helmetgarb/helmet_nvg/marsoc, WEAR_IN_HELMET) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/veteran/pmc/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/sensor, WEAR_EYES) @@ -792,7 +792,7 @@ new_human.equip_to_slot_or_del(new headset_type, WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/night/experimental_mesons, WEAR_EYES) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc, WEAR_FACE) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/covert, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/sof, WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/prop/helmetgarb/helmet_nvg/cosmetic, WEAR_IN_HELMET) //body new_human.equip_to_slot_or_del(new /obj/item/clothing/under/colonist/wy_davisone, WEAR_BODY) diff --git a/code/modules/gear_presets/uscm_forecon.dm b/code/modules/gear_presets/uscm_forecon.dm new file mode 100644 index 000000000000..dfe4e7dd8d5c --- /dev/null +++ b/code/modules/gear_presets/uscm_forecon.dm @@ -0,0 +1,255 @@ +/datum/equipment_preset/uscm/forecon + assignment = JOB_SQUAD_MARINE + rank = JOB_SQUAD_MARINE + paygrade = PAY_SHORT_ME5 + idtype = /obj/item/card/id/dogtag + role_comm_title = "FORECON" + rank = JOB_MARINE + faction_group = list(FACTION_MARINE) + flags = EQUIPMENT_PRESET_START_OF_ROUND + auto_squad_name = SQUAD_FORECON + ert_squad = TRUE + +/datum/equipment_preset/uscm/forecon/New() + . = ..() + access = get_access(ACCESS_LIST_UA) + + dress_shoes = list(/obj/item/clothing/shoes/dress) + dress_gloves = list(/obj/item/clothing/gloves/marine/dress) + dress_under = list(/obj/item/clothing/under/marine/dress/blues/senior) + dress_over = list(/obj/item/clothing/suit/storage/jacket/marine/dress/blues/nco) + dress_hat = list(/obj/item/clothing/head/marine/dress_cover) + +/datum/equipment_preset/uscm/forecon/load_gear(mob/living/carbon/human/new_human) + var/obj/item/clothing/under/marine/reconnaissance/uniform = new() + var/obj/item/clothing/accessory/storage/droppouch/pouch = new() + var/obj/item/clothing/accessory/ranks/marine/e5/pin = new() + var/obj/item/clothing/accessory/patch/patch_uscm = new() + var/obj/item/clothing/accessory/patch/forecon/patch_forecon = new() + uniform.attach_accessory(new_human,pouch) + uniform.attach_accessory(new_human,patch_uscm) + uniform.attach_accessory(new_human,pin) + uniform.attach_accessory(new_human,patch_forecon) + new_human.equip_to_slot_or_del(uniform, WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/light/recon(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/satchel(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full(new_human), WEAR_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full/alternate(new_human), WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/drinks/flask/marine(new_human), WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/facepaint/sniper(new_human), WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/storage/box/MRE(new_human), WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar/tactical(new_human), WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/device/binoculars/range/designator(new_human), WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/forecon(new_human), WEAR_L_EAR) + GLOB.character_traits[/datum/character_trait/skills/spotter].apply_trait(new_human) + +/datum/equipment_preset/uscm/forecon/proc/add_forecon_weapon(mob/living/carbon/human/new_human) + var/random_gun = rand(1,3) + switch(random_gun) + if(1 , 2) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/m41a/tactical(new_human), WEAR_L_HAND) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/extended(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/extended(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/ap(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/ap(new_human), WEAR_IN_BACK) + if(3) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/m4ra/tactical(new_human), WEAR_L_HAND) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m4ra/ext(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m4ra/ext(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m4ra/ap(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m4ra/ap(new_human), WEAR_IN_BACK) + +/datum/equipment_preset/uscm/forecon/proc/spawn_random_headgear(mob/living/carbon/human/new_human) + var/i = rand(1,10) + switch(i) + if (1 , 2) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmcap(new_human), WEAR_HEAD) + if (3 , 4) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/beanie(new_human), WEAR_HEAD) + if (5 , 6) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/durag(new_human), WEAR_HEAD) + if (7 , 8) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmcap/boonie(new_human), WEAR_HEAD) + if (9) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine(new_human), WEAR_HEAD) + +/datum/equipment_preset/uscm/forecon/proc/add_forecon_weapon_pistol(mob/living/carbon/human/new_human) + var/random_pistol = rand(1,5) + switch(random_pistol) + if(1 , 2) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3(new_human), WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/m1911(new_human), WEAR_IN_BELT) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/m1911(new_human), WEAR_IN_BELT) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/m1911(new_human), WEAR_IN_BELT) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/m1911(new_human), WEAR_IN_BELT) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/m1911(new_human), WEAR_IN_BELT) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/m1911(new_human), WEAR_IN_BELT) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/m1911(new_human), WEAR_IN_BELT) + if(3 , 4) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m39, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/smg/m39(new_human), WEAR_IN_BELT) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/smg/m39/extended(new_human), WEAR_IN_BELT) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/smg/m39/extended(new_human), WEAR_IN_BELT) + if(5) + new_human.equip_to_slot_or_del(new /obj/item/device/motiondetector(new_human),WEAR_WAIST) + +/datum/equipment_preset/uscm/forecon/load_status(mob/living/carbon/human/new_human) + new_human.nutrition = NUTRITION_NORMAL + +/datum/equipment_preset/uscm/forecon/standard + name = "USCM Reconnaissance Marine" + assignment = JOB_FORECON_RIFLEMAN + rank = JOB_SQUAD_MARINE + role_comm_title = "RFN" + minimap_icon = "" + skills = /datum/skills/military/survivor/forecon_standard + +/datum/equipment_preset/uscm/forecon/standard/load_gear(mob/living/carbon/human/new_human) + ..() + spawn_random_headgear(new_human) + add_forecon_weapon_pistol(new_human) + add_forecon_weapon(new_human) + +/datum/equipment_preset/uscm/forecon/tech + name = "USCM Reconnaissance Support Technician" + assignment = JOB_FORECON_SUPPORT + rank = JOB_SQUAD_MEDIC + role_comm_title = "SuppTech" + minimap_icon = "engi" + skills = /datum/skills/military/survivor/forecon_techician + +/datum/equipment_preset/uscm/forecon/tech/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/satchel/big(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/insulated(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/utility/full(new_human), WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/welding(new_human), WEAR_EYES) + ..() + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/utility/full(new_human), WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/adv(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/surgical(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/defibrillator/compact(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/healthanalyzer(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/tool/surgery/synthgraft, WEAR_IN_BACK) + add_forecon_weapon(new_human) + spawn_random_headgear(new_human) + +/datum/equipment_preset/uscm/forecon/marksman + name = "USCM Reconnaissance Designated Marksman" + assignment = JOB_FORECON_MARKSMAN + rank = JOB_SQUAD_SPECIALIST + role_comm_title = "DMR" + minimap_icon = "spec" + skills = /datum/skills/military/survivor/forecon_marksman + +/datum/equipment_preset/uscm/forecon/marksman/load_gear(mob/living/carbon/human/new_human) + var/obj/item/clothing/under/marine/reconnaissance/uniform = new() + var/obj/item/clothing/accessory/storage/droppouch/pouch = new() + var/obj/item/clothing/accessory/ranks/marine/e5/pin = new() + var/obj/item/clothing/accessory/patch/patch_uscm = new() + var/obj/item/clothing/accessory/patch/forecon/patch_forecon = new() + uniform.attach_accessory(new_human,pouch) + uniform.attach_accessory(new_human,patch_uscm) + uniform.attach_accessory(new_human,pin) + uniform.attach_accessory(new_human,patch_forecon) + new_human.equip_to_slot_or_del(uniform, WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/M3S, WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/device/binoculars/range/designator(new_human), WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic(new_human), WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic(new_human), WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/satchel/scout_cloak(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full(new_human), WEAR_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full/alternate(new_human), WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/drinks/flask/marine(new_human), WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/facepaint/sniper(new_human), WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/storage/box/MRE(new_human), WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar/tactical(new_human), WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/device/binoculars/range/designator(new_human), WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/forecon(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/m4ra_custom/tactical(new_human), WEAR_L_HAND) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m4ra/custom(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m4ra/custom(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m4ra/custom(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m4ra/custom/impact(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m4ra/custom/incendiary(new_human), WEAR_IN_BACK) + GLOB.character_traits[/datum/character_trait/skills/spotter].apply_trait(new_human) + ..() + add_forecon_weapon_pistol(new_human) + spawn_random_headgear(new_human) + +/datum/equipment_preset/uscm/forecon/smartgunner + name = "USCM Reconnaissance Smartgunner" + assignment = JOB_FORECON_SMARTGUNNER + rank = JOB_SQUAD_SMARTGUN + role_comm_title = "SG" + minimap_icon = "smartgunner" + skills = /datum/skills/military/survivor/forecon_smartgunner + +/datum/equipment_preset/uscm/forecon/smartgunner/load_gear(mob/living/carbon/human/new_human) + var/obj/item/clothing/under/marine/reconnaissance/uniform = new() + var/obj/item/clothing/accessory/storage/droppouch/pouch = new() + var/obj/item/clothing/accessory/ranks/marine/e5/pin = new() + var/obj/item/clothing/accessory/patch/patch_uscm = new() + var/obj/item/clothing/accessory/patch/forecon/patch_forecon = new() + uniform.attach_accessory(new_human,pouch) + uniform.attach_accessory(new_human,patch_uscm) + uniform.attach_accessory(new_human,pin) + uniform.attach_accessory(new_human,patch_forecon) + new_human.equip_to_slot_or_del(uniform, WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/smartgunner(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full(new_human), WEAR_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full/alternate(new_human), WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/drinks/flask/marine(new_human), WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/facepaint/sniper(new_human), WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/storage/box/MRE(new_human), WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar/tactical(new_human), WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/device/radio(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/forecon(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/smartgun(new_human), WEAR_J_STORE) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/night/m56_goggles(new_human), WEAR_EYES) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/smartgunner(new_human), WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/m1911(new_human), WEAR_IN_BELT) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/m1911(new_human), WEAR_IN_BELT) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/smartgun(new_human), WEAR_IN_BELT) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/smartgun(new_human), WEAR_IN_BELT) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/smartgun(new_human), WEAR_IN_BELT) + GLOB.character_traits[/datum/character_trait/skills/spotter].apply_trait(new_human) + spawn_random_headgear(new_human) + +/datum/equipment_preset/uscm/forecon/squad_leader + name = "USCM Reconnaissance Squad Leader" + assignment = JOB_FORECON_SL + rank = JOB_SQUAD_LEADER + role_comm_title = "SL" + skills = /datum/skills/military/survivor/forecon_squad_leader + paygrade = PAY_SHORT_MO1 + + dress_under = list(/obj/item/clothing/under/marine/dress/blues/senior) + dress_over = list(/obj/item/clothing/suit/storage/jacket/marine/dress/blues/officer) + dress_hat = list(/obj/item/clothing/head/marine/dress_cover/officer) + +/datum/equipment_preset/uscm/forecon/squad_leader/load_gear(mob/living/carbon/human/new_human) + var/obj/item/clothing/under/marine/reconnaissance/uniform = new() + var/obj/item/clothing/accessory/storage/droppouch/pouch = new() + var/obj/item/clothing/accessory/ranks/marine/o1/pin = new() + var/obj/item/clothing/accessory/patch/patch_uscm = new() + var/obj/item/clothing/accessory/patch/forecon/patch_forecon = new() + uniform.attach_accessory(new_human,pouch) + uniform.attach_accessory(new_human,patch_uscm) + uniform.attach_accessory(new_human,pin) + uniform.attach_accessory(new_human,patch_forecon) + new_human.equip_to_slot_or_del(uniform, WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/m41aMK1/tactical(new_human), WEAR_R_HAND) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/satchel(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m41aMK1(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m41aMK1(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m41aMK1/ap(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m41aMK1/ap(new_human), WEAR_IN_BACK) + ..() + add_forecon_weapon_pistol(new_human) + spawn_random_headgear(new_human) diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/burrower/burrower_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/burrower/burrower_powers.dm index ee084e77a5a0..8117eade469a 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/burrower/burrower_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/burrower/burrower_powers.dm @@ -36,6 +36,7 @@ // TODO Make immune to all damage here. to_chat(src, SPAN_XENOWARNING("We burrow ourselves into the ground.")) invisibility = 101 + alpha = 100 anchored = TRUE if(caste.fire_immunity == FIRE_IMMUNITY_NONE) RegisterSignal(src, COMSIG_LIVING_PREIGNITION, PROC_REF(fire_immune)) @@ -72,6 +73,7 @@ )) remove_traits(list(TRAIT_ABILITY_BURROWED, TRAIT_UNDENSE, TRAIT_IMMOBILIZED), TRAIT_SOURCE_ABILITY("Burrow")) invisibility = FALSE + alpha = initial(alpha) anchored = FALSE playsound(loc, 'sound/effects/burrowoff.ogg', 25) for(var/mob/living/carbon/mob in loc) diff --git a/code/modules/projectiles/guns/rifles.dm b/code/modules/projectiles/guns/rifles.dm index b631f093bafe..ad85220400fb 100644 --- a/code/modules/projectiles/guns/rifles.dm +++ b/code/modules/projectiles/guns/rifles.dm @@ -1587,6 +1587,11 @@ /obj/item/weapon/gun/rifle/m4ra/training current_mag = /obj/item/ammo_magazine/rifle/m4ra/rubber +/obj/item/weapon/gun/rifle/m4ra/tactical + current_mag = /obj/item/ammo_magazine/rifle/m4ra/ext + starting_attachment_types = list(/obj/item/attachable/magnetic_harness, /obj/item/attachable/suppressor, /obj/item/attachable/angledgrip) + + //------------------------------------------------------- //L42A Battle Rifle diff --git a/code/modules/projectiles/guns/specialist/scout.dm b/code/modules/projectiles/guns/specialist/scout.dm index c2c5abd54add..8443e59580cc 100644 --- a/code/modules/projectiles/guns/specialist/scout.dm +++ b/code/modules/projectiles/guns/specialist/scout.dm @@ -81,3 +81,6 @@ if(!skillcheck(user, SKILL_SPEC_WEAPONS, SKILL_SPEC_ALL) && user.skills.get_skill_level(SKILL_SPEC_WEAPONS) != SKILL_SPEC_SCOUT) to_chat(user, SPAN_WARNING("You don't seem to know how to use \the [src]...")) return FALSE + +/obj/item/weapon/gun/rifle/m4ra_custom/tactical + starting_attachment_types = list(/obj/item/attachable/magnetic_harness, /obj/item/attachable/bayonet, /obj/item/attachable/angledgrip) diff --git a/colonialmarines.dme b/colonialmarines.dme index 5193cd3571cb..9bfccac6a56e 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -522,6 +522,7 @@ #include "code\datums\emergency_calls\emergency_call.dm" #include "code\datums\emergency_calls\ert_stations.dm" #include "code\datums\emergency_calls\feral_xenos.dm" +#include "code\datums\emergency_calls\forecon.dm" #include "code\datums\emergency_calls\forsaken_xenos.dm" #include "code\datums\emergency_calls\goons.dm" #include "code\datums\emergency_calls\hefa_knight.dm" @@ -1784,6 +1785,7 @@ #include "code\modules\gear_presets\uscm.dm" #include "code\modules\gear_presets\uscm_dress.dm" #include "code\modules\gear_presets\uscm_event.dm" +#include "code\modules\gear_presets\uscm_forecon.dm" #include "code\modules\gear_presets\uscm_medical.dm" #include "code\modules\gear_presets\uscm_police.dm" #include "code\modules\gear_presets\uscm_ship.dm" diff --git a/html/changelogs/AutoChangeLog-pr-6543.yml b/html/changelogs/AutoChangeLog-pr-6543.yml new file mode 100644 index 000000000000..87919d002c94 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6543.yml @@ -0,0 +1,7 @@ +author: "Blundir" +delete-after: True +changes: + - rscadd: "jtac and Intel kits to ASRS store" + - rscadd: "Intel kit to IO points vendor" + - balance: "intel kit now has large doc pouch instead of small" + - balance: "jtac kit now has radiopack" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6550.yml b/html/changelogs/AutoChangeLog-pr-6550.yml new file mode 100644 index 000000000000..c6d18b244fe0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6550.yml @@ -0,0 +1,4 @@ +author: "Unknownity" +delete-after: True +changes: + - bugfix: "Burrowers now see themselves as partly transparent when burrowed." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6670.yml b/html/changelogs/AutoChangeLog-pr-6670.yml new file mode 100644 index 000000000000..936ea1fa4bdd --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6670.yml @@ -0,0 +1,4 @@ +author: "Steelpoint" +delete-after: True +changes: + - rscadd: "VAISO Covert Operatives will now spawn with a Night Vision Optic in their helmet." \ No newline at end of file diff --git a/html/changelogs/archive/2024-07.yml b/html/changelogs/archive/2024-07.yml index 040a246da56e..ae4029da063d 100644 --- a/html/changelogs/archive/2024-07.yml +++ b/html/changelogs/archive/2024-07.yml @@ -77,3 +77,18 @@ - mapadd: The USCM CBRN ERT will use the USS Kurtz as their homebase. kirieee: - rscadd: Covert contractors added to the ERT pool +2024-07-10: + Steelpoint: + - rscadd: Marine force reconnaissance gear presets have been added for admin use. + - rscadd: ERT force reconnaissance have functional squad settings, including a squad + colour (green) and a radio channel. These settings do not apply for survivor + force reconnaissance marines. + - rscadd: A marine force reconnaissance distress signal has been added. Spawning + either a 6-man squad, or a 30-man platoon. These are currently for admin use + only. + - rscadd: A set of customized M3-R armour has been added for force reconnaissance + marines. It has comparable defensive values to M3 armour but has the speed slowdown + of M3-L armour. Only ERT force reconnaissance marines will spawn with this. + hislittlecuzingames: + - rscadd: Multiple tools, and welding visor to SO Locker + - qol: Adds free bayonet to Staff Officer Locker