Skip to content

Commit

Permalink
Merge branch 'master' into UGL-rounds-expansion
Browse files Browse the repository at this point in the history
  • Loading branch information
BonniePandora committed Nov 11, 2024
2 parents ca0b1f5 + cc9fdb9 commit 4c0966d
Show file tree
Hide file tree
Showing 80 changed files with 1,652 additions and 813 deletions.
12 changes: 12 additions & 0 deletions code/__DEFINES/equipment.dm
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,8 @@
#define BLOCK_KNOCKDOWN (1<<11)
/// Whether wearing this suit grants you the ability to fire a smartgun
#define SMARTGUN_HARNESS (1<<12)
///Whether wearing this headset grants you the ability to use the IFF targetting system of the smartgun
#define SMARTGUN_OPTIC (1<<13)

//SUITS AND HELMETS====================================================================================

Expand Down Expand Up @@ -465,8 +467,18 @@ GLOBAL_LIST_INIT(slot_to_contained_sprite_shorthand, list(
#define ACCESSORY_SLOT_ARMBAND "Armband"
#define ACCESSORY_SLOT_RANK "Rank"
#define ACCESSORY_SLOT_DECOR "Decor"
#define ACCESSORY_SLOT_DECORARMOR "Decor Armor"
#define ACCESSORY_SLOT_DECORBRACER "Decor Bracer"
#define ACCESSORY_SLOT_DECORNECK "Decor Neck"
#define ACCESSORY_SLOT_LEGDECOR "Leg Decor"
#define ACCESSORY_SLOT_DECORGROIN "Decor Groin"
#define ACCESSORY_SLOT_MEDAL "Medal"
#define ACCESSORY_SLOT_PONCHO "Ponchos"
#define ACCESSORY_SLOT_HOLSTER "Holster"
#define ACCESSORY_SLOT_SGPAINT "SG Paint"
#define ACCESSORY_SLOT_PAINT "Paint"
#define ACCESSORY_SLOT_M3UTILITY "M3 Utility"
#define ACCESSORY_SLOT_M56UTILITY "M56 Utility"

/// Used for uniform armor inserts.
#define ACCESSORY_SLOT_ARMOR_C "Chest armor"
Expand Down
4 changes: 2 additions & 2 deletions code/__DEFINES/human.dm
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,8 @@
#define HAIR_LAYER 23
#define HAIR_GRADIENT_LAYER 22
#define FACIAL_LAYER 21
#define EARS_LAYER 20
#define FACEMASK_LAYER 19
#define EARS_LAYER 19
#define FACEMASK_LAYER 20

/// Unrevivable headshot overlays, suicide/execution.
#define HEADSHOT_LAYER 18
Expand Down
3 changes: 2 additions & 1 deletion code/__DEFINES/vendors.dm
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#define MARINE_CAN_BUY_SHOES "shoes"
#define MARINE_CAN_BUY_HELMET "helmet"
#define MARINE_CAN_BUY_ARMOR "armor"
#define MARINE_CAN_BUY_PAINT "armor paint"
#define MARINE_CAN_BUY_GLOVES "gloves"
#define MARINE_CAN_BUY_EAR "ear"
#define MARINE_CAN_BUY_BACKPACK "backpack"
Expand All @@ -22,7 +23,7 @@
#define CIVILIAN_CAN_BUY_BACKPACK "civilian_backpack"
#define CIVILIAN_CAN_BUY_UTILITY "civilian_utility"

#define MARINE_CAN_BUY_ALL list(MARINE_CAN_BUY_UNIFORM = 1, MARINE_CAN_BUY_SHOES = 1, MARINE_CAN_BUY_HELMET = 1, MARINE_CAN_BUY_ARMOR = 1, MARINE_CAN_BUY_GLOVES = 1, MARINE_CAN_BUY_EAR = 1, MARINE_CAN_BUY_BACKPACK = 1, MARINE_CAN_BUY_POUCH = 2, MARINE_CAN_BUY_BELT = 1, MARINE_CAN_BUY_GLASSES = 1, MARINE_CAN_BUY_MASK = 1, MARINE_CAN_BUY_ESSENTIALS = 1, MARINE_CAN_BUY_SECONDARY = 1, MARINE_CAN_BUY_ATTACHMENT = 1, MARINE_CAN_BUY_MRE = 1, MARINE_CAN_BUY_ACCESSORY = 1, MARINE_CAN_BUY_COMBAT_SHOES = 1, MARINE_CAN_BUY_COMBAT_HELMET = 1, MARINE_CAN_BUY_COMBAT_ARMOR = 1, MARINE_CAN_BUY_KIT = 1, MARINE_CAN_BUY_DRESS = 99)
#define MARINE_CAN_BUY_ALL list(MARINE_CAN_BUY_UNIFORM = 1, MARINE_CAN_BUY_SHOES = 1, MARINE_CAN_BUY_HELMET = 1, MARINE_CAN_BUY_ARMOR = 1, MARINE_CAN_BUY_PAINT = 1, MARINE_CAN_BUY_GLOVES = 1, MARINE_CAN_BUY_EAR = 1, MARINE_CAN_BUY_BACKPACK = 1, MARINE_CAN_BUY_POUCH = 2, MARINE_CAN_BUY_BELT = 1, MARINE_CAN_BUY_GLASSES = 1, MARINE_CAN_BUY_MASK = 1, MARINE_CAN_BUY_ESSENTIALS = 1, MARINE_CAN_BUY_SECONDARY = 1, MARINE_CAN_BUY_ATTACHMENT = 1, MARINE_CAN_BUY_MRE = 1, MARINE_CAN_BUY_ACCESSORY = 1, MARINE_CAN_BUY_COMBAT_SHOES = 1, MARINE_CAN_BUY_COMBAT_HELMET = 1, MARINE_CAN_BUY_COMBAT_ARMOR = 1, MARINE_CAN_BUY_KIT = 1, MARINE_CAN_BUY_DRESS = 99)

#define MARINE_TOTAL_BUY_POINTS 45
#define MARINE_TOTAL_SNOWFLAKE_POINTS 120
Expand Down
1 change: 1 addition & 0 deletions code/_globalvars/bitfields.dm
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,7 @@ DEFINE_BITFIELD(flags_inventory, list(
"NOPRESSUREDMAGE" = NOPRESSUREDMAGE,
"BLOCK_KNOCKDOWN" = BLOCK_KNOCKDOWN,
"SMARTGUN_HARNESS" = SMARTGUN_HARNESS,
"SMARTGUN_OPTIC" = SMARTGUN_OPTIC,
))

DEFINE_BITFIELD(flags_jumpsuit, list(
Expand Down
2 changes: 1 addition & 1 deletion code/_globalvars/global_lists.dm
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@ GLOBAL_LIST_INIT(dropship_camos, list(DROPSHIP_CAMO_TAN, DROPSHIP_CAMO_NAVY, DRO
//Backpacks
GLOBAL_LIST_INIT(backbaglist, list("Backpack", "Satchel"))
//Armor styles
GLOBAL_LIST_INIT(armor_style_list, list("Padded" = 1, "Padless" = 2, "Ridged" = 3, "Carrier" = 4, "Skull" = 5, "Smooth" = 6, "Random"))
GLOBAL_LIST_INIT(armor_style_list, list("Standard" = 1, "Ridged" = 2, "Smooth" = 3, "Random"))

// var/global/list/exclude_jobs = list(/datum/job/ai,/datum/job/cyborg)
GLOBAL_VAR_INIT(round_should_check_for_win, TRUE)
Expand Down
6 changes: 6 additions & 0 deletions code/controllers/configuration/entries/general.dm
Original file line number Diff line number Diff line change
Expand Up @@ -354,6 +354,12 @@ The default value assumes youtube-dl is in your system PATH
/datum/config_entry/string/invoke_youtubedl
protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN

/datum/config_entry/string/cobalt_base_api
protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN


/datum/config_entry/string/cobalt_api_key
protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN

/datum/config_entry/number/error_cooldown // The "cooldown" time for each occurrence of a unique error
config_entry_value = 600
Expand Down
45 changes: 0 additions & 45 deletions code/datums/emergency_calls/deathsquad.dm
Original file line number Diff line number Diff line change
Expand Up @@ -84,48 +84,3 @@
arm_equipment(person, /datum/equipment_preset/pmc/w_y_whiteout/low_threat, TRUE, TRUE)

addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), person, SPAN_BOLD("Objectives: [objectives]")), 1 SECONDS)

//################################################################################################
// Marine commandos - USCM Deathsquad. Event only
/datum/emergency_call/marsoc
name = "Marine Raider Operatives (!DEATHSQUAD!)"
mob_max = 8
mob_min = 5
probability = 0
shuttle_id = MOBILE_SHUTTLE_ID_ERT2
home_base = /datum/lazy_template/ert/weyland_station
name_of_spawn = /obj/effect/landmark/ert_spawns/distress_pmc
var/leader_preset = /datum/equipment_preset/uscm/marsoc/sl
var/member_preset = /datum/equipment_preset/uscm/marsoc

/datum/emergency_call/marsoc/create_member(datum/mind/player, 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/member = new(spawn_loc)
player.transfer_to(member, TRUE)

if(!leader && HAS_FLAG(member.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(member.client, JOB_SQUAD_LEADER, time_required_for_job)) //First one spawned is always the leader.
leader = member
to_chat(member, SPAN_WARNING(FONT_SIZE_BIG("You are a Marine Raider Team Leader, better than all the rest.")))
arm_equipment(member, leader_preset, TRUE, TRUE)
else
to_chat(member, SPAN_WARNING(FONT_SIZE_BIG("You are an elite Marine Raider Operative, the best of the best.")))
arm_equipment(member, member_preset, TRUE, TRUE)
to_chat(member, SPAN_BOLDNOTICE("You are absolutely loyal to High Command and must follow their directives."))
to_chat(member, SPAN_BOLDNOTICE("Execute the mission assigned to you with extreme prejudice!"))
return

/datum/emergency_call/marsoc/covert
name = "Marine Raider Operatives (!DEATHSQUAD! Covert)"
leader_preset = /datum/equipment_preset/uscm/marsoc/sl/covert
member_preset = /datum/equipment_preset/uscm/marsoc/covert


/datum/emergency_call/marsoc/low_threat
name = "Marine Raider Operatives"
leader_preset = /datum/equipment_preset/uscm/marsoc/low_threat/sl
member_preset = /datum/equipment_preset/uscm/marsoc/low_threat
112 changes: 112 additions & 0 deletions code/datums/internet_media.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
/**
* Generic implementation to get a URL that can be sent to
* clients to play audio via [/datum/tgui_panel/proc/play_music], from a provided URL
*/
/datum/internet_media
/**
* If we have encountered an error while attempting to retrieve the URL
*/
var/error

/**
* Handles a request for an audio file, from a provided media URL
* Must return a [/datum/media_response], which must have at least the [/datum/media_response/var/url] filled out
*
* If we are not returning a media_response, set the [/datum/internet_media/var/error] to be an error
*/
/datum/internet_media/proc/get_media(url)
RETURN_TYPE(/datum/media_response)

CRASH("[type] does not override [nameof(__PROC__)].")

/datum/internet_media/yt_dlp

/datum/internet_media/yt_dlp/get_media(url)
var/ytdl = CONFIG_GET(string/invoke_youtubedl)
if(!ytdl)
error = "Youtube-dl FAILED: Not configured"
return

if(findtext(url, ":") && !findtext(url, GLOB.is_http_protocol))
error = "Youtube-dl FAILED: Non-http(s) URIs are not allowed. For youtube-dl shortcuts like ytsearch: please use the appropriate full url from the website."
return

var/list/output = world.shelleo("[ytdl] --geo-bypass --format \"bestaudio\[ext=mp3]/best\[ext=mp4]\[height<=360]/bestaudio\[ext=m4a]/bestaudio\[ext=aac]\" --dump-single-json --no-playlist -- \"[shell_url_scrub(url)]\"")
var/errorlevel = output[SHELLEO_ERRORLEVEL]
var/stdout = output[SHELLEO_STDOUT]
var/stderr = output[SHELLEO_STDERR]

if(errorlevel)
error = "Youtube-dl URL retrieval FAILED: [stderr]"
return

var/data

try
data = json_decode(stdout)
catch(var/exception/decode_error)
error = "Youtube-dl JSON parsing FAILED: [decode_error]: [stdout]"
return

return new /datum/media_response(data["url"], data["title"], data["start_time"], data["end_time"])

/datum/internet_media/cobalt

/datum/internet_media/cobalt/get_media(url)
var/cobalt = CONFIG_GET(string/cobalt_base_api)
if(!cobalt)
error = "cobalt.tools FAILED: Not configured"
return

var/list/headers = list()
headers["Accept"] = "application/json"
headers["Content-Type"] = "application/json"

var/auth_key = CONFIG_GET(string/cobalt_api_key)
if(auth_key)
headers["Authorization"] = "Api-Key [auth_key]"

var/datum/http_request/request = new
request.prepare(RUSTG_HTTP_METHOD_POST, cobalt, json_encode(list(
"url" = url,
"downloadMode" = "audio"
)), headers)

request.execute_blocking()

var/datum/http_response/response_raw = request.into_response()

if(response_raw.errored)
error = "cobalt.tools web request FAILED: [response_raw.error]"
return

var/list/response
try
response = json_decode(response_raw.body)
catch(var/exception/decode_error)
error = "cobalt.tools JSON parsing FAILED: [decode_error]: [response_raw.body]"
return

if(!(response["status"] in list("redirect", "tunnel")))
error = "cobalt.tools request FAILED - invalid response: [response_raw.body]"
return

return new /datum/media_response(response["url"])

/datum/media_response
var/url
var/title
var/start_time
var/end_time

/datum/media_response/New(url, title, start_time, end_time)
if(isnull(url))
CRASH("/datum/media_response created without a URL field.")

src.url = url
src.title = title
src.start_time = start_time
src.end_time = end_time

/datum/media_response/proc/get_list()
return list("url" = url, "title" = title, "start_time" = start_time, "end_time" = end_time)
4 changes: 4 additions & 0 deletions code/game/camera_manager/camera_manager.dm
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,10 @@
var/obj/item/clothing/clothing = current.loc
cam_location = clothing.loc

else if(istype(current.loc, /obj/item/device/overwatch_camera))
var/obj/item/device/overwatch_camera/cam_gear = current.loc
cam_location = cam_gear.loc

// If we're not forcing an update for some reason and the cameras are in the same location,
// we don't need to update anything.
// Most security cameras will end here as they're not moving.
Expand Down
4 changes: 4 additions & 0 deletions code/game/machinery/camera/camera.dm
Original file line number Diff line number Diff line change
Expand Up @@ -366,3 +366,7 @@ GLOBAL_LIST_EMPTY_TYPED(all_cameras, /obj/structure/machinery/camera)

/obj/structure/machinery/camera/cas/isXRay()
return TRUE

/obj/structure/machinery/camera/overwatch
name = "overwatch camera"
network = list(CAMERA_NET_OVERWATCH)
10 changes: 10 additions & 0 deletions code/game/machinery/doors/airlock_types.dm
Original file line number Diff line number Diff line change
Expand Up @@ -409,6 +409,10 @@
icon = 'icons/obj/structures/doors/securedoor.dmi'
req_access = list(ACCESS_MARINE_COMMAND)

/obj/structure/machinery/door/airlock/almayer/secure/glass
name = "\improper Secure Airlock"
icon = 'icons/obj/structures/doors/securedoor_glass.dmi'

/obj/structure/machinery/door/airlock/almayer/secure/colony
req_access = null
req_one_access = list(ACCESS_CIVILIAN_PUBLIC)
Expand Down Expand Up @@ -495,6 +499,12 @@
req_access = list()
req_one_access = list(ACCESS_MARINE_MEDBAY, ACCESS_MARINE_COMMAND)

/obj/structure/machinery/door/airlock/almayer/medical/plain
name = "\improper Airlock"
icon = 'icons/obj/structures/doors/medidoor_plain.dmi'
req_access = null
req_one_access = list(ACCESS_CIVILIAN_MEDBAY, ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_CIVILIAN_PUBLIC)

/obj/structure/machinery/door/airlock/almayer/medical/colony
req_access = null
req_one_access = list(ACCESS_CIVILIAN_MEDBAY, ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_CIVILIAN_PUBLIC)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@
GLOBAL_LIST_INIT(cm_vending_clothing_pilot_officer, list(
list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null),
list("Gloves", 0, /obj/item/clothing/gloves/yellow, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY),
list("M30 Tactical Helmet", 0, /obj/item/clothing/head/helmet/marine/pilot, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY),
list("M30 Tactical Helmet", 0, /obj/item/clothing/head/helmet/upp/marinepilot, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY),
list("Leather Satchel", 0, /obj/item/storage/backpack/satchel, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY),
list("MRE", 0, /obj/item/storage/box/MRE, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY),

Expand Down
10 changes: 5 additions & 5 deletions code/game/machinery/vending/vendor_types/crew/sea.dm
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,12 @@ GLOBAL_LIST_INIT(cm_vending_clothing_sea, list(
list("Sidearm Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR),
list("Sling Pouch", 0, /obj/item/storage/pouch/sling, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR),

list("COMBAT GEAR", 0, null, null, null),
list("COMBAT ARMOR (CHOOSE 1)", 0, null, null, null),
list("M3-VL Pattern Ballistics Vest", 0, /obj/item/clothing/suit/storage/marine/light/vest, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR),
list("M3-L Pattern Light Armor", 0, /obj/item/clothing/suit/storage/marine/light, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_RECOMMENDED),
list("M3 Pattern Marine Armor", 0, /obj/item/clothing/suit/storage/marine, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR),
list("Bulletproof Vest", 0, /obj/item/clothing/suit/armor/bulletproof, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR),
list("M10 Helmet", 0, /obj/item/clothing/head/helmet/marine, MARINE_CAN_BUY_COMBAT_HELMET, VENDOR_ITEM_REGULAR),
list("M3-VL Pattern Ballistics Vest", 0, /obj/item/clothing/suit/storage/marine/light/vest, MARINE_CAN_BUY_COMBAT_ARMOR, VENDOR_ITEM_REGULAR),
list("M3-L Pattern Light Armor", 0, /obj/item/clothing/suit/storage/marine/light, MARINE_CAN_BUY_COMBAT_ARMOR, VENDOR_ITEM_RECOMMENDED),
list("M3 Pattern Padded Armor", 0, /obj/item/clothing/suit/storage/marine/medium/padded, MARINE_CAN_BUY_COMBAT_ARMOR, VENDOR_ITEM_REGULAR),
list("Bulletproof Vest", 0, /obj/item/clothing/suit/armor/bulletproof, MARINE_CAN_BUY_COMBAT_ARMOR, VENDOR_ITEM_REGULAR),

list("EYEWEAR (CHOOSE 1)", 0, null, null, null),
list("Welding Goggles", 0, /obj/item/clothing/glasses/welding, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_REGULAR),
Expand Down
2 changes: 1 addition & 1 deletion code/game/machinery/vending/vendor_types/crew/synthetic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_synth_snowflake, list(
list("Marine Helmet (Snow)", 12, /obj/item/clothing/head/helmet/marine/snow, null, VENDOR_ITEM_REGULAR),
list("Marine Helmet (Desert)", 12, /obj/item/clothing/head/helmet/marine/desert, null, VENDOR_ITEM_REGULAR),
list("Technician Helmet", 12, /obj/item/clothing/head/helmet/marine/tech, null, VENDOR_ITEM_REGULAR),
list("Pilot Helmet", 12, /obj/item/clothing/head/helmet/marine/pilot, null, VENDOR_ITEM_REGULAR),
list("Pilot Helmet", 12, /obj/item/clothing/head/helmet/upp/marinepilot, null, VENDOR_ITEM_REGULAR),
list("Crewman Helmet", 12, /obj/item/clothing/head/helmet/marine/tech/tanker, null, VENDOR_ITEM_REGULAR),
list("Corpsman Helmet", 12, /obj/item/clothing/head/helmet/marine/medic, null, VENDOR_ITEM_REGULAR),
list("White Corpsman Helmet", 12, /obj/item/clothing/head/helmet/marine/medic/white, null, VENDOR_ITEM_REGULAR),
Expand Down
18 changes: 5 additions & 13 deletions code/game/machinery/vending/vendor_types/requisitions.dm
Original file line number Diff line number Diff line change
Expand Up @@ -67,12 +67,7 @@
list("Breaching Charge", floor(scale * 2), /obj/item/explosive/plastic/breaching_charge, VENDOR_ITEM_REGULAR),

list("WEBBINGS", -1, null, null),
list("Black Webbing Vest", floor(scale * 2), /obj/item/clothing/accessory/storage/black_vest, VENDOR_ITEM_REGULAR),
list("Brown Webbing Vest", floor(scale * 2), /obj/item/clothing/accessory/storage/black_vest/brown_vest, VENDOR_ITEM_REGULAR),
list("Shoulder Holster", floor(scale * 1.5), /obj/item/clothing/accessory/storage/holster, VENDOR_ITEM_REGULAR),
list("Webbing", floor(scale * 5), /obj/item/clothing/accessory/storage/webbing, VENDOR_ITEM_REGULAR),
list("Knife Webbing", floor(scale * 1), /obj/item/clothing/accessory/storage/knifeharness, VENDOR_ITEM_REGULAR),
list("Drop Pouch", floor(scale * 2), /obj/item/clothing/accessory/storage/droppouch, VENDOR_ITEM_REGULAR),
list("Drop Pouch", floor(scale * 5), /obj/item/clothing/accessory/storage/droppouch, VENDOR_ITEM_REGULAR),
list("External Webbing", floor(scale * 5), /obj/item/clothing/suit/storage/webbing, VENDOR_ITEM_REGULAR),

list("BACKPACKS", -1, null, null),
Expand Down Expand Up @@ -480,13 +475,10 @@
list("M10 Pattern Marine Helmet", 20, /obj/item/clothing/head/helmet/marine, VENDOR_ITEM_REGULAR),
list("M10 Pattern Technician Helmet", 20, /obj/item/clothing/head/helmet/marine/tech, VENDOR_ITEM_REGULAR),
list("M10 Pattern Corpman Helmet", 20, /obj/item/clothing/head/helmet/marine/medic, VENDOR_ITEM_REGULAR),
list("M3 Pattern Carrier Marine Armor", 20, /obj/item/clothing/suit/storage/marine/medium/carrier, VENDOR_ITEM_REGULAR),
list("M3 Pattern Padded Marine Armor", 20, /obj/item/clothing/suit/storage/marine/medium/padded, VENDOR_ITEM_REGULAR),
list("M3 Pattern Padless Marine Armor", 20, /obj/item/clothing/suit/storage/marine/medium/padless, VENDOR_ITEM_REGULAR),
list("M3 Pattern Ridged Marine Armor", 20, /obj/item/clothing/suit/storage/marine/medium/padless_lines, VENDOR_ITEM_REGULAR),
list("M3 Pattern Skull Marine Armor", 20, /obj/item/clothing/suit/storage/marine/medium/skull, VENDOR_ITEM_REGULAR),
list("M3-EOD Pattern Heavy Armor", 10, /obj/item/clothing/suit/storage/marine/heavy, VENDOR_ITEM_REGULAR),
list("M3-L Pattern Light Armor", 10, /obj/item/clothing/suit/storage/marine/light, VENDOR_ITEM_REGULAR),
list("M3 Pattern Marine Armor", 20, /obj/item/clothing/suit/marine, VENDOR_ITEM_REGULAR),
list("M3 Pattern Ridged Marine Armor", 20, /obj/item/clothing/suit/marine/lines, VENDOR_ITEM_REGULAR),
list("M3-EOD Pattern Heavy Armor", 10, /obj/item/clothing/suit/marine/heavy, VENDOR_ITEM_REGULAR),
list("M3-L Pattern Light Armor", 10, /obj/item/clothing/suit/marine/light, VENDOR_ITEM_REGULAR),

list("GLOVES", -1, null, null),
list("Combat Gloves", 40, /obj/item/clothing/gloves/marine, VENDOR_ITEM_REGULAR),
Expand Down
Loading

0 comments on commit 4c0966d

Please sign in to comment.