From 5b1189686782ef80abcc1f963d0309c498dc19b3 Mon Sep 17 00:00:00 2001 From: Steelpoint <6595389+Steelpoint@users.noreply.github.com> Date: Wed, 10 Jul 2024 01:45:32 +0800 Subject: [PATCH 01/11] FORECON Gear Preset + Admin ERT Addition (#6364) # About the pull request Adds a set of FORECON gear presets set to simulate the FORECON marines, but properly equipped. Furthermore adds two admin only ERT's to summon a squad (6 people) or a platoon (30 people) of FORECON. - Adds a set of recon light armour for FORECON, has same defence as medium armour but light armour move speed. - Tactical attachment variant of the custom M4RA and regular M4RA that FORECON use - Adds squad settings for ERT FORECON No changes to regular FORECON are made. # Explain why it's good for the game The intention behind this is to give staff more tools to make use of FORECON in regular gameplay, either to spawn in individual FORECON marines or to send in FORECON ERT's for an event. The PR does not add FORECON to the regular Distress Beacon pool. # Testing Photographs and Procedure ![Screenshot 2024-06-03 02 37 06](https://github.com/cmss13-devs/cmss13/assets/6595389/f0291deb-0646-44c8-865f-9a4c21a8124c) # Changelog :cl: add: Marine force reconnaissance gear presets have been added for admin use. add: 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. add: 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. add: 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. /:cl: --------- Co-authored-by: Steelpoint --- code/__DEFINES/job.dm | 1 + code/controllers/subsystem/communications.dm | 3 + code/datums/emergency_calls/forecon.dm | 62 +++++ code/game/jobs/job/marine/squads.dm | 12 + code/game/machinery/telecomms/presets.dm | 2 +- .../objects/items/devices/radio/headset.dm | 8 + .../suits/marine_armor/_marine_armor.dm | 13 + code/modules/gear_presets/uscm_forecon.dm | 255 ++++++++++++++++++ code/modules/projectiles/guns/rifles.dm | 5 + .../projectiles/guns/specialist/scout.dm | 3 + colonialmarines.dme | 2 + 11 files changed, 365 insertions(+), 1 deletion(-) create mode 100644 code/datums/emergency_calls/forecon.dm create mode 100644 code/modules/gear_presets/uscm_forecon.dm 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/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/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 15340bc1aae2..e6cf78611a7f 100644 --- a/code/modules/clothing/suits/marine_armor/_marine_armor.dm +++ b/code/modules/clothing/suits/marine_armor/_marine_armor.dm @@ -521,6 +521,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/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/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" From cc17dbd56f4b20b2f998a0993632a0e55c37edf0 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Tue, 9 Jul 2024 18:51:13 +0100 Subject: [PATCH 02/11] Automatic changelog for PR #6364 [ci skip] --- html/changelogs/AutoChangeLog-pr-6364.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6364.yml diff --git a/html/changelogs/AutoChangeLog-pr-6364.yml b/html/changelogs/AutoChangeLog-pr-6364.yml new file mode 100644 index 000000000000..9d9b5e828ea2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6364.yml @@ -0,0 +1,7 @@ +author: "Steelpoint" +delete-after: True +changes: + - 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." \ No newline at end of file From 1f82bf91af018d2b3c8aeeebdf9fdccccc3e2c44 Mon Sep 17 00:00:00 2001 From: hislittlecuzingames <142365554+hislittlecuzingames@users.noreply.github.com> Date: Tue, 9 Jul 2024 19:36:38 -0400 Subject: [PATCH 03/11] Added Vendables to Staff Officer Closet (#6496) # About the pull request Adds the bayonet to the Staff Officer locker as a separate free item. Adds Welding Visor, wrench, blowtorch, crowbar, shovel as paid items. 5, 1, 5, 1, 1 points respectively # Explain why it's good for the game Officers can't "just get" a bayonet, unless they use their boot knife. It makes deploying overly cumbersome, or you just lose your boot knife and can't remove shrapnel if you deploy. SO are also an all specialization leadership role, so allowing them to just help stuff really helps. They can take engineering kits, but don't get useful tools. An SO will likely want a wrench to disassemble window frames for movement or mats. I also added crowbar incase they want to mess with folding cases or open doors. Shovel to let them close tunnels. Doesn't permit every tool, just the "most useful" ones. If an SO wants to Com Tech, he'll have to take that tool belt for specialized tools like screwdrivers, and wirecutters. But general support like a welder to fix cades makes sense to me. Just lets SO take random one off tools if they want it. Permits general "fill help" so to speak. # Testing Photographs and Procedure
https://github.com/cmss13-devs/cmss13/assets/142365554/2e062524-fd3f-4e23-a030-69d6d5389d04 ![image](https://github.com/cmss13-devs/cmss13/assets/142365554/a970997c-b17b-44b6-bf86-5d0d35078d38) ![image](https://github.com/cmss13-devs/cmss13/assets/142365554/5e939d3f-a48f-4d57-9b19-7837d0d53baa)
# Changelog :cl: add: Multiple tools, and welding visor to SO Locker qol: Adds free bayonet to Staff Officer Locker /:cl: --- .../vending/vendor_types/crew/staff_officer_armory.dm | 6 ++++++ 1 file changed, 6 insertions(+) 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) )) From 145747f063fd08d62752096b0f500d1a5872267f Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 10 Jul 2024 00:42:04 +0100 Subject: [PATCH 04/11] Automatic changelog for PR #6496 [ci skip] --- html/changelogs/AutoChangeLog-pr-6496.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6496.yml diff --git a/html/changelogs/AutoChangeLog-pr-6496.yml b/html/changelogs/AutoChangeLog-pr-6496.yml new file mode 100644 index 000000000000..38fb3c647b36 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6496.yml @@ -0,0 +1,5 @@ +author: "hislittlecuzingames" +delete-after: True +changes: + - rscadd: "Multiple tools, and welding visor to SO Locker" + - qol: "Adds free bayonet to Staff Officer Locker" \ No newline at end of file From 51f0383449a743d7c0e1f00ab7adf8c952e2b3e4 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Wed, 10 Jul 2024 01:18:22 +0000 Subject: [PATCH 05/11] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-6364.yml | 7 ------- html/changelogs/AutoChangeLog-pr-6496.yml | 5 ----- html/changelogs/archive/2024-07.yml | 15 +++++++++++++++ 3 files changed, 15 insertions(+), 12 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-6364.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-6496.yml diff --git a/html/changelogs/AutoChangeLog-pr-6364.yml b/html/changelogs/AutoChangeLog-pr-6364.yml deleted file mode 100644 index 9d9b5e828ea2..000000000000 --- a/html/changelogs/AutoChangeLog-pr-6364.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Steelpoint" -delete-after: True -changes: - - 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." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6496.yml b/html/changelogs/AutoChangeLog-pr-6496.yml deleted file mode 100644 index 38fb3c647b36..000000000000 --- a/html/changelogs/AutoChangeLog-pr-6496.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "hislittlecuzingames" -delete-after: True -changes: - - rscadd: "Multiple tools, and welding visor to SO Locker" - - qol: "Adds free bayonet to Staff Officer Locker" \ 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 From 89ba3a6ec7cef45c6c3cbda29e74900777b44c26 Mon Sep 17 00:00:00 2001 From: Unknownity <83834638+Unknownity@users.noreply.github.com> Date: Wed, 10 Jul 2024 14:01:48 +0200 Subject: [PATCH 06/11] Burrower burrow transparency (#6550) # About the pull request Burrower used to be completely invisible to the user when burrowed, this was suddenly changed some time ago (idk when, I was away) and made the Burrower completely visible as if he isnt underground. This PR will bring back the immersion and improve it. Now the Burrower becomes partly transparent while burrowed as a visual indication that you did actually burrow and are currently underground. Was tested, xenos and thermal equipment (pred masks, bug-b-gone goggles etc.) can still see their health/plasma/rank HUD as before (now just more transparently) and the burrower is still 100% invisible to humans. # Explain why it's good for the game Improves immersion, fixes a bug (I assume it is considering I've found no PR linked to the change), makes Burrower mains struggle less if they actually burrowed or not # Testing Photographs and Procedure
Screenshots & Videos video of the "new" feature (actually a fix) in action: https://gachi.gay/u1Ik4
# Changelog :cl:Unknownity fix: Burrowers now see themselves as partly transparent when burrowed. /:cl: Co-authored-by: Unknownity --- .../carbon/xenomorph/abilities/burrower/burrower_powers.dm | 2 ++ 1 file changed, 2 insertions(+) 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) From 5eb0e56d45b65fc66f01776e0680c134406f17e8 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 10 Jul 2024 13:09:29 +0100 Subject: [PATCH 07/11] Automatic changelog for PR #6550 [ci skip] --- html/changelogs/AutoChangeLog-pr-6550.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6550.yml 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 From e596983e186132b429be8f0c87ab8f1f895d1322 Mon Sep 17 00:00:00 2001 From: Steelpoint <6595389+Steelpoint@users.noreply.github.com> Date: Wed, 10 Jul 2024 21:41:28 +0800 Subject: [PATCH 08/11] Gives VAISO Operatives Night Vision Optics (#6670) # About the pull request Grants VAISO Operatives a night vision optic helmet. # Explain why it's good for the game The VAISO operatives were always intended to have access to night vision (as evidenced by them still spawning with the old, but now non-functional, Marsoc Night Vision Goggles), however the change to Night Vison Goggles meant they were never updated to be granted Optics. This PR does this. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: add: VAISO Covert Operatives will now spawn with a Night Vision Optic in their helmet. /:cl: Co-authored-by: Steelpoint --- code/modules/gear_presets/contractor.dm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) 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) From daaf99612f95040e551feb16624166df9e530e52 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 10 Jul 2024 14:46:58 +0100 Subject: [PATCH 09/11] Automatic changelog for PR #6670 [ci skip] --- html/changelogs/AutoChangeLog-pr-6670.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6670.yml 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 From 7c75ba93bacdf502248725f74eb6ccb2c422f706 Mon Sep 17 00:00:00 2001 From: Blundir <100090741+Blundir@users.noreply.github.com> Date: Wed, 10 Jul 2024 16:42:18 +0300 Subject: [PATCH 10/11] Jtac, Intel kits for req and IO vendor (#6543) # About the pull request Adds Jtac and Intel kits to req Swaps small doc pouch with large one in intel kit. Added radiopack to Jtac kit. Adds Intel kit to IO vendor # Explain why it's good for the game Req now has ability to compensate lack of jtac/intel personnel, especially if jtac pamphlets are out or if all IOs are dead/missing. IOs on the other hand, can assign addional mini IOs to their squad more easily. # Testing Photographs and Procedure
Screenshots & Videos ![8jXEpgQEM9](https://github.com/cmss13-devs/cmss13/assets/100090741/66445a9e-c05c-417e-ae34-0f8fffaf00fd) ![VMpjJotr3q](https://github.com/cmss13-devs/cmss13/assets/100090741/fde8de1e-4de6-46be-8d70-9c804f250fdf)
# Changelog :cl: add: jtac and Intel kits to ASRS store add: Intel kit to IO points vendor balance: intel kit now has large doc pouch instead of small balance: jtac kit now has radiopack /:cl: --- .../supply_packs/restricted_equipment.dm | 20 +++++++++++++++++++ .../vendor_types/intelligence_officer.dm | 3 +++ .../modules/cm_marines/equipment/kit_boxes.dm | 3 ++- 3 files changed, 25 insertions(+), 1 deletion(-) 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/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/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" From ede751e599c9a976d01ddf416e8c67dc71b005f0 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 10 Jul 2024 14:55:43 +0100 Subject: [PATCH 11/11] Automatic changelog for PR #6543 [ci skip] --- html/changelogs/AutoChangeLog-pr-6543.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6543.yml 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