diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index c798acd047..693acd61ef 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -611,6 +611,38 @@ /obj/item/storage/belt/marine/smartgunner/standard has_gamemode_skin = FALSE +/obj/item/storage/belt/marine/smartgunner/upp + name = "\improper Type 90 pattern machinegunner belt" + desc = "Recently adopted by UPP military, this belt allows machinegunners to carry more ammo boxes into battle. It also found use with SOF breachers using Type 23 shotguns." + icon_state = "upp_machinegun" + item_state = "upp_machinegun" + storage_slots = 7 + bypass_w_limit = list( + /obj/item/ammo_magazine/pkp, + ) + can_hold = list( + /obj/item/attachable/bayonet, + /obj/item/device/flashlight/flare, + /obj/item/ammo_magazine/pkp, + /obj/item/ammo_magazine/rifle, + /obj/item/ammo_magazine/smg, + /obj/item/ammo_magazine/pistol, + /obj/item/ammo_magazine/revolver, + /obj/item/ammo_magazine/sniper, + /obj/item/ammo_magazine/handful, + /obj/item/explosive/grenade, + /obj/item/explosive/mine, + /obj/item/reagent_container/food/snacks, + ) + + has_gamemode_skin = FALSE + item_state_slots = list( + WEAR_L_HAND = "upp_belt", + WEAR_R_HAND = "upp_belt") + +/obj/item/storage/belt/marine/smartgunner/upp/fill_preset_inventory() + return + /obj/item/storage/belt/marine/quackers name = "Mr. Quackers" desc = "What are we going to do today, Mr. Quackers?" @@ -1721,6 +1753,26 @@ new /obj/item/ammo_magazine/smartgun(src) new /obj/item/ammo_magazine/smartgun(src) +/obj/item/storage/belt/gun/smartgunner/upp + name = "\improper Type 92 pattern machinegunner sidearm rig" + desc = "Type 92 is an experimental ammo-carrying rig issued to UPP machinegunners which combines a sidearm holster with box-shaped pouches for limited storage." + icon_state = "upp_machinegun_pistol" + storage_slots = 7 + can_hold = list( + /obj/item/weapon/gun/pistol/t73, + /obj/item/ammo_magazine/pistol/t73, + /obj/item/ammo_magazine/pistol/t73_impact, + /obj/item/weapon/gun/pistol/np92, + /obj/item/ammo_magazine/pistol/np92, + /obj/item/weapon/gun/revolver/upp, + /obj/item/ammo_magazine/revolver/upp, + /obj/item/ammo_magazine/pkp, + ) + has_gamemode_skin = FALSE + item_state_slots = list( + WEAR_L_HAND = "upp_belt", + WEAR_R_HAND = "upp_belt") + /obj/item/storage/belt/gun/mortarbelt name="\improper M276 pattern mortar operator belt" desc="An M276 load-bearing rig configured to carry ammunition for the M402 mortar, along with a sidearm." diff --git a/code/modules/clothing/suits/marine_armor.dm b/code/modules/clothing/suits/marine_armor.dm index 7e27ddffa3..93160e68ff 100644 --- a/code/modules/clothing/suits/marine_armor.dm +++ b/code/modules/clothing/suits/marine_armor.dm @@ -404,9 +404,6 @@ . = ..() if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD] && name == "M56 combat harness") name = "M56 snow combat harness" - else - name = "M56 combat harness" - //select_gamemode_skin(type) /obj/item/clothing/suit/storage/marine/smartgunner/mob_can_equip(mob/equipping_mob, slot, disable_warning = FALSE) . = ..() @@ -445,6 +442,44 @@ /obj/item/clothing/suit/storage/marine/smartgunner/standard flags_atom = NO_SNOW_TYPE +/obj/item/clothing/suit/storage/marine/smartgunner/upp + name = "\improper UH7-I heavy plated harness" + desc = "An experimental set of heavy armor with additional harnesses designed to support QYJ-72-I smartmachinegun. Heavy plates along with harnesses make wearing backpacks extremely uncomfortable and borderline impossible." + icon_state = "upp_armor_heavy" + storage_slots = 1 + slowdown = SLOWDOWN_ARMOR_HEAVY + flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + flags_inventory = BLOCKSHARPOBJ|SMARTGUN_HARNESS|BLOCK_KNOCKDOWN + armor_melee = CLOTHING_ARMOR_MEDIUMHIGH + armor_bullet = CLOTHING_ARMOR_HIGHPLUS + armor_laser = CLOTHING_ARMOR_MEDIUMLOW + armor_energy = CLOTHING_ARMOR_MEDIUM + armor_bomb = CLOTHING_ARMOR_HIGH + armor_bio = CLOTHING_ARMOR_MEDIUM + armor_rad = CLOTHING_ARMOR_MEDIUMLOW + armor_internaldamage = CLOTHING_ARMOR_HIGHPLUS + uniform_restricted = list(/obj/item/clothing/under/marine/veteran/UPP, /obj/item/clothing/under/marine/veteran/UPP/medic, /obj/item/clothing/under/marine/veteran/UPP/engi) + 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/pkp, + /obj/item/storage/backpack/general_belt, + /obj/item/device/motiondetector, + /obj/item/device/walkman, + ) + + +/obj/item/clothing/suit/storage/marine/smartgunner/upp/Initialize() + . = ..() + pockets.bypass_w_limit = list( + /obj/item/ammo_magazine/minigun, + /obj/item/ammo_magazine/pkp, + ) + + /obj/item/clothing/suit/storage/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." diff --git a/code/modules/clothing/under/marine_uniform.dm b/code/modules/clothing/under/marine_uniform.dm index f4203356df..41c9d90ae8 100644 --- a/code/modules/clothing/under/marine_uniform.dm +++ b/code/modules/clothing/under/marine_uniform.dm @@ -527,7 +527,7 @@ min_cold_protection_temperature = ICE_PLANET_MIN_COLD_PROT has_sensor = UNIFORM_HAS_SENSORS sensor_faction = FACTION_UPP - suit_restricted = list(/obj/item/clothing/suit/storage/marine/faction/UPP, /obj/item/clothing/suit/gimmick/jason, /obj/item/clothing/suit/storage/snow_suit/soviet, /obj/item/clothing/suit/storage/snow_suit/survivor, /obj/item/clothing/suit/storage/webbing) + suit_restricted = list(/obj/item/clothing/suit/storage/marine/faction/UPP, /obj/item/clothing/suit/gimmick/jason, /obj/item/clothing/suit/storage/snow_suit/soviet, /obj/item/clothing/suit/storage/snow_suit/survivor, /obj/item/clothing/suit/storage/webbing, /obj/item/clothing/suit/storage/marine/smartgunner/upp) flags_jumpsuit = UNIFORM_SLEEVE_ROLLABLE /obj/item/clothing/under/marine/veteran/UPP/boiler diff --git a/code/modules/projectiles/guns/misc.dm b/code/modules/projectiles/guns/misc.dm index 9c8b305a4f..098dafb5fd 100644 --- a/code/modules/projectiles/guns/misc.dm +++ b/code/modules/projectiles/guns/misc.dm @@ -272,13 +272,26 @@ return FALSE if(!skillcheck(user, SKILL_FIREARMS, SKILL_FIREARMS_TRAINED)) to_chat(user, SPAN_WARNING("You don't seem to know how to use [src]...")) - return 0 + return FALSE /obj/item/weapon/gun/pkp/iff name = "\improper QYJ-72-I General Purpose Machine Gun" desc = "The QYJ-72-I is an experimental variant of common UPP GPMG featuring IFF capabilities which were developed by reverse-engineering USCM smartweapons. Aside from that, not much has been done to this machinegun: it's still heavy, overheats rather quickly and is able to lay down range unprecedented amounts of lead. \nAlt-click it to open the feed cover and allow for reloading." actions_types = list(/datum/action/item_action/toggle_iff_pkp) + aim_slowdown = SLOWDOWN_ADS_SPECIALIST var/iff_enabled = TRUE + var/requires_harness = TRUE + +/obj/item/weapon/gun/pkp/iff/able_to_fire(mob/living/user) + . = ..() + if(.) + if(!ishuman(user)) + return FALSE + var/mob/living/carbon/human/H = user + if(requires_harness) + if(!H.wear_suit || !(H.wear_suit.flags_inventory & SMARTGUN_HARNESS)) + balloon_alert(user, "harness required") + return FALSE /obj/item/weapon/gun/pkp/iff/set_bullet_traits() LAZYADD(traits_to_give, list( diff --git a/icons/mob/humans/onmob/belt.dmi b/icons/mob/humans/onmob/belt.dmi index ba41493e10..68194665bc 100644 Binary files a/icons/mob/humans/onmob/belt.dmi and b/icons/mob/humans/onmob/belt.dmi differ diff --git a/icons/obj/items/clothing/belts.dmi b/icons/obj/items/clothing/belts.dmi index f164928fff..b608d278ff 100644 Binary files a/icons/obj/items/clothing/belts.dmi and b/icons/obj/items/clothing/belts.dmi differ diff --git a/maps/map_files/chapaev/chapaev.dmm b/maps/map_files/chapaev/chapaev.dmm index 4efd73c750..24b7b21870 100644 --- a/maps/map_files/chapaev/chapaev.dmm +++ b/maps/map_files/chapaev/chapaev.dmm @@ -203,23 +203,6 @@ icon_state = "floor2" }, /area/golden_arrow/dorms) -"bw" = ( -/obj/structure/closet/secure_closet{ - req_access_txt = "243;238"; - name = "machinegunner locker" - }, -/obj/item/ammo_magazine/pkp, -/obj/item/ammo_magazine/pkp, -/obj/item/ammo_magazine/pkp, -/obj/item/ammo_magazine/pkp, -/obj/item/ammo_magazine/pkp, -/obj/item/clothing/suit/storage/marine/faction/UPP/heavy, -/obj/item/clothing/head/helmet/marine/veteran/UPP/heavy, -/obj/item/weapon/gun/pkp/iff, -/turf/open/floor/strata{ - icon_state = "floor2" - }, -/area/golden_arrow/squad_two) "bC" = ( /obj/structure/machinery/camera/autoname/golden_arrow{ name = "ship-grade camera"; @@ -718,6 +701,15 @@ icon_state = "floor3" }, /area/golden_arrow/engineering) +"gl" = ( +/obj/structure/surface/rack, +/obj/item/device/motiondetector/hacked, +/obj/item/ammo_magazine/sentry/upp, +/obj/item/defenses/handheld/sentry/upp, +/turf/open/floor/strata{ + icon_state = "floor2" + }, +/area/golden_arrow/squad_two) "gm" = ( /obj/structure/bed/chair/office/dark{ dir = 8 @@ -1044,6 +1036,22 @@ icon_state = "floor3" }, /area/golden_arrow/cryo_cells) +"jV" = ( +/obj/structure/surface/rack, +/obj/structure/machinery/light, +/obj/item/storage/pouch/shotgun/large, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, +/obj/item/weapon/gun/shotgun/type23/pve, +/turf/open/floor/strata{ + icon_state = "floor2" + }, +/area/golden_arrow/squad_two) "jX" = ( /obj/structure/bed{ can_buckle = 0 @@ -1549,15 +1557,6 @@ icon_state = "multi_tiles" }, /area/golden_arrow/engineering) -"pw" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/gun_rack/type71/unloaded, -/turf/open/floor/strata{ - icon_state = "floor2" - }, -/area/golden_arrow/squad_two) "py" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony{ req_one_access = null; @@ -2085,6 +2084,15 @@ icon_state = "floor2" }, /area/golden_arrow/hangar) +"tS" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/gun_rack/type71/unloaded, +/turf/open/floor/strata{ + icon_state = "floor2" + }, +/area/golden_arrow/squad_two) "tT" = ( /obj/structure/machinery/shower{ dir = 8 @@ -2126,6 +2134,27 @@ "tZ" = ( /turf/closed/wall/strata_outpost/reinforced/hull, /area/golden_arrow/platoon_commander_rooms) +"ud" = ( +/obj/structure/closet/secure_closet{ + req_access_txt = "243;238"; + name = "machinegunner locker" + }, +/obj/item/ammo_magazine/pkp, +/obj/item/ammo_magazine/pkp, +/obj/item/ammo_magazine/pkp, +/obj/item/ammo_magazine/pkp, +/obj/item/ammo_magazine/pkp, +/obj/item/ammo_magazine/pkp, +/obj/item/ammo_magazine/pkp, +/obj/item/storage/belt/gun/smartgunner/upp, +/obj/item/storage/belt/marine/smartgunner/upp, +/obj/item/clothing/suit/storage/marine/smartgunner/upp, +/obj/item/clothing/head/helmet/marine/veteran/UPP/heavy, +/obj/item/weapon/gun/pkp/iff, +/turf/open/floor/strata{ + icon_state = "floor2" + }, +/area/golden_arrow/squad_two) "uf" = ( /obj/structure/prop/invuln/overhead_pipe{ dir = 4; @@ -2245,6 +2274,34 @@ icon_state = "floor3" }, /area/golden_arrow/briefing) +"vi" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/closet/secure_closet/marine_personal{ + has_cryo_gear = 0; + job = "Smartgunner" + }, +/obj/item/clothing/shoes/marine/upp, +/obj/item/clothing/under/marine/veteran/UPP, +/obj/item/device/radio/headset/distress/UPP, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, +/area/golden_arrow/cryo_cells) "vk" = ( /obj/structure/machinery/light, /turf/open/floor/strata{ @@ -2567,15 +2624,6 @@ icon_state = "floor2" }, /area/golden_arrow/briefing) -"yu" = ( -/obj/structure/surface/rack, -/obj/item/device/motiondetector/hacked, -/obj/item/ammo_magazine/sentry/upp, -/obj/item/defenses/handheld/sentry/upp, -/turf/open/floor/strata{ - icon_state = "floor2" - }, -/area/golden_arrow/squad_one) "yH" = ( /turf/closed/wall/strata_outpost/reinforced, /area/golden_arrow/hangar) @@ -2740,22 +2788,6 @@ }, /turf/open/floor/plating, /area/golden_arrow/cryo_cells) -"AU" = ( -/obj/structure/surface/rack, -/obj/structure/machinery/light, -/obj/item/storage/pouch/shotgun/large, -/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, -/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, -/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, -/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, -/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, -/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, -/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, -/obj/item/weapon/gun/shotgun/type23/pve, -/turf/open/floor/strata{ - icon_state = "floor2" - }, -/area/golden_arrow/squad_one) "AW" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/reagent_container/food/drinks/coffee, @@ -2776,6 +2808,22 @@ icon_state = "multi_tiles" }, /area/golden_arrow/briefing) +"Bi" = ( +/obj/structure/surface/rack, +/obj/structure/machinery/light, +/obj/item/storage/pouch/shotgun/large, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, +/obj/item/weapon/gun/shotgun/type23/pve, +/turf/open/floor/strata{ + icon_state = "floor2" + }, +/area/golden_arrow/squad_one) "Bj" = ( /obj/structure/sink{ dir = 4; @@ -3030,15 +3078,6 @@ icon_state = "floor3" }, /area/golden_arrow/prep_hallway) -"CU" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/gun_rack/type71/unloaded, -/turf/open/floor/strata{ - icon_state = "floor2" - }, -/area/golden_arrow/squad_one) "CW" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/storage/belt/utility/full, @@ -3120,6 +3159,15 @@ icon_state = "multi_tiles" }, /area/golden_arrow/canteen) +"DN" = ( +/obj/structure/surface/rack, +/obj/item/device/motiondetector/hacked, +/obj/item/ammo_magazine/sentry/upp, +/obj/item/defenses/handheld/sentry/upp, +/turf/open/floor/strata{ + icon_state = "floor2" + }, +/area/golden_arrow/squad_one) "DW" = ( /obj/structure/machinery/floodlight/landing/floor, /obj/structure/machinery/camera/autoname/golden_arrow{ @@ -3470,15 +3518,6 @@ icon_state = "floor3" }, /area/golden_arrow/hangar) -"GT" = ( -/obj/structure/surface/rack, -/obj/item/device/motiondetector/hacked, -/obj/item/ammo_magazine/sentry/upp, -/obj/item/defenses/handheld/sentry/upp, -/turf/open/floor/strata{ - icon_state = "floor2" - }, -/area/golden_arrow/squad_two) "GU" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/strata{ @@ -3632,23 +3671,6 @@ "IS" = ( /turf/closed/wall/strata_outpost/reinforced/hull, /area/golden_arrow/dorms) -"IW" = ( -/obj/structure/closet/secure_closet{ - req_access_txt = "243;237"; - name = "machinegunner locker" - }, -/obj/item/ammo_magazine/pkp, -/obj/item/ammo_magazine/pkp, -/obj/item/ammo_magazine/pkp, -/obj/item/ammo_magazine/pkp, -/obj/item/ammo_magazine/pkp, -/obj/item/clothing/suit/storage/marine/faction/UPP/heavy, -/obj/item/clothing/head/helmet/marine/veteran/UPP/heavy, -/obj/item/weapon/gun/pkp/iff, -/turf/open/floor/strata{ - icon_state = "floor2" - }, -/area/golden_arrow/squad_one) "Jc" = ( /obj/effect/landmark/start/bridge/upp, /turf/open/floor/strata{ @@ -4192,6 +4214,16 @@ icon_state = "floor2" }, /area/golden_arrow/dorms) +"OR" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/paper/crumpled/bloody{ + pixel_y = 6 + }, +/obj/item/attachable/bayonet/upp, +/turf/open/floor/strata{ + icon_state = "floor2" + }, +/area/golden_arrow/squad_one) "OX" = ( /turf/open/floor/strata{ icon_state = "floor2" @@ -4421,20 +4453,11 @@ icon_state = "floor3" }, /area/golden_arrow/medical) -"RM" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/item/attachable/bayonet/upp, -/obj/effect/decal/cleanable/blood/drip{ - layer = 6; - plane = 2.8; - pixel_y = 20 - }, -/obj/effect/decal/cleanable/blood/drip{ - layer = 6; - plane = 2.8; - pixel_y = 16; - pixel_x = -7 +"RF" = ( +/obj/structure/machinery/light{ + dir = 1 }, +/obj/structure/gun_rack/type71/unloaded, /turf/open/floor/strata{ icon_state = "floor2" }, @@ -4815,22 +4838,6 @@ icon_state = "multi_tiles" }, /area/golden_arrow/canteen) -"VE" = ( -/obj/structure/surface/rack, -/obj/structure/machinery/light, -/obj/item/storage/pouch/shotgun/large, -/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, -/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, -/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, -/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, -/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, -/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, -/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot/special, -/obj/item/weapon/gun/shotgun/type23/pve, -/turf/open/floor/strata{ - icon_state = "floor2" - }, -/area/golden_arrow/squad_two) "VH" = ( /obj/structure/platform/strata/metal{ dir = 1; @@ -5274,6 +5281,27 @@ icon_state = "floor3" }, /area/golden_arrow/engineering) +"ZQ" = ( +/obj/structure/closet/secure_closet{ + req_access_txt = "243;237"; + name = "machinegunner locker" + }, +/obj/item/ammo_magazine/pkp, +/obj/item/ammo_magazine/pkp, +/obj/item/ammo_magazine/pkp, +/obj/item/ammo_magazine/pkp, +/obj/item/ammo_magazine/pkp, +/obj/item/ammo_magazine/pkp, +/obj/item/ammo_magazine/pkp, +/obj/item/storage/belt/gun/smartgunner/upp, +/obj/item/storage/belt/marine/smartgunner/upp, +/obj/item/clothing/suit/storage/marine/smartgunner/upp, +/obj/item/clothing/head/helmet/marine/veteran/UPP/heavy, +/obj/item/weapon/gun/pkp/iff, +/turf/open/floor/strata{ + icon_state = "floor2" + }, +/area/golden_arrow/squad_one) "ZU" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -12501,7 +12529,7 @@ tZ tZ tZ ei -RM +OR dU dU dU @@ -12805,11 +12833,11 @@ kb ic Jc ww -CU +RF dU Ef dU -AU +Bi ww QF hq @@ -12817,11 +12845,11 @@ hq vf vW NU -pw +tS Hp XL Hp -VE +jV CM Gt Qr @@ -12957,11 +12985,11 @@ TB VP TB ww -IW +ZQ dU MH dU -yu +DN ww LL vW @@ -12969,11 +12997,11 @@ es Rm vW NU -bw +ud Hp Jt Hp -GT +gl CM Tz Qr @@ -14644,7 +14672,7 @@ BK BK wH VL -BK +vi iO bC CJ