Skip to content

Commit

Permalink
Merge branch 'master' into sonic
Browse files Browse the repository at this point in the history
  • Loading branch information
Blundir committed Jul 10, 2024
2 parents cb25d79 + ede751e commit b924bef
Show file tree
Hide file tree
Showing 21 changed files with 434 additions and 8 deletions.
1 change: 1 addition & 0 deletions code/__DEFINES/job.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
3 changes: 3 additions & 0 deletions code/controllers/subsystem/communications.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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",
Expand Down
62 changes: 62 additions & 0 deletions code/datums/emergency_calls/forecon.dm
Original file line number Diff line number Diff line change
@@ -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:</b> [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."
20 changes: 20 additions & 0 deletions code/datums/supply_packs/restricted_equipment.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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"
12 changes: 12 additions & 0 deletions code/game/jobs/job/marine/squads.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
2 changes: 1 addition & 1 deletion code/game/machinery/telecomms/presets.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand Down Expand Up @@ -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),
Expand All @@ -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)
))
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
8 changes: 8 additions & 0 deletions code/game/objects/items/devices/radio/headset.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
13 changes: 13 additions & 0 deletions code/modules/clothing/suits/marine_armor/_marine_armor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
3 changes: 2 additions & 1 deletion code/modules/cm_marines/equipment/kit_boxes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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"
Expand Down
12 changes: 6 additions & 6 deletions code/modules/gear_presets/contractor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down
Loading

0 comments on commit b924bef

Please sign in to comment.