diff --git a/code/__DEFINES/equipment.dm b/code/__DEFINES/equipment.dm index 5d5b81bf8c..64d2ff0b0b 100644 --- a/code/__DEFINES/equipment.dm +++ b/code/__DEFINES/equipment.dm @@ -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==================================================================================== @@ -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" diff --git a/code/__DEFINES/human.dm b/code/__DEFINES/human.dm index 7d8a717641..97b89ba00d 100644 --- a/code/__DEFINES/human.dm +++ b/code/__DEFINES/human.dm @@ -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 diff --git a/code/__DEFINES/vendors.dm b/code/__DEFINES/vendors.dm index 70e30edddf..5c5e600e96 100644 --- a/code/__DEFINES/vendors.dm +++ b/code/__DEFINES/vendors.dm @@ -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" @@ -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 diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 6e5e239ef5..1289e7057f 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -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( diff --git a/code/_globalvars/global_lists.dm b/code/_globalvars/global_lists.dm index 9648c4cf15..8376a10957 100644 --- a/code/_globalvars/global_lists.dm +++ b/code/_globalvars/global_lists.dm @@ -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) diff --git a/code/datums/emergency_calls/deathsquad.dm b/code/datums/emergency_calls/deathsquad.dm index 649f40c8cb..25313feff1 100644 --- a/code/datums/emergency_calls/deathsquad.dm +++ b/code/datums/emergency_calls/deathsquad.dm @@ -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 diff --git a/code/game/camera_manager/camera_manager.dm b/code/game/camera_manager/camera_manager.dm index 90e80ec703..7ed9947bce 100644 --- a/code/game/camera_manager/camera_manager.dm +++ b/code/game/camera_manager/camera_manager.dm @@ -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. diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 3b7d824928..c01bacfb41 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -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) diff --git a/code/game/machinery/vending/vendor_types/crew/pilot_officer.dm b/code/game/machinery/vending/vendor_types/crew/pilot_officer.dm index c3d94fe630..0fabb13de7 100644 --- a/code/game/machinery/vending/vendor_types/crew/pilot_officer.dm +++ b/code/game/machinery/vending/vendor_types/crew/pilot_officer.dm @@ -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), diff --git a/code/game/machinery/vending/vendor_types/crew/sea.dm b/code/game/machinery/vending/vendor_types/crew/sea.dm index 99daa1325b..036f749c11 100644 --- a/code/game/machinery/vending/vendor_types/crew/sea.dm +++ b/code/game/machinery/vending/vendor_types/crew/sea.dm @@ -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), diff --git a/code/game/machinery/vending/vendor_types/crew/synthetic.dm b/code/game/machinery/vending/vendor_types/crew/synthetic.dm index a29a87fad9..0527efcabb 100644 --- a/code/game/machinery/vending/vendor_types/crew/synthetic.dm +++ b/code/game/machinery/vending/vendor_types/crew/synthetic.dm @@ -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), diff --git a/code/game/machinery/vending/vendor_types/requisitions.dm b/code/game/machinery/vending/vendor_types/requisitions.dm index 660264a717..6d2931e227 100644 --- a/code/game/machinery/vending/vendor_types/requisitions.dm +++ b/code/game/machinery/vending/vendor_types/requisitions.dm @@ -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), @@ -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), diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_medic.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_medic.dm index eda8a6fe0a..4f5a865b34 100644 --- a/code/game/machinery/vending/vendor_types/squad_prep/squad_medic.dm +++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_medic.dm @@ -129,9 +129,10 @@ GLOBAL_LIST_INIT(cm_vending_clothing_medic, list( list("Essential Medical Set", 0, /obj/effect/essentials_set/medic, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), list("ARMOR (CHOOSE 1)", 0, null, null, null), - list("Light Armor", 0, /obj/item/clothing/suit/storage/marine/light, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), - list("Medium Armor", 0, /obj/item/clothing/suit/storage/marine/medium, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_RECOMMENDED), - list("Heavy Armor", 0, /obj/item/clothing/suit/storage/marine/heavy, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("Medium Armor", 0, /obj/item/clothing/suit/marine, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_RECOMMENDED), + + list("ARMOR PAINT (CHOOSE 1)", 0, null, null, null), + list("Red Cross Paint", 0, /obj/item/clothing/accessory/paint/medic, MARINE_CAN_BUY_PAINT, VENDOR_ITEM_RECOMMENDED), list("HELMET (CHOOSE 1)", 0, null, null, null), list("M10 Corpsman Helmet", 0, /obj/item/clothing/head/helmet/marine/medic, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), @@ -172,10 +173,12 @@ GLOBAL_LIST_INIT(cm_vending_clothing_medic, list( list("Vial Pouch (Full)", 0, /obj/item/storage/pouch/vials/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("ACCESSORIES (CHOOSE 1)", 0, null, null, null), - list("Brown Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest/brown_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_RECOMMENDED), - list("Black Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("M3 Pattern Webbing", 0, /obj/item/clothing/accessory/storage/webbing/m3, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("M3 Pattern Magazine Webbing", 0, /obj/item/clothing/accessory/storage/webbing/m3/mag, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("M3 Pattern Shotgun Shell Webbing", 0, /obj/item/clothing/accessory/storage/webbing/m3/shotgun, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("M3 Pattern M40 Webbing", 0, /obj/item/clothing/accessory/storage/webbing/m3/m40, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("M3 Pattern Small Pouch Webbing", 0, /obj/item/clothing/accessory/storage/webbing/m3/small, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_RECOMMENDED), list("Shoulder Holster", 0, /obj/item/clothing/accessory/storage/holster, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), - list("Webbing", 0, /obj/item/clothing/accessory/storage/webbing, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), list("Drop Pouch", 0, /obj/item/clothing/accessory/storage/droppouch, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), )) @@ -290,8 +293,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_forecon_medic, list( list("Essential Medical Set", 0, /obj/effect/essentials_set/medic, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), list("ARMOR (CHOOSE 1)", 0, null, null, null), - list("Light Armor", 0, /obj/item/clothing/suit/storage/marine/light/standard, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), - list("M3-R Armor", 0, /obj/item/clothing/suit/storage/marine/rto/forecon, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_RECOMMENDED), + list("M3-R Armor", 0, /obj/item/clothing/suit/marine/rto/forecon, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_RECOMMENDED), list("BACKPACK (CHOOSE 1)", 0, null, null, null), list("Medical Backpack", 0, /obj/item/storage/backpack/marine/medic/standard, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), @@ -326,11 +328,12 @@ GLOBAL_LIST_INIT(cm_vending_clothing_forecon_medic, list( list("Vial Pouch (Full)", 0, /obj/item/storage/pouch/vials/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("ACCESSORIES (CHOOSE 1)", 0, null, null, null), - list("Brown Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest/brown_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_RECOMMENDED), - list("Black Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), - list("Shoulder Holster", 0, /obj/item/clothing/accessory/storage/holster, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), - list("Webbing", 0, /obj/item/clothing/accessory/storage/webbing, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("M3-R Pattern Webbing", 0, /obj/item/clothing/accessory/storage/webbing/m3/recon, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("M3-R Pattern Shotgun Shell Webbing", 0, /obj/item/clothing/accessory/storage/webbing/m3/recon/shotgun, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("M3-R Pattern M40 Webbing", 0, /obj/item/clothing/accessory/storage/webbing/m3/recon/m40, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("M3-R Pattern Corpsman Webbing", 0, /obj/item/clothing/accessory/storage/webbing/m3/recon/medic, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_RECOMMENDED), list("Drop Pouch", 0, /obj/item/clothing/accessory/storage/droppouch, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("Shoulder Holster", 0, /obj/item/clothing/accessory/storage/holster, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), )) /obj/structure/machinery/cm_vending/clothing/medic/forecon diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm index fee4d2817e..2e59dee890 100644 --- a/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm +++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm @@ -99,30 +99,34 @@ /obj/structure/machinery/cm_vending/sorted/uniform_supply/squad_prep/populate_product_list(scale) listed_products = list( list("STANDARD EQUIPMENT", -1, null, null, null), - list("Marine Combat Boots", floor(scale * 15), /obj/item/clothing/shoes/marine/knife, VENDOR_ITEM_REGULAR), + list("Black Marine Combat Boots", floor(scale * 15), /obj/item/clothing/shoes/marine/knife, VENDOR_ITEM_REGULAR), + list("Brown Marine Combat Boots", floor(scale * 15), /obj/item/clothing/shoes/marine/knife, VENDOR_ITEM_REGULAR), list("USCM Uniform", floor(scale * 15), /obj/item/clothing/under/marine, VENDOR_ITEM_REGULAR), - list("Marine Combat Gloves", floor(scale * 15), /obj/item/clothing/gloves/marine, VENDOR_ITEM_REGULAR), - list("Marine Brown Combat Gloves", floor(scale * 15), /obj/item/clothing/gloves/marine/brown, VENDOR_ITEM_REGULAR), - list("Marine Black Combat Gloves", floor(scale * 15), /obj/item/clothing/gloves/marine, VENDOR_ITEM_REGULAR), - list("Marine Radio Headset", floor(scale * 15), /obj/item/device/radio/headset/almayer, VENDOR_ITEM_REGULAR), + list("Brown Marine Combat Gloves", floor(scale * 15), /obj/item/clothing/gloves/marine/brown, VENDOR_ITEM_REGULAR), + list("Black Marine Combat Gloves", floor(scale * 15), /obj/item/clothing/gloves/marine, VENDOR_ITEM_REGULAR), + list("Marine Radio Headset", floor(scale * 15), /obj/item/device/radio/headset/almayer/marine/solardevils, VENDOR_ITEM_REGULAR), list("M10 Pattern Marine Helmet", floor(scale * 15), /obj/item/clothing/head/helmet/marine, VENDOR_ITEM_REGULAR), + list("M5 Pattern Camera Headset", floor(scale * 15), /obj/item/device/overwatch_camera, VENDOR_ITEM_REGULAR), list("WEBBINGS", -1, null, null), - list("Brown Webbing Vest", 1, /obj/item/clothing/accessory/storage/black_vest/brown_vest, VENDOR_ITEM_REGULAR), - list("Black Webbing Vest", 1, /obj/item/clothing/accessory/storage/black_vest, VENDOR_ITEM_REGULAR), - list("Webbing", floor(scale * 2), /obj/item/clothing/accessory/storage/webbing, VENDOR_ITEM_REGULAR), - list("Drop Pouch", 0.75, /obj/item/clothing/accessory/storage/droppouch, VENDOR_ITEM_REGULAR), - list("Shoulder Holster", 0.75, /obj/item/clothing/accessory/storage/holster, VENDOR_ITEM_REGULAR), + list("M3 Pattern Webbing", 2, /obj/item/clothing/accessory/storage/webbing/m3, VENDOR_ITEM_REGULAR), + list("M3 Pattern Magazine Webbing", 2, /obj/item/clothing/accessory/storage/webbing/m3/mag, VENDOR_ITEM_REGULAR), + list("M3 Pattern Shotgun Shell Webbing", 2, /obj/item/clothing/accessory/storage/webbing/m3/shotgun, VENDOR_ITEM_REGULAR), + list("M3 Pattern M40 Webbing", 0.75, /obj/item/clothing/accessory/storage/webbing/m3/m40, VENDOR_ITEM_REGULAR), + list("M3 Pattern Small Pouch Webbing", 2, /obj/item/clothing/accessory/storage/webbing/m3/small, VENDOR_ITEM_REGULAR), + list("Drop Pouch", 3, /obj/item/clothing/accessory/storage/droppouch, VENDOR_ITEM_REGULAR), + list("Shoulder Holster", round(max(1,(scale * 0.5))), /obj/item/clothing/accessory/storage/holster, VENDOR_ITEM_REGULAR), list("ARMOR", -1, null, null), - list("M3 Pattern Carrier Marine Armor", floor(scale * 15), /obj/item/clothing/suit/storage/marine/medium/carrier, VENDOR_ITEM_REGULAR), - list("M3 Pattern Padded Marine Armor", floor(scale * 15), /obj/item/clothing/suit/storage/marine/medium/padded, VENDOR_ITEM_REGULAR), - list("M3 Pattern Padless Marine Armor", floor(scale * 15), /obj/item/clothing/suit/storage/marine/medium/padless, VENDOR_ITEM_REGULAR), - list("M3 Pattern Ridged Marine Armor", floor(scale * 15), /obj/item/clothing/suit/storage/marine/medium/padless_lines, VENDOR_ITEM_REGULAR), - list("M3 Pattern Skull Marine Armor", floor(scale * 15), /obj/item/clothing/suit/storage/marine/medium/skull, VENDOR_ITEM_REGULAR), - list("M3 Pattern Smooth Marine Armor", floor(scale * 15), /obj/item/clothing/suit/storage/marine/medium/smooth, VENDOR_ITEM_REGULAR), - list("M3-EOD Pattern Heavy Armor", floor(scale * 10), /obj/item/clothing/suit/storage/marine/heavy, VENDOR_ITEM_REGULAR), - list("M3-L Pattern Light Armor", floor(scale * 10), /obj/item/clothing/suit/storage/marine/light, VENDOR_ITEM_REGULAR), + list("Standard M3 Pattern Armor Set", round(scale * 15), /obj/item/storage/box/guncase/m3armor, VENDOR_ITEM_REGULAR), + list("M3 Pattern Chestpiece", round(scale * 10), /obj/item/clothing/suit/marine, VENDOR_ITEM_REGULAR), + list("M3 Pattern Ridged Chestpiece", round(scale * 10), /obj/item/clothing/suit/marine/lines, VENDOR_ITEM_REGULAR), + list("M3 Pattern Smooth Chestpiece", round(scale * 10), /obj/item/clothing/suit/marine/smooth, VENDOR_ITEM_REGULAR), + list("M3 Pattern Shoulder Pauldrons", round(scale * 10), /obj/item/clothing/accessory/pads, VENDOR_ITEM_REGULAR), + list("M3 Pattern Groin Plate", round(scale * 10), /obj/item/clothing/accessory/pads/groin, VENDOR_ITEM_REGULAR), + list("M3 Pattern Greaves", round(scale * 15), /obj/item/clothing/accessory/pads/greaves, VENDOR_ITEM_REGULAR), + list("M3 Pattern Arm Bracers", round(scale * 10), /obj/item/clothing/accessory/pads/bracers, VENDOR_ITEM_REGULAR), + list("M3 Pattern Neck Brace", round(scale * 15), /obj/item/clothing/accessory/pads/neckguard, VENDOR_ITEM_REGULAR), list("BACKPACK", -1, null, null, null), list("Lightweight IMP Backpack", floor(scale * 15), /obj/item/storage/backpack/marine, VENDOR_ITEM_REGULAR), @@ -181,6 +185,25 @@ list("Bedroll", round(scale * 20), /obj/item/roller/bedroll, VENDOR_ITEM_REGULAR), ) +/obj/item/storage/box/guncase/m3armor //forgive me, father + name = "\improper M3 Pattern Armor case" + desc = "A case containing the standard issue parts of the M3 Pattern Armor set of the USCMC. No parts sold separately." + can_hold = list(/obj/item/clothing/suit/marine, /obj/item/clothing/accessory/pads/groin, /obj/item/clothing/accessory/pads, /obj/item/clothing/accessory/pads/greaves) + storage_slots = 4 + +/obj/item/storage/box/guncase/m3armor/fill_preset_inventory() + new /obj/item/clothing/suit/marine(src) + new /obj/item/clothing/accessory/pads(src) + new /obj/item/clothing/accessory/pads/groin(src) + new /obj/item/clothing/accessory/pads/greaves(src) + +/obj/effect/essentials_set/m3 + spawned_gear_list = list( + /obj/item/clothing/suit/marine, + /obj/item/clothing/accessory/pads/greaves, + /obj/item/clothing/accessory/pads/groin, + ) + /obj/structure/machinery/cm_vending/sorted/uniform_supply/squad_prep/upp name = "\improper UnTech Surplus Uniform Vendor" @@ -198,9 +221,9 @@ list("Military Combat Boots", round(scale * 15), /obj/item/clothing/shoes/marine/upp, VENDOR_ITEM_REGULAR), list("UPP Uniform", round(scale * 15), /obj/item/clothing/under/marine/veteran/UPP, VENDOR_ITEM_REGULAR), list("Combat Gloves", round(scale * 15), /obj/item/clothing/gloves/marine, VENDOR_ITEM_REGULAR), - list("6b82 Combat Helmet (Green)", round(scale * 15), /obj/item/clothing/head/helmet/marine/veteran/UPP/naval, VENDOR_ITEM_REGULAR), - list("6b82 Combat Helmet (Brown)", round(scale * 15), /obj/item/clothing/head/helmet/marine/veteran/UPP/naval/alt, VENDOR_ITEM_REGULAR), - list("Radio Headset", round(scale * 15), /obj/item/device/radio/headset/distress/UPP, VENDOR_ITEM_REGULAR), + list("6b82 Combat Helmet (Green)", round(scale * 15), /obj/item/clothing/head/helmet/upp, VENDOR_ITEM_REGULAR), + list("6b82 Combat Helmet (Brown)", round(scale * 15), /obj/item/clothing/head/helmet/upp/alt, VENDOR_ITEM_REGULAR), + list("Radio Headset", round(scale * 15), /obj/item/device/radio/headset/almayer/marine/solardevils/upp, VENDOR_ITEM_REGULAR), list("WEBBINGS", -1, null, null), list("Brown Webbing Vest", round(scale * 2), /obj/item/clothing/accessory/storage/black_vest/brown_vest, VENDOR_ITEM_REGULAR), @@ -250,8 +273,8 @@ list("ShMB/4 Gas Mask", round(scale * 15), /obj/item/clothing/mask/gas/military/upp, VENDOR_ITEM_REGULAR), list("MISCELLANEOUS", -1, null, null, null), - list("Ballistic goggles", round(scale * 10), /obj/item/clothing/glasses/mgoggles, VENDOR_ITEM_REGULAR), - list("Prescription ballistic goggles", round(scale * 10), /obj/item/clothing/glasses/mgoggles/prescription, VENDOR_ITEM_REGULAR), + list("Ballistic goggles", round(scale * 10), /obj/item/clothing/glasses/mgoggles/upp, VENDOR_ITEM_REGULAR), + list("Prescription ballistic goggles", round(scale * 10), /obj/item/clothing/glasses/mgoggles/upp/prescription, VENDOR_ITEM_REGULAR), list("Firearm Lubricant", round(scale * 15), /obj/item/prop/helmetgarb/gunoil, VENDOR_ITEM_REGULAR), list("UPP Naval Infantry Shoulder Patch", round(scale * 15), /obj/item/clothing/accessory/patch/upp/naval, VENDOR_ITEM_REGULAR), list("UPPAC Shoulder Patch", round(scale * 15), /obj/item/clothing/accessory/patch/upp, VENDOR_ITEM_REGULAR), @@ -268,18 +291,19 @@ list("USCM Uniform", round(scale * 15), /obj/item/clothing/under/marine/standard, VENDOR_ITEM_REGULAR), list("Marine Black Gloves", round(scale * 15), /obj/item/clothing/gloves/marine, VENDOR_ITEM_REGULAR), list("Marine Brown Gloves", round(scale * 15), /obj/item/clothing/gloves/marine/brown, VENDOR_ITEM_REGULAR), - list("Marine Radio Headset", round(scale * 15), /obj/item/device/radio/headset/almayer/sof/survivor_forecon, VENDOR_ITEM_REGULAR), + list("Marine Radio Headset", round(scale * 15), /obj/item/device/radio/headset/almayer/marine/solardevils/forecon, VENDOR_ITEM_REGULAR), + list("M5 Pattern Camera Headset", floor(scale * 15), /obj/item/device/overwatch_camera, VENDOR_ITEM_REGULAR), list("WEBBINGS", -1, null, null), - list("Brown Webbing Vest", round(scale * 1.25), /obj/item/clothing/accessory/storage/black_vest/brown_vest, VENDOR_ITEM_REGULAR), - list("Black Webbing Vest", round(max(1,(scale * 0.5))), /obj/item/clothing/accessory/storage/black_vest, VENDOR_ITEM_REGULAR), - list("Webbing", round(scale * 2), /obj/item/clothing/accessory/storage/webbing, VENDOR_ITEM_REGULAR), - list("Drop Pouch", round(max(1,(scale * 0.5))), /obj/item/clothing/accessory/storage/droppouch, VENDOR_ITEM_REGULAR), + list("M3-R Pattern Webbing", 2, /obj/item/clothing/accessory/storage/webbing/m3/recon, VENDOR_ITEM_REGULAR), + list("M3-R Pattern Shotgun Shell Webbing", 2, /obj/item/clothing/accessory/storage/webbing/m3/recon/shotgun, VENDOR_ITEM_REGULAR), + list("M3-R Pattern M40 Webbing", 2, /obj/item/clothing/accessory/storage/webbing/m3/recon/m40, VENDOR_ITEM_REGULAR), + list("Drop Pouch", 3, /obj/item/clothing/accessory/storage/droppouch, VENDOR_ITEM_REGULAR), list("Shoulder Holster", round(max(1,(scale * 0.5))), /obj/item/clothing/accessory/storage/holster, VENDOR_ITEM_REGULAR), list("ARMOR", -1, null, null), - list("M3-R Pattern Recon Armor", round(scale * 10), /obj/item/clothing/suit/storage/marine/rto/forecon, VENDOR_ITEM_REGULAR), - list("M3-L Pattern Light Armor", round(scale * 10), /obj/item/clothing/suit/storage/marine/light/standard, VENDOR_ITEM_REGULAR), + list("M3-R Pattern Recon Armor", round(scale * 10), /obj/item/clothing/suit/marine/rto/forecon, VENDOR_ITEM_REGULAR), + list("M3 Pattern Greaves", round(scale * 10), /obj/item/clothing/accessory/pads/greaves, VENDOR_ITEM_REGULAR), list("BACKPACK", -1, null, null, null), list("Lightweight IMP Backpack", round(scale * 15), /obj/item/storage/backpack/marine/standard, VENDOR_ITEM_REGULAR), @@ -322,7 +346,6 @@ list("Prescription ballistic goggles", round(scale * 10), /obj/item/clothing/glasses/mgoggles/prescription, VENDOR_ITEM_REGULAR), list("Marine RPG glasses", round(scale * 10), /obj/item/clothing/glasses/regular, VENDOR_ITEM_REGULAR), list("Firearm Lubricant", round(scale * 15), /obj/item/prop/helmetgarb/gunoil, VENDOR_ITEM_REGULAR), - list("USCM Flair", round(scale * 15), /obj/item/prop/helmetgarb/flair_uscm, VENDOR_ITEM_REGULAR), list("FORECON Shoulder Patch", round(scale * 15), /obj/item/clothing/accessory/patch/forecon, VENDOR_ITEM_REGULAR), list("USCM Shoulder Patch", round(scale * 15), /obj/item/clothing/accessory/patch, VENDOR_ITEM_REGULAR), list("Bedroll", round(scale * 20), /obj/item/roller/bedroll, VENDOR_ITEM_REGULAR), @@ -658,22 +681,14 @@ //------------ESSENTIAL SETS--------------- /obj/effect/essentials_set/random/uscm_light_armor spawned_gear_list = list( - /obj/item/clothing/suit/storage/marine/light/padded, - /obj/item/clothing/suit/storage/marine/light/padless, - /obj/item/clothing/suit/storage/marine/light/padless_lines, - /obj/item/clothing/suit/storage/marine/light/carrier, - /obj/item/clothing/suit/storage/marine/light/skull, - /obj/item/clothing/suit/storage/marine/light/smooth, + /obj/item/clothing/suit/marine/light/lines, + /obj/item/clothing/suit/marine/light/smooth, ) /obj/effect/essentials_set/random/uscm_heavy_armor spawned_gear_list = list( - /obj/item/clothing/suit/storage/marine/heavy/padded, - /obj/item/clothing/suit/storage/marine/heavy/padless, - /obj/item/clothing/suit/storage/marine/heavy/padless_lines, - /obj/item/clothing/suit/storage/marine/heavy/carrier, - /obj/item/clothing/suit/storage/marine/heavy/skull, - /obj/item/clothing/suit/storage/marine/heavy/smooth, + /obj/item/clothing/suit/marine/heavy/lines, + /obj/item/clothing/suit/marine/heavy/smooth, ) //------------MARINE CIVILIAN CLOTHING--------------- diff --git a/code/game/machinery/vending/vendor_types/wo_vendors.dm b/code/game/machinery/vending/vendor_types/wo_vendors.dm index 0b7bf8804c..bec8f5c6de 100644 --- a/code/game/machinery/vending/vendor_types/wo_vendors.dm +++ b/code/game/machinery/vending/vendor_types/wo_vendors.dm @@ -15,30 +15,26 @@ list("Marine Brown Combat Gloves", floor(scale * 2), /obj/item/clothing/gloves/marine/brown, VENDOR_ITEM_REGULAR), list("Marine Black Combat Gloves", floor(scale * 2), /obj/item/clothing/gloves/marine, VENDOR_ITEM_REGULAR), list("M10 Pattern Marine Helmet", floor(scale * 10), /obj/item/clothing/head/helmet/marine, VENDOR_ITEM_REGULAR), + list("USCM Patrol Cap", floor(scale * 10), /obj/item/clothing/head/cmcap, VENDOR_ITEM_REGULAR), + list("USCM Boonie Cap", floor(scale * 10), /obj/item/clothing/head/cmcap/boonie, VENDOR_ITEM_REGULAR), list("RADIO HEADSETS", -1, null, null), - list("Marine Alpha Radio Headset", floor(scale * 5), /obj/item/device/radio/headset/almayer/marine/alpha, VENDOR_ITEM_REGULAR), - list("Marine Bravo Radio Headset", floor(scale * 5), /obj/item/device/radio/headset/almayer/marine/bravo, VENDOR_ITEM_REGULAR), - list("Marine Charlie Radio Headset", floor(scale * 5), /obj/item/device/radio/headset/almayer/marine/charlie, VENDOR_ITEM_REGULAR), - list("Marine Delta Radio Headset", floor(scale * 5), /obj/item/device/radio/headset/almayer/marine/delta, VENDOR_ITEM_REGULAR), - list("Marine Radio Headset", floor(scale * 5), /obj/item/device/radio/headset/almayer, VENDOR_ITEM_REGULAR), + list("First Platoon Headset", floor(scale * 5), /obj/item/device/radio/headset/almayer/marine/solardevils, VENDOR_ITEM_REGULAR), + list("Second Platoon Headset", floor(scale * 5), /obj/item/device/radio/headset/almayer/marine/solardevils/foxtrot, VENDOR_ITEM_REGULAR), list("WEBBINGS", -1, null, null), - list("Brown Webbing Vest", floor(scale * 1), /obj/item/clothing/accessory/storage/black_vest/brown_vest, VENDOR_ITEM_REGULAR), - list("Black Webbing Vest", floor(scale * 1), /obj/item/clothing/accessory/storage/black_vest, VENDOR_ITEM_REGULAR), - list("Webbing", floor(scale * 2), /obj/item/clothing/accessory/storage/webbing, VENDOR_ITEM_REGULAR), - list("Drop Pouch", floor(scale * 1), /obj/item/clothing/accessory/storage/droppouch, VENDOR_ITEM_REGULAR), - list("Shoulder Holster", floor(scale * 1), /obj/item/clothing/accessory/storage/holster, VENDOR_ITEM_REGULAR), + list("M3 Pattern Webbing", floor(scale * 2), /obj/item/clothing/accessory/storage/webbing/m3, VENDOR_ITEM_REGULAR), + list("M3 Pattern Magazine Webbing", floor(scale * 2), /obj/item/clothing/accessory/storage/webbing/m3/mag, VENDOR_ITEM_REGULAR), + list("M3 Pattern Shotgun Shell Webbing", floor(scale * 2), /obj/item/clothing/accessory/storage/webbing/m3/shotgun, VENDOR_ITEM_REGULAR), + list("M3 Pattern M40 Webbing", floor(scale * 1), /obj/item/clothing/accessory/storage/webbing/m3/m40, VENDOR_ITEM_REGULAR), + list("M3 Pattern Small Pouch Webbing", floor(scale * 1), /obj/item/clothing/accessory/storage/webbing/m3/small, VENDOR_ITEM_REGULAR), + list("Drop Pouch", 3, /obj/item/clothing/accessory/storage/droppouch, VENDOR_ITEM_REGULAR), + list("Shoulder Holster", round(max(1,(scale * 0.5))), /obj/item/clothing/accessory/storage/holster, VENDOR_ITEM_REGULAR), list("ARMOR", -1, null, null), - list("M3 Pattern Carrier Marine Armor", floor(scale * 10), /obj/item/clothing/suit/storage/marine/medium/carrier, VENDOR_ITEM_REGULAR), - list("M3 Pattern Padded Marine Armor", floor(scale * 10), /obj/item/clothing/suit/storage/marine/medium/padded, VENDOR_ITEM_REGULAR), - list("M3 Pattern Padless Marine Armor", floor(scale * 10), /obj/item/clothing/suit/storage/marine/medium/padless, VENDOR_ITEM_REGULAR), - list("M3 Pattern Ridged Marine Armor", floor(scale * 10), /obj/item/clothing/suit/storage/marine/medium/padless_lines, VENDOR_ITEM_REGULAR), - list("M3 Pattern Skull Marine Armor", floor(scale * 10), /obj/item/clothing/suit/storage/marine/medium/skull, VENDOR_ITEM_REGULAR), - list("M3 Pattern Smooth Marine Armor", floor(scale * 10), /obj/item/clothing/suit/storage/marine/medium/smooth, VENDOR_ITEM_REGULAR), - list("M3-EOD Pattern Heavy Armor", floor(scale * 5), /obj/item/clothing/suit/storage/marine/heavy, VENDOR_ITEM_REGULAR), - list("M3-L Pattern Light Armor", floor(scale * 5), /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-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("BACKPACK", -1, null, null, null), list("Lightweight IMP Backpack", floor(scale * 10), /obj/item/storage/backpack/marine, VENDOR_ITEM_REGULAR), @@ -98,6 +94,7 @@ list("Marine RPG glasses", floor(scale * 5), /obj/item/clothing/glasses/regular, VENDOR_ITEM_REGULAR), list("M10 Helmet Netting", floor(scale * 5), /obj/item/prop/helmetgarb/netting, VENDOR_ITEM_REGULAR), list("M10 Helmet Rain Cover", floor(scale * 5), /obj/item/prop/helmetgarb/raincover, VENDOR_ITEM_REGULAR), + list("M10 Helmet Camo Cover", floor(scale * 5), /obj/item/prop/helmetgarb/camocover, VENDOR_ITEM_REGULAR), list("Firearm Lubricant", floor(scale * 10), /obj/item/prop/helmetgarb/gunoil, VENDOR_ITEM_REGULAR), list("USCM Flair", floor(scale * 10), /obj/item/prop/helmetgarb/flair_uscm, VENDOR_ITEM_REGULAR), list("Falling Falcons Shoulder Patch", floor(scale * 10), /obj/item/clothing/accessory/patch/falcon, VENDOR_ITEM_REGULAR), diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index eb20ed2e02..f43b012b37 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -10,6 +10,7 @@ subspace_transmission = 1 canhear_range = 0 // can't hear headsets from very far away + flags_equip_slot = SLOT_EAR inherent_traits = list(TRAIT_ITEM_EAR_EXCLUSIVE) var/translate_apollo = FALSE @@ -514,7 +515,12 @@ /obj/item/device/radio/headset/almayer/marine/mp_honor name = "marine honor guard radio headset" desc = "This is used by members of the marine honor guard. Channels are as follows: :p - military police, :v - marine command. :a - alpha squad, :b - bravo squad, :c - charlie squad, :d - delta squad." + icon_override = 'icons/obj/items/radio.dmi' icon_state = "sec_headset" + item_icons = list( + WEAR_L_EAR = 'icons/mob/humans/onmob/ears.dmi', + WEAR_R_EAR = 'icons/mob/humans/onmob/ears.dmi', + ) initial_keys = list(/obj/item/device/encryptionkey/mmpo) volume = RADIO_VOLUME_RAISED locate_setting = TRACKER_CO @@ -625,8 +631,63 @@ /obj/item/device/radio/headset/almayer/marine name = "marine radio headset" desc = "A standard marine radio headset. When worn, grants access to Squad Leader tracker. Click tracker with empty hand to open Squad Info window." + icon_state = "generic_headset" + item_state = "headset" frequency = ALPHA_FREQ +//############################## VISIBLE HEADSETS ############################### +/obj/item/device/radio/headset/almayer/marine/solardevils + name = "marine radio headset" + desc = "A standard marine radio headset. When worn, grants access to Squad Leader tracker. Click tracker with empty hand to open Squad Info window." + icon = 'icons/obj/items/clothing/cm_hats.dmi' + icon_override = 'icons/mob/humans/onmob/head_1.dmi' + icon_state = "uscm_headset" + item_state = "uscm_headset" + item_icons = list( + WEAR_L_EAR = 'icons/mob/humans/onmob/head_1.dmi', + WEAR_R_EAR = 'icons/mob/humans/onmob/head_1.dmi', + ) + frequency = ALPHA_FREQ + +/obj/item/device/radio/headset/almayer/marine/solardevils/forecon + name = "USCM SOF headset" + desc = "Issued exclusively to Marine Raiders and members of the USCM's Force Reconnaissance." + frequency = SOF_FREQ + initial_keys = list(/obj/item/device/encryptionkey/soc/forecon) + volume = RADIO_VOLUME_QUIET + has_hud = TRUE + hud_type = MOB_HUD_FACTION_MARINE + +/obj/item/device/radio/headset/almayer/marine/solardevils/foxtrot + frequency = CRYO_FREQ + +/obj/item/device/radio/headset/almayer/marine/solardevils/upp + name = "UPP Naval Infantry headset" + desc = "A special headset used by UPP military." + icon_state = "upp_headset" + item_state = "upp_headset" + frequency = UPP_FREQ + has_hud = TRUE + hud_type = MOB_HUD_FACTION_UPP + minimap_type = MINIMAP_FLAG_UPP + +/obj/item/device/radio/headset/almayer/marine/solardevils/upp/territorial + name = "UPP Territorial Guard headset" + desc = "A special headset used by the UPP's Territorial Guard. Lacks access to Naval Infantry channels. Also provides local colony comms. To access the colony channel use :o." + frequency = UPP_GRD_FREQ + initial_keys = list(/obj/item/device/encryptionkey/colony) + +/obj/item/device/radio/headset/almayer/marine/solardevils/upp/medic + name = "UPP-MED headset" + desc = "A special headset used by UPP military. Channels are as follows: #m - medical." + frequency = UPP_GRD_FREQ + initial_keys = list(/obj/item/device/encryptionkey/upp/medic) + +/obj/item/device/radio/headset/almayer/marine/solardevils/upp/command + name = "UPP-CMD headset" + desc = "A special headset used by UPP military. Channels are as follows: :o - colony, #j - combat controller, #n - engineering, #m - medical, #v - command, #u - UPP general." + initial_keys = list(/obj/item/device/encryptionkey/upp/command) + //############################## ALPHA ############################### /obj/item/device/radio/headset/almayer/marine/alpha name = "marine alpha radio headset" diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index a2fdd2667f..84351ecd60 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -1872,6 +1872,7 @@ name = "\improper M802 pattern smartgunner sidearm rig" desc = "The M802 is a limited-issue mark of USCM load-bearing equipment, designed to carry smartgun ammunition and a sidearm." icon_state = "sgbelt" + flags_equip_slot = SLOT_WAIST holster_slots = list( "1" = list( "icon_x" = 5, @@ -1901,6 +1902,7 @@ /obj/item/storage/belt/gun/smartgunner/garrow name = "\improper M802 pattern smartgunner sidearm rig" desc = "The M802 is a limited-issue mark of USCM load-bearing equipment, designed to carry a limited quantity of smartgun and pistol ammunition, along with a sidearm." + icon_state = "sgbelt" //Keep a track of how many magazines are inside the belt. var/magazines = 0 diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index 61523e5106..2010e9e830 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -125,11 +125,14 @@ . = ..() new /obj/item/weapon/gun/smartgun(src) new /obj/item/smartgun_battery(src) - new /obj/item/clothing/suit/storage/marine/smartgunner(src) + new /obj/item/clothing/suit/marine/smartgunner(src) new /obj/item/storage/belt/gun/smartgunner/garrow(src) new /obj/item/ammo_magazine/smartgun(src) new /obj/item/ammo_magazine/smartgun(src) new /obj/item/clothing/glasses/night/m56_goggles/no_nightvision(src) + new /obj/item/storage/large_holster/machete/smartgunner/full(src) + new /obj/item/clothing/accessory/storage/webbing/m56(src) + new /obj/item/clothing/accessory/storage/webbing/m56/grenade(src) /obj/structure/closet/secure_closet/smartgunner_forecon name = "smartgunner locker" @@ -140,11 +143,14 @@ . = ..() new /obj/item/weapon/gun/smartgun(src) new /obj/item/smartgun_battery(src) - new /obj/item/clothing/suit/storage/marine/smartgunner/standard(src) + new /obj/item/clothing/suit/marine/smartgunner/standard(src) new /obj/item/storage/belt/gun/smartgunner/garrow(src) new /obj/item/ammo_magazine/smartgun(src) new /obj/item/ammo_magazine/smartgun(src) new /obj/item/clothing/glasses/night/m56_goggles/no_nightvision(src) + new /obj/item/storage/large_holster/machete/smartgunner/full(src) + new /obj/item/clothing/accessory/storage/webbing/m56(src) + new /obj/item/clothing/accessory/storage/webbing/m56/grenade(src) /obj/structure/closet/cryo/Initialize() . = ..() diff --git a/code/game/objects/structures/crates_lockers/closets/secure/cm_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/cm_closets.dm index 50e5daf511..2b803f7f0a 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/cm_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/cm_closets.dm @@ -128,7 +128,7 @@ GLOBAL_LIST_EMPTY(co_secure_boxes) /obj/structure/closet/secure_closet/pilot_officer/Initialize() . = ..() - new /obj/item/clothing/head/helmet/marine/pilot(src) + new /obj/item/clothing/head/helmet/upp/marinepilot(src) new /obj/item/clothing/under/marine/officer/pilot(src) new /obj/item/clothing/shoes/marine(src) new /obj/item/clothing/suit/armor/vest/pilot(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/marine_personal.dm b/code/game/objects/structures/crates_lockers/closets/secure/marine_personal.dm index 4462eda61b..dffebb1e41 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/marine_personal.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/marine_personal.dm @@ -29,4 +29,4 @@ if(has_cryo_gear) new /obj/item/clothing/under/marine(src) new /obj/item/clothing/shoes/marine/knife(src) - new /obj/item/device/radio/headset/almayer/marine(src) + new /obj/item/device/radio/headset/almayer/marine/solardevils(src) diff --git a/code/modules/client/preferences_gear.dm b/code/modules/client/preferences_gear.dm index cd8baf63e7..6e2152f1b5 100644 --- a/code/modules/client/preferences_gear.dm +++ b/code/modules/client/preferences_gear.dm @@ -295,6 +295,11 @@ GLOBAL_LIST_EMPTY(gear_datums_by_name) display_name = "USCM cap" path = /obj/item/clothing/head/cmcap +/datum/gear/headwear/uscm/cap/sulaco + display_name = "USS Golden Arrow cap" + path = /obj/item/clothing/head/sulacocap + cost = 1 + /datum/gear/headwear/uscm/cap/flap display_name = "USCM flapcap" path = /obj/item/clothing/head/cmcap/flap @@ -441,6 +446,29 @@ GLOBAL_LIST_EMPTY(gear_datums_by_name) path = /obj/item/prop/helmetgarb/chaplain_patch allowed_origins = USCM_ORIGINS +/datum/gear/armor + category = "Armor Cosmetics" + +/datum/gear/armor/paint_sg + display_name = "Black Smartgun Harness Paint" + path = /obj/item/clothing/accessory/paint/sg + cost = 0 + +/datum/gear/armor/paint_skull + display_name = "M3 Pattern Skull Paint" + path = /obj/item/clothing/accessory/paint + cost = 0 + +/datum/gear/armor/paint_heart + display_name = "M3 Pattern Heart Paint" + path = /obj/item/clothing/accessory/paint/heart + cost = 0 + +/datum/gear/armor/uaflag + display_name = "M3 Pattern Flag Paint" + path = /obj/item/clothing/accessory/paint/uaflag + cost = 0 + /datum/gear/paperwork category = "Paperwork" diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 9657278746..1941591ca6 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -1,5 +1,5 @@ #define SAVEFILE_VERSION_MIN 8 -#define SAVEFILE_VERSION_MAX 26 +#define SAVEFILE_VERSION_MAX 27 //handles converting savefiles to new formats //MAKE SURE YOU KEEP THIS UP TO DATE! @@ -165,6 +165,13 @@ S["nanotrasen_relation"] >> relation S["weyland_yutani_relation"] << relation + if(savefile_version < 27) + var/old_pref_armor + S["preferred_armor"] >> old_pref_armor + if(!(old_pref_armor in GLOB.armor_style_list)) + preferred_armor = "Random" + S["preferred_armor"] << preferred_armor + savefile_version = SAVEFILE_VERSION_MAX return 1 diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index f2f095c707..eb94fa31cd 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -535,6 +535,18 @@ attached_item.update_icon() +/obj/item/clothing/glasses/mgoggles/upp + name = "UPP ballistic goggles" + desc = "Standard issue ballistic goggles for UPP Infantry. While commonly found mounted atop their pattern helmets, they are also capable of preventing insects, dust, and other things from getting into one's eyes." + icon_state = "mgogglesupp" + active_icon_state = "mgogglesupp_down" + inactive_icon_state = "mgogglesupp" + +/obj/item/clothing/glasses/mgoggles/upp/prescription + name = "prescription UPP ballistic goggles" + prescription = TRUE + + //welding goggles /obj/item/clothing/glasses/welding diff --git a/code/modules/clothing/glasses/night.dm b/code/modules/clothing/glasses/night.dm index 297254ec67..865ee40c2a 100644 --- a/code/modules/clothing/glasses/night.dm +++ b/code/modules/clothing/glasses/night.dm @@ -89,22 +89,34 @@ /obj/item/clothing/glasses/night/m56_goggles name = "\improper M56 head mounted sight" gender = NEUTER - desc = "A headset and goggles system for the M56 Smartgun weapon system. Has a low-res short-range imager, allowing for view of terrain." + desc = "A headset and optic system for the M56 Smartgun weapon system. Has a low-res short-range imager, allowing for view of terrain." icon = 'icons/obj/items/clothing/glasses.dmi' icon_state = "m56_goggles" deactive_state = "m56_goggles_0" toggleable = TRUE actions_types = list(/datum/action/item_action/toggle, /datum/action/item_action/m56_goggles/far_sight) vision_flags = SEE_TURFS + flags_inventory = SMARTGUN_OPTIC fullscreen_vision = null eye_protection = EYE_PROTECTION_FLAVOR req_skill = SKILL_SPEC_WEAPONS req_skill_level = SKILL_SPEC_SMARTGUN + var/obj/structure/machinery/camera/camera var/far_sight = FALSE var/obj/item/weapon/gun/smartgun/linked_smartgun = null +/obj/item/clothing/glasses/night/m56_goggles/Initialize(mapload) + . = ..() + camera = new /obj/structure/machinery/camera/overwatch(src) + +/obj/item/clothing/glasses/night/m56_goggles/equipped(mob/living/carbon/human/mob, slot) + if(camera) + camera.c_tag = mob.name + ..() + /obj/item/clothing/glasses/night/m56_goggles/Destroy() + QDEL_NULL(camera) linked_smartgun = null disable_far_sight() return ..() diff --git a/code/modules/clothing/head/head.dm b/code/modules/clothing/head/head.dm index 4e135a7918..68fa42f50c 100644 --- a/code/modules/clothing/head/head.dm +++ b/code/modules/clothing/head/head.dm @@ -198,6 +198,23 @@ WEAR_HEAD = 'icons/mob/humans/onmob/head_1.dmi' ) +/obj/item/clothing/head/sulacocap + name = "\improper USS Golden Arrow Cap" + desc = "A casual cap able to be purchased and worn by Marines stationed on the USS Golden Arrow. While it only protects from the sun, it's much more comfortable than a helmet." + icon_state = "sulacocap" + icon = 'icons/obj/items/clothing/cm_hats.dmi' + var/helmet_overlays[] + var/flipped_cap = FALSE + var/list/flipping_message = list( + "flipped" = "You spin the hat backwards! You look like a tool.", + "unflipped" = "You spin the hat back forwards. That's better." + ) + var/base_cap_icon + var/flags_marine_hat = HAT_GARB_OVERLAY|HAT_CAN_FLIP + item_icons = list( + WEAR_HEAD = 'icons/mob/humans/onmob/head_1.dmi' + ) + /obj/item/clothing/head/cmcap name = "patrol cap" desc = "A casual cap issued as part of the non-combat uniform. While it only protects from the sun, it's much more comfortable than a helmet." diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index f0ef09b14c..5176c32765 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -256,6 +256,8 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( /obj/item/clothing/glasses/mgoggles/black/prescription = HELMET_GARB_RELAY_ICON_STATE, /obj/item/clothing/glasses/mgoggles/orange = HELMET_GARB_RELAY_ICON_STATE, /obj/item/clothing/glasses/mgoggles/orange/prescription = HELMET_GARB_RELAY_ICON_STATE, + /obj/item/clothing/glasses/mgoggles/upp = HELMET_GARB_RELAY_ICON_STATE, + /obj/item/clothing/glasses/mgoggles/upp/prescription = HELMET_GARB_RELAY_ICON_STATE, /obj/item/clothing/glasses/sunglasses = "sunglasses", /obj/item/clothing/glasses/sunglasses/prescription = "sunglasses", /obj/item/clothing/glasses/sunglasses/aviator = "aviator", @@ -350,9 +352,6 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( /obj/item/paper = "paper", /obj/item/device/flashlight/flare = "flare", /obj/item/clothing/head/headset = "headset", - /obj/item/clothing/accessory/patch = "uscmpatch", - /obj/item/clothing/accessory/patch/falcon = "falconspatch", - /obj/item/clothing/accessory/patch/devils = "devilspatch", /obj/item/ammo_magazine/handful = "bullet", /obj/item/prop/helmetgarb/riot_shield = "helmet_riot_shield", /obj/item/attachable/flashlight = HELMET_GARB_RELAY_ICON_STATE, @@ -445,8 +444,7 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( pockets.bypass_w_limit = GLOB.allowed_helmet_items pockets.max_storage_space = storage_max_storage_space - camera = new /obj/structure/machinery/camera(src) - camera.network = list(CAMERA_NET_OVERWATCH) + camera = new /obj/structure/machinery/camera/overwatch(src) for(var/obj/visor as anything in built_in_visors) visor.forceMove(src) @@ -927,7 +925,7 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( clothing_traits = list(TRAIT_EAR_PROTECTION) unacidable = TRUE -/obj/item/clothing/head/helmet/marine/pilot +/obj/item/clothing/head/helmet/upp/marinepilot //just so it uses the wide overlay for garbs name = "\improper Mk30 tactical helmet" desc = "Standard flight helmet of the UA treaty forces. Probably one of the few good things that came out of the Joint Procurement Office. Eyepiece allows for augmented reality effects, giving relevant data in real time." icon_state = "helmetp" @@ -1174,17 +1172,364 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( flags_marine_helmet = HELMET_SQUAD_OVERLAY|HELMET_GARB_OVERLAY|HELMET_DAMAGE_OVERLAY built_in_visors = list(new /obj/item/device/helmet_visor/upp) -/obj/item/clothing/head/helmet/marine/veteran/UPP/naval +//==========================//UPP\\=================================\\ +//=======================================================================\\ + +/obj/item/clothing/head/helmet/upp name = "\improper 6B82 helmet" desc = "Naval Infantry helmet for multiple environments. Alloy/para-aramid ballistic 'shell' comprised of three seperate plates held together with a complex liner system. Capable of being worn in tandem with an exoatmospheric fighting hood. A tactical datalink and A/V feeds are provided, alongside facilities for an infrared imager complex. Surprisingly comfortable. The fabric utilized for this model is rubbery and colored after the standard paint coating of UPP armor." + icon = 'icons/obj/items/clothing/cm_hats.dmi' icon_state = "upp_helmet_naval" + item_state = "helmet" + armor_melee = CLOTHING_ARMOR_MEDIUM + armor_bullet = CLOTHING_ARMOR_HIGH + armor_laser = CLOTHING_ARMOR_MEDIUMLOW + armor_energy = CLOTHING_ARMOR_MEDIUM + armor_bomb = CLOTHING_ARMOR_MEDIUM + armor_bio = CLOTHING_ARMOR_MEDIUM + armor_rad = CLOTHING_ARMOR_MEDIUMLOW + armor_internaldamage = CLOTHING_ARMOR_HIGH + health = 5 + force = 15 + throwforce = 15 + attack_verb = list("whacked", "hit", "smacked", "beaten", "battered") + var/obj/structure/machinery/camera/camera + var/helmet_overlays[] + flags_inventory = BLOCKSHARPOBJ + flags_inv_hide = NONE + clothing_traits = list(TRAIT_EAR_PROTECTION) + var/flags_marine_helmet = HELMET_SQUAD_OVERLAY|HELMET_GARB_OVERLAY|HELMET_DAMAGE_OVERLAY + var/helmet_bash_cooldown = 0 + + var/specialty = "6B82 helmet" + valid_accessory_slots = list(ACCESSORY_SLOT_HELM_C) + restricted_accessory_slots = list(ACCESSORY_SLOT_HELM_C) + item_icons = list( + WEAR_HEAD = 'icons/mob/humans/onmob/head_1.dmi' + ) + + var/obj/item/storage/internal/headgear/pockets + var/storage_slots = 2 + var/storage_slots_reserved_for_garb = 2 + var/storage_max_w_class = SIZE_TINY + var/storage_max_storage_space = 4 + + var/helmet_overlay_icon = 'icons/mob/humans/onmob/head_1.dmi' + + var/list/built_in_visors = list(new /obj/item/device/helmet_visor/upp) + + var/list/inserted_visors = list() + + var/max_inserted_visors = 1 + + var/obj/item/device/helmet_visor/active_visor = null + + var/start_down_visor_type + +/obj/item/clothing/head/helmet/upp/Initialize(mapload, new_protection[] = list(MAP_ICE_COLONY = ICE_PLANET_MIN_COLD_PROT)) + . = ..() + + helmet_overlays = list() + + pockets = new(src) + pockets.storage_slots = HAS_FLAG(flags_marine_helmet, HELMET_GARB_OVERLAY) ? storage_slots + storage_slots_reserved_for_garb : storage_slots + pockets.slots_reserved_for_garb = HAS_FLAG(flags_marine_helmet, HELMET_GARB_OVERLAY) ? storage_slots_reserved_for_garb : 0 + pockets.max_w_class = storage_max_w_class + pockets.bypass_w_limit = GLOB.allowed_helmet_items + pockets.max_storage_space = storage_max_storage_space + + camera = new /obj/structure/machinery/camera/overwatch(src) + + for(var/obj/visor as anything in built_in_visors) + visor.forceMove(src) + + if(length(inserted_visors) || length(built_in_visors)) + var/datum/action/item_action/cycle_helmet_huds/new_action = new(src) + if(ishuman(loc)) + var/mob/living/carbon/human/holding_human = loc + if(holding_human.head == src) + new_action.give_to(holding_human) + + if(start_down_visor_type) + for(var/obj/item/device/helmet_visor/cycled_visor in (built_in_visors + inserted_visors)) + if(cycled_visor.type == start_down_visor_type) + active_visor = cycled_visor + break + + if(active_visor) + var/datum/action/item_action/cycle_helmet_huds/cycle_action = locate() in actions + if(cycle_action) + cycle_action.set_action_overlay(active_visor) + +/obj/item/clothing/head/helmet/upp/Destroy(force) + helmet_overlays = null + QDEL_NULL(camera) + QDEL_NULL(pockets) + if(active_visor && istype(loc, /mob/living/carbon/human)) + var/mob/living/carbon/human/potential_user = loc + if(potential_user.head == src) + var/obj/item/device/helmet_visor/temp_visor_holder = active_visor + active_visor = null + toggle_visor(potential_user, temp_visor_holder, TRUE) + return ..() + +/obj/item/clothing/head/helmet/upp/attack_hand(mob/user) + if(loc != user) + ..(user) + return + + if(pockets.handle_attack_hand(user)) + ..(user) + + +/obj/item/clothing/head/helmet/upp/MouseDrop(over_object, src_location, over_location) + SEND_SIGNAL(usr, COMSIG_ITEM_DROPPED, usr) + if(pockets.handle_mousedrop(usr, over_object)) + ..() + +/obj/item/clothing/head/helmet/upp/attackby(obj/item/attacking_item, mob/user) + if(istype(attacking_item, /obj/item/ammo_magazine) && world.time > helmet_bash_cooldown && user) + var/obj/item/ammo_magazine/M = attacking_item + var/ammo_level = "more than half full." + playsound(user, 'sound/items/trayhit1.ogg', 15, FALSE) + if(M.current_rounds == (M.max_rounds/2)) + ammo_level = "half full." + if(M.current_rounds < (M.max_rounds/2)) + ammo_level = "less than half full." + if(M.current_rounds < (M.max_rounds/6)) + ammo_level = "almost empty." + if(M.current_rounds == 0) + ammo_level = "empty. Uh oh." + user.visible_message("[user] bashes [M] against their helmet", "You bash [M] against your helmet. It is [ammo_level]") + helmet_bash_cooldown = world.time + 20 SECONDS + return + + if(istype(attacking_item, /obj/item/device/helmet_visor)) + if(length(inserted_visors) >= max_inserted_visors) + to_chat(user, SPAN_NOTICE("[src] has used all of its visor attachment sockets.")) + return + + var/obj/item/device/helmet_visor/new_visor = attacking_item + for(var/obj/item/device/helmet_visor/cycled_visor as anything in (built_in_visors + inserted_visors)) + if(cycled_visor.type == new_visor.type) + to_chat(user, SPAN_NOTICE("[src] already has this type of HUD connected.")) + return + if(!user.drop_held_item()) + return + + inserted_visors += new_visor + to_chat(user, SPAN_NOTICE("You connect [new_visor] to [src].")) + new_visor.forceMove(src) + if(!(locate(/datum/action/item_action/cycle_helmet_huds) in actions)) + var/datum/action/item_action/cycle_helmet_huds/new_action = new(src) + new_action.give_to(user) + return + + if(HAS_TRAIT(attacking_item, TRAIT_TOOL_SCREWDRIVER)) + if(!length(inserted_visors)) + switch(length(built_in_visors)) + if(1) + to_chat(user, SPAN_WARNING("The visor on [src] is built-in!")) + if(2 to INFINITY) + to_chat(user, SPAN_WARNING("The visors on [src] are built-in!")) + return + + if(active_visor) + var/obj/item/device/helmet_visor/temp_visor_holder = active_visor + active_visor = null + toggle_visor(user, temp_visor_holder, TRUE) + + for(var/obj/item/device/helmet_visor/visor as anything in inserted_visors) + visor.forceMove(get_turf(src)) + + inserted_visors = list() + to_chat(user, SPAN_NOTICE("You remove the inserted visors.")) + + var/datum/action/item_action/cycle_helmet_huds/cycle_action = locate() in actions + cycle_action.set_default_overlay() + if(!length(built_in_visors)) + cycle_action.remove_from(user) + + return + + ..() + return pockets.attackby(attacking_item, user) + +/obj/item/clothing/head/helmet/upp/on_pocket_insertion() + update_icon() + +/obj/item/clothing/head/helmet/upp/on_pocket_removal() + update_icon() + +/obj/item/clothing/head/helmet/upp/update_icon() + helmet_overlays = list() + if(pockets && length(pockets.contents) && (flags_marine_helmet & HELMET_GARB_OVERLAY)) + var/list/above_band_layer = list() + var/list/below_band_layer = list() + var/has_helmet_band = FALSE + for(var/obj/O in pockets.contents) + if(GLOB.allowed_helmet_items[O.type]) + var/has_band = !HAS_FLAG(O.flags_obj, OBJ_NO_HELMET_BAND) + if(has_band) + has_helmet_band = TRUE + if(GLOB.allowed_helmet_items[O.type] == HELMET_GARB_RELAY_ICON_STATE) + if(has_band) + above_band_layer += "wide_[O.icon_state]" + else + below_band_layer += "wide_[O.icon_state]" + else + if(has_band) + above_band_layer += GLOB.allowed_helmet_items[O.type] + else + below_band_layer += GLOB.allowed_helmet_items[O.type] + if(has_helmet_band) + helmet_overlays = above_band_layer + list("wide_band") + below_band_layer + else + helmet_overlays = above_band_layer + below_band_layer + + if(active_visor) + helmet_overlays += active_visor.helmet_overlay + + if(ismob(loc)) + var/mob/M = loc + M.update_inv_head() + +/obj/item/clothing/head/helmet/upp/equipped(mob/living/carbon/human/mob, slot) + if(camera) + camera.c_tag = mob.name + if(active_visor) + recalculate_visors(mob) + ..() + +/obj/item/clothing/head/helmet/upp/unequipped(mob/user, slot) + . = ..() + if(pockets) + for(var/obj/item/attachable/flashlight/F in pockets) + if(F.light_on) + F.activate_attachment(src, user, TRUE) + if(active_visor) + recalculate_visors(user) + +/obj/item/clothing/head/helmet/upp/dropped(mob/living/carbon/human/mob) + if(camera) + camera.c_tag = "Unknown" + if(pockets) + for(var/obj/item/attachable/flashlight/F in pockets) + if(F.light_on) + F.activate_attachment(src, mob, TRUE) + if(active_visor) + recalculate_visors(mob) + ..() + +/obj/item/clothing/head/helmet/upp/has_garb_overlay() + return flags_marine_helmet & HELMET_GARB_OVERLAY + +/obj/item/clothing/head/helmet/upp/get_examine_text(mob/user) + . = ..() + if(active_visor) + . += active_visor.get_helmet_examine_text() + +/obj/item/clothing/head/helmet/upp/proc/add_hugger_damage() //This is called in XenoFacehuggers.dm to first add the overlay and set the var. + if(flags_marine_helmet & HELMET_DAMAGE_OVERLAY && !(flags_marine_helmet & HELMET_IS_DAMAGED)) + helmet_overlays["damage"] = image('icons/obj/items/clothing/cm_hats.dmi',icon_state = "hugger_damage") + flags_marine_helmet |= HELMET_IS_DAMAGED + update_icon() + desc += "\nThis helmet seems to be scratched up and damaged, particularly around the face area..." + +/obj/item/clothing/head/helmet/upp/get_pockets() + if(pockets) + return pockets + return ..() + +/obj/item/clothing/head/helmet/upp/proc/recalculate_visors(mob/user) + turn_off_visors(user) + + if(!active_visor) + return + + if(user != loc) + return + + var/mob/living/carbon/human/human_user = user + if(!human_user || human_user.head != src) + return + + toggle_visor(user, silent = TRUE) + +/obj/item/clothing/head/helmet/upp/proc/toggle_visor(mob/user, obj/item/device/helmet_visor/current_visor, silent = FALSE) + current_visor = current_visor || active_visor + + if(!current_visor) + return + + current_visor.toggle_visor(src, user, silent) + + update_icon() + +/obj/item/clothing/head/helmet/upp/proc/turn_off_visors(mob/user) + var/list/total_visors = built_in_visors + inserted_visors + + for(var/obj/item/device/helmet_visor/cycled_helmet_visor in total_visors) + cycled_helmet_visor.deactivate_visor(src, user) + + update_icon() + +/obj/item/clothing/head/helmet/upp/proc/cycle_huds(mob/user) + var/list/total_visors = built_in_visors + inserted_visors + + if(!length(total_visors)) + to_chat(user, SPAN_WARNING("There are no visors to swap to.")) + return FALSE + + if(active_visor) + var/visor_to_deactivate = active_visor + var/skipped_hud = FALSE + var/iterator = 1 + for(var/obj/item/device/helmet_visor/current_visor as anything in total_visors) + if(current_visor == active_visor || skipped_hud) + if(length(total_visors) > iterator) + var/obj/item/device/helmet_visor/next_visor = total_visors[iterator + 1] + + if(!isnull(GLOB.huds[next_visor.hud_type]?.hudusers[user])) + iterator++ + skipped_hud = TRUE + continue + + if(!next_visor.can_toggle(user)) + iterator++ + skipped_hud = TRUE + continue + + active_visor = next_visor + toggle_visor(user, visor_to_deactivate, silent = TRUE) + toggle_visor(user) + return active_visor + else + active_visor = null + toggle_visor(user, visor_to_deactivate, FALSE) + return FALSE + iterator++ + + for(var/obj/item/device/helmet_visor/new_visor in total_visors) + if(!isnull(GLOB.huds[new_visor.hud_type]?.hudusers[user])) + continue + + if(!new_visor.can_toggle(user)) + continue + + active_visor = new_visor + toggle_visor(user) + return active_visor + + to_chat(user, SPAN_WARNING("There are no visors to swap to currently.")) + return FALSE -/obj/item/clothing/head/helmet/marine/veteran/UPP/naval/alt +/obj/item/clothing/head/helmet/upp/alt desc = "Naval Infantry helmet for multiple environments. Alloy/para-aramid ballistic 'shell' comprised of three seperate plates held together with a complex liner system. Capable of being worn in tandem with an exoatmospheric fighting hood. A tactical datalink and A/V feeds are provided, alongside facilities for an infrared imager complex. Surprisingly comfortable. The fabric utilized for this model is identical to the one used for UPP uniforms." icon_state = "upp_helmet_naval_alt" -/obj/item/clothing/head/helmet/marine/veteran/UPP/heavy +/obj/item/clothing/head/helmet/upp/heavy name = "\improper 6B79 helmet" desc = "EVA-capable enclosed helmet of the UPP's Naval Infantry. Despite offering a higher armor rating, this helmet's cumbersome design has kept it from outright replacing the Type 5, instead being utilized mostly by heavy machinegunners." icon_state = "upp_helmet_heavy" diff --git a/code/modules/clothing/masks/breath.dm b/code/modules/clothing/masks/breath.dm index db57f4db38..71d2ab7ee3 100644 --- a/code/modules/clothing/masks/breath.dm +++ b/code/modules/clothing/masks/breath.dm @@ -59,7 +59,7 @@ icon_state = "blue_skull_balaclava" item_state = "blue_skull_balaclava" flags_inventory = COVERMOUTH|ALLOWREBREATH|ALLOWCPR - flags_inv_hide = HIDEALLHAIR|HIDEEARS + flags_inv_hide = HIDEALLHAIR flags_cold_protection = BODY_FLAG_HEAD min_cold_protection_temperature = ICE_PLANET_MIN_COLD_PROT @@ -75,7 +75,7 @@ icon_state = "coif" item_state = "coif" flags_inventory = COVERMOUTH|ALLOWREBREATH|ALLOWCPR - flags_inv_hide = HIDEALLHAIR|HIDEEARS + flags_inv_hide = HIDEALLHAIR flags_cold_protection = BODY_FLAG_HEAD min_cold_protection_temperature = ICE_PLANET_MIN_COLD_PROT var/pulled = FALSE diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index 4f928f6239..6b2f8cbbd7 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -58,7 +58,7 @@ icon_state = "balaclava" item_state = "balaclava" flags_inventory = COVERMOUTH|ALLOWREBREATH|ALLOWCPR - flags_inv_hide = HIDEFACE|HIDEALLHAIR|HIDEEARS + flags_inv_hide = HIDEFACE|HIDEALLHAIR flags_cold_protection = BODY_FLAG_HEAD min_cold_protection_temperature = ICE_PLANET_MIN_COLD_PROT w_class = SIZE_SMALL diff --git a/code/modules/clothing/shoes/marine_shoes.dm b/code/modules/clothing/shoes/marine_shoes.dm index 79ba46a027..f9012a8315 100644 --- a/code/modules/clothing/shoes/marine_shoes.dm +++ b/code/modules/clothing/shoes/marine_shoes.dm @@ -46,6 +46,10 @@ /obj/item/clothing/shoes/marine/knife spawn_item_type = /obj/item/attachable/bayonet +/obj/item/clothing/shoes/marine/brown + icon_state = "marine_brown" + desc = "A pair of standard issue brown United States Colonial Marine combat boots." + /obj/item/clothing/shoes/marine/jungle icon_state = "marine_jungle" desc = "A pair of standard issue United States Colonial Marine jungle boots. Don't go walkin' slow, the devil's on the loose." diff --git a/code/modules/clothing/suits/marine_armor/_marine_armor.dm b/code/modules/clothing/suits/marine_armor/_marine_armor.dm index 81c329885a..93dcf28922 100644 --- a/code/modules/clothing/suits/marine_armor/_marine_armor.dm +++ b/code/modules/clothing/suits/marine_armor/_marine_armor.dm @@ -378,39 +378,15 @@ armor_variation = 6 light_power = 4 -/obj/item/clothing/suit/storage/marine/medium/padded - name = "M3 pattern padded marine armor" - icon_state = "1" - armor_variation = 0 - specialty = "M3 pattern padded marine" - -/obj/item/clothing/suit/storage/marine/medium/padless - name = "M3 pattern padless marine armor" - icon_state = "2" - armor_variation = 0 - specialty = "M3 pattern padless marine" - /obj/item/clothing/suit/storage/marine/medium/padless_lines name = "M3 pattern ridged marine armor" - icon_state = "3" + icon_state = "2" armor_variation = 0 specialty = "M3 pattern ridged marine" -/obj/item/clothing/suit/storage/marine/medium/carrier - name = "M3 pattern carrier marine armor" - icon_state = "4" - armor_variation = 0 - specialty = "M3 pattern carrier marine" - -/obj/item/clothing/suit/storage/marine/medium/skull - name = "M3 pattern skull marine armor" - icon_state = "5" - armor_variation = 0 - specialty = "M3 pattern skull marine" - /obj/item/clothing/suit/storage/marine/medium/smooth name = "M3 pattern smooth marine armor" - icon_state = "6" + icon_state = "3" armor_variation = 0 specialty = "M3 pattern smooth marine" @@ -430,28 +406,12 @@ armor_internaldamage = CLOTHING_ARMOR_LOW storage_slots = 2 -/obj/item/clothing/suit/storage/marine/light/padded - icon_state = "L1" - armor_variation = 0 - -/obj/item/clothing/suit/storage/marine/light/padless - icon_state = "L2" - armor_variation = 0 - /obj/item/clothing/suit/storage/marine/light/padless_lines - icon_state = "L3" - armor_variation = 0 - -/obj/item/clothing/suit/storage/marine/light/carrier - icon_state = "L4" - armor_variation = 0 - -/obj/item/clothing/suit/storage/marine/light/skull - icon_state = "L5" + icon_state = "L2" armor_variation = 0 /obj/item/clothing/suit/storage/marine/light/smooth - icon_state = "L6" + icon_state = "L3" armor_variation = 0 /obj/item/clothing/suit/storage/marine/light/standard @@ -556,28 +516,12 @@ light_power = 4 light_range = 5 -/obj/item/clothing/suit/storage/marine/heavy/padded - icon_state = "H1" - armor_variation = 0 - -/obj/item/clothing/suit/storage/marine/heavy/padless - icon_state = "H2" - armor_variation = 0 - /obj/item/clothing/suit/storage/marine/heavy/padless_lines - icon_state = "H3" - armor_variation = 0 - -/obj/item/clothing/suit/storage/marine/heavy/carrier - icon_state = "H4" - armor_variation = 0 - -/obj/item/clothing/suit/storage/marine/heavy/skull - icon_state = "H5" + icon_state = "H2" armor_variation = 0 /obj/item/clothing/suit/storage/marine/heavy/smooth - icon_state = "H6" + icon_state = "H3" armor_variation = 0 //===========================//SPECIALIST\\================================\\ @@ -698,7 +642,6 @@ time_to_equip = 10 //==================USASF & ARMY==================\\ - /obj/item/clothing/suit/storage/marine/medium/rto/navy name = "\improper M4 pattern naval-deployment armor" desc = "A set of USASF acquired M4 armor, modified to fit the needs of the members that see deployment on the surface of worlds. Robust, yet very nimble, with room for all your pouches." @@ -710,3 +653,305 @@ desc = "Whilst it saw limited field-testing amongst the USCMC, the US Army adopted the M4 series pattern armor across the board. Surprisingly uncomfortable, even compared to the old M3 series armor." flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE +//===========================//CUSTOM ARMOR\\================================\\ +//=======================================================================\\ +//base armor, copies everything from the storage armor for the same traits +/obj/item/clothing/suit/marine + name = "\improper M3 pattern marine armor" + desc = "Standard USCMC issue M3 Pattern Personal Armor. Composite ballistic armor, integral biomonitoring system, and brackets for the IMP system as well as the TNR Shoulder Lamp." + icon = 'icons/obj/items/clothing/cm_suits.dmi' + icon_state = "1" + item_state = "marine_armor" //Make unique states for Officer & Intel armors. + item_icons = list( + WEAR_JACKET = 'icons/mob/humans/onmob/suit_1.dmi' + ) + flags_atom = FPRINT|CONDUCT + flags_inventory = BLOCKSHARPOBJ + flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS + flags_cold_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS + flags_heat_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS + min_cold_protection_temperature = HELMET_MIN_COLD_PROT + max_heat_protection_temperature = HELMET_MAX_HEAT_PROT + blood_overlay_type = "armor" + 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 + siemens_coefficient = 0.7 + slowdown = SLOWDOWN_ARMOR_MEDIUM + allowed = list( + /obj/item/weapon/gun, + /obj/item/prop/prop_gun, + /obj/item/tank/emergency_oxygen, + /obj/item/device/flashlight, + /obj/item/storage/fancy/cigarettes, + /obj/item/tool/lighter, + /obj/item/storage/bible, + /obj/item/attachable/bayonet, + /obj/item/storage/backpack/general_belt, + /obj/item/storage/large_holster/machete, + /obj/item/storage/belt/gun/type47, + /obj/item/storage/belt/gun/m4a3, + /obj/item/storage/belt/gun/m44, + /obj/item/storage/belt/gun/smartpistol, + /obj/item/storage/belt/gun/flaregun, + /obj/item/device/motiondetector, + /obj/item/device/walkman, + /obj/item/storage/belt/gun/m39, + ) + valid_accessory_slots = list(ACCESSORY_SLOT_MEDAL, ACCESSORY_SLOT_DECORARMOR, ACCESSORY_SLOT_LEGDECOR, ACCESSORY_SLOT_DECORBRACER, ACCESSORY_SLOT_DECORNECK, ACCESSORY_SLOT_PAINT, ACCESSORY_SLOT_M3UTILITY, ACCESSORY_SLOT_PONCHO) + restricted_accessory_slots = list(ACCESSORY_SLOT_DECORARMOR, ACCESSORY_SLOT_DECORBRACER, ACCESSORY_SLOT_DECORNECK, ACCESSORY_SLOT_LEGDECOR, ACCESSORY_SLOT_M3UTILITY, ACCESSORY_SLOT_PAINT) + + light_power = 3 + light_range = 4 + light_system = MOVABLE_LIGHT + + var/flashlight_cooldown = 0 //Cooldown for toggling the light + var/locate_cooldown = 0 //Cooldown for SL locator + var/armor_overlays[] + actions_types = list(/datum/action/item_action/toggle) + var/flags_marine_armor = ARMOR_SQUAD_OVERLAY|ARMOR_LAMP_OVERLAY + var/specialty = "M3 pattern marine" //Same thing here. Give them a specialty so that they show up correctly in vendors. speciality does NOTHING if you have NO_NAME_OVERRIDE + w_class = SIZE_HUGE + uniform_restricted = list(/obj/item/clothing/under/marine) + sprite_sheets = list(SPECIES_MONKEY = 'icons/mob/humans/species/monkeys/onmob/suit_monkey_1.dmi') + time_to_unequip = 20 + time_to_equip = 20 + drag_unequip = TRUE + pickup_sound = "armorequip" + drop_sound = "armorequip" + equip_sounds = list('sound/handling/putting_on_armor1.ogg') + var/armor_variation = 0 + /// The dmi where the grayscale squad overlays are contained + var/squad_overlay_icon = 'icons/mob/humans/onmob/suit_1.dmi' + + var/atom/movable/marine_light/light_holder + +/obj/item/clothing/suit/marine/Initialize(mapload) + . = ..() + if(!(flags_atom & NO_NAME_OVERRIDE)) + name = "[specialty]" + if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) + name += " snow armor" //Leave marine out so that armors don't have to have "Marine" appended (see: generals). + else + name += " armor" + + if(!(flags_atom & NO_SNOW_TYPE)) + select_gamemode_skin(type) + armor_overlays = list("lamp") //Just one for now, can add more later. + if(armor_variation && mapload) + post_vendor_spawn_hook() + update_icon() + + light_holder = new(src) + +/obj/item/clothing/suit/marine/Destroy() + QDEL_NULL(light_holder) + return ..() + +/obj/item/clothing/suit/marine/update_icon(mob/user) + var/image/I + armor_overlays["lamp"] = null + if(flags_marine_armor & ARMOR_LAMP_OVERLAY) + if(flags_marine_armor & ARMOR_LAMP_ON) + I = image('icons/obj/items/clothing/cm_suits.dmi', src, "lamp-on") + else + I = image('icons/obj/items/clothing/cm_suits.dmi', src, "lamp-off") + armor_overlays["lamp"] = I + overlays += I + else armor_overlays["lamp"] = null + if(user) user.update_inv_wear_suit() + +/obj/item/clothing/suit/marine/MouseDrop(obj/over_object as obj) + if (ishuman(usr)) + //makes sure that the clothing is equipped so that we can't drag it into our hand from miles away. + if ((flags_item & NODROP) || loc != usr) + return + + if (!usr.is_mob_incapacitated() && !(usr.buckled)) + if(over_object) + switch(over_object.name) + if("r_hand") + if(usr.drop_inv_item_on_ground(src)) + usr.put_in_r_hand(src) + if("l_hand") + if(usr.drop_inv_item_on_ground(src)) + usr.put_in_l_hand(src) + add_fingerprint(usr) + +/obj/item/clothing/suit/marine/post_vendor_spawn_hook(mob/living/carbon/human/user) //used for randomizing/selecting a variant for armors. + var/new_look //used for the icon_state text replacement. + + if(!user?.client?.prefs) + new_look = rand(1,armor_variation) + + else if(user.client.prefs.preferred_armor == "Random") + new_look = rand(1,armor_variation) + + else + new_look = GLOB.armor_style_list[user.client.prefs.preferred_armor] + + icon_state = replacetext(icon_state,"1","[new_look]") + update_icon(user) + +/obj/item/clothing/suit/marine/attack_self(mob/user) + ..() + + if(!isturf(user.loc)) + to_chat(user, SPAN_WARNING("You cannot turn the light [light_on ? "off" : "on"] while in [user.loc].")) //To prevent some lighting anomalies. + return + + if(flashlight_cooldown > world.time) + return + if(!ishuman(user)) + return + + var/mob/living/carbon/human/H = user + if(H.wear_suit != src) + return + + turn_light(user, !light_on) + +/obj/item/clothing/suit/marine/item_action_slot_check(mob/user, slot) + if(!ishuman(user)) + return FALSE + if(slot != WEAR_JACKET) + return FALSE + return TRUE //only give action button when armor is worn. + +/obj/item/clothing/suit/marine/turn_light(mob/user, toggle_on) + . = ..() + if(. != CHECKS_PASSED) + return + set_light_range(initial(light_range)) + set_light_power(FLOOR(initial(light_power) * 0.5, 1)) + set_light_on(toggle_on) + flags_marine_armor ^= ARMOR_LAMP_ON + + light_holder.set_light_flags(LIGHT_ATTACHED) + light_holder.set_light_range(initial(light_range)) + light_holder.set_light_power(initial(light_power)) + light_holder.set_light_on(toggle_on) + + if(!toggle_on) + playsound(src, 'sound/handling/click_2.ogg', 50, 1) + + playsound(src, 'sound/handling/suitlight_on.ogg', 50, 1) + update_icon(user) + + for(var/X in actions) + var/datum/action/A = X + A.update_button_icon() + +/obj/item/clothing/suit/marine/mob_can_equip(mob/living/carbon/human/M, slot, disable_warning = 0) + . = ..() + if (.) + if(issynth(M) && M.allow_gun_usage == FALSE && !(flags_marine_armor & SYNTH_ALLOWED)) + M.visible_message(SPAN_DANGER("Your programming prevents you from wearing this!")) + return 0 + +/obj/item/clothing/suit/marine/lines + name = "M3 pattern ridged marine armor" + icon_state = "2" + specialty = "M3 pattern ridged marine" + +/obj/item/clothing/suit/marine/smooth + name = "M3 pattern smooth marine armor" + icon_state = "3" + specialty = "M3 pattern smooth marine" + +/obj/item/clothing/suit/marine/light + name = "\improper M3-L pattern light armor" + desc = "A lighter, cut down version of the standard M3 pattern armor. It sacrifices durability for less weight." + specialty = "\improper M3-L pattern light" + icon_state = "L1" + armor_variation = 3 + slowdown = SLOWDOWN_ARMOR_LIGHT + armor_melee = CLOTHING_ARMOR_MEDIUMLOW + armor_bullet = CLOTHING_ARMOR_MEDIUMLOW + armor_bomb = CLOTHING_ARMOR_MEDIUM + armor_bio = CLOTHING_ARMOR_MEDIUMLOW + armor_rad = CLOTHING_ARMOR_MEDIUMHIGH + armor_internaldamage = CLOTHING_ARMOR_LOW + valid_accessory_slots = list(ACCESSORY_SLOT_MEDAL, ACCESSORY_SLOT_DECORARMOR, ACCESSORY_SLOT_DECORBRACER, ACCESSORY_SLOT_DECORGROIN, ACCESSORY_SLOT_PAINT, ACCESSORY_SLOT_M3UTILITY, ACCESSORY_SLOT_PONCHO) + restricted_accessory_slots = list(ACCESSORY_SLOT_DECORARMOR, ACCESSORY_SLOT_DECORBRACER, ACCESSORY_SLOT_DECORGROIN, ACCESSORY_SLOT_M3UTILITY, ACCESSORY_SLOT_PAINT) + +/obj/item/clothing/suit/marine/light/lines + name = "M3 pattern ridged marine armor" + icon_state = "L2" + armor_variation = 0 + +/obj/item/clothing/suit/marine/light/smooth + name = "M3 pattern smooth marine armor" + icon_state = "L3" + armor_variation = 0 + +/obj/item/clothing/suit/marine/light/standard + flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + + +/obj/item/clothing/suit/marine/heavy + name = "\improper M3-H pattern heavy armor" + desc = "M3 armor vest with a rheological liner behind the chestplate, additional armor over the limbs to improve protection ballistic and blast protections. \nMarginal improvement in other areas, and the mass of the extra plates degrades agility, especially in null-gee." + specialty = "\improper M3-H pattern" + icon_state = "H1" + armor_variation = 3 + armor_melee = CLOTHING_ARMOR_MEDIUMHIGH + armor_bullet = CLOTHING_ARMOR_HIGHPLUS + armor_bomb = CLOTHING_ARMOR_HIGHPLUS + armor_bio = CLOTHING_ARMOR_MEDIUMHIGH + armor_rad = CLOTHING_ARMOR_MEDIUM + armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH + slowdown = SLOWDOWN_ARMOR_LOWHEAVY + movement_compensation = SLOWDOWN_ARMOR_MEDIUM + +/obj/item/clothing/suit/marine/heavy/lines + name = "M3 pattern ridged marine armor" + icon_state = "L2" + armor_variation = 0 + +/obj/item/clothing/suit/marine/heavy/smooth + name = "M3 pattern smooth marine armor" + icon_state = "L3" + armor_variation = 0 + +/obj/item/clothing/suit/marine/rto + icon_state = "io" + name = "\improper M4 pattern marine armor" + desc = "A well tinkered and crafted hybrid of Smart-Gunner mesh and M3 pattern plates. Robust, yet nimble, with room for all your pouches." + armor_bio = CLOTHING_ARMOR_MEDIUMHIGH + armor_rad = CLOTHING_ARMOR_MEDIUM + light_range = 5 //slightly higher + specialty = "M4 pattern marine" + +/obj/item/clothing/suit/marine/rto/intel + name = "\improper XM4 pattern intelligence officer armor" + uniform_restricted = list(/obj/item/clothing/under/marine/officer, /obj/item/clothing/under/rank/qm_suit, /obj/item/clothing/under/marine/officer/intel) + specialty = "XM4 pattern intel" + +/obj/item/clothing/suit/marine/rto/forecon + name = "\improper M3-R pattern recon armor" + desc = "A modified Colonial Marines M3 Pattern Chestplate. Protects the chest from ballistic rounds, bladed objects and accidents. Issued exclusively to FORECON units." + icon_state = "L1" + flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + +/obj/item/clothing/suit/marine/rto/forecon/Initialize(mapload) + . = ..() + var/obj/item/clothing/accessory/pads/pads = new() + src.attach_accessory(null, pads, TRUE) + +/obj/item/clothing/suit/marine/leader + name = "\improper B12 pattern marine armor" + desc = "Semi-experimental body armor system similar to M3, incorporating primarily carbon fiber instead of boron carbide. \nDesigned in a lovely olive green, slightly improved protection against blunt impact and biological hazards." + icon_state = "7" + armor_melee = CLOTHING_ARMOR_MEDIUMHIGH + armor_bomb = CLOTHING_ARMOR_MEDIUM + armor_bio = CLOTHING_ARMOR_MEDIUMHIGH + armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH + specialty = "B12 pattern marine" + diff --git a/code/modules/clothing/suits/marine_armor/smartgunner.dm b/code/modules/clothing/suits/marine_armor/smartgunner.dm index fef4811d7b..2589fc16be 100644 --- a/code/modules/clothing/suits/marine_armor/smartgunner.dm +++ b/code/modules/clothing/suits/marine_armor/smartgunner.dm @@ -23,8 +23,9 @@ /obj/item/device/walkman, ) var/list/smartgun_back = list( - /obj/item/storage/large_holster/machete, + /obj/item/storage/large_holster/machete/smartgunner, ) + valid_accessory_slots = list(ACCESSORY_SLOT_MEDAL, ACCESSORY_SLOT_SGPAINT, ACCESSORY_SLOT_PAINT, ACCESSORY_SLOT_PONCHO) /obj/item/clothing/suit/storage/marine/smartgunner/Initialize() . = ..() @@ -116,3 +117,83 @@ /obj/item/ammo_magazine/minigun, /obj/item/ammo_magazine/pkp, ) + +//Customizable Variant +/obj/item/clothing/suit/marine/smartgunner + name = "\improper M56 combat harness" + desc = "Lightweight vest composed of ballistic micromesh and a ceramic composite chestplate for practical protection, as well as the computers, straps, and armature required for operating the M56 Smartgun itself." + icon_state = "8" + item_state = "armor" + armor_laser = CLOTHING_ARMOR_LOW + armor_bomb = CLOTHING_ARMOR_MEDIUM + armor_rad = CLOTHING_ARMOR_MEDIUM + slowdown = SLOWDOWN_ARMOR_LIGHT + flags_inventory = BLOCKSHARPOBJ|SMARTGUN_HARNESS + flags_atom = NO_NAME_OVERRIDE + unacidable = TRUE + allowed = list( + /obj/item/tank/emergency_oxygen, + /obj/item/device/flashlight, + /obj/item/ammo_magazine, + /obj/item/explosive/mine, + /obj/item/attachable/bayonet, + /obj/item/weapon/gun/smartgun, + /obj/item/storage/backpack/general_belt, + /obj/item/device/motiondetector, + /obj/item/device/walkman, + ) + var/list/smartgun_back = list( + /obj/item/storage/large_holster/machete/smartgunner, + /obj/item/weapon/gun/smartgun, + ) + valid_accessory_slots = list(ACCESSORY_SLOT_MEDAL, ACCESSORY_SLOT_DECORBRACER, ACCESSORY_SLOT_SGPAINT, ACCESSORY_SLOT_M56UTILITY, ACCESSORY_SLOT_LEGDECOR, ACCESSORY_SLOT_PAINT, ACCESSORY_SLOT_PONCHO) + restricted_accessory_slots = list(ACCESSORY_SLOT_SGPAINT, ACCESSORY_SLOT_DECORBRACER, ACCESSORY_SLOT_M56UTILITY, ACCESSORY_SLOT_LEGDECOR, ACCESSORY_SLOT_PAINT) + +/obj/item/clothing/suit/marine/smartgunner/Initialize() + . = ..() + if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD] && name == "\improper M56 combat harness" && !(flags_atom & NO_SNOW_TYPE)) + name = "\improper M56 snow combat harness" + else + name = "\improper M56 combat harness" + //select_gamemode_skin(type) + +/obj/item/clothing/suit/marine/smartgunner/mob_can_equip(mob/equipping_mob, slot, disable_warning = FALSE) + . = ..() + + if(equipping_mob.back && !(equipping_mob.back.flags_item & SMARTGUNNER_BACKPACK_OVERRIDE)) + if(!disable_warning) + to_chat(equipping_mob, SPAN_WARNING("You can't equip [src] while wearing a backpack.")) + return FALSE + +/obj/item/clothing/suit/marine/smartgunner/equipped(mob/user, slot, silent) + . = ..() + + if(slot == WEAR_JACKET) + RegisterSignal(user, COMSIG_HUMAN_ATTEMPTING_EQUIP, PROC_REF(check_equipping)) + +/obj/item/clothing/suit/marine/smartgunner/proc/check_equipping(mob/living/carbon/human/equipping_human, obj/item/equipping_item, slot) + SIGNAL_HANDLER + + if(slot != WEAR_BACK) + return + + if(equipping_item.flags_item & SMARTGUNNER_BACKPACK_OVERRIDE || is_type_in_list(equipping_item, smartgun_back)) + return + + . = COMPONENT_HUMAN_CANCEL_ATTEMPT_EQUIP + + if(equipping_item.flags_equip_slot == SLOT_BACK) + to_chat(equipping_human, SPAN_WARNING("You can't equip [equipping_item] on your back while wearing [src].")) + return + +/obj/item/clothing/suit/marine/smartgunner/unequipped(mob/user, slot) + . = ..() + + UnregisterSignal(user, COMSIG_HUMAN_ATTEMPTING_EQUIP) + +/obj/item/clothing/suit/marine/smartgunner/standard + flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + +/obj/item/clothing/suit/marine/smartgunner/black + flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + icon_state = "8fancy" diff --git a/code/modules/clothing/under/ties.dm b/code/modules/clothing/under/ties.dm index ac27000cc9..bd22689d6d 100644 --- a/code/modules/clothing/under/ties.dm +++ b/code/modules/clothing/under/ties.dm @@ -877,7 +877,7 @@ name = "shoulder holster" desc = "A handgun holster with an attached pouch, allowing two magazines or speedloaders to be stored along with it." icon_state = "holster" - slot = ACCESSORY_SLOT_UTILITY + slot = ACCESSORY_SLOT_HOLSTER high_visibility = TRUE hold = /obj/item/storage/internal/accessory/holster @@ -1054,3 +1054,232 @@ icon_state = initial(icon_state) user.visible_message(SPAN_NOTICE("[user] decides to keep [src] nice and puffy."), SPAN_NOTICE("You decide to keep [src] nice and puffy.")) item_state = icon_state + +//===========================//CUSTOM ARMOR COSMETIC PLATES\\================================\\ + +/obj/item/clothing/accessory/pads + name = "\improper M3 Shoulder Pads" + desc = "A set shoulder pads attachable to the M3 armor set worn by the USCM." + icon_state = "pads" + item_state = "pads" + slot = ACCESSORY_SLOT_DECORARMOR + +/obj/item/clothing/accessory/pads/Initialize(mapload) + . = ..() + if(!(flags_atom & NO_SNOW_TYPE)) + select_gamemode_skin(type) + update_icon() + +/obj/item/clothing/accessory/pads/bracers + name = "\improper M3 Arm Bracers" + desc = "A set arm bracers worn in conjunction to the M3 armor set of the USCMC." + icon_state = "bracers" + item_state = "bracers" + slot = ACCESSORY_SLOT_DECORBRACER + +/obj/item/clothing/accessory/pads/neckguard + name = "\improper M3 Neck Guard" + desc = "An attachable neck guard option for the M3 armor set worn by the USCMC." + icon_state = "neckguard" + item_state = "neckguard" + slot = ACCESSORY_SLOT_DECORNECK + +/obj/item/clothing/accessory/pads/greaves + name = "\improper M3 Shin Guards" + desc = "A set shinguards designed to be worn in conjuction with M3 pattern armor." + icon_state = "shinguards" + item_state = "shinguards" + slot = ACCESSORY_SLOT_LEGDECOR + +/obj/item/clothing/accessory/pads/groin + name = "\improper M3 Groin Plate" + desc = "A plate designed to attach to M3 chestpiece to protect the babymakers of the Corps. Standardized protection of the USCMC often seen worn than not." + icon_state = "groinplate" + item_state = "groinplate" + slot = ACCESSORY_SLOT_DECORGROIN + +//===========================//CUSTOM ARMOR PAINT\\================================\\ + +/obj/item/clothing/accessory/paint + name = "skull armor paint" + desc = "A set of paint tones to etch a skull into a Marine's armor." + icon_state = "skull" + item_state = "skull" + slot = ACCESSORY_SLOT_PAINT + +/obj/item/clothing/accessory/paint/heart + name = "heart armor paint" + desc = "A set of paint tones to etch a heart into a Marine's armor." + icon_state = "heart" + item_state = "heart" + +/obj/item/clothing/accessory/paint/medic + name = "cross armor paint" + desc = "A set of paint tones to etch a red cross into a Marine's armor." + icon_state = "medic" + item_state = "medic" + +/obj/item/clothing/accessory/paint/uaflag + name = "cross armor paint" + desc = "A set of paint tones to etch the red, white, and black into a Marine's armor." + icon_state = "uaflag" + item_state = "uaflag" + +/obj/item/clothing/accessory/paint/sg + name = "camouflage paint" + desc = "A set of paints for smartgunners to apply to their harnesses for a darker complextion." + icon_state = "blacksg" + item_state = "blacksg" + slot = ACCESSORY_SLOT_SGPAINT + +//===========================//CUSTOM ARMOR WEBBING\\================================\\ + +/obj/item/clothing/accessory/storage/webbing/m3 + name = "\improper M3 Pattern Webbing" + desc = "A sturdy mess of synthcotton belts and buckles designed to attach to the M3 Pattern Marine armor standard for the USCMC. This one is the slimmed down model designed for general purpose storage." + icon_state = "m3webbing" + hold = /obj/item/storage/internal/accessory/webbing/m3generic + slot = ACCESSORY_SLOT_M3UTILITY + +/obj/item/clothing/accessory/storage/webbing/m3/Initialize(mapload) + . = ..() + if(!(flags_atom & NO_SNOW_TYPE)) + select_gamemode_skin(type) + update_icon() + + +/obj/item/storage/internal/accessory/webbing/m3generic + cant_hold = list( + /obj/item/ammo_magazine/handful/shotgun, + /obj/item/ammo_magazine/rifle, + ) + +/obj/item/clothing/accessory/storage/webbing/m3/mag + name = "\improper M3 Pattern Magazine Webbing" + desc = "A variant of the M3 Pattern webbing that features pouches for pulse rifle magazines." + icon_state = "m3webbingmag" + hold = /obj/item/storage/internal/accessory/webbing/m3mag + +/obj/item/storage/internal/accessory/webbing/m3mag + can_hold = list( + /obj/item/ammo_magazine/rifle, + /obj/item/ammo_magazine/smg/m39, + ) + +/obj/item/clothing/accessory/storage/webbing/m3/shotgun + name = "\improper M3 Pattern Shell Webbing" + desc = "A slightly modified variant of the M3 Pattern grenade webbing, fitted for 12 gauge shotgun shells." + icon_state = "m3webbingshotgun" + hold = /obj/item/storage/internal/accessory/black_vest/m3shotgun + +/obj/item/storage/internal/accessory/black_vest/m3shotgun + can_hold = list( + /obj/item/ammo_magazine/handful, + ) + +/obj/item/clothing/accessory/storage/webbing/m3/small + name = "\improper M3 Pattern Small Pouch Webbing" + desc = "A set of M3 pattern webbing fully outfitted with pouches and pockets to carry a while array of small items." + icon_state = "m3webbingsmall" + hold = /obj/item/storage/internal/accessory/black_vest/m3generic + slot = ACCESSORY_SLOT_M3UTILITY + +/obj/item/storage/internal/accessory/black_vest/m3generic + cant_hold = list( + /obj/item/ammo_magazine/handful/shotgun, + ) + +/obj/item/clothing/accessory/storage/webbing/m3/m40 + name = "\improper M3 Pattern Grenade Webbing" + desc = "A variation of the M3 Pattern webbing fitted with loops for storing M40 grenades." + icon_state = "m3webbingm40" + hold = /obj/item/storage/internal/accessory/black_vest/m3grenade + +/obj/item/storage/internal/accessory/black_vest/m3grenade + storage_slots = 7 + can_hold = list( + /obj/item/explosive/grenade/high_explosive, + /obj/item/explosive/grenade/incendiary, + /obj/item/explosive/grenade/smokebomb, + /obj/item/explosive/grenade/high_explosive/airburst/starshell, + /obj/item/explosive/grenade/high_explosive/frag, + /obj/item/explosive/grenade/phosphorus/weak, + /obj/item/explosive/grenade/slug/baton, + ) + +/obj/item/clothing/accessory/storage/webbing/m3/recon + name = "\improper M3-R Pattern Magazine Webbing" + desc = "A set of magazine webbing made in an alternative configuration for standard M3 Pattern armor. This one is exclusively issued to Force Reconnoissance units." + icon_state = "m3rwebbing" + hold = /obj/item/storage/internal/accessory/webbing/m3mag/recon + +/obj/item/storage/internal/accessory/webbing/m3mag/recon + storage_slots = 4 + +/obj/item/clothing/accessory/storage/webbing/m3/recon/m40 + name = "\improper M3-R Pattern Grenade Webbing" + desc = "An alternative to the M3-R Pattern webbing fitted to store M40 grenades." + icon_state = "m3rwebbingm40" + hold = /obj/item/storage/internal/accessory/black_vest/m3grenade/recon + +/obj/item/storage/internal/accessory/black_vest/m3grenade/recon + storage_slots = 10 + +/obj/item/clothing/accessory/storage/webbing/m3/recon/shotgun + name = "\improper M3-R Pattern Shell Webbing" + desc = "A modified variant of the M3-R Pattern grenade webbing for FORECON units, this one accepting 12 gauge." + icon_state = "m3rwebbingshotgun" + hold = /obj/item/storage/internal/accessory/black_vest/m3shotgun/recon + +/obj/item/storage/internal/accessory/black_vest/m3shotgun/recon + storage_slots = 7 + +/obj/item/clothing/accessory/storage/webbing/m3/recon/medic + name = "\improper M3-R Pattern Corpsman Webbing" + desc = "A large pouch with M3-R Pattern webbing clips designed to house surgical tools for Corpsmen attached to FORECON units, where field hospitals are not readily available." + icon_state = "m3rwebbingmedic" + hold = /obj/item/storage/internal/accessory/black_vest/m3generic/recon + +/obj/item/storage/internal/accessory/black_vest/m3generic/recon + storage_slots = 6 + can_hold = list( + /obj/item/storage/surgical_case/regular, + /obj/item/reagent_container/blood, + /obj/item/tool/surgery/surgical_line, + /obj/item/tool/surgery/synthgraft, + /obj/item/device/healthanalyzer, + ) + +/obj/item/clothing/accessory/storage/webbing/m56 + name = "\improper Clip-on Pouch" + desc = "A clip on synth-leather pouch designed to house a small collection of items for M56 weapon operators." + icon_state = "m56pouch" + hold = /obj/item/storage/internal/accessory/black_vest/m56 + slot = ACCESSORY_SLOT_M56UTILITY + +/obj/item/clothing/accessory/storage/webbing/m56/Initialize(mapload) + . = ..() + if(!(flags_atom & NO_SNOW_TYPE)) + select_gamemode_skin(type) + update_icon() + +/obj/item/storage/internal/accessory/black_vest/m56 + storage_slots = 3 + +/obj/item/clothing/accessory/storage/webbing/m56/grenade + name = "\improper Clip-on Grenade Band" + desc = "A sturdy mess of synth-leather band designed to store a few grenades for M56 weapon operators." + icon_state = "m56grenade" + hold = /obj/item/storage/internal/accessory/black_vest/m56/grenade + +/obj/item/storage/internal/accessory/black_vest/m56/grenade + storage_slots = 4 + can_hold = list( + /obj/item/explosive/grenade/high_explosive, + /obj/item/explosive/grenade/incendiary, + /obj/item/explosive/grenade/smokebomb, + /obj/item/explosive/grenade/high_explosive/airburst/starshell, + /obj/item/explosive/grenade/high_explosive/frag, + /obj/item/explosive/grenade/phosphorus/weak, + /obj/item/explosive/grenade/slug/baton, + ) diff --git a/code/modules/clothing/under/under.dm b/code/modules/clothing/under/under.dm index a48967d885..36a0ab1e93 100644 --- a/code/modules/clothing/under/under.dm +++ b/code/modules/clothing/under/under.dm @@ -32,8 +32,8 @@ var/worn_state = null var/hood_state //for uniforms with hoods. drag_unequip = TRUE - valid_accessory_slots = list(ACCESSORY_SLOT_UTILITY, ACCESSORY_SLOT_ARMBAND, ACCESSORY_SLOT_RANK, ACCESSORY_SLOT_DECOR, ACCESSORY_SLOT_MEDAL, ACCESSORY_SLOT_ARMOR_C) - restricted_accessory_slots = list(ACCESSORY_SLOT_UTILITY, ACCESSORY_SLOT_ARMBAND, ACCESSORY_SLOT_RANK, ACCESSORY_SLOT_ARMOR_C) + valid_accessory_slots = list(ACCESSORY_SLOT_UTILITY, ACCESSORY_SLOT_ARMBAND, ACCESSORY_SLOT_RANK, ACCESSORY_SLOT_DECOR, ACCESSORY_SLOT_MEDAL, ACCESSORY_SLOT_UTILITY, ACCESSORY_SLOT_ARMOR_C, ACCESSORY_SLOT_HOLSTER) + restricted_accessory_slots = list(ACCESSORY_SLOT_UTILITY, ACCESSORY_SLOT_ARMBAND, ACCESSORY_SLOT_RANK, ACCESSORY_SLOT_ARMOR_C, ACCESSORY_SLOT_HOLSTER) sprite_sheets = list(SPECIES_MONKEY = 'icons/mob/humans/species/monkeys/onmob/uniform_monkey_0.dmi') equip_sounds = list('sound/handling/clothing_on.ogg') unequip_sounds = list('sound/handling/clothing_off.ogg') diff --git a/code/modules/cm_marines/equipment/gear.dm b/code/modules/cm_marines/equipment/gear.dm index 7ec7a68f6a..c396ff87f0 100644 --- a/code/modules/cm_marines/equipment/gear.dm +++ b/code/modules/cm_marines/equipment/gear.dm @@ -371,3 +371,37 @@ new /obj/item/reagent_container/food/snacks/cookie(src) if(5) new /obj/item/reagent_container/food/snacks/chocolatebar(src) + +/obj/item/device/overwatch_camera + name = "M5 Camera Gear" + desc = "A camera and associated headgear designed to allow marine commanders to see what their troops can see. A more robust version of this equipment is integrated into all standard USCM combat helmets." + icon = 'icons/obj/items/clothing/glasses.dmi' + icon_state = "overwatch_gear" + item_icons = list( + WEAR_L_EAR = 'icons/mob/humans/onmob/ears.dmi', + WEAR_R_EAR = 'icons/mob/humans/onmob/ears.dmi', + ) + item_state_slots = list( + WEAR_L_EAR = "cam_gear", + WEAR_R_EAR = "cam_gear", + ) + flags_equip_slot = SLOT_EAR + var/obj/structure/machinery/camera/camera + +/obj/item/device/overwatch_camera/Initialize(mapload, ...) + . = ..() + camera = new /obj/structure/machinery/camera/overwatch(src) + +/obj/item/device/overwatch_camera/Destroy() + QDEL_NULL(camera) + return ..() + +/obj/item/device/overwatch_camera/equipped(mob/living/carbon/human/mob, slot) + if(camera) + camera.c_tag = mob.name + ..() + +/obj/item/device/overwatch_camera/dropped(mob/user) + if(camera) + camera.c_tag = "Unknown" + ..() diff --git a/code/modules/cm_marines/equipment/guncases.dm b/code/modules/cm_marines/equipment/guncases.dm index d9ac8c2266..4592ca75ae 100644 --- a/code/modules/cm_marines/equipment/guncases.dm +++ b/code/modules/cm_marines/equipment/guncases.dm @@ -237,8 +237,8 @@ name = "\improper Ithaca 37 pump-action shotgun case" desc = "A gun case containing an unloaded Ithaca 37 pump-action shotgun, a box of 12 gauge buckshot, and a box of 12 gauge slugs." icon_state = "matebacase" - storage_slots = 3 - can_hold = list(/obj/item/weapon/gun/shotgun/pump, /obj/item/ammo_magazine/shotgun/buckshot, /obj/item/ammo_magazine/shotgun/slugs) + storage_slots = 6 + can_hold = list(/obj/item/weapon/gun/shotgun/pump, /obj/item/storage/large_holster/m37, /obj/item/attachable/stock/shotgun, /obj/item/ammo_magazine/shotgun/buckshot, /obj/item/ammo_magazine/shotgun/slugs) /obj/item/storage/box/guncase/shotgunpump/fill_preset_inventory() new /obj/item/weapon/gun/shotgun/pump(src) diff --git a/code/modules/cm_marines/overwatch.dm b/code/modules/cm_marines/overwatch.dm index 3275276efc..96c3301740 100644 --- a/code/modules/cm_marines/overwatch.dm +++ b/code/modules/cm_marines/overwatch.dm @@ -219,7 +219,7 @@ if(mob_state == "Conscious" && (locate(/datum/effects/crit) in marine_human.effects_list)) mob_state = "Incapacitated" - if(!istype(marine_human.head, /obj/item/clothing/head/helmet/marine)) + if(!marine_has_camera(marine_human)) has_helmet = FALSE if(!marine_human.key || !marine_human.client) @@ -653,13 +653,33 @@ cam = null user.reset_view(null) -//returns the helmet camera the human is wearing -/obj/structure/machinery/computer/overwatch/proc/get_camera_from_target(mob/living/carbon/human/H) +/// checks if the human has an overwatch camera at all +/obj/structure/machinery/computer/overwatch/proc/marine_has_camera(mob/living/carbon/human/marine) + if(istype(marine.head, /obj/item/clothing/head/helmet/marine)) + return TRUE + if(istype(marine.wear_l_ear, /obj/item/device/overwatch_camera) || istype(marine.wear_r_ear, /obj/item/device/overwatch_camera)) + return TRUE + if(istype(marine.glasses, /obj/item/clothing/glasses/night/m56_goggles)) + return TRUE + return FALSE +/// returns the overwatch camera the human is wearing +/obj/structure/machinery/computer/overwatch/proc/get_camera_from_target(mob/living/carbon/human/marine) if(current_squad) - if(H && istype(H) && istype(H.head, /obj/item/clothing/head/helmet/marine)) - var/obj/item/clothing/head/helmet/marine/helm = H.head - return helm.camera - + if(marine && istype(marine)) + if(istype(marine.head, /obj/item/clothing/head/helmet/marine)) + var/obj/item/clothing/head/helmet/marine/helm = marine.head + return helm.camera + var/obj/item/device/overwatch_camera/cam_gear + if(istype(marine.wear_l_ear, /obj/item/device/overwatch_camera)) + cam_gear = marine.wear_l_ear + return cam_gear.camera + if(istype(marine.wear_r_ear, /obj/item/device/overwatch_camera)) + cam_gear = marine.wear_r_ear + return cam_gear.camera + var/obj/item/clothing/glasses/night/m56_goggles/m56_cam + if(istype(marine.glasses, /obj/item/clothing/glasses/night/m56_goggles)) + m56_cam = marine.glasses + return m56_cam.camera // Alerts all groundside marines about the incoming OB /obj/structure/machinery/computer/overwatch/proc/alert_ob(turf/target) diff --git a/code/modules/gear_presets/corpses.dm b/code/modules/gear_presets/corpses.dm index 5bff1b9ef8..0653fc45ff 100644 --- a/code/modules/gear_presets/corpses.dm +++ b/code/modules/gear_presets/corpses.dm @@ -682,9 +682,9 @@ var/maybeberet = rand(1,3) switch(maybeberet) if(1) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/UPP/naval, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/upp, WEAR_HEAD) if(2) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/UPP/naval/alt, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/upp/alt, WEAR_HEAD) if(3) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/beret/naval, WEAR_HEAD) //uniform diff --git a/code/modules/gear_presets/upp.dm b/code/modules/gear_presets/upp.dm index ee78ec2e3e..2d29f949ac 100644 --- a/code/modules/gear_presets/upp.dm +++ b/code/modules/gear_presets/upp.dm @@ -82,7 +82,7 @@ new_human.equip_to_slot_or_del(new /obj/item/device/flashlight/flare, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/device/flashlight/flare, WEAR_IN_BACK) //face - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/territorial, WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/solardevils/upp/territorial, WEAR_L_EAR) //head var/random_hat= rand(1,3) switch(random_hat) @@ -167,14 +167,14 @@ new_human.equip_to_slot_or_del(new /obj/item/storage/box/packet/high_explosive/upp, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/storage/box/packet/high_explosive/upp, WEAR_IN_BACK) //face - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP, WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/solardevils/upp, WEAR_L_EAR) //head var/maybeberet = rand(1,3) switch(maybeberet) if(1) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/UPP/naval, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/upp, WEAR_HEAD) if(2) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/UPP/naval/alt, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/upp/alt, WEAR_HEAD) if(3) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/beret/naval, WEAR_HEAD) //uniform @@ -231,7 +231,7 @@ new_human.equip_to_slot_or_del(new /obj/item/roller/bedroll, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/drinks/flask/canteen, WEAR_IN_BACK) //face - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/medic, WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/solardevils/upp/medic, WEAR_L_EAR) if(new_human.disabilities & NEARSIGHTED) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health/prescription, WEAR_EYES) else @@ -240,7 +240,7 @@ var/maybeberet = rand(1,3) switch(maybeberet) if(1 to 2) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/UPP/naval, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/upp, WEAR_HEAD) if(3) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/beret/naval, WEAR_HEAD) //uniform @@ -290,14 +290,14 @@ new_human.undershirt = "Naval Infantry Telnyashka" //face - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP, WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/solardevils/upp, WEAR_L_EAR) //head var/maybeberet = rand(1,3) switch(maybeberet) if(1) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/UPP/naval, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/upp, WEAR_HEAD) if(2) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/UPP/naval/alt, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/upp/alt, WEAR_HEAD) if(3) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/beret/naval, WEAR_HEAD) //uniform @@ -349,14 +349,14 @@ new_human.equip_to_slot_or_del(new /obj/item/roller/bedroll, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/drinks/flask/canteen, WEAR_IN_BACK) //face - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP, WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/solardevils/upp, WEAR_L_EAR) //head var/maybeberet = rand(1,3) switch(maybeberet) if(1) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/UPP/naval, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/upp, WEAR_HEAD) if(2) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/UPP/naval/alt, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/upp/alt, WEAR_HEAD) if(3) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/beret/naval, WEAR_HEAD) //uniform @@ -408,14 +408,14 @@ new_human.equip_to_slot_or_del(new /obj/item/roller/bedroll, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/drinks/flask/canteen, WEAR_IN_BACK) //face - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP, WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/solardevils/upp, WEAR_L_EAR) //head var/maybeberet = rand(1,3) switch(maybeberet) if(1) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/UPP/naval, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/upp, WEAR_HEAD) if(2) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/UPP/naval/alt, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/upp/alt, WEAR_HEAD) if(3) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/beret/naval, WEAR_HEAD) //uniform @@ -499,7 +499,7 @@ //back new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel, WEAR_BACK) //face - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/command, WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/solardevils/upp/command, WEAR_L_EAR) //head new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/peaked, WEAR_HEAD) //uniform @@ -570,15 +570,15 @@ /datum/equipment_preset/upp/synth/load_gear(mob/living/carbon/human/new_human) new_human.undershirt = "Naval Infantry Telnyashka" //face - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP, WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/solardevils/upp, WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health, WEAR_EYES) //head var/helmetvariety = rand(1,2) switch(helmetvariety) if(1) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/UPP/naval, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/upp, WEAR_HEAD) if(2) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/UPP/naval/alt, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/upp/alt, WEAR_HEAD) //uniform new_human.equip_to_slot_or_del(new /obj/item/clothing/under/colonist/boilersuit/khaki, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/surg_vest/drop_black/equipped, WEAR_ACCESSORY) @@ -639,16 +639,16 @@ //back new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/type23, WEAR_BACK) //face - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP, WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/solardevils/upp, WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf, WEAR_FACE) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/night/m42_night_goggles/upp, WEAR_EYES) //head var/helmetvariety = rand(1,2) switch(helmetvariety) if(1) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/UPP/naval, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/upp, WEAR_HEAD) if(2) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/UPP/naval/alt, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/upp/alt, WEAR_HEAD) //uniform new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/UPP, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/tool_webbing/equipped, WEAR_ACCESSORY) @@ -753,7 +753,7 @@ //face new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP, WEAR_L_EAR) //head - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/UPP/naval, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/upp, WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/welding, WEAR_EYES) //uniform new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/UPP, WEAR_BODY) @@ -788,7 +788,7 @@ //face new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP, WEAR_L_EAR) //head - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/UPP/naval, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/upp, WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/aviator, WEAR_EYES) //uniform var/obj/item/clothing/under/marine/veteran/UPP/uniform = new() diff --git a/code/modules/gear_presets/usasf.dm b/code/modules/gear_presets/usasf.dm index 7efb217ed4..fdb4057fe3 100644 --- a/code/modules/gear_presets/usasf.dm +++ b/code/modules/gear_presets/usasf.dm @@ -79,7 +79,7 @@ /datum/equipment_preset/usasf/crew/flight/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/hazardvest/usasf, WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/pilot, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/upp/marinepilot, WEAR_HEAD) ..() /datum/equipment_preset/usasf/crew/flight/green @@ -278,7 +278,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/ce/navy, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/usasf, WEAR_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/hazardvest/usasf/yellow, WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/pilot, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/upp/marinepilot, WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/botanic_leather/generic, WEAR_HANDS) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/army/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/full, WEAR_WAIST) diff --git a/code/modules/gear_presets/uscm.dm b/code/modules/gear_presets/uscm.dm index 17fda6f56a..cba0655e01 100644 --- a/code/modules/gear_presets/uscm.dm +++ b/code/modules/gear_presets/uscm.dm @@ -565,8 +565,8 @@ /datum/equipment_preset/uscm/private_equipped/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/cryo(new_human), WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/medium(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/solardevils/foxtrot(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/marine(new_human), WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine(new_human), WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/flare/full(new_human), WEAR_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full(new_human), WEAR_L_STORE) @@ -590,7 +590,7 @@ spawn_marine_backpack(new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/cryo(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/solardevils/foxtrot(new_human), WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/flare/full(new_human), WEAR_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full(new_human), WEAR_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine(new_human), WEAR_HANDS) @@ -625,8 +625,8 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine(new_human), WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/leader(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/cryo/lead(new_human), WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/medium/leader(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/solardevils/foxtrot(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/marine/leader(new_human), WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/device/binoculars/range(new_human), WEAR_IN_JACKET) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/flare/full(new_human), WEAR_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full(new_human), WEAR_L_STORE) @@ -683,7 +683,7 @@ /datum/equipment_preset/uscm/smartgunner_equipped/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine(new_human), 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/clothing/suit/marine/smartgunner(new_human), WEAR_JACKET) 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/storage/pouch/flare/full(new_human), WEAR_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full(new_human), WEAR_L_STORE) @@ -695,7 +695,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/night/m56_goggles/no_nightvision(new_human), WEAR_EYES) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/cryo(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/solardevils/foxtrot(new_human), WEAR_L_EAR) /datum/equipment_preset/uscm/smartgunner_equipped/random name = "USCM Squad Smartgunner (Equipped Random)" @@ -731,7 +731,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/holster(new_human), WEAR_ACCESSORY) spawn_marine_sidearm(new_human) - 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/clothing/suit/marine/smartgunner(new_human), WEAR_JACKET) 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/storage/pouch/flare/full(new_human), WEAR_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full(new_human), WEAR_L_STORE) @@ -773,8 +773,8 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/engineer(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine(new_human), WEAR_BACK) 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/device/radio/headset/almayer/marine/cryo/engi(new_human), WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/medium(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/solardevils/foxtrot(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/marine(new_human), WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/engineerpack(new_human), WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/device/binoculars/range(new_human), WEAR_IN_JACKET) new_human.equip_to_slot_or_del(new /obj/item/tool/shovel/etool/folded(new_human), WEAR_IN_BACK) @@ -819,8 +819,8 @@ /datum/equipment_preset/uscm/medic_equipped/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/medic(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/medic(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/cryo/med(new_human), WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/medium(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/solardevils/foxtrot(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/marine(new_human), WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine(new_human), WEAR_BACK) if(prob(50)) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(new_human), WEAR_FACE) @@ -867,8 +867,8 @@ spawn_marine_backpack(new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/medic(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/medic(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/cryo/med(new_human), WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/medium(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/solardevils/foxtrot(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/marine(new_human), WEAR_JACKET) spawn_marine_fluff_items(new_human) new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular(new_human), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/adv(new_human), WEAR_IN_BACK) @@ -920,7 +920,7 @@ new_human.equip_to_slot_or_del(new /obj/item/attachable/magnetic_harness(new_human), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/spec_kit, WEAR_R_HAND) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/cryo(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/solardevils/foxtrot(new_human), WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/magazine/large/pmc_m39(new_human), WEAR_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/flare/full(new_human), WEAR_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full(new_human), WEAR_L_STORE) @@ -986,8 +986,8 @@ 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/storage/belt/gun/m4a3/vp78(new_human), WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/rto(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/cryo/tl(new_human), WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/medium/rto(src), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/solardevils/foxtrot(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/marine/rto(src), WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/yellow(src), WEAR_HANDS) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/satchel/rto(new_human), WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large(new_human), WEAR_R_STORE) @@ -1004,7 +1004,7 @@ spawn_marine_armor(new_human) new_human.equip_to_slot_or_del(new /obj/item/device/binoculars/range(new_human), WEAR_IN_JACKET) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/rto(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/cryo(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/solardevils/foxtrot(new_human), WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/flare/full(new_human), WEAR_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full(new_human), WEAR_L_STORE) @@ -1016,462 +1016,3 @@ new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/m41aMK1(new_human), WEAR_J_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/belt/marine/m41amk1(new_human), WEAR_WAIST) spawn_marine_fluff_items(new_human) - - - -//############ Marine Raiders ############# -//Operator -/datum/equipment_preset/uscm/marsoc - name = "Marine Raider (!DEATHSQUAD!)" - flags = EQUIPMENT_PRESET_EXTRA - assignment = "Marine Raider" - rank = JOB_MARINE_RAIDER - role_comm_title = "Op." - languages = list(LANGUAGE_ENGLISH, LANGUAGE_TSL) - skills = /datum/skills/commando/deathsquad - auto_squad_name = SQUAD_SOF - ert_squad = TRUE - paygrades = list(PAY_SHORT_ME6 = JOB_PLAYTIME_TIER_0, PAY_SHORT_ME7 = JOB_PLAYTIME_TIER_3) - - minimap_icon = "private" - -/datum/equipment_preset/uscm/marsoc/load_status(mob/living/carbon/human/new_human) - new_human.nutrition = NUTRITION_NORMAL - -/datum/equipment_preset/uscm/marsoc/New() - . = ..() - access = get_access(ACCESS_LIST_GLOBAL) - -/datum/equipment_preset/uscm/marsoc/load_gear(mob/living/carbon/human/new_human) - //back - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/marsoc, WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/super, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/super, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/super, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/phosphorus, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/phosphorus, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/phosphorus, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/device/motiondetector, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/health/ceramic_plate, WEAR_IN_BACK) - //face - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/sof, WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc/marsoc, WEAR_FACE) - //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/ammo_magazine/handful/shotgun/buckshot, WEAR_IN_HELMET) - //uniform - var/obj/item/clothing/under/marine/veteran/marsoc/M = new() - var/obj/item/clothing/accessory/storage/black_vest/W = new() - M.attach_accessory(new_human, W) - new_human.equip_to_slot_or_del(M, WEAR_BODY) - for(var/i in 1 to W.hold.storage_slots) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun/buckshot, WEAR_IN_ACCESSORY) - //jacket - var/obj/item/clothing/suit/storage/marine/sof/armor = new() - new_human.equip_to_slot_or_del(armor, WEAR_JACKET) - for(var/i in 1 to armor.storage_slots) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/xm40/heap, WEAR_IN_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/m41a/elite/xm40, WEAR_J_STORE) - //waist - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/combat/marsoc, WEAR_WAIST) - //limbs - 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/clothing/gloves/marine, WEAR_HANDS) - //pockets - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/medical/socmed/full, WEAR_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/tools/tactical/full, WEAR_R_STORE) - -//Covert Raiders -/datum/equipment_preset/uscm/marsoc/covert - name = "Marine Raider (!DEATHSQUAD! Covert)" - uses_special_name = TRUE -/datum/equipment_preset/uscm/marsoc/covert/load_name(mob/living/carbon/human/new_human, randomise) - new_human.gender = MALE - new_human.change_real_name(new_human, "[pick(GLOB.nato_phonetic_alphabet)]") - new_human.age = rand(20,30) - -/datum/equipment_preset/uscm/marsoc/covert/load_rank(mob/living/carbon/human/new_human) - return PAY_SHORT_CDNM - -//Team Leader -/datum/equipment_preset/uscm/marsoc/sl - name = "Marine Raider Team Leader (!DEATHSQUAD!)" - assignment = JOB_MARINE_RAIDER_SL - rank = JOB_MARINE_RAIDER_SL - role_comm_title = "TL." - paygrades = list(PAY_SHORT_MO1 = JOB_PLAYTIME_TIER_0, PAY_SHORT_MO2 = JOB_PLAYTIME_TIER_3) - skills = /datum/skills/commando/deathsquad/leader - - minimap_icon = "leader" - 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) - - -//Codenamed Team Leader -/datum/equipment_preset/uscm/marsoc/sl/covert - name = "Marine Raider Team Leader (!DEATHSQUAD! Covert)" - uses_special_name = TRUE -/datum/equipment_preset/uscm/marsoc/sl/covert/load_name(mob/living/carbon/human/new_human, randomise) - new_human.gender = MALE - new_human.change_real_name(new_human, "[pick(GLOB.nato_phonetic_alphabet)]") - new_human.age = rand(20,30) - -/datum/equipment_preset/uscm/marsoc/sl/covert/load_rank(mob/living/carbon/human/new_human) - return PAY_SHORT_CDNM - -//Officer -/datum/equipment_preset/uscm/marsoc/cmd - name = "Marine Raider Officer (!DEATHSQUAD!)" - assignment = JOB_MARINE_RAIDER_CMD - rank = JOB_MARINE_RAIDER_CMD - role_comm_title = "CMD." - paygrades = list(PAY_SHORT_MO3 = JOB_PLAYTIME_TIER_0, PAY_SHORT_MO4 = JOB_PLAYTIME_TIER_3) - skills = /datum/skills/commando/deathsquad/officer - 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/marsoc/low_threat - name = "Marine Raider" - -/datum/equipment_preset/uscm/marsoc/low_threat/load_gear(mob/living/carbon/human/new_human) - //back - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/marsoc, WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/phosphorus, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/phosphorus, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/phosphorus, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/device/motiondetector, WEAR_IN_BACK) - //face - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/sof, WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc/marsoc, WEAR_FACE) - //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/ammo_magazine/handful/shotgun/buckshot, WEAR_IN_HELMET) - //uniform - var/obj/item/clothing/under/marine/veteran/marsoc/uniform = new() - var/obj/item/clothing/accessory/storage/black_vest/accessory = new() - uniform.attach_accessory(new_human, accessory) - new_human.equip_to_slot_or_del(uniform, WEAR_BODY) - for(var/i in 1 to accessory.hold.storage_slots) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun/buckshot, WEAR_IN_ACCESSORY) - //jacket - var/obj/item/clothing/suit/storage/marine/sof/armor = new() - new_human.equip_to_slot_or_del(armor, WEAR_JACKET) - for(var/i in 1 to armor.storage_slots) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/xm40, WEAR_IN_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/m41a/elite/xm40/ap, WEAR_J_STORE) - //waist - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/combat/marsoc, WEAR_WAIST) - //limbs - 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/clothing/gloves/marine, WEAR_HANDS) - //pockets - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/medical/socmed/not_op, WEAR_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/tools/tactical/full, WEAR_R_STORE) - -/datum/equipment_preset/uscm/marsoc/low_threat/sl - name = "Marine Raider Team Leader" - assignment = JOB_MARINE_RAIDER_SL - rank = JOB_MARINE_RAIDER_SL - role_comm_title = "TL." - paygrades = list(PAY_SHORT_MO1 = JOB_PLAYTIME_TIER_0, PAY_SHORT_MO2 = JOB_PLAYTIME_TIER_3) - skills = /datum/skills/commando/deathsquad/leader - - minimap_icon = "leader" - 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) - -//############ Solar Devils (PvE Marines) ############# -//## Rifleman ##// -/datum/equipment_preset/uscm/rifleman_pve - name = "USCM Solar Devils Rifleman" - flags = EQUIPMENT_PRESET_EXTRA|EQUIPMENT_PRESET_MARINE - - access = list(ACCESS_MARINE_PREP) - assignment = JOB_SQUAD_MARINE - rank = JOB_SQUAD_MARINE - paygrades = list(PAY_SHORT_ME1 = JOB_PLAYTIME_TIER_0, PAY_SHORT_ME2 = JOB_PLAYTIME_TIER_1, PAY_SHORT_ME3 = JOB_PLAYTIME_TIER_3) - role_comm_title = "RFN" - skills = /datum/skills/rifleman_pve - auto_squad_name = SQUAD_SOLAR - - minimap_icon = "private" - dress_under = list(/obj/item/clothing/under/marine/dress/blues) - dress_over = list(/obj/item/clothing/suit/storage/jacket/marine/dress/blues) - -/datum/equipment_preset/uscm/rifleman_pve/load_status(mob/living/carbon/human/new_human) - new_human.nutrition = NUTRITION_MAX - -/datum/equipment_preset/uscm/rifleman_pve/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/cryo(new_human), WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/tool/screwdriver/tactical(new_human), WEAR_R_EAR) - - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/medium(new_human), 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/stack/medical/bruise_pack(new_human), WEAR_IN_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/stack/medical/splint(new_human), WEAR_IN_JACKET) - - new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/webbing/five_slots(new_human), WEAR_ACCESSORY) - - new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar/tactical(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/tool/wirecutters/tactical(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/tool/wrench(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/device/multitool(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/tool/weldingtool/largetank(new_human), WEAR_IN_ACCESSORY) - - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/satchel/intel/chestrig(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/flare/full(new_human), WEAR_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full(new_human), WEAR_L_STORE) - 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/clothing/shoes/marine/knife(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/storage/toolkit/full(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/box/packet/high_explosive(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/box/packet/incendiary(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/device/motiondetector(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/stack/sheet/metal/large_stack(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/stack/sheet/plasteel/medium_stack(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/devils(new_human), WEAR_IN_BACK) - - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/m41aMK1(new_human), WEAR_J_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/marine(new_human), WEAR_WAIST) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m41aMK1(new_human.back), WEAR_IN_BELT) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m41aMK1(new_human.back), WEAR_IN_BELT) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m41aMK1(new_human.back), WEAR_IN_BELT) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m41aMK1/ap(new_human.back), WEAR_IN_BELT) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m41aMK1/ap(new_human.back), WEAR_IN_BELT) - spawn_marine_fluff_items(new_human) - -//## Corpsman ##// -/datum/equipment_preset/uscm/medic_pve - name = "USCM Solar Devils Platoon Corpsman" - flags = EQUIPMENT_PRESET_EXTRA|EQUIPMENT_PRESET_MARINE - - access = list(ACCESS_MARINE_PREP, ACCESS_MARINE_MEDPREP, ACCESS_MARINE_MEDBAY) - assignment = JOB_PLT_MED - rank = JOB_SQUAD_MEDIC - paygrades = list(PAY_SHORT_ME2 = JOB_PLAYTIME_TIER_0, PAY_SHORT_ME3 = JOB_PLAYTIME_TIER_1, PAY_SHORT_ME4 = JOB_PLAYTIME_TIER_3) - role_comm_title = "HM" - skills = /datum/skills/combat_medic_pve - auto_squad_name = SQUAD_SOLAR - - minimap_icon = "medic" - - utility_under = list(/obj/item/clothing/under/marine/medic) - dress_under = list(/obj/item/clothing/under/marine/dress/blues) - dress_over = list(/obj/item/clothing/suit/storage/jacket/marine/dress/blues) - -/datum/equipment_preset/uscm/medic_pve/load_status(mob/living/carbon/human/new_human) - new_human.nutrition = NUTRITION_NORMAL - -/datum/equipment_preset/uscm/medic_pve/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/medic(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/cryo/med(new_human), WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/tool/screwdriver/tactical(new_human), WEAR_R_EAR) - - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/medium(new_human), 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/stack/medical/bruise_pack(new_human), WEAR_IN_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/stack/medical/splint(new_human), WEAR_IN_JACKET) - - new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/webbing/five_slots(new_human), WEAR_ACCESSORY) - - new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar/tactical(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/tool/wirecutters/tactical(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/tool/wrench(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/device/multitool(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/tool/weldingtool/largetank(new_human), WEAR_IN_ACCESSORY) - - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/satchel/intel/chestrig(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/flare/full(new_human), WEAR_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/magazine/large(new_human), WEAR_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m41aMK1(new_human.back), WEAR_IN_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m41aMK1(new_human.back), WEAR_IN_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m41aMK1/ap(new_human.back), WEAR_IN_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m41aMK1/ap(new_human.back), WEAR_IN_L_STORE) - 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/clothing/shoes/marine/knife(new_human), WEAR_FEET) - - new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular(new_human), WEAR_IN_BACK) - 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/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/tool/surgery/synthgraft, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/device/defibrillator(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/clothing/accessory/patch/devils(new_human), WEAR_IN_BACK) - - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/m41aMK1(new_human), WEAR_J_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/medical/lifesaver/full(new_human), WEAR_WAIST) - spawn_marine_fluff_items(new_human) - -//## Smartgunner ##// -/datum/equipment_preset/uscm/sg_pve - name = "USCM Solar Devils Smartgunner" - flags = EQUIPMENT_PRESET_EXTRA|EQUIPMENT_PRESET_MARINE - - access = list(ACCESS_MARINE_PREP, ACCESS_MARINE_SMARTPREP) - assignment = JOB_SQUAD_SMARTGUN - rank = JOB_SQUAD_SMARTGUN - paygrades = list(PAY_SHORT_ME3 = JOB_PLAYTIME_TIER_0, PAY_SHORT_ME4 = JOB_PLAYTIME_TIER_1, PAY_SHORT_ME5 = JOB_PLAYTIME_TIER_3) - role_comm_title = "SG" - skills = /datum/skills/smartgunner_pve - auto_squad_name = SQUAD_SOLAR - - minimap_icon = "smartgunner" - dress_under = list(/obj/item/clothing/under/marine/dress/blues) - dress_over = list(/obj/item/clothing/suit/storage/jacket/marine/dress/blues) - -/datum/equipment_preset/uscm/sg_pve/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/cryo(new_human), WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/tool/screwdriver/tactical(new_human), WEAR_R_EAR) - - 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/clothing/accessory/patch/devils(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/accessory/storage/webbing/five_slots(new_human), WEAR_ACCESSORY) - - new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar/tactical(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/tool/wirecutters/tactical(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/tool/wrench(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/device/multitool(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/tool/weldingtool/simple(new_human), WEAR_IN_ACCESSORY) - - 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/storage/belt/gun/smartgunner/full(new_human), WEAR_WAIST) - 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/clothing/gloves/marine(new_human), WEAR_HANDS) - 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/pouch/firstaid/full(new_human), WEAR_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full/alternate(new_human), WEAR_R_STORE) - spawn_marine_fluff_items(new_human) - -/datum/equipment_preset/uscm/sg_pve/load_status(mob/living/carbon/human/new_human) - -//## Team Leader ##// -/datum/equipment_preset/uscm/tl_pve - name = "USCM Solar Devils Team Leader" - flags = EQUIPMENT_PRESET_EXTRA|EQUIPMENT_PRESET_MARINE - - access = list(ACCESS_MARINE_PREP, ACCESS_MARINE_TL_PREP, ACCESS_MARINE_DROPSHIP) - assignment = JOB_SQUAD_TEAM_LEADER - rank = JOB_SQUAD_TEAM_LEADER - paygrades = list(PAY_SHORT_ME3 = JOB_PLAYTIME_TIER_0, PAY_SHORT_ME4 = JOB_PLAYTIME_TIER_1, PAY_SHORT_ME5 = JOB_PLAYTIME_TIER_3) - role_comm_title = "FTL" - skills = /datum/skills/tl_pve - auto_squad_name = SQUAD_SOLAR - - minimap_icon = "tl" - -/datum/equipment_preset/uscm/tl_pve/load_status(mob/living/carbon/human/new_human) - new_human.nutrition = NUTRITION_NORMAL - -/datum/equipment_preset/uscm/tl_pve/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/leader(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/cryo/tl(new_human), WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/tool/screwdriver/tactical(new_human), WEAR_R_EAR) - - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/medium(new_human), 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/stack/medical/bruise_pack(new_human), WEAR_IN_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/stack/medical/splint(new_human), WEAR_IN_JACKET) - - new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/webbing/five_slots(new_human), WEAR_ACCESSORY) - - new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar/tactical(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/tool/wirecutters/tactical(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/tool/wrench(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/device/multitool(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/tool/weldingtool/largetank(new_human), WEAR_IN_ACCESSORY) - - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/satchel/rto(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/flare/full(new_human), WEAR_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full(new_human), WEAR_L_STORE) - 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/clothing/shoes/marine/knife(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/storage/toolkit/full(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/box/packet/high_explosive(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/device/motiondetector(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/defenses/handheld/sentry(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/devils(new_human), WEAR_IN_BACK) - - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/m41aMK1(new_human), WEAR_J_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/marine(new_human), WEAR_WAIST) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m41aMK1(new_human.back), WEAR_IN_BELT) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m41aMK1(new_human.back), WEAR_IN_BELT) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m41aMK1(new_human.back), WEAR_IN_BELT) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m41aMK1/ap(new_human.back), WEAR_IN_BELT) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m41aMK1/ap(new_human.back), WEAR_IN_BELT) - spawn_marine_fluff_items(new_human) - -//## Squad Leader ##// -/datum/equipment_preset/uscm/sl_pve - name = "USCM Solar Devils Platoon Leader" - flags = EQUIPMENT_PRESET_EXTRA|EQUIPMENT_PRESET_MARINE - - access = list(ACCESS_MARINE_PREP, ACCESS_MARINE_LEADER, ACCESS_MARINE_DROPSHIP) - assignment = JOB_PLT_SL - rank = JOB_SQUAD_LEADER - paygrades = list(PAY_SHORT_ME5 = JOB_PLAYTIME_TIER_0, PAY_SHORT_ME6 = JOB_PLAYTIME_TIER_1, PAY_SHORT_ME7 = JOB_PLAYTIME_TIER_3) - role_comm_title = "SL" - skills = /datum/skills/sl_pve - auto_squad_name = SQUAD_SOLAR - - minimap_icon = "sl" - -/datum/equipment_preset/uscm/sl_pve/load_status(mob/living/carbon/human/new_human) - new_human.nutrition = NUTRITION_NORMAL - -/datum/equipment_preset/uscm/sl_pve/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/leader(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/cryo/tl(new_human), WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/tool/screwdriver/tactical(new_human), WEAR_R_EAR) - - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/medium/leader(new_human), 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/stack/medical/bruise_pack(new_human), WEAR_IN_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/stack/medical/splint(new_human), WEAR_IN_JACKET) - - new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/webbing/five_slots(new_human), WEAR_ACCESSORY) - - new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar/tactical(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/tool/wirecutters/tactical(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/tool/wrench(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/device/multitool(new_human), WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/tool/weldingtool/largetank(new_human), WEAR_IN_ACCESSORY) - - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/satchel/intel/chestrig(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/flare/full(new_human), WEAR_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full(new_human), WEAR_L_STORE) - 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/clothing/shoes/marine/knife(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/storage/toolkit/full(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular(new_human), WEAR_IN_BACK) - 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/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/motiondetector(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/stack/sheet/metal/large_stack(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/devils(new_human), WEAR_IN_BACK) - - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/m41aMK1(new_human), WEAR_J_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/marine(new_human), WEAR_WAIST) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m41aMK1(new_human.back), WEAR_IN_BELT) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m41aMK1(new_human.back), WEAR_IN_BELT) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m41aMK1(new_human.back), WEAR_IN_BELT) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m41aMK1/ap(new_human.back), WEAR_IN_BELT) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m41aMK1/ap(new_human.back), WEAR_IN_BELT) - spawn_marine_fluff_items(new_human) diff --git a/code/modules/gear_presets/uscm_ship.dm b/code/modules/gear_presets/uscm_ship.dm index 6afe5e9dd6..ff05eef7fc 100644 --- a/code/modules/gear_presets/uscm_ship.dm +++ b/code/modules/gear_presets/uscm_ship.dm @@ -857,7 +857,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest/pilot(new_human), WEAR_JACKET) new_human.equip_to_slot_or_del(new back_item(new_human), WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large(new_human), WEAR_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/pilot(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/upp/marinepilot(new_human), WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(new_human), WEAR_EYES) //*****************************************************************************************************/ @@ -907,7 +907,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest/pilot(new_human), WEAR_JACKET) new_human.equip_to_slot_or_del(new back_item(new_human), WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large(new_human), WEAR_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/pilot(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/upp/marinepilot(new_human), WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(new_human), WEAR_EYES) //*****************************************************************************************************/ diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 6b27397802..4a3eeb66a0 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -490,6 +490,23 @@ Applied by gun suicide and high impact bullet executions, removed by rejuvenate, for(var/i in HEAD_GARB_LAYER to (HEAD_GARB_LAYER + MAX_HEAD_GARB_ITEMS - 1)) apply_overlay(i) + else if(istype(head, /obj/item/clothing/head/helmet/upp)) + var/obj/item/clothing/head/helmet/upp/upp_helmet = head + var/num_helmet_overlays = 0 + for(var/i in 1 to length(upp_helmet.helmet_overlays)) + // Add small numbers to the head garb layer so we don't have a layer conflict + // the i-1 bit is to make it 0-based, not 1-based like BYOND wants + overlays_standing[HEAD_GARB_LAYER + (i-1)] = image('icons/mob/humans/onmob/helmet_garb.dmi', src, upp_helmet.helmet_overlays[i]) + num_helmet_overlays++ + + // null out the rest of the space allocated for helmet overlays + // God I hate 1-based indexing + for(var/i in num_helmet_overlays+1 to MAX_HEAD_GARB_ITEMS) + overlays_standing[HEAD_GARB_LAYER + (i-1)] = null + + for(var/i in HEAD_GARB_LAYER to (HEAD_GARB_LAYER + MAX_HEAD_GARB_ITEMS - 1)) + apply_overlay(i) + #undef MAX_HEAD_GARB_ITEMS @@ -551,6 +568,34 @@ Applied by gun suicide and high impact bullet executions, removed by rejuvenate, overlays_standing[SUIT_GARB_LAYER] = IMG apply_overlay(SUIT_GARB_LAYER) + if(istype(wear_suit, /obj/item/clothing/suit/marine)) + var/obj/item/clothing/suit/marine/marine_armor = wear_suit + if(marine_armor.flags_marine_armor & ARMOR_SQUAD_OVERLAY) + if(assigned_squad && assigned_squad.equipment_color && assigned_squad.use_stripe_overlay) + var/leader = assigned_squad.squad_leader + var/image/squad_overlay = image(marine_armor.squad_overlay_icon, icon_state = "std-armor") + if(leader == src) + squad_overlay = image(marine_armor.squad_overlay_icon, icon_state = "sql-armor") + squad_overlay.layer = -SUIT_SQUAD_LAYER + squad_overlay.alpha = assigned_squad.armor_alpha + squad_overlay.color = assigned_squad.equipment_color + overlays_standing[SUIT_SQUAD_LAYER] = squad_overlay + apply_overlay(SUIT_SQUAD_LAYER) + + if(length(marine_armor.armor_overlays)) + var/image/K + var/image/IMG + for(var/i in marine_armor.armor_overlays) + K = marine_armor.armor_overlays[i] + if(K) + if(!IMG) + IMG = image(K.icon,src,K.icon_state, "layer"= -SUIT_GARB_LAYER) + else + IMG.overlays += image(K.icon,src,K.icon_state, "layer"= -SUIT_GARB_LAYER) + if(IMG) + overlays_standing[SUIT_GARB_LAYER] = IMG + apply_overlay(SUIT_GARB_LAYER) + update_tail_showing() else update_tail_showing() diff --git a/code/modules/projectiles/gun_helpers.dm b/code/modules/projectiles/gun_helpers.dm index 46f7f68b6f..0ef3023e82 100644 --- a/code/modules/projectiles/gun_helpers.dm +++ b/code/modules/projectiles/gun_helpers.dm @@ -187,7 +187,7 @@ DEFINES in setup.dm, referenced here. /obj/item/weapon/gun/proc/retrieval_check(mob/living/carbon/human/user, retrieval_slot) if(retrieval_slot == WEAR_J_STORE) var/obj/item/suit = user.wear_suit - if(!istype(suit, /obj/item/clothing/suit/storage/marine)) + if(!(istype(suit, /obj/item/clothing/suit/marine) || istype(suit, /obj/item/clothing/suit/storage/marine))) return FALSE return TRUE diff --git a/code/modules/projectiles/guns/smartgun.dm b/code/modules/projectiles/guns/smartgun.dm index ef36f9fd32..5e9ee8b3a5 100644 --- a/code/modules/projectiles/guns/smartgun.dm +++ b/code/modules/projectiles/guns/smartgun.dm @@ -328,6 +328,10 @@ to_chat(H, SPAN_WARNING("You can't fire \the [src] with the feed cover open! (alt-click to close)")) balloon_alert(user, "cannot fire; feed cover open") return FALSE + if(iff_enabled) + if(!H.glasses || !(H.glasses.flags_inventory & SMARTGUN_OPTIC)) + balloon_alert(user, "m56 headset required for iff tracking") + return FALSE /obj/item/weapon/gun/smartgun/unique_action(mob/user) if(isobserver(usr) || isxeno(usr)) diff --git a/code/modules/vehicles/interior/interactable/vendors.dm b/code/modules/vehicles/interior/interactable/vendors.dm index 71f4e9e0e2..6bd4f6dfcd 100644 --- a/code/modules/vehicles/interior/interactable/vendors.dm +++ b/code/modules/vehicles/interior/interactable/vendors.dm @@ -408,13 +408,10 @@ list("ARMOR", -1, null, null), list("M10 Pattern Marine Helmet", 0, /obj/item/clothing/head/helmet/marine, VENDOR_ITEM_REGULAR), - list("M3 Pattern Carrier Marine Armor", 0, /obj/item/clothing/suit/storage/marine/medium/carrier, VENDOR_ITEM_REGULAR), - list("M3 Pattern Padded Marine Armor", 0, /obj/item/clothing/suit/storage/marine/medium/padded, VENDOR_ITEM_REGULAR), - list("M3 Pattern Padless Marine Armor", 0, /obj/item/clothing/suit/storage/marine/medium/padless, VENDOR_ITEM_REGULAR), - list("M3 Pattern Ridged Marine Armor", 0, /obj/item/clothing/suit/storage/marine/medium/padless_lines, VENDOR_ITEM_REGULAR), - list("M3 Pattern Skull Marine Armor", 0, /obj/item/clothing/suit/storage/marine/medium/skull, VENDOR_ITEM_REGULAR), - list("M3-EOD Pattern Heavy Armor", 0, /obj/item/clothing/suit/storage/marine/heavy, VENDOR_ITEM_REGULAR), - list("M3-L Pattern Light Armor", 0, /obj/item/clothing/suit/storage/marine/light, VENDOR_ITEM_REGULAR), + list("M3 Pattern Marine Armor", 0, /obj/item/clothing/suit/marine, VENDOR_ITEM_REGULAR), + list("M3 Pattern Ridged Marine Armor", 0, /obj/item/clothing/suit/marine/lines, VENDOR_ITEM_REGULAR), + list("M3-EOD Pattern Heavy Armor", 0, /obj/item/clothing/suit/marine/heavy, VENDOR_ITEM_REGULAR), + list("M3-L Pattern Light Armor", 0, /obj/item/clothing/suit/marine/light, VENDOR_ITEM_REGULAR), list("MISCELLANEOUS", -1, null, null), list("Box Of MREs", 0, /obj/item/ammo_box/magazine/misc/mre, VENDOR_ITEM_REGULAR), diff --git a/icons/mob/humans/onmob/back.dmi b/icons/mob/humans/onmob/back.dmi index 833dffbcad..dedd3b4427 100644 Binary files a/icons/mob/humans/onmob/back.dmi and b/icons/mob/humans/onmob/back.dmi differ diff --git a/icons/mob/humans/onmob/belt.dmi b/icons/mob/humans/onmob/belt.dmi index 5fc460a51e..bef71ea03a 100644 Binary files a/icons/mob/humans/onmob/belt.dmi and b/icons/mob/humans/onmob/belt.dmi differ diff --git a/icons/mob/humans/onmob/ears.dmi b/icons/mob/humans/onmob/ears.dmi index 3482dcf6fe..348415b6dd 100644 Binary files a/icons/mob/humans/onmob/ears.dmi and b/icons/mob/humans/onmob/ears.dmi differ diff --git a/icons/mob/humans/onmob/eyes.dmi b/icons/mob/humans/onmob/eyes.dmi index 4450c3f393..b3899b3778 100644 Binary files a/icons/mob/humans/onmob/eyes.dmi and b/icons/mob/humans/onmob/eyes.dmi differ diff --git a/icons/mob/humans/onmob/head_1.dmi b/icons/mob/humans/onmob/head_1.dmi index 3aa062cb22..8816ce8361 100644 Binary files a/icons/mob/humans/onmob/head_1.dmi and b/icons/mob/humans/onmob/head_1.dmi differ diff --git a/icons/mob/humans/onmob/helmet_garb.dmi b/icons/mob/humans/onmob/helmet_garb.dmi index 6c97171b72..a23b791a5c 100644 Binary files a/icons/mob/humans/onmob/helmet_garb.dmi and b/icons/mob/humans/onmob/helmet_garb.dmi differ diff --git a/icons/mob/humans/onmob/suit_1.dmi b/icons/mob/humans/onmob/suit_1.dmi index 5902019e19..88ee2749fd 100644 Binary files a/icons/mob/humans/onmob/suit_1.dmi and b/icons/mob/humans/onmob/suit_1.dmi differ diff --git a/icons/mob/humans/onmob/ties.dmi b/icons/mob/humans/onmob/ties.dmi index d11aa7ea1b..feaad85a2f 100644 Binary files a/icons/mob/humans/onmob/ties.dmi and b/icons/mob/humans/onmob/ties.dmi differ diff --git a/icons/obj/items/clothing/cm_hats.dmi b/icons/obj/items/clothing/cm_hats.dmi index 237bfb1839..60a1b8246b 100644 Binary files a/icons/obj/items/clothing/cm_hats.dmi and b/icons/obj/items/clothing/cm_hats.dmi differ diff --git a/icons/obj/items/clothing/cm_suits.dmi b/icons/obj/items/clothing/cm_suits.dmi index a84f93289c..c8f73b624e 100644 Binary files a/icons/obj/items/clothing/cm_suits.dmi and b/icons/obj/items/clothing/cm_suits.dmi differ diff --git a/icons/obj/items/clothing/glasses.dmi b/icons/obj/items/clothing/glasses.dmi index 90b0cdd5e7..2fd0ebd610 100644 Binary files a/icons/obj/items/clothing/glasses.dmi and b/icons/obj/items/clothing/glasses.dmi differ diff --git a/icons/obj/items/clothing/ties.dmi b/icons/obj/items/clothing/ties.dmi index ec3fe328db..da5fcf7167 100644 Binary files a/icons/obj/items/clothing/ties.dmi and b/icons/obj/items/clothing/ties.dmi differ diff --git a/icons/obj/items/clothing/ties_overlay.dmi b/icons/obj/items/clothing/ties_overlay.dmi index ae8e4c5584..a43352caa6 100644 Binary files a/icons/obj/items/clothing/ties_overlay.dmi and b/icons/obj/items/clothing/ties_overlay.dmi differ diff --git a/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm b/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm index b6a8659d07..6b0f28bc5f 100644 --- a/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm +++ b/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm @@ -15448,10 +15448,6 @@ /obj/structure/machinery/light, /turf/open/floor/prison/floor_plate, /area/lv522/atmos/way_in_command_centre) -"hzv" = ( -/obj/item/clothing/head/helmet/marine/pilot, -/turf/open/floor/corsat/squares, -/area/lv522/oob) "hzA" = ( /obj/item/ammo_magazine/rifle/heap{ current_rounds = 0 @@ -88095,7 +88091,7 @@ tiQ ulg oQG ufl -hzv +eqG eqG uQJ rDm diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm index 7e1b55b8ed..c8ad686d19 100644 --- a/maps/map_files/USS_Almayer/USS_Almayer.dmm +++ b/maps/map_files/USS_Almayer/USS_Almayer.dmm @@ -13751,10 +13751,6 @@ pixel_y = -7 }, /obj/item/tool/crowbar, -/obj/item/clothing/head/helmet/marine/pilot{ - pixel_x = -7; - pixel_y = 13 - }, /obj/item/device/camera{ pixel_x = 7 }, @@ -22693,7 +22689,6 @@ /area/almayer/hallways/lower/starboard_midship_hallway) "ikx" = ( /obj/structure/surface/table/almayer, -/obj/item/clothing/head/helmet/marine/pilot, /turf/open/floor/almayer/redfull, /area/almayer/living/offices/flight) "ikC" = ( diff --git a/maps/map_files/chapaev/chapaev.dmm b/maps/map_files/chapaev/chapaev.dmm index 091e612423..441443772f 100644 --- a/maps/map_files/chapaev/chapaev.dmm +++ b/maps/map_files/chapaev/chapaev.dmm @@ -729,7 +729,6 @@ }, /obj/item/clothing/shoes/marine/upp, /obj/item/clothing/under/marine/veteran/UPP, -/obj/item/device/radio/headset/distress/UPP, /obj/item/prop/magazine/book{ desc = "It's not a mandatory reading material in UPP, but it's still encouraged to memorize certain quotes from this book."; name = "Quotations from Chairman Mao Tse-tung"; @@ -737,6 +736,7 @@ pixel_x = -2; icon_state = "littleredbook" }, +/obj/item/device/radio/headset/almayer/marine/solardevils/upp, /turf/open/floor/strata/multi_tiles, /area/golden_arrow/cryo_cells) "fL" = ( @@ -1139,7 +1139,7 @@ }, /obj/item/clothing/shoes/marine/upp, /obj/item/clothing/under/marine/veteran/UPP, -/obj/item/device/radio/headset/distress/UPP, +/obj/item/device/radio/headset/almayer/marine/solardevils/upp, /turf/open/floor/strata/multi_tiles, /area/golden_arrow/cryo_cells) "ju" = ( @@ -2514,10 +2514,10 @@ }, /obj/item/clothing/shoes/marine/upp, /obj/item/clothing/under/marine/veteran/UPP, -/obj/item/device/radio/headset/distress/UPP, /obj/structure/machinery/light/small{ dir = 8 }, +/obj/item/device/radio/headset/almayer/marine/solardevils/upp, /turf/open/floor/strata/multi_tiles, /area/golden_arrow/cryo_cells) "vt" = ( @@ -3048,13 +3048,13 @@ }, /obj/item/clothing/shoes/marine/upp, /obj/item/clothing/under/marine/veteran/UPP, -/obj/item/device/radio/headset/distress/UPP, /obj/item/weapon/butterfly, /obj/structure/closet/secure_closet/marine_personal{ has_cryo_gear = 0; job = "Platoon Corpsman"; pixel_x = -7 }, +/obj/item/device/radio/headset/almayer/marine/solardevils/upp, /turf/open/floor/strata/multi_tiles, /area/golden_arrow/cryo_cells) "zm" = ( @@ -3226,8 +3226,8 @@ }, /obj/item/clothing/shoes/marine/upp, /obj/item/clothing/under/marine/veteran/UPP, -/obj/item/device/radio/headset/distress/UPP, /obj/item/weapon/butterfly, +/obj/item/device/radio/headset/almayer/marine/solardevils/upp, /turf/open/floor/strata/multi_tiles, /area/golden_arrow/cryo_cells) "Bc" = ( @@ -3371,7 +3371,6 @@ }, /obj/item/clothing/shoes/marine/upp, /obj/item/clothing/under/marine/veteran/UPP, -/obj/item/device/radio/headset/distress/UPP, /obj/item/prop/magazine/book{ desc = "It's not a mandatory reading material in UPP, but it's still encouraged to memorize certain quotes from this book."; name = "Quotations from Chairman Mao Tse-tung"; @@ -3379,6 +3378,7 @@ pixel_x = -2; icon_state = "littleredbook" }, +/obj/item/device/radio/headset/almayer/marine/solardevils/upp, /turf/open/floor/strata/multi_tiles, /area/golden_arrow/cryo_cells) "Cv" = ( @@ -3463,7 +3463,7 @@ }, /obj/item/clothing/shoes/marine/upp, /obj/item/clothing/under/marine/veteran/UPP, -/obj/item/device/radio/headset/distress/UPP, +/obj/item/device/radio/headset/almayer/marine/solardevils/upp, /turf/open/floor/strata/multi_tiles, /area/golden_arrow/cryo_cells) "CV" = ( @@ -3671,7 +3671,7 @@ }, /obj/item/clothing/shoes/marine/upp, /obj/item/clothing/under/marine/veteran/UPP, -/obj/item/device/radio/headset/distress/UPP, +/obj/item/device/radio/headset/almayer/marine/solardevils/upp, /turf/open/floor/strata/multi_tiles, /area/golden_arrow/cryo_cells) "FG" = ( @@ -3799,7 +3799,7 @@ }, /obj/item/clothing/shoes/marine/upp, /obj/item/clothing/under/marine/veteran/UPP, -/obj/item/device/radio/headset/distress/UPP, +/obj/item/device/radio/headset/almayer/marine/solardevils/upp, /turf/open/floor/strata/multi_tiles, /area/golden_arrow/cryo_cells) "GZ" = ( @@ -3988,7 +3988,7 @@ /obj/item/clothing/accessory/patch/upp/naval, /obj/item/clothing/accessory/patch/upp, /obj/item/clothing/shoes/marine/upp, -/obj/item/device/radio/headset/distress/UPP, +/obj/item/device/radio/headset/almayer/marine/solardevils/upp, /turf/open/floor/corsat, /area/golden_arrow/cryo_cells) "Ja" = ( @@ -4749,11 +4749,11 @@ }, /obj/item/clothing/shoes/marine/upp, /obj/item/clothing/under/marine/veteran/UPP, -/obj/item/device/radio/headset/distress/UPP, /obj/item/weapon/butterfly, /obj/structure/machinery/light/small{ dir = 4 }, +/obj/item/device/radio/headset/almayer/marine/solardevils/upp, /turf/open/floor/strata/multi_tiles, /area/golden_arrow/cryo_cells) "Sf" = ( diff --git a/maps/map_files/derelict_almayer/derelict_almayer.dmm b/maps/map_files/derelict_almayer/derelict_almayer.dmm index 9f8d05280d..896bcf4a61 100644 --- a/maps/map_files/derelict_almayer/derelict_almayer.dmm +++ b/maps/map_files/derelict_almayer/derelict_almayer.dmm @@ -15460,7 +15460,6 @@ /area/almayer/squads/alpha) "fBT" = ( /obj/structure/surface/table/almayer, -/obj/item/clothing/head/helmet/marine/pilot, /turf/open/floor/almayer/redfull, /area/almayer/living/offices/flight) "fCl" = ( @@ -41088,10 +41087,6 @@ pixel_y = -7 }, /obj/item/tool/crowbar, -/obj/item/clothing/head/helmet/marine/pilot{ - pixel_x = -7; - pixel_y = 13 - }, /obj/item/device/camera{ pixel_x = 7 }, diff --git a/maps/map_files/rover/rover.dmm b/maps/map_files/rover/rover.dmm index da709e5cfa..aeda80272d 100644 --- a/maps/map_files/rover/rover.dmm +++ b/maps/map_files/rover/rover.dmm @@ -1196,16 +1196,16 @@ /turf/open/floor/almayer/dark_sterile, /area/golden_arrow/canteen) "mX" = ( -/obj/structure/machinery/light{ - dir = 4 - }, /obj/structure/closet/secure_closet/marine_personal{ has_cryo_gear = 0; - job = "Platoon Sergeant" + job = "Section Sergeant" + }, +/obj/structure/machinery/light{ + dir = 4 }, /obj/item/clothing/shoes/marine/jungle/knife, -/obj/item/device/radio/headset/almayer/sof/survivor_forecon, /obj/item/clothing/under/marine/standard, +/obj/item/device/radio/headset/almayer/marine/solardevils/forecon, /turf/open/floor/almayer/plate, /area/golden_arrow/dorms) "mZ" = ( @@ -1530,11 +1530,11 @@ "qI" = ( /obj/structure/closet/secure_closet/marine_personal{ has_cryo_gear = 0; - job = "Platoon Corpsman" + job = "Corpsman" }, /obj/item/clothing/shoes/marine/jungle/knife, -/obj/item/device/radio/headset/almayer/sof/survivor_forecon, /obj/item/clothing/under/marine/medic/standard, +/obj/item/device/radio/headset/almayer/marine/solardevils/forecon, /turf/open/floor/almayer/sterile_green, /area/golden_arrow/medical) "qN" = ( @@ -1650,8 +1650,8 @@ job = "Squad Sergeant" }, /obj/item/clothing/shoes/marine/jungle/knife, -/obj/item/device/radio/headset/almayer/sof/survivor_forecon, /obj/item/clothing/under/marine/standard, +/obj/item/device/radio/headset/almayer/marine/solardevils/forecon, /turf/open/floor/almayer/plate, /area/golden_arrow/dorms) "rL" = ( @@ -2221,8 +2221,8 @@ has_cryo_gear = 0 }, /obj/item/clothing/shoes/marine/jungle/knife, -/obj/item/device/radio/headset/almayer/sof/survivor_forecon, /obj/item/clothing/under/marine/standard, +/obj/item/device/radio/headset/almayer/marine/solardevils/forecon, /turf/open/floor/almayer/plate, /area/golden_arrow/dorms) "yP" = ( @@ -3180,8 +3180,8 @@ job = "Smartgunner" }, /obj/item/clothing/shoes/marine/jungle/knife, -/obj/item/device/radio/headset/almayer/sof/survivor_forecon, /obj/item/clothing/under/marine/standard, +/obj/item/device/radio/headset/almayer/marine/solardevils/forecon, /turf/open/floor/almayer/plate, /area/golden_arrow/dorms) "Mw" = ( @@ -3190,8 +3190,8 @@ job = "Radio Telephone Operator" }, /obj/item/clothing/shoes/marine/jungle/knife, -/obj/item/device/radio/headset/almayer/sof/survivor_forecon, /obj/item/clothing/under/marine/standard, +/obj/item/device/radio/headset/almayer/marine/solardevils/forecon, /turf/open/floor/almayer/plate, /area/golden_arrow/dorms) "My" = ( @@ -4221,8 +4221,8 @@ has_cryo_gear = 0 }, /obj/item/clothing/shoes/marine/jungle/knife, -/obj/item/device/radio/headset/almayer/sof/survivor_forecon, /obj/item/clothing/under/marine/standard, +/obj/item/device/radio/headset/almayer/marine/solardevils/forecon, /turf/open/floor/almayer/plate, /area/golden_arrow/dorms) "Zx" = (