Skip to content

Commit

Permalink
Forecon ERT Adjustments (#6739)
Browse files Browse the repository at this point in the history
# About the pull request

Forecon ERTs will return to the USCM ERT station if spawned via shuttle.

The Forecon Medic/Engineer spawn has been adjusted. It now has a unique
icon, a unique job name, and its toolset has been expanded to compensate
for items I forgot to add, such as a medivisor and a lifesaver belt.

This PR also adds a new full variant of a lifesaver belt for the Forecon
Tech, furnished with necessary field equipment.

# Explain why it's good for the game
This PR essentially is adding features that I overlooked during my
initial PR, or are otherwise better emphasising what certain roles do.


# Testing Photographs and Procedure
<details>
<summary>Screenshots & Videos</summary>

Put screenshots and videos here with an empty line between the
screenshots and the `<details>` tags.

</details>


# Changelog
:cl:
add: Force reconnaissance response teams will now use the USS Kurtz as
their home base when departing from the USS Almayer on their response
shuttle.
balance: The ERT Forecon Medic/Engineer spawn has been reworked into the
'Reconnaissance Support Technician' to better reflect its design as a
combination of a Corpsman and a Comtech.
add: Per the above, the Support Tech now spawns with a unique and full
lifesaver belt and some form of a medical visor.
imageadd: The Support Tech has a unique HUD icon to better denote its
role.

/:cl:

---------

Co-authored-by: Steelpoint <[email protected]>
  • Loading branch information
Steelpoint and Steelpoint committed Aug 21, 2024
1 parent 9979760 commit 3818176
Show file tree
Hide file tree
Showing 7 changed files with 112 additions and 37 deletions.
1 change: 1 addition & 0 deletions code/__DEFINES/job.dm
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ GLOBAL_LIST_INIT(job_command_roles, JOB_COMMAND_ROLES_LIST)
#define JOB_GENERAL "USCM General"
#define JOB_ACMC "Assistant Commandant of the Marine Corps"
#define JOB_CMC "Commandant of the Marine Corps"
#define JOB_SQUAD_TECH "Reconnaissance Support Technician"

// Used to add a timelock to a job. Will be passed onto derivatives
#define AddTimelock(Path, timelockList) \
Expand Down
2 changes: 1 addition & 1 deletion code/datums/emergency_calls/forecon.dm
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
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
home_base = /datum/lazy_template/ert/uscm_station
probability = 0
mob_min = 3
mob_max = 6
Expand Down
3 changes: 3 additions & 0 deletions code/datums/factions/uscm.dm
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
if(JOB_MARINE_RAIDER) marine_rk = "soc"
if(JOB_MARINE_RAIDER_SL) marine_rk = "soctl"
if(JOB_MARINE_RAIDER_CMD) marine_rk = "soccmd"
if(JOB_SQUAD_TECH) marine_rk = "tech"
if(squad.squad_leader == current_human)
switch(squad.squad_type)
if("Squad") marine_rk = "leader_a"
Expand Down Expand Up @@ -87,6 +88,8 @@
if(JOB_GENERAL, JOB_COLONEL, JOB_ACMC, JOB_CMC)
marine_rk = "general"
border_rk = "command"
if(JOB_SQUAD_TECH)
marine_rk = "tech"
if(JOB_INTEL)
marine_rk = "io"
if(JOB_CAS_PILOT)
Expand Down
3 changes: 3 additions & 0 deletions code/game/jobs/job/special/uscm.dm
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,6 @@
title = JOB_RIOT
/datum/job/special/uscm/riot/chief
title = JOB_RIOT_CHIEF

/datum/job/special/uscm/tech
title = JOB_SQUAD_TECH
23 changes: 23 additions & 0 deletions code/game/objects/items/storage/belt.dm
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,29 @@
new /obj/item/storage/pill_bottle/imidazoline(src)
new /obj/item/storage/pill_bottle/alkysine(src)

/obj/item/storage/belt/medical/lifesaver/full/forecon/fill_preset_inventory()
new /obj/item/storage/pill_bottle/bicaridine(src)
new /obj/item/storage/pill_bottle/bicaridine(src)
new /obj/item/storage/pill_bottle/kelotane(src)
new /obj/item/storage/pill_bottle/kelotane(src)
new /obj/item/storage/pill_bottle/tramadol(src)
new /obj/item/storage/pill_bottle/tramadol(src)
new /obj/item/storage/pill_bottle/antitox(src)
new /obj/item/storage/pill_bottle/alkysine(src)
new /obj/item/storage/pill_bottle/imidazoline(src)
new /obj/item/stack/medical/advanced/bruise_pack(src)
new /obj/item/stack/medical/advanced/bruise_pack(src)
new /obj/item/stack/medical/advanced/bruise_pack(src)
new /obj/item/stack/medical/advanced/ointment(src)
new /obj/item/stack/medical/advanced/ointment(src)
new /obj/item/stack/medical/advanced/ointment(src)
new /obj/item/stack/medical/splint(src)
new /obj/item/stack/medical/splint(src)
new /obj/item/stack/medical/splint(src)
new /obj/item/reagent_container/hypospray/autoinjector/dexalinp(src)
new /obj/item/reagent_container/hypospray/autoinjector/oxycodone(src)
new /obj/item/device/healthanalyzer(src)

/obj/item/storage/belt/medical/lifesaver/upp
name = "\improper Type 41 pattern lifesaver bag"
desc = "The Type 41 load rig is the standard load-bearing equipment of the UPP military. This configuration mounts a duffel bag filled with a range of injectors and light medical supplies, and is common among medics."
Expand Down
117 changes: 81 additions & 36 deletions code/modules/gear_presets/uscm_forecon.dm
Original file line number Diff line number Diff line change
Expand Up @@ -20,31 +20,6 @@
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)
Expand Down Expand Up @@ -75,6 +50,16 @@
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/spawn_random_tech_headgear(mob/living/carbon/human/new_human)
var/i = rand(1,4)
switch(i)
if (1 , 2)
new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/tech(new_human), WEAR_HEAD)
new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health(new_human), WEAR_EYES)
if (3 , 4)
new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/medic/white(new_human), WEAR_HEAD)
new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/welding(new_human), WEAR_EYES)

/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)
Expand Down Expand Up @@ -106,34 +91,78 @@
minimap_icon = ""
skills = /datum/skills/military/survivor/forecon_standard

/datum/equipment_preset/uscm/forecon/standard/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/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/standard/load_gear(mob/living/carbon/human/new_human)
..()
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full/alternate(new_human), WEAR_L_STORE)
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
rank = JOB_SQUAD_TECH
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)
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/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/backpack/marine/satchel/big(new_human), WEAR_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/tools/tactical/full(new_human), WEAR_L_STORE)
new_human.equip_to_slot_or_del(new /obj/item/storage/belt/medical/lifesaver/full/forecon(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)
new_human.equip_to_slot_or_del(new /obj/item/tool/weldingtool , WEAR_IN_BACK)
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/pouch/firstaid/full(new_human), WEAR_R_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/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)

add_forecon_weapon(new_human)
spawn_random_headgear(new_human)
spawn_random_tech_headgear(new_human)

/datum/equipment_preset/uscm/forecon/marksman
name = "USCM Reconnaissance Designated Marksman"
Expand All @@ -154,19 +183,18 @@
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/storage/pouch/firstaid/full/alternate(new_human), WEAR_L_STORE)
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/tool/crowbar/tactical(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)
Expand Down Expand Up @@ -199,6 +227,7 @@
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/storage/pouch/firstaid/full/alternate(new_human), WEAR_L_STORE)
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)
Expand Down Expand Up @@ -243,13 +272,29 @@
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/storage/pouch/firstaid/full/alternate(new_human), WEAR_L_STORE)
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)
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/pouch/firstaid/full(new_human), WEAR_R_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)



..()
add_forecon_weapon_pistol(new_human)
spawn_random_headgear(new_human)
Binary file modified icons/mob/hud/marine_hud.dmi
Binary file not shown.

0 comments on commit 3818176

Please sign in to comment.